{"version":3,"file":"spectra-processor.js","sources":["../node_modules/ml-spectra-processing/lib-esm/utils/createFromToArray.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xAdd.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/getOutputArray.js","../node_modules/ml-spectra-processing/lib-esm/x/xMultiply.js","../node_modules/ml-spectra-processing/lib-esm/x/xBoxPlot.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/x/xEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotone.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotoneIncreasing.js","../node_modules/ml-spectra-processing/lib-esm/x/xMean.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xNormed.js","../node_modules/ml-spectra-processing/lib-esm/x/xVariance.js","../node_modules/ml-spectra-processing/lib-esm/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib-esm/x/xRescale.js","../node_modules/ml-spectra-processing/lib-esm/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib-esm/x/xSubtract.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyIntegration.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCenterZMean.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/views/base.js","../node_modules/ml-matrix/src/views/transpose.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixPQN.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZRescale.js","../node_modules/chroma-js/chroma.js","../src/jsgraph/getAutocorrelationChart.js","../src/spectra/getBoxPlotData.js","../src/jsgraph/getBoxPlotChart.js","../src/jsgraph/addChartDataStyle.js","../src/jsgraph/getChart.js","../src/jsgraph/getNormalizationAnnotations.js","../src/jsgraph/getNormalizedChart.js","../src/jsgraph/getPostProcessedChart.js","../src/spectra/getNormalizedData.js","../src/jsgraph/getTrackAnnotation.js","../src/metadata/getCategoriesStats.js","../src/metadata/getClassLabels.js","../src/metadata/getClasses.js","../src/metadata/getMetadata.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../src/Kinds.js","../src/parser/jcamp.js","../src/parser/matrix.js","../node_modules/ml-arrayxy-uniquex/src/index.js","../node_modules/xy-parser/lib-esm/parse.js","../node_modules/xy-parser/lib-esm/index.js","../src/parser/text.js","../src/spectra/getAutocorrelation.js","../src/spectra/getMeanData.js","../src/spectra/util/convertToText.js","../src/spectra/getNormalizedText.js","../node_modules/object-hash/dist/object_hash.js","../src/spectra/scaled/getFromToIndex.js","../src/spectra/scaled/integration.js","../src/spectra/scaled/max.js","../src/spectra/scaled/min.js","../src/spectra/scaled/minMax.js","../src/spectra/getPostProcessedData.js","../src/spectra/getPostProcessedText.js","../src/spectrum/getData.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/centerMean.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/centerMedian.js","../node_modules/ml-signal-processing/lib-esm/filters/x/fromTo.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/normed.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/divideBySD.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/rescale.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/paretoNormalization.js","../node_modules/ml-airpls/src/choleskySolver.js","../node_modules/cuthill-mckee/cuthill-mckee.js","../node_modules/ml-airpls/src/utils.js","../node_modules/ml-airpls/src/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/baselines/src/airPLS.js","../node_modules/ml-regression-base/src/maybeToPrecision.js","../node_modules/ml-regression-base/src/checkArrayLength.js","../node_modules/ml-regression-base/src/index.js","../node_modules/ml-regression-polynomial/src/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-array-mean/lib-es6/index.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xPadding.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRolling.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/baselines/node_modules/ml-spectra-processing/lib-esm/x/xRollingMedian.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/src/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/airPLSBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/iterativePolynomialBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingAverageBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingBallBaseline.js","../node_modules/ml-signal-processing/lib-esm/filters/baseline/rollingMedianBaseline.js","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/firstDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/secondDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/thirdDerivative.js","../node_modules/ml-signal-processing/lib-esm/filters/sg/savitzkyGolay.js","../node_modules/ml-signal-processing/lib-esm/filters/x/ensureGrowing.js","../node_modules/ml-signal-processing/lib-esm/filters/x/equallySpaced.js","../node_modules/ml-signal-processing/lib-esm/filters/x/filterX.js","../node_modules/ml-gsd/lib-esm/utils/optimizeTop.js","../node_modules/ml-gsd/lib-esm/gsd.js","../node_modules/ml-signal-processing/lib-esm/filters/x/calibrateX.js","../node_modules/ml-signal-processing/lib-esm/filters/x/xFunction.js","../node_modules/ml-signal-processing/lib-esm/filters/scaling/yFunction.js","../node_modules/ml-signal-processing/lib-esm/filterXY.js","../src/spectrum/getNormalized.js","../src/spectrum/updateRangesInfo.js","../src/spectrum/Spectrum.js","../src/SpectraProcessor.js","../src/jsgraph/getFilterAnnotations.js"],"sourcesContent":["/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n *\n * @param options - options\n * @return - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    let { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom === true && includeTo === true) {\n        div = length - 1;\n    }\n    else if ((includeFrom === false && includeTo === true) ||\n        (includeFrom === true && includeTo === false)) {\n        div = length;\n    }\n    else if (includeFrom === false && includeTo === false) {\n        div = length + 1;\n    }\n    let delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom === true) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        let base = (to / from) ** (1 / div);\n        let firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom === true) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('Please choose for the distribution either uniform or log. By default the distribution chosen is uniform.');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n/**\n * Calculates the median of an array\n *\n * @param input - Array containing values\n * @returns - median\n */\nexport function xMedian(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    // we need to slice because the order of elements is changed in the quickselect\n    // https://github.com/mad-gooze/median-quickselect\n    return quickSelectMedian(input.slice());\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - the first array\n * @param array2 - the second array or number\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xAdd: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    let array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './utils/getOutputArray';\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xMultiply: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","/**\n * Calculating the box plot of the array\n *\n * @param array - data\n */\nexport function xBoxPlot(array) {\n    array = Float64Array.from(array).sort();\n    if (array.length < 5) {\n        throw Error('xBoxPlot: can not calculate info if array contains less than 3 elements');\n    }\n    let info = {\n        q1: 0.0,\n        median: 0.0,\n        q3: 0.0,\n        min: array[0],\n        max: array[array.length - 1],\n    };\n    let q1max, q3min;\n    if (array.length % 2 === 1) {\n        // odd\n        let middle = (array.length - 1) / 2;\n        info.median = array[middle];\n        q1max = middle - 1;\n        q3min = middle + 1;\n    }\n    else {\n        // even\n        q3min = array.length / 2;\n        q1max = q3min - 1;\n        info.median = (array[q1max] + array[q3min]) / 2;\n    }\n    if (q1max % 2 === 0) {\n        info.q1 = array[q1max / 2];\n        info.q3 = array[(array.length + q3min - 1) / 2];\n    }\n    else {\n        info.q1 = (array[(q1max + 1) / 2] + array[(q1max - 1) / 2]) / 2;\n        let middleOver = (array.length + q3min) / 2;\n        info.q3 = (array[middleOver] + array[middleOver - 1]) / 2;\n    }\n    return info;\n}\n//# sourceMappingURL=xBoxPlot.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is of type array\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n *\n * @param A - first array\n * @param B - sencond array\n */\nexport function xCorrelation(A, B) {\n    let n = A.length;\n    let sumA = 0;\n    let sumA2 = 0;\n    let sumB = 0;\n    let sumB2 = 0;\n    let sumAB = 0;\n    for (let i = 0; i < n; i++) {\n        let a = A[i];\n        let b = B[i];\n        sumA += a;\n        sumA2 += a ** 2;\n        sumB += b;\n        sumB2 += b ** 2;\n        sumAB += a * b;\n    }\n    return ((n * sumAB - sumA * sumB) /\n        (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2)));\n}\n//# sourceMappingURL=xCorrelation.js.map","import { xCheck } from './xCheck';\n/**\n * Returns a copy of the data as Float64\n *\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","/**\n * Returns the closest index of a `target`\n *\n * @param array - array of numbers\n * @param target - target\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n *\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex, from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","/**\n * Check if the values are separated always by the same difference\n *\n * @param array - Monotone growing array of number\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        let absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotone(array) {\n    if (array.length <= 2) {\n        return true;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return false;\n        }\n        return true;\n    }\n    if (array[0] < array[array.length - 1]) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return false;\n        }\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotone.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotoneIncreasing(array) {\n    if (array.length < 2) {\n        return true;\n    }\n    for (let i = 0; i < array.length - 1; i++) {\n        if (array[i] >= array[i + 1])\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotoneIncreasing.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { xMedian } from './xMedian';\n/**\n * This function calculates the median absolute deviation (MAD)\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array\n *\n * @param array - array of number\n * @returns - Object with 2 properties, min and max\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (let value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","import { xMedianAbsoluteDeviation } from '..';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Calculate the sum of the values\n *\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from './utils/getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xSum } from './xSum';\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param array - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm.toLowerCase()) {\n        case 'absolute': {\n            let absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            let currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            let sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`norm: unknown algorithm: ${algorithm}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (let i = 0; i < input.length; i++) {\n        sumValue += Math.abs(input[i]);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from './xMean';\n/** Finds the variance of the data\n *\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (let i = 0; i < values.length; i++) {\n        let x = values[i] - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from './xVariance';\n/** Finds the standard deviation for the data at hand\n *\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { xCheck } from './xCheck';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n *\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    let result = [];\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let item of array) {\n        result.push(item / sqrtSD);\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { xCheck } from '..';\nimport { getOutputArray } from './utils/getOutputArray';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/** Function used to rescale data\n *\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replace(/(^|\\W)([a-z]{2,})/g, '$1Math.$2')\n        .replace(/Math\\.Math/g, 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (isNaN(toReturn[i])) {\n            throw Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n *\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xSubtract: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xSubtract.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Throw an error in no an object of x,y arrays\n *\n * @param data - array of points {x,y,z}\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (typeof data !== 'object' || !isAnyArray(data.x) || !isAnyArray(data.y)) {\n        throw new Error('Data must be an object of x and y arrays');\n    }\n    if (data.x.length !== data.y.length) {\n        throw new Error('The x and y arrays must have the same length');\n    }\n    if (minLength) {\n        if (data.x.length < minLength) {\n            throw new Error(`data.x must have a length of at least ${minLength}`);\n        }\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import { xIsMonotoneIncreasing } from '../x/xIsMonotoneIncreasing';\nimport { xyCheck } from './xyCheck';\n/**\n * Filters x,y values to allow strictly growing values in x axis.\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotoneIncreasing(data.x))\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY, exclusions = [], } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = JSON.parse(JSON.stringify(zones)).map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : zone);\n    zones = zones.sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    zones.forEach((zone) => {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    });\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    let beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        let zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    let counter = 0;\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        if (counter++ > 5)\n            break;\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from './zonesNormalize';\n/**\n * Add the number of points per zone to reach a specified total\n *\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return zones;\n    let returnZones = zonesNormalize(zones, options);\n    const totalSize = returnZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    let unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < returnZones.length - 1; i++) {\n        let zone = returnZones[i];\n        zone.numberOfPoints = Math.min(Math.round((zone.to - zone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        currentTotal += zone.numberOfPoints;\n    }\n    let zone = returnZones[returnZones.length - 1];\n    zone.numberOfPoints = numberOfPoints - currentTotal;\n    return returnZones;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    let lastStep = x[x.length - 1] - x[x.length - 2];\n    let start = from - halfStep;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @return integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from './integral';\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    let initialOriginalStep = x[1] - x[0];\n    let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    function getSlope(x0, y0, x1, y1) {\n        return (y1 - y0) / (x1 - x0);\n    }\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from '../utils/createFromToArray';\nimport { zonesNormalize } from '../zones/zonesNormalize';\nimport { zonesWithPoints } from '../zones/zonesWithPoints';\nimport equallySpacedSlot from './utils/equallySpacedSlot';\nimport equallySpacedSmooth from './utils/equallySpacedSmooth';\nimport { xyCheck } from './xyCheck';\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n *\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @return new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    let { x, y } = data;\n    let xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    });\n    let xResult = [];\n    let yResult = [];\n    for (let zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        let zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    let output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from '../zones/zonesNormalize';\n/** Filter an array x/y based on various criteria x points are expected to be sorted\n *\n * @param data - points\n * @param options - options\n * @return filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    const { from = x[0], to = x[x.length - 1], zones = [{ from, to }], exclusions = [], } = options;\n    let normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    let newX = [];\n    let newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else {\n            if (x[position] > normalizedZones[currentZoneIndex].to) {\n                currentZoneIndex++;\n                if (!normalizedZones[currentZoneIndex])\n                    break;\n            }\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Calculate integration\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - xyIntegration value on the specified range\n */\nexport function xyIntegration(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return 0;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyIntegration = 0;\n    for (let i = fromIndex; i < toIndex; i++) {\n        currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n    }\n    return currentxyIntegration;\n}\n//# sourceMappingURL=xyIntegration.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the min y value in a range and return a {x,y} point\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMinYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return { x: x[0], y: y[0], index: 0 };\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] < current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMinYPoint.js.map","/**\n * Center mean of columns\n *\n * @param matrix - matrix [rows][cols]\n */\nexport function matrixCenterZMean(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const newMatrix = new Array(nbRows);\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix[row] = new Float64Array(nbColumns);\n    }\n    for (let column = 0; column < nbColumns; column++) {\n        let mean = 0;\n        for (let row = 0; row < nbRows; row++) {\n            mean += matrix[row][column];\n        }\n        mean /= nbRows;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] - mean;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCenterZMean.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","import { Matrix } from 'ml-matrix';\nimport { xMedian } from '../x/xMedian';\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n *\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - {data: Normalized dataset, medianOfQuotients: The median of quotients of each variables}\n */\nexport function matrixPQN(matrix, options = {}) {\n    const { max = 100 } = options;\n    let matrixB = new Matrix(matrix);\n    for (let i = 0; i < matrixB.rows; i++) {\n        const normalizationFactor = matrixB.getRowVector(i).norm('frobenius') / max;\n        const row = matrixB.getRowVector(i).div(normalizationFactor);\n        matrixB.setRow(i, row);\n    }\n    let referenceSpectrum = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const currentVariable = matrixB.getColumn(i);\n        referenceSpectrum.push(xMedian(currentVariable));\n    }\n    let medianOfQuotients = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        let quotients = matrixB.getColumnVector(i).div(referenceSpectrum[i]);\n        medianOfQuotients.push(xMedian(quotients.getColumn(0)));\n    }\n    for (let i = 0; i < matrixB.rows; i++) {\n        matrixB.mulRow(i, 1 / medianOfQuotients[i]);\n    }\n    return {\n        data: matrixB.to2DArray(),\n        medianOfQuotients: medianOfQuotients,\n    };\n}\n//# sourceMappingURL=matrixPQN.js.map","/**\n * Rescale columns\n *\n * @param matrix - matrix [rows][cols].\n * @param options - Options\n */\nexport function matrixZRescale(matrix, options = {}) {\n    const { min = 0, max = 1 } = options;\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const newMatrix = new Array(nbRows);\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix[row] = new Float64Array(nbColumns);\n    }\n    for (let column = 0; column < nbColumns; column++) {\n        let currentMin = matrix[0][column];\n        let currentMax = matrix[0][column];\n        for (let row = 1; row < nbRows; row++) {\n            if (matrix[row][column] < currentMin)\n                currentMin = matrix[row][column];\n            if (matrix[row][column] > currentMax)\n                currentMax = matrix[row][column];\n        }\n        const factor = (max - min) / (currentMax - currentMin);\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescale.js.map","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n    var limit$2 = function (x, min, max) {\n        if ( min === void 0 ) min=0;\n        if ( max === void 0 ) max=1;\n\n        return x < min ? min : x > max ? max : x;\n    };\n\n    var limit$1 = limit$2;\n\n    var clip_rgb$3 = function (rgb) {\n        rgb._clipped = false;\n        rgb._unclipped = rgb.slice(0);\n        for (var i=0; i<=3; i++) {\n            if (i < 3) {\n                if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n                rgb[i] = limit$1(rgb[i], 0, 255);\n            } else if (i === 3) {\n                rgb[i] = limit$1(rgb[i], 0, 1);\n            }\n        }\n        return rgb;\n    };\n\n    // ported from jQuery's $.type\n    var classToType = {};\n    for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n        var name = list$1[i$1];\n\n        classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n    }\n    var type$p = function(obj) {\n        return classToType[Object.prototype.toString.call(obj)] || \"object\";\n    };\n\n    var type$o = type$p;\n\n    var unpack$B = function (args, keyOrder) {\n        if ( keyOrder === void 0 ) keyOrder=null;\n\n    \t// if called with more than 3 arguments, we return the arguments\n        if (args.length >= 3) { return Array.prototype.slice.call(args); }\n        // with less than 3 args we check if first arg is object\n        // and use the keyOrder string to extract and sort properties\n    \tif (type$o(args[0]) == 'object' && keyOrder) {\n    \t\treturn keyOrder.split('')\n    \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n    \t\t\t.map(function (k) { return args[0][k]; });\n    \t}\n    \t// otherwise we just return the first argument\n    \t// (which we suppose is an array of args)\n        return args[0];\n    };\n\n    var type$n = type$p;\n\n    var last$4 = function (args) {\n        if (args.length < 2) { return null; }\n        var l = args.length-1;\n        if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n        return null;\n    };\n\n    var PI$2 = Math.PI;\n\n    var utils = {\n    \tclip_rgb: clip_rgb$3,\n    \tlimit: limit$2,\n    \ttype: type$p,\n    \tunpack: unpack$B,\n    \tlast: last$4,\n    \tPI: PI$2,\n    \tTWOPI: PI$2*2,\n    \tPITHIRD: PI$2/3,\n    \tDEG2RAD: PI$2 / 180,\n    \tRAD2DEG: 180 / PI$2\n    };\n\n    var input$h = {\n    \tformat: {},\n    \tautodetect: []\n    };\n\n    var last$3 = utils.last;\n    var clip_rgb$2 = utils.clip_rgb;\n    var type$m = utils.type;\n    var _input = input$h;\n\n    var Color$D = function Color() {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var me = this;\n        if (type$m(args[0]) === 'object' &&\n            args[0].constructor &&\n            args[0].constructor === this.constructor) {\n            // the argument is already a Color instance\n            return args[0];\n        }\n\n        // last argument could be the mode\n        var mode = last$3(args);\n        var autodetect = false;\n\n        if (!mode) {\n            autodetect = true;\n            if (!_input.sorted) {\n                _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n                _input.sorted = true;\n            }\n            // auto-detect format\n            for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n                var chk = list[i];\n\n                mode = chk.test.apply(chk, args);\n                if (mode) { break; }\n            }\n        }\n\n        if (_input.format[mode]) {\n            var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n            me._rgb = clip_rgb$2(rgb);\n        } else {\n            throw new Error('unknown format: '+args);\n        }\n\n        // add alpha channel\n        if (me._rgb.length === 3) { me._rgb.push(1); }\n    };\n\n    Color$D.prototype.toString = function toString () {\n        if (type$m(this.hex) == 'function') { return this.hex(); }\n        return (\"[\" + (this._rgb.join(',')) + \"]\");\n    };\n\n    var Color_1 = Color$D;\n\n    var chroma$k = function () {\n    \tvar args = [], len = arguments.length;\n    \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n    \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n    };\n\n    chroma$k.Color = Color_1;\n    chroma$k.version = '2.4.2';\n\n    var chroma_1 = chroma$k;\n\n    var unpack$A = utils.unpack;\n    var max$2 = Math.max;\n\n    var rgb2cmyk$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$A(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        r = r / 255;\n        g = g / 255;\n        b = b / 255;\n        var k = 1 - max$2(r,max$2(g,b));\n        var f = k < 1 ? 1 / (1-k) : 0;\n        var c = (1-r-k) * f;\n        var m = (1-g-k) * f;\n        var y = (1-b-k) * f;\n        return [c,m,y,k];\n    };\n\n    var rgb2cmyk_1 = rgb2cmyk$1;\n\n    var unpack$z = utils.unpack;\n\n    var cmyk2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$z(args, 'cmyk');\n        var c = args[0];\n        var m = args[1];\n        var y = args[2];\n        var k = args[3];\n        var alpha = args.length > 4 ? args[4] : 1;\n        if (k === 1) { return [0,0,0,alpha]; }\n        return [\n            c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n            m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n            y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n            alpha\n        ];\n    };\n\n    var cmyk2rgb_1 = cmyk2rgb;\n\n    var chroma$j = chroma_1;\n    var Color$C = Color_1;\n    var input$g = input$h;\n    var unpack$y = utils.unpack;\n    var type$l = utils.type;\n\n    var rgb2cmyk = rgb2cmyk_1;\n\n    Color$C.prototype.cmyk = function() {\n        return rgb2cmyk(this._rgb);\n    };\n\n    chroma$j.cmyk = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n    };\n\n    input$g.format.cmyk = cmyk2rgb_1;\n\n    input$g.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$y(args, 'cmyk');\n            if (type$l(args) === 'array' && args.length === 4) {\n                return 'cmyk';\n            }\n        }\n    });\n\n    var unpack$x = utils.unpack;\n    var last$2 = utils.last;\n    var rnd = function (a) { return Math.round(a*100)/100; };\n\n    /*\n     * supported arguments:\n     * - hsl2css(h,s,l)\n     * - hsl2css(h,s,l,a)\n     * - hsl2css([h,s,l], mode)\n     * - hsl2css([h,s,l,a], mode)\n     * - hsl2css({h,s,l,a}, mode)\n     */\n    var hsl2css$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var hsla = unpack$x(args, 'hsla');\n        var mode = last$2(args) || 'lsa';\n        hsla[0] = rnd(hsla[0] || 0);\n        hsla[1] = rnd(hsla[1]*100) + '%';\n        hsla[2] = rnd(hsla[2]*100) + '%';\n        if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n            hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n            mode = 'hsla';\n        } else {\n            hsla.length = 3;\n        }\n        return (mode + \"(\" + (hsla.join(',')) + \")\");\n    };\n\n    var hsl2css_1 = hsl2css$1;\n\n    var unpack$w = utils.unpack;\n\n    /*\n     * supported arguments:\n     * - rgb2hsl(r,g,b)\n     * - rgb2hsl(r,g,b,a)\n     * - rgb2hsl([r,g,b])\n     * - rgb2hsl([r,g,b,a])\n     * - rgb2hsl({r,g,b,a})\n     */\n    var rgb2hsl$3 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$w(args, 'rgba');\n        var r = args[0];\n        var g = args[1];\n        var b = args[2];\n\n        r /= 255;\n        g /= 255;\n        b /= 255;\n\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n\n        var l = (max + min) / 2;\n        var s, h;\n\n        if (max === min){\n            s = 0;\n            h = Number.NaN;\n        } else {\n            s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n        }\n\n        if (r == max) { h = (g - b) / (max - min); }\n        else if (g == max) { h = 2 + (b - r) / (max - min); }\n        else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n        h *= 60;\n        if (h < 0) { h += 360; }\n        if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n        return [h,s,l];\n    };\n\n    var rgb2hsl_1 = rgb2hsl$3;\n\n    var unpack$v = utils.unpack;\n    var last$1 = utils.last;\n    var hsl2css = hsl2css_1;\n    var rgb2hsl$2 = rgb2hsl_1;\n    var round$6 = Math.round;\n\n    /*\n     * supported arguments:\n     * - rgb2css(r,g,b)\n     * - rgb2css(r,g,b,a)\n     * - rgb2css([r,g,b], mode)\n     * - rgb2css([r,g,b,a], mode)\n     * - rgb2css({r,g,b,a}, mode)\n     */\n    var rgb2css$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgba = unpack$v(args, 'rgba');\n        var mode = last$1(args) || 'rgb';\n        if (mode.substr(0,3) == 'hsl') {\n            return hsl2css(rgb2hsl$2(rgba), mode);\n        }\n        rgba[0] = round$6(rgba[0]);\n        rgba[1] = round$6(rgba[1]);\n        rgba[2] = round$6(rgba[2]);\n        if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n            rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n            mode = 'rgba';\n        }\n        return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n    };\n\n    var rgb2css_1 = rgb2css$1;\n\n    var unpack$u = utils.unpack;\n    var round$5 = Math.round;\n\n    var hsl2rgb$1 = function () {\n        var assign;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$u(args, 'hsl');\n        var h = args[0];\n        var s = args[1];\n        var l = args[2];\n        var r,g,b;\n        if (s === 0) {\n            r = g = b = l*255;\n        } else {\n            var t3 = [0,0,0];\n            var c = [0,0,0];\n            var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n            var t1 = 2 * l - t2;\n            var h_ = h / 360;\n            t3[0] = h_ + 1/3;\n            t3[1] = h_;\n            t3[2] = h_ - 1/3;\n            for (var i=0; i<3; i++) {\n                if (t3[i] < 0) { t3[i] += 1; }\n                if (t3[i] > 1) { t3[i] -= 1; }\n                if (6 * t3[i] < 1)\n                    { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n                else if (2 * t3[i] < 1)\n                    { c[i] = t2; }\n                else if (3 * t3[i] < 2)\n                    { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n                else\n                    { c[i] = t1; }\n            }\n            (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n        }\n        if (args.length > 3) {\n            // keep alpha channel\n            return [r,g,b,args[3]];\n        }\n        return [r,g,b,1];\n    };\n\n    var hsl2rgb_1 = hsl2rgb$1;\n\n    var hsl2rgb = hsl2rgb_1;\n    var input$f = input$h;\n\n    var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n    var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n    var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n    var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n    var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n    var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n    var round$4 = Math.round;\n\n    var css2rgb$1 = function (css) {\n        css = css.toLowerCase().trim();\n        var m;\n\n        if (input$f.format.named) {\n            try {\n                return input$f.format.named(css);\n            } catch (e) {\n                // eslint-disable-next-line\n            }\n        }\n\n        // rgb(250,20,0)\n        if ((m = css.match(RE_RGB))) {\n            var rgb = m.slice(1,4);\n            for (var i=0; i<3; i++) {\n                rgb[i] = +rgb[i];\n            }\n            rgb[3] = 1;  // default alpha\n            return rgb;\n        }\n\n        // rgba(250,20,0,0.4)\n        if ((m = css.match(RE_RGBA))) {\n            var rgb$1 = m.slice(1,5);\n            for (var i$1=0; i$1<4; i$1++) {\n                rgb$1[i$1] = +rgb$1[i$1];\n            }\n            return rgb$1;\n        }\n\n        // rgb(100%,0%,0%)\n        if ((m = css.match(RE_RGB_PCT))) {\n            var rgb$2 = m.slice(1,4);\n            for (var i$2=0; i$2<3; i$2++) {\n                rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n            }\n            rgb$2[3] = 1;  // default alpha\n            return rgb$2;\n        }\n\n        // rgba(100%,0%,0%,0.4)\n        if ((m = css.match(RE_RGBA_PCT))) {\n            var rgb$3 = m.slice(1,5);\n            for (var i$3=0; i$3<3; i$3++) {\n                rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n            }\n            rgb$3[3] = +rgb$3[3];\n            return rgb$3;\n        }\n\n        // hsl(0,100%,50%)\n        if ((m = css.match(RE_HSL))) {\n            var hsl = m.slice(1,4);\n            hsl[1] *= 0.01;\n            hsl[2] *= 0.01;\n            var rgb$4 = hsl2rgb(hsl);\n            rgb$4[3] = 1;\n            return rgb$4;\n        }\n\n        // hsla(0,100%,50%,0.5)\n        if ((m = css.match(RE_HSLA))) {\n            var hsl$1 = m.slice(1,4);\n            hsl$1[1] *= 0.01;\n            hsl$1[2] *= 0.01;\n            var rgb$5 = hsl2rgb(hsl$1);\n            rgb$5[3] = +m[4];  // default alpha = 1\n            return rgb$5;\n        }\n    };\n\n    css2rgb$1.test = function (s) {\n        return RE_RGB.test(s) ||\n            RE_RGBA.test(s) ||\n            RE_RGB_PCT.test(s) ||\n            RE_RGBA_PCT.test(s) ||\n            RE_HSL.test(s) ||\n            RE_HSLA.test(s);\n    };\n\n    var css2rgb_1 = css2rgb$1;\n\n    var chroma$i = chroma_1;\n    var Color$B = Color_1;\n    var input$e = input$h;\n    var type$k = utils.type;\n\n    var rgb2css = rgb2css_1;\n    var css2rgb = css2rgb_1;\n\n    Color$B.prototype.css = function(mode) {\n        return rgb2css(this._rgb, mode);\n    };\n\n    chroma$i.css = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n    };\n\n    input$e.format.css = css2rgb;\n\n    input$e.autodetect.push({\n        p: 5,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n                return 'css';\n            }\n        }\n    });\n\n    var Color$A = Color_1;\n    var chroma$h = chroma_1;\n    var input$d = input$h;\n    var unpack$t = utils.unpack;\n\n    input$d.format.gl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgb = unpack$t(args, 'rgba');\n        rgb[0] *= 255;\n        rgb[1] *= 255;\n        rgb[2] *= 255;\n        return rgb;\n    };\n\n    chroma$h.gl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n    };\n\n    Color$A.prototype.gl = function() {\n        var rgb = this._rgb;\n        return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n    };\n\n    var unpack$s = utils.unpack;\n\n    var rgb2hcg$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$s(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n        var delta = max - min;\n        var c = delta * 100 / 255;\n        var _g = min / (255 - delta) * 100;\n        var h;\n        if (delta === 0) {\n            h = Number.NaN;\n        } else {\n            if (r === max) { h = (g - b) / delta; }\n            if (g === max) { h = 2+(b - r) / delta; }\n            if (b === max) { h = 4+(r - g) / delta; }\n            h *= 60;\n            if (h < 0) { h += 360; }\n        }\n        return [h, c, _g];\n    };\n\n    var rgb2hcg_1 = rgb2hcg$1;\n\n    var unpack$r = utils.unpack;\n    var floor$3 = Math.floor;\n\n    /*\n     * this is basically just HSV with some minor tweaks\n     *\n     * hue.. [0..360]\n     * chroma .. [0..1]\n     * grayness .. [0..1]\n     */\n\n    var hcg2rgb = function () {\n        var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$r(args, 'hcg');\n        var h = args[0];\n        var c = args[1];\n        var _g = args[2];\n        var r,g,b;\n        _g = _g * 255;\n        var _c = c * 255;\n        if (c === 0) {\n            r = g = b = _g;\n        } else {\n            if (h === 360) { h = 0; }\n            if (h > 360) { h -= 360; }\n            if (h < 0) { h += 360; }\n            h /= 60;\n            var i = floor$3(h);\n            var f = h - i;\n            var p = _g * (1 - c);\n            var q = p + _c * (1 - f);\n            var t = p + _c * f;\n            var v = p + _c;\n            switch (i) {\n                case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n                case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n                case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n                case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n                case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n                case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n            }\n        }\n        return [r, g, b, args.length > 3 ? args[3] : 1];\n    };\n\n    var hcg2rgb_1 = hcg2rgb;\n\n    var unpack$q = utils.unpack;\n    var type$j = utils.type;\n    var chroma$g = chroma_1;\n    var Color$z = Color_1;\n    var input$c = input$h;\n\n    var rgb2hcg = rgb2hcg_1;\n\n    Color$z.prototype.hcg = function() {\n        return rgb2hcg(this._rgb);\n    };\n\n    chroma$g.hcg = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n    };\n\n    input$c.format.hcg = hcg2rgb_1;\n\n    input$c.autodetect.push({\n        p: 1,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$q(args, 'hcg');\n            if (type$j(args) === 'array' && args.length === 3) {\n                return 'hcg';\n            }\n        }\n    });\n\n    var unpack$p = utils.unpack;\n    var last = utils.last;\n    var round$3 = Math.round;\n\n    var rgb2hex$2 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$p(args, 'rgba');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var a = ref[3];\n        var mode = last(args) || 'auto';\n        if (a === undefined) { a = 1; }\n        if (mode === 'auto') {\n            mode = a < 1 ? 'rgba' : 'rgb';\n        }\n        r = round$3(r);\n        g = round$3(g);\n        b = round$3(b);\n        var u = r << 16 | g << 8 | b;\n        var str = \"000000\" + u.toString(16); //#.toUpperCase();\n        str = str.substr(str.length - 6);\n        var hxa = '0' + round$3(a * 255).toString(16);\n        hxa = hxa.substr(hxa.length - 2);\n        switch (mode.toLowerCase()) {\n            case 'rgba': return (\"#\" + str + hxa);\n            case 'argb': return (\"#\" + hxa + str);\n            default: return (\"#\" + str);\n        }\n    };\n\n    var rgb2hex_1 = rgb2hex$2;\n\n    var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n    var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n    var hex2rgb$1 = function (hex) {\n        if (hex.match(RE_HEX)) {\n            // remove optional leading #\n            if (hex.length === 4 || hex.length === 7) {\n                hex = hex.substr(1);\n            }\n            // expand short-notation to full six-digit\n            if (hex.length === 3) {\n                hex = hex.split('');\n                hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n            }\n            var u = parseInt(hex, 16);\n            var r = u >> 16;\n            var g = u >> 8 & 0xFF;\n            var b = u & 0xFF;\n            return [r,g,b,1];\n        }\n\n        // match rgba hex format, eg #FF000077\n        if (hex.match(RE_HEXA)) {\n            if (hex.length === 5 || hex.length === 9) {\n                // remove optional leading #\n                hex = hex.substr(1);\n            }\n            // expand short-notation to full eight-digit\n            if (hex.length === 4) {\n                hex = hex.split('');\n                hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n            }\n            var u$1 = parseInt(hex, 16);\n            var r$1 = u$1 >> 24 & 0xFF;\n            var g$1 = u$1 >> 16 & 0xFF;\n            var b$1 = u$1 >> 8 & 0xFF;\n            var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n            return [r$1,g$1,b$1,a];\n        }\n\n        // we used to check for css colors here\n        // if _input.css? and rgb = _input.css hex\n        //     return rgb\n\n        throw new Error((\"unknown hex color: \" + hex));\n    };\n\n    var hex2rgb_1 = hex2rgb$1;\n\n    var chroma$f = chroma_1;\n    var Color$y = Color_1;\n    var type$i = utils.type;\n    var input$b = input$h;\n\n    var rgb2hex$1 = rgb2hex_1;\n\n    Color$y.prototype.hex = function(mode) {\n        return rgb2hex$1(this._rgb, mode);\n    };\n\n    chroma$f.hex = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n    };\n\n    input$b.format.hex = hex2rgb_1;\n    input$b.autodetect.push({\n        p: 4,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n                return 'hex';\n            }\n        }\n    });\n\n    var unpack$o = utils.unpack;\n    var TWOPI$2 = utils.TWOPI;\n    var min$2 = Math.min;\n    var sqrt$4 = Math.sqrt;\n    var acos = Math.acos;\n\n    var rgb2hsi$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        borrowed from here:\n        http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n        */\n        var ref = unpack$o(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        r /= 255;\n        g /= 255;\n        b /= 255;\n        var h;\n        var min_ = min$2(r,g,b);\n        var i = (r+g+b) / 3;\n        var s = i > 0 ? 1 - min_/i : 0;\n        if (s === 0) {\n            h = NaN;\n        } else {\n            h = ((r-g)+(r-b)) / 2;\n            h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n            h = acos(h);\n            if (b > g) {\n                h = TWOPI$2 - h;\n            }\n            h /= TWOPI$2;\n        }\n        return [h*360,s,i];\n    };\n\n    var rgb2hsi_1 = rgb2hsi$1;\n\n    var unpack$n = utils.unpack;\n    var limit = utils.limit;\n    var TWOPI$1 = utils.TWOPI;\n    var PITHIRD = utils.PITHIRD;\n    var cos$4 = Math.cos;\n\n    /*\n     * hue [0..360]\n     * saturation [0..1]\n     * intensity [0..1]\n     */\n    var hsi2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        borrowed from here:\n        http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n        */\n        args = unpack$n(args, 'hsi');\n        var h = args[0];\n        var s = args[1];\n        var i = args[2];\n        var r,g,b;\n\n        if (isNaN(h)) { h = 0; }\n        if (isNaN(s)) { s = 0; }\n        // normalize hue\n        if (h > 360) { h -= 360; }\n        if (h < 0) { h += 360; }\n        h /= 360;\n        if (h < 1/3) {\n            b = (1-s)/3;\n            r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n            g = 1 - (b+r);\n        } else if (h < 2/3) {\n            h -= 1/3;\n            r = (1-s)/3;\n            g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n            b = 1 - (r+g);\n        } else {\n            h -= 2/3;\n            g = (1-s)/3;\n            b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n            r = 1 - (g+b);\n        }\n        r = limit(i*r*3);\n        g = limit(i*g*3);\n        b = limit(i*b*3);\n        return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n    };\n\n    var hsi2rgb_1 = hsi2rgb;\n\n    var unpack$m = utils.unpack;\n    var type$h = utils.type;\n    var chroma$e = chroma_1;\n    var Color$x = Color_1;\n    var input$a = input$h;\n\n    var rgb2hsi = rgb2hsi_1;\n\n    Color$x.prototype.hsi = function() {\n        return rgb2hsi(this._rgb);\n    };\n\n    chroma$e.hsi = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n    };\n\n    input$a.format.hsi = hsi2rgb_1;\n\n    input$a.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$m(args, 'hsi');\n            if (type$h(args) === 'array' && args.length === 3) {\n                return 'hsi';\n            }\n        }\n    });\n\n    var unpack$l = utils.unpack;\n    var type$g = utils.type;\n    var chroma$d = chroma_1;\n    var Color$w = Color_1;\n    var input$9 = input$h;\n\n    var rgb2hsl$1 = rgb2hsl_1;\n\n    Color$w.prototype.hsl = function() {\n        return rgb2hsl$1(this._rgb);\n    };\n\n    chroma$d.hsl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n    };\n\n    input$9.format.hsl = hsl2rgb_1;\n\n    input$9.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$l(args, 'hsl');\n            if (type$g(args) === 'array' && args.length === 3) {\n                return 'hsl';\n            }\n        }\n    });\n\n    var unpack$k = utils.unpack;\n    var min$1 = Math.min;\n    var max$1 = Math.max;\n\n    /*\n     * supported arguments:\n     * - rgb2hsv(r,g,b)\n     * - rgb2hsv([r,g,b])\n     * - rgb2hsv({r,g,b})\n     */\n    var rgb2hsl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$k(args, 'rgb');\n        var r = args[0];\n        var g = args[1];\n        var b = args[2];\n        var min_ = min$1(r, g, b);\n        var max_ = max$1(r, g, b);\n        var delta = max_ - min_;\n        var h,s,v;\n        v = max_ / 255.0;\n        if (max_ === 0) {\n            h = Number.NaN;\n            s = 0;\n        } else {\n            s = delta / max_;\n            if (r === max_) { h = (g - b) / delta; }\n            if (g === max_) { h = 2+(b - r) / delta; }\n            if (b === max_) { h = 4+(r - g) / delta; }\n            h *= 60;\n            if (h < 0) { h += 360; }\n        }\n        return [h, s, v]\n    };\n\n    var rgb2hsv$1 = rgb2hsl;\n\n    var unpack$j = utils.unpack;\n    var floor$2 = Math.floor;\n\n    var hsv2rgb = function () {\n        var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$j(args, 'hsv');\n        var h = args[0];\n        var s = args[1];\n        var v = args[2];\n        var r,g,b;\n        v *= 255;\n        if (s === 0) {\n            r = g = b = v;\n        } else {\n            if (h === 360) { h = 0; }\n            if (h > 360) { h -= 360; }\n            if (h < 0) { h += 360; }\n            h /= 60;\n\n            var i = floor$2(h);\n            var f = h - i;\n            var p = v * (1 - s);\n            var q = v * (1 - s * f);\n            var t = v * (1 - s * (1 - f));\n\n            switch (i) {\n                case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n                case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n                case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n                case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n                case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n                case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n            }\n        }\n        return [r,g,b,args.length > 3?args[3]:1];\n    };\n\n    var hsv2rgb_1 = hsv2rgb;\n\n    var unpack$i = utils.unpack;\n    var type$f = utils.type;\n    var chroma$c = chroma_1;\n    var Color$v = Color_1;\n    var input$8 = input$h;\n\n    var rgb2hsv = rgb2hsv$1;\n\n    Color$v.prototype.hsv = function() {\n        return rgb2hsv(this._rgb);\n    };\n\n    chroma$c.hsv = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n    };\n\n    input$8.format.hsv = hsv2rgb_1;\n\n    input$8.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$i(args, 'hsv');\n            if (type$f(args) === 'array' && args.length === 3) {\n                return 'hsv';\n            }\n        }\n    });\n\n    var labConstants = {\n        // Corresponds roughly to RGB brighter/darker\n        Kn: 18,\n\n        // D65 standard referent\n        Xn: 0.950470,\n        Yn: 1,\n        Zn: 1.088830,\n\n        t0: 0.137931034,  // 4 / 29\n        t1: 0.206896552,  // 6 / 29\n        t2: 0.12841855,   // 3 * t1 * t1\n        t3: 0.008856452,  // t1 * t1 * t1\n    };\n\n    var LAB_CONSTANTS$3 = labConstants;\n    var unpack$h = utils.unpack;\n    var pow$a = Math.pow;\n\n    var rgb2lab$2 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$h(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = rgb2xyz(r,g,b);\n        var x = ref$1[0];\n        var y = ref$1[1];\n        var z = ref$1[2];\n        var l = 116 * y - 16;\n        return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n    };\n\n    var rgb_xyz = function (r) {\n        if ((r /= 255) <= 0.04045) { return r / 12.92; }\n        return pow$a((r + 0.055) / 1.055, 2.4);\n    };\n\n    var xyz_lab = function (t) {\n        if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n        return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n    };\n\n    var rgb2xyz = function (r,g,b) {\n        r = rgb_xyz(r);\n        g = rgb_xyz(g);\n        b = rgb_xyz(b);\n        var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n        var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n        var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n        return [x,y,z];\n    };\n\n    var rgb2lab_1 = rgb2lab$2;\n\n    var LAB_CONSTANTS$2 = labConstants;\n    var unpack$g = utils.unpack;\n    var pow$9 = Math.pow;\n\n    /*\n     * L* [0..100]\n     * a [-100..100]\n     * b [-100..100]\n     */\n    var lab2rgb$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$g(args, 'lab');\n        var l = args[0];\n        var a = args[1];\n        var b = args[2];\n        var x,y,z, r,g,b_;\n\n        y = (l + 16) / 116;\n        x = isNaN(a) ? y : y + a / 500;\n        z = isNaN(b) ? y : y - b / 200;\n\n        y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n        x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n        z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n        r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);  // D65 -> sRGB\n        g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n        b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n        return [r,g,b_,args.length > 3 ? args[3] : 1];\n    };\n\n    var xyz_rgb = function (r) {\n        return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n    };\n\n    var lab_xyz = function (t) {\n        return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n    };\n\n    var lab2rgb_1 = lab2rgb$1;\n\n    var unpack$f = utils.unpack;\n    var type$e = utils.type;\n    var chroma$b = chroma_1;\n    var Color$u = Color_1;\n    var input$7 = input$h;\n\n    var rgb2lab$1 = rgb2lab_1;\n\n    Color$u.prototype.lab = function() {\n        return rgb2lab$1(this._rgb);\n    };\n\n    chroma$b.lab = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n    };\n\n    input$7.format.lab = lab2rgb_1;\n\n    input$7.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$f(args, 'lab');\n            if (type$e(args) === 'array' && args.length === 3) {\n                return 'lab';\n            }\n        }\n    });\n\n    var unpack$e = utils.unpack;\n    var RAD2DEG = utils.RAD2DEG;\n    var sqrt$3 = Math.sqrt;\n    var atan2$2 = Math.atan2;\n    var round$2 = Math.round;\n\n    var lab2lch$2 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$e(args, 'lab');\n        var l = ref[0];\n        var a = ref[1];\n        var b = ref[2];\n        var c = sqrt$3(a * a + b * b);\n        var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n        if (round$2(c*10000) === 0) { h = Number.NaN; }\n        return [l, c, h];\n    };\n\n    var lab2lch_1 = lab2lch$2;\n\n    var unpack$d = utils.unpack;\n    var rgb2lab = rgb2lab_1;\n    var lab2lch$1 = lab2lch_1;\n\n    var rgb2lch$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$d(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = rgb2lab(r,g,b);\n        var l = ref$1[0];\n        var a = ref$1[1];\n        var b_ = ref$1[2];\n        return lab2lch$1(l,a,b_);\n    };\n\n    var rgb2lch_1 = rgb2lch$1;\n\n    var unpack$c = utils.unpack;\n    var DEG2RAD = utils.DEG2RAD;\n    var sin$3 = Math.sin;\n    var cos$3 = Math.cos;\n\n    var lch2lab$2 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n        These formulas were invented by David Dalrymple to obtain maximum contrast without going\n        out of gamut if the parameters are in the range 0-1.\n\n        A saturation multiplier was added by Gregor Aisch\n        */\n        var ref = unpack$c(args, 'lch');\n        var l = ref[0];\n        var c = ref[1];\n        var h = ref[2];\n        if (isNaN(h)) { h = 0; }\n        h = h * DEG2RAD;\n        return [l, cos$3(h) * c, sin$3(h) * c]\n    };\n\n    var lch2lab_1 = lch2lab$2;\n\n    var unpack$b = utils.unpack;\n    var lch2lab$1 = lch2lab_1;\n    var lab2rgb = lab2rgb_1;\n\n    var lch2rgb$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$b(args, 'lch');\n        var l = args[0];\n        var c = args[1];\n        var h = args[2];\n        var ref = lch2lab$1 (l,c,h);\n        var L = ref[0];\n        var a = ref[1];\n        var b_ = ref[2];\n        var ref$1 = lab2rgb (L,a,b_);\n        var r = ref$1[0];\n        var g = ref$1[1];\n        var b = ref$1[2];\n        return [r, g, b, args.length > 3 ? args[3] : 1];\n    };\n\n    var lch2rgb_1 = lch2rgb$1;\n\n    var unpack$a = utils.unpack;\n    var lch2rgb = lch2rgb_1;\n\n    var hcl2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var hcl = unpack$a(args, 'hcl').reverse();\n        return lch2rgb.apply(void 0, hcl);\n    };\n\n    var hcl2rgb_1 = hcl2rgb;\n\n    var unpack$9 = utils.unpack;\n    var type$d = utils.type;\n    var chroma$a = chroma_1;\n    var Color$t = Color_1;\n    var input$6 = input$h;\n\n    var rgb2lch = rgb2lch_1;\n\n    Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n    Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n    chroma$a.lch = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n    };\n    chroma$a.hcl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n    };\n\n    input$6.format.lch = lch2rgb_1;\n    input$6.format.hcl = hcl2rgb_1;\n\n    ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$9(args, m);\n            if (type$d(args) === 'array' && args.length === 3) {\n                return m;\n            }\n        }\n    }); });\n\n    /**\n    \tX11 color names\n\n    \thttp://www.w3.org/TR/css3-color/#svg-color\n    */\n\n    var w3cx11$1 = {\n        aliceblue: '#f0f8ff',\n        antiquewhite: '#faebd7',\n        aqua: '#00ffff',\n        aquamarine: '#7fffd4',\n        azure: '#f0ffff',\n        beige: '#f5f5dc',\n        bisque: '#ffe4c4',\n        black: '#000000',\n        blanchedalmond: '#ffebcd',\n        blue: '#0000ff',\n        blueviolet: '#8a2be2',\n        brown: '#a52a2a',\n        burlywood: '#deb887',\n        cadetblue: '#5f9ea0',\n        chartreuse: '#7fff00',\n        chocolate: '#d2691e',\n        coral: '#ff7f50',\n        cornflower: '#6495ed',\n        cornflowerblue: '#6495ed',\n        cornsilk: '#fff8dc',\n        crimson: '#dc143c',\n        cyan: '#00ffff',\n        darkblue: '#00008b',\n        darkcyan: '#008b8b',\n        darkgoldenrod: '#b8860b',\n        darkgray: '#a9a9a9',\n        darkgreen: '#006400',\n        darkgrey: '#a9a9a9',\n        darkkhaki: '#bdb76b',\n        darkmagenta: '#8b008b',\n        darkolivegreen: '#556b2f',\n        darkorange: '#ff8c00',\n        darkorchid: '#9932cc',\n        darkred: '#8b0000',\n        darksalmon: '#e9967a',\n        darkseagreen: '#8fbc8f',\n        darkslateblue: '#483d8b',\n        darkslategray: '#2f4f4f',\n        darkslategrey: '#2f4f4f',\n        darkturquoise: '#00ced1',\n        darkviolet: '#9400d3',\n        deeppink: '#ff1493',\n        deepskyblue: '#00bfff',\n        dimgray: '#696969',\n        dimgrey: '#696969',\n        dodgerblue: '#1e90ff',\n        firebrick: '#b22222',\n        floralwhite: '#fffaf0',\n        forestgreen: '#228b22',\n        fuchsia: '#ff00ff',\n        gainsboro: '#dcdcdc',\n        ghostwhite: '#f8f8ff',\n        gold: '#ffd700',\n        goldenrod: '#daa520',\n        gray: '#808080',\n        green: '#008000',\n        greenyellow: '#adff2f',\n        grey: '#808080',\n        honeydew: '#f0fff0',\n        hotpink: '#ff69b4',\n        indianred: '#cd5c5c',\n        indigo: '#4b0082',\n        ivory: '#fffff0',\n        khaki: '#f0e68c',\n        laserlemon: '#ffff54',\n        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\n        lightgoldenrod: '#fafad2',\n        lightgoldenrodyellow: '#fafad2',\n        lightgray: '#d3d3d3',\n        lightgreen: '#90ee90',\n        lightgrey: '#d3d3d3',\n        lightpink: '#ffb6c1',\n        lightsalmon: '#ffa07a',\n        lightseagreen: '#20b2aa',\n        lightskyblue: '#87cefa',\n        lightslategray: '#778899',\n        lightslategrey: '#778899',\n        lightsteelblue: '#b0c4de',\n        lightyellow: '#ffffe0',\n        lime: '#00ff00',\n        limegreen: '#32cd32',\n        linen: '#faf0e6',\n        magenta: '#ff00ff',\n        maroon: '#800000',\n        maroon2: '#7f0000',\n        maroon3: '#b03060',\n        mediumaquamarine: '#66cdaa',\n        mediumblue: '#0000cd',\n        mediumorchid: '#ba55d3',\n        mediumpurple: '#9370db',\n        mediumseagreen: '#3cb371',\n        mediumslateblue: '#7b68ee',\n        mediumspringgreen: '#00fa9a',\n        mediumturquoise: '#48d1cc',\n        mediumvioletred: '#c71585',\n        midnightblue: '#191970',\n        mintcream: '#f5fffa',\n        mistyrose: '#ffe4e1',\n        moccasin: '#ffe4b5',\n        navajowhite: '#ffdead',\n        navy: '#000080',\n        oldlace: '#fdf5e6',\n        olive: '#808000',\n        olivedrab: '#6b8e23',\n        orange: '#ffa500',\n        orangered: '#ff4500',\n        orchid: '#da70d6',\n        palegoldenrod: '#eee8aa',\n        palegreen: '#98fb98',\n        paleturquoise: '#afeeee',\n        palevioletred: '#db7093',\n        papayawhip: '#ffefd5',\n        peachpuff: '#ffdab9',\n        peru: '#cd853f',\n        pink: '#ffc0cb',\n        plum: '#dda0dd',\n        powderblue: '#b0e0e6',\n        purple: '#800080',\n        purple2: '#7f007f',\n        purple3: '#a020f0',\n        rebeccapurple: '#663399',\n        red: '#ff0000',\n        rosybrown: '#bc8f8f',\n        royalblue: '#4169e1',\n        saddlebrown: '#8b4513',\n        salmon: '#fa8072',\n        sandybrown: '#f4a460',\n        seagreen: '#2e8b57',\n        seashell: '#fff5ee',\n        sienna: '#a0522d',\n        silver: '#c0c0c0',\n        skyblue: '#87ceeb',\n        slateblue: '#6a5acd',\n        slategray: '#708090',\n        slategrey: '#708090',\n        snow: '#fffafa',\n        springgreen: '#00ff7f',\n        steelblue: '#4682b4',\n        tan: '#d2b48c',\n        teal: '#008080',\n        thistle: '#d8bfd8',\n        tomato: '#ff6347',\n        turquoise: '#40e0d0',\n        violet: '#ee82ee',\n        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd32'\n    };\n\n    var w3cx11_1 = w3cx11$1;\n\n    var Color$s = Color_1;\n    var input$5 = input$h;\n    var type$c = utils.type;\n\n    var w3cx11 = w3cx11_1;\n    var hex2rgb = hex2rgb_1;\n    var rgb2hex = rgb2hex_1;\n\n    Color$s.prototype.name = function() {\n        var hex = rgb2hex(this._rgb, 'rgb');\n        for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n            var n = list[i];\n\n            if (w3cx11[n] === hex) { return n.toLowerCase(); }\n        }\n        return hex;\n    };\n\n    input$5.format.named = function (name) {\n        name = name.toLowerCase();\n        if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n        throw new Error('unknown color name: '+name);\n    };\n\n    input$5.autodetect.push({\n        p: 5,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n                return 'named';\n            }\n        }\n    });\n\n    var unpack$8 = utils.unpack;\n\n    var rgb2num$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$8(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        return (r << 16) + (g << 8) + b;\n    };\n\n    var rgb2num_1 = rgb2num$1;\n\n    var type$b = utils.type;\n\n    var num2rgb = function (num) {\n        if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n            var r = num >> 16;\n            var g = (num >> 8) & 0xFF;\n            var b = num & 0xFF;\n            return [r,g,b,1];\n        }\n        throw new Error(\"unknown num color: \"+num);\n    };\n\n    var num2rgb_1 = num2rgb;\n\n    var chroma$9 = chroma_1;\n    var Color$r = Color_1;\n    var input$4 = input$h;\n    var type$a = utils.type;\n\n    var rgb2num = rgb2num_1;\n\n    Color$r.prototype.num = function() {\n        return rgb2num(this._rgb);\n    };\n\n    chroma$9.num = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n    };\n\n    input$4.format.num = num2rgb_1;\n\n    input$4.autodetect.push({\n        p: 5,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n                return 'num';\n            }\n        }\n    });\n\n    var chroma$8 = chroma_1;\n    var Color$q = Color_1;\n    var input$3 = input$h;\n    var unpack$7 = utils.unpack;\n    var type$9 = utils.type;\n    var round$1 = Math.round;\n\n    Color$q.prototype.rgb = function(rnd) {\n        if ( rnd === void 0 ) rnd=true;\n\n        if (rnd === false) { return this._rgb.slice(0,3); }\n        return this._rgb.slice(0,3).map(round$1);\n    };\n\n    Color$q.prototype.rgba = function(rnd) {\n        if ( rnd === void 0 ) rnd=true;\n\n        return this._rgb.slice(0,4).map(function (v,i) {\n            return i<3 ? (rnd === false ? v : round$1(v)) : v;\n        });\n    };\n\n    chroma$8.rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n    };\n\n    input$3.format.rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgba = unpack$7(args, 'rgba');\n        if (rgba[3] === undefined) { rgba[3] = 1; }\n        return rgba;\n    };\n\n    input$3.autodetect.push({\n        p: 3,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$7(args, 'rgba');\n            if (type$9(args) === 'array' && (args.length === 3 ||\n                args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n                return 'rgb';\n            }\n        }\n    });\n\n    /*\n     * Based on implementation by Neil Bartlett\n     * https://github.com/neilbartlett/color-temperature\n     */\n\n    var log$1 = Math.log;\n\n    var temperature2rgb$1 = function (kelvin) {\n        var temp = kelvin / 100;\n        var r,g,b;\n        if (temp < 66) {\n            r = 255;\n            g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n            b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n        } else {\n            r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n            g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n            b = 255;\n        }\n        return [r,g,b,1];\n    };\n\n    var temperature2rgb_1 = temperature2rgb$1;\n\n    /*\n     * Based on implementation by Neil Bartlett\n     * https://github.com/neilbartlett/color-temperature\n     **/\n\n    var temperature2rgb = temperature2rgb_1;\n    var unpack$6 = utils.unpack;\n    var round = Math.round;\n\n    var rgb2temperature$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgb = unpack$6(args, 'rgb');\n        var r = rgb[0], b = rgb[2];\n        var minTemp = 1000;\n        var maxTemp = 40000;\n        var eps = 0.4;\n        var temp;\n        while (maxTemp - minTemp > eps) {\n            temp = (maxTemp + minTemp) * 0.5;\n            var rgb$1 = temperature2rgb(temp);\n            if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n                maxTemp = temp;\n            } else {\n                minTemp = temp;\n            }\n        }\n        return round(temp);\n    };\n\n    var rgb2temperature_1 = rgb2temperature$1;\n\n    var chroma$7 = chroma_1;\n    var Color$p = Color_1;\n    var input$2 = input$h;\n\n    var rgb2temperature = rgb2temperature_1;\n\n    Color$p.prototype.temp =\n    Color$p.prototype.kelvin =\n    Color$p.prototype.temperature = function() {\n        return rgb2temperature(this._rgb);\n    };\n\n    chroma$7.temp =\n    chroma$7.kelvin =\n    chroma$7.temperature = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n    };\n\n    input$2.format.temp =\n    input$2.format.kelvin =\n    input$2.format.temperature = temperature2rgb_1;\n\n    var unpack$5 = utils.unpack;\n    var cbrt = Math.cbrt;\n    var pow$8 = Math.pow;\n    var sign$1 = Math.sign;\n\n    var rgb2oklab$2 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        // OKLab color space implementation taken from\n        // https://bottosson.github.io/posts/oklab/\n        var ref = unpack$5(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n        var lr = ref$1[0];\n        var lg = ref$1[1];\n        var lb = ref$1[2];\n        var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n        var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n        var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n        return [\n            0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n            1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n            0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n        ];\n    };\n\n    var rgb2oklab_1 = rgb2oklab$2;\n\n    function rgb2lrgb(c) {\n        var abs = Math.abs(c);\n        if (abs < 0.04045) {\n            return c / 12.92;\n        }\n        return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n    }\n\n    var unpack$4 = utils.unpack;\n    var pow$7 = Math.pow;\n    var sign = Math.sign;\n\n    /*\n     * L* [0..100]\n     * a [-100..100]\n     * b [-100..100]\n     */\n    var oklab2rgb$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$4(args, 'lab');\n        var L = args[0];\n        var a = args[1];\n        var b = args[2];\n\n        var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n        var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n        var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n        return [\n            255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n            255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n            255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n            args.length > 3 ? args[3] : 1\n        ];\n    };\n\n    var oklab2rgb_1 = oklab2rgb$1;\n\n    function lrgb2rgb(c) {\n        var abs = Math.abs(c);\n        if (abs > 0.0031308) {\n            return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n        }\n        return c * 12.92;\n    }\n\n    var unpack$3 = utils.unpack;\n    var type$8 = utils.type;\n    var chroma$6 = chroma_1;\n    var Color$o = Color_1;\n    var input$1 = input$h;\n\n    var rgb2oklab$1 = rgb2oklab_1;\n\n    Color$o.prototype.oklab = function () {\n        return rgb2oklab$1(this._rgb);\n    };\n\n    chroma$6.oklab = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n    };\n\n    input$1.format.oklab = oklab2rgb_1;\n\n    input$1.autodetect.push({\n        p: 3,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$3(args, 'oklab');\n            if (type$8(args) === 'array' && args.length === 3) {\n                return 'oklab';\n            }\n        }\n    });\n\n    var unpack$2 = utils.unpack;\n    var rgb2oklab = rgb2oklab_1;\n    var lab2lch = lab2lch_1;\n\n    var rgb2oklch$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$2(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = rgb2oklab(r, g, b);\n        var l = ref$1[0];\n        var a = ref$1[1];\n        var b_ = ref$1[2];\n        return lab2lch(l, a, b_);\n    };\n\n    var rgb2oklch_1 = rgb2oklch$1;\n\n    var unpack$1 = utils.unpack;\n    var lch2lab = lch2lab_1;\n    var oklab2rgb = oklab2rgb_1;\n\n    var oklch2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$1(args, 'lch');\n        var l = args[0];\n        var c = args[1];\n        var h = args[2];\n        var ref = lch2lab(l, c, h);\n        var L = ref[0];\n        var a = ref[1];\n        var b_ = ref[2];\n        var ref$1 = oklab2rgb(L, a, b_);\n        var r = ref$1[0];\n        var g = ref$1[1];\n        var b = ref$1[2];\n        return [r, g, b, args.length > 3 ? args[3] : 1];\n    };\n\n    var oklch2rgb_1 = oklch2rgb;\n\n    var unpack = utils.unpack;\n    var type$7 = utils.type;\n    var chroma$5 = chroma_1;\n    var Color$n = Color_1;\n    var input = input$h;\n\n    var rgb2oklch = rgb2oklch_1;\n\n    Color$n.prototype.oklch = function () {\n        return rgb2oklch(this._rgb);\n    };\n\n    chroma$5.oklch = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n    };\n\n    input.format.oklch = oklch2rgb_1;\n\n    input.autodetect.push({\n        p: 3,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack(args, 'oklch');\n            if (type$7(args) === 'array' && args.length === 3) {\n                return 'oklch';\n            }\n        }\n    });\n\n    var Color$m = Color_1;\n    var type$6 = utils.type;\n\n    Color$m.prototype.alpha = function(a, mutate) {\n        if ( mutate === void 0 ) mutate=false;\n\n        if (a !== undefined && type$6(a) === 'number') {\n            if (mutate) {\n                this._rgb[3] = a;\n                return this;\n            }\n            return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n        }\n        return this._rgb[3];\n    };\n\n    var Color$l = Color_1;\n\n    Color$l.prototype.clipped = function() {\n        return this._rgb._clipped || false;\n    };\n\n    var Color$k = Color_1;\n    var LAB_CONSTANTS$1 = labConstants;\n\n    Color$k.prototype.darken = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \tvar me = this;\n    \tvar lab = me.lab();\n    \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n    \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n    };\n\n    Color$k.prototype.brighten = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \treturn this.darken(-amount);\n    };\n\n    Color$k.prototype.darker = Color$k.prototype.darken;\n    Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n    var Color$j = Color_1;\n\n    Color$j.prototype.get = function (mc) {\n        var ref = mc.split('.');\n        var mode = ref[0];\n        var channel = ref[1];\n        var src = this[mode]();\n        if (channel) {\n            var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n            if (i > -1) { return src[i]; }\n            throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n        } else {\n            return src;\n        }\n    };\n\n    var Color$i = Color_1;\n    var type$5 = utils.type;\n    var pow$6 = Math.pow;\n\n    var EPS = 1e-7;\n    var MAX_ITER = 20;\n\n    Color$i.prototype.luminance = function(lum) {\n        if (lum !== undefined && type$5(lum) === 'number') {\n            if (lum === 0) {\n                // return pure black\n                return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n            }\n            if (lum === 1) {\n                // return pure white\n                return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n            }\n            // compute new color using...\n            var cur_lum = this.luminance();\n            var mode = 'rgb';\n            var max_iter = MAX_ITER;\n\n            var test = function (low, high) {\n                var mid = low.interpolate(high, 0.5, mode);\n                var lm = mid.luminance();\n                if (Math.abs(lum - lm) < EPS || !max_iter--) {\n                    // close enough\n                    return mid;\n                }\n                return lm > lum ? test(low, mid) : test(mid, high);\n            };\n\n            var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n            return new Color$i(rgb.concat( [this._rgb[3]]));\n        }\n        return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n    };\n\n\n    var rgb2luminance = function (r,g,b) {\n        // relative luminance\n        // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        r = luminance_x(r);\n        g = luminance_x(g);\n        b = luminance_x(b);\n        return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    };\n\n    var luminance_x = function (x) {\n        x /= 255;\n        return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n    };\n\n    var interpolator$1 = {};\n\n    var Color$h = Color_1;\n    var type$4 = utils.type;\n    var interpolator = interpolator$1;\n\n    var mix$1 = function (col1, col2, f) {\n        if ( f === void 0 ) f=0.5;\n        var rest = [], len = arguments.length - 3;\n        while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n        var mode = rest[0] || 'lrgb';\n        if (!interpolator[mode] && !rest.length) {\n            // fall back to the first supported mode\n            mode = Object.keys(interpolator)[0];\n        }\n        if (!interpolator[mode]) {\n            throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n        }\n        if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n        if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n        return interpolator[mode](col1, col2, f)\n            .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n    };\n\n    var Color$g = Color_1;\n    var mix = mix$1;\n\n    Color$g.prototype.mix =\n    Color$g.prototype.interpolate = function(col2, f) {\n    \tif ( f === void 0 ) f=0.5;\n    \tvar rest = [], len = arguments.length - 2;\n    \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n    \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n    };\n\n    var Color$f = Color_1;\n\n    Color$f.prototype.premultiply = function(mutate) {\n    \tif ( mutate === void 0 ) mutate=false;\n\n    \tvar rgb = this._rgb;\n    \tvar a = rgb[3];\n    \tif (mutate) {\n    \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n    \t\treturn this;\n    \t} else {\n    \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n    \t}\n    };\n\n    var Color$e = Color_1;\n    var LAB_CONSTANTS = labConstants;\n\n    Color$e.prototype.saturate = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \tvar me = this;\n    \tvar lch = me.lch();\n    \tlch[1] += LAB_CONSTANTS.Kn * amount;\n    \tif (lch[1] < 0) { lch[1] = 0; }\n    \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n    };\n\n    Color$e.prototype.desaturate = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \treturn this.saturate(-amount);\n    };\n\n    var Color$d = Color_1;\n    var type$3 = utils.type;\n\n    Color$d.prototype.set = function (mc, value, mutate) {\n        if ( mutate === void 0 ) mutate = false;\n\n        var ref = mc.split('.');\n        var mode = ref[0];\n        var channel = ref[1];\n        var src = this[mode]();\n        if (channel) {\n            var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n            if (i > -1) {\n                if (type$3(value) == 'string') {\n                    switch (value.charAt(0)) {\n                        case '+':\n                            src[i] += +value;\n                            break;\n                        case '-':\n                            src[i] += +value;\n                            break;\n                        case '*':\n                            src[i] *= +value.substr(1);\n                            break;\n                        case '/':\n                            src[i] /= +value.substr(1);\n                            break;\n                        default:\n                            src[i] = +value;\n                    }\n                } else if (type$3(value) === 'number') {\n                    src[i] = value;\n                } else {\n                    throw new Error(\"unsupported value for Color.set\");\n                }\n                var out = new Color$d(src, mode);\n                if (mutate) {\n                    this._rgb = out._rgb;\n                    return this;\n                }\n                return out;\n            }\n            throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n        } else {\n            return src;\n        }\n    };\n\n    var Color$c = Color_1;\n\n    var rgb = function (col1, col2, f) {\n        var xyz0 = col1._rgb;\n        var xyz1 = col2._rgb;\n        return new Color$c(\n            xyz0[0] + f * (xyz1[0]-xyz0[0]),\n            xyz0[1] + f * (xyz1[1]-xyz0[1]),\n            xyz0[2] + f * (xyz1[2]-xyz0[2]),\n            'rgb'\n        )\n    };\n\n    // register interpolator\n    interpolator$1.rgb = rgb;\n\n    var Color$b = Color_1;\n    var sqrt$2 = Math.sqrt;\n    var pow$5 = Math.pow;\n\n    var lrgb = function (col1, col2, f) {\n        var ref = col1._rgb;\n        var x1 = ref[0];\n        var y1 = ref[1];\n        var z1 = ref[2];\n        var ref$1 = col2._rgb;\n        var x2 = ref$1[0];\n        var y2 = ref$1[1];\n        var z2 = ref$1[2];\n        return new Color$b(\n            sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n            sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n            sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n            'rgb'\n        )\n    };\n\n    // register interpolator\n    interpolator$1.lrgb = lrgb;\n\n    var Color$a = Color_1;\n\n    var lab = function (col1, col2, f) {\n        var xyz0 = col1.lab();\n        var xyz1 = col2.lab();\n        return new Color$a(\n            xyz0[0] + f * (xyz1[0]-xyz0[0]),\n            xyz0[1] + f * (xyz1[1]-xyz0[1]),\n            xyz0[2] + f * (xyz1[2]-xyz0[2]),\n            'lab'\n        )\n    };\n\n    // register interpolator\n    interpolator$1.lab = lab;\n\n    var Color$9 = Color_1;\n\n    var _hsx = function (col1, col2, f, m) {\n        var assign, assign$1;\n\n        var xyz0, xyz1;\n        if (m === 'hsl') {\n            xyz0 = col1.hsl();\n            xyz1 = col2.hsl();\n        } else if (m === 'hsv') {\n            xyz0 = col1.hsv();\n            xyz1 = col2.hsv();\n        } else if (m === 'hcg') {\n            xyz0 = col1.hcg();\n            xyz1 = col2.hcg();\n        } else if (m === 'hsi') {\n            xyz0 = col1.hsi();\n            xyz1 = col2.hsi();\n        } else if (m === 'lch' || m === 'hcl') {\n            m = 'hcl';\n            xyz0 = col1.hcl();\n            xyz1 = col2.hcl();\n        } else if (m === 'oklch') {\n            xyz0 = col1.oklch().reverse();\n            xyz1 = col2.oklch().reverse();\n        }\n\n        var hue0, hue1, sat0, sat1, lbv0, lbv1;\n        if (m.substr(0, 1) === 'h' || m === 'oklch') {\n            (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n            (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n        }\n\n        var sat, hue, lbv, dh;\n\n        if (!isNaN(hue0) && !isNaN(hue1)) {\n            // both colors have hue\n            if (hue1 > hue0 && hue1 - hue0 > 180) {\n                dh = hue1 - (hue0 + 360);\n            } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n                dh = hue1 + 360 - hue0;\n            } else {\n                dh = hue1 - hue0;\n            }\n            hue = hue0 + f * dh;\n        } else if (!isNaN(hue0)) {\n            hue = hue0;\n            if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n        } else if (!isNaN(hue1)) {\n            hue = hue1;\n            if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n        } else {\n            hue = Number.NaN;\n        }\n\n        if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n        lbv = lbv0 + f * (lbv1 - lbv0);\n        return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n    };\n\n    var interpolate_hsx$5 = _hsx;\n\n    var lch = function (col1, col2, f) {\n    \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n    };\n\n    // register interpolator\n    interpolator$1.lch = lch;\n    interpolator$1.hcl = lch;\n\n    var Color$8 = Color_1;\n\n    var num = function (col1, col2, f) {\n        var c1 = col1.num();\n        var c2 = col2.num();\n        return new Color$8(c1 + f * (c2-c1), 'num')\n    };\n\n    // register interpolator\n    interpolator$1.num = num;\n\n    var interpolate_hsx$4 = _hsx;\n\n    var hcg = function (col1, col2, f) {\n    \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n    };\n\n    // register interpolator\n    interpolator$1.hcg = hcg;\n\n    var interpolate_hsx$3 = _hsx;\n\n    var hsi = function (col1, col2, f) {\n    \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n    };\n\n    // register interpolator\n    interpolator$1.hsi = hsi;\n\n    var interpolate_hsx$2 = _hsx;\n\n    var hsl = function (col1, col2, f) {\n    \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n    };\n\n    // register interpolator\n    interpolator$1.hsl = hsl;\n\n    var interpolate_hsx$1 = _hsx;\n\n    var hsv = function (col1, col2, f) {\n    \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n    };\n\n    // register interpolator\n    interpolator$1.hsv = hsv;\n\n    var Color$7 = Color_1;\n\n    var oklab = function (col1, col2, f) {\n        var xyz0 = col1.oklab();\n        var xyz1 = col2.oklab();\n        return new Color$7(\n            xyz0[0] + f * (xyz1[0] - xyz0[0]),\n            xyz0[1] + f * (xyz1[1] - xyz0[1]),\n            xyz0[2] + f * (xyz1[2] - xyz0[2]),\n            'oklab'\n        );\n    };\n\n    // register interpolator\n    interpolator$1.oklab = oklab;\n\n    var interpolate_hsx = _hsx;\n\n    var oklch = function (col1, col2, f) {\n        return interpolate_hsx(col1, col2, f, 'oklch');\n    };\n\n    // register interpolator\n    interpolator$1.oklch = oklch;\n\n    var Color$6 = Color_1;\n    var clip_rgb$1 = utils.clip_rgb;\n    var pow$4 = Math.pow;\n    var sqrt$1 = Math.sqrt;\n    var PI$1 = Math.PI;\n    var cos$2 = Math.cos;\n    var sin$2 = Math.sin;\n    var atan2$1 = Math.atan2;\n\n    var average = function (colors, mode, weights) {\n        if ( mode === void 0 ) mode='lrgb';\n        if ( weights === void 0 ) weights=null;\n\n        var l = colors.length;\n        if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n        // normalize weights\n        var k = l / weights.reduce(function(a, b) { return a + b; });\n        weights.forEach(function (w,i) { weights[i] *= k; });\n        // convert colors to Color objects\n        colors = colors.map(function (c) { return new Color$6(c); });\n        if (mode === 'lrgb') {\n            return _average_lrgb(colors, weights)\n        }\n        var first = colors.shift();\n        var xyz = first.get(mode);\n        var cnt = [];\n        var dx = 0;\n        var dy = 0;\n        // initial color\n        for (var i=0; i<xyz.length; i++) {\n            xyz[i] = (xyz[i] || 0) * weights[0];\n            cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n            if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n                var A = xyz[i] / 180 * PI$1;\n                dx += cos$2(A) * weights[0];\n                dy += sin$2(A) * weights[0];\n            }\n        }\n\n        var alpha = first.alpha() * weights[0];\n        colors.forEach(function (c,ci) {\n            var xyz2 = c.get(mode);\n            alpha += c.alpha() * weights[ci+1];\n            for (var i=0; i<xyz.length; i++) {\n                if (!isNaN(xyz2[i])) {\n                    cnt[i] += weights[ci+1];\n                    if (mode.charAt(i) === 'h') {\n                        var A = xyz2[i] / 180 * PI$1;\n                        dx += cos$2(A) * weights[ci+1];\n                        dy += sin$2(A) * weights[ci+1];\n                    } else {\n                        xyz[i] += xyz2[i] * weights[ci+1];\n                    }\n                }\n            }\n        });\n\n        for (var i$1=0; i$1<xyz.length; i$1++) {\n            if (mode.charAt(i$1) === 'h') {\n                var A$1 = atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1 * 180;\n                while (A$1 < 0) { A$1 += 360; }\n                while (A$1 >= 360) { A$1 -= 360; }\n                xyz[i$1] = A$1;\n            } else {\n                xyz[i$1] = xyz[i$1]/cnt[i$1];\n            }\n        }\n        alpha /= l;\n        return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n    };\n\n\n    var _average_lrgb = function (colors, weights) {\n        var l = colors.length;\n        var xyz = [0,0,0,0];\n        for (var i=0; i < colors.length; i++) {\n            var col = colors[i];\n            var f = weights[i] / l;\n            var rgb = col._rgb;\n            xyz[0] += pow$4(rgb[0],2) * f;\n            xyz[1] += pow$4(rgb[1],2) * f;\n            xyz[2] += pow$4(rgb[2],2) * f;\n            xyz[3] += rgb[3] * f;\n        }\n        xyz[0] = sqrt$1(xyz[0]);\n        xyz[1] = sqrt$1(xyz[1]);\n        xyz[2] = sqrt$1(xyz[2]);\n        if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n        return new Color$6(clip_rgb$1(xyz));\n    };\n\n    // minimal multi-purpose interface\n\n    // @requires utils color analyze\n\n    var chroma$4 = chroma_1;\n    var type$2 = utils.type;\n\n    var pow$3 = Math.pow;\n\n    var scale$2 = function(colors) {\n\n        // constructor\n        var _mode = 'rgb';\n        var _nacol = chroma$4('#ccc');\n        var _spread = 0;\n        // const _fixed = false;\n        var _domain = [0, 1];\n        var _pos = [];\n        var _padding = [0,0];\n        var _classes = false;\n        var _colors = [];\n        var _out = false;\n        var _min = 0;\n        var _max = 1;\n        var _correctLightness = false;\n        var _colorCache = {};\n        var _useCache = true;\n        var _gamma = 1;\n\n        // private methods\n\n        var setColors = function(colors) {\n            colors = colors || ['#fff', '#000'];\n            if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n                chroma$4.brewer[colors.toLowerCase()]) {\n                colors = chroma$4.brewer[colors.toLowerCase()];\n            }\n            if (type$2(colors) === 'array') {\n                // handle single color\n                if (colors.length === 1) {\n                    colors = [colors[0], colors[0]];\n                }\n                // make a copy of the colors\n                colors = colors.slice(0);\n                // convert to chroma classes\n                for (var c=0; c<colors.length; c++) {\n                    colors[c] = chroma$4(colors[c]);\n                }\n                // auto-fill color position\n                _pos.length = 0;\n                for (var c$1=0; c$1<colors.length; c$1++) {\n                    _pos.push(c$1/(colors.length-1));\n                }\n            }\n            resetCache();\n            return _colors = colors;\n        };\n\n        var getClass = function(value) {\n            if (_classes != null) {\n                var n = _classes.length-1;\n                var i = 0;\n                while (i < n && value >= _classes[i]) {\n                    i++;\n                }\n                return i-1;\n            }\n            return 0;\n        };\n\n        var tMapLightness = function (t) { return t; };\n        var tMapDomain = function (t) { return t; };\n\n        // const classifyValue = function(value) {\n        //     let val = value;\n        //     if (_classes.length > 2) {\n        //         const n = _classes.length-1;\n        //         const i = getClass(value);\n        //         const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5)));  // center of 1st class\n        //         const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5)));  // center of last class\n        //         val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n        //     }\n        //     return val;\n        // };\n\n        var getColor = function(val, bypassMap) {\n            var col, t;\n            if (bypassMap == null) { bypassMap = false; }\n            if (isNaN(val) || (val === null)) { return _nacol; }\n            if (!bypassMap) {\n                if (_classes && (_classes.length > 2)) {\n                    // find the class\n                    var c = getClass(val);\n                    t = c / (_classes.length-2);\n                } else if (_max !== _min) {\n                    // just interpolate between min/max\n                    t = (val - _min) / (_max - _min);\n                } else {\n                    t = 1;\n                }\n            } else {\n                t = val;\n            }\n\n            // domain map\n            t = tMapDomain(t);\n\n            if (!bypassMap) {\n                t = tMapLightness(t);  // lightness correction\n            }\n\n            if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n            t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n            t = Math.min(1, Math.max(0, t));\n\n            var k = Math.floor(t * 10000);\n\n            if (_useCache && _colorCache[k]) {\n                col = _colorCache[k];\n            } else {\n                if (type$2(_colors) === 'array') {\n                    //for i in [0.._pos.length-1]\n                    for (var i=0; i<_pos.length; i++) {\n                        var p = _pos[i];\n                        if (t <= p) {\n                            col = _colors[i];\n                            break;\n                        }\n                        if ((t >= p) && (i === (_pos.length-1))) {\n                            col = _colors[i];\n                            break;\n                        }\n                        if (t > p && t < _pos[i+1]) {\n                            t = (t-p)/(_pos[i+1]-p);\n                            col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n                            break;\n                        }\n                    }\n                } else if (type$2(_colors) === 'function') {\n                    col = _colors(t);\n                }\n                if (_useCache) { _colorCache[k] = col; }\n            }\n            return col;\n        };\n\n        var resetCache = function () { return _colorCache = {}; };\n\n        setColors(colors);\n\n        // public interface\n\n        var f = function(v) {\n            var c = chroma$4(getColor(v));\n            if (_out && c[_out]) { return c[_out](); } else { return c; }\n        };\n\n        f.classes = function(classes) {\n            if (classes != null) {\n                if (type$2(classes) === 'array') {\n                    _classes = classes;\n                    _domain = [classes[0], classes[classes.length-1]];\n                } else {\n                    var d = chroma$4.analyze(_domain);\n                    if (classes === 0) {\n                        _classes = [d.min, d.max];\n                    } else {\n                        _classes = chroma$4.limits(d, 'e', classes);\n                    }\n                }\n                return f;\n            }\n            return _classes;\n        };\n\n\n        f.domain = function(domain) {\n            if (!arguments.length) {\n                return _domain;\n            }\n            _min = domain[0];\n            _max = domain[domain.length-1];\n            _pos = [];\n            var k = _colors.length;\n            if ((domain.length === k) && (_min !== _max)) {\n                // update positions\n                for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n                    var d = list[i];\n\n                  _pos.push((d-_min) / (_max-_min));\n                }\n            } else {\n                for (var c=0; c<k; c++) {\n                    _pos.push(c/(k-1));\n                }\n                if (domain.length > 2) {\n                    // set domain map\n                    var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n                    var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n                    if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n                        tMapDomain = function (t) {\n                            if (t <= 0 || t >= 1) { return t; }\n                            var i = 0;\n                            while (t >= tBreaks[i+1]) { i++; }\n                            var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n                            var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n                            return out;\n                        };\n                    }\n\n                }\n            }\n            _domain = [_min, _max];\n            return f;\n        };\n\n        f.mode = function(_m) {\n            if (!arguments.length) {\n                return _mode;\n            }\n            _mode = _m;\n            resetCache();\n            return f;\n        };\n\n        f.range = function(colors, _pos) {\n            setColors(colors);\n            return f;\n        };\n\n        f.out = function(_o) {\n            _out = _o;\n            return f;\n        };\n\n        f.spread = function(val) {\n            if (!arguments.length) {\n                return _spread;\n            }\n            _spread = val;\n            return f;\n        };\n\n        f.correctLightness = function(v) {\n            if (v == null) { v = true; }\n            _correctLightness = v;\n            resetCache();\n            if (_correctLightness) {\n                tMapLightness = function(t) {\n                    var L0 = getColor(0, true).lab()[0];\n                    var L1 = getColor(1, true).lab()[0];\n                    var pol = L0 > L1;\n                    var L_actual = getColor(t, true).lab()[0];\n                    var L_ideal = L0 + ((L1 - L0) * t);\n                    var L_diff = L_actual - L_ideal;\n                    var t0 = 0;\n                    var t1 = 1;\n                    var max_iter = 20;\n                    while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n                        (function() {\n                            if (pol) { L_diff *= -1; }\n                            if (L_diff < 0) {\n                                t0 = t;\n                                t += (t1 - t) * 0.5;\n                            } else {\n                                t1 = t;\n                                t += (t0 - t) * 0.5;\n                            }\n                            L_actual = getColor(t, true).lab()[0];\n                            return L_diff = L_actual - L_ideal;\n                        })();\n                    }\n                    return t;\n                };\n            } else {\n                tMapLightness = function (t) { return t; };\n            }\n            return f;\n        };\n\n        f.padding = function(p) {\n            if (p != null) {\n                if (type$2(p) === 'number') {\n                    p = [p,p];\n                }\n                _padding = p;\n                return f;\n            } else {\n                return _padding;\n            }\n        };\n\n        f.colors = function(numColors, out) {\n            // If no arguments are given, return the original colors that were provided\n            if (arguments.length < 2) { out = 'hex'; }\n            var result = [];\n\n            if (arguments.length === 0) {\n                result = _colors.slice(0);\n\n            } else if (numColors === 1) {\n                result = [f(0.5)];\n\n            } else if (numColors > 1) {\n                var dm = _domain[0];\n                var dd = _domain[1] - dm;\n                result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n            } else { // returns all colors based on the defined classes\n                colors = [];\n                var samples = [];\n                if (_classes && (_classes.length > 2)) {\n                    for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                        samples.push((_classes[i-1]+_classes[i])*0.5);\n                    }\n                } else {\n                    samples = _domain;\n                }\n                result = samples.map(function (v) { return f(v); });\n            }\n\n            if (chroma$4[out]) {\n                result = result.map(function (c) { return c[out](); });\n            }\n            return result;\n        };\n\n        f.cache = function(c) {\n            if (c != null) {\n                _useCache = c;\n                return f;\n            } else {\n                return _useCache;\n            }\n        };\n\n        f.gamma = function(g) {\n            if (g != null) {\n                _gamma = g;\n                return f;\n            } else {\n                return _gamma;\n            }\n        };\n\n        f.nodata = function(d) {\n            if (d != null) {\n                _nacol = chroma$4(d);\n                return f;\n            } else {\n                return _nacol;\n            }\n        };\n\n        return f;\n    };\n\n    function __range__(left, right, inclusive) {\n      var range = [];\n      var ascending = left < right;\n      var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n      for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n        range.push(i);\n      }\n      return range;\n    }\n\n    //\n    // interpolates between a set of colors uzing a bezier spline\n    //\n\n    // @requires utils lab\n    var Color$5 = Color_1;\n\n    var scale$1 = scale$2;\n\n    // nth row of the pascal triangle\n    var binom_row = function(n) {\n        var row = [1, 1];\n        for (var i = 1; i < n; i++) {\n            var newrow = [1];\n            for (var j = 1; j <= row.length; j++) {\n                newrow[j] = (row[j] || 0) + row[j - 1];\n            }\n            row = newrow;\n        }\n        return row;\n    };\n\n    var bezier = function(colors) {\n        var assign, assign$1, assign$2;\n\n        var I, lab0, lab1, lab2;\n        colors = colors.map(function (c) { return new Color$5(c); });\n        if (colors.length === 2) {\n            // linear interpolation\n            (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n                return new Color$5(lab, 'lab');\n            };\n        } else if (colors.length === 3) {\n            // quadratic bezier interpolation\n            (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n                return new Color$5(lab, 'lab');\n            };\n        } else if (colors.length === 4) {\n            // cubic bezier interpolation\n            var lab3;\n            (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n                return new Color$5(lab, 'lab');\n            };\n        } else if (colors.length >= 5) {\n            // general case (degree n bezier)\n            var labs, row, n;\n            labs = colors.map(function (c) { return c.lab(); });\n            n = colors.length - 1;\n            row = binom_row(n);\n            I = function (t) {\n                var u = 1 - t;\n                var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n                return new Color$5(lab, 'lab');\n            };\n        } else {\n            throw new RangeError(\"No point in running bezier with only one color.\")\n        }\n        return I;\n    };\n\n    var bezier_1 = function (colors) {\n        var f = bezier(colors);\n        f.scale = function () { return scale$1(f); };\n        return f;\n    };\n\n    /*\n     * interpolates between a set of colors uzing a bezier spline\n     * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n     */\n\n    var chroma$3 = chroma_1;\n\n    var blend = function (bottom, top, mode) {\n        if (!blend[mode]) {\n            throw new Error('unknown blend mode ' + mode);\n        }\n        return blend[mode](bottom, top);\n    };\n\n    var blend_f = function (f) { return function (bottom,top) {\n            var c0 = chroma$3(top).rgb();\n            var c1 = chroma$3(bottom).rgb();\n            return chroma$3.rgb(f(c0, c1));\n        }; };\n\n    var each = function (f) { return function (c0, c1) {\n            var out = [];\n            out[0] = f(c0[0], c1[0]);\n            out[1] = f(c0[1], c1[1]);\n            out[2] = f(c0[2], c1[2]);\n            return out;\n        }; };\n\n    var normal = function (a) { return a; };\n    var multiply = function (a,b) { return a * b / 255; };\n    var darken = function (a,b) { return a > b ? b : a; };\n    var lighten = function (a,b) { return a > b ? a : b; };\n    var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n    var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n    var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n    var dodge = function (a,b) {\n        if (a === 255) { return 255; }\n        a = 255 * (b / 255) / (1 - a / 255);\n        return a > 255 ? 255 : a\n    };\n\n    // # add = (a,b) ->\n    // #     if (a + b > 255) then 255 else a + b\n\n    blend.normal = blend_f(each(normal));\n    blend.multiply = blend_f(each(multiply));\n    blend.screen = blend_f(each(screen));\n    blend.overlay = blend_f(each(overlay));\n    blend.darken = blend_f(each(darken));\n    blend.lighten = blend_f(each(lighten));\n    blend.dodge = blend_f(each(dodge));\n    blend.burn = blend_f(each(burn));\n    // blend.add = blend_f(each(add));\n\n    var blend_1 = blend;\n\n    // cubehelix interpolation\n    // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n    // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n    var type$1 = utils.type;\n    var clip_rgb = utils.clip_rgb;\n    var TWOPI = utils.TWOPI;\n    var pow$2 = Math.pow;\n    var sin$1 = Math.sin;\n    var cos$1 = Math.cos;\n    var chroma$2 = chroma_1;\n\n    var cubehelix = function(start, rotations, hue, gamma, lightness) {\n        if ( start === void 0 ) start=300;\n        if ( rotations === void 0 ) rotations=-1.5;\n        if ( hue === void 0 ) hue=1;\n        if ( gamma === void 0 ) gamma=1;\n        if ( lightness === void 0 ) lightness=[0,1];\n\n        var dh = 0, dl;\n        if (type$1(lightness) === 'array') {\n            dl = lightness[1] - lightness[0];\n        } else {\n            dl = 0;\n            lightness = [lightness, lightness];\n        }\n\n        var f = function(fract) {\n            var a = TWOPI * (((start+120)/360) + (rotations * fract));\n            var l = pow$2(lightness[0] + (dl * fract), gamma);\n            var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n            var amp = (h * l * (1-l)) / 2;\n            var cos_a = cos$1(a);\n            var sin_a = sin$1(a);\n            var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n            var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n            var b = l + (amp * (+1.97294 * cos_a));\n            return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n        };\n\n        f.start = function(s) {\n            if ((s == null)) { return start; }\n            start = s;\n            return f;\n        };\n\n        f.rotations = function(r) {\n            if ((r == null)) { return rotations; }\n            rotations = r;\n            return f;\n        };\n\n        f.gamma = function(g) {\n            if ((g == null)) { return gamma; }\n            gamma = g;\n            return f;\n        };\n\n        f.hue = function(h) {\n            if ((h == null)) { return hue; }\n            hue = h;\n            if (type$1(hue) === 'array') {\n                dh = hue[1] - hue[0];\n                if (dh === 0) { hue = hue[1]; }\n            } else {\n                dh = 0;\n            }\n            return f;\n        };\n\n        f.lightness = function(h) {\n            if ((h == null)) { return lightness; }\n            if (type$1(h) === 'array') {\n                lightness = h;\n                dl = h[1] - h[0];\n            } else {\n                lightness = [h,h];\n                dl = 0;\n            }\n            return f;\n        };\n\n        f.scale = function () { return chroma$2.scale(f); };\n\n        f.hue(hue);\n\n        return f;\n    };\n\n    var Color$4 = Color_1;\n    var digits = '0123456789abcdef';\n\n    var floor$1 = Math.floor;\n    var random = Math.random;\n\n    var random_1 = function () {\n        var code = '#';\n        for (var i=0; i<6; i++) {\n            code += digits.charAt(floor$1(random() * 16));\n        }\n        return new Color$4(code, 'hex');\n    };\n\n    var type = type$p;\n    var log = Math.log;\n    var pow$1 = Math.pow;\n    var floor = Math.floor;\n    var abs$1 = Math.abs;\n\n\n    var analyze = function (data, key) {\n        if ( key === void 0 ) key=null;\n\n        var r = {\n            min: Number.MAX_VALUE,\n            max: Number.MAX_VALUE*-1,\n            sum: 0,\n            values: [],\n            count: 0\n        };\n        if (type(data) === 'object') {\n            data = Object.values(data);\n        }\n        data.forEach(function (val) {\n            if (key && type(val) === 'object') { val = val[key]; }\n            if (val !== undefined && val !== null && !isNaN(val)) {\n                r.values.push(val);\n                r.sum += val;\n                if (val < r.min) { r.min = val; }\n                if (val > r.max) { r.max = val; }\n                r.count += 1;\n            }\n        });\n\n        r.domain = [r.min, r.max];\n\n        r.limits = function (mode, num) { return limits(r, mode, num); };\n\n        return r;\n    };\n\n\n    var limits = function (data, mode, num) {\n        if ( mode === void 0 ) mode='equal';\n        if ( num === void 0 ) num=7;\n\n        if (type(data) == 'array') {\n            data = analyze(data);\n        }\n        var min = data.min;\n        var max = data.max;\n        var values = data.values.sort(function (a,b) { return a-b; });\n\n        if (num === 1) { return [min,max]; }\n\n        var limits = [];\n\n        if (mode.substr(0,1) === 'c') { // continuous\n            limits.push(min);\n            limits.push(max);\n        }\n\n        if (mode.substr(0,1) === 'e') { // equal interval\n            limits.push(min);\n            for (var i=1; i<num; i++) {\n                limits.push(min+((i/num)*(max-min)));\n            }\n            limits.push(max);\n        }\n\n        else if (mode.substr(0,1) === 'l') { // log scale\n            if (min <= 0) {\n                throw new Error('Logarithmic scales are only possible for values > 0');\n            }\n            var min_log = Math.LOG10E * log(min);\n            var max_log = Math.LOG10E * log(max);\n            limits.push(min);\n            for (var i$1=1; i$1<num; i$1++) {\n                limits.push(pow$1(10, min_log + ((i$1/num) * (max_log - min_log))));\n            }\n            limits.push(max);\n        }\n\n        else if (mode.substr(0,1) === 'q') { // quantile scale\n            limits.push(min);\n            for (var i$2=1; i$2<num; i$2++) {\n                var p = ((values.length-1) * i$2)/num;\n                var pb = floor(p);\n                if (pb === p) {\n                    limits.push(values[pb]);\n                } else { // p > pb\n                    var pr = p - pb;\n                    limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n                }\n            }\n            limits.push(max);\n\n        }\n\n        else if (mode.substr(0,1) === 'k') { // k-means clustering\n            /*\n            implementation based on\n            http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n            simplified for 1-d input values\n            */\n            var cluster;\n            var n = values.length;\n            var assignments = new Array(n);\n            var clusterSizes = new Array(num);\n            var repeat = true;\n            var nb_iters = 0;\n            var centroids = null;\n\n            // get seed values\n            centroids = [];\n            centroids.push(min);\n            for (var i$3=1; i$3<num; i$3++) {\n                centroids.push(min + ((i$3/num) * (max-min)));\n            }\n            centroids.push(max);\n\n            while (repeat) {\n                // assignment step\n                for (var j=0; j<num; j++) {\n                    clusterSizes[j] = 0;\n                }\n                for (var i$4=0; i$4<n; i$4++) {\n                    var value = values[i$4];\n                    var mindist = Number.MAX_VALUE;\n                    var best = (void 0);\n                    for (var j$1=0; j$1<num; j$1++) {\n                        var dist = abs$1(centroids[j$1]-value);\n                        if (dist < mindist) {\n                            mindist = dist;\n                            best = j$1;\n                        }\n                        clusterSizes[best]++;\n                        assignments[i$4] = best;\n                    }\n                }\n\n                // update centroids step\n                var newCentroids = new Array(num);\n                for (var j$2=0; j$2<num; j$2++) {\n                    newCentroids[j$2] = null;\n                }\n                for (var i$5=0; i$5<n; i$5++) {\n                    cluster = assignments[i$5];\n                    if (newCentroids[cluster] === null) {\n                        newCentroids[cluster] = values[i$5];\n                    } else {\n                        newCentroids[cluster] += values[i$5];\n                    }\n                }\n                for (var j$3=0; j$3<num; j$3++) {\n                    newCentroids[j$3] *= 1/clusterSizes[j$3];\n                }\n\n                // check convergence\n                repeat = false;\n                for (var j$4=0; j$4<num; j$4++) {\n                    if (newCentroids[j$4] !== centroids[j$4]) {\n                        repeat = true;\n                        break;\n                    }\n                }\n\n                centroids = newCentroids;\n                nb_iters++;\n\n                if (nb_iters > 200) {\n                    repeat = false;\n                }\n            }\n\n            // finished k-means clustering\n            // the next part is borrowed from gabrielflor.it\n            var kClusters = {};\n            for (var j$5=0; j$5<num; j$5++) {\n                kClusters[j$5] = [];\n            }\n            for (var i$6=0; i$6<n; i$6++) {\n                cluster = assignments[i$6];\n                kClusters[cluster].push(values[i$6]);\n            }\n            var tmpKMeansBreaks = [];\n            for (var j$6=0; j$6<num; j$6++) {\n                tmpKMeansBreaks.push(kClusters[j$6][0]);\n                tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length-1]);\n            }\n            tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a,b){ return a-b; });\n            limits.push(tmpKMeansBreaks[0]);\n            for (var i$7=1; i$7 < tmpKMeansBreaks.length; i$7+= 2) {\n                var v = tmpKMeansBreaks[i$7];\n                if (!isNaN(v) && (limits.indexOf(v) === -1)) {\n                    limits.push(v);\n                }\n            }\n        }\n        return limits;\n    };\n\n    var analyze_1 = {analyze: analyze, limits: limits};\n\n    var Color$3 = Color_1;\n\n\n    var contrast = function (a, b) {\n        // WCAG contrast ratio\n        // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n        a = new Color$3(a);\n        b = new Color$3(b);\n        var l1 = a.luminance();\n        var l2 = b.luminance();\n        return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n    };\n\n    var Color$2 = Color_1;\n    var sqrt = Math.sqrt;\n    var pow = Math.pow;\n    var min = Math.min;\n    var max = Math.max;\n    var atan2 = Math.atan2;\n    var abs = Math.abs;\n    var cos = Math.cos;\n    var sin = Math.sin;\n    var exp = Math.exp;\n    var PI = Math.PI;\n\n    var deltaE = function(a, b, Kl, Kc, Kh) {\n        if ( Kl === void 0 ) Kl=1;\n        if ( Kc === void 0 ) Kc=1;\n        if ( Kh === void 0 ) Kh=1;\n\n        // Delta E (CIE 2000)\n        // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n        var rad2deg = function(rad) {\n            return 360 * rad / (2 * PI);\n        };\n        var deg2rad = function(deg) {\n            return (2 * PI * deg) / 360;\n        };\n        a = new Color$2(a);\n        b = new Color$2(b);\n        var ref = Array.from(a.lab());\n        var L1 = ref[0];\n        var a1 = ref[1];\n        var b1 = ref[2];\n        var ref$1 = Array.from(b.lab());\n        var L2 = ref$1[0];\n        var a2 = ref$1[1];\n        var b2 = ref$1[2];\n        var avgL = (L1 + L2)/2;\n        var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n        var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n        var avgC = (C1 + C2)/2;\n        var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n        var a1p = a1*(1+G);\n        var a2p = a2*(1+G);\n        var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n        var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n        var avgCp = (C1p + C2p)/2;\n        var arctan1 = rad2deg(atan2(b1, a1p));\n        var arctan2 = rad2deg(atan2(b2, a2p));\n        var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n        var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n        var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n        var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n        var deltaHp = h2p - h1p;\n        deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n        deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n        var deltaL = L2 - L1;\n        var deltaCp = C2p - C1p;    \n        var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n        var sc = 1 + 0.045*avgCp;\n        var sh = 1 + 0.015*avgCp*T;\n        var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n        var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n        var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n        var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n        return max(0, min(100, result));\n    };\n\n    var Color$1 = Color_1;\n\n    // simple Euclidean distance\n    var distance = function(a, b, mode) {\n        if ( mode === void 0 ) mode='lab';\n\n        // Delta E (CIE 1976)\n        // see http://www.brucelindbloom.com/index.html?Equations.html\n        a = new Color$1(a);\n        b = new Color$1(b);\n        var l1 = a.get(mode);\n        var l2 = b.get(mode);\n        var sum_sq = 0;\n        for (var i in l1) {\n            var d = (l1[i] || 0) - (l2[i] || 0);\n            sum_sq += d*d;\n        }\n        return Math.sqrt(sum_sq);\n    };\n\n    var Color = Color_1;\n\n    var valid = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        try {\n            new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n            return true;\n        } catch (e) {\n            return false;\n        }\n    };\n\n    // some pre-defined color scales:\n    var chroma$1 = chroma_1;\n\n    var scale = scale$2;\n\n    var scales = {\n    \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n    \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n    };\n\n    /**\n        ColorBrewer colors for chroma.js\n\n        Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n        Pennsylvania State University.\n\n        Licensed under the Apache License, Version 2.0 (the \"License\");\n        you may not use this file except in compliance with the License.\n        You may obtain a copy of the License at\n        http://www.apache.org/licenses/LICENSE-2.0\n\n        Unless required by applicable law or agreed to in writing, software distributed\n        under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n        CONDITIONS OF ANY KIND, either express or implied. See the License for the\n        specific language governing permissions and limitations under the License.\n    */\n\n    var colorbrewer = {\n        // sequential\n        OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n        PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n        BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n        Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n        BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n        YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n        YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n        Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n        RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n        Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n        YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n        Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n        GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n        Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n        YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n        PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n        Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n        PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n        Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n        // diverging\n\n        Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n        RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n        RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n        PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n        PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n        RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n        BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n        RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n        PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n        // qualitative\n\n        Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n        Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n        Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n        Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n        Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n        Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n        Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n        Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n    };\n\n    // add lowercase aliases for case-insensitive matches\n    for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n        var key = list[i];\n\n        colorbrewer[key.toLowerCase()] = colorbrewer[key];\n    }\n\n    var colorbrewer_1 = colorbrewer;\n\n    var chroma = chroma_1;\n\n    // feel free to comment out anything to rollup\n    // a smaller chroma.js built\n\n    // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n    // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n    // generators -- > create new colors\n    chroma.average = average;\n    chroma.bezier = bezier_1;\n    chroma.blend = blend_1;\n    chroma.cubehelix = cubehelix;\n    chroma.mix = chroma.interpolate = mix$1;\n    chroma.random = random_1;\n    chroma.scale = scale$2;\n\n    // other utility methods\n    chroma.analyze = analyze_1.analyze;\n    chroma.contrast = contrast;\n    chroma.deltaE = deltaE;\n    chroma.distance = distance;\n    chroma.limits = analyze_1.limits;\n    chroma.valid = valid;\n\n    // scale\n    chroma.scales = scales;\n\n    // colors\n    chroma.colors = w3cx11_1;\n    chroma.brewer = colorbrewer_1;\n\n    var chroma_js = chroma;\n\n    return chroma_js;\n\n}));\n","import chroma from 'chroma-js';\nimport { xMinMaxValues, xyFilterX } from 'ml-spectra-processing';\n\n/**\n * Retrieve a chart with autocorrelation color\n * @param {SpectraProcessor} [spectraProcessor]\n * @param {number} [index]\n * @param {object} [options={}]\n * @param {Array} [options.autocorrelation] precalculated autocorrelation {x,y}\n * @param {Array} [options.maxDataPoints=]\n * @param {Array} [options.ids] ids of the spectra to select, by default all\n * @param {object} [options.xFilter={}]\n * @param {number} [options.xFilter.from]\n * @param {number} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n */\nexport function getAutocorrelationChart(spectraProcessor, index, options = {}) {\n  const {\n    autocorrelation = spectraProcessor.getAutocorrelation(index, options),\n    xFilter,\n    ids,\n  } = options;\n\n  const { min, max } = xMinMaxValues(autocorrelation.y);\n  let colorCallback = chroma\n    .scale(['blue', 'cyan', 'yellow', 'red'])\n    .domain([min, max])\n    .mode('lch');\n\n  let colorScale = autocorrelation.y.map(\n    (y) => `rgb(${colorCallback(y).rgb().join()})`,\n  );\n\n  let mean = spectraProcessor.getMeanData({ ids });\n  if (xFilter) {\n    mean = xyFilterX({ x: mean.x, y: mean.y }, xFilter);\n  }\n\n  let colorSpectrum = {\n    type: 'color',\n    x: mean.x,\n    y: mean.y,\n    color: colorScale,\n    styles: {\n      unselected: {\n        lineWidth: 1,\n        lineStyle: 1,\n      },\n      selected: {\n        lineWidth: 3,\n        lineStyle: 1,\n      },\n    },\n  };\n\n  return colorSpectrum;\n}\n","import { xBoxPlot } from 'ml-spectra-processing';\n\n/**\n * @private\n * @param {object} normalizedData\n * @returns {x:[],q1:[],q3:[],media:[],min:[],max:[]}\n */\n\nexport function getBoxPlotData(normalizedData) {\n  const { x, matrix } = normalizedData;\n  let nbRow = matrix.length;\n  let nbColumn = matrix[0].length;\n  let result;\n  let aColumn = new Float64Array(nbRow);\n  for (let column = 0; column < nbColumn; column++) {\n    for (let row = 0; row < nbRow; row++) {\n      aColumn[row] = matrix[row][column];\n    }\n    let info = xBoxPlot(aColumn);\n    if (!result) {\n      result = { x };\n      for (let key in info) {\n        result[key] = [];\n      }\n    }\n    for (let key in info) {\n      result[key].push(info[key]);\n    }\n  }\n  return result;\n}\n","import chroma from 'chroma-js';\nimport { Matrix } from 'ml-matrix';\nimport { xMinMaxValues } from 'ml-spectra-processing';\n\nimport { getBoxPlotData } from '../spectra/getBoxPlotData';\n\nexport function getBoxPlotChart(normalizedData, options = {}) {\n  const {\n    q13FillColor = '#000',\n    q13FillOpacity = 0.3,\n    medianStrokeColor = '',\n    medianStrokeWidth = 3,\n    minMaxFillColor = '#000',\n    minMaxFillOpacity = 0.15,\n  } = options;\n  let annotations = [];\n\n  const boxPlotData = getBoxPlotData(normalizedData);\n\n  if (q13FillOpacity && q13FillColor) {\n    let q13 = [];\n    for (let i = 0; i < boxPlotData.x.length; i++) {\n      q13.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.q1[i],\n      });\n    }\n    for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n      q13.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.q3[i],\n      });\n    }\n    annotations.push({\n      type: 'polygon',\n      layer: 0,\n      properties: {\n        fillColor: q13FillColor,\n        fillOpacity: q13FillOpacity,\n        strokeWidth: 0.0000001,\n        position: q13,\n      },\n    });\n  }\n\n  if (minMaxFillColor && minMaxFillOpacity) {\n    let minMax = [];\n    for (let i = 0; i < boxPlotData.x.length; i++) {\n      minMax.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.min[i],\n      });\n    }\n    for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n      minMax.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.max[i],\n      });\n    }\n\n    annotations.push({\n      type: 'polygon',\n      layer: 0,\n      properties: {\n        fillColor: minMaxFillColor,\n        fillOpacity: minMaxFillOpacity,\n        strokeWidth: 0.0000001,\n        strokeColor: '#FFF',\n        position: minMax,\n      },\n    });\n  }\n\n  let colorSpectrum = {\n    type: 'color',\n    data: {\n      x: boxPlotData.x,\n      y: boxPlotData.median,\n      color: medianStrokeColor\n        ? new Array(boxPlotData.x.length).fill(medianStrokeColor)\n        : getColors(normalizedData.matrix),\n    },\n    styles: {\n      unselected: {\n        lineWidth: medianStrokeWidth,\n        lineStyle: 1,\n      },\n      selected: {\n        lineWidth: medianStrokeWidth,\n        lineStyle: 1,\n      },\n    },\n    annotations,\n  };\n\n  return colorSpectrum;\n}\n\nfunction getColors(dataset) {\n  const matrix = new Matrix(dataset);\n  const stdevs = matrix.standardDeviation('column');\n  const { min, max } = xMinMaxValues(stdevs);\n  const colorCallback = chroma\n    .scale(['blue', 'cyan', 'yellow', 'red'])\n    .domain([min, max])\n    .mode('lch');\n\n  const colors = stdevs.map((y) => `rgb(${colorCallback(y).rgb().join()})`);\n  return colors;\n}\n","export function addChartDataStyle(data, spectrum) {\n  data.styles = {\n    unselected: {\n      lineColor: spectrum.meta.color || 'darkgrey',\n      lineWidth: 1,\n      lineStyle: 1,\n    },\n    selected: {\n      lineColor: spectrum.meta.color || 'darkgrey',\n      lineWidth: 3,\n      lineStyle: 1,\n    },\n  };\n  data.label = spectrum.meta.id || spectrum.id;\n}\n","import { addChartDataStyle } from './addChartDataStyle';\n/**\n * Retrieve a chart with selected original data\n * @param {object} [options={}]\n * @param {Array} [options.ids] List of spectra ids, by default all\n * @param {Array} [options.yFactor=1]\n */\nexport function getChart(spectra, options = {}) {\n  const { ids, yFactor, xFilter = {} } = options;\n  let chart = {\n    data: [],\n  };\n\n  for (let spectrum of spectra) {\n    if (!ids || ids.includes(spectrum.id)) {\n      let data = spectrum.getData({ yFactor, xFilter });\n      addChartDataStyle(data, spectrum);\n      chart.data.push(data);\n    }\n  }\n  return chart;\n}\n","export function getNormalizationAnnotations(filter = {}) {\n  let { exclusions = [] } = filter;\n  let annotations = [];\n  exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n  annotations = exclusions.map((exclusion) => {\n    let annotation = {\n      type: 'rect',\n      position: [\n        { x: exclusion.from, y: '0px' },\n        { x: exclusion.to, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    };\n    return annotation;\n  });\n  if (filter.from !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: Number.MIN_SAFE_INTEGER, y: '0px' },\n        { x: filter.from, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  if (filter.to !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: filter.to, y: '0px' },\n        { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  return annotations;\n}\n","import { xyFilterX } from 'ml-spectra-processing';\n\nimport { addChartDataStyle } from './addChartDataStyle';\n\n/**\n * @param {Array<Spectrum>} spectra\n * @param {object} [options={}]\n * @param {object} [options.xFilter={}]\n * @param {number} [options.xFilter.from]\n * @param {number} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n */\n\nexport function getNormalizedChart(spectra, options = {}) {\n  const { xFilter } = options;\n  let chart = {\n    data: [],\n  };\n  for (let spectrum of spectra) {\n    let data = spectrum.normalized;\n    if (xFilter) {\n      data = xyFilterX(data, xFilter);\n    }\n    addChartDataStyle(data, spectrum);\n    chart.data.push(data);\n  }\n  return chart;\n}\n","import { addChartDataStyle } from './addChartDataStyle';\n/**\n *\n * @param {SpectraProcessor} spectraProcessor\n * @param {object}   [options={}] scale spectra based on various parameters\n * @param {Array}    [options.ids] ids of selected spectra\n * @param {Array}    [options.filters=[]] Array of object containing {name:'', options:''}\n * @param {object}   [options.scale={}] object containing the options for rescaling\n * @param {string}   [options.scale.targetID=spectra[0].id]\n * @param {string}   [options.scale.method='max'] min, max, integration, minMax\n * @param {Array}    [options.scale.range] from - to to apply the method and rescale\n * @param {boolean}  [options.scale.relative=false]\n */\nexport function getPostProcessedChart(spectraProcessor, options = {}) {\n  let scaled = spectraProcessor.getPostProcessedData(options);\n\n  let chart = {\n    data: [],\n  };\n  if (!scaled || !scaled.matrix) return chart;\n\n  for (let i = 0; i < scaled.matrix.length; i++) {\n    let data = {\n      x: scaled.x,\n      y: Array.from(scaled.matrix[i]), // need to ensure not a typed array\n    };\n    addChartDataStyle(data, { meta: scaled.meta[i], id: scaled.ids[i] });\n    chart.data.push(data);\n  }\n\n  return chart;\n}\n","/**\n * @private\n * @param {*} spectra\n * @param {object} [options={}]\n * @param {Array} [options.ids] ids of selected spectra\n */\n\nexport function getNormalizedData(spectra, options = {}) {\n  const { ids } = options;\n\n  let matrix = [];\n  let meta = [];\n  let currentIDs = [];\n  let x = [];\n\n  if (Array.isArray(spectra) && spectra.length > 0) {\n    for (let spectrum of spectra) {\n      if (!ids || ids.includes(spectrum.id)) {\n        currentIDs.push(spectrum.id);\n        matrix.push(spectrum.normalized.y);\n        meta.push(spectrum.meta);\n      }\n    }\n    x = spectra[0].normalized.x;\n  }\n\n  return { ids: currentIDs, matrix, meta, x };\n}\n","import { getNormalizedData } from '../spectra/getNormalizedData';\n\nexport function getTrackAnnotation(spectra, index, options = {}) {\n  const { ids, showSpectrumID = true, sortY = true, limit = 20 } = options;\n  let annotations = [];\n\n  let normalized = getNormalizedData(spectra, { ids });\n\n  if (normalized.ids.length === 0) return annotations;\n  let line = 0;\n\n  // header containing X coordinate\n  annotations.push({\n    type: 'line',\n    position: [\n      { x: `${70}px`, y: `${15 + 15 * line}px` },\n      { x: `${85}px`, y: `${15 + 15 * line}px` },\n    ],\n    strokeWidth: 0.0000001,\n    label: {\n      size: 16,\n      text: `x: ${normalized.x[index].toPrecision(6)}`,\n      position: { x: `${130}px`, y: `${20 + 15 * line}px` },\n    },\n  });\n  line++;\n\n  let peaks = [];\n  for (let i = 0; i < normalized.ids.length; i++) {\n    peaks.push({\n      id: normalized.ids[i],\n      meta: normalized.meta[i],\n      y: normalized.matrix[i][index],\n    });\n  }\n\n  if (sortY) {\n    peaks = peaks.sort((a, b) => b.y - a.y);\n  }\n  if (limit) {\n    peaks = peaks.slice(0, limit);\n  }\n\n  for (let { id, meta, y } of peaks) {\n    annotations.push({\n      type: 'line',\n      position: [\n        { x: `${70}px`, y: `${15 + 15 * line}px` },\n        { x: `${85}px`, y: `${15 + 15 * line}px` },\n      ],\n      strokeColor: meta.color,\n      strokeWidth: 2,\n      label: {\n        text: `${y.toPrecision(4)}${showSpectrumID ? ` - ${id}` : ''}`,\n        position: { x: `${90}px`, y: `${20 + 15 * line}px` },\n      },\n    });\n    line++;\n  }\n\n  return annotations;\n}\n","/**\n * @private\n * @param {Array<object>} [metadata]\n * @param {object} [options={}] scale spectra based on various parameters\n * @param {string} [options.propertyName=\"category\"]\n */\n\nexport function getCategoriesStats(metadata, options = {}) {\n  const { propertyName = 'category' } = options;\n  let categories = {};\n  let classNumber = 0;\n  for (let metadatum of metadata) {\n    let value = metadatum[propertyName];\n    if (!categories[value]) {\n      categories[value] = {\n        classNumber: classNumber++,\n        counter: 0,\n      };\n    }\n    categories[value].counter++;\n  }\n  return categories;\n}\n","/**\n * @private\n * @param {Array<object>} [metadata]\n * @param {object} [options={}] scale spectra based on various parameters\n * @param {string} [options.propertyName=\"category\"]\n */\n\nexport function getClassLabels(metadata, options = {}) {\n  const { propertyName = 'category' } = options;\n  const categories = [];\n  for (const metadatum of metadata) {\n    categories.push(metadatum[propertyName]);\n  }\n  return categories;\n}\n","import { getCategoriesStats } from './getCategoriesStats';\n\n/**\n * @private\n * @param {Array<object>} [metadata]\n * @param {object} [options={}] scale spectra based on various parameters\n * @param {string} [options.propertyName=\"category\"]\n */\n\nexport function getClasses(metadata, options = {}) {\n  const { propertyName = 'category' } = options;\n  const categoriesStats = getCategoriesStats(metadata, options);\n  const result = new Array(metadata.length);\n  for (let i = 0; i < metadata.length; i++) {\n    result[i] = categoriesStats[metadata[i][propertyName]].classNumber;\n  }\n  return result;\n}\n","/**\n * @private\n * @param {*} spectra\n * @param {object} options\n */\n\nexport function getMetadata(spectra, options = {}) {\n  const { ids } = options;\n\n  let metadata = [];\n\n  if (Array.isArray(spectra) && spectra.length > 0) {\n    for (let spectrum of spectra) {\n      if (!ids || ids.includes(spectrum.id)) {\n        metadata.push(spectrum.meta);\n      }\n    }\n  }\n\n  return metadata;\n}\n","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\nexport function complexChromatogram(result) {\n    let spectra = result.spectra;\n    let length = spectra.length;\n    let chromatogram = {\n        times: new Array(length),\n        series: {\n            ms: {\n                dimension: 2,\n                data: new Array(length),\n            },\n        },\n    };\n    let existingGCMSFields = [];\n    for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n        let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n        if (spectra[0][label]) {\n            existingGCMSFields.push(label);\n            chromatogram.series[label] = {\n                dimension: 1,\n                data: new Array(length),\n            };\n        }\n    }\n    for (let i = 0; i < length; i++) {\n        let spectrum = spectra[i];\n        chromatogram.times[i] = spectrum.pageValue;\n        for (let j = 0; j < existingGCMSFields.length; j++) {\n            chromatogram.series[existingGCMSFields[j]].data[i] = Number(spectrum[existingGCMSFields[j]]);\n        }\n        if (spectrum.data) {\n            chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n        }\n    }\n    result.chromatogram = chromatogram;\n}\nexport function isMSField(canonicDataLabel) {\n    return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\nexport function convertMSFieldToLabel(value) {\n    return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n//# sourceMappingURL=complexChromatogram.js.map","export default function convertToFloatArray(stringArray) {\n    let floatArray = [];\n    for (let i = 0; i < stringArray.length; i++) {\n        floatArray.push(Number(stringArray[i]));\n    }\n    return floatArray;\n}\n//# sourceMappingURL=convertToFloatArray.js.map","export default function fastParseXYData(spectrum, value) {\n    // TODO need to deal with result\n    //  console.log(value);\n    // we check if deltaX is defined otherwise we calculate it\n    let yFactor = spectrum.yFactor;\n    let deltaX = spectrum.deltaX;\n    spectrum.isXYdata = true;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let currentX = spectrum.firstX;\n    let currentY = spectrum.firstY;\n    // we skip the first line\n    //\n    let endLine = false;\n    let ascii;\n    let i = 0;\n    for (; i < value.length; i++) {\n        ascii = value.charCodeAt(i);\n        if (ascii === 13 || ascii === 10) {\n            endLine = true;\n        }\n        else {\n            if (endLine)\n                break;\n        }\n    }\n    // we proceed taking the i after the first line\n    let newLine = true;\n    let isDifference = false;\n    let isLastDifference = false;\n    let lastDifference = 0;\n    let isDuplicate = false;\n    let inComment = false;\n    let currentValue = 0; // can be a difference or a duplicate\n    let lastValue = 0; // must be the real last value\n    let isNegative = false;\n    let inValue = false;\n    let skipFirstValue = false;\n    let decimalPosition = 0;\n    for (; i <= value.length; i++) {\n        if (i === value.length)\n            ascii = 13;\n        else\n            ascii = value.charCodeAt(i);\n        if (inComment) {\n            // we should ignore the text if we are after $$\n            if (ascii === 13 || ascii === 10) {\n                newLine = true;\n                inComment = false;\n            }\n        }\n        else {\n            // when is it a new value ?\n            // when it is not a digit, . or comma\n            // it is a number that is either new or we continue\n            if (ascii <= 57 && ascii >= 48) {\n                // a number\n                inValue = true;\n                if (decimalPosition > 0) {\n                    currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n                }\n                else {\n                    currentValue *= 10;\n                    currentValue += ascii - 48;\n                }\n            }\n            else if (ascii === 44 || ascii === 46) {\n                // a \",\" or \".\"\n                inValue = true;\n                decimalPosition++;\n            }\n            else {\n                if (inValue) {\n                    // need to process the previous value\n                    if (newLine) {\n                        newLine = false; // we don't check the X value\n                        // console.log(\"NEW LINE\",isDifference, lastDifference);\n                        // if new line and lastDifference, the first value is just a check !\n                        // that we don't check ...\n                        if (isLastDifference)\n                            skipFirstValue = true;\n                    }\n                    else {\n                        // need to deal with duplicate and differences\n                        if (skipFirstValue) {\n                            skipFirstValue = false;\n                        }\n                        else {\n                            if (isDifference) {\n                                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                                isLastDifference = true;\n                                isDifference = false;\n                            }\n                            else if (!isDuplicate) {\n                                lastValue = isNegative ? 0 - currentValue : currentValue;\n                            }\n                            let duplicate = isDuplicate ? currentValue - 1 : 1;\n                            for (let j = 0; j < duplicate; j++) {\n                                if (isLastDifference) {\n                                    currentY += lastDifference;\n                                }\n                                else {\n                                    currentY = lastValue;\n                                }\n                                currentData.x.push(currentX);\n                                currentData.y.push(currentY * yFactor);\n                                currentX += deltaX;\n                            }\n                        }\n                    }\n                    isNegative = false;\n                    currentValue = 0;\n                    decimalPosition = 0;\n                    inValue = false;\n                    isDuplicate = false;\n                }\n                // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n                if (ascii < 74 && ascii > 63) {\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 64;\n                }\n                else if (ascii > 96 && ascii < 106) {\n                    // negative SQZ digits a b c d e f g h i (ascii 97-105)\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 96;\n                    isNegative = true;\n                }\n                else if (ascii === 115) {\n                    // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = 9;\n                }\n                else if (ascii > 82 && ascii < 91) {\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = ascii - 82;\n                }\n                else if (ascii > 73 && ascii < 83) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 73;\n                }\n                else if (ascii > 105 && ascii < 115) {\n                    // negative DIF digits j k l m n o p q r (ascii 106-114)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 105;\n                    isNegative = true;\n                }\n                else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n                    // $ sign, we need to check the next one\n                    inValue = true;\n                    inComment = true;\n                }\n                else if (ascii === 37) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = 0;\n                    isNegative = false;\n                }\n                else if (ascii === 45) {\n                    // a \"-\"\n                    // check if after there is a number, decimal or comma\n                    let ascii2 = value.charCodeAt(i + 1);\n                    if ((ascii2 >= 48 && ascii2 <= 57) ||\n                        ascii2 === 44 ||\n                        ascii2 === 46) {\n                        inValue = true;\n                        if (!newLine)\n                            isLastDifference = false;\n                        isNegative = true;\n                    }\n                }\n                else if (ascii === 13 || ascii === 10) {\n                    newLine = true;\n                    inComment = false;\n                }\n                // and now analyse the details ... space or tabulation\n                // if \"+\" we just don't care\n            }\n        }\n    }\n}\n//# sourceMappingURL=fastParseXYData.js.map","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\nexport default function parsePeakTable(spectrum, value, result) {\n    spectrum.isPeaktable = true;\n    if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n        parseXY(spectrum, value, result);\n    }\n    else {\n        parseXYZ(spectrum, value, result);\n    }\n    // we will add the data in the variables\n    if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n            spectrum.variables[key].data = spectrum.data[key];\n        }\n    }\n}\nfunction parseXY(spectrum, value, result) {\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % 2 === 0) {\n            for (let j = 0; j < values.length; j = j + 2) {\n                // takes around 40% of the time to add and parse the 2 values nearly exclusively because of Number\n                currentData.x.push(Number(values[j]) * spectrum.xFactor);\n                currentData.y.push(Number(values[j + 1]) * spectrum.yFactor);\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\nfunction parseXYZ(spectrum, value, result) {\n    let currentData = {};\n    let variables = Object.keys(spectrum.variables);\n    let numberOfVariables = variables.length;\n    variables.forEach((variable) => (currentData[variable] = []));\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % numberOfVariables === 0) {\n            for (let j = 0; j < values.length; j++) {\n                // todo should try to find a xFactor (y, ...)\n                currentData[variables[j % numberOfVariables]].push(Number(values[j]));\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\n//# sourceMappingURL=parsePeakTable.js.map","export default function parseXYA(spectrum, value) {\n    let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n    spectrum.isXYAdata = true;\n    let values;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n        currentData.x.push(Number(values[0]));\n        currentData.y.push(Number(values[1]));\n    }\n}\n//# sourceMappingURL=parseXYA.js.map","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import getMedian from 'ml-array-median';\nexport default function convertTo3DZ(spectra) {\n    let minZ = spectra[0].data.y[0];\n    let maxZ = minZ;\n    let ySize = spectra.length;\n    let xSize = spectra[0].data.x.length;\n    let z = new Array(ySize);\n    for (let i = 0; i < ySize; i++) {\n        z[i] = spectra[i].data.y;\n        for (let j = 0; j < xSize; j++) {\n            let value = z[i][j];\n            if (value < minZ)\n                minZ = value;\n            if (value > maxZ)\n                maxZ = value;\n        }\n    }\n    const firstX = spectra[0].data.x[0];\n    const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n    const firstY = spectra[0].pageValue;\n    const lastY = spectra[ySize - 1].pageValue;\n    // Because the min / max value are the only information about the matrix if we invert\n    // min and max we need to invert the array\n    if (firstX > lastX) {\n        for (let spectrum of z) {\n            spectrum.reverse();\n        }\n    }\n    if (firstY > lastY) {\n        z.reverse();\n    }\n    const medians = [];\n    for (let i = 0; i < z.length; i++) {\n        const row = Float64Array.from(z[i]);\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] < 0)\n                row[i] = -row[i];\n        }\n        medians.push(getMedian(row));\n    }\n    const median = getMedian(medians);\n    return {\n        z: z,\n        minX: Math.min(firstX, lastX),\n        maxX: Math.max(firstX, lastX),\n        minY: Math.min(firstY, lastY),\n        maxY: Math.max(firstY, lastY),\n        minZ: minZ,\n        maxZ: maxZ,\n        noise: median,\n    };\n}\n//# sourceMappingURL=convertTo3DZ.js.map","export default function generateContourLines(zData, options) {\n    let noise = zData.noise;\n    let z = zData.z;\n    let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n    let isOver0, isOver1, isOver2, isOver3;\n    let nbSubSpectra = z.length;\n    let nbPovars = z[0].length;\n    let pAx, pAy, pBx, pBy;\n    let x0 = zData.minX;\n    let xN = zData.maxX;\n    let dx = (xN - x0) / (nbPovars - 1);\n    let y0 = zData.minY;\n    let yN = zData.maxY;\n    let dy = (yN - y0) / (nbSubSpectra - 1);\n    let minZ = zData.minZ;\n    let maxZ = zData.maxZ;\n    // System.out.prvarln('y0 '+y0+' yN '+yN);\n    // -------------------------\n    // Povars attribution\n    //\n    // 0----1\n    // |  / |\n    // | /  |\n    // 2----3\n    //\n    // ---------------------d------\n    let iter = options.nbContourLevels * 2;\n    let contourLevels = new Array(iter);\n    let lineZValue;\n    for (let level = 0; level < iter; level++) {\n        // multiply by 2 for positif and negatif\n        let contourLevel = {};\n        contourLevels[level] = contourLevel;\n        let side = level % 2;\n        let factor = (maxZ - options.noiseMultiplier * noise) *\n            Math.exp((level >> 1) - options.nbContourLevels);\n        if (side === 0) {\n            lineZValue = factor + options.noiseMultiplier * noise;\n        }\n        else {\n            lineZValue = 0 - factor - options.noiseMultiplier * noise;\n        }\n        let lines = [];\n        contourLevel.zValue = lineZValue;\n        contourLevel.lines = lines;\n        if (lineZValue <= minZ || lineZValue >= maxZ)\n            continue;\n        for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n            let subSpectra = z[iSubSpectra];\n            let subSpectraAfter = z[iSubSpectra + 1];\n            for (let povar = 0; povar < nbPovars - 1; povar++) {\n                povarHeight0 = subSpectra[povar];\n                povarHeight1 = subSpectra[povar + 1];\n                povarHeight2 = subSpectraAfter[povar];\n                povarHeight3 = subSpectraAfter[povar + 1];\n                isOver0 = povarHeight0 > lineZValue;\n                isOver1 = povarHeight1 > lineZValue;\n                isOver2 = povarHeight2 > lineZValue;\n                isOver3 = povarHeight3 > lineZValue;\n                // Example povar0 is over the plane and povar1 and\n                // povar2 are below, we find the varersections and add\n                // the segment\n                if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n                    pAx =\n                        povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n                    pAy = iSubSpectra;\n                    pBx = povar;\n                    pBy =\n                        iSubSpectra +\n                            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // remove push does not help !!!!\n                if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n                    pAx = povar + 1;\n                    pAy =\n                        iSubSpectra +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n                    pBx =\n                        povar +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n                    pBy = iSubSpectra + 1;\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // test around the diagonal\n                if (isOver1 !== isOver2) {\n                    pAx =\n                        (povar +\n                            1 -\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dx +\n                            x0;\n                    pAy =\n                        (iSubSpectra +\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dy +\n                            y0;\n                    if (isOver1 !== isOver0) {\n                        pBx =\n                            povar +\n                                1 -\n                                (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n                        pBy = iSubSpectra;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver0) {\n                        pBx = povar;\n                        pBy =\n                            iSubSpectra +\n                                1 -\n                                (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver1 !== isOver3) {\n                        pBx = povar + 1;\n                        pBy =\n                            iSubSpectra +\n                                (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver3) {\n                        pBx =\n                            povar +\n                                (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n                        pBy = iSubSpectra + 1;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                }\n            }\n        }\n    }\n    return {\n        minX: zData.minX,\n        maxX: zData.maxX,\n        minY: zData.minY,\n        maxY: zData.maxY,\n        segments: contourLevels,\n    };\n}\n//# sourceMappingURL=generateContourLines.js.map","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\nexport default function add2D(result, options) {\n    let zData = convertTo3DZ(result.spectra);\n    if (!options.noContour) {\n        result.contourLines = generateContourLines(zData, options);\n        delete zData.z;\n    }\n    result.minMax = zData;\n}\n//# sourceMappingURL=add2D.js.map","export const gyromagneticRatio = {\n    '1H': 267.52218744e6,\n    '2H': 41.065e6,\n    '3H': 285.3508e6,\n    '3He': -203.789e6,\n    '7Li': 103.962e6,\n    '13C': 67.28284e6,\n    '14N': 19.331e6,\n    '15N': -27.116e6,\n    '17O': -36.264e6,\n    '19F': 251.662e6,\n    '23Na': 70.761e6,\n    '27Al': 69.763e6,\n    '29Si': -53.19e6,\n    '31P': 108.291e6,\n    '57Fe': 8.681e6,\n    '63Cu': 71.118e6,\n    '67Zn': 16.767e6,\n    '129Xe': -73.997e6,\n};\n//# sourceMappingURL=index.js.map","import { gyromagneticRatio } from 'gyromagnetic-ratio';\nexport default function postProcessingNMR(entriesFlat) {\n    // specific NMR functions\n    for (let entry of entriesFlat) {\n        let observeFrequency = 0;\n        let shiftOffsetVal = 0;\n        for (let spectrum of entry.spectra) {\n            if (entry.ntuples && entry.ntuples.symbol) {\n                if (!observeFrequency && spectrum.observeFrequency) {\n                    observeFrequency = spectrum.observeFrequency;\n                }\n                if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n                    shiftOffsetVal = spectrum.shiftOffsetVal;\n                }\n            }\n            else {\n                observeFrequency = spectrum.observeFrequency;\n                shiftOffsetVal = spectrum.shiftOffsetVal;\n            }\n            if (observeFrequency) {\n                if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n                    spectrum.xUnits = 'PPM';\n                    spectrum.xFactor = spectrum.xFactor / observeFrequency;\n                    spectrum.firstX = spectrum.firstX / observeFrequency;\n                    spectrum.lastX = spectrum.lastX / observeFrequency;\n                    spectrum.deltaX = spectrum.deltaX / observeFrequency;\n                    for (let i = 0; i < spectrum.data.x.length; i++) {\n                        spectrum.data.x[i] /= observeFrequency;\n                    }\n                }\n            }\n            if (shiftOffsetVal) {\n                let shift = spectrum.firstX - shiftOffsetVal;\n                spectrum.firstX = spectrum.firstX - shift;\n                spectrum.lastX = spectrum.lastX - shift;\n                for (let i = 0; i < spectrum.data.x.length; i++) {\n                    spectrum.data.x[i] -= shift;\n                }\n            }\n            // we will check if some nucleus are missing ...\n            if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n                for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n                    let symbol = entry.ntuples.symbol[i];\n                    let nucleus = entry.ntuples.nucleus[i];\n                    if (symbol.startsWith('F') && !nucleus) {\n                        if (symbol === 'F1') {\n                            // if F1 is defined we will use F2\n                            if (entry.tmp.$NUC2) {\n                                entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n                            }\n                            else {\n                                let f2index = entry.ntuples.symbol.indexOf('F2');\n                                if (f2index && entry.ntuples.nucleus[f2index]) {\n                                    entry.ntuples.nucleus[i] = entry.ntuples.nucleus[f2index];\n                                }\n                            }\n                        }\n                        if (symbol === 'F2')\n                            entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n                    }\n                    if (symbol === 'F2') {\n                        entry.yType = entry.ntuples.nucleus[0];\n                    }\n                }\n            }\n            if (observeFrequency &&\n                entry.ntuples &&\n                entry.ntuples.symbol &&\n                entry.ntuples.nucleus) {\n                let unit = '';\n                let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n                if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n                    unit = entry.ntuples.units[pageSymbolIndex];\n                }\n                if (unit !== 'PPM') {\n                    if (pageSymbolIndex !== 0) {\n                        throw Error('Not sure about this ntuples format');\n                    }\n                    let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n                    let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n                    if (!ratio0 || !ratio1) {\n                        throw Error('Problem with determination of gyromagnetic ratio');\n                    }\n                    let ratio = (ratio0 / ratio1) * observeFrequency;\n                    spectrum.pageValue /= ratio;\n                }\n            }\n        }\n    }\n}\n//# sourceMappingURL=postProcessingNMR.js.map","export default function profiling(result, action, options) {\n    if (result.profiling) {\n        result.profiling.push({\n            action,\n            time: Date.now() - options.start,\n        });\n    }\n}\n//# sourceMappingURL=profiling.js.map","export default function simpleChromatogram(result) {\n    let data = result.spectra[0].data;\n    result.chromatogram = {\n        times: data.x.slice(),\n        series: {\n            intensity: {\n                dimension: 1,\n                data: data.y.slice(),\n            },\n        },\n    };\n}\n//# sourceMappingURL=simpleChromatogram.js.map","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\nexport default function postProcessing(entriesFlat, result, options) {\n    // converting Hz to ppm\n    postProcessingNMR(entriesFlat);\n    for (let entry of entriesFlat) {\n        if (Object.keys(entry.ntuples).length > 0) {\n            let newNtuples = [];\n            let keys = Object.keys(entry.ntuples);\n            for (let i = 0; i < keys.length; i++) {\n                let key = keys[i];\n                let values = entry.ntuples[key];\n                for (let j = 0; j < values.length; j++) {\n                    if (!newNtuples[j])\n                        newNtuples[j] = {};\n                    newNtuples[j][key] = values[j];\n                }\n            }\n            entry.ntuples = newNtuples;\n        }\n        if (entry.twoD && options.wantXY) {\n            add2D(entry, options);\n            profiling(result, 'Finished countour plot calculation', options);\n            if (!options.keepSpectra) {\n                delete entry.spectra;\n            }\n        }\n        // maybe it is a GC (HPLC) / MS. In this case we add a new format\n        if (options.chromatogram) {\n            if (entry.spectra.length > 1) {\n                complexChromatogram(entry);\n            }\n            else {\n                simpleChromatogram(entry);\n            }\n            profiling(result, 'Finished chromatogram calculation', options);\n        }\n        delete entry.tmp;\n    }\n}\n//# sourceMappingURL=postProcessing.js.map","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n    let xIndex = -1;\n    let yIndex = -1;\n    let firstVariable = '';\n    let secondVariable = '';\n    if (kind.indexOf('++') > 0) {\n        firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n        secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n    }\n    else {\n        kind = kind.replace(/[^a-zA-Z]/g, '');\n        firstVariable = kind.charAt(0);\n        secondVariable = kind.charAt(1);\n        spectrum.variables = {};\n        for (let symbol of kind) {\n            let lowerCaseSymbol = symbol.toLowerCase();\n            let index = currentEntry.ntuples.symbol.indexOf(symbol);\n            if (index === -1)\n                throw Error(`Symbol undefined: ${symbol}`);\n            spectrum.variables[lowerCaseSymbol] = {};\n            for (let key in currentEntry.ntuples) {\n                if (currentEntry.ntuples[key][index]) {\n                    spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n                        currentEntry.ntuples[key][index];\n                }\n            }\n        }\n    }\n    xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n    yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n    if (xIndex === -1)\n        xIndex = 0;\n    if (yIndex === -1)\n        yIndex = 0;\n    if (currentEntry.ntuples.first) {\n        if (currentEntry.ntuples.first.length > xIndex) {\n            spectrum.firstX = currentEntry.ntuples.first[xIndex];\n        }\n        if (currentEntry.ntuples.first.length > yIndex) {\n            spectrum.firstY = currentEntry.ntuples.first[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.last) {\n        if (currentEntry.ntuples.last.length > xIndex) {\n            spectrum.lastX = currentEntry.ntuples.last[xIndex];\n        }\n        if (currentEntry.ntuples.last.length > yIndex) {\n            spectrum.lastY = currentEntry.ntuples.last[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.vardim &&\n        currentEntry.ntuples.vardim.length > xIndex) {\n        spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n    }\n    if (currentEntry.ntuples.factor) {\n        if (currentEntry.ntuples.factor.length > xIndex) {\n            spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n        }\n        if (currentEntry.ntuples.factor.length > yIndex) {\n            spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.units) {\n        if (currentEntry.ntuples.units.length > xIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[xIndex]) {\n                spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n            }\n            else {\n                spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n            }\n        }\n        if (currentEntry.ntuples.units.length > yIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[yIndex]) {\n                spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n            }\n            else {\n                spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n            }\n        }\n    }\n}\n//# sourceMappingURL=prepareNtuplesDatatable.js.map","export default function prepareSpectrum(spectrum) {\n    if (!spectrum.xFactor)\n        spectrum.xFactor = 1;\n    if (!spectrum.yFactor)\n        spectrum.yFactor = 1;\n}\n//# sourceMappingURL=prepareSpectrum.js.map","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\nimport { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst defaultOptions = {\n    keepRecordsRegExp: /^$/,\n    canonicDataLabels: true,\n    canonicMetadataLabels: false,\n    dynamicTyping: true,\n    withoutXY: false,\n    chromatogram: false,\n    keepSpectra: false,\n    noContour: false,\n    nbContourLevels: 7,\n    noiseMultiplier: 5,\n    profiling: false,\n};\n/**\n *\n * @typedef {object} ConvertOptions\n * @property {RegExp} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @property {boolean} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @property {boolean} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @property {boolean} [options.dynamicTyping=false] - Convert numbers to Number.\n * @property {boolean} [options.withoutXY=false] - Remove the XY data.\n * @property {boolean} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @property {boolean} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @property {boolean} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @property {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @property {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @property {boolean} [options.profiling=false] - Add profiling information.\n */\n/**\n *\n * @typedef {object} Ntuples\n * @property {string[]} [varname]\n * @property {string[]} [symbol]\n * @property {string[]} [vartype]\n * @property {string[]} [varform]\n * @property {number[]} [vardim]\n * @property {string[]} [units]\n * @property {number[]} [factor]\n * @property {number[]} [first]\n * @property {number[]} [last]\n * @property {number[]} [min]\n * @property {number[]} [max]\n * @property {string[]} [nucleus]\n */\n/**\n * @typedef { Record<string, any> } Spectrum\n * @property {Record<string, number[]>} [data]\n * @property {number} [firstX]\n * @property {number} [lastX]\n * @property {number} [deltaX]\n * @property {number} [yFactor]\n * @property {number} [xFactor]\n * @property {number} [nbPoints]\n */\n/**\n *\n * @typedef {object} Entry\n * @property {Spectrum[]} spectra\n * @property {Ntuples} ntuples\n * @property {object} meta\n * @property {object} tmp\n * @property {string} [title]\n * @property {string} [dataType]\n * @property {string} [dataClass]\n * @property {boolean} [twoD]\n */\n/**\n *\n * @typedef { object } ConvertResult\n * @property { object[] | boolean } profiling\n * @property { string[] } logs\n * @property { object[] } entries\n * @property { Entry[] } flatten\n */\n/**\n * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {ConvertOptions} [options]\n * @returns {ConvertResult}\n */\nexport function convert(jcamp, options = {}) {\n    jcamp = ensureString(jcamp);\n    options = { ...defaultOptions, ...options };\n    options.wantXY = !options.withoutXY;\n    options.start = Date.now();\n    let entriesFlat = [];\n    let result = {\n        profiling: options.profiling ? [] : false,\n        logs: [],\n        entries: [],\n    };\n    let tmpResult = { children: [] };\n    let currentEntry = tmpResult;\n    let parentsStack = [];\n    let spectrum = {};\n    if (typeof jcamp !== 'string') {\n        throw new TypeError('the JCAMP should be a string');\n    }\n    profiling(result, 'Before split to LDRS', options);\n    let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n    profiling(result, 'Split to LDRS', options);\n    if (ldrs[0])\n        ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n    for (let ldr of ldrs) {\n        // This is a new LDR\n        let position = ldr.indexOf('=');\n        let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n        let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n        let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n        if (canonicDataLabel === 'DATATABLE') {\n            let endLine = dataValue.indexOf('\\n');\n            if (endLine === -1)\n                endLine = dataValue.indexOf('\\r');\n            if (endLine > 0) {\n                // ##DATA TABLE= (X++(I..I)), XYDATA\n                // We need to find the variables\n                let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n                prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n                spectrum.datatable = infos[0];\n                if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n                    canonicDataLabel = 'PEAKTABLE';\n                }\n                else if (infos[1] &&\n                    (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)) {\n                    canonicDataLabel = 'XYDATA';\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                }\n            }\n        }\n        if (canonicDataLabel === 'XYDATA') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n                if (dataValue.match(/.*\\+\\+.*/)) {\n                    // ex: (X++(Y..Y))\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                    fastParseXYData(spectrum, dataValue, result);\n                }\n                else {\n                    parsePeakTable(spectrum, dataValue, result);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        else if (canonicDataLabel === 'PEAKTABLE') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                parsePeakTable(spectrum, dataValue, result);\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n            if (options.wantXY) {\n                if (dataValue.match(/.*(XYA).*/)) {\n                    // ex: (XYA)\n                    parseXYA(spectrum, dataValue);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'TITLE') {\n            let parentEntry = currentEntry;\n            if (!parentEntry.children) {\n                parentEntry.children = [];\n            }\n            currentEntry = {\n                spectra: [],\n                ntuples: {},\n                info: {},\n                meta: {},\n                tmp: {}, // tmp information we need to keep for postprocessing\n            };\n            parentEntry.children.push(currentEntry);\n            parentsStack.push(parentEntry);\n            entriesFlat.push(currentEntry);\n            currentEntry.title = dataValue;\n        }\n        else if (canonicDataLabel === 'DATATYPE') {\n            currentEntry.dataType = dataValue;\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'NTUPLES') {\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'DATACLASS') {\n            currentEntry.dataClass = dataValue;\n        }\n        else if (canonicDataLabel === 'XUNITS') {\n            spectrum.xUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'YUNITS') {\n            spectrum.yUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'FIRSTX') {\n            spectrum.firstX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTX') {\n            spectrum.lastX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'FIRSTY') {\n            spectrum.firstY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTY') {\n            spectrum.lastY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'NPOINTS') {\n            spectrum.nbPoints = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'XFACTOR') {\n            spectrum.xFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'YFACTOR') {\n            spectrum.yFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXX') {\n            spectrum.maxX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINX') {\n            spectrum.minX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXY') {\n            spectrum.maxY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINY') {\n            spectrum.minY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'DELTAX') {\n            spectrum.deltaX = Number(dataValue);\n        }\n        else if (canonicDataLabel === '.OBSERVEFREQUENCY' ||\n            canonicDataLabel === '$SFO1') {\n            if (!spectrum.observeFrequency) {\n                spectrum.observeFrequency = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n            if (!spectrum.xType) {\n                currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n            }\n        }\n        else if (canonicDataLabel === '$OFFSET') {\n            // OFFSET for Bruker spectra\n            currentEntry.shiftOffsetNum = 0;\n            if (!spectrum.shiftOffsetVal) {\n                spectrum.shiftOffsetVal = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '$REFERENCEPOINT') {\n            // OFFSET for Varian spectra\n            // if we activate this part it does not work for ACD specmanager\n            //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n            //                 var parts = dataValue.split(/ *, */);\n            //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n            //                 spectrum.shiftOffsetVal = Number(parts[3].trim());\n        }\n        else if (canonicDataLabel === 'VARNAME') {\n            currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'SYMBOL') {\n            currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARTYPE') {\n            currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARFORM') {\n            currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARDIM') {\n            currentEntry.ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'UNITS') {\n            currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'FACTOR') {\n            currentEntry.ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'FIRST') {\n            currentEntry.ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'LAST') {\n            currentEntry.ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MIN') {\n            currentEntry.ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MAX') {\n            currentEntry.ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === '.NUCLEUS') {\n            if (currentEntry.ntuples) {\n                currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n            }\n        }\n        else if (canonicDataLabel === 'PAGE') {\n            spectrum.page = dataValue.trim();\n            spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n            spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n        }\n        else if (canonicDataLabel === 'RETENTIONTIME') {\n            spectrum.pageValue = Number(dataValue);\n        }\n        else if (isMSField(canonicDataLabel)) {\n            spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n        }\n        else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n            spectrum.sampleDescription = dataValue;\n        }\n        else if (canonicDataLabel.startsWith('$NUC')) {\n            if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n                currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n            }\n        }\n        else if (canonicDataLabel === 'END') {\n            currentEntry = parentsStack.pop();\n        }\n        if (currentEntry &&\n            currentEntry.info &&\n            currentEntry.meta &&\n            canonicDataLabel.match(options.keepRecordsRegExp)) {\n            let value = dataValue.trim();\n            let target, label;\n            if (dataLabel.startsWith('$')) {\n                label = options.canonicMetadataLabels\n                    ? canonicDataLabel.substring(1)\n                    : dataLabel.substring(1);\n                target = currentEntry.meta;\n            }\n            else {\n                label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n                target = currentEntry.info;\n            }\n            if (options.dynamicTyping) {\n                value = parseString(value);\n            }\n            if (target[label]) {\n                if (!Array.isArray(target[label])) {\n                    target[label] = [target[label]];\n                }\n                target[label].push(value);\n            }\n            else {\n                target[label] = value;\n            }\n        }\n    }\n    profiling(result, 'Finished parsing', options);\n    postProcessing(entriesFlat, result, options);\n    profiling(result, 'Total time', options);\n    /*\n    if (result.children && result.children.length>0) {\n      result = { ...result, ...result.children[0] };\n    }\n    */\n    result.entries = tmpResult.children;\n    result.flatten = entriesFlat;\n    return result;\n}\n//# sourceMappingURL=convert.js.map","export function getJcampKind(data) {\n  let dataType = data.dataType.toLowerCase();\n  let yUnits = data.spectra[0].yUnits.toLowerCase();\n\n  if (dataType.match(/infrared/)) {\n    if (yUnits.match(/absorbance/)) {\n      return IR_ABSORBANCE;\n    } else {\n      return IR_TRANSMITTANCE;\n    }\n  }\n  return undefined;\n}\n\nexport const IR_TRANSMITTANCE = {\n  normalization: {},\n  importation: {\n    converter: (transmittance) => -Math.log10(transmittance),\n  },\n  kind: 'Infrared',\n  display: {\n    xLabel: 'wavelength [cm-1]',\n    xInverted: true,\n    yLabel: 'Absorbance',\n  },\n};\n\nexport const IR_ABSORBANCE = {\n  normalization: {},\n  kind: 'Infrared',\n  display: {\n    xLabel: 'wavelength [cm-1]',\n    xInverted: true,\n    yLabel: 'Absorbance',\n  },\n};\n\nexport const nmr1H = {\n  display: {\n    xLabel: 'δ [ppm]',\n    xInverted: true,\n    yLabel: 'Intensity',\n  },\n};\n\nexport const nmr13C = {\n  display: {\n    xLabel: 'δ [ppm]',\n    xInverted: true,\n    yLabel: 'Intensity',\n  },\n};\n","import { convert } from 'jcampconverter';\n\nimport { getJcampKind } from '../Kinds';\n/**\n * Create a spectrum from a jcamp\n * @param {string} jcampText - String containing the JCAMP data\n * @return {Spectrum} - new instance of Spectrum with the provided data\n */\nexport default function jcamp(jcampText) {\n  const parsed = convert(jcampText, { xy: true, keepRecordsRegExp: /TITLE/ })\n    .flatten[0];\n  const kind = getJcampKind(parsed);\n  const data = parsed.spectra[0].data;\n  const meta = parsed.info;\n  // we convert the data\n  if (kind && kind.importation && kind.importation.converter) {\n    data.y = data.y.map(kind.importation.converter);\n  }\n\n  return { data, kind, meta };\n}\n","/**\n * Creates a g\n * @param {string} text - String containing the text data\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] Field separator\n * @return {object} - {matrix, data, x, ids}\n */\nexport default function matrix(text, options = {}) {\n  const lines = text.split(/[\\r\\n]+/).filter((value) => value);\n  const { fs = '\\t' } = options;\n  let currentMatrix = [];\n  let ids = [];\n  let meta = [];\n  let x = [];\n\n  let headers = lines[0].split(fs);\n  let labels = [];\n\n  for (let i = 0; i < headers.length; i++) {\n    let header = headers[i];\n    if (isNaN(header)) {\n      labels[i] = header;\n    } else {\n      x = headers.slice(i).map((value) => Number(value));\n      break;\n    }\n  }\n\n  for (let i = 1; i < lines.length; i++) {\n    let line = lines[i];\n    let parts = line.split('\\t');\n    ids.push(parts[0]);\n    let oneMeta = {};\n    meta.push(oneMeta);\n    for (let j = 1; j < parts.length; j++) {\n      if (j < labels.length) {\n        oneMeta[labels[j]] = parts[j];\n      } else {\n        currentMatrix.push(\n          parts.slice(labels.length).map((value) => Number(value)),\n        );\n        break;\n      }\n    }\n  }\n  return { x, meta, matrix: currentMatrix, ids };\n}\n","/**\n * In place modification of the 2 arrays to make X unique and sum the Y if X has the same value\n * @param {object} [points={}] : Object of points contains property x (an array) and y (an array)\n * @return points\n */\n\nexport default function uniqueX(points = {}) {\n  const { x, y } = points;\n  if (x.length < 2) return;\n  if (x.length !== y.length) {\n    throw new Error('The X and Y arrays mush have the same length');\n  }\n\n  let current = x[0];\n  let counter = 0;\n\n  for (let i = 1; i < x.length; i++) {\n    if (current !== x[i]) {\n      counter++;\n      current = x[i];\n      x[counter] = x[i];\n      if (i !== counter) {\n        y[counter] = 0;\n      }\n    }\n    if (i !== counter) {\n      y[counter] += y[i];\n    }\n  }\n\n  x.length = counter + 1;\n  y.length = counter + 1;\n}\n","import { ensureString } from 'ensure-string';\nimport mlArrayMax from 'ml-array-max';\nimport uniqueXFunction from 'ml-arrayxy-uniquex';\nimport { xIsMonotone } from 'ml-spectra-processing';\n/**\n * General internal parsing function\n *\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns parsed text file with column information\n */\nexport function parse(text, options = {}) {\n    let { rescale = false, uniqueX = false, xColumn = 0, yColumn = 1, bestGuess = false, \n    //@ts-expect-error old library used this property and we want to throw an error so that people are forced to migrate\n    keepInfo, numberColumns = Number.MAX_SAFE_INTEGER, maxNumberColumns = Number.MAX_SAFE_INTEGER, minNumberColumns = 2, } = options;\n    if (keepInfo !== undefined) {\n        throw new Error('keepInfo has been deprecated, pelase use the new method parseXYAndKeepInfo');\n    }\n    text = ensureString(text);\n    maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n    minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n    let lines = text.split(/[\\r\\n]+/);\n    let matrix = [];\n    let info = [];\n    let position = 0;\n    lines.forEach((line) => {\n        line = line.trim();\n        // we will consider only lines that contains only numbers\n        if (/[0-9]+/.test(line) && /^[0-9eE,;. \\t+-]+$/.test(line)) {\n            let fields = line.split(/,[; \\t]+|[; \\t]+/);\n            if (fields.length === 1) {\n                fields = line.split(/[,; \\t]+/);\n            }\n            if (fields &&\n                fields.length >= minNumberColumns && // we filter lines that have not enough or too many columns\n                fields.length <= maxNumberColumns) {\n                matrix.push(fields.map((value) => parseFloat(value.replace(',', '.'))));\n                position++;\n            }\n        }\n        else if (line) {\n            info.push({ position, value: line });\n        }\n    });\n    if (bestGuess) {\n        if (matrix[0] &&\n            matrix[0].length === 3 &&\n            options.xColumn === undefined &&\n            options.yColumn === undefined) {\n            // is the first column a seuqnetial number ?\n            let skipFirstColumn = true;\n            for (let i = 0; i < matrix.length - 1; i++) {\n                if (Math.abs(matrix[i][0] - matrix[i + 1][0]) !== 1) {\n                    skipFirstColumn = false;\n                }\n            }\n            if (skipFirstColumn) {\n                xColumn = 1;\n                yColumn = 2;\n            }\n        }\n        if (matrix[0] && matrix[0].length > 3) {\n            const xs = [];\n            for (let row of matrix) {\n                for (let i = xColumn; i < row.length; i += 2) {\n                    xs.push(row[i]);\n                }\n            }\n            if (xIsMonotone(xs)) {\n                numberColumns = 2;\n            }\n        }\n    }\n    if (numberColumns) {\n        const newMatrix = [];\n        for (const row of matrix) {\n            for (let i = 0; i < row.length; i += numberColumns) {\n                newMatrix.push(row.slice(i, i + numberColumns));\n            }\n        }\n        matrix = newMatrix;\n    }\n    const result = {\n        x: matrix.map((row) => row[xColumn]),\n        y: matrix.map((row) => row[yColumn]),\n    };\n    if (uniqueX) {\n        uniqueXFunction(result);\n    }\n    if (rescale) {\n        let maxY = mlArrayMax(result.y);\n        for (let i = 0; i < result.y.length; i++) {\n            result.y[i] /= maxY;\n        }\n    }\n    return {\n        info,\n        data: result,\n    };\n}\n//# sourceMappingURL=parse.js.map","import { parse } from './parse';\nexport * from './ParseXYOptions';\n/**\n * Parse a text-file and convert it to an object {x:[], y:[]}\n *\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data\n */\nexport function parseXY(text, options = {}) {\n    return parse(text, options).data;\n}\n/**\n * Parse a text-file and returns the parsed data and information about the columns\n *\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data with information about the columns\n */\nexport function parseXYAndKeepInfo(text, options = {}) {\n    return parse(text, options);\n}\n//# sourceMappingURL=index.js.map","import { parseXY } from 'xy-parser';\n\n/**\n * Create a spectrum from a text file\n * @param {string} value - String containing the JCAMP data\n * @return {Spectrum} - new instance of Spectrum with the provided data\n */\nexport default function text(value, options = {}) {\n  const { kind, parserOptions = {} } = options;\n\n  const data = parseXY(value, parserOptions);\n\n  // we convert the data\n  if (kind && kind.importation && kind.importation.converter) {\n    data.y = data.y.map(kind.importation.converter);\n  }\n\n  return { data };\n}\n","import { xCorrelation } from 'ml-spectra-processing';\n\n/**\n * @private\n */\n\nexport function getAutocorrelation(normalized, index) {\n  let matrix = normalized.matrix;\n  let nbRow = matrix.length;\n  let nbColumn = matrix[0].length;\n  let array1 = new Float64Array(nbRow);\n  let array2 = new Float64Array(nbRow);\n  let result = new Array(nbColumn);\n  for (let j = 0; j < nbRow; j++) {\n    array1[j] = matrix[j][index];\n  }\n  for (let i = 0; i < nbColumn; i++) {\n    for (let j = 0; j < nbRow; j++) {\n      array2[j] = matrix[j][i];\n    }\n    result[i] = xCorrelation(array1, array2);\n  }\n  return {\n    x: normalized.x,\n    y: result,\n  };\n}\n","import { Matrix } from 'ml-matrix';\n\n/**\n * @private\n */\n\nexport function getMeanData(normalized) {\n  let matrix = new Matrix(normalized.matrix);\n  return {\n    x: normalized.x,\n    y: matrix.mean('column'),\n  };\n}\n","export function convertToText(data, options = {}) {\n  let { fs = '\\t', rs = '\\n' } = options;\n  let { matrix, meta, ids, x } = data;\n  let allKeysObject = {};\n  for (let metum of meta) {\n    if (metum) {\n      for (let key of Object.keys(metum)) {\n        let type = typeof metum[key];\n        if (type === 'number' || type === 'string' || type === 'boolean') {\n          allKeysObject[key] = true;\n        }\n      }\n    }\n  }\n  let allKeys = Object.keys(allKeysObject);\n\n  let lines = [];\n  let line = [];\n  line.push('id', ...allKeys, ...x);\n  lines.push(line.join(fs));\n\n  for (let i = 0; i < ids.length; i++) {\n    line = [];\n    line.push(ids[i]);\n    for (let key of allKeys) {\n      line.push(meta[i][key]);\n    }\n    line.push(...matrix[i]);\n    lines.push(line.join(fs));\n  }\n  return lines.join(rs);\n}\n","import { getNormalizedData } from './getNormalizedData.js';\nimport { convertToText } from './util/convertToText.js';\n/**\n * @private\n * @param {*} spectra\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] field separator\n * @param {string} [options.rs='\\n'] record (line) separator\n */\n\nexport function getNormalizedText(spectra, options = {}) {\n  let { fs = '\\t', rs = '\\n' } = options;\n\n  return convertToText(getNormalizedData(spectra), {\n    rs,\n    fs,\n  });\n}\n","!function(e){var t;\"object\"==typeof exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(\"undefined\"!=typeof window?t=window:\"undefined\"!=typeof global?t=global:\"undefined\"!=typeof self&&(t=self),t.objectHash=e())}(function(){return function r(o,i,u){function s(n,e){if(!i[n]){if(!o[n]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(n,!0);if(a)return a(n,!0);throw new Error(\"Cannot find module '\"+n+\"'\")}e=i[n]={exports:{}};o[n][0].call(e.exports,function(e){var t=o[n][1][e];return s(t||e)},e,e.exports,r,o,i,u)}return i[n].exports}for(var a=\"function\"==typeof require&&require,e=0;e<u.length;e++)s(u[e]);return s}({1:[function(w,b,m){!function(e,n,s,c,d,h,p,g,y){\"use strict\";var r=w(\"crypto\");function t(e,t){t=u(e,t);var n;return void 0===(n=\"passthrough\"!==t.algorithm?r.createHash(t.algorithm):new l).write&&(n.write=n.update,n.end=n.update),f(t,n).dispatch(e),n.update||n.end(\"\"),n.digest?n.digest(\"buffer\"===t.encoding?void 0:t.encoding):(e=n.read(),\"buffer\"!==t.encoding?e.toString(t.encoding):e)}(m=b.exports=t).sha1=function(e){return t(e)},m.keys=function(e){return t(e,{excludeValues:!0,algorithm:\"sha1\",encoding:\"hex\"})},m.MD5=function(e){return t(e,{algorithm:\"md5\",encoding:\"hex\"})},m.keysMD5=function(e){return t(e,{algorithm:\"md5\",encoding:\"hex\",excludeValues:!0})};var o=r.getHashes?r.getHashes().slice():[\"sha1\",\"md5\"],i=(o.push(\"passthrough\"),[\"buffer\",\"hex\",\"binary\",\"base64\"]);function u(e,t){var n={};if(n.algorithm=(t=t||{}).algorithm||\"sha1\",n.encoding=t.encoding||\"hex\",n.excludeValues=!!t.excludeValues,n.algorithm=n.algorithm.toLowerCase(),n.encoding=n.encoding.toLowerCase(),n.ignoreUnknown=!0===t.ignoreUnknown,n.respectType=!1!==t.respectType,n.respectFunctionNames=!1!==t.respectFunctionNames,n.respectFunctionProperties=!1!==t.respectFunctionProperties,n.unorderedArrays=!0===t.unorderedArrays,n.unorderedSets=!1!==t.unorderedSets,n.unorderedObjects=!1!==t.unorderedObjects,n.replacer=t.replacer||void 0,n.excludeKeys=t.excludeKeys||void 0,void 0===e)throw new Error(\"Object argument required.\");for(var r=0;r<o.length;++r)o[r].toLowerCase()===n.algorithm.toLowerCase()&&(n.algorithm=o[r]);if(-1===o.indexOf(n.algorithm))throw new Error('Algorithm \"'+n.algorithm+'\"  not supported. supported values: '+o.join(\", \"));if(-1===i.indexOf(n.encoding)&&\"passthrough\"!==n.algorithm)throw new Error('Encoding \"'+n.encoding+'\"  not supported. supported values: '+i.join(\", \"));return n}function a(e){if(\"function\"==typeof e)return null!=/^function\\s+\\w*\\s*\\(\\s*\\)\\s*{\\s+\\[native code\\]\\s+}$/i.exec(Function.prototype.toString.call(e))}function f(o,t,i){i=i||[];function u(e){return t.update?t.update(e,\"utf8\"):t.write(e,\"utf8\")}return{dispatch:function(e){return this[\"_\"+(null===(e=o.replacer?o.replacer(e):e)?\"null\":typeof e)](e)},_object:function(t){var n,e=Object.prototype.toString.call(t),r=/\\[object (.*)\\]/i.exec(e);r=(r=r?r[1]:\"unknown:[\"+e+\"]\").toLowerCase();if(0<=(e=i.indexOf(t)))return this.dispatch(\"[CIRCULAR:\"+e+\"]\");if(i.push(t),void 0!==s&&s.isBuffer&&s.isBuffer(t))return u(\"buffer:\"),u(t);if(\"object\"===r||\"function\"===r||\"asyncfunction\"===r)return e=Object.keys(t),o.unorderedObjects&&(e=e.sort()),!1===o.respectType||a(t)||e.splice(0,0,\"prototype\",\"__proto__\",\"constructor\"),o.excludeKeys&&(e=e.filter(function(e){return!o.excludeKeys(e)})),u(\"object:\"+e.length+\":\"),n=this,e.forEach(function(e){n.dispatch(e),u(\":\"),o.excludeValues||n.dispatch(t[e]),u(\",\")});if(!this[\"_\"+r]){if(o.ignoreUnknown)return u(\"[\"+r+\"]\");throw new Error('Unknown object type \"'+r+'\"')}this[\"_\"+r](t)},_array:function(e,t){t=void 0!==t?t:!1!==o.unorderedArrays;var n=this;if(u(\"array:\"+e.length+\":\"),!t||e.length<=1)return e.forEach(function(e){return n.dispatch(e)});var r=[],t=e.map(function(e){var t=new l,n=i.slice();return f(o,t,n).dispatch(e),r=r.concat(n.slice(i.length)),t.read().toString()});return i=i.concat(r),t.sort(),this._array(t,!1)},_date:function(e){return u(\"date:\"+e.toJSON())},_symbol:function(e){return u(\"symbol:\"+e.toString())},_error:function(e){return u(\"error:\"+e.toString())},_boolean:function(e){return u(\"bool:\"+e.toString())},_string:function(e){u(\"string:\"+e.length+\":\"),u(e.toString())},_function:function(e){u(\"fn:\"),a(e)?this.dispatch(\"[native]\"):this.dispatch(e.toString()),!1!==o.respectFunctionNames&&this.dispatch(\"function-name:\"+String(e.name)),o.respectFunctionProperties&&this._object(e)},_number:function(e){return u(\"number:\"+e.toString())},_xml:function(e){return u(\"xml:\"+e.toString())},_null:function(){return u(\"Null\")},_undefined:function(){return u(\"Undefined\")},_regexp:function(e){return u(\"regex:\"+e.toString())},_uint8array:function(e){return u(\"uint8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return u(\"uint8clampedarray:\"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return u(\"int8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return u(\"uint16array:\"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return u(\"int16array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return u(\"uint32array:\"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return u(\"int32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return u(\"float32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return u(\"float64array:\"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return u(\"arraybuffer:\"),this.dispatch(new Uint8Array(e))},_url:function(e){return u(\"url:\"+e.toString())},_map:function(e){u(\"map:\");e=Array.from(e);return this._array(e,!1!==o.unorderedSets)},_set:function(e){u(\"set:\");e=Array.from(e);return this._array(e,!1!==o.unorderedSets)},_file:function(e){return u(\"file:\"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(o.ignoreUnknown)return u(\"[blob]\");throw Error('Hashing Blob objects is currently not supported\\n(see https://github.com/puleos/object-hash/issues/26)\\nUse \"options.replacer\" or \"options.ignoreUnknown\"\\n')},_domwindow:function(){return u(\"domwindow\")},_bigint:function(e){return u(\"bigint:\"+e.toString())},_process:function(){return u(\"process\")},_timer:function(){return u(\"timer\")},_pipe:function(){return u(\"pipe\")},_tcp:function(){return u(\"tcp\")},_udp:function(){return u(\"udp\")},_tty:function(){return u(\"tty\")},_statwatcher:function(){return u(\"statwatcher\")},_securecontext:function(){return u(\"securecontext\")},_connection:function(){return u(\"connection\")},_zlib:function(){return u(\"zlib\")},_context:function(){return u(\"context\")},_nodescript:function(){return u(\"nodescript\")},_httpparser:function(){return u(\"httpparser\")},_dataview:function(){return u(\"dataview\")},_signal:function(){return u(\"signal\")},_fsevent:function(){return u(\"fsevent\")},_tlswrap:function(){return u(\"tlswrap\")}}}function l(){return{buf:\"\",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}m.writeToStream=function(e,t,n){return void 0===n&&(n=t,t={}),f(t=u(e,t),n).dispatch(e)}}.call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/fake_9a5aa49d.js\",\"/\")},{buffer:3,crypto:5,lYpoI2:11}],2:[function(e,t,f){!function(e,t,n,r,o,i,u,s,a){!function(e){\"use strict\";var a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,t=\"+\".charCodeAt(0),n=\"/\".charCodeAt(0),r=\"0\".charCodeAt(0),o=\"a\".charCodeAt(0),i=\"A\".charCodeAt(0),u=\"-\".charCodeAt(0),s=\"_\".charCodeAt(0);function f(e){e=e.charCodeAt(0);return e===t||e===u?62:e===n||e===s?63:e<r?-1:e<r+10?e-r+26+26:e<i+26?e-i:e<o+26?e-o+26:void 0}e.toByteArray=function(e){var t,n;if(0<e.length%4)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.length,r=\"=\"===e.charAt(r-2)?2:\"=\"===e.charAt(r-1)?1:0,o=new a(3*e.length/4-r),i=0<r?e.length-4:e.length,u=0;function s(e){o[u++]=e}for(t=0;t<i;t+=4,0)s((16711680&(n=f(e.charAt(t))<<18|f(e.charAt(t+1))<<12|f(e.charAt(t+2))<<6|f(e.charAt(t+3))))>>16),s((65280&n)>>8),s(255&n);return 2==r?s(255&(n=f(e.charAt(t))<<2|f(e.charAt(t+1))>>4)):1==r&&(s((n=f(e.charAt(t))<<10|f(e.charAt(t+1))<<4|f(e.charAt(t+2))>>2)>>8&255),s(255&n)),o},e.fromByteArray=function(e){var t,n,r,o,i=e.length%3,u=\"\";function s(e){return\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".charAt(e)}for(t=0,r=e.length-i;t<r;t+=3)n=(e[t]<<16)+(e[t+1]<<8)+e[t+2],u+=s((o=n)>>18&63)+s(o>>12&63)+s(o>>6&63)+s(63&o);switch(i){case 1:u=(u+=s((n=e[e.length-1])>>2))+s(n<<4&63)+\"==\";break;case 2:u=(u=(u+=s((n=(e[e.length-2]<<8)+e[e.length-1])>>10))+s(n>>4&63))+s(n<<2&63)+\"=\"}return u}}(void 0===f?this.base64js={}:f)}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js\",\"/node_modules/gulp-browserify/node_modules/base64-js/lib\")},{buffer:3,lYpoI2:11}],3:[function(O,e,H){!function(e,n,f,r,h,p,g,y,w){var a=O(\"base64-js\"),i=O(\"ieee754\");function f(e,t,n){if(!(this instanceof f))return new f(e,t,n);var r,o,i,u,s=typeof e;if(\"base64\"===t&&\"string\"==s)for(e=(u=e).trim?u.trim():u.replace(/^\\s+|\\s+$/g,\"\");e.length%4!=0;)e+=\"=\";if(\"number\"==s)r=j(e);else if(\"string\"==s)r=f.byteLength(e,t);else{if(\"object\"!=s)throw new Error(\"First argument needs to be a number, array or string.\");r=j(e.length)}if(f._useTypedArrays?o=f._augment(new Uint8Array(r)):((o=this).length=r,o._isBuffer=!0),f._useTypedArrays&&\"number\"==typeof e.byteLength)o._set(e);else if(C(u=e)||f.isBuffer(u)||u&&\"object\"==typeof u&&\"number\"==typeof u.length)for(i=0;i<r;i++)f.isBuffer(e)?o[i]=e.readUInt8(i):o[i]=e[i];else if(\"string\"==s)o.write(e,0,t);else if(\"number\"==s&&!f._useTypedArrays&&!n)for(i=0;i<r;i++)o[i]=0;return o}function b(e,t,n,r){return f._charsWritten=c(function(e){for(var t=[],n=0;n<e.length;n++)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function m(e,t,n,r){return f._charsWritten=c(function(e){for(var t,n,r=[],o=0;o<e.length;o++)n=e.charCodeAt(o),t=n>>8,n=n%256,r.push(n),r.push(t);return r}(t),e,n,r)}function v(e,t,n){var r=\"\";n=Math.min(e.length,n);for(var o=t;o<n;o++)r+=String.fromCharCode(e[o]);return r}function o(e,t,n,r){r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+1<e.length,\"Trying to read beyond buffer length\"));var o,r=e.length;if(!(r<=t))return n?(o=e[t],t+1<r&&(o|=e[t+1]<<8)):(o=e[t]<<8,t+1<r&&(o|=e[t+1])),o}function u(e,t,n,r){r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+3<e.length,\"Trying to read beyond buffer length\"));var o,r=e.length;if(!(r<=t))return n?(t+2<r&&(o=e[t+2]<<16),t+1<r&&(o|=e[t+1]<<8),o|=e[t],t+3<r&&(o+=e[t+3]<<24>>>0)):(t+1<r&&(o=e[t+1]<<16),t+2<r&&(o|=e[t+2]<<8),t+3<r&&(o|=e[t+3]),o+=e[t]<<24>>>0),o}function _(e,t,n,r){if(r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+1<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t))return r=o(e,t,n,!0),32768&r?-1*(65535-r+1):r}function E(e,t,n,r){if(r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(null!=t,\"missing offset\"),d(t+3<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t))return r=u(e,t,n,!0),2147483648&r?-1*(4294967295-r+1):r}function I(e,t,n,r){return r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(t+3<e.length,\"Trying to read beyond buffer length\")),i.read(e,t,n,23,4)}function A(e,t,n,r){return r||(d(\"boolean\"==typeof n,\"missing or invalid endian\"),d(t+7<e.length,\"Trying to read beyond buffer length\")),i.read(e,t,n,52,8)}function s(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+1<e.length,\"trying to write beyond buffer length\"),Y(t,65535));o=e.length;if(!(o<=n))for(var i=0,u=Math.min(o-n,2);i<u;i++)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function l(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"trying to write beyond buffer length\"),Y(t,4294967295));o=e.length;if(!(o<=n))for(var i=0,u=Math.min(o-n,4);i<u;i++)e[n+i]=t>>>8*(r?i:3-i)&255}function B(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+1<e.length,\"Trying to write beyond buffer length\"),F(t,32767,-32768)),e.length<=n||s(e,0<=t?t:65535+t+1,n,r,o)}function L(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"Trying to write beyond buffer length\"),F(t,2147483647,-2147483648)),e.length<=n||l(e,0<=t?t:4294967295+t+1,n,r,o)}function U(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+3<e.length,\"Trying to write beyond buffer length\"),D(t,34028234663852886e22,-34028234663852886e22)),e.length<=n||i.write(e,t,n,r,23,4)}function x(e,t,n,r,o){o||(d(null!=t,\"missing value\"),d(\"boolean\"==typeof r,\"missing or invalid endian\"),d(null!=n,\"missing offset\"),d(n+7<e.length,\"Trying to write beyond buffer length\"),D(t,17976931348623157e292,-17976931348623157e292)),e.length<=n||i.write(e,t,n,r,52,8)}H.Buffer=f,H.SlowBuffer=f,H.INSPECT_MAX_BYTES=50,f.poolSize=8192,f._useTypedArrays=function(){try{var e=new ArrayBuffer(0),t=new Uint8Array(e);return t.foo=function(){return 42},42===t.foo()&&\"function\"==typeof t.subarray}catch(e){return!1}}(),f.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"raw\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},f.isBuffer=function(e){return!(null==e||!e._isBuffer)},f.byteLength=function(e,t){var n;switch(e+=\"\",t||\"utf8\"){case\"hex\":n=e.length/2;break;case\"utf8\":case\"utf-8\":n=T(e).length;break;case\"ascii\":case\"binary\":case\"raw\":n=e.length;break;case\"base64\":n=M(e).length;break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":n=2*e.length;break;default:throw new Error(\"Unknown encoding\")}return n},f.concat=function(e,t){if(d(C(e),\"Usage: Buffer.concat(list, [totalLength])\\nlist should be an Array.\"),0===e.length)return new f(0);if(1===e.length)return e[0];if(\"number\"!=typeof t)for(o=t=0;o<e.length;o++)t+=e[o].length;for(var n=new f(t),r=0,o=0;o<e.length;o++){var i=e[o];i.copy(n,r),r+=i.length}return n},f.prototype.write=function(e,t,n,r){isFinite(t)?isFinite(n)||(r=n,n=void 0):(a=r,r=t,t=n,n=a),t=Number(t)||0;var o,i,u,s,a=this.length-t;switch((!n||a<(n=Number(n)))&&(n=a),r=String(r||\"utf8\").toLowerCase()){case\"hex\":o=function(e,t,n,r){n=Number(n)||0;var o=e.length-n;(!r||o<(r=Number(r)))&&(r=o),d((o=t.length)%2==0,\"Invalid hex string\"),o/2<r&&(r=o/2);for(var i=0;i<r;i++){var u=parseInt(t.substr(2*i,2),16);d(!isNaN(u),\"Invalid hex string\"),e[n+i]=u}return f._charsWritten=2*i,i}(this,e,t,n);break;case\"utf8\":case\"utf-8\":i=this,u=t,s=n,o=f._charsWritten=c(T(e),i,u,s);break;case\"ascii\":case\"binary\":o=b(this,e,t,n);break;case\"base64\":i=this,u=t,s=n,o=f._charsWritten=c(M(e),i,u,s);break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":o=m(this,e,t,n);break;default:throw new Error(\"Unknown encoding\")}return o},f.prototype.toString=function(e,t,n){var r,o,i,u,s=this;if(e=String(e||\"utf8\").toLowerCase(),t=Number(t)||0,(n=void 0!==n?Number(n):s.length)===t)return\"\";switch(e){case\"hex\":r=function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||r<n)&&(n=r);for(var o=\"\",i=t;i<n;i++)o+=k(e[i]);return o}(s,t,n);break;case\"utf8\":case\"utf-8\":r=function(e,t,n){var r=\"\",o=\"\";n=Math.min(e.length,n);for(var i=t;i<n;i++)e[i]<=127?(r+=N(o)+String.fromCharCode(e[i]),o=\"\"):o+=\"%\"+e[i].toString(16);return r+N(o)}(s,t,n);break;case\"ascii\":case\"binary\":r=v(s,t,n);break;case\"base64\":o=s,u=n,r=0===(i=t)&&u===o.length?a.fromByteArray(o):a.fromByteArray(o.slice(i,u));break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":r=function(e,t,n){for(var r=e.slice(t,n),o=\"\",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}(s,t,n);break;default:throw new Error(\"Unknown encoding\")}return r},f.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}},f.prototype.copy=function(e,t,n,r){if(t=t||0,(r=r||0===r?r:this.length)!==(n=n||0)&&0!==e.length&&0!==this.length){d(n<=r,\"sourceEnd < sourceStart\"),d(0<=t&&t<e.length,\"targetStart out of bounds\"),d(0<=n&&n<this.length,\"sourceStart out of bounds\"),d(0<=r&&r<=this.length,\"sourceEnd out of bounds\"),r>this.length&&(r=this.length);var o=(r=e.length-t<r-n?e.length-t+n:r)-n;if(o<100||!f._useTypedArrays)for(var i=0;i<o;i++)e[i+t]=this[i+n];else e._set(this.subarray(n,n+o),t)}},f.prototype.slice=function(e,t){var n=this.length;if(e=S(e,n,0),t=S(t,n,n),f._useTypedArrays)return f._augment(this.subarray(e,t));for(var r=t-e,o=new f(r,void 0,!0),i=0;i<r;i++)o[i]=this[i+e];return o},f.prototype.get=function(e){return console.log(\".get() is deprecated. Access using array indexes instead.\"),this.readUInt8(e)},f.prototype.set=function(e,t){return console.log(\".set() is deprecated. Access using array indexes instead.\"),this.writeUInt8(e,t)},f.prototype.readUInt8=function(e,t){if(t||(d(null!=e,\"missing offset\"),d(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return this[e]},f.prototype.readUInt16LE=function(e,t){return o(this,e,!0,t)},f.prototype.readUInt16BE=function(e,t){return o(this,e,!1,t)},f.prototype.readUInt32LE=function(e,t){return u(this,e,!0,t)},f.prototype.readUInt32BE=function(e,t){return u(this,e,!1,t)},f.prototype.readInt8=function(e,t){if(t||(d(null!=e,\"missing offset\"),d(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return 128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){return _(this,e,!0,t)},f.prototype.readInt16BE=function(e,t){return _(this,e,!1,t)},f.prototype.readInt32LE=function(e,t){return E(this,e,!0,t)},f.prototype.readInt32BE=function(e,t){return E(this,e,!1,t)},f.prototype.readFloatLE=function(e,t){return I(this,e,!0,t)},f.prototype.readFloatBE=function(e,t){return I(this,e,!1,t)},f.prototype.readDoubleLE=function(e,t){return A(this,e,!0,t)},f.prototype.readDoubleBE=function(e,t){return A(this,e,!1,t)},f.prototype.writeUInt8=function(e,t,n){n||(d(null!=e,\"missing value\"),d(null!=t,\"missing offset\"),d(t<this.length,\"trying to write beyond buffer length\"),Y(e,255)),t>=this.length||(this[t]=e)},f.prototype.writeUInt16LE=function(e,t,n){s(this,e,t,!0,n)},f.prototype.writeUInt16BE=function(e,t,n){s(this,e,t,!1,n)},f.prototype.writeUInt32LE=function(e,t,n){l(this,e,t,!0,n)},f.prototype.writeUInt32BE=function(e,t,n){l(this,e,t,!1,n)},f.prototype.writeInt8=function(e,t,n){n||(d(null!=e,\"missing value\"),d(null!=t,\"missing offset\"),d(t<this.length,\"Trying to write beyond buffer length\"),F(e,127,-128)),t>=this.length||(0<=e?this.writeUInt8(e,t,n):this.writeUInt8(255+e+1,t,n))},f.prototype.writeInt16LE=function(e,t,n){B(this,e,t,!0,n)},f.prototype.writeInt16BE=function(e,t,n){B(this,e,t,!1,n)},f.prototype.writeInt32LE=function(e,t,n){L(this,e,t,!0,n)},f.prototype.writeInt32BE=function(e,t,n){L(this,e,t,!1,n)},f.prototype.writeFloatLE=function(e,t,n){U(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){U(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){x(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){x(this,e,t,!1,n)},f.prototype.fill=function(e,t,n){if(t=t||0,n=n||this.length,d(\"number\"==typeof(e=\"string\"==typeof(e=e||0)?e.charCodeAt(0):e)&&!isNaN(e),\"value is not a number\"),d(t<=n,\"end < start\"),n!==t&&0!==this.length){d(0<=t&&t<this.length,\"start out of bounds\"),d(0<=n&&n<=this.length,\"end out of bounds\");for(var r=t;r<n;r++)this[r]=e}},f.prototype.inspect=function(){for(var e=[],t=this.length,n=0;n<t;n++)if(e[n]=k(this[n]),n===H.INSPECT_MAX_BYTES){e[n+1]=\"...\";break}return\"<Buffer \"+e.join(\" \")+\">\"},f.prototype.toArrayBuffer=function(){if(\"undefined\"==typeof Uint8Array)throw new Error(\"Buffer.toArrayBuffer not supported in this browser\");if(f._useTypedArrays)return new f(this).buffer;for(var e=new Uint8Array(this.length),t=0,n=e.length;t<n;t+=1)e[t]=this[t];return e.buffer};var t=f.prototype;function S(e,t,n){return\"number\"!=typeof e?n:t<=(e=~~e)?t:0<=e||0<=(e+=t)?e:0}function j(e){return(e=~~Math.ceil(+e))<0?0:e}function C(e){return(Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)})(e)}function k(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function T(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<=127)t.push(e.charCodeAt(n));else for(var o=n,i=(55296<=r&&r<=57343&&n++,encodeURIComponent(e.slice(o,n+1)).substr(1).split(\"%\")),u=0;u<i.length;u++)t.push(parseInt(i[u],16))}return t}function M(e){return a.toByteArray(e)}function c(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);o++)t[o+n]=e[o];return o}function N(e){try{return decodeURIComponent(e)}catch(e){return String.fromCharCode(65533)}}function Y(e,t){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(0<=e,\"specified a negative value for writing an unsigned value\"),d(e<=t,\"value is larger than maximum value for type\"),d(Math.floor(e)===e,\"value has a fractional component\")}function F(e,t,n){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(e<=t,\"value larger than maximum allowed value\"),d(n<=e,\"value smaller than minimum allowed value\"),d(Math.floor(e)===e,\"value has a fractional component\")}function D(e,t,n){d(\"number\"==typeof e,\"cannot write a non-number as a number\"),d(e<=t,\"value larger than maximum allowed value\"),d(n<=e,\"value smaller than minimum allowed value\")}function d(e,t){if(!e)throw new Error(t||\"Failed assertion\")}f._augment=function(e){return e._isBuffer=!0,e._get=e.get,e._set=e.set,e.get=t.get,e.set=t.set,e.write=t.write,e.toString=t.toString,e.toLocaleString=t.toString,e.toJSON=t.toJSON,e.copy=t.copy,e.slice=t.slice,e.readUInt8=t.readUInt8,e.readUInt16LE=t.readUInt16LE,e.readUInt16BE=t.readUInt16BE,e.readUInt32LE=t.readUInt32LE,e.readUInt32BE=t.readUInt32BE,e.readInt8=t.readInt8,e.readInt16LE=t.readInt16LE,e.readInt16BE=t.readInt16BE,e.readInt32LE=t.readInt32LE,e.readInt32BE=t.readInt32BE,e.readFloatLE=t.readFloatLE,e.readFloatBE=t.readFloatBE,e.readDoubleLE=t.readDoubleLE,e.readDoubleBE=t.readDoubleBE,e.writeUInt8=t.writeUInt8,e.writeUInt16LE=t.writeUInt16LE,e.writeUInt16BE=t.writeUInt16BE,e.writeUInt32LE=t.writeUInt32LE,e.writeUInt32BE=t.writeUInt32BE,e.writeInt8=t.writeInt8,e.writeInt16LE=t.writeInt16LE,e.writeInt16BE=t.writeInt16BE,e.writeInt32LE=t.writeInt32LE,e.writeInt32BE=t.writeInt32BE,e.writeFloatLE=t.writeFloatLE,e.writeFloatBE=t.writeFloatBE,e.writeDoubleLE=t.writeDoubleLE,e.writeDoubleBE=t.writeDoubleBE,e.fill=t.fill,e.inspect=t.inspect,e.toArrayBuffer=t.toArrayBuffer,e}}.call(this,O(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},O(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/buffer/index.js\",\"/node_modules/gulp-browserify/node_modules/buffer\")},{\"base64-js\":2,buffer:3,ieee754:10,lYpoI2:11}],4:[function(c,d,e){!function(e,t,a,n,r,o,i,u,s){var a=c(\"buffer\").Buffer,f=4,l=new a(f);l.fill(0);d.exports={hash:function(e,t,n,r){for(var o=t(function(e,t){e.length%f!=0&&(n=e.length+(f-e.length%f),e=a.concat([e,l],n));for(var n,r=[],o=t?e.readInt32BE:e.readInt32LE,i=0;i<e.length;i+=f)r.push(o.call(e,i));return r}(e=a.isBuffer(e)?e:new a(e),r),8*e.length),t=r,i=new a(n),u=t?i.writeInt32BE:i.writeInt32LE,s=0;s<o.length;s++)u.call(i,o[s],4*s,!0);return i}}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:11}],5:[function(v,e,_){!function(l,c,u,d,h,p,g,y,w){var u=v(\"buffer\").Buffer,e=v(\"./sha\"),t=v(\"./sha256\"),n=v(\"./rng\"),b={sha1:e,sha256:t,md5:v(\"./md5\")},s=64,a=new u(s);function r(e,n){var r=b[e=e||\"sha1\"],o=[];return r||i(\"algorithm:\",e,\"is not yet supported\"),{update:function(e){return u.isBuffer(e)||(e=new u(e)),o.push(e),e.length,this},digest:function(e){var t=u.concat(o),t=n?function(e,t,n){u.isBuffer(t)||(t=new u(t)),u.isBuffer(n)||(n=new u(n)),t.length>s?t=e(t):t.length<s&&(t=u.concat([t,a],s));for(var r=new u(s),o=new u(s),i=0;i<s;i++)r[i]=54^t[i],o[i]=92^t[i];return n=e(u.concat([r,n])),e(u.concat([o,n]))}(r,n,t):r(t);return o=null,e?t.toString(e):t}}}function i(){var e=[].slice.call(arguments).join(\" \");throw new Error([e,\"we accept pull requests\",\"http://github.com/dominictarr/crypto-browserify\"].join(\"\\n\"))}a.fill(0),_.createHash=function(e){return r(e)},_.createHmac=r,_.randomBytes=function(e,t){if(!t||!t.call)return new u(n(e));try{t.call(this,void 0,new u(n(e)))}catch(e){t(e)}};var o,f=[\"createCredentials\",\"createCipher\",\"createCipheriv\",\"createDecipher\",\"createDecipheriv\",\"createSign\",\"createVerify\",\"createDiffieHellman\",\"pbkdf2\"],m=function(e){_[e]=function(){i(\"sorry,\",e,\"is not implemented yet\")}};for(o in f)m(f[o],o)}.call(this,v(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},v(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./md5\":6,\"./rng\":7,\"./sha\":8,\"./sha256\":9,buffer:3,lYpoI2:11}],6:[function(w,b,e){!function(e,r,o,i,u,a,f,l,y){var t=w(\"./helpers\");function n(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var n=1732584193,r=-271733879,o=-1732584194,i=271733878,u=0;u<e.length;u+=16){var s=n,a=r,f=o,l=i,n=c(n,r,o,i,e[u+0],7,-680876936),i=c(i,n,r,o,e[u+1],12,-389564586),o=c(o,i,n,r,e[u+2],17,606105819),r=c(r,o,i,n,e[u+3],22,-1044525330);n=c(n,r,o,i,e[u+4],7,-176418897),i=c(i,n,r,o,e[u+5],12,1200080426),o=c(o,i,n,r,e[u+6],17,-1473231341),r=c(r,o,i,n,e[u+7],22,-45705983),n=c(n,r,o,i,e[u+8],7,1770035416),i=c(i,n,r,o,e[u+9],12,-1958414417),o=c(o,i,n,r,e[u+10],17,-42063),r=c(r,o,i,n,e[u+11],22,-1990404162),n=c(n,r,o,i,e[u+12],7,1804603682),i=c(i,n,r,o,e[u+13],12,-40341101),o=c(o,i,n,r,e[u+14],17,-1502002290),n=d(n,r=c(r,o,i,n,e[u+15],22,1236535329),o,i,e[u+1],5,-165796510),i=d(i,n,r,o,e[u+6],9,-1069501632),o=d(o,i,n,r,e[u+11],14,643717713),r=d(r,o,i,n,e[u+0],20,-373897302),n=d(n,r,o,i,e[u+5],5,-701558691),i=d(i,n,r,o,e[u+10],9,38016083),o=d(o,i,n,r,e[u+15],14,-660478335),r=d(r,o,i,n,e[u+4],20,-405537848),n=d(n,r,o,i,e[u+9],5,568446438),i=d(i,n,r,o,e[u+14],9,-1019803690),o=d(o,i,n,r,e[u+3],14,-187363961),r=d(r,o,i,n,e[u+8],20,1163531501),n=d(n,r,o,i,e[u+13],5,-1444681467),i=d(i,n,r,o,e[u+2],9,-51403784),o=d(o,i,n,r,e[u+7],14,1735328473),n=h(n,r=d(r,o,i,n,e[u+12],20,-1926607734),o,i,e[u+5],4,-378558),i=h(i,n,r,o,e[u+8],11,-2022574463),o=h(o,i,n,r,e[u+11],16,1839030562),r=h(r,o,i,n,e[u+14],23,-35309556),n=h(n,r,o,i,e[u+1],4,-1530992060),i=h(i,n,r,o,e[u+4],11,1272893353),o=h(o,i,n,r,e[u+7],16,-155497632),r=h(r,o,i,n,e[u+10],23,-1094730640),n=h(n,r,o,i,e[u+13],4,681279174),i=h(i,n,r,o,e[u+0],11,-358537222),o=h(o,i,n,r,e[u+3],16,-722521979),r=h(r,o,i,n,e[u+6],23,76029189),n=h(n,r,o,i,e[u+9],4,-640364487),i=h(i,n,r,o,e[u+12],11,-421815835),o=h(o,i,n,r,e[u+15],16,530742520),n=p(n,r=h(r,o,i,n,e[u+2],23,-995338651),o,i,e[u+0],6,-198630844),i=p(i,n,r,o,e[u+7],10,1126891415),o=p(o,i,n,r,e[u+14],15,-1416354905),r=p(r,o,i,n,e[u+5],21,-57434055),n=p(n,r,o,i,e[u+12],6,1700485571),i=p(i,n,r,o,e[u+3],10,-1894986606),o=p(o,i,n,r,e[u+10],15,-1051523),r=p(r,o,i,n,e[u+1],21,-2054922799),n=p(n,r,o,i,e[u+8],6,1873313359),i=p(i,n,r,o,e[u+15],10,-30611744),o=p(o,i,n,r,e[u+6],15,-1560198380),r=p(r,o,i,n,e[u+13],21,1309151649),n=p(n,r,o,i,e[u+4],6,-145523070),i=p(i,n,r,o,e[u+11],10,-1120210379),o=p(o,i,n,r,e[u+2],15,718787259),r=p(r,o,i,n,e[u+9],21,-343485551),n=g(n,s),r=g(r,a),o=g(o,f),i=g(i,l)}return Array(n,r,o,i)}function s(e,t,n,r,o,i){return g((t=g(g(t,e),g(r,i)))<<o|t>>>32-o,n)}function c(e,t,n,r,o,i,u){return s(t&n|~t&r,e,t,o,i,u)}function d(e,t,n,r,o,i,u){return s(t&r|n&~r,e,t,o,i,u)}function h(e,t,n,r,o,i,u){return s(t^n^r,e,t,o,i,u)}function p(e,t,n,r,o,i,u){return s(n^(t|~r),e,t,o,i,u)}function g(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}b.exports=function(e){return t.hash(e,n,16)}}.call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],7:[function(e,l,t){!function(e,t,n,r,o,i,u,s,f){var a;l.exports=a||function(e){for(var t,n=new Array(e),r=0;r<e;r++)0==(3&r)&&(t=4294967296*Math.random()),n[r]=t>>>((3&r)<<3)&255;return n}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:11}],8:[function(c,d,e){!function(e,t,n,r,o,s,a,f,l){var i=c(\"./helpers\");function u(l,c){l[c>>5]|=128<<24-c%32,l[15+(c+64>>9<<4)]=c;for(var e,t,n,r=Array(80),o=1732584193,i=-271733879,u=-1732584194,s=271733878,d=-1009589776,h=0;h<l.length;h+=16){for(var p=o,g=i,y=u,w=s,b=d,a=0;a<80;a++){r[a]=a<16?l[h+a]:v(r[a-3]^r[a-8]^r[a-14]^r[a-16],1);var f=m(m(v(o,5),(f=i,t=u,n=s,(e=a)<20?f&t|~f&n:!(e<40)&&e<60?f&t|f&n|t&n:f^t^n)),m(m(d,r[a]),(e=a)<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514)),d=s,s=u,u=v(i,30),i=o,o=f}o=m(o,p),i=m(i,g),u=m(u,y),s=m(s,w),d=m(d,b)}return Array(o,i,u,s,d)}function m(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function v(e,t){return e<<t|e>>>32-t}d.exports=function(e){return i.hash(e,u,20,!0)}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],9:[function(c,d,e){!function(e,t,n,r,u,s,a,f,l){function b(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function o(e,l){var c,d=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),t=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),n=new Array(64);e[l>>5]|=128<<24-l%32,e[15+(l+64>>9<<4)]=l;for(var r,o,h=0;h<e.length;h+=16){for(var i=t[0],u=t[1],s=t[2],p=t[3],a=t[4],g=t[5],y=t[6],w=t[7],f=0;f<64;f++)n[f]=f<16?e[f+h]:b(b(b((o=n[f-2],m(o,17)^m(o,19)^v(o,10)),n[f-7]),(o=n[f-15],m(o,7)^m(o,18)^v(o,3))),n[f-16]),c=b(b(b(b(w,m(o=a,6)^m(o,11)^m(o,25)),a&g^~a&y),d[f]),n[f]),r=b(m(r=i,2)^m(r,13)^m(r,22),i&u^i&s^u&s),w=y,y=g,g=a,a=b(p,c),p=s,s=u,u=i,i=b(c,r);t[0]=b(i,t[0]),t[1]=b(u,t[1]),t[2]=b(s,t[2]),t[3]=b(p,t[3]),t[4]=b(a,t[4]),t[5]=b(g,t[5]),t[6]=b(y,t[6]),t[7]=b(w,t[7])}return t}var i=c(\"./helpers\"),m=function(e,t){return e>>>t|e<<32-t},v=function(e,t){return e>>>t};d.exports=function(e){return i.hash(e,o,32,!0)}}.call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:11}],10:[function(e,t,f){!function(e,t,n,r,o,i,u,s,a){f.read=function(e,t,n,r,o){var i,u,l=8*o-r-1,c=(1<<l)-1,d=c>>1,s=-7,a=n?o-1:0,f=n?-1:1,o=e[t+a];for(a+=f,i=o&(1<<-s)-1,o>>=-s,s+=l;0<s;i=256*i+e[t+a],a+=f,s-=8);for(u=i&(1<<-s)-1,i>>=-s,s+=r;0<s;u=256*u+e[t+a],a+=f,s-=8);if(0===i)i=1-d;else{if(i===c)return u?NaN:1/0*(o?-1:1);u+=Math.pow(2,r),i-=d}return(o?-1:1)*u*Math.pow(2,i-r)},f.write=function(e,t,l,n,r,c){var o,i,u=8*c-r-1,s=(1<<u)-1,a=s>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:c-1,h=n?1:-1,c=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(i=isNaN(t)?1:0,o=s):(o=Math.floor(Math.log(t)/Math.LN2),t*(n=Math.pow(2,-o))<1&&(o--,n*=2),2<=(t+=1<=o+a?d/n:d*Math.pow(2,1-a))*n&&(o++,n/=2),s<=o+a?(i=0,o=s):1<=o+a?(i=(t*n-1)*Math.pow(2,r),o+=a):(i=t*Math.pow(2,a-1)*Math.pow(2,r),o=0));8<=r;e[l+f]=255&i,f+=h,i/=256,r-=8);for(o=o<<r|i,u+=r;0<u;e[l+f]=255&o,f+=h,o/=256,u-=8);e[l+f-h]|=128*c}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/ieee754/index.js\",\"/node_modules/gulp-browserify/node_modules/ieee754\")},{buffer:3,lYpoI2:11}],11:[function(e,h,t){!function(e,t,n,r,o,f,l,c,d){var i,u,s;function a(){}(e=h.exports={}).nextTick=(u=\"undefined\"!=typeof window&&window.setImmediate,s=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener,u?function(e){return window.setImmediate(e)}:s?(i=[],window.addEventListener(\"message\",function(e){var t=e.source;t!==window&&null!==t||\"process-tick\"!==e.data||(e.stopPropagation(),0<i.length&&i.shift()())},!0),function(e){i.push(e),window.postMessage(\"process-tick\",\"*\")}):function(e){setTimeout(e,0)}),e.title=\"browser\",e.browser=!0,e.env={},e.argv=[],e.on=a,e.addListener=a,e.once=a,e.off=a,e.removeListener=a,e.removeAllListeners=a,e.emit=a,e.binding=function(e){throw new Error(\"process.binding is not supported\")},e.cwd=function(){return\"/\"},e.chdir=function(e){throw new Error(\"process.chdir is not supported\")}}.call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/process/browser.js\",\"/node_modules/gulp-browserify/node_modules/process\")},{buffer:3,lYpoI2:11}]},{},[1])(1)});","import { xFindClosestIndex } from 'ml-spectra-processing';\n\nexport function getFromToIndex(xs, range) {\n  let { from, to } = range;\n  if (from === undefined) {\n    from = xs[0];\n  }\n  if (to === undefined) {\n    to = xs[xs.length - 1];\n  }\n\n  return {\n    fromIndex: xFindClosestIndex(xs, from),\n    toIndex: xFindClosestIndex(xs, to),\n  };\n}\n","import { xSum, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function integration(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xSum(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xSum(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMaxValue, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function max(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xMaxValue(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xMaxValue(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMinValue, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function min(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xMinValue(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xMinValue(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMinValue, xMaxValue } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function minMax(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n  let targetValue = {\n    min: xMinValue(normalizedTarget.y, fromToIndex),\n    max: xMaxValue(normalizedTarget.y, fromToIndex),\n  };\n\n  let deltaTarget = targetValue.max - targetValue.min;\n  let minTarget = targetValue.min;\n\n  let values = matrix.map((row) => {\n    return {\n      min: xMinValue(row, fromToIndex),\n      max: xMaxValue(row, fromToIndex),\n    };\n  });\n  for (let i = 0; i < matrix.length; i++) {\n    let deltaSource = values[i].max - values[i].min;\n    let minSource = values[i].min;\n    let newData = [];\n    for (let j = 0; j < normalizedTarget.y.length; j++) {\n      newData.push(\n        ((matrix[i][j] - minSource) / deltaSource) * deltaTarget + minTarget,\n      );\n    }\n    matrix[i] = newData;\n  }\n}\n","import {\n  xSubtract,\n  xyMaxYPoint,\n  xSum,\n  matrixPQN,\n  matrixZRescale,\n  matrixCenterZMean,\n} from 'ml-spectra-processing';\nimport hash from 'object-hash';\n\nimport { getNormalizedData } from './getNormalizedData';\nimport { getFromToIndex } from './scaled/getFromToIndex';\nimport { integration } from './scaled/integration';\nimport { max } from './scaled/max';\nimport { min } from './scaled/min';\nimport { minMax } from './scaled/minMax';\n/**\n * Allows to calculate relative intensity between normalized spectra\n * @param {SpectraProcessor} spectraProcessor\n * @param {object}   [options={}] scale spectra based on various parameters\n * @param {Array}    [options.ids] ids of selected spectra\n * @param {Array}    [options.filters=[]] Array of object containing {name:'', options:''}\n * @param {object}   [options.scale={}] object containing the options for rescaling\n * @param {string}   [options.scale.targetID=spectra[0].id]\n * @param {string}   [options.scale.method='max'] min, max, integration, minMax\n * @param {Array}    [options.scale.range] from - to to apply the method and rescale\n * @param {boolean}  [options.scale.relative=false]\n * @param {Array}    [options.ranges] Array of object containing {from:'', to:'', label:''}\n * @param {Array}    [options.calculations] Array of object containing {label:'', formula:''}\n * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[], ranges:[object] }\n */\n\nlet cache = {};\n\nexport function getPostProcessedData(spectraProcessor, options = {}) {\n  /**\n   * could implement a cache if all the options are identical and the normalized data is identical as well\n   * in order ot check if the normalized data are identical we should check if the normalized array of all the spectra are identical\n   * Because we don't make in-place modification when creating normalized array we can check if the 'pointer' to the object\n   * is identical\n   */\n\n  const optionsHash = hash(options);\n\n  if (!spectraProcessor.spectra || !spectraProcessor.spectra[0]) return {};\n  const { scale = {}, ids, ranges, calculations, filters = [] } = options;\n\n  const { range, targetID, relative, method = '' } = scale;\n\n  let spectra = spectraProcessor.getSpectra(ids);\n\n  // are we able to reuse the cache ?\n  // we can if the normalized information didn't change and optionsHash is the same\n  if (cache.optionsHash === optionsHash) {\n    let validCache = true;\n    for (let spectrum of spectra) {\n      if (!cache.weakMap.get(spectrum.normalized)) validCache = false;\n    }\n    if (validCache) return cache;\n  }\n  const weakMap = new WeakMap();\n  for (let spectrum of spectra) {\n    weakMap.set(spectrum.normalized, true);\n  }\n\n  let normalizedData = getNormalizedData(spectra);\n\n  for (let filter of filters) {\n    switch (filter.name) {\n      case 'pqn': {\n        normalizedData.matrix = matrixPQN(\n          normalizedData.matrix,\n          filter.options,\n        ).data;\n        break;\n      }\n      case 'centerMean': {\n        normalizedData.matrix = matrixCenterZMean(normalizedData.matrix);\n        break;\n      }\n      case 'rescale': {\n        normalizedData.matrix = matrixZRescale(\n          normalizedData.matrix,\n          filter.options,\n        );\n        break;\n      }\n      case '':\n      case undefined:\n        break;\n      default:\n        throw new Error(`Unknown matrix filter name: ${filter.name}`);\n    }\n  }\n\n  let normalizedTarget = targetID\n    ? spectraProcessor.getSpectrum(targetID).normalized\n    : spectraProcessor.spectra[0].normalized;\n\n  if (method) {\n    switch (method.toLowerCase()) {\n      case 'min':\n        min(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'max':\n        max(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'minmax':\n        minMax(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'integration':\n        integration(normalizedData.matrix, normalizedTarget, range);\n        break;\n      default:\n        throw new Error(`getPostProcessedData: unknown method: ${method}`);\n    }\n  }\n\n  if (relative) {\n    for (let i = 0; i < normalizedData.matrix.length; i++) {\n      normalizedData.matrix[i] = xSubtract(\n        normalizedData.matrix[i],\n        normalizedTarget.y,\n      );\n    }\n  }\n\n  if (ranges) {\n    normalizedData.ranges = [];\n    for (let i = 0; i < normalizedData.matrix.length; i++) {\n      let rangesCopy = JSON.parse(JSON.stringify(ranges));\n      let yNormalized = normalizedData.matrix[i];\n      let resultRanges = {};\n      normalizedData.ranges.push(resultRanges);\n      for (let currentRange of rangesCopy) {\n        if (currentRange.label) {\n          let fromToIndex = getFromToIndex(normalizedTarget.x, currentRange);\n\n          let deltaX = normalizedTarget.x[1] - normalizedTarget.x[0];\n\n          currentRange.integration = xSum(yNormalized, fromToIndex) * deltaX;\n          currentRange.maxPoint = xyMaxYPoint(\n            { x: normalizedData.x, y: yNormalized },\n            fromToIndex,\n          );\n          resultRanges[currentRange.label] = currentRange;\n        }\n      }\n    }\n  }\n\n  if (calculations && normalizedData.ranges) {\n    normalizedData.calculations = normalizedData.ranges.map(() => {\n      return {};\n    });\n    const parameters = Object.keys(normalizedData.ranges[0]);\n    for (let calculation of calculations) {\n      // eslint-disable-next-line no-new-func\n      const callback = new Function(\n        ...parameters,\n        `return ${calculation.formula}`,\n      );\n      for (let i = 0; i < normalizedData.ranges.length; i++) {\n        let oneRanges = normalizedData.ranges[i];\n        let values = parameters.map((key) => oneRanges[key].integration);\n        normalizedData.calculations[i][calculation.label] = callback(...values);\n      }\n    }\n  }\n\n  cache = { ...normalizedData, optionsHash, weakMap };\n  return cache;\n}\n","import { getPostProcessedData } from './getPostProcessedData.js';\nimport { convertToText } from './util/convertToText.js';\n\n/**\n * @private\n * @param {SpectraProcessor} spectraProcessor\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] field separator\n * @param {string} [options.rs='\\n'] record (line) separator\n * @param {object} [options.postProcessing={}] post processing options\n */\n\nexport function getPostProcessedText(spectraProcessor, options = {}) {\n  let {\n    fs = '\\t',\n    rs = '\\n',\n    postProcessing: postProcessingOptions = {},\n  } = options;\n  return convertToText(\n    getPostProcessedData(spectraProcessor, postProcessingOptions),\n    {\n      rs,\n      fs,\n    },\n  );\n}\n","import { xyFilterX } from 'ml-spectra-processing';\n/**\n *\n * @private\n * @param {Spectrum} spectrum\n * @param {object} [options={}]\n * @param {object} [options.xFilter={}]\n * @param {number} [options.xFilter.from]\n * @param {number} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n * @param {number} [options.yFactor=1]\n */\n\nexport function getData(spectrum, options = {}) {\n  const { xFilter = {}, yFactor = 1 } = options;\n  let data = { x: spectrum.x, y: spectrum.y };\n\n  if (xFilter) {\n    data = xyFilterX(spectrum, xFilter);\n  }\n  if (yFactor && yFactor !== 1) {\n    data.y = data.y.map((y) => y * yFactor);\n  }\n  return data;\n}\n","import { xMean } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function centerMean(data) {\n    const { y } = data;\n    const mean = xMean(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= mean;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMean.js.map","import { xMedian } from 'ml-spectra-processing';\n/**\n * Center the median\n * @param data\n */\nexport function centerMedian(data) {\n    const { y } = data;\n    const median = xMedian(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= median;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMedian.js.map","import { xGetFromToIndex } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function fromTo(data, options = {}) {\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, options);\n    return {\n        data: {\n            x: data.x.subarray(fromIndex, toIndex + 1),\n            y: data.y.subarray(fromIndex, toIndex + 1),\n        },\n    };\n}\n//# sourceMappingURL=fromTo.js.map","import { xNormed } from 'ml-spectra-processing';\n/**\n * Norm the Y values\n * @param data\n */\nexport function normed(data, options = {}) {\n    xNormed(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=normed.js.map","import { xStandardDeviation } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function divideBySD(data) {\n    const { y } = data;\n    const sd = xStandardDeviation(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] /= sd;\n    }\n    return { data };\n}\n//# sourceMappingURL=divideBySD.js.map","import { xRescale } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function rescale(data, options = {}) {\n    xRescale(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=rescale.js.map","import { xParetoNormalization } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n */\nexport function paretoNormalization(data) {\n    return {\n        data: {\n            x: data.x,\n            y: xParetoNormalization(data.y),\n        },\n    };\n}\n//# sourceMappingURL=paretoNormalization.js.map","// Based on https://github.com/scijs/cholesky-solve\r\n\r\n/*\r\nThe MIT License (MIT)\r\n\r\nCopyright (c) 2013 Eric Arnebäck\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n*/\r\n\r\nfunction ldlSymbolic(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n + 1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Lp /* output of size n + 1, not defined on input */,\r\n  Parent /* output of size n, not defined on input */,\r\n  Lnz /* output of size n, not defined on input */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let i, k, p, kk, p2;\r\n\r\n  for (k = 0; k < n; k++) {\r\n    /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\r\n    Parent[k] = -1; /* parent of k is not yet known */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      /* A (i,k) is nonzero (original or permuted A) */\r\n      i = Ai[p];\r\n\r\n      if (i < k) {\r\n        /* follow path from i to root of etree, stop at flagged node */\r\n        for (; Flag[i] !== k; i = Parent[i]) {\r\n          /* find parent of i if not yet determined */\r\n          if (Parent[i] === -1) Parent[i] = k;\r\n          Lnz[i]++; /* L (k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n      }\r\n    }\r\n  }\r\n  /* construct Lp index array from Lnz column counts */\r\n  Lp[0] = 0;\r\n  for (k = 0; k < n; k++) {\r\n    Lp[k + 1] = Lp[k] + Lnz[k];\r\n  }\r\n}\r\n\r\nfunction ldlNumeric(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n+1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Ax /* input of size nz=Ap[n], not modified */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Parent /* input of size n, not modified */,\r\n  Lnz /* output of size n, not defn. on input */,\r\n  Li /* output of size lnz=Lp[n], not defined on input */,\r\n  Lx /* output of size lnz=Lp[n], not defined on input */,\r\n  D /* output of size n, not defined on input */,\r\n  Y /* workspace of size n, not defn. on input or output */,\r\n  Pattern /* workspace of size n, not defn. on input or output */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let yi, lKi;\r\n  let i, k, p, kk, p2, len, top;\r\n  for (k = 0; k < n; k++) {\r\n    /* compute nonzero Pattern of kth row of L, in topological order */\r\n    Y[k] = 0.0; /* Y(0:k) is now all zero */\r\n    top = n; /* stack for pattern is empty */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      i = Ai[p]; /* get A(i,k) */\r\n      if (i <= k) {\r\n        Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\r\n        for (len = 0; Flag[i] !== k; i = Parent[i]) {\r\n          Pattern[len++] = i; /* L(k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n        while (len > 0) Pattern[--top] = Pattern[--len];\r\n      }\r\n    }\r\n    /* compute numerical values kth row of L (a sparse triangular solve) */\r\n    D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\r\n    Y[k] = 0.0;\r\n    for (; top < n; top++) {\r\n      i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\r\n      yi = Y[i]; /* get and clear Y(i) */\r\n      Y[i] = 0.0;\r\n      p2 = Lp[i] + Lnz[i];\r\n      for (p = Lp[i]; p < p2; p++) {\r\n        Y[Li[p]] -= Lx[p] * yi;\r\n      }\r\n      lKi = yi / D[i]; /* the nonzero entry L(k,i) */\r\n      D[k] -= lKi * yi;\r\n      Li[p] = k; /* store L(k,i) in column form of L */\r\n      Lx[p] = lKi;\r\n      Lnz[i]++; /* increment count of nonzeros in col i */\r\n    }\r\n\r\n    if (D[k] === 0.0) return k; /* failure, D(k,k) is zero */\r\n  }\r\n\r\n  return n; /* success, diagonal of D is all nonzero */\r\n}\r\n\r\nfunction ldlLsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = 0; j < n; j++) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[Li[p]] -= Lx[p] * X[j];\r\n    }\r\n  }\r\n}\r\nfunction ldlDsolve(\r\n  n /* D is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  D /* input of size n, not modified */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] /= D[j];\r\n  }\r\n}\r\nfunction ldlLTsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = n - 1; j >= 0; j--) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[j] -= Lx[p] * X[Li[p]];\r\n    }\r\n  }\r\n}\r\n\r\nfunction ldlPerm(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] = B[P[j]];\r\n  }\r\n}\r\n\r\nfunction ldlPermt(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[P[j]] = B[j];\r\n  }\r\n}\r\n\r\nfunction prepare(M, n, P) {\r\n  // if a permutation was specified, apply it.\r\n  if (P) {\r\n    let Pinv = new Array(n);\r\n\r\n    for (let k = 0; k < n; k++) {\r\n      Pinv[P[k]] = k;\r\n    }\r\n\r\n    let Mt = []; // scratch memory\r\n    // Apply permutation. We make M into P*M*P^T\r\n    for (let a = 0; a < M.length; ++a) {\r\n      let ar = Pinv[M[a][0]];\r\n      let ac = Pinv[M[a][1]];\r\n\r\n      // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\r\n      // if permuted element is below diagonal, we simply transpose it.\r\n      if (ac < ar) {\r\n        let t = ac;\r\n        ac = ar;\r\n        ar = t;\r\n      }\r\n\r\n      Mt[a] = [];\r\n      Mt[a][0] = ar;\r\n      Mt[a][1] = ac;\r\n      Mt[a][2] = M[a][2];\r\n    }\r\n\r\n    M = Mt; // copy scratch memory.\r\n  } else {\r\n    // if P argument is null, we just use an identity permutation.\r\n    P = [];\r\n    for (let i = 0; i < n; ++i) {\r\n      P[i] = i;\r\n    }\r\n  }\r\n\r\n  // The sparse matrix we are decomposing is A.\r\n  // Now we shall create A from M.\r\n  let Ap = new Array(n + 1);\r\n  let Ai = new Array(M.length);\r\n  let Ax = new Array(M.length);\r\n\r\n  // count number of non-zero elements in columns.\r\n  let LNZ = [];\r\n  for (let i = 0; i < n; ++i) {\r\n    LNZ[i] = 0;\r\n  }\r\n  for (let a = 0; a < M.length; ++a) {\r\n    LNZ[M[a][1]]++;\r\n  }\r\n\r\n  Ap[0] = 0;\r\n  for (let i = 0; i < n; ++i) {\r\n    Ap[i + 1] = Ap[i] + LNZ[i];\r\n  }\r\n\r\n  let coloffset = [];\r\n  for (let a = 0; a < n; ++a) {\r\n    coloffset[a] = 0;\r\n  }\r\n\r\n  // go through all elements in M, and add them to sparse matrix A.\r\n  for (let i = 0; i < M.length; ++i) {\r\n    let e = M[i];\r\n    let col = e[1];\r\n\r\n    let adr = Ap[col] + coloffset[col];\r\n    Ai[adr] = e[0];\r\n    Ax[adr] = e[2];\r\n\r\n    coloffset[col]++;\r\n  }\r\n\r\n  let D = new Array(n);\r\n  let Y = new Array(n);\r\n  let Lp = new Array(n + 1);\r\n  let Parent = new Array(n);\r\n  let Lnz = new Array(n);\r\n  let Flag = new Array(n);\r\n  let Pattern = new Array(n);\r\n  let bp1 = new Array(n);\r\n  let x = new Array(n);\r\n  let d;\r\n\r\n  ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\r\n\r\n  let Lx = new Array(Lp[n]);\r\n  let Li = new Array(Lp[n]);\r\n\r\n  d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\r\n\r\n  if (d === n) {\r\n    return function (b) {\r\n      ldlPerm(n, bp1, b, P);\r\n      ldlLsolve(n, bp1, Lp, Li, Lx);\r\n      ldlDsolve(n, bp1, D);\r\n      ldlLTsolve(n, bp1, Lp, Li, Lx);\r\n      ldlPermt(n, x, bp1, P);\r\n\r\n      return x;\r\n    };\r\n  } else {\r\n    return null;\r\n  }\r\n}\r\n\r\nexport { prepare as default };\r\n","'use strict'\n\nmodule.exports = cuthillMckee\n\nfunction compareNum(a, b) { return a - b }\n\nfunction cuthillMckee(list, n) {\n  var adj = new Array(n)\n  var visited = new Array(n)\n  for(var i=0; i<n; ++i) {\n    adj[i]     = []\n    visited[i] = false\n  }\n\n  for(var i=0; i<list.length; ++i) {\n    var l = list[i]\n    adj[l[0]].push(l[1])\n  }\n\n  var toVisit = new Array(n)\n  var eol = 0\n  var ptr = 0\n  for(var i=0; i<n; ++i) {\n    if(visited[i]) {\n      continue\n    }\n    toVisit[eol++] = i\n    visited[i] = true\n    while(ptr < eol) {\n      var v = toVisit[ptr++]\n      var nbhd = adj[v]\n      nbhd.sort(compareNum)\n      for(var j=0; j<nbhd.length; ++j) {\n        var u = nbhd[j]\n        if(visited[u]) {\n          continue\n        }\n        visited[u] = true\n        toVisit[eol++] = u\n      }\n    }\n  }\n\n  var result = new Array(n)\n  for(var i=0; i<n; ++i) {\n    result[toVisit[i]] = i\n  }\n\n  return result\n}\n","import cuthillMckee from 'cuthill-mckee';\r\n\r\nconst getClosestNumber = (array = [], goal = 0) => {\r\n  const closest = array.reduce((prev, curr) => {\r\n    return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\r\n  });\r\n  return closest;\r\n};\r\n\r\nconst getCloseIndex = (array = [], goal = 0) => {\r\n  const closest = getClosestNumber(array, goal);\r\n  return array.indexOf(closest);\r\n};\r\n\r\nconst updateSystem = (matrix, y, weights) => {\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let newMatrix = new Array(matrix.length);\r\n  let newVector = new Float64Array(nbPoints);\r\n  for (let i = 0; i < l; i++) {\r\n    let w = weights[i];\r\n    let diag = i * 2;\r\n    let next = diag + 1;\r\n    newMatrix[diag] = matrix[diag].slice();\r\n    newMatrix[next] = matrix[next].slice();\r\n    if (w === 0) {\r\n      newVector[i] = 0;\r\n    } else {\r\n      newVector[i] = y[i] * w;\r\n      newMatrix[diag][2] += w;\r\n    }\r\n  }\r\n  newVector[l] = y[l] * weights[l];\r\n  newMatrix[l * 2] = matrix[l * 2].slice();\r\n  newMatrix[l * 2][2] += weights[l];\r\n\r\n  return [newMatrix, newVector];\r\n};\r\n\r\nconst getDeltaMatrix = (nbPoints, lambda) => {\r\n  let matrix = [];\r\n  let last = nbPoints - 1;\r\n  for (let i = 0; i < last; i++) {\r\n    matrix.push([i, i, lambda * 2]);\r\n    matrix.push([i + 1, i, -1 * lambda]);\r\n  }\r\n  matrix[0][2] = lambda;\r\n  matrix.push([last, last, lambda]);\r\n  return {\r\n    lowerTriangularNonZeros: matrix,\r\n    permutationEncodedArray: cuthillMckee(matrix, nbPoints),\r\n  };\r\n};\r\n\r\nexport { updateSystem, getDeltaMatrix, getCloseIndex, getClosestNumber };\r\n","import Cholesky from './choleskySolver';\r\nimport { updateSystem, getDeltaMatrix, getCloseIndex } from './utils';\r\n\r\n/**\r\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\r\n * for further information about the parameters you can get the [paper of airPLS](https://github.com/zmzhang/airPLS/blob/master/airPLS_manuscript.pdf)\r\n * @param {Array<number>} x - x axis data useful when control points or zones are submitted\r\n * @param {Array<number>} y - Original data\r\n * @param {object} [options={}] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximal number of iterations if the method does not reach the stop criterion\r\n * @param {number} [options.factorCriterion = 0.001] - Factor of the sum of absolute value of original data, to compute stop criterion\r\n * @param {Array<number>} [options.weights = [1,1,...]] - Initial weights vector, default each point has the same weight\r\n * @param {number} [options.lambda = 100] - Factor of weights matrix in -> [I + lambda D'D]z = x\r\n * @param {Array<number>} [options.controlPoints = []] - Array of x axis values to force that baseline cross those points.\r\n * @param {Array<number>} [options.baseLineZones = []] - Array of x axis values (as from - to), to force that baseline cross those zones.\r\n * @returns {{corrected: Array<number>, error: number, iteration: number, baseline: Array<number>}}\r\n */\r\nfunction airPLS(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    lambda = 100,\r\n    factorCriterion = 0.001,\r\n    weights = new Array(y.length).fill(1),\r\n    controlPoints = [],\r\n    baseLineZones = [],\r\n  } = options;\r\n\r\n  if (controlPoints.length > 0) {\r\n    controlPoints.forEach((e, i, arr) => (arr[i] = getCloseIndex(x, e)));\r\n  }\r\n  if (baseLineZones.length > 0) {\r\n    baseLineZones.forEach((range) => {\r\n      let indexFrom = getCloseIndex(x, range.from);\r\n      let indexTo = getCloseIndex(x, range.to);\r\n      if (indexFrom > indexTo) [indexFrom, indexTo] = [indexTo, indexFrom];\r\n      for (let i = indexFrom; i < indexTo; i++) {\r\n        controlPoints.push(i);\r\n      }\r\n    });\r\n  }\r\n\r\n  let baseline, iteration;\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let sumNegDifferences = Number.MAX_SAFE_INTEGER;\r\n  let stopCriterion =\r\n    factorCriterion * y.reduce((sum, e) => Math.abs(e) + sum, 0);\r\n\r\n  let { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(\r\n    nbPoints,\r\n    lambda,\r\n  );\r\n\r\n  for (\r\n    iteration = 0;\r\n    iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion;\r\n    iteration++\r\n  ) {\r\n    let [leftHandSide, rightHandSide] = updateSystem(\r\n      lowerTriangularNonZeros,\r\n      y,\r\n      weights,\r\n    );\r\n\r\n    let cho = Cholesky(leftHandSide, nbPoints, permutationEncodedArray);\r\n\r\n    baseline = cho(rightHandSide);\r\n\r\n    sumNegDifferences = 0;\r\n\r\n    let difference = y.map(calculateError);\r\n\r\n    let maxNegativeDiff = -1 * Number.MAX_SAFE_INTEGER;\r\n    for (let i = 1; i < l; i++) {\r\n      let diff = difference[i];\r\n      if (diff >= 0) {\r\n        weights[i] = 0;\r\n      } else {\r\n        weights[i] = Math.exp((iteration * diff) / sumNegDifferences);\r\n        if (maxNegativeDiff < diff) maxNegativeDiff = diff;\r\n      }\r\n    }\r\n\r\n    let value = Math.exp((iteration * maxNegativeDiff) / sumNegDifferences);\r\n    weights[0] = value;\r\n    weights[l] = value;\r\n    controlPoints.forEach((i) => (weights[i] = value));\r\n  }\r\n\r\n  return {\r\n    corrected: y.map((e, i) => e - baseline[i]),\r\n    baseline,\r\n    iteration,\r\n    error: sumNegDifferences,\r\n  };\r\n\r\n  function calculateError(e, i) {\r\n    let diff = e - baseline[i];\r\n    if (diff < 0) sumNegDifferences += diff;\r\n    return diff;\r\n  }\r\n}\r\n\r\nexport { airPLS as default };\r\n","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","import airpls from 'ml-airpls';\nimport sequentialFill from 'ml-array-sequential-fill';\n/**\n * Adaptive iteratively reweighted penalized least squares [1]\n *\n * This function calls ml-airpls\n *\n * References:\n * [1] Zhang, Z.-M.; Chen, S.; Liang, Y.-Z.\n * Baseline Correction Using Adaptive Iteratively Reweighted Penalized Least Squares.\n * Analyst 2010, 135 (5), 1138–1146. https://doi.org/10.1039/B922045C.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {object} [options.regression] - Options for the regression\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.regression.§Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function airPLSBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n  let output = airpls(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport default function checkArraySize(x, y) {\n  if (!isAnyArray(x) || !isAnyArray(y)) {\n    throw new TypeError('x and y must be arrays');\n  }\n  if (x.length !== y.length) {\n    throw new RangeError('x and y arrays must have the same length');\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\n\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\n    const n = x.length;\n    const y2 = new Array(n);\n    for (let i = 0; i < n; i++) {\n      y2[i] = this._predict(x[i]);\n    }\n\n    let xSum = 0;\n    let ySum = 0;\n    let chi2 = 0;\n    let rmsd = 0;\n    let xSquared = 0;\n    let ySquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n      xSum += y2[i];\n      ySum += y[i];\n      xSquared += y2[i] * y2[i];\n      ySquared += y[i] * y[i];\n      xY += y2[i] * y[i];\n      if (y[i] !== 0) {\n        chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n      }\n      rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n    }\n\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\n\nexport default class PolynomialRegression extends BaseRegression {\n  constructor(x, y, degree) {\n    super();\n    if (x === true) {\n      this.degree = y.degree;\n      this.powers = y.powers;\n      this.coefficients = y.coefficients;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y, degree);\n    }\n  }\n\n  _predict(x) {\n    let y = 0;\n    for (let k = 0; k < this.powers.length; k++) {\n      y += this.coefficients[k] * Math.pow(x, this.powers[k]);\n    }\n    return y;\n  }\n\n  toJSON() {\n    return {\n      name: 'polynomialRegression',\n      degree: this.degree,\n      powers: this.powers,\n      coefficients: this.coefficients,\n    };\n  }\n\n  toString(precision) {\n    return this._toFormula(precision, false);\n  }\n\n  toLaTeX(precision) {\n    return this._toFormula(precision, true);\n  }\n\n  _toFormula(precision, isLaTeX) {\n    let sup = '^';\n    let closeSup = '';\n    let times = ' * ';\n    if (isLaTeX) {\n      sup = '^{';\n      closeSup = '}';\n      times = '';\n    }\n\n    let fn = '';\n    let str = '';\n    for (let k = 0; k < this.coefficients.length; k++) {\n      str = '';\n      if (this.coefficients[k] !== 0) {\n        if (this.powers[k] === 0) {\n          str = maybeToPrecision(this.coefficients[k], precision);\n        } else {\n          if (this.powers[k] === 1) {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x`;\n          } else {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x${sup}${this.powers[k]}${closeSup}`;\n          }\n        }\n\n        if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n          str = ` + ${str}`;\n        } else if (k !== this.coefficients.length - 1) {\n          str = ` ${str}`;\n        }\n      }\n      fn = str + fn;\n    }\n    if (fn.charAt(0) === '+') {\n      fn = fn.slice(1);\n    }\n\n    return `f(x) = ${fn}`;\n  }\n\n  static load(json) {\n    if (json.name !== 'polynomialRegression') {\n      throw new TypeError('not a polynomial regression model');\n    }\n    return new PolynomialRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y, degree) {\n  const n = x.length;\n  let powers;\n  if (Array.isArray(degree)) {\n    powers = degree;\n    degree = powers.length;\n  } else {\n    degree++;\n    powers = new Array(degree);\n    for (let k = 0; k < degree; k++) {\n      powers[k] = k;\n    }\n  }\n  const F = new Matrix(n, degree);\n  const Y = new Matrix([y]);\n  for (let k = 0; k < degree; k++) {\n    for (let i = 0; i < n; i++) {\n      if (powers[k] === 0) {\n        F.set(i, k, 1);\n      } else {\n        F.set(i, k, Math.pow(x[i], powers[k]));\n      }\n    }\n  }\n\n  const FT = new MatrixTransposeView(F);\n  const A = FT.mmul(F);\n  const B = FT.mmul(new MatrixTransposeView(Y));\n\n  pr.degree = degree - 1;\n  pr.powers = powers;\n  pr.coefficients = solve(A, B).to1DArray();\n}\n","import PolynomialRegression from 'ml-regression-polynomial';\r\n\r\n/**\r\n * Iterative regression-based baseline correction\r\n * @param {Array<number>} x - Independent axis variable\r\n * @param {Array<number>} y - Dependent axis variable\r\n * @param {object} [options] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\r\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\r\n * @param {*} [options.regressionOptions] - Options for regressionFunction\r\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\r\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\r\n */\r\nexport default function baselineCorrectionRegression(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    Regression = PolynomialRegression,\r\n    regressionOptions,\r\n    tolerance = 0.001,\r\n  } = options;\r\n\r\n  if (!regressionOptions && Regression === PolynomialRegression) {\r\n    regressionOptions = 3;\r\n  }\r\n\r\n  let baseline = y.slice();\r\n  let fitting = y.slice();\r\n  let oldFitting = y;\r\n  let iteration = 0;\r\n  let delta;\r\n  let regression;\r\n  while (iteration < maxIterations) {\r\n    // Calculate the fitting result\r\n    regression = new Regression(x, baseline, regressionOptions);\r\n\r\n    delta = 0;\r\n    for (let i = 0; i < baseline.length; i++) {\r\n      fitting[i] = regression.predict(x[i]);\r\n      if (baseline[i] > fitting[i]) {\r\n        baseline[i] = fitting[i];\r\n      }\r\n\r\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\r\n    }\r\n\r\n    // Stop criterion\r\n    if (delta < tolerance) {\r\n      break;\r\n    } else {\r\n      oldFitting = fitting.slice();\r\n      iteration++;\r\n    }\r\n  }\r\n\r\n  // removes baseline\r\n  let corrected = new Array(baseline.length);\r\n  for (let j = 0; j < baseline.length; j++) {\r\n    corrected[j] = y[j] - baseline[j];\r\n  }\r\n\r\n  return {\r\n    corrected,\r\n    delta,\r\n    iteration,\r\n    baseline,\r\n    regression: regression,\r\n  };\r\n}\r\n","import sequentialFill from 'ml-array-sequential-fill';\nimport baselineCorrection from 'ml-baseline-correction-regression';\n\n/**\n * Iterative polynomial fitting [1]\n *\n * Implementation based on ml-baseline-correction-regression\n *\n * References:\n * [1] Gan, F.; Ruan, G.; Mo, J.\n * Baseline Correction by Improved Iterative Polynomial Fitting with Automatic Threshold.\n *  Chemometrics and Intelligent Laboratory Systems 2006, 82 (1), 59–65.\n * https://doi.org/10.1016/j.chemolab.2005.08.009.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {Object} [options.regression]\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {Object} [options.regression]\n * @param {function} [options.regression.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {Object} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function iterativePolynomialBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n\n  let output = baselineCorrection(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is valdi\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n/**\n * XCheckLengths.\n *\n * @param array1 - First array.\n * @param array2 - Second array.\n */\nexport function xCheckLengths(array1, array2) {\n    if (array1.length !== array2.length) {\n        throw new TypeError('Length of array1 and array2 must be identical');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction sum(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport { sum as default };\n","import sum from 'ml-array-sum';\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport { mean as default };\n","import { xCheck } from './xCheck';\n/**\n * This function pads an array\n *\n *\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm = '' } = options;\n    xCheck(array);\n    if (!algorithm) {\n        if (array instanceof Float64Array) {\n            return array.slice();\n        }\n        else {\n            return Float64Array.from(array);\n        }\n    }\n    let result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    let fromEnd = size + array.length;\n    let toEnd = 2 * size + array.length;\n    switch (algorithm.toLowerCase()) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array[array.length - 1];\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw Error('xPadding: unknown algorithm');\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function')\n        throw Error('fct has to be a function');\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    array = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < array.length - window + 1; i++) {\n        let subArray = new Float64Array(array.buffer, i * 8, window);\n        // we will send a view to the original buffer\n        newArray.push(fct(subArray));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import mean from 'ml-array-mean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, mean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import median from 'ml-array-median';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, median, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { xRollingAverage } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingAverageBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingAverage(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n * @export\n * @param {Array} spectrum\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the spectrum length\n */\nexport function rollingBall(spectrum, options = {}) {\n  if (!isAnyArray(spectrum)) {\n    throw new Error('Spectrum must be an array');\n  }\n\n  if (spectrum.length === 0) {\n    throw new TypeError('Spectrum must not be empty');\n  }\n\n  const numberPoints = spectrum.length;\n  const maxima = new Float64Array(numberPoints);\n  const minima = new Float64Array(numberPoints);\n  const baseline = new Float64Array(numberPoints);\n\n  // windowM 4 percent of spectrum length\n  // windowS 8 percent of spectrum length\n  const {\n    windowM = Math.round(numberPoints * 0.04),\n    windowS = Math.round(numberPoints * 0.08),\n  } = options;\n\n  // fi(1) in original paper\n  for (let i = 0; i < spectrum.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, spectrum.length);\n\n    minima[i] = xMinValue(spectrum, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  // fi in original paper\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, minima.length);\n    maxima[i] = xMaxValue(minima, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowS);\n    let windowRight = Math.min(i + windowS + 1, maxima.length);\n    baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n  }\n\n  return baseline;\n}\n","import { rollingBall } from 'ml-rolling-ball-baseline';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Algorithm described in (1), but in the implementation here the window width does not change.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the specturm length\n * @returns {BaselineOutput}\n */\nexport function rollingBallBaseline(ys, options = {}) {\n  const baseline = rollingBall(ys, options);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","import { xRollingMedian } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingMedianBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingMedian(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","//@ts-expect-error no type definition for baselines\nimport { airPLSBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function airPLSBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=airPLSBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { iterativePolynomialBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function iterativePolynomialBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=iterativePolynomialBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingAverageBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingAverageBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingAverageBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingBallBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingBallBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingBallBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingMedianBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingMedianBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingMedianBaseline.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm\n * @param [ys] Array of y values\n * @param [xs] Array of X or deltaX\n * @return  Array containing the new ys (same length)\n */\nexport function sgg(ys, xs, options = {}) {\n    let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (typeof xs === 'undefined') {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    let half = Math.floor(windowSize / 2);\n    let np = ys.length;\n    let ans = new Float64Array(np);\n    let weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = Math.pow(xs, derivative);\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        let wg1 = weights[half - i - 1];\n        let wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    let wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return Math.pow(hs / count, derivative);\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else {\n        if (k === 0 && s === 0) {\n            Grampoly = 1;\n        }\n        else {\n            Grampoly = 0;\n        }\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n    let weights = new Array(m);\n    let np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the first derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function firstDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 1 }) } };\n}\n//# sourceMappingURL=firstDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the second derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function secondDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 2 }) } };\n}\n//# sourceMappingURL=secondDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the third derivative using Savitzky–Golay filter.\n * @param data\n */\nexport function thirdDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 3 }) } };\n}\n//# sourceMappingURL=thirdDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Apply the Savitzky Golay Generalized Filter\n * @param data\n */\nexport function savitzkyGolay(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, options) } };\n}\n//# sourceMappingURL=savitzkyGolay.js.map","import { xyEnsureGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function ensureGrowing(data) {\n    return { data: xyEnsureGrowingX(data) };\n}\n//# sourceMappingURL=ensureGrowing.js.map","import { xyEquallySpaced } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function equallySpaced(data, options = {}) {\n    return { data: xyEquallySpaced(data, options) };\n}\n//# sourceMappingURL=equallySpaced.js.map","import { xyFilterX } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function filterX(data, options = {}) {\n    return {\n        data: xyFilterX(data, options),\n    };\n}\n//# sourceMappingURL=filterX.js.map","/**\n * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else {\n            if (y[currentIndex + 1] >= y[currentIndex] &&\n                y[currentIndex + 1] >= y[currentIndex + 2]) {\n                currentIndex++;\n            }\n            else {\n                if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n                    y[currentIndex - 2] >= y[currentIndex - 1]) {\n                    currentIndex -= 2;\n                }\n                else {\n                    if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n                        y[currentIndex + 2] >= y[currentIndex + 3]) {\n                        currentIndex += 2;\n                    }\n                }\n            }\n        }\n        // interpolation to a sin() function\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            let alpha = 20 * Math.log10(y[currentIndex - 1]);\n            let beta = 20 * Math.log10(y[currentIndex]);\n            let gamma = 20 * Math.log10(y[currentIndex + 1]);\n            let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            peak.x = x[currentIndex] + (x[currentIndex] - x[currentIndex - 1]) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotoneIncreasing, xMinValue, xMaxValue, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { optimizeTop } from './utils/optimizeTop';\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n\n */\nexport function gsd(data, options = {}) {\n    let { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, noiseLevel, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, } = options;\n    let { x, y } = data;\n    if (!xIsMonotoneIncreasing(x)) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    //rescale;\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    let equallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (equallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else {\n        if (maxCriteria === false) {\n            noiseLevel *= -1;\n        }\n    }\n    if (maxCriteria === false) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    let yData = y;\n    let dY, ddY;\n    const { windowSize, polynomial } = sgOptions;\n    if (equallySpaced) {\n        if (smoothY) {\n            yData = sgg(y, x[1] - x[0], {\n                windowSize,\n                polynomial,\n                derivative: 0,\n            });\n        }\n        dY = sgg(y, x[1] - x[0], {\n            windowSize,\n            polynomial,\n            derivative: 1,\n        });\n        ddY = sgg(y, x[1] - x[0], {\n            windowSize,\n            polynomial,\n            derivative: 2,\n        });\n    }\n    else {\n        if (smoothY) {\n            yData = sgg(y, x, {\n                windowSize,\n                polynomial,\n                derivative: 0,\n            });\n        }\n        dY = sgg(y, x, {\n            windowSize,\n            polynomial,\n            derivative: 1,\n        });\n        ddY = sgg(y, x, {\n            windowSize,\n            polynomial,\n            derivative: 2,\n        });\n    }\n    const minY = xMinValue(yData);\n    const maxY = xMaxValue(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const yThreshold = minY + (maxY - minY) * minMaxRatio;\n    const dX = x[1] - x[0];\n    let lastMax = null;\n    let lastMin = null;\n    let minddY = [];\n    let intervalL = [];\n    let intervalR = [];\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < yData.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    let lastK = -1;\n    const peaks = [];\n    for (const minddYIndex of minddY) {\n        let deltaX = x[minddYIndex];\n        let possible = -1;\n        let k = lastK + 1;\n        let minDistance = Number.POSITIVE_INFINITY;\n        let currentDistance = 0;\n        while (possible === -1 && k < intervalL.length) {\n            currentDistance = Math.abs(deltaX - (intervalL[k].x + intervalR[k].x) / 2);\n            if (currentDistance < (intervalR[k].x - intervalL[k].x) / 2) {\n                possible = k;\n                lastK = k;\n            }\n            ++k;\n            // Not getting closer?\n            if (currentDistance >= minDistance) {\n                break;\n            }\n            minDistance = currentDistance;\n        }\n        if (possible !== -1) {\n            if (yData[minddYIndex] > yThreshold) {\n                let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n                peaks.push({\n                    x: deltaX,\n                    y: yData[minddYIndex],\n                    width: width,\n                    index: minddYIndex,\n                    ddY: ddY[minddYIndex],\n                    inflectionPoints: {\n                        from: intervalL[possible],\n                        to: intervalR[possible],\n                    },\n                });\n            }\n        }\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    peaks.forEach((peak) => {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    });\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","import { gsd } from 'ml-gsd';\nimport { xFindClosestIndex, xMean, xAdd } from 'ml-spectra-processing';\n/**\n * Filter that allows to calibrateX the x axis based on the presence of peaks\n */\nexport function calibrateX(data, options = {}) {\n    const { targetX = 0, nbPeaks = 1, from = data.x[0], to = data.x[data.x.length - 1], gsd: gsdOptions = {\n        minMaxRatio: 0.1,\n        realTopDetection: true,\n        smoothY: true,\n        sgOptions: {\n            windowSize: 7,\n            polynomial: 3,\n        },\n    }, } = options;\n    const fromIndex = xFindClosestIndex(data.x, from);\n    const toIndex = xFindClosestIndex(data.x, to);\n    let peaks = gsd({\n        x: data.x.subarray(fromIndex, toIndex),\n        y: data.y.subarray(fromIndex, toIndex),\n    }, gsdOptions)\n        .sort((a, b) => b.y - a.y)\n        .slice(0, nbPeaks);\n    if (peaks.length === 0)\n        return { data };\n    const middle = xMean(peaks.map((peak) => peak.x));\n    return { data: { x: xAdd(data.x, targetX - middle), y: data.y } };\n}\n//# sourceMappingURL=calibrateX.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function xFunction(data, options = {}) {\n    return {\n        data: {\n            x: xApplyFunctionStr(data.x, {\n                variableLabel: 'x',\n                fctString: options.function,\n            }),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=xFunction.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function yFunction(data, options = {}) {\n    return {\n        data: {\n            x: data.x,\n            y: xApplyFunctionStr(data.y, {\n                variableLabel: 'y',\n                fctString: options.function,\n            }),\n        },\n    };\n}\n//# sourceMappingURL=yFunction.js.map","import { xEnsureFloat64 } from 'ml-spectra-processing';\nimport * as Filters from './filters/filters';\n/**\n * Apply filters on {x:[], y:[]}\n * @returns A very important number\n */\nexport function filterXY(data, filters) {\n    let result = {\n        data: { x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) },\n    };\n    const logs = [];\n    for (let filter of filters) {\n        const start = Date.now();\n        // eslint-disable-next-line import/namespace\n        const filterFct = Filters[filter.name];\n        if (!filterFct) {\n            throw new Error(`Unknown filter: ${filter.name}`);\n        }\n        // @ts-expect-error some method have options and some other ones don't have any options\n        result = filterFct(result.data, filter.options);\n        logs.push({\n            name: filter.name,\n            time: Date.now() - start,\n        });\n    }\n    return { logs, data: result.data };\n}\n//# sourceMappingURL=filterXY.js.map","import { filterXY } from 'ml-signal-processing';\nimport { xMinMaxValues, xyCheck } from 'ml-spectra-processing';\n/**\n *\n * @private\n * @param {DataXY} input\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {number} [options.numberOfPoints=1024]\n * @param {array} [options.filters=[]]\n * @param {array} [options.exclusions=[]]\n */\nexport function getNormalized(input, options = {}) {\n  xyCheck(input);\n\n  let {\n    from = input.x[0],\n    to = input.x[input.x.length - 1],\n    numberOfPoints = 1024,\n    filters = [],\n    exclusions = [],\n  } = options;\n\n  // we will add a get\n  const equallySpacedFilter = {\n    name: 'equallySpaced',\n    options: {\n      from,\n      to,\n      numberOfPoints,\n      exclusions,\n    },\n  };\n  const output = filterXY(input, filters.concat(equallySpacedFilter)).data;\n\n  const allowedBoundary = {\n    x: {\n      min: output.x[0],\n      max: output.x[output.x.length - 1],\n    },\n    y: xMinMaxValues(output.y),\n  };\n\n  return {\n    data: output,\n    allowedBoundary,\n  };\n}\n","import {\n  xyIntegration,\n  xyMaxYPoint,\n  xyMinYPoint,\n  xFindClosestIndex,\n} from 'ml-spectra-processing';\n\n/**\n * @private\n * @param {*} spectrum\n * @param {*} ranges\n */\nexport function updateRangesInfo(spectrum, ranges = []) {\n  spectrum.ranges = {};\n  for (let range of ranges) {\n    range = JSON.parse(JSON.stringify(range));\n    spectrum.ranges[range.label] = range;\n    let fromToIndex = {\n      fromIndex: xFindClosestIndex(spectrum.normalized.x, range.from),\n      toIndex: xFindClosestIndex(spectrum.normalized.x, range.to),\n    };\n    range.integration = xyIntegration(spectrum.normalized, fromToIndex);\n    range.maxPoint = xyMaxYPoint(spectrum.normalized, fromToIndex);\n    range.minPoint = xyMinYPoint(spectrum.normalized, fromToIndex);\n    range.x = spectrum.normalized.x.slice(\n      fromToIndex.fromIndex,\n      fromToIndex.toIndex + 1,\n    );\n    range.y = spectrum.normalized.y.slice(\n      fromToIndex.fromIndex,\n      fromToIndex.toIndex + 1,\n    );\n  }\n}\n","import { xMinMaxValues } from 'ml-spectra-processing';\n\nimport { getData } from './getData';\nimport { getNormalized } from './getNormalized';\nimport { updateRangesInfo } from './updateRangesInfo';\n\n/**\n * Class allowing manipulate one IR spectrum\n * @class spectrum\n * @param {object} [json={}] - object containing a spectrum\n * @param {Array} [json.x=[]] - x values\n * @param {Array} [json.y=[]] - y values\n */\nexport class Spectrum {\n  /**\n   *\n   * @param {array} x\n   * @param {array} y\n   * @param {string} id\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {object} [options.normalization]\n   * @param {object} [options.normalized]\n   */\n  constructor(x, y, id, options = {}) {\n    const { meta = {}, normalization = {}, normalized } = options;\n\n    if (x && x.length > 1 && x[0] > x[x.length - 1]) {\n      this.x = x.slice().reverse();\n      this.y = y.slice().reverse();\n    } else {\n      this.x = x || [];\n      this.y = y || [];\n    }\n    this.id = id;\n    this.meta = meta;\n    this.normalizedBoundary = { x: { min: 0, max: 0 }, y: { min: 0, max: 0 } };\n    if (normalized) {\n      this.normalized = normalized;\n      this.updateNormalizedBoundary();\n      this.normalizedAllowedBoundary = this.normalizedBoundary;\n    } else {\n      this.updateNormalization(normalization);\n    }\n\n    this.updateMemory();\n  }\n\n  get minX() {\n    return this.x[0];\n  }\n\n  get maxX() {\n    return this.x[this.x.length - 1];\n  }\n\n  updateMemory() {\n    let original = ((this.x && this.x.length) || 0) * 16;\n    let normalized = this.normalized.x.length * 16;\n    this.memory = { original, normalized, total: original + normalized };\n  }\n\n  removeOriginal() {\n    this.x = undefined;\n    this.y = undefined;\n    this.updateMemory();\n  }\n\n  getXY() {\n    if (!Array.isArray(this.x) || !Array.isArray(this.y)) {\n      throw new Error('Can not get normalized data');\n    }\n    return { x: this.x, y: this.y };\n  }\n\n  updateRangesInfo(ranges) {\n    updateRangesInfo(this, ranges);\n  }\n\n  updateNormalization(normalization) {\n    const result = getNormalized(this, normalization);\n    this.normalized = result.data;\n    this.normalizedAllowedBoundary = result.allowedBoundary;\n    this.ranges = {};\n    this.updateMemory();\n    this.updateNormalizedBoundary();\n  }\n\n  getData(options) {\n    return getData(this, options);\n  }\n\n  updateNormalizedBoundary() {\n    this.normalizedBoundary.x = {\n      min: this.normalized.x[0],\n      max: this.normalized.x[this.normalized.x.length - 1],\n    };\n    this.normalizedBoundary.y = xMinMaxValues(this.normalized.y);\n  }\n}\n","import { xFindClosestIndex } from 'ml-spectra-processing';\n\nimport { getAutocorrelationChart } from './jsgraph/getAutocorrelationChart';\nimport { getBoxPlotChart } from './jsgraph/getBoxPlotChart';\nimport { getChart } from './jsgraph/getChart';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations';\nimport { getNormalizedChart } from './jsgraph/getNormalizedChart';\nimport { getPostProcessedChart } from './jsgraph/getPostProcessedChart';\nimport { getTrackAnnotation } from './jsgraph/getTrackAnnotation';\nimport { getCategoriesStats } from './metadata/getCategoriesStats';\nimport { getClassLabels } from './metadata/getClassLabels';\nimport { getClasses } from './metadata/getClasses';\nimport { getMetadata } from './metadata/getMetadata';\nimport parseJcamp from './parser/jcamp';\nimport parseMatrix from './parser/matrix';\nimport parseText from './parser/text';\nimport { getAutocorrelation } from './spectra/getAutocorrelation';\nimport { getBoxPlotData } from './spectra/getBoxPlotData';\nimport { getMeanData } from './spectra/getMeanData';\nimport { getNormalizedData } from './spectra/getNormalizedData';\nimport { getNormalizedText } from './spectra/getNormalizedText';\nimport { getPostProcessedData } from './spectra/getPostProcessedData';\nimport { getPostProcessedText } from './spectra/getPostProcessedText';\nimport { Spectrum } from './spectrum/Spectrum';\n\nexport class SpectraProcessor {\n  /**\n   * Manager a large number of spectra with the possibility to normalize the data\n   * and skip the original data.\n   * @param {object} [options={}]\n   * @param {boolean} [options.maxMemory=64M]\n   * @param {object} [options.normalization={}] options to normalize the spectra before comparison\n   * @param {number} [options.normalization.from]\n   * @param {number} [options.normalization.to]\n   * @param {number} [options.normalization.numberOfPoints]\n   * @param {array<object>} [options.normalization.filters]\n   * @param {string} [options.normalization.filters.X.name]\n   * @param {object} [options.normalization.filters.X.options]\n   * @param {array<object>} [options.normalization.exclusions]\n   * @param {string} [options.normalization.exclusions.X.from]\n   * @param {object} [options.normalization.exclusions.X.to]\n   */\n  constructor(options = {}) {\n    this.normalization = options.normalization;\n    this.maxMemory = options.maxMemory || 256 * 1024 * 1024;\n    this.keepOriginal = true;\n    this.spectra = [];\n  }\n\n  getNormalizationAnnotations() {\n    return getNormalizationAnnotations(\n      this.normalization,\n      this.getNormalizedBoundary(),\n    );\n  }\n\n  /**\n   * Recalculate the normalized data using the stored original data if available\n   * This will throw an error in the original data is not present\n   * @param {number} [normalization.from]\n   * @param {number} [normalization.to]\n   * @param {number} [normalization.numberOfPoints]\n   * @param {array<object>} [normalization.filters]\n   * @param {string} [normalization.filters.X.name]\n   * @param {object} [normalization.filters.X.options]\n   * @param {array<object>} [normalization.exclusions]\n   * @param {string} [normalization.exclusions.X.from]\n   * @param {object} [normalization.exclusions.X.to]\n   */\n  setNormalization(normalization = {}) {\n    if (JSON.stringify(this.normalization) === JSON.stringify(normalization)) {\n      return;\n    }\n    this.normalization = normalization;\n    for (let spectrum of this.spectra) {\n      spectrum.updateNormalization(this.normalization);\n    }\n  }\n\n  getNormalization() {\n    return this.normalization;\n  }\n\n  /**\n   * Returns an object {x:[], y:[]} containing the autocorrelation for the\n   * specified index\n   * @param {integer} [index|undefined] x index of the spectrum to autocorrelate\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @param {array} [options.x] x value if index is undefined\n   */\n  getAutocorrelation(index, options = {}) {\n    const { x } = options;\n    const normalizedData = this.getNormalizedData(options);\n\n    if (index === undefined && x !== undefined) {\n      index = xFindClosestIndex(normalizedData.x, x);\n    }\n\n    return getAutocorrelation(normalizedData, index);\n  }\n\n  /**\n   * Returns a {x:[], y:[]} containg the average of specified spectra\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   */\n  getMeanData(options) {\n    return getMeanData(this.getNormalizedData(options));\n  }\n\n  /**\n   * Returns an object contains 4 parameters with the normalized data\n   * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[] }\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   */\n  getNormalizedData(options = {}) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedData(spectra);\n  }\n\n  /**\n   * Returns a tab separated value containing the normalized data\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   * @param {string} [options.fs='\\t'] field separator\n   * @param {string} [options.rs='\\n'] record (line) separator\n   * @returns {string}\n   */\n  getNormalizedText(options = {}) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedText(spectra, options);\n  }\n\n  /**\n   * Returns a tab separated value containing the post processed data\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   * @param {string} [options.fs='\\t'] field separator\n   * @param {string} [options.rs='\\n'] record (line) separator\n   * @param {object} [postProcessing={}]\n   * @returns {string}\n   */\n  getPostProcessedText(options = {}) {\n    return getPostProcessedText(this, options);\n  }\n\n  getMinMaxX() {\n    let min = Number.MAX_VALUE;\n    let max = Number.MIN_VALUE;\n    for (let spectrum of this.spectra) {\n      if (spectrum.minX < min) min = spectrum.minX;\n      if (spectrum.maxX > max) max = spectrum.maxX;\n    }\n    return { min, max };\n  }\n\n  /**\n\n   * Returns an object contains 4 parameters with the scaled data\n   * @param {object} [options={}] scale spectra based on various parameters\n   * @param {object} [options.range] from - to\n   * @param {Array} [options.ids] ids of selected spectra, by default all\n   * @param {string} [options.targetID=spectra[0].id]\n   * @param {string} [options.method='max'] min, max, range, minMax\n   * @param {boolean} [options.relative=false]\n   * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[] }\n   */\n  getPostProcessedData(options) {\n    return getPostProcessedData(this, options);\n  }\n\n  /**\n   * Add from text\n   * By default TITLE from the jcamp will be in the meta information\n   * @param {string} text\n   * @param {object} [options={}]\n   * @param {object} [options.parserOptions={}] XY parser options\n   * @param {object} [options.meta={}]\n   * @param {string} [options.meta.color]\n   * @param {object} [options.id={}]\n   * @param {object} [options.kind]\n   * @param {boolean} [options.force=false] replace existing spectrum (same ID)\n   */\n\n  addFromText(text, options = {}) {\n    if (options.force !== true && options.id && this.contains(options.id)) {\n      return;\n    }\n    let parsed = parseText(text, options);\n    let meta = { ...parsed.meta, ...(options.meta || {}) };\n    this.addFromData(parsed.data, { meta, id: options.id });\n  }\n\n  /**\n   * Add jcamp\n   * By default TITLE from the jcamp will be in the meta information\n   * @param {string} jcamp\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {string} [options.meta.color]\n   * @param {object} [options.id={}]\n   * @param {boolean} [options.force=false] replace existing spectrum (same ID)\n   */\n\n  addFromJcamp(jcamp, options = {}) {\n    if (options.force !== true && options.id && this.contains(options.id)) {\n      return;\n    }\n    let parsed = parseJcamp(jcamp);\n    let meta = { ...parsed.meta, ...(options.meta || {}) };\n    this.addFromData(parsed.data, { meta, id: options.id });\n  }\n\n  updateRangesInfo(options) {\n    for (let spectrum of this.spectra) {\n      spectrum.updateRangesInfo(options);\n    }\n  }\n\n  /**\n   * Returns the metadata for a set of spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @returns {object}\n   */\n  getMetadata(options = {}) {\n    const { ids } = options;\n    return getMetadata(this.getSpectra(ids));\n  }\n\n  /**\n   *\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {string} [options.propertyName=\"category\"]\n   */\n  getClasses(options) {\n    return getClasses(this.getMetadata(options), options);\n  }\n\n  /**\n   *\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {string} [options.propertyName=\"category\"]\n   */\n  getClassLabels(options) {\n    return getClassLabels(this.getMetadata(options), options);\n  }\n\n  /**\n   *\n   * @param {object} [options={}]\n   * @param {string} [options.propertyName=\"category\"]\n   */\n  getCategoriesStats(options) {\n    return getCategoriesStats(this.getMetadata(), options);\n  }\n\n  /**\n   * Add a spectrum based on the data\n   * @param {object} data {x, y}}\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {object} [options.id]\n   * @param {object} [options.normalization={}]\n   * @param {object} [options.normalized]\n   * @return {Spectrum}\n   */\n\n  addFromData(data, options = {}) {\n    if (this.spectra.length === 0) this.keepOriginal = true;\n    const id = options.id || Math.random().toString(36).substring(2, 10);\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) index = this.spectra.length;\n    let spectrum = new Spectrum(data.x, data.y, id, {\n      meta: options.meta,\n      normalized: options.normalized,\n      normalization: this.normalization,\n    });\n    this.spectra[index] = spectrum;\n    if (!this.keepOriginal) {\n      spectrum.removeOriginal();\n    } else {\n      let memoryInfo = this.getMemoryInfo();\n      if (memoryInfo.total > this.maxMemory) {\n        this.keepOriginal = false;\n        this.removeOriginals();\n      }\n    }\n  }\n\n  removeOriginals() {\n    for (let spectrum of this.spectra) {\n      spectrum.removeOriginal();\n    }\n  }\n\n  /**\n   * Remove the spectrum from the SpectraProcessor for the specified id\n   * @param {string} id\n   */\n  removeSpectrum(id) {\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) return undefined;\n    return this.spectra.splice(index, 1);\n  }\n\n  /**\n   * Remove all the spectra not present in the list\n   * @param {Array} [ids] Array of ids of the spectra to keep\n   */\n  removeSpectraNotIn(ids) {\n    let currentIDs = this.spectra.map((spectrum) => spectrum.id);\n    for (let id of currentIDs) {\n      if (!ids.includes(id)) {\n        this.removeSpectrum(id);\n      }\n    }\n  }\n\n  /**\n   * Checks if the ID of a spectrum exists in the SpectraProcessor\n   * @param {string} id\n   */\n  contains(id) {\n    return !isNaN(this.getSpectrumIndex(id));\n  }\n\n  /**\n   * Returns the index of the spectrum in the spectra array\n   * @param {string} id\n   * @returns {number}\n   */\n  getSpectrumIndex(id) {\n    if (!id) return undefined;\n    for (let i = 0; i < this.spectra.length; i++) {\n      let spectrum = this.spectra[i];\n      if (spectrum.id === id) return i;\n    }\n    return undefined;\n  }\n\n  /**\n   * Returns an array of all the ids\n   * @returns {array}\n   */\n  getIDs() {\n    return this.spectra.map((spectrum) => spectrum.id);\n  }\n\n  /**\n   * Returns an array of spectrum from their ids\n   * @param {Array} ids\n   * @returns {Array<Spectrum}\n   */\n  getSpectra(ids) {\n    if (!ids || !Array.isArray(ids)) return this.spectra;\n    let spectra = [];\n    for (let id of ids) {\n      let index = this.getSpectrumIndex(id);\n      if (index !== undefined) {\n        spectra.push(this.spectra[index]);\n      }\n    }\n    return spectra;\n  }\n\n  /**\n   * Returns the index of the spectrum in the spectra array\n   * @param {string} id\n   * @returns {number}\n   */\n  getSpectrum(id) {\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) return undefined;\n    return this.spectra[index];\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the spectra\n   * @returns {object}\n   */\n  getChart(options) {\n    return getChart(this.spectra, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @returns {object}\n   */\n  getAutocorrelationChart(index, options) {\n    return getAutocorrelationChart(this, index, options);\n  }\n\n  /**\n   * Returns a JSGraph annotation object for the specified index\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]]\n   * @param {array} [options.showSpectrumID=true]\n   * @param {array} [options.sortY=true]\n   * @param {object} [options.limit=20]\n   * ids, showSpectrumID = true, sort = true, limit = 20\n   * @returns {object}\n   */\n  getTrackAnnotation(index, options) {\n    return getTrackAnnotation(this.spectra, index, options);\n  }\n\n  /**\n   * Returns a JSGraph annotation object for box plot\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @returns {object}\n   */\n  getBoxPlotChart(options = {}) {\n    const normalizedData = this.getNormalizedData(options);\n    return getBoxPlotChart(normalizedData, options);\n  }\n\n  /**\n   * Returns boxplot information\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @returns {object}\n   */\n  getBoxPlotData(options = {}) {\n    const normalizedData = this.getNormalizedData(options);\n    return getBoxPlotData(normalizedData, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the normalized spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {object} [options.xFilter={}]\n   * @param {array} [options.xFilter.from]\n   * @param {array} [options.xFilter.to]\n   * @param {array} [options.xFilter.exclusions=[]]\n   * @returns {object}\n   */\n  getNormalizedChart(options = {}) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedChart(spectra, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the scaled normalized spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {object} [options.range] from - to\n   * @param {string} [options.targetID=spectra[0].id]\n   * @param {string} [options.method='max'] min, max, range, minMax\n   * @param {boolean} [options.relative=false]\n   * @returns {object}\n   */\n  getPostProcessedChart(options) {\n    return getPostProcessedChart(this, options);\n  }\n\n  getMemoryInfo() {\n    let memoryInfo = { original: 0, normalized: 0, total: 0 };\n    this.spectra.forEach((spectrum) => {\n      let memory = spectrum.memory;\n      memoryInfo.original += memory.original;\n      memoryInfo.normalized += memory.normalized;\n      memoryInfo.total += memory.total;\n    });\n    memoryInfo.keepOriginal = this.keepOriginal;\n    memoryInfo.maxMemory = this.maxMemory;\n    return memoryInfo;\n  }\n\n  getNormalizedBoundary() {\n    let boundary = {\n      x: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n      y: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n    };\n    for (let spectrum of this.spectra) {\n      if (spectrum.normalizedBoundary.x.min < boundary.x.min) {\n        boundary.x.min = spectrum.normalizedBoundary.x.min;\n      }\n      if (spectrum.normalizedBoundary.x.max > boundary.x.max) {\n        boundary.x.max = spectrum.normalizedBoundary.x.max;\n      }\n      if (spectrum.normalizedBoundary.y.min < boundary.y.min) {\n        boundary.y.min = spectrum.normalizedBoundary.y.min;\n      }\n      if (spectrum.normalizedBoundary.y.max > boundary.y.max) {\n        boundary.y.max = spectrum.normalizedBoundary.y.max;\n      }\n    }\n    return boundary;\n  }\n\n  /**\n   * We provide the allowed from / to after normalization\n   * For the X axis we return the smallest common values\n   * For the Y axis we return the largest min / max\n   */\n  getNormalizedCommonBoundary() {\n    let boundary = {\n      x: { min: Number.NEGATIVE_INFINITY, max: Number.POSITIVE_INFINITY },\n      y: { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY },\n    };\n    for (let spectrum of this.spectra) {\n      if (spectrum.normalizedAllowedBoundary.x.min > boundary.x.min) {\n        boundary.x.min = spectrum.normalizedAllowedBoundary.x.min;\n      }\n      if (spectrum.normalizedAllowedBoundary.x.max < boundary.x.max) {\n        boundary.x.max = spectrum.normalizedAllowedBoundary.x.max;\n      }\n      if (spectrum.normalizedAllowedBoundary.y.min < boundary.y.min) {\n        boundary.y.min = spectrum.normalizedAllowedBoundary.y.min;\n      }\n      if (spectrum.normalizedAllowedBoundary.y.max > boundary.y.max) {\n        boundary.y.max = spectrum.normalizedAllowedBoundary.y.max;\n      }\n    }\n    return boundary;\n  }\n\n  /**\n   * Create SpectraProcessor from normalized TSV\n   * @param {string} text\n   * @param {object} [options={}]\n   * @param {object} [options.separator='\\t']\n   */\n  static fromNormalizedMatrix(text, options = {}) {\n    let parsed = parseMatrix(text, options);\n    if (!parsed) {\n      throw new Error('Can not parse TSV file');\n    }\n    let spectraProcessor = new SpectraProcessor();\n\n    spectraProcessor.setNormalization({\n      from: parsed.x[0],\n      to: parsed.x[parsed.x.length - 1],\n      numberOfPoints: parsed.x.length,\n    });\n\n    for (let i = 0; i < parsed.ids.length; i++) {\n      spectraProcessor.addFromData(\n        { x: [], y: [] },\n        {\n          normalized: {\n            x: parsed.x,\n            y: parsed.matrix[i],\n          },\n          id: parsed.ids[i],\n          meta: parsed.meta[i],\n        },\n      );\n    }\n\n    spectraProcessor.keepOriginal = false;\n\n    return spectraProcessor;\n  }\n}\n","export function getFilterAnnotations(filter = {}) {\n  let { exclusions = [] } = filter;\n  let annotations = [];\n  exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n  annotations = exclusions.map((exclusion) => {\n    let annotation = {\n      type: 'rect',\n      position: [\n        { x: exclusion.from, y: '0px' },\n        { x: exclusion.to, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,128,1)',\n    };\n    return annotation;\n  });\n  if (filter.from !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: Number.MIN_SAFE_INTEGER, y: '0px' },\n        { x: filter.from, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  if (filter.to !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: filter.to, y: '0px' },\n        { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  return annotations;\n}\n"],"names":["createFromToArray","options","from","to","length","includeFrom","includeTo","distribution","array","Float64Array","div","delta","index","base","firstExponent","Math","log","Error","toString","Object","prototype","isAnyArray","value","call","endsWith","a","d","e","f","g","h","i","j","c","b","_ref","module","exports","window","median","xMedian","input","TypeError","quickSelectMedian","slice","xAdd","array1","array2","isConstant","constant","array3","getOutputArray","output","undefined","xMultiply","Number","xBoxPlot","sort","info","q1","q3","min","max","q1max","q3min","middle","middleOver","xCheck","xCorrelation","A","B","n","sumA","sumA2","sumB","sumB2","sumAB","sqrt","xEnsureFloat64","xFindClosestIndex","target","sorted","low","high","abs","diff","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","xMaxValue","maxValue","xMinValue","minValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotone","xIsMonotoneIncreasing","xMean","sumValue","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","toLowerCase","absoluteSumValue","absoluteSum","currentMaxValue","factor","sumFactor","xVariance","values","unbiased","mean","sqrError","xStandardDeviation","xParetoNormalization","result","sqrtSD","item","push","xRescale","currentMin","currentMax","RangeError","xApplyFunctionStr","variableLabel","fctString","fct","Function","replace","toReturn","isNaN","xSubtract","xyCheck","data","minLength","y","xyMaxYPoint","current","xyEnsureGrowingX","Array","prevX","NEGATIVE_INFINITY","currentIndex","zonesNormalize","zones","exclusions","JSON","parse","stringify","map","zone","forEach","filter","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","results","counter","zoneIndex","zonesWithPoints","numberOfPoints","returnZones","totalSize","reduce","previous","unitsPerPoint","currentTotal","round","equallySpacedSlot","xLength","step","halfStep","lastStep","start","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","getSlope","y0","y1","add","xyEquallySpaced","variant","normalizedZones","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyIntegration","currentxyIntegration","xyMinYPoint","matrixCenterZMean","matrix","nbRows","nbColumns","newMatrix","row","column","arguments","_options$fromIndex","_options$toIndex","isInteger","rescale","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","constructor","name","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","addS","addM","set","checkMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","exp","expm1","floor","fround","log1p","log10","log2","sign","sin","sinh","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","tmp","reducedEchelonForm","m","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","r","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","BaseView","MatrixTransposeView","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","leftHandSide","rightHandSide","useSVD","matrixPQN","matrixB","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","matrixZRescale","global","factory","this","limit$2","limit$1","clip_rgb$3","rgb","_clipped","_unclipped","classToType","i$1","list$1","type$p","obj","type$o","unpack$B","args","keyOrder","split","type$n","last$4","PI$2","PI","utils","clip_rgb","limit","unpack","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","input$h","format","autodetect","last$3","clip_rgb$2","type$m","_input","Color$D","Color","len","me","mode","list","chk","test","_rgb","hex","Color_1","chroma$k","bind","version","chroma_1","unpack$A","max$2","rgb2cmyk$1","ref","rgb2cmyk_1","unpack$z","cmyk2rgb","cmyk2rgb_1","chroma$j","Color$C","input$g","unpack$y","type$l","rgb2cmyk","cmyk","unpack$x","last$2","rnd","hsl2css$1","hsla","hsl2css_1","unpack$w","rgb2hsl$3","rgb2hsl_1","unpack$v","last$1","hsl2css","rgb2hsl$2","round$6","rgb2css$1","rgba","substr","rgb2css_1","unpack$u","round$5","hsl2rgb$1","assign","t3","t2","t1","h_","hsl2rgb_1","hsl2rgb","input$f","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$4","css2rgb$1","css","trim","named","match","rgb$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","chroma$i","Color$B","input$e","type$k","rgb2css","css2rgb","rest","Color$A","chroma$h","input$d","unpack$t","gl","unpack$s","rgb2hcg$1","_g","rgb2hcg_1","unpack$r","floor$3","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","hcg2rgb_1","unpack$q","type$j","chroma$g","Color$z","input$c","rgb2hcg","hcg","unpack$p","round$3","rgb2hex$2","u","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb$1","u$1","r$1","g$1","b$1","hex2rgb_1","chroma$f","Color$y","type$i","input$b","rgb2hex$1","unpack$o","TWOPI$2","min$2","sqrt$4","rgb2hsi$1","min_","rgb2hsi_1","unpack$n","TWOPI$1","cos$4","hsi2rgb","hsi2rgb_1","unpack$m","type$h","chroma$e","Color$x","input$a","rgb2hsi","hsi","unpack$l","type$g","chroma$d","Color$w","input$9","rgb2hsl$1","unpack$k","min$1","max$1","rgb2hsl","max_","rgb2hsv$1","unpack$j","floor$2","hsv2rgb","hsv2rgb_1","unpack$i","type$f","chroma$c","Color$v","input$8","rgb2hsv","hsv","labConstants","Kn","Xn","Yn","Zn","t0","LAB_CONSTANTS$3","unpack$h","pow$a","rgb2lab$2","ref$1","rgb2xyz","z","rgb_xyz","xyz_lab","rgb2lab_1","LAB_CONSTANTS$2","unpack$g","pow$9","lab2rgb$1","b_","lab_xyz","xyz_rgb","lab2rgb_1","unpack$f","type$e","chroma$b","Color$u","input$7","rgb2lab$1","lab","unpack$e","sqrt$3","atan2$2","atan2","round$2","lab2lch$2","lab2lch_1","unpack$d","rgb2lab","lab2lch$1","rgb2lch$1","rgb2lch_1","unpack$c","sin$3","cos$3","lch2lab$2","lch2lab_1","unpack$b","lch2lab$1","lab2rgb","lch2rgb$1","L","lch2rgb_1","unpack$a","lch2rgb","hcl2rgb","hcl","reverse","hcl2rgb_1","unpack$9","type$d","chroma$a","Color$t","input$6","rgb2lch","lch","w3cx11$1","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflower","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","w3cx11_1","Color$s","input$5","type$c","w3cx11","hex2rgb","rgb2hex","keys","unpack$8","rgb2num$1","rgb2num_1","type$b","num2rgb","num2rgb_1","chroma$9","Color$r","input$4","type$a","rgb2num","chroma$8","Color$q","input$3","unpack$7","type$9","round$1","log$1","temperature2rgb$1","kelvin","temperature2rgb_1","temperature2rgb","unpack$6","rgb2temperature$1","minTemp","maxTemp","rgb2temperature_1","chroma$7","Color$p","input$2","rgb2temperature","temperature","unpack$5","pow$8","sign$1","rgb2oklab$2","rgb2lrgb","lr","lg","lb","rgb2oklab_1","unpack$4","pow$7","oklab2rgb$1","lrgb2rgb","oklab2rgb_1","unpack$3","type$8","chroma$6","Color$o","input$1","rgb2oklab$1","oklab","unpack$2","rgb2oklab","lab2lch","rgb2oklch$1","rgb2oklch_1","unpack$1","lch2lab","oklab2rgb","oklch2rgb","oklch2rgb_1","type$7","chroma$5","Color$n","rgb2oklch","oklch","Color$m","type$6","mutate","Color$l","clipped","Color$k","LAB_CONSTANTS$1","darken","amount","brighten","darker","brighter","Color$j","mc","channel","src","Color$i","type$5","pow$6","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","mid","interpolate","lm","rgb2luminance","luminance_x","interpolator$1","Color$h","type$4","interpolator","mix$1","col1","col2","Color$g","mix","Color$f","premultiply","Color$e","LAB_CONSTANTS","saturate","desaturate","Color$d","type$3","charAt","out","Color$c","xyz0","xyz1","Color$b","sqrt$2","pow$5","lrgb","z1","x2","y2","z2","Color$a","Color$9","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","dh","interpolate_hsx$5","Color$8","interpolate_hsx$4","interpolate_hsx$3","interpolate_hsx$2","interpolate_hsx$1","Color$7","interpolate_hsx","Color$6","clip_rgb$1","pow$4","sqrt$1","PI$1","cos$2","sin$2","atan2$1","average","colors","weights","w","_average_lrgb","xyz","cnt","dx","dy","ci","xyz2","A$1","chroma$4","type$2","pow$3","scale$2","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","val","bypassMap","classes","analyze","limits","domain","tOut","tBreaks","every","_m","range","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","padding","numColors","dm","dd","__range__","samples","end","asc","cache","gamma","nodata","left","right","inclusive","ascending","Color$5","scale$1","binom_row","newrow","bezier","I","lab0","lab1","lab2","lab3","labs","el","bezier_1","chroma$3","blend","bottom","top","blend_f","c0","each","normal","lighten","screen","overlay","burn","dodge","blend_1","type$1","pow$2","sin$1","cos$1","chroma$2","cubehelix","rotations","lightness","dl","fract","amp","cos_a","sin_a","Color$4","digits","floor$1","random_1","code","pow$1","abs$1","key","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","Color$3","contrast","l1","l2","Color$2","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","C1","C2","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rc","Rt","Color$1","distance","sum_sq","valid","chroma$1","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","colorbrewer_1","chroma","chroma_js","getAutocorrelationChart","spectraProcessor","autocorrelation","getAutocorrelation","xFilter","ids","colorCallback","colorScale","getMeanData","colorSpectrum","color","styles","unselected","lineWidth","lineStyle","selected","getBoxPlotData","normalizedData","nbRow","nbColumn","aColumn","getBoxPlotChart","q13FillColor","q13FillOpacity","medianStrokeColor","medianStrokeWidth","minMaxFillColor","minMaxFillOpacity","annotations","boxPlotData","q13","layer","properties","fillColor","fillOpacity","strokeWidth","minMax","strokeColor","getColors","dataset","stdevs","addChartDataStyle","spectrum","lineColor","meta","label","id","getChart","spectra","yFactor","chart","includes","getData","getNormalizationAnnotations","exclusion","ignore","annotation","getNormalizedChart","normalized","getPostProcessedChart","scaled","getPostProcessedData","getNormalizedData","currentIDs","isArray","getTrackAnnotation","showSpectrumID","sortY","text","peaks","getCategoriesStats","metadata","propertyName","categories","classNumber","metadatum","getClassLabels","getClasses","categoriesStats","getMetadata","isUtf8","buf","ensureString","blob","ArrayBuffer","isView","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","buffer","byteOffset","byteLength","isutf8","parseString","lowercase","number","GC_MS_FIELDS","complexChromatogram","chromatogram","times","series","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","deltaX","isXYdata","currentData","currentX","firstX","currentY","firstY","endLine","ascii","charCodeAt","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","variables","parseXY","parseXYZ","lines","xFactor","logs","numberOfVariables","variable","parseXYA","removeSymbolRegExp","isXYAdata","convertTo3DZ","minZ","maxZ","ySize","xSize","lastX","lastY","medians","getMedian","minX","maxX","minY","maxY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","xN","yN","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","gyromagneticRatio","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","symbol","xUnits","toUpperCase","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","unit","pageSymbolIndex","pageSymbol","units","ratio0","ratio1","ratio","profiling","action","time","Date","now","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","kind","xIndex","yIndex","firstVariable","secondVariable","lowerCaseSymbol","vardim","nbPoints","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","convert","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","substring","dataValue","infos","datatable","parentEntry","title","dataType","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","flatten","getJcampKind","IR_ABSORBANCE","IR_TRANSMITTANCE","normalization","importation","converter","transmittance","display","xLabel","xInverted","yLabel","jcampText","parsed","xy","fs","currentMatrix","headers","labels","header","parts","oneMeta","uniqueX","points","xColumn","yColumn","bestGuess","keepInfo","numberColumns","maxNumberColumns","minNumberColumns","fields","parseFloat","skipFirstColumn","xs","uniqueXFunction","mlArrayMax","parserOptions","convertToText","rs","allKeysObject","metum","allKeys","getNormalizedText","o","require","createHash","write","update","dispatch","digest","read","sha1","excludeValues","MD5","keysMD5","getHashes","ignoreUnknown","respectType","respectFunctionNames","respectFunctionProperties","unorderedArrays","unorderedSets","unorderedObjects","replacer","excludeKeys","exec","_object","isBuffer","_array","_date","_symbol","_error","_boolean","_string","_function","_number","_xml","_null","_undefined","_regexp","_uint8array","_uint8clampedarray","_int8array","_uint16array","_int16array","_uint32array","_int32array","_float32array","_float64array","_arraybuffer","_url","_map","_set","_file","lastModfied","_blob","_domwindow","_bigint","_process","_timer","_pipe","_tcp","_udp","_tty","_statwatcher","_securecontext","_connection","_zlib","_context","_nodescript","_httpparser","_dataview","_signal","_fsevent","_tlswrap","writeToStream","self","Buffer","crypto","lYpoI2","toByteArray","fromByteArray","base64js","O","H","_useTypedArrays","_augment","_isBuffer","C","readUInt8","_charsWritten","fromCharCode","_","E","F","D","SlowBuffer","INSPECT_MAX_BYTES","poolSize","foo","subarray","isEncoding","M","N","_arr","S","writeUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","inspect","toArrayBuffer","encodeURIComponent","decodeURIComponent","_get","toLocaleString","ieee754","hash","sha256","md5","createHmac","randomBytes","LN2","nextTick","setImmediate","postMessage","addEventListener","source","stopPropagation","setTimeout","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","getFromToIndex","integration","normalizedTarget","fromToIndex","targetValue","deltaTarget","minTarget","deltaSource","minSource","optionsHash","ranges","calculations","filters","targetID","relative","method","getSpectra","validCache","weakMap","WeakMap","getSpectrum","rangesCopy","yNormalized","resultRanges","currentRange","maxPoint","parameters","calculation","formula","oneRanges","getPostProcessedText","postProcessingOptions","centerMean","centerMedian","fromTo","normed","divideBySD","paretoNormalization","ldlSymbolic","Ap","Ai","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","Pattern","yi","lKi","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","P","ldlPermt","prepare","Pinv","Mt","ar","ac","LNZ","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","adj","visited","toVisit","eol","ptr","nbhd","getClosestNumber","goal","closest","prev","curr","getCloseIndex","updateSystem","newVector","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","airPLS","maxIterations","factorCriterion","controlPoints","baseLineZones","arr","indexFrom","indexTo","baseline","iteration","sumNegDifferences","stopCriterion","cho","Cholesky","difference","calculateError","maxNegativeDiff","corrected","error","_typeof","iterator","sequentialFill","_options","_options$from","_options$to","_options$size","_i","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","maybeToPrecision","checkArraySize","BaseRegression","new","predict","_predict","train","toLaTeX","score","ySum","chi2","rmsd","xSquared","ySquared","xY","PolynomialRegression","degree","powers","coefficients","checkArrayLength","regress","precision","_toFormula","isLaTeX","sup","closeSup","fn","load","json","FT","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","baselineCorrection","xPadding","fromEnd","toEnd","xRolling","subArray","xRollingAverage","xRollingMedian","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","windowSize","derivative","polynomial","half","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","weight","firstDerivative","secondDerivative","thirdDerivative","savitzkyGolay","ensureGrowing","equallySpaced","filterX","optimizeTop","peak","beta","gsd","sgOptions","noiseLevel","smoothY","maxCriteria","minMaxRatio","realTopDetection","noiseInfo","yData","dY","ddY","yThreshold","dX","lastMax","lastMin","minddY","intervalL","intervalR","lastK","minddYIndex","possible","minDistance","currentDistance","width","inflectionPoints","calibrateX","targetX","nbPeaks","gsdOptions","xFunction","function","yFunction","filterXY","filterFct","Filters","getNormalized","equallySpacedFilter","allowedBoundary","updateRangesInfo","minPoint","Spectrum","normalizedBoundary","updateNormalizedBoundary","normalizedAllowedBoundary","updateNormalization","updateMemory","original","memory","total","removeOriginal","getXY","SpectraProcessor","maxMemory","keepOriginal","getNormalizedBoundary","setNormalization","getNormalization","getMinMaxX","addFromText","force","contains","parseText","addFromData","addFromJcamp","parseJcamp","getSpectrumIndex","memoryInfo","getMemoryInfo","removeOriginals","removeSpectrum","removeSpectraNotIn","getIDs","boundary","getNormalizedCommonBoundary","fromNormalizedMatrix","parseMatrix","getFilterAnnotations"],"mappings":";;;;;;;;;;;;;;;;;;CAAA;;;;;;CAMM,SAAUA,iBAAV,GA0BE;GAAA,IAzBNC,OAyBM,uEAAF,EAAE,CAAA;GAEN,IAAI;CACFC,IAAAA,IAAI,GAAG,CADL;CAEFC,IAAAA,EAAE,GAAG,CAFH;CAGFC,IAAAA,MAAM,GAAG,IAHP;CAIFC,IAAAA,WAAW,GAAG,IAJZ;CAKFC,IAAAA,SAAS,GAAG,IALV;CAMFC,IAAAA,YAAY,GAAG,SAAA;CANb,GAAA,GAOAN,OAPJ,CAAA;CASA,EAAA,MAAMO,KAAK,GAAG,IAAIC,YAAJ,CAAiBL,MAAjB,CAAd,CAAA;GAEA,IAAIM,GAAG,GAAGN,MAAV,CAAA;;CACA,EAAA,IAAIC,WAAW,KAAK,IAAhB,IAAwBC,SAAS,KAAK,IAA1C,EAAgD;KAC9CI,GAAG,GAAGN,MAAM,GAAG,CAAf,CAAA;CACD,GAFD,MAEO,IACJC,WAAW,KAAK,KAAhB,IAAyBC,SAAS,KAAK,IAAxC,IACCD,WAAW,KAAK,IAAhB,IAAwBC,SAAS,KAAK,KAFlC,EAGL;CACAI,IAAAA,GAAG,GAAGN,MAAN,CAAA;IAJK,MAKA,IAAIC,WAAW,KAAK,KAAhB,IAAyBC,SAAS,KAAK,KAA3C,EAAkD;KACvDI,GAAG,GAAGN,MAAM,GAAG,CAAf,CAAA;CACD,GAAA;;CAED,EAAA,IAAIO,KAAK,GAAG,CAACR,EAAE,GAAGD,IAAN,IAAcQ,GAA1B,CAAA;;GACA,IAAIH,YAAY,KAAK,SAArB,EAAgC;KAC9B,IAAIF,WAAW,KAAK,IAApB,EAA0B;OACxB,IAAIO,KAAK,GAAG,CAAZ,CAAA;;OACA,OAAOA,KAAK,GAAGR,MAAf,EAAuB;SACrBI,KAAK,CAACI,KAAD,CAAL,GAAeV,IAAI,GAAGS,KAAK,GAAGC,KAA9B,CAAA;SACAA,KAAK,EAAA,CAAA;CACN,OAAA;CACF,KAND,MAMO;OACL,IAAIA,KAAK,GAAG,CAAZ,CAAA;;OACA,OAAOA,KAAK,GAAGR,MAAf,EAAuB;SACrBI,KAAK,CAACI,KAAD,CAAL,GAAeV,IAAI,GAAGS,KAAK,IAAIC,KAAK,GAAG,CAAZ,CAA3B,CAAA;SACAA,KAAK,EAAA,CAAA;CACN,OAAA;CACF,KAAA;CACF,GAdD,MAcO,IAAIL,YAAY,KAAK,KAArB,EAA4B;KACjC,IAAIM,IAAI,GAAG,CAACV,EAAE,GAAGD,IAAN,MAAgB,CAAIQ,GAAAA,GAApB,CAAX,CAAA;CACA,IAAA,IAAII,aAAa,GAAGC,IAAI,CAACC,GAAL,CAASd,IAAT,CAAA,GAAiBa,IAAI,CAACC,GAAL,CAASH,IAAT,CAArC,CAAA;;KAEA,IAAIR,WAAW,KAAK,IAApB,EAA0B;OACxB,IAAIO,KAAK,GAAG,CAAZ,CAAA;;OACA,OAAOA,KAAK,GAAGR,MAAf,EAAuB;SACrBI,KAAK,CAACI,KAAD,CAAL,GAAeC,IAAI,KAAKC,aAAa,GAAGF,KAArB,CAAnB,CAAA;SACAA,KAAK,EAAA,CAAA;CACN,OAAA;CACF,KAND,MAMO;OACL,IAAIA,KAAK,GAAG,CAAZ,CAAA;;OACA,OAAOA,KAAK,GAAGR,MAAf,EAAuB;SACrBI,KAAK,CAACI,KAAD,CAAL,GAAeC,IAAI,KAAKC,aAAa,GAAGF,KAAhB,GAAwB,CAA7B,CAAnB,CAAA;SACAA,KAAK,EAAA,CAAA;CACN,OAAA;CACF,KAAA;CACF,GAjBM,MAiBA;CACL,IAAA,MAAM,IAAIK,KAAJ,CACJ,0GADI,CAAN,CAAA;CAGD,GAAA;;CAED,EAAA,OAAOT,KAAP,CAAA;CACD;;CChGD,MAAMU,QAAQ,GAAGC,MAAM,CAACC,SAAP,CAAiBF,QAAlC,CAAA;CAEA;;;;;;;CAMM,SAAUG,UAAV,CAAqBC,KAArB,EAA0B;GAC9B,OAAOJ,QAAQ,CAACK,IAAT,CAAcD,KAAd,CAAqBE,CAAAA,QAArB,CAA8B,QAA9B,CAAP,CAAA;CACD;;;;;CCVD,EAAA,CAAC,YAAU;KAAC,SAASC,CAAT,CAAWC,CAAX,EAAa;CAAC,MAAA,KAAI,IAAIC,CAAC,GAAC,CAAN,EAAQC,CAAC,GAACF,CAAC,CAACtB,MAAF,GAAS,CAAnB,EAAqByB,CAAC,GAAC,KAAK,CAA5B,EAA8BC,CAAC,GAAC,KAAK,CAArC,EAAuCC,CAAC,GAAC,KAAK,CAA9C,EAAgDC,CAAC,GAACC,CAAC,CAACN,CAAD,EAAGC,CAAH,CAAvD,EAA6D,CAAC,CAA9D,GAAiE;SAAC,IAAGA,CAAC,IAAED,CAAN,EAAQ,OAAOD,CAAC,CAACM,CAAD,CAAR,CAAA;CAAY,QAAA,IAAGJ,CAAC,IAAED,CAAC,GAAC,CAAR,EAAU,OAAOD,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACE,CAAD,CAAN,IAAWM,CAAC,CAACR,CAAD,EAAGC,CAAH,EAAKC,CAAL,CAAZ,EAAoBF,CAAC,CAACM,CAAD,CAA5B,CAAA;;CAAgC,QAAA,KAAIH,CAAC,GAACI,CAAC,CAACN,CAAD,EAAGC,CAAH,CAAH,EAASF,CAAC,CAACG,CAAD,CAAD,GAAKH,CAAC,CAACE,CAAD,CAAN,IAAWM,CAAC,CAACR,CAAD,EAAGG,CAAH,EAAKD,CAAL,CAArB,EAA6BF,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACE,CAAD,CAAN,IAAWM,CAAC,CAACR,CAAD,EAAGC,CAAH,EAAKC,CAAL,CAAzC,EAAiDF,CAAC,CAACG,CAAD,CAAD,GAAKH,CAAC,CAACC,CAAD,CAAN,IAAWO,CAAC,CAACR,CAAD,EAAGG,CAAH,EAAKF,CAAL,CAA7D,EAAqEO,CAAC,CAACR,CAAD,EAAGG,CAAH,EAAKF,CAAC,GAAC,CAAP,CAAtE,EAAgFG,CAAC,GAACH,CAAC,GAAC,CAApF,EAAsFI,CAAC,GAACH,CAA5F,EAA8F,CAAC,CAA/F,GAAkG;WAAC,GAAGE,CAAC,EAAJ,CAAA,QAAaJ,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACI,CAAD,CAAnB,EAAA;;WAAwB,GAAGC,CAAC,EAAJ,CAAA,QAAaL,CAAC,CAACK,CAAD,CAAD,GAAKL,CAAC,CAACC,CAAD,CAAnB,EAAA;;WAAwB,IAAGI,CAAC,GAACD,CAAL,EAAO,MAAA;CAAMI,UAAAA,CAAC,CAACR,CAAD,EAAGI,CAAH,EAAKC,CAAL,CAAD,CAAA;CAAS,SAAA;;SAAAG,CAAC,CAACR,CAAD,EAAGC,CAAH,EAAKI,CAAL,CAAD,EAASA,CAAC,IAAEC,CAAH,KAAOL,CAAC,GAACG,CAAT,CAAT,EAAqBC,CAAC,IAAEC,CAAH,KAAOJ,CAAC,GAACG,CAAC,GAAC,CAAX,CAArB,CAAA;CAAmC,OAAA;CAAC,KAAA;;KAAA,IAAIG,CAAC,GAAC,SAASA,CAAT,CAAWR,CAAX,EAAaC,CAAb,EAAeC,CAAf,EAAiB;CAAC,MAAA,IAAIO,IAAJ,CAAA;;CAAS,MAAA,OAAOA,IAAI,GAAC,CAACT,CAAC,CAACE,CAAD,CAAF,EAAMF,CAAC,CAACC,CAAD,CAAP,CAAL,EAAiBD,CAAC,CAACC,CAAD,CAAD,GAAKQ,IAAI,CAAC,CAAD,CAA1B,EAA8BT,CAAC,CAACE,CAAD,CAAD,GAAKO,IAAI,CAAC,CAAD,CAAvC,EAA2CA,IAAlD,CAAA;MAAjC;SAAyFF,CAAC,GAAC,SAASA,CAAT,CAAWP,CAAX,EAAaC,CAAb,EAAe;OAAC,OAAM,CAAC,EAAE,CAACD,CAAC,GAACC,CAAH,IAAM,CAAR,CAAP,CAAA;MAA3G,CAAA;;CAA8H,IAA4BS,MAAM,CAACC,OAAnC,GAA2CD,MAAe,CAAAC,OAAf,GAAeZ,CAA1D,GAA4Da,MAAM,CAACC,MAAP,GAAcd,CAA1E,CAAA;IAAre,GAAA,CAAA;;;;;CCIA;;;;;;;CAOM,SAAUe,OAAV,CAAkBC,KAAlB,EAAoC;CACxC,EAAA,IAAI,CAACpB,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAID,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAPuC;CAUxC;;;CACA,EAAA,OAAOC,iBAAiB,CAACF,KAAK,CAACG,KAAN,EAAD,CAAxB,CAAA;CACD;;CCpBD;;;;;;;CAMM,SAAUC,IAAV,CACJC,MADI,EAEJC,MAFI,EAEwB;GAE5B,IAAIC,UAAU,GAAG,KAAjB,CAAA;GACA,IAAIC,QAAQ,GAAG,CAAf,CAAA;;CACA,EAAA,IAAI5B,UAAU,CAAC0B,MAAD,CAAd,EAAwB;CACtB,IAAA,IAAID,MAAM,CAAC1C,MAAP,KAAmB2C,MAAmB,CAAC3C,MAA3C,EAAmD;CACjD,MAAA,MAAM,IAAIa,KAAJ,CAAU,mDAAV,CAAN,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL+B,IAAAA,UAAU,GAAG,IAAb,CAAA;CACAC,IAAAA,QAAQ,GAAGF,MAAX,CAAA;CACD,GAAA;;GAED,IAAIG,MAAM,GAAG,IAAIzC,YAAJ,CAAiBqC,MAAM,CAAC1C,MAAxB,CAAb,CAAA;;CACA,EAAA,IAAI4C,UAAJ,EAAgB;CACd,IAAA,KAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;OACtCmB,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAYkB,QAAxB,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL,IAAA,KAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;CACtCmB,MAAAA,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAagB,MAAmB,CAAChB,CAAD,CAA5C,CAAA;CACD,KAAA;CACF,GAAA;;CAED,EAAA,OAAOmB,MAAP,CAAA;CACD;;CCtBD;;;;;;;CAOM,SAAUC,cAAV,CACJC,MADI,EAEJhD,MAFI,EAEU;GAEd,IAAIgD,MAAM,KAAKC,SAAf,EAA0B;CACxB,IAAA,IAAI,CAAChC,UAAU,CAAC+B,MAAD,CAAf,EAAyB;CACvB,MAAA,MAAM,IAAIV,SAAJ,CAAc,6CAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,IAAIU,MAAM,CAAChD,MAAP,KAAkBA,MAAtB,EAA8B;CAC5B,MAAA,MAAM,IAAIsC,SAAJ,CAAc,mDAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,OAAOU,MAAP,CAAA;CACD,GARD,MAQO;CACL,IAAA,OAAO,IAAI3C,YAAJ,CAAiBL,MAAjB,CAAP,CAAA;CACD,GAAA;CACF;;CC/BD;;;;;;;;CAOM,SAAUkD,SAAV,CACJR,MADI,EAEJC,MAFI,EAME;GAAA,IAHN9C,OAGM,uEAAF,EAAE,CAAA;GAEN,IAAI+C,UAAU,GAAG,KAAjB,CAAA;GACA,IAAIC,QAAQ,GAAG,CAAf,CAAA;;CACA,EAAA,IAAI5B,UAAU,CAAC0B,MAAD,CAAd,EAAwB;CACtB,IAAA,IAAID,MAAM,CAAC1C,MAAP,KAAmB2C,MAAa,CAAC3C,MAArC,EAA6C;CAC3C,MAAA,MAAM,IAAIa,KAAJ,CAAU,wDAAV,CAAN,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL+B,IAAAA,UAAU,GAAG,IAAb,CAAA;CACAC,IAAAA,QAAQ,GAAGM,MAAM,CAACR,MAAD,CAAjB,CAAA;CACD,GAAA;;GAED,IAAIG,MAAM,GAAGC,cAAc,CAAClD,OAAO,CAACmD,MAAT,EAAiBN,MAAM,CAAC1C,MAAxB,CAA3B,CAAA;;CACA,EAAA,IAAI4C,UAAJ,EAAgB;CACd,IAAA,KAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;OACtCmB,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAYkB,QAAxB,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL,IAAA,KAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;CACtCmB,MAAAA,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAagB,MAAa,CAAChB,CAAD,CAAtC,CAAA;CACD,KAAA;CACF,GAAA;;CAED,EAAA,OAAOmB,MAAP,CAAA;CACD;;CCzCD;;;;;CAKM,SAAUM,QAAV,CAAmBhD,KAAnB,EAAqC;GACzCA,KAAK,GAAGC,YAAY,CAACP,IAAb,CAAkBM,KAAlB,CAAA,CAAyBiD,IAAzB,EAAR,CAAA;;CACA,EAAA,IAAIjD,KAAK,CAACJ,MAAN,GAAe,CAAnB,EAAsB;KACpB,MAAMa,KAAK,CACT,yEADS,CAAX,CAAA;CAGD,GAAA;;CACD,EAAA,IAAIyC,IAAI,GAAG;CACTC,IAAAA,EAAE,EAAE,GADK;CAETpB,IAAAA,MAAM,EAAE,GAFC;CAGTqB,IAAAA,EAAE,EAAE,GAHK;CAITC,IAAAA,GAAG,EAAErD,KAAK,CAAC,CAAD,CAJD;CAKTsD,IAAAA,GAAG,EAAEtD,KAAK,CAACA,KAAK,CAACJ,MAAN,GAAe,CAAhB,CAAA;IALZ,CAAA;GAOA,IAAI2D,KAAJ,EAAWC,KAAX,CAAA;;CACA,EAAA,IAAIxD,KAAK,CAACJ,MAAN,GAAe,CAAf,KAAqB,CAAzB,EAA4B;CAC1B;KACA,IAAI6D,MAAM,GAAG,CAACzD,KAAK,CAACJ,MAAN,GAAe,CAAhB,IAAqB,CAAlC,CAAA;CACAsD,IAAAA,IAAI,CAACnB,MAAL,GAAc/B,KAAK,CAACyD,MAAD,CAAnB,CAAA;KACAF,KAAK,GAAGE,MAAM,GAAG,CAAjB,CAAA;KACAD,KAAK,GAAGC,MAAM,GAAG,CAAjB,CAAA;CACD,GAND,MAMO;CACL;CACAD,IAAAA,KAAK,GAAGxD,KAAK,CAACJ,MAAN,GAAe,CAAvB,CAAA;KACA2D,KAAK,GAAGC,KAAK,GAAG,CAAhB,CAAA;CACAN,IAAAA,IAAI,CAACnB,MAAL,GAAc,CAAC/B,KAAK,CAACuD,KAAD,CAAL,GAAevD,KAAK,CAACwD,KAAD,CAArB,IAAgC,CAA9C,CAAA;CACD,GAAA;;CACD,EAAA,IAAID,KAAK,GAAG,CAAR,KAAc,CAAlB,EAAqB;KACnBL,IAAI,CAACC,EAAL,GAAUnD,KAAK,CAACuD,KAAK,GAAG,CAAT,CAAf,CAAA;CACAL,IAAAA,IAAI,CAACE,EAAL,GAAUpD,KAAK,CAAC,CAACA,KAAK,CAACJ,MAAN,GAAe4D,KAAf,GAAuB,CAAxB,IAA6B,CAA9B,CAAf,CAAA;CACD,GAHD,MAGO;KACLN,IAAI,CAACC,EAAL,GAAU,CAACnD,KAAK,CAAC,CAACuD,KAAK,GAAG,CAAT,IAAc,CAAf,CAAL,GAAyBvD,KAAK,CAAC,CAACuD,KAAK,GAAG,CAAT,IAAc,CAAf,CAA/B,IAAoD,CAA9D,CAAA;KACA,IAAIG,UAAU,GAAG,CAAC1D,KAAK,CAACJ,MAAN,GAAe4D,KAAhB,IAAyB,CAA1C,CAAA;CACAN,IAAAA,IAAI,CAACE,EAAL,GAAU,CAACpD,KAAK,CAAC0D,UAAD,CAAL,GAAoB1D,KAAK,CAAC0D,UAAU,GAAG,CAAd,CAA1B,IAA8C,CAAxD,CAAA;CACD,GAAA;;CACD,EAAA,OAAOR,IAAP,CAAA;CACD;;CCxCD;;;;;;CAKM,SAAUS,QAAV,CAAiB1B,KAAjB,EAAoC;CACxC,EAAA,IAAI,CAACpB,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAKD,KAAqB,CAACrC,MAAtB,KAAiC,CAAtC,EAAyC;CACvC,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAAA;CACF;;CCdD;;;;;;;CAOM,SAAU0B,YAAV,CAAuBC,CAAvB,EAAuCC,CAAvC,EAAqD;CACzD,EAAA,IAAIC,CAAC,GAAGF,CAAC,CAACjE,MAAV,CAAA;GACA,IAAIoE,IAAI,GAAG,CAAX,CAAA;GACA,IAAIC,KAAK,GAAG,CAAZ,CAAA;GACA,IAAIC,IAAI,GAAG,CAAX,CAAA;GACA,IAAIC,KAAK,GAAG,CAAZ,CAAA;GACA,IAAIC,KAAK,GAAG,CAAZ,CAAA;;GACA,KAAK,IAAI7C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;CAC1B,IAAA,IAAIN,CAAC,GAAG4C,CAAC,CAACtC,CAAD,CAAT,CAAA;CACA,IAAA,IAAIG,CAAC,GAAGoC,CAAC,CAACvC,CAAD,CAAT,CAAA;CACAyC,IAAAA,IAAI,IAAI/C,CAAR,CAAA;KACAgD,KAAK,IAAIhD,CAAC,IAAI,CAAd,CAAA;CACAiD,IAAAA,IAAI,IAAIxC,CAAR,CAAA;KACAyC,KAAK,IAAIzC,CAAC,IAAI,CAAd,CAAA;KACA0C,KAAK,IAAInD,CAAC,GAAGS,CAAb,CAAA;CACD,GAAA;;CACD,EAAA,OACE,CAACqC,CAAC,GAAGK,KAAJ,GAAYJ,IAAI,GAAGE,IAApB,KACC3D,IAAI,CAAC8D,IAAL,CAAUN,CAAC,GAAGE,KAAJ,GAAYD,IAAI,IAAI,CAA9B,CAAmCzD,GAAAA,IAAI,CAAC8D,IAAL,CAAUN,CAAC,GAAGI,KAAJ,GAAYD,IAAI,IAAI,CAA9B,CADpC,CADF,CAAA;CAID;;CCzBD;;;;;;CAKM,SAAUI,cAAV,CAAyBtE,KAAzB,EAA2C;GAC/C2D,QAAM,CAAC3D,KAAD,CAAN,CAAA;;GAEA,IAAIA,KAAK,YAAYC,YAArB,EAAmC;CACjC,IAAA,OAAOD,KAAK,CAACoC,KAAN,CAAY,CAAZ,CAAP,CAAA;CACD,GAAA;;CAED,EAAA,OAAOnC,YAAY,CAACP,IAAb,CAAkBM,KAAlB,CAAP,CAAA;CACD;;CCfD;;;;;;;CAOM,SAAUuE,iBAAV,CACJvE,KADI,EAEJwE,MAFI,EASE;GAAA,IANN/E,OAMM,uEAAF,EAAE,CAAA;GAEN,MAAM;CAAEgF,IAAAA,MAAM,GAAG,IAAA;CAAX,GAAA,GAAoBhF,OAA1B,CAAA;;CACA,EAAA,IAAIgF,MAAJ,EAAY;KACV,IAAIC,GAAG,GAAG,CAAV,CAAA;CACA,IAAA,IAAIC,IAAI,GAAG3E,KAAK,CAACJ,MAAN,GAAe,CAA1B,CAAA;KACA,IAAI6D,MAAM,GAAG,CAAb,CAAA;;CACA,IAAA,OAAOkB,IAAI,GAAGD,GAAP,GAAa,CAApB,EAAuB;OACrBjB,MAAM,GAAGiB,GAAG,IAAKC,IAAI,GAAGD,GAAR,IAAgB,CAApB,CAAZ,CAAA;;CACA,MAAA,IAAI1E,KAAK,CAACyD,MAAD,CAAL,GAAgBe,MAApB,EAA4B;CAC1BE,QAAAA,GAAG,GAAGjB,MAAN,CAAA;QADF,MAEO,IAAIzD,KAAK,CAACyD,MAAD,CAAL,GAAgBe,MAApB,EAA4B;CACjCG,QAAAA,IAAI,GAAGlB,MAAP,CAAA;CACD,OAFM,MAEA;CACL,QAAA,OAAOA,MAAP,CAAA;CACD,OAAA;CACF,KAAA;;CAED,IAAA,IAAIiB,GAAG,GAAG1E,KAAK,CAACJ,MAAN,GAAe,CAAzB,EAA4B;OAC1B,IAAIW,IAAI,CAACqE,GAAL,CAASJ,MAAM,GAAGxE,KAAK,CAAC0E,GAAD,CAAvB,CAAgCnE,GAAAA,IAAI,CAACqE,GAAL,CAAS5E,KAAK,CAAC0E,GAAG,GAAG,CAAP,CAAL,GAAiBF,MAA1B,CAApC,EAAuE;CACrE,QAAA,OAAOE,GAAP,CAAA;CACD,OAFD,MAEO;SACL,OAAOA,GAAG,GAAG,CAAb,CAAA;CACD,OAAA;CACF,KAND,MAMO;CACL,MAAA,OAAOA,GAAP,CAAA;CACD,KAAA;CACF,GAxBD,MAwBO;KACL,IAAItE,KAAK,GAAG,CAAZ,CAAA;CACA,IAAA,IAAIyE,IAAI,GAAG9B,MAAM,CAAC+B,iBAAlB,CAAA;;CACA,IAAA,KAAK,IAAIvD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC,MAAA,MAAMwD,WAAW,GAAGxE,IAAI,CAACqE,GAAL,CAAS5E,KAAK,CAACuB,CAAD,CAAL,GAAWiD,MAApB,CAApB,CAAA;;OACA,IAAIO,WAAW,GAAGF,IAAlB,EAAwB;CACtBA,QAAAA,IAAI,GAAGE,WAAP,CAAA;CACA3E,QAAAA,KAAK,GAAGmB,CAAR,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOnB,KAAP,CAAA;CACD,GAAA;CACF;;CChCD;;;;;;;CAMM,SAAU4E,eAAV,CACJC,CADI,EAEgC;GAAA,IAApCxF,OAAoC,uEAAF,EAAE,CAAA;GAEpC,IAAI;KAAEyF,SAAF;KAAaC,OAAb;KAAsBzF,IAAtB;CAA4BC,IAAAA,EAAAA;CAA5B,GAAA,GAAmCF,OAAvC,CAAA;;GAEA,IAAIyF,SAAS,KAAKrC,SAAlB,EAA6B;KAC3B,IAAInD,IAAI,KAAKmD,SAAb,EAAwB;CACtBqC,MAAAA,SAAS,GAAGX,iBAAiB,CAACU,CAAD,EAAIvF,IAAJ,CAA7B,CAAA;CACD,KAFD,MAEO;CACLwF,MAAAA,SAAS,GAAG,CAAZ,CAAA;CACD,KAAA;CACF,GAAA;;GACD,IAAIC,OAAO,KAAKtC,SAAhB,EAA2B;KACzB,IAAIlD,EAAE,KAAKkD,SAAX,EAAsB;CACpBsC,MAAAA,OAAO,GAAGZ,iBAAiB,CAACU,CAAD,EAAItF,EAAJ,CAA3B,CAAA;CACD,KAFD,MAEO;CACLwF,MAAAA,OAAO,GAAGF,CAAC,CAACrF,MAAF,GAAW,CAArB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,IAAIsF,SAAS,GAAG,CAAhB,EAAmBA,SAAS,GAAG,CAAZ,CAAA;CACnB,EAAA,IAAIC,OAAO,GAAG,CAAd,EAAiBA,OAAO,GAAG,CAAV,CAAA;CACjB,EAAA,IAAID,SAAS,IAAID,CAAC,CAACrF,MAAnB,EAA2BsF,SAAS,GAAGD,CAAC,CAACrF,MAAF,GAAW,CAAvB,CAAA;CAC3B,EAAA,IAAIuF,OAAO,IAAIF,CAAC,CAACrF,MAAjB,EAAyBuF,OAAO,GAAGF,CAAC,CAACrF,MAAF,GAAW,CAArB,CAAA;CAEzB,EAAA,IAAIsF,SAAS,GAAGC,OAAhB,EAAyB,CAACD,SAAD,EAAYC,OAAZ,CAAuB,GAAA,CAACA,OAAD,EAAUD,SAAV,CAAvB,CAAA;GACzB,OAAO;KAAEA,SAAF;CAAaC,IAAAA,OAAAA;IAApB,CAAA;CACD;;CCrDD;;;;;;;CAMM,SAAUC,SAAV,CACJpF,KADI,EAEgC;GAAA,IAApCP,OAAoC,uEAAF,EAAE,CAAA;GAEpCkE,QAAM,CAAC3D,KAAD,CAAN,CAAA;GACA,MAAM;KAAEkF,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAAChF,KAAD,EAAQP,OAAR,CAA9C,CAAA;CACA,EAAA,IAAI4F,QAAQ,GAAGrF,KAAK,CAACkF,SAAD,CAApB,CAAA;;CAEA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,IAAI4D,OAAjC,EAA0C5D,CAAC,EAA3C,EAA+C;CAC7C,IAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,GAAW8D,QAAf,EAAyB;CACvBA,MAAAA,QAAQ,GAAGrF,KAAK,CAACuB,CAAD,CAAhB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO8D,QAAP,CAAA;CACD;;CCpBD;;;;;;;CAMM,SAAUC,SAAV,CACJtF,KADI,EAEgC;GAAA,IAApCP,OAAoC,uEAAF,EAAE,CAAA;GAEpCkE,QAAM,CAAC3D,KAAD,CAAN,CAAA;GACA,MAAM;KAAEkF,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAAChF,KAAD,EAAQP,OAAR,CAA9C,CAAA;CACA,EAAA,IAAI8F,QAAQ,GAAGvF,KAAK,CAACkF,SAAD,CAApB,CAAA;;CAEA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,IAAI4D,OAAjC,EAA0C5D,CAAC,EAA3C,EAA+C;CAC7C,IAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,GAAWgE,QAAf,EAAyB;CACvBA,MAAAA,QAAQ,GAAGvF,KAAK,CAACuB,CAAD,CAAhB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOgE,QAAP,CAAA;CACD;;CCvBD;;;;;CAKM,SAAUC,gBAAV,CACJxF,KADI,EAQE;GAAA,IANNP,OAMM,uEAAF,EAAE,CAAA;CAEN,EAAA,IAAIO,KAAK,CAACJ,MAAN,GAAe,CAAnB,EAAsB,OAAO,IAAP,CAAA;GACtB,MAAM;CAAE6F,IAAAA,SAAS,GAAG,IAAA;CAAd,GAAA,GAAuBhG,OAA7B,CAAA;GACA,IAAIiG,KAAK,GAAG,CAAZ,CAAA;CACA,EAAA,IAAIC,KAAK,GAAG5C,MAAM,CAAC6C,gBAAnB,CAAA;;CACA,EAAA,KAAK,IAAIrE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAAN,GAAe,CAAnC,EAAsC,EAAE2B,CAAxC,EAA2C;CACzC,IAAA,IAAIsE,kBAAkB,GAAG7F,KAAK,CAACuB,CAAC,GAAG,CAAL,CAAL,GAAevB,KAAK,CAACuB,CAAD,CAA7C,CAAA;;KACA,IAAIsE,kBAAkB,GAAGF,KAAzB,EAAgC;CAC9BA,MAAAA,KAAK,GAAGE,kBAAR,CAAA;CACD,KAAA;;KACD,IAAIA,kBAAkB,GAAGH,KAAzB,EAAgC;CAC9BA,MAAAA,KAAK,GAAGG,kBAAR,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO,CAACH,KAAK,GAAGC,KAAT,IAAkBD,KAAlB,GAA0BD,SAAjC,CAAA;CACD;;CC7BD;;;;;CAKM,SAAUK,WAAV,CAAsB9F,KAAtB,EAAwC;CAC5C,EAAA,IAAIA,KAAK,CAACJ,MAAN,IAAgB,CAApB,EAAuB;CACrB,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GACD,IAAII,KAAK,CAAC,CAAD,CAAL,KAAaA,KAAK,CAAC,CAAD,CAAtB,EAA2B;CACzB;CACA,IAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAAN,GAAe,CAAnC,EAAsC2B,CAAC,EAAvC,EAA2C;CACzC,MAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,KAAavB,KAAK,CAACuB,CAAC,GAAG,CAAL,CAAtB,EAA+B,OAAO,KAAP,CAAA;CAChC,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAED,EAAA,IAAIvB,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAACA,KAAK,CAACJ,MAAN,GAAe,CAAhB,CAApB,EAAwC;CACtC,IAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAAN,GAAe,CAAnC,EAAsC2B,CAAC,EAAvC,EAA2C;CACzC,MAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,IAAYvB,KAAK,CAACuB,CAAC,GAAG,CAAL,CAArB,EAA8B,OAAO,KAAP,CAAA;CAC/B,KAAA;CACF,GAJD,MAIO;CACL,IAAA,KAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAAN,GAAe,CAAnC,EAAsC2B,CAAC,EAAvC,EAA2C;CACzC,MAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,IAAYvB,KAAK,CAACuB,CAAC,GAAG,CAAL,CAArB,EAA8B,OAAO,KAAP,CAAA;CAC/B,KAAA;CACF,GAAA;;CACD,EAAA,OAAO,IAAP,CAAA;CACD;;CC3BD;;;;;CAKM,SAAUwE,qBAAV,CAAgC/F,KAAhC,EAAkD;CACtD,EAAA,IAAIA,KAAK,CAACJ,MAAN,GAAe,CAAnB,EAAsB;CACpB,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CACD,EAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAAN,GAAe,CAAnC,EAAsC2B,CAAC,EAAvC,EAA2C;CACzC,IAAA,IAAIvB,KAAK,CAACuB,CAAD,CAAL,IAAYvB,KAAK,CAACuB,CAAC,GAAG,CAAL,CAArB,EAA8B,OAAO,KAAP,CAAA;CAC/B,GAAA;;CACD,EAAA,OAAO,IAAP,CAAA;CACD;;CCVD;;;;;;;CAMM,SAAUyE,KAAV,CACJhG,KADI,EAEgC;GAAA,IAApCP,OAAoC,uEAAF,EAAE,CAAA;GAEpCkE,QAAM,CAAC3D,KAAD,CAAN,CAAA;GACA,MAAM;KAAEkF,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAAChF,KAAD,EAAQP,OAAR,CAA9C,CAAA;CAEA,EAAA,IAAIwG,QAAQ,GAAGjG,KAAK,CAACkF,SAAD,CAApB,CAAA;;CAEA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,IAAI4D,OAAjC,EAA0C5D,CAAC,EAA3C,EAA+C;CAC7C0E,IAAAA,QAAQ,IAAIjG,KAAK,CAACuB,CAAD,CAAjB,CAAA;CACD,GAAA;;CACD,EAAA,OAAO0E,QAAQ,IAAId,OAAO,GAAGD,SAAV,GAAsB,CAA1B,CAAf,CAAA;CACD;;CCpBD;;;;;;CAKM,SAAUgB,wBAAV,CAAmClG,KAAnC,EAAqD;CAUzD,EAAA,MAAM+B,MAAM,GAAGC,OAAO,CAAChC,KAAD,CAAtB,CAAA;GACA,MAAMmG,iBAAiB,GAAG,IAAIlG,YAAJ,CAAiBD,KAAK,CAACJ,MAAvB,CAA1B,CAAA;;CACA,EAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC4E,IAAAA,iBAAiB,CAAC5E,CAAD,CAAjB,GAAuBhB,IAAI,CAACqE,GAAL,CAAS5E,KAAK,CAACuB,CAAD,CAAL,GAAWQ,MAApB,CAAvB,CAAA;CACD,GAAA;;GACD,OAAO;KACLA,MADK;KAELqE,GAAG,EAAEpE,OAAO,CAACmE,iBAAD,CAAA;IAFd,CAAA;CAID;;CCxBD;;;;;;;CAMM,SAAUE,aAAV,CAAwBrG,KAAxB,EAA0C;GAI9C2D,QAAM,CAAC3D,KAAD,CAAN,CAAA;CAEA,EAAA,IAAIqD,GAAG,GAAGrD,KAAK,CAAC,CAAD,CAAf,CAAA;CACA,EAAA,IAAIsD,GAAG,GAAGtD,KAAK,CAAC,CAAD,CAAf,CAAA;;CAEA,EAAA,KAAK,IAAIc,KAAT,IAAkBd,KAAlB,EAAyB;CACvB,IAAA,IAAIc,KAAK,GAAGuC,GAAZ,EAAiBA,GAAG,GAAGvC,KAAN,CAAA;CACjB,IAAA,IAAIA,KAAK,GAAGwC,GAAZ,EAAiBA,GAAG,GAAGxC,KAAN,CAAA;CAClB,GAAA;;GAED,OAAO;KAAEuC,GAAF;CAAOC,IAAAA,GAAAA;IAAd,CAAA;CACD;;CCrBD;;;;;;;;CAQM,SAAUgD,uBAAV,CAAkCtG,KAAlC,EAAoD;GAcxD,MAAM;KAAEoG,GAAF;CAAOrE,IAAAA,MAAAA;IAAWmE,GAAAA,wBAAwB,CAAClG,KAAD,CAAhD,CAAA;GACA,OAAO;KAAEuG,EAAE,EAAEH,GAAG,GAAG,kBAAZ;KAAgCA,GAAhC;CAAqCrE,IAAAA,MAAAA;IAA5C,CAAA;CACD;;CCvBD;;;;;;;;CAOM,SAAUyE,IAAV,CACJxG,KADI,EAEgC;GAAA,IAApCP,OAAoC,uEAAF,EAAE,CAAA;GAEpCkE,QAAM,CAAC3D,KAAD,CAAN,CAAA;GACA,MAAM;KAAEkF,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAAChF,KAAD,EAAQP,OAAR,CAA9C,CAAA;CAEA,EAAA,IAAIwG,QAAQ,GAAGjG,KAAK,CAACkF,SAAD,CAApB,CAAA;;CACA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,IAAI4D,OAAjC,EAA0C5D,CAAC,EAA3C,EAA+C;CAC7C0E,IAAAA,QAAQ,IAAIjG,KAAK,CAACuB,CAAD,CAAjB,CAAA;CACD,GAAA;;CACD,EAAA,OAAO0E,QAAP,CAAA;CACD;;CCjBD;;;;;;;CAOM,SAAUQ,OAAV,CACJxE,KADI,EAaE;GAAA,IAXNxC,OAWM,uEAAF,EAAE,CAAA;GAEN,MAAM;CAAEiH,IAAAA,SAAS,GAAG,UAAd;CAA0B5F,IAAAA,KAAK,GAAG,CAAA;CAAlC,GAAA,GAAwCrB,OAA9C,CAAA;GACAkE,QAAM,CAAC1B,KAAD,CAAN,CAAA;GAEA,MAAMW,MAAM,GAAGD,cAAc,CAAClD,OAAO,CAACmD,MAAT,EAAiBX,KAAK,CAACrC,MAAvB,CAA7B,CAAA;;CAEA,EAAA,IAAIqC,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIa,KAAJ,CAAU,yBAAV,CAAN,CAAA;CACD,GAAA;;GAED,QAAQiG,SAAS,CAACC,WAAV,EAAR;CACE,IAAA,KAAK,UAAL;CAAiB,MAAA;CACf,QAAA,IAAIC,gBAAgB,GAAGC,WAAW,CAAC5E,KAAD,CAAX,GAAqBnB,KAA5C,CAAA;;SACA,IAAI8F,gBAAgB,KAAK,CAAzB,EAA4B;CAC1B,UAAA,MAAM,IAAInG,KAAJ,CAAU,gCAAV,CAAN,CAAA;CACD,SAAA;;CACD,QAAA,KAAK,IAAIc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;WACrCqB,MAAM,CAACrB,CAAD,CAAN,GAAYU,KAAK,CAACV,CAAD,CAAL,GAAWqF,gBAAvB,CAAA;CACD,SAAA;;CACD,QAAA,OAAOhE,MAAP,CAAA;CACD,OAAA;;CACD,IAAA,KAAK,KAAL;CAAY,MAAA;CACV,QAAA,IAAIkE,eAAe,GAAG1B,SAAS,CAACnD,KAAD,CAA/B,CAAA;;SACA,IAAI6E,eAAe,KAAK,CAAxB,EAA2B;CACzB,UAAA,MAAM,IAAIrG,KAAJ,CAAU,gCAAV,CAAN,CAAA;CACD,SAAA;;CACD,QAAA,MAAMsG,MAAM,GAAGjG,KAAK,GAAGgG,eAAvB,CAAA;;CACA,QAAA,KAAK,IAAIvF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;WACrCqB,MAAM,CAACrB,CAAD,CAAN,GAAYU,KAAK,CAACV,CAAD,CAAL,GAAWwF,MAAvB,CAAA;CACD,SAAA;;CACD,QAAA,OAAOnE,MAAP,CAAA;CACD,OAAA;;CACD,IAAA,KAAK,KAAL;CAAY,MAAA;CACV,QAAA,IAAIoE,SAAS,GAAGR,IAAI,CAACvE,KAAD,CAAJ,GAAcnB,KAA9B,CAAA;;SACA,IAAIkG,SAAS,KAAK,CAAlB,EAAqB;CACnB,UAAA,MAAM,IAAIvG,KAAJ,CAAU,gCAAV,CAAN,CAAA;CACD,SAAA;;CACD,QAAA,KAAK,IAAIc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;WACrCqB,MAAM,CAACrB,CAAD,CAAN,GAAYU,KAAK,CAACV,CAAD,CAAL,GAAWyF,SAAvB,CAAA;CACD,SAAA;;CACD,QAAA,OAAOpE,MAAP,CAAA;CACD,OAAA;;CACD,IAAA;CACE,MAAA,MAAM,IAAInC,KAAJ,CAAU,CAA4BiG,yBAAAA,EAAAA,SAAS,EAA/C,CAAN,CAAA;CAjCJ,GAAA;CAmCD,CAAA;;CAED,SAASG,WAAT,CAAqB5E,KAArB,EAAuC;GACrC,IAAIgE,QAAQ,GAAG,CAAf,CAAA;;CACA,EAAA,KAAK,IAAI1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;KACrC0E,QAAQ,IAAI1F,IAAI,CAACqE,GAAL,CAAS3C,KAAK,CAACV,CAAD,CAAd,CAAZ,CAAA;CACD,GAAA;;CACD,EAAA,OAAO0E,QAAP,CAAA;CACD;;CC5ED;;;;;;;CAMM,SAAUgB,SAAV,CACJC,MADI,EAWE;GAAA,IATNzH,OASM,uEAAF,EAAE,CAAA;;CAEN,EAAA,IAAI,CAACoB,UAAU,CAACqG,MAAD,CAAf,EAAyB;CACvB,IAAA,MAAM,IAAIhF,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;GAED,MAAM;CAAEiF,IAAAA,QAAQ,GAAG,IAAb;KAAmBC,IAAI,GAAGpB,KAAK,CAACkB,MAAD,CAAA;CAA/B,GAAA,GAA4CzH,OAAlD,CAAA;GACA,IAAI4H,QAAQ,GAAG,CAAf,CAAA;;CAEA,EAAA,KAAK,IAAI9F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,MAAM,CAACtH,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;CACtC,IAAA,IAAI0D,CAAC,GAAGiC,MAAM,CAAC3F,CAAD,CAAN,GAAY6F,IAApB,CAAA;KACAC,QAAQ,IAAIpC,CAAC,GAAGA,CAAhB,CAAA;CACD,GAAA;;CAED,EAAA,IAAIkC,QAAJ,EAAc;CACZ,IAAA,OAAOE,QAAQ,IAAIH,MAAM,CAACtH,MAAP,GAAgB,CAApB,CAAf,CAAA;CACD,GAFD,MAEO;CACL,IAAA,OAAOyH,QAAQ,GAAGH,MAAM,CAACtH,MAAzB,CAAA;CACD,GAAA;CACF;;CCrCD;;;;;;;CAMM,SAAU0H,kBAAV,CAA6BJ,MAA7B,EAA8D;GAAA,IAAZzH,OAAY,uEAAF,EAAE,CAAA;GAClE,OAAOc,IAAI,CAAC8D,IAAL,CAAU4C,SAAS,CAACC,MAAD,EAASzH,OAAT,CAAnB,CAAP,CAAA;CACD;;CCPD;;;;;;;;CAOM,SAAU8H,oBAAV,CAA+BvH,KAA/B,EAAiD;GACrD2D,QAAM,CAAC3D,KAAD,CAAN,CAAA;GACA,IAAIwH,MAAM,GAAG,EAAb,CAAA;GACA,MAAMC,MAAM,GAAGlH,IAAI,CAAC8D,IAAL,CAAUiD,kBAAkB,CAACtH,KAAD,CAA5B,CAAf,CAAA;;CAEA,EAAA,KAAK,IAAI0H,IAAT,IAAiB1H,KAAjB,EAAwB;CACtBwH,IAAAA,MAAM,CAACG,IAAP,CAAYD,IAAI,GAAGD,MAAnB,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOD,MAAP,CAAA;CACD;;CCbD;;;;;;;CAOM,SAAUI,QAAV,CACJ3F,KADI,EAeE;GAAA,IAbNxC,OAaM,uEAAF,EAAE,CAAA;GAENkE,QAAM,CAAC1B,KAAD,CAAN,CAAA;GACA,MAAMW,MAAM,GAAGD,cAAc,CAAClD,OAAO,CAACmD,MAAT,EAAiBX,KAAK,CAACrC,MAAvB,CAA7B,CAAA;CAEA,EAAA,MAAMiI,UAAU,GAAGvC,SAAS,CAACrD,KAAD,CAA5B,CAAA;CACA,EAAA,MAAM6F,UAAU,GAAG1C,SAAS,CAACnD,KAAD,CAA5B,CAAA;;GAEA,IAAI4F,UAAU,KAAKC,UAAnB,EAA+B;CAC7B,IAAA,MAAM,IAAIC,UAAJ,CACJ,6EADI,CAAN,CAAA;CAGD,GAAA;;GAED,MAAM;CAAE1E,IAAAA,GAAG,GAAG,CAAR;CAAWC,IAAAA,GAAG,GAAG,CAAA;CAAjB,GAAA,GAAuB7D,OAA7B,CAAA;;GAEA,IAAI4D,GAAG,IAAIC,GAAX,EAAgB;CACd,IAAA,MAAM,IAAIyE,UAAJ,CAAe,4CAAf,CAAN,CAAA;CACD,GAAA;;GAED,MAAMhB,MAAM,GAAG,CAACzD,GAAG,GAAGD,GAAP,KAAeyE,UAAU,GAAGD,UAA5B,CAAf,CAAA;;CACA,EAAA,KAAK,IAAItG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrCqB,IAAAA,MAAM,CAACrB,CAAD,CAAN,GAAY,CAACU,KAAK,CAACV,CAAD,CAAL,GAAWsG,UAAZ,IAA0Bd,MAA1B,GAAmC1D,GAA/C,CAAA;CACD,GAAA;;CAED,EAAA,OAAOT,MAAP,CAAA;CACD;;CCpDD;;;;;;;;;CASM,SAAUoF,iBAAV,CACJhI,KADI,EAaE;GAAA,IAXNP,OAWM,uEAAF,EAAE,CAAA;GAEN,MAAM;CAAEwI,IAAAA,aAAa,GAAG,GAAlB;CAAuBC,IAAAA,SAAS,GAAGD,aAAAA;CAAnC,GAAA,GAAqDxI,OAA3D,CAAA;GACA,MAAM0I,GAAG,GAAG,IAAIC,QAAJ,CACVH,aADU,EAEV,CAAiBC,cAAAA,EAAAA,SAAS,CACvBG,OADc,CACN,oBADM,EACgB,WADhB,CAAA,CAEdA,OAFc,CAEN,aAFM,EAES,MAFT,CAEgB,CAAA,CAAA,CAJvB,CAAZ,CAAA;CAMA,EAAA,MAAMC,QAAQ,GAAGrI,YAAY,CAACP,IAAb,CAAkBM,KAAlB,CAAjB,CAAA;;CACA,EAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,KAAK,CAACJ,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;KACrC+G,QAAQ,CAAC/G,CAAD,CAAR,GAAc4G,GAAG,CAACnI,KAAK,CAACuB,CAAD,CAAN,CAAjB,CAAA;;CACA,IAAA,IAAIgH,KAAK,CAACD,QAAQ,CAAC/G,CAAD,CAAT,CAAT,EAAwB;OACtB,MAAMd,KAAK,CACT,CAAA,aAAA,EAAgByH,SAAS,CAAA,2BAAA,EAA8BlI,KAAK,CAACuB,CAAD,CAAG,CAAA,CADtD,CAAX,CAAA;CAGD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO+G,QAAP,CAAA;CACD;;CC1CD;;;;;;;;CAOM,SAAUE,SAAV,CACJlG,MADI,EAEJC,MAFI,EAEwB;GAE5B,IAAIC,UAAU,GAAG,KAAjB,CAAA;GACA,IAAIC,QAAQ,GAAG,CAAf,CAAA;;CACA,EAAA,IAAI5B,UAAU,CAAC0B,MAAD,CAAd,EAAwB;CACtB,IAAA,IAAID,MAAM,CAAC1C,MAAP,KAAmB2C,MAAa,CAAC3C,MAArC,EAA6C;CAC3C,MAAA,MAAM,IAAIa,KAAJ,CAAU,wDAAV,CAAN,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL+B,IAAAA,UAAU,GAAG,IAAb,CAAA;CACAC,IAAAA,QAAQ,GAAGM,MAAM,CAACR,MAAD,CAAjB,CAAA;CACD,GAAA;;GAED,IAAIG,MAAM,GAAG,IAAIzC,YAAJ,CAAiBqC,MAAM,CAAC1C,MAAxB,CAAb,CAAA;;CACA,EAAA,IAAI4C,UAAJ,EAAgB;CACd,IAAA,KAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;OACtCmB,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAYkB,QAAxB,CAAA;CACD,KAAA;CACF,GAJD,MAIO;CACL,IAAA,KAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,MAAM,CAAC1C,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC;CACtCmB,MAAAA,MAAM,CAACnB,CAAD,CAAN,GAAYe,MAAM,CAACf,CAAD,CAAN,GAAagB,MAAa,CAAChB,CAAD,CAAtC,CAAA;CACD,KAAA;CACF,GAAA;;CAED,EAAA,OAAOmB,MAAP,CAAA;CACD;;CCnCD;;;;;;CAKM,SAAU+F,OAAV,CACJC,IADI,EAKE;GAAA,IAHNjJ,OAGM,uEAAF,EAAE,CAAA;GAEN,MAAM;CAAEkJ,IAAAA,SAAAA;CAAF,GAAA,GAAgBlJ,OAAtB,CAAA;;GACA,IAAI,OAAOiJ,IAAP,KAAgB,QAAhB,IAA4B,CAAC7H,UAAU,CAAC6H,IAAI,CAACzD,CAAN,CAAvC,IAAmD,CAACpE,UAAU,CAAC6H,IAAI,CAACE,CAAN,CAAlE,EAA4E;CAC1E,IAAA,MAAM,IAAInI,KAAJ,CAAU,0CAAV,CAAN,CAAA;CACD,GAAA;;GACD,IAAKiI,IAAI,CAACzD,CAAL,CAAoBrF,MAApB,KAAgC8I,IAAI,CAACE,CAAL,CAAoBhJ,MAAzD,EAAiE;CAC/D,IAAA,MAAM,IAAIa,KAAJ,CAAU,8CAAV,CAAN,CAAA;CACD,GAAA;;CACD,EAAA,IAAIkI,SAAJ,EAAe;CACb,IAAA,IAAID,IAAI,CAACzD,CAAL,CAAOrF,MAAP,GAAgB+I,SAApB,EAA+B;CAC7B,MAAA,MAAM,IAAIlI,KAAJ,CAAU,CAAyCkI,sCAAAA,EAAAA,SAAS,EAA5D,CAAN,CAAA;CACD,KAAA;CACF,GAAA;CACF;;CCpBD;;;;;;;CAMM,SAAUE,WAAV,CACJH,IADI,EAqBE;GAAA,IAnBNjJ,OAmBM,uEAAF,EAAE,CAAA;GAENgJ,OAAO,CAACC,IAAD,EAAO;CAAEC,IAAAA,SAAS,EAAE,CAAA;CAAb,GAAP,CAAP,CAAA;GACA,MAAM;KAAE1D,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAWF,IAAjB,CAAA;;CACA,EAAA,IAAIzD,CAAC,CAACrF,MAAF,KAAa,CAAjB,EAAoB;KAClB,OAAO;CAAEqF,MAAAA,CAAC,EAAEA,CAAC,CAAC,CAAD,CAAN;CAAW2D,MAAAA,CAAC,EAAEA,CAAC,CAAC,CAAD,CAAf;CAAoBxI,MAAAA,KAAK,EAAE,CAAA;MAAlC,CAAA;CACD,GAAA;;GAED,MAAM;KAAE8E,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAACC,CAAD,EAAIxF,OAAJ,CAA9C,CAAA;CAEA,EAAA,IAAIqJ,OAAO,GAAG;CAAE7D,IAAAA,CAAC,EAAEA,CAAC,CAACC,SAAD,CAAN;CAAmB0D,IAAAA,CAAC,EAAEA,CAAC,CAAC1D,SAAD,CAAvB;CAAoC9E,IAAAA,KAAK,EAAE8E,SAAAA;IAAzD,CAAA;;GACA,KAAK,IAAI3D,CAAC,GAAG2D,SAAb,EAAwB3D,CAAC,IAAI4D,OAA7B,EAAsC5D,CAAC,EAAvC,EAA2C;KACzC,IAAIqH,CAAC,CAACrH,CAAD,CAAD,GAAOuH,OAAO,CAACF,CAAnB,EAAsBE,OAAO,GAAG;CAAE7D,MAAAA,CAAC,EAAEA,CAAC,CAAC1D,CAAD,CAAN;CAAWqH,MAAAA,CAAC,EAAEA,CAAC,CAACrH,CAAD,CAAf;CAAoBnB,MAAAA,KAAK,EAAEmB,CAAAA;MAArC,CAAA;CACvB,GAAA;;CAED,EAAA,OAAOuH,OAAP,CAAA;CACD;;CC3CD;;;;;;CAKM,SAAUC,gBAAV,CAA2BL,IAA3B,EAAuC;GAC3CD,OAAO,CAACC,IAAD,CAAP,CAAA;GACA,IAAI3C,qBAAqB,CAAC2C,IAAI,CAACzD,CAAN,CAAzB,EAAmC,OAAOyD,IAAP,CAAA;GACnC,MAAMzD,CAAC,GAAG+D,KAAK,CAACtJ,IAAN,CAAWgJ,IAAI,CAACzD,CAAhB,CAAV,CAAA;GACA,MAAM2D,CAAC,GAAGI,KAAK,CAACtJ,IAAN,CAAWgJ,IAAI,CAACE,CAAhB,CAAV,CAAA;CACA,EAAA,IAAIK,KAAK,GAAGlG,MAAM,CAACmG,iBAAnB,CAAA;GAEA,IAAIC,YAAY,GAAG,CAAnB,CAAA;;CAEA,EAAA,KAAK,IAAI/I,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAG6E,CAAC,CAACrF,MAA9B,EAAsCQ,KAAK,EAA3C,EAA+C;CAC7C,IAAA,IAAI6I,KAAK,GAAGhE,CAAC,CAAC7E,KAAD,CAAb,EAAsB;OACpB,IAAI+I,YAAY,GAAG/I,KAAnB,EAA0B;CACxB6E,QAAAA,CAAC,CAACkE,YAAD,CAAD,GAAkBlE,CAAC,CAAC7E,KAAD,CAAnB,CAAA;CACAwI,QAAAA,CAAC,CAACO,YAAD,CAAD,GAAkBP,CAAC,CAACxI,KAAD,CAAnB,CAAA;CACD,OAAA;;OACD+I,YAAY,EAAA,CAAA;CACZF,MAAAA,KAAK,GAAGhE,CAAC,CAAC7E,KAAD,CAAT,CAAA;CACD,KAAA;CACF,GAAA;;GACD6E,CAAC,CAACrF,MAAF,GAAWuJ,YAAX,CAAA;GACAP,CAAC,CAAChJ,MAAF,GAAWuJ,YAAX,CAAA;GACA,OAAO;KAAElE,CAAF;CAAK2D,IAAAA,CAAAA;IAAZ,CAAA;CACD;;CC/BD;;;;;;;;;;CAUM,SAAUQ,cAAV,GAeE;GAAA,IAdNC,KAcM,uEAdY,EAcZ,CAAA;GAAA,IAbN5J,OAaM,uEAAF,EAAE,CAAA;GAEN,IAAI;KACFC,IAAI,GAAGqD,MAAM,CAACmG,iBADZ;KAEFvJ,EAAE,GAAGoD,MAAM,CAAC+B,iBAFV;CAGFwE,IAAAA,UAAU,GAAG,EAAA;CAHX,GAAA,GAIA7J,OAJJ,CAAA;CAMA,EAAA,IAAIC,IAAI,GAAGC,EAAX,EAAe,CAACD,IAAD,EAAOC,EAAP,CAAa,GAAA,CAACA,EAAD,EAAKD,IAAL,CAAb,CAAA;GAEf2J,KAAK,GAAGE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeJ,KAAf,CAAX,EAAkCK,GAAlC,CAAuCC,IAAD,IAC5CA,IAAI,CAACjK,IAAL,GAAYiK,IAAI,CAAChK,EAAjB,GAAsB;KAAED,IAAI,EAAEiK,IAAI,CAAChK,EAAb;KAAiBA,EAAE,EAAEgK,IAAI,CAACjK,IAAAA;IAAhD,GAAyDiK,IADnD,CAAR,CAAA;GAGAN,KAAK,GAAGA,KAAK,CAACpG,IAAN,CAAW,CAAChC,CAAD,EAAIS,CAAJ,KAAS;CAC1B,IAAA,IAAIT,CAAC,CAACvB,IAAF,KAAWgC,CAAC,CAAChC,IAAjB,EAAuB,OAAOuB,CAAC,CAACvB,IAAF,GAASgC,CAAC,CAAChC,IAAlB,CAAA;CACvB,IAAA,OAAOuB,CAAC,CAACtB,EAAF,GAAO+B,CAAC,CAAC/B,EAAhB,CAAA;CACD,GAHO,CAAR,CAAA;;CAIA,EAAA,IAAI0J,KAAK,CAACzJ,MAAN,KAAiB,CAArB,EAAwB;KACtByJ,KAAK,CAAC1B,IAAN,CAAW;OAAEjI,IAAF;CAAQC,MAAAA,EAAAA;MAAnB,CAAA,CAAA;CACD,GAAA;;CAED0J,EAAAA,KAAK,CAACO,OAAN,CAAeD,IAAD,IAAS;KACrB,IAAIjK,IAAI,GAAGiK,IAAI,CAACjK,IAAhB,EAAsBiK,IAAI,CAACjK,IAAL,GAAYA,IAAZ,CAAA;KACtB,IAAIC,EAAE,GAAGgK,IAAI,CAAChK,EAAd,EAAkBgK,IAAI,CAAChK,EAAL,GAAUA,EAAV,CAAA;IAFpB,CAAA,CAAA;CAKA0J,EAAAA,KAAK,GAAGA,KAAK,CAACQ,MAAN,CAAcF,IAAD,IAAUA,IAAI,CAACjK,IAAL,IAAaiK,IAAI,CAAChK,EAAzC,CAAR,CAAA;CACA,EAAA,IAAI0J,KAAK,CAACzJ,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP,CAAA;CAExB,EAAA,IAAIkK,WAAW,GAAGT,KAAK,CAAC,CAAD,CAAvB,CAAA;CACA,EAAA,IAAIU,qBAAqB,GAAG,CAACD,WAAD,CAA5B,CAAA;;CACA,EAAA,KAAK,IAAIvI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8H,KAAK,CAACzJ,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC,IAAA,IAAIoI,IAAI,GAAGN,KAAK,CAAC9H,CAAD,CAAhB,CAAA;;CACA,IAAA,IAAIoI,IAAI,CAACjK,IAAL,IAAaoK,WAAW,CAACnK,EAA7B,EAAiC;CAC/B,MAAA,IAAImK,WAAW,CAACnK,EAAZ,GAAiBgK,IAAI,CAAChK,EAA1B,EAA8B;CAC5BmK,QAAAA,WAAW,CAACnK,EAAZ,GAAiBgK,IAAI,CAAChK,EAAtB,CAAA;CACD,OAAA;CACF,KAJD,MAIO;CACLmK,MAAAA,WAAW,GAAGH,IAAd,CAAA;OACAI,qBAAqB,CAACpC,IAAtB,CAA2BmC,WAA3B,CAAA,CAAA;CACD,KAAA;CACF,GAAA;;CAED,EAAA,IAAIR,UAAU,CAAC1J,MAAX,KAAsB,CAA1B,EAA6B,OAAOmK,qBAAP,CAAA;CAE7B,EAAA,MAAMC,oBAAoB,GAAGZ,cAAc,CAACE,UAAD,CAA3C,CAAA;GAEA,IAAIW,qBAAqB,GAAG,CAA5B,CAAA;GACA,MAAMC,OAAO,GAAa,EAA1B,CAAA;GACA,IAAIC,OAAO,GAAG,CAAd,CAAA;;CACA,EAAA,KACE,IAAIC,SAAS,GAAG,CADlB,EAEEA,SAAS,GAAGL,qBAAqB,CAACnK,MAFpC,EAGEwK,SAAS,EAHX,EAIE;KACA,IAAID,OAAO,EAAK,GAAA,CAAhB,EAAmB,MAAA;CACnB,IAAA,MAAMR,IAAI,GAAGI,qBAAqB,CAACK,SAAD,CAAlC,CAAA;;CACA,IAAA,IAAIH,qBAAqB,KAAKD,oBAAoB,CAACpK,MAAnD,EAA2D;CACzD;OACAsK,OAAO,CAACvC,IAAR,CAAagC,IAAb,CAAA,CAAA;CACA,MAAA,SAAA;CACD,KAAA;;CACD,IAAA,OACEM,qBAAqB,GAAGD,oBAAoB,CAACpK,MAA7C,IACAoK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CtK,EAA5C,IAAkDgK,IAAI,CAACjK,IAFzD,EAGE;OACAuK,qBAAqB,EAAA,CAAA;CACtB,KAAA;;CACD,IAAA,IAAIA,qBAAqB,KAAKD,oBAAoB,CAACpK,MAAnD,EAA2D;CACzD;OACAsK,OAAO,CAACvC,IAAR,CAAagC,IAAb,CAAA,CAAA;CACA,MAAA,SAAA;CACD,KAAA;;KACD,IAAIA,IAAI,CAAChK,EAAL,GAAUqK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CvK,IAA1D,EAAgE;CAC9D;OACAwK,OAAO,CAACvC,IAAR,CAAagC,IAAb,CAAA,CAAA;CACA,MAAA,SAAA;CACD,KAAA;;KACD,IAAIK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CtK,EAA5C,IAAkDgK,IAAI,CAAChK,EAA3D,EAA+D;CAC7D;OACA,IAAIqK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CvK,IAA5C,IAAoDiK,IAAI,CAACjK,IAA7D,EAAmE;CACjE,QAAA,SAAA;CACD,OAAA;;OACDwK,OAAO,CAACvC,IAAR,CAAa;CACXjI,QAAAA,IAAI,EAAEsK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CtK,EADvC;SAEXA,EAAE,EAAEgK,IAAI,CAAChK,EAAAA;QAFX,CAAA,CAAA;CAID,KAjCD;;;KAmCA,IAAIqK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CvK,IAA5C,GAAmDiK,IAAI,CAACjK,IAA5D,EAAkE;OAChEwK,OAAO,CAACvC,IAAR,CAAa;SACXjI,IAAI,EAAEiK,IAAI,CAACjK,IADA;CAEXC,QAAAA,EAAE,EAAEqK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CvK,IAAAA;QAFlD,CAAA,CAAA;CAID,KAAA;;KAEDiK,IAAI,CAACjK,IAAL,GAAYsK,oBAAoB,CAACC,qBAAD,CAApB,CAA4CtK,EAAxD,CAAA;KACAyK,SAAS,EAAA,CAAA;CACV,GAAA;;CAED,EAAA,OAAOF,OAAP,CAAA;CACD;;CC9HD;;;;;;;;;CAQM,SAAUG,eAAV,GAqBE;GAAA,IApBNhB,KAoBM,uEAfA,EAeA,CAAA;GAAA,IAVNiB,cAUM,uEAVW,EAUX,CAAA;GAAA,IATN7K,OASM,uEAAF,EAAE,CAAA;CAEN,EAAA,IAAI4J,KAAK,CAACzJ,MAAN,KAAiB,CAArB,EAAwB,OAAOyJ,KAAP,CAAA;CACxB,EAAA,IAAIkB,WAAW,GAAGnB,cAAc,CAACC,KAAD,EAAQ5J,OAAR,CAAhC,CAAA;GAEA,MAAM+K,SAAS,GAAGD,WAAW,CAACE,MAAZ,CAAmB,CAACC,QAAD,EAAW5B,OAAX,KAAsB;KACzD,OAAO4B,QAAQ,IAAI5B,OAAO,CAACnJ,EAAR,GAAamJ,OAAO,CAACpJ,IAAzB,CAAf,CAAA;IADgB,EAEf,CAFe,CAAlB,CAAA;CAIA,EAAA,IAAIiL,aAAa,GAAGH,SAAS,GAAGF,cAAhC,CAAA;GACA,IAAIM,YAAY,GAAG,CAAnB,CAAA;;CAEA,EAAA,KAAK,IAAIrJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgJ,WAAW,CAAC3K,MAAZ,GAAqB,CAAzC,EAA4C2B,CAAC,EAA7C,EAAiD;CAC/C,IAAA,IAAIoI,IAAI,GAAQY,WAAW,CAAChJ,CAAD,CAA3B,CAAA;KACAoI,IAAI,CAACW,cAAL,GAAsB/J,IAAI,CAAC8C,GAAL,CACpB9C,IAAI,CAACsK,KAAL,CAAW,CAAClB,IAAI,CAAChK,EAAL,GAAUgK,IAAI,CAACjK,IAAhB,IAAwBiL,aAAnC,CADoB,EAEpBL,cAAc,GAAGM,YAFG,CAAtB,CAAA;KAIAA,YAAY,IAAIjB,IAAI,CAACW,cAArB,CAAA;CACD,GAAA;;GAED,IAAIX,IAAI,GAAQY,WAAW,CAACA,WAAW,CAAC3K,MAAZ,GAAqB,CAAtB,CAA3B,CAAA;CACA+J,EAAAA,IAAI,CAACW,cAAL,GAAsBA,cAAc,GAAGM,YAAvC,CAAA;CAEA,EAAA,OAAOL,WAAP,CAAA;CACD;;CCxDD;;;;;;;;;;CAUc,SAAUO,iBAAV;CACZ;CACA7F,CAFY;CAGZ;CACA2D,CAJY;CAKZ;CACAlJ,IANY;CAOZ;CACAC,EARY;CASZ;CACA2K,cAVY,EAUU;CAEtB,EAAA,IAAIS,OAAO,GAAG9F,CAAC,CAACrF,MAAhB,CAAA;CAEA,EAAA,IAAIoL,IAAI,GAAG,CAACrL,EAAE,GAAGD,IAAN,KAAe4K,cAAc,GAAG,CAAjB,GAAqBA,cAAc,GAAG,CAAtC,GAA0C,CAAzD,CAAX,CAAA;CACA,EAAA,IAAIW,QAAQ,GAAGD,IAAI,GAAG,CAAtB,CAAA;CACA,EAAA,IAAIE,QAAQ,GAAGjG,CAAC,CAACA,CAAC,CAACrF,MAAF,GAAW,CAAZ,CAAD,GAAkBqF,CAAC,CAACA,CAAC,CAACrF,MAAF,GAAW,CAAZ,CAAlC,CAAA;CAEA,EAAA,IAAIuL,KAAK,GAAGzL,IAAI,GAAGuL,QAAnB,CARsB;;GAUtB,IAAIrI,MAAM,GAAG,IAAI3C,YAAJ,CAAiBqK,cAAjB,CAAb,CAVsB;;GAatB,IAAIjH,GAAG,GAAG8H,KAAV,CAAA;CACA,EAAA,IAAI7H,GAAG,GAAG6H,KAAK,GAAGH,IAAlB,CAAA;CAEA,EAAA,IAAII,SAAS,GAAG,CAACrI,MAAM,CAACsI,SAAxB,CAAA;GACA,IAAIC,SAAS,GAAG,CAAhB,CAAA;CACA,EAAA,IAAIC,KAAK,GAAGtG,CAAC,CAAC,CAAD,CAAb,CAAA;CACA,EAAA,IAAIuG,KAAK,GAAG5C,CAAC,CAAC,CAAD,CAAb,CAAA;GACA,IAAI6C,mBAAmB,GAAG,CAA1B,CAAA;GACA,IAAIC,kBAAkB,GAAG,IAAzB,CAAA;CAEA,EAAA,IAAIC,YAAY,GAAG,CAAnB,CAvBsB;;GA0BtB,IAAIC,aAAa,GAAG,CAApB,CAAA;CAEA,EAAA,IAAIrK,CAAC,GAAG,CAAR,CA5BsB;;CA6BtB,EAAA,IAAIC,CAAC,GAAG,CAAR,CA7BsB;;GA+BtBqK,IAAI,EAAE,OAAO,IAAP,EAAa;KACjB,IAAIT,SAAS,IAAIG,KAAjB,EAAwB,MAAM,IAAI9K,KAAJ,CAAU,4BAAV,CAAN,CAAA;;CACxB,IAAA,OAAO2K,SAAS,GAAG9H,GAAZ,GAAkB,CAAzB,EAA4B;CAC1B;CACA,MAAA,IAAIoI,kBAAJ,EAAwB;SACtBE,aAAa,EAAA,CAAA;CACbF,QAAAA,kBAAkB,GAAG,KAArB,CAAA;CACD,OAAA;;CAED9I,MAAAA,MAAM,CAACpB,CAAD,CAAN,GAAYoK,aAAa,IAAI,CAAjB,GAAqB,CAArB,GAAyBD,YAAY,GAAGC,aAApD,CAAA;OACApK,CAAC,EAAA,CAAA;;OAED,IAAIA,CAAC,KAAK8I,cAAV,EAA0B;CACxB,QAAA,MAAMuB,IAAN,CAAA;CACD,OAAA;;CAEDxI,MAAAA,GAAG,GAAGC,GAAN,CAAA;CACAA,MAAAA,GAAG,IAAI0H,IAAP,CAAA;CACAW,MAAAA,YAAY,GAAG,CAAf,CAAA;CACAC,MAAAA,aAAa,GAAG,CAAhB,CAAA;CACD,KAAA;;KAED,IAAIR,SAAS,GAAG/H,GAAhB,EAAqB;CACnBsI,MAAAA,YAAY,IAAIL,SAAhB,CAAA;OACAM,aAAa,EAAA,CAAA;CACd,KAAA;;KAED,IAAIR,SAAS,KAAK,CAACrI,MAAM,CAACsI,SAAtB,IAAmCI,mBAAmB,GAAG,CAA7D,EAAgE;OAC9DG,aAAa,EAAA,CAAA;CACd,KAAA;;CAEDR,IAAAA,SAAS,GAAGG,KAAZ,CAAA;CACAD,IAAAA,SAAS,GAAGE,KAAZ,CAAA;;KAEA,IAAIjK,CAAC,GAAGwJ,OAAR,EAAiB;CACfQ,MAAAA,KAAK,GAAGtG,CAAC,CAAC1D,CAAD,CAAT,CAAA;CACAiK,MAAAA,KAAK,GAAG5C,CAAC,CAACrH,CAAD,CAAT,CAAA;OACAA,CAAC,EAAA,CAAA;CACF,KAJD,MAIO;CACLgK,MAAAA,KAAK,IAAIL,QAAT,CAAA;CACAM,MAAAA,KAAK,GAAG,CAAR,CAAA;OACAC,mBAAmB,EAAA,CAAA;CACpB,KAAA;CACF,GAAA;;CAED,EAAA,OAAO7I,MAAP,CAAA;CACD;;CCjGD;;;;;;;;;CASc,SAAUkJ,QAAV;CACZ;CACAC,EAFY;CAGZ;CACAC,EAJY;CAKZ;CACAC,KANY;CAOZ;CACAC,SARY,EAQK;GAEjB,OACE,GAAA,GAAMD,KAAN,GAAcD,EAAd,GAAmBA,EAAnB,GACAE,SAAS,GAAGF,EADZ,IAEC,GAAMC,GAAAA,KAAN,GAAcF,EAAd,GAAmBA,EAAnB,GAAwBG,SAAS,GAAGH,EAFrC,CADF,CAAA;CAKD;;CCtBD;;;;;;;;;;;CAUc,SAAUI,mBAAV;CACZ;CACAlH,CAFY;CAGZ;CACA2D,CAJY;CAKZ;CACAlJ,IANY;CAOZ;CACAC,EARY;CASZ;CACA2K,cAVY,EAUU;CAEtB,EAAA,IAAIS,OAAO,GAAG9F,CAAC,CAACrF,MAAhB,CAAA;CAEA,EAAA,IAAIoL,IAAI,GAAG,CAACrL,EAAE,GAAGD,IAAN,KAAe4K,cAAc,GAAG,CAAjB,GAAqBA,cAAc,GAAG,CAAtC,GAA0C,CAAzD,CAAX,CAAA;CACA,EAAA,IAAIW,QAAQ,GAAGD,IAAI,GAAG,CAAtB,CALsB;;CAQtB,EAAA,IAAIpI,MAAM,GAAG,IAAI3C,YAAJ,CAAiBqK,cAAjB,CAAb,CAAA;GAEA,IAAI8B,mBAAmB,GAAGnH,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAlC,CAAA;CACA,EAAA,IAAIoH,gBAAgB,GAAGpH,CAAC,CAAC8F,OAAO,GAAG,CAAX,CAAD,GAAiB9F,CAAC,CAAC8F,OAAO,GAAG,CAAX,CAAzC,CAXsB;;CActB,EAAA,IAAI1H,GAAG,GAAG3D,IAAI,GAAGuL,QAAjB,CAAA;CACA,EAAA,IAAI3H,GAAG,GAAG5D,IAAI,GAAGuL,QAAjB,CAAA;CAEA,EAAA,IAAIG,SAAS,GAAGrI,MAAM,CAACuJ,gBAAvB,CAAA;GACA,IAAIhB,SAAS,GAAG,CAAhB,CAAA;CACA,EAAA,IAAIC,KAAK,GAAGtG,CAAC,CAAC,CAAD,CAAD,GAAOmH,mBAAnB,CAAA;GACA,IAAIZ,KAAK,GAAG,CAAZ,CAAA;GAEA,IAAIG,YAAY,GAAG,CAAnB,CAAA;GACA,IAAIM,KAAK,GAAG,CAAZ,CAAA;GACA,IAAIC,SAAS,GAAG,CAAhB,CAAA;GACA,IAAIK,QAAQ,GAAG,CAAf,CAAA;GACA,IAAIC,QAAQ,GAAG,CAAf,CAAA;CAEA,EAAA,IAAIjL,CAAC,GAAG,CAAR,CA5BsB;;CA6BtB,EAAA,IAAIC,CAAC,GAAG,CAAR,CA7BsB;;GA+BtB,SAASiL,QAAT,CAAkBV,EAAlB,EAA8BW,EAA9B,EAA0CV,EAA1C,EAAsDW,EAAtD,EAAgE;KAC9D,OAAO,CAACA,EAAE,GAAGD,EAAN,KAAaV,EAAE,GAAGD,EAAlB,CAAP,CAAA;CACD,GAAA;;GAED,IAAIa,GAAG,GAAG,CAAV,CAAA;;GACAf,IAAI,EAAE,OAAO,IAAP,EAAa;KACjB,IAAIT,SAAS,IAAIG,KAAjB,EAAwB,MAAM,IAAI9K,KAAJ,CAAU,4BAAV,CAAN,CAAA;;CACxB,IAAA,IAAI2K,SAAS,IAAI/H,GAAb,IAAoBA,GAAG,IAAIkI,KAA/B,EAAsC;CACpCqB,MAAAA,GAAG,GAAGd,QAAQ,CAAC,CAAD,EAAIzI,GAAG,GAAG+H,SAAV,EAAqBa,KAArB,EAA4BX,SAA5B,CAAd,CAAA;OACAiB,QAAQ,GAAGZ,YAAY,GAAGiB,GAA1B,CAAA;CACD,KAAA;;CACD,IAAA,OAAOrB,KAAK,GAAGjI,GAAR,IAAe,CAAtB,EAAyB;CACvB;CACAsJ,MAAAA,GAAG,GAAGd,QAAQ,CAAC,CAAD,EAAIxI,GAAG,GAAG8H,SAAV,EAAqBa,KAArB,EAA4BX,SAA5B,CAAd,CAAA;OACAkB,QAAQ,GAAGb,YAAY,GAAGiB,GAA1B,CAAA;OAEAhK,MAAM,CAACpB,CAAC,EAAF,CAAN,GAAc,CAACgL,QAAQ,GAAGD,QAAZ,IAAwBvB,IAAtC,CAAA;;OAEA,IAAIxJ,CAAC,KAAK8I,cAAV,EAA0B;CACxB,QAAA,MAAMuB,IAAN,CAAA;CACD,OAAA;;CAEDxI,MAAAA,GAAG,GAAGC,GAAN,CAAA;CACAA,MAAAA,GAAG,IAAI0H,IAAP,CAAA;CACAuB,MAAAA,QAAQ,GAAGC,QAAX,CAAA;CACD,KAAA;;KAEDb,YAAY,IAAIG,QAAQ,CAACV,SAAD,EAAYG,KAAZ,EAAmBU,KAAnB,EAA0BC,SAA1B,CAAxB,CAAA;CAEAd,IAAAA,SAAS,GAAGG,KAAZ,CAAA;CACAD,IAAAA,SAAS,GAAGE,KAAZ,CAAA;;KAEA,IAAIjK,CAAC,GAAGwJ,OAAR,EAAiB;CACfQ,MAAAA,KAAK,GAAGtG,CAAC,CAAC1D,CAAD,CAAT,CAAA;CACAiK,MAAAA,KAAK,GAAG5C,CAAC,CAACrH,CAAD,CAAT,CAAA;OACAA,CAAC,EAAA,CAAA;CACF,KAJD,MAIO,IAAIA,CAAC,KAAKwJ,OAAV,EAAmB;CACxBQ,MAAAA,KAAK,IAAIc,gBAAT,CAAA;CACAb,MAAAA,KAAK,GAAG,CAAR,CAAA;CACD,KAAA;;KAEDS,KAAK,GAAGQ,QAAQ,CAACrB,SAAD,EAAYE,SAAZ,EAAuBC,KAAvB,EAA8BC,KAA9B,CAAhB,CAAA;CACAU,IAAAA,SAAS,GAAG,CAACD,KAAD,GAASb,SAAT,GAAqBE,SAAjC,CAAA;CACD,GAAA;;CAED,EAAA,OAAO1I,MAAP,CAAA;CACD;;CC9DD;;;;;;;;;;;;;;;;;;;;;;;CAuBM,SAAUiK,eAAV,CACJnE,IADI,EAEgC;GAAA,IAApCjJ,OAAoC,uEAAF,EAAE,CAAA;GAEpC,IAAI;KAAEwF,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAWF,IAAf,CAAA;CACA,EAAA,IAAIqC,OAAO,GAAG9F,CAAC,CAACrF,MAAhB,CAAA;GAEA,MAAM;CACJF,IAAAA,IAAI,GAAGuF,CAAC,CAAC,CAAD,CADJ;CAEJtF,IAAAA,EAAE,GAAGsF,CAAC,CAAC8F,OAAO,GAAG,CAAX,CAFF;CAGJ+B,IAAAA,OAAO,GAAG,QAHN;CAIJxC,IAAAA,cAAc,GAAG,GAJb;CAKJhB,IAAAA,UAAU,GAAG,EALT;CAMJD,IAAAA,KAAK,GAAG,CAAC;OAAE3J,IAAF;CAAQC,MAAAA,EAAAA;MAAT,CAAA;CANJ,GAAA,GAOFF,OAPJ,CAAA;;GASA,IAAIC,IAAI,GAAGC,EAAX,EAAe;CACb,IAAA,MAAM,IAAIoI,UAAJ,CAAe,+BAAf,CAAN,CAAA;CACD,GAAA;;GAEDU,OAAO,CAACC,IAAD,CAAP,CAAA;;GAEA,IAAI4B,cAAc,GAAG,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIvC,UAAJ,CAAe,gDAAf,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,MAAMgF,eAAe,GAAG3D,cAAc,CAACC,KAAD,EAAQ;KAAE3J,IAAF;KAAQC,EAAR;CAAY2J,IAAAA,UAAAA;CAAZ,GAAR,CAAtC,CAAA;CAEA,EAAA,MAAM0D,kBAAkB,GAAG3C,eAAe,CAAC0C,eAAD,EAAkBzC,cAAlB,EAAkC;KAC1E5K,IAD0E;CAE1EC,IAAAA,EAAAA;CAF0E,GAAlC,CAA1C,CAAA;GAKA,IAAIsN,OAAO,GAAa,EAAxB,CAAA;GACA,IAAIC,OAAO,GAAa,EAAxB,CAAA;;CACA,EAAA,KAAK,IAAIvD,IAAT,IAAiBqD,kBAAjB,EAAqC;CACnC,IAAA,IAAI,CAACrD,IAAI,CAACW,cAAV,EAA0B;OACxBX,IAAI,CAACW,cAAL,GAAsB,CAAtB,CAAA;CACD,KAAA;;CAED,IAAA,IAAI6C,UAAU,GAAGC,WAAW,CAC1BpE,KAAK,CAACtJ,IAAN,CAAWuF,CAAX,CAD0B,EAE1B+D,KAAK,CAACtJ,IAAN,CAAWkJ,CAAX,CAF0B,EAG1Be,IAAI,CAACjK,IAHqB,EAI1BiK,IAAI,CAAChK,EAJqB,EAK1BgK,IAAI,CAACW,cALqB,EAM1BwC,OAN0B,CAA5B,CAAA;KASAG,OAAO,GAAGA,OAAO,CAACI,MAAR,CAAeF,UAAU,CAAClI,CAA1B,CAAV,CAAA;KACAiI,OAAO,GAAGA,OAAO,CAACG,MAAR,CAAeF,UAAU,CAACvE,CAA1B,CAAV,CAAA;CACD,GAAA;;GAED,OAAO;CAAE3D,IAAAA,CAAC,EAAEgI,OAAL;CAAcrE,IAAAA,CAAC,EAAEsE,OAAAA;IAAxB,CAAA;CACD,CAAA;;CAED,SAASE,WAAT,CACEnI,CADF,EAEE2D,CAFF,EAGElJ,IAHF,EAIEC,EAJF,EAKE2K,cALF,EAMEwC,OANF,EAM4B;GAE1B,IAAIxC,cAAc,GAAG,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIvC,UAAJ,CAAe,yCAAf,CAAN,CAAA;CACD,GAAA;;CACD,EAAA,IAAInF,MAAM,GACRkK,OAAO,KAAK,MAAZ,GACI9D,KAAK,CAACtJ,IAAN,CAAWoL,iBAAiB,CAAC7F,CAAD,EAAI2D,CAAJ,EAAOlJ,IAAP,EAAaC,EAAb,EAAiB2K,cAAjB,CAA5B,CADJ,GAEItB,KAAK,CAACtJ,IAAN,CAAWyM,mBAAmB,CAAClH,CAAD,EAAI2D,CAAJ,EAAOlJ,IAAP,EAAaC,EAAb,EAAiB2K,cAAjB,CAA9B,CAHN,CAAA;GAKA,OAAO;CACLrF,IAAAA,CAAC,EAAE+D,KAAK,CAACtJ,IAAN,CACDF,iBAAiB,CAAC;OAChBE,IADgB;OAEhBC,EAFgB;CAGhBC,MAAAA,MAAM,EAAE0K,cAAAA;CAHQ,KAAD,CADhB,CADE;CAQL1B,IAAAA,CAAC,EAAEhG,MAAAA;IARL,CAAA;CAUD;;CCvHD;;;;;;;CAMM,SAAU0K,SAAV,CACJ5E,IADI,EAE0B;GAAA,IAA9BjJ,OAA8B,uEAAF,EAAE,CAAA;GAE9B,MAAM;KAAEwF,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAWF,IAAjB,CAAA;GACA,MAAM;CACJhJ,IAAAA,IAAI,GAAGuF,CAAC,CAAC,CAAD,CADJ;KAEJtF,EAAE,GAAGsF,CAAC,CAACA,CAAC,CAACrF,MAAF,GAAW,CAAZ,CAFF;CAGJyJ,IAAAA,KAAK,GAAG,CAAC;OAAE3J,IAAF;CAAQC,MAAAA,EAAAA;CAAR,KAAD,CAHJ;CAIJ2J,IAAAA,UAAU,GAAG,EAAA;CAJT,GAAA,GAKF7J,OALJ,CAAA;CAOA,EAAA,IAAIsN,eAAe,GAAG3D,cAAc,CAACC,KAAD,EAAQ;KAAE3J,IAAF;KAAQC,EAAR;CAAY2J,IAAAA,UAAAA;CAAZ,GAAR,CAApC,CAAA;GAEA,IAAIiE,gBAAgB,GAAG,CAAvB,CAAA;GACA,IAAIC,IAAI,GAAG,EAAX,CAAA;GACA,IAAIC,IAAI,GAAG,EAAX,CAAA;GACA,IAAIC,QAAQ,GAAG,CAAf,CAAA;;CACA,EAAA,OAAOA,QAAQ,GAAGzI,CAAC,CAACrF,MAApB,EAA4B;KAC1B,IACEqF,CAAC,CAACyI,QAAD,CAAD,IAAeX,eAAe,CAACQ,gBAAD,CAAf,CAAkC5N,EAAjD,IACAsF,CAAC,CAACyI,QAAD,CAAD,IAAeX,eAAe,CAACQ,gBAAD,CAAf,CAAkC7N,IAFnD,EAGE;CACA8N,MAAAA,IAAI,CAAC7F,IAAL,CAAU1C,CAAC,CAACyI,QAAD,CAAX,CAAA,CAAA;CACAD,MAAAA,IAAI,CAAC9F,IAAL,CAAUiB,CAAC,CAAC8E,QAAD,CAAX,CAAA,CAAA;CACD,KAND,MAMO;OACL,IAAIzI,CAAC,CAACyI,QAAD,CAAD,GAAcX,eAAe,CAACQ,gBAAD,CAAf,CAAkC5N,EAApD,EAAwD;SACtD4N,gBAAgB,EAAA,CAAA;CAChB,QAAA,IAAI,CAACR,eAAe,CAACQ,gBAAD,CAApB,EAAwC,MAAA;CACzC,OAAA;CACF,KAAA;;KACDG,QAAQ,EAAA,CAAA;CACT,GAAA;;GAED,OAAO;CACLzI,IAAAA,CAAC,EAAEuI,IADE;CAEL5E,IAAAA,CAAC,EAAE6E,IAAAA;IAFL,CAAA;CAID;;CC7DD;;;;;;;;CAOM,SAAUE,aAAV,CAAwBjF,IAAxB,EAAkD;GAAA,IAAZjJ,OAAY,uEAAF,EAAE,CAAA;GACtDgJ,OAAO,CAACC,IAAD,EAAO;CAAEC,IAAAA,SAAS,EAAE,CAAA;CAAb,GAAP,CAAP,CAAA;GACA,MAAM;KAAE1D,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAWF,IAAjB,CAAA;CACA,EAAA,IAAIzD,CAAC,CAACrF,MAAF,KAAa,CAAjB,EAAoB,OAAO,CAAP,CAAA;GACpB,MAAM;KAAEsF,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAACC,CAAD,EAAIxF,OAAJ,CAA9C,CAAA;GACA,IAAImO,oBAAoB,GAAG,CAA3B,CAAA;;GACA,KAAK,IAAIrM,CAAC,GAAG2D,SAAb,EAAwB3D,CAAC,GAAG4D,OAA5B,EAAqC5D,CAAC,EAAtC,EAA0C;KACxCqM,oBAAoB,IAAK,CAAC3I,CAAC,CAAC1D,CAAC,GAAG,CAAL,CAAD,GAAW0D,CAAC,CAAC1D,CAAD,CAAb,KAAqBqH,CAAC,CAACrH,CAAC,GAAG,CAAL,CAAD,GAAWqH,CAAC,CAACrH,CAAD,CAAjC,CAAD,GAA0C,CAAlE,CAAA;CACD,GAAA;;CAED,EAAA,OAAOqM,oBAAP,CAAA;CACD;;CClBD;;;;;;;CAMM,SAAUC,WAAV,CACJnF,IADI,EAqBE;GAAA,IAnBNjJ,OAmBM,uEAAF,EAAE,CAAA;GAENgJ,OAAO,CAACC,IAAD,EAAO;CAAEC,IAAAA,SAAS,EAAE,CAAA;CAAb,GAAP,CAAP,CAAA;GACA,MAAM;KAAE1D,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAWF,IAAjB,CAAA;CACA,EAAA,IAAIzD,CAAC,CAACrF,MAAF,KAAa,CAAjB,EAAoB,OAAO;CAAEqF,IAAAA,CAAC,EAAEA,CAAC,CAAC,CAAD,CAAN;CAAW2D,IAAAA,CAAC,EAAEA,CAAC,CAAC,CAAD,CAAf;CAAoBxI,IAAAA,KAAK,EAAE,CAAA;IAAlC,CAAA;GAEpB,MAAM;KAAE8E,SAAF;CAAaC,IAAAA,OAAAA;CAAb,GAAA,GAAyBH,eAAe,CAACC,CAAD,EAAIxF,OAAJ,CAA9C,CAAA;CAEA,EAAA,IAAIqJ,OAAO,GAAG;CAAE7D,IAAAA,CAAC,EAAEA,CAAC,CAACC,SAAD,CAAN;CAAmB0D,IAAAA,CAAC,EAAEA,CAAC,CAAC1D,SAAD,CAAvB;CAAoC9E,IAAAA,KAAK,EAAE8E,SAAAA;IAAzD,CAAA;;GACA,KAAK,IAAI3D,CAAC,GAAG2D,SAAb,EAAwB3D,CAAC,IAAI4D,OAA7B,EAAsC5D,CAAC,EAAvC,EAA2C;KACzC,IAAIqH,CAAC,CAACrH,CAAD,CAAD,GAAOuH,OAAO,CAACF,CAAnB,EAAsBE,OAAO,GAAG;CAAE7D,MAAAA,CAAC,EAAEA,CAAC,CAAC1D,CAAD,CAAN;CAAWqH,MAAAA,CAAC,EAAEA,CAAC,CAACrH,CAAD,CAAf;CAAoBnB,MAAAA,KAAK,EAAEmB,CAAAA;MAArC,CAAA;CACvB,GAAA;;CAED,EAAA,OAAOuH,OAAP,CAAA;CACD;;CC7CD;;;;;CAKM,SAAUgF,iBAAV,CAA4BC,MAA5B,EAAgD;CACpD,EAAA,MAAMC,MAAM,GAAGD,MAAM,CAACnO,MAAtB,CAAA;CACA,EAAA,MAAMqO,SAAS,GAAGF,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAA5B,CAAA;CACA,EAAA,MAAMsO,SAAS,GAAG,IAAIlF,KAAJ,CAAUgF,MAAV,CAAlB,CAAA;;GACA,KAAK,IAAIG,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;KACrCD,SAAS,CAACC,GAAD,CAAT,GAAiB,IAAIlO,YAAJ,CAAiBgO,SAAjB,CAAjB,CAAA;CACD,GAAA;;GACD,KAAK,IAAIG,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGH,SAA9B,EAAyCG,MAAM,EAA/C,EAAmD;KACjD,IAAIhH,IAAI,GAAG,CAAX,CAAA;;KACA,KAAK,IAAI+G,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;CACrC/G,MAAAA,IAAI,IAAI2G,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAR,CAAA;CACD,KAAA;;CACDhH,IAAAA,IAAI,IAAI4G,MAAR,CAAA;;KACA,KAAK,IAAIG,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;CACrCD,MAAAA,SAAS,CAACC,GAAD,CAAT,CAAeC,MAAf,CAAA,GAAyBL,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,IAAsBhH,IAA/C,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO8G,SAAP,CAAA;CACD;;CCvBD,SAAS5K,KAAT,CAAarB,KAAb,EAAoB;GAClB,IAAIxC,OAAO,GAAG4O,SAAS,CAACzO,MAAV,GAAmB,CAAnB,IAAwByO,SAAS,CAAC,CAAD,CAAT,KAAiBxL,SAAzC,GAAqDwL,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAAA;;CAEA,EAAA,IAAI,CAACxN,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAID,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAIoM,kBAAkB,GAAG7O,OAAO,CAACyF,SAAjC;OACIA,SAAS,GAAGoJ,kBAAkB,KAAK,KAAK,CAA5B,GAAgC,CAAhC,GAAoCA,kBADpD;CAAA,MAEIC,gBAAgB,GAAG9O,OAAO,CAAC0F,OAF/B;OAGIA,OAAO,GAAGoJ,gBAAgB,KAAK,KAAK,CAA1B,GAA8BtM,KAAK,CAACrC,MAApC,GAA6C2O,gBAH3D,CAAA;;CAKA,EAAA,IAAIrJ,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAIjD,KAAK,CAACrC,MAApC,IAA8C,CAACmD,MAAM,CAACyL,SAAP,CAAiBtJ,SAAjB,CAAnD,EAAgF;CAC9E,IAAA,MAAM,IAAIzE,KAAJ,CAAU,0DAAV,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAI0E,OAAO,IAAID,SAAX,IAAwBC,OAAO,GAAGlD,KAAK,CAACrC,MAAxC,IAAkD,CAACmD,MAAM,CAACyL,SAAP,CAAiBrJ,OAAjB,CAAvD,EAAkF;CAChF,IAAA,MAAM,IAAI1E,KAAJ,CAAU,+EAAV,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAI4E,QAAQ,GAAGpD,KAAK,CAACiD,SAAD,CAApB,CAAA;;CAEA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,GAAG4D,OAAhC,EAAyC5D,CAAC,EAA1C,EAA8C;CAC5C,IAAA,IAAIU,KAAK,CAACV,CAAD,CAAL,GAAW8D,QAAf,EAAyBA,QAAQ,GAAGpD,KAAK,CAACV,CAAD,CAAhB,CAAA;CAC1B,GAAA;;CAED,EAAA,OAAO8D,QAAP,CAAA;CACD;;CC/BD,SAAShC,KAAT,CAAapB,KAAb,EAAoB;GAClB,IAAIxC,OAAO,GAAG4O,SAAS,CAACzO,MAAV,GAAmB,CAAnB,IAAwByO,SAAS,CAAC,CAAD,CAAT,KAAiBxL,SAAzC,GAAqDwL,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAAA;;CAEA,EAAA,IAAI,CAACxN,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAID,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAIoM,kBAAkB,GAAG7O,OAAO,CAACyF,SAAjC;OACIA,SAAS,GAAGoJ,kBAAkB,KAAK,KAAK,CAA5B,GAAgC,CAAhC,GAAoCA,kBADpD;CAAA,MAEIC,gBAAgB,GAAG9O,OAAO,CAAC0F,OAF/B;OAGIA,OAAO,GAAGoJ,gBAAgB,KAAK,KAAK,CAA1B,GAA8BtM,KAAK,CAACrC,MAApC,GAA6C2O,gBAH3D,CAAA;;CAKA,EAAA,IAAIrJ,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAIjD,KAAK,CAACrC,MAApC,IAA8C,CAACmD,MAAM,CAACyL,SAAP,CAAiBtJ,SAAjB,CAAnD,EAAgF;CAC9E,IAAA,MAAM,IAAIzE,KAAJ,CAAU,0DAAV,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAI0E,OAAO,IAAID,SAAX,IAAwBC,OAAO,GAAGlD,KAAK,CAACrC,MAAxC,IAAkD,CAACmD,MAAM,CAACyL,SAAP,CAAiBrJ,OAAjB,CAAvD,EAAkF;CAChF,IAAA,MAAM,IAAI1E,KAAJ,CAAU,+EAAV,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAI8E,QAAQ,GAAGtD,KAAK,CAACiD,SAAD,CAApB,CAAA;;CAEA,EAAA,KAAK,IAAI3D,CAAC,GAAG2D,SAAS,GAAG,CAAzB,EAA4B3D,CAAC,GAAG4D,OAAhC,EAAyC5D,CAAC,EAA1C,EAA8C;CAC5C,IAAA,IAAIU,KAAK,CAACV,CAAD,CAAL,GAAWgE,QAAf,EAAyBA,QAAQ,GAAGtD,KAAK,CAACV,CAAD,CAAhB,CAAA;CAC1B,GAAA;;CAED,EAAA,OAAOgE,QAAP,CAAA;CACD;;CC7BD,SAASkJ,SAAT,CAAiBxM,KAAjB,EAAwB;GACtB,IAAIxC,OAAO,GAAG4O,SAAS,CAACzO,MAAV,GAAmB,CAAnB,IAAwByO,SAAS,CAAC,CAAD,CAAT,KAAiBxL,SAAzC,GAAqDwL,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF,CAAA;;CAEA,EAAA,IAAI,CAACxN,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAFD,MAEO,IAAID,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CAC7B,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAIU,MAAJ,CAAA;;CAEA,EAAA,IAAInD,OAAO,CAACmD,MAAR,KAAmBC,SAAvB,EAAkC;CAChC,IAAA,IAAI,CAAChC,UAAU,CAACpB,OAAO,CAACmD,MAAT,CAAf,EAAiC;CAC/B,MAAA,MAAM,IAAIV,SAAJ,CAAc,6CAAd,CAAN,CAAA;CACD,KAAA;;KAEDU,MAAM,GAAGnD,OAAO,CAACmD,MAAjB,CAAA;CACD,GAND,MAMO;CACLA,IAAAA,MAAM,GAAG,IAAIoG,KAAJ,CAAU/G,KAAK,CAACrC,MAAhB,CAAT,CAAA;CACD,GAAA;;CAED,EAAA,IAAIiI,UAAU,GAAGxE,KAAG,CAACpB,KAAD,CAApB,CAAA;CACA,EAAA,IAAI6F,UAAU,GAAGxE,KAAG,CAACrB,KAAD,CAApB,CAAA;;GAEA,IAAI4F,UAAU,KAAKC,UAAnB,EAA+B;CAC7B,IAAA,MAAM,IAAIC,UAAJ,CAAe,6EAAf,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAI2G,YAAY,GAAGjP,OAAO,CAAC4D,GAA3B;CAAA,MACIkC,QAAQ,GAAGmJ,YAAY,KAAK,KAAK,CAAtB,GAA0BjP,OAAO,CAACkP,UAAR,GAAqB9G,UAArB,GAAkC,CAA5D,GAAgE6G,YAD/E;CAAA,MAEIE,YAAY,GAAGnP,OAAO,CAAC6D,GAF3B;CAAA,MAGI+B,QAAQ,GAAGuJ,YAAY,KAAK,KAAK,CAAtB,GAA0BnP,OAAO,CAACkP,UAAR,GAAqB7G,UAArB,GAAkC,CAA5D,GAAgE8G,YAH/E,CAAA;;GAKA,IAAIrJ,QAAQ,IAAIF,QAAhB,EAA0B;CACxB,IAAA,MAAM,IAAI0C,UAAJ,CAAe,4CAAf,CAAN,CAAA;CACD,GAAA;;GAED,IAAIhB,MAAM,GAAG,CAAC1B,QAAQ,GAAGE,QAAZ,KAAyBuC,UAAU,GAAGD,UAAtC,CAAb,CAAA;;CAEA,EAAA,KAAK,IAAItG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,KAAK,CAACrC,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrCqB,IAAAA,MAAM,CAACrB,CAAD,CAAN,GAAY,CAACU,KAAK,CAACV,CAAD,CAAL,GAAWsG,UAAZ,IAA0Bd,MAA1B,GAAmCxB,QAA/C,CAAA;CACD,GAAA;;CAED,EAAA,OAAO3C,MAAP,CAAA;CACD;;CChDD,MAAMiM,MAAM,GAAG,GAAA,CAAIC,MAAJ,CAAW,CAAX,CAAf,CAAA;CACA,MAAMC,UAAU,GAAG,GAAA,CAAID,MAAJ,CAAW,CAAX,CAAnB,CAAA;CAEO,SAASE,aAAT,GAAyB;GAC9B,OAAOC,wBAAwB,CAAC,IAAD,CAA/B,CAAA;CACD,CAAA;CAEM,SAASA,wBAAT,CAAkClB,MAAlC,EAAwD;GAAA,IAAdtO,OAAc,uEAAJ,EAAI,CAAA;GAC7D,MAAM;CAAEyP,IAAAA,OAAO,GAAG,EAAZ;CAAgBC,IAAAA,UAAU,GAAG,EAA7B;CAAiCC,IAAAA,UAAU,GAAG,CAAA;CAA9C,GAAA,GAAoD3P,OAA1D,CAAA;CACA,EAAA,OAAQ,CAAEsO,EAAAA,MAAM,CAACsB,WAAP,CAAmBC,IAAK,CAAA;AACpC,EAAET,MAAO,CAAA;AACT,EAAEE,UAAW,CAAEQ,EAAAA,WAAW,CAACxB,MAAD,EAASmB,OAAT,EAAkBC,UAAlB,EAA8BC,UAA9B,CAA0C,CAAA;AACpE,EAAEP,MAAO,CAAA;AACT,EAAEA,MAAO,CAAA,MAAA,EAAQd,MAAM,CAACyB,IAAK,CAAA;AAC7B,EAAEX,MAAO,CAAA,SAAA,EAAWd,MAAM,CAAC0B,OAAQ,CAAA;AACnC,CANE,CAAA,CAAA;CAOD,CAAA;;CAED,SAASF,WAAT,CAAqBxB,MAArB,EAA6BmB,OAA7B,EAAsCC,UAAtC,EAAkDC,UAAlD,EAA8D;GAC5D,MAAM;KAAEI,IAAF;CAAQC,IAAAA,OAAAA;CAAR,GAAA,GAAoB1B,MAA1B,CAAA;GACA,MAAM2B,IAAI,GAAGnP,IAAI,CAAC8C,GAAL,CAASmM,IAAT,EAAeN,OAAf,CAAb,CAAA;GACA,MAAMS,IAAI,GAAGpP,IAAI,CAAC8C,GAAL,CAASoM,OAAT,EAAkBN,UAAlB,CAAb,CAAA;GACA,MAAM3H,MAAM,GAAG,EAAf,CAAA;;GACA,KAAK,IAAIjG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmO,IAApB,EAA0BnO,CAAC,EAA3B,EAA+B;KAC7B,IAAIqO,IAAI,GAAG,EAAX,CAAA;;KACA,KAAK,IAAIpO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmO,IAApB,EAA0BnO,CAAC,EAA3B,EAA+B;CAC7BoO,MAAAA,IAAI,CAACjI,IAAL,CAAUkI,YAAY,CAAC9B,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAD,EAAmB4N,UAAnB,CAAtB,CAAA,CAAA;CACD,KAAA;;KACD5H,MAAM,CAACG,IAAP,CAAa,CAAEiI,EAAAA,IAAI,CAACG,IAAL,CAAU,GAAV,CAAe,CAA9B,CAAA,CAAA,CAAA;CACD,GAAA;;GACD,IAAIJ,IAAI,KAAKF,OAAb,EAAsB;CACpBjI,IAAAA,MAAM,CAACA,MAAM,CAAC5H,MAAP,GAAgB,CAAjB,CAAN,IAA8B,CAAO6P,KAAAA,EAAAA,OAAO,GAAGN,UAAW,CAA1D,aAAA,CAAA,CAAA;CACD,GAAA;;GACD,IAAIO,IAAI,KAAKF,IAAb,EAAmB;CACjBhI,IAAAA,MAAM,CAACG,IAAP,CAAa,OAAM6H,IAAI,GAAGN,OAAQ,CAAlC,UAAA,CAAA,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAO1H,MAAM,CAACuI,IAAP,CAAa,CAAIhB,EAAAA,EAAAA,UAAW,EAA5B,CAAP,CAAA;CACD,CAAA;;CAED,SAASc,YAAT,CAAsBG,GAAtB,EAA2BZ,UAA3B,EAAuC;CACrC,EAAA,MAAMa,MAAM,GAAGC,MAAM,CAACF,GAAD,CAArB,CAAA;;CACA,EAAA,IAAIC,MAAM,CAACrQ,MAAP,IAAiBwP,UAArB,EAAiC;CAC/B,IAAA,OAAOa,MAAM,CAACE,MAAP,CAAcf,UAAd,EAA0B,GAA1B,CAAP,CAAA;CACD,GAAA;;GACD,MAAMgB,OAAO,GAAGJ,GAAG,CAACK,WAAJ,CAAgBjB,UAAU,GAAG,CAA7B,CAAhB,CAAA;;CACA,EAAA,IAAIgB,OAAO,CAACxQ,MAAR,IAAkBwP,UAAtB,EAAkC;CAChC,IAAA,OAAOgB,OAAP,CAAA;CACD,GAAA;;GACD,MAAME,WAAW,GAAGN,GAAG,CAACO,aAAJ,CAAkBnB,UAAU,GAAG,CAA/B,CAApB,CAAA;CACA,EAAA,MAAMoB,MAAM,GAAGF,WAAW,CAACG,OAAZ,CAAoB,GAApB,CAAf,CAAA;CACA,EAAA,MAAMtP,CAAC,GAAGmP,WAAW,CAAClO,KAAZ,CAAkBoO,MAAlB,CAAV,CAAA;CACA,EAAA,OAAOF,WAAW,CAAClO,KAAZ,CAAkB,CAAlB,EAAqBgN,UAAU,GAAGjO,CAAC,CAACvB,MAApC,CAAA,GAA8CuB,CAArD,CAAA;CACD;;CCpDM,SAASuP,qBAAT,CAA+BC,cAA/B,EAA+CC,MAA/C,EAAuD;GAC5DD,cAAc,CAAC/P,SAAf,CAAyBgM,GAAzB,GAA+B,SAASA,GAAT,CAAa9L,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK+P,CAAAA,IAAL,CAAU/P,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKgQ,CAAAA,IAAL,CAAUhQ,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBiQ,IAAzB,GAAgC,SAASA,IAAT,CAAc/P,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBkQ,IAAzB,GAAgC,SAASA,IAAT,CAAc/C,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAAC/D,GAAf,GAAqB,SAASA,GAAT,CAAamB,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACtB,GAAV,CAAc9L,KAAd,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBqQ,GAAzB,GAA+B,SAASA,GAAT,CAAanQ,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAKoQ,CAAAA,IAAL,CAAUpQ,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKqQ,CAAAA,IAAL,CAAUrQ,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBsQ,IAAzB,GAAgC,SAASA,IAAT,CAAcpQ,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBuQ,IAAzB,GAAgC,SAASA,IAAT,CAAcpD,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACM,GAAf,GAAqB,SAASA,GAAT,CAAalD,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAAC+C,GAAV,CAAcnQ,KAAd,CAAP,CAAA;IAFF,CAAA;;GAIA6P,cAAc,CAAC/P,SAAf,CAAyBwQ,QAAzB,GAAoCT,cAAc,CAAC/P,SAAf,CAAyBqQ,GAA7D,CAAA;GACAN,cAAc,CAAC/P,SAAf,CAAyByQ,SAAzB,GAAqCV,cAAc,CAAC/P,SAAf,CAAyBsQ,IAA9D,CAAA;GACAP,cAAc,CAAC/P,SAAf,CAAyB0Q,SAAzB,GAAqCX,cAAc,CAAC/P,SAAf,CAAyBuQ,IAA9D,CAAA;CACAR,EAAAA,cAAc,CAACS,QAAf,GAA0BT,cAAc,CAACM,GAAzC,CAAA;;GAEAN,cAAc,CAAC/P,SAAf,CAAyB2Q,GAAzB,GAA+B,SAASA,GAAT,CAAazQ,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK0Q,CAAAA,IAAL,CAAU1Q,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAK2Q,CAAAA,IAAL,CAAU3Q,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB4Q,IAAzB,GAAgC,SAASA,IAAT,CAAc1Q,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyB6Q,IAAzB,GAAgC,SAASA,IAAT,CAAc1D,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACY,GAAf,GAAqB,SAASA,GAAT,CAAaxD,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACqD,GAAV,CAAczQ,KAAd,CAAP,CAAA;IAFF,CAAA;;GAIA6P,cAAc,CAAC/P,SAAf,CAAyB8Q,QAAzB,GAAoCf,cAAc,CAAC/P,SAAf,CAAyB2Q,GAA7D,CAAA;GACAZ,cAAc,CAAC/P,SAAf,CAAyB+Q,SAAzB,GAAqChB,cAAc,CAAC/P,SAAf,CAAyB4Q,IAA9D,CAAA;GACAb,cAAc,CAAC/P,SAAf,CAAyBgR,SAAzB,GAAqCjB,cAAc,CAAC/P,SAAf,CAAyB6Q,IAA9D,CAAA;CACAd,EAAAA,cAAc,CAACe,QAAf,GAA0Bf,cAAc,CAACY,GAAzC,CAAA;;GAEAZ,cAAc,CAAC/P,SAAf,CAAyBV,GAAzB,GAA+B,SAASA,GAAT,CAAaY,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK+Q,CAAAA,IAAL,CAAU/Q,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKgR,CAAAA,IAAL,CAAUhR,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBiR,IAAzB,GAAgC,SAASA,IAAT,CAAc/Q,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBkR,IAAzB,GAAgC,SAASA,IAAT,CAAc/D,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACzQ,GAAf,GAAqB,SAASA,GAAT,CAAa6N,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAAChO,GAAV,CAAcY,KAAd,CAAP,CAAA;IAFF,CAAA;;GAIA6P,cAAc,CAAC/P,SAAf,CAAyBmR,MAAzB,GAAkCpB,cAAc,CAAC/P,SAAf,CAAyBV,GAA3D,CAAA;GACAyQ,cAAc,CAAC/P,SAAf,CAAyBoR,OAAzB,GAAmCrB,cAAc,CAAC/P,SAAf,CAAyBiR,IAA5D,CAAA;GACAlB,cAAc,CAAC/P,SAAf,CAAyBqR,OAAzB,GAAmCtB,cAAc,CAAC/P,SAAf,CAAyBkR,IAA5D,CAAA;CACAnB,EAAAA,cAAc,CAACoB,MAAf,GAAwBpB,cAAc,CAACzQ,GAAvC,CAAA;;GAEAyQ,cAAc,CAAC/P,SAAf,CAAyBsR,GAAzB,GAA+B,SAASA,GAAT,CAAapR,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAKqR,CAAAA,IAAL,CAAUrR,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKsR,CAAAA,IAAL,CAAUtR,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBuR,IAAzB,GAAgC,SAASA,IAAT,CAAcrR,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBwR,IAAzB,GAAgC,SAASA,IAAT,CAAcrE,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACuB,GAAf,GAAqB,SAASA,GAAT,CAAanE,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACgE,GAAV,CAAcpR,KAAd,CAAP,CAAA;IAFF,CAAA;;GAIA6P,cAAc,CAAC/P,SAAf,CAAyByR,OAAzB,GAAmC1B,cAAc,CAAC/P,SAAf,CAAyBsR,GAA5D,CAAA;GACAvB,cAAc,CAAC/P,SAAf,CAAyB0R,QAAzB,GAAoC3B,cAAc,CAAC/P,SAAf,CAAyBuR,IAA7D,CAAA;GACAxB,cAAc,CAAC/P,SAAf,CAAyB2R,QAAzB,GAAoC5B,cAAc,CAAC/P,SAAf,CAAyBwR,IAA7D,CAAA;CACAzB,EAAAA,cAAc,CAAC0B,OAAf,GAAyB1B,cAAc,CAACuB,GAAxC,CAAA;;GAEAvB,cAAc,CAAC/P,SAAf,CAAyB4R,GAAzB,GAA+B,SAASA,GAAT,CAAa1R,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK2R,CAAAA,IAAL,CAAU3R,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAK4R,CAAAA,IAAL,CAAU5R,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB6R,IAAzB,GAAgC,SAASA,IAAT,CAAc3R,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyB8R,IAAzB,GAAgC,SAASA,IAAT,CAAc3E,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAAC6B,GAAf,GAAqB,SAASA,GAAT,CAAazE,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACsE,GAAV,CAAc1R,KAAd,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB+R,EAAzB,GAA8B,SAASA,EAAT,CAAY7R,KAAZ,EAAmB;KAC/C,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK8R,CAAAA,GAAL,CAAS9R,KAAT,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAK+R,CAAAA,GAAL,CAAS/R,KAAT,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBgS,GAAzB,GAA+B,SAASA,GAAT,CAAa9R,KAAb,EAAoB;CACjD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBiS,GAAzB,GAA+B,SAASA,GAAT,CAAa9E,MAAb,EAAqB;CAClDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACgC,EAAf,GAAoB,SAASA,EAAT,CAAY5E,MAAZ,EAAoBjN,KAApB,EAA2B;CAC7C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACyE,EAAV,CAAa7R,KAAb,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBkS,GAAzB,GAA+B,SAASA,GAAT,CAAahS,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAKiS,CAAAA,IAAL,CAAUjS,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKkS,CAAAA,IAAL,CAAUlS,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBmS,IAAzB,GAAgC,SAASA,IAAT,CAAcjS,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,IAAiBV,KAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBoS,IAAzB,GAAgC,SAASA,IAAT,CAAcjF,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAhC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACmC,GAAf,GAAqB,SAASA,GAAT,CAAa/E,MAAb,EAAqBjN,KAArB,EAA4B;CAC/C,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAAC4E,GAAV,CAAchS,KAAd,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBqS,SAAzB,GAAqC,SAASA,SAAT,CAAmBnS,KAAnB,EAA0B;KAC7D,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAKoS,CAAAA,UAAL,CAAgBpS,KAAhB,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKqS,CAAAA,UAAL,CAAgBrS,KAAhB,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBsS,UAAzB,GAAsC,SAASA,UAAT,CAAoBpS,KAApB,EAA2B;CAC/D,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,KAAkBV,KAAjC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyBuS,UAAzB,GAAsC,SAASA,UAAT,CAAoBpF,MAApB,EAA4B;CAChEA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,IAAkBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAjC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACsC,SAAf,GAA2B,SAASA,SAAT,CAAmBlF,MAAnB,EAA2BjN,KAA3B,EAAkC;CAC3D,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAAC+E,SAAV,CAAoBnS,KAApB,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyBwS,yBAAzB,GAAqD,SAASA,yBAAT,CAAmCtS,KAAnC,EAA0C;KAC7F,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAKuS,CAAAA,0BAAL,CAAgCvS,KAAhC,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAKwS,CAAAA,0BAAL,CAAgCxS,KAAhC,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyByS,0BAAzB,GAAsD,SAASA,0BAAT,CAAoCvS,KAApC,EAA2C;CAC/F,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,KAAkBV,KAAjC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyB0S,0BAAzB,GAAsD,SAASA,0BAAT,CAAoCvF,MAApC,EAA4C;CAChGA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,IAAkBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAjC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAACyC,yBAAf,GAA2C,SAASA,yBAAT,CAAmCrF,MAAnC,EAA2CjN,KAA3C,EAAkD;CAC3F,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACkF,yBAAV,CAAoCtS,KAApC,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB2S,UAAzB,GAAsC,SAASA,UAAT,CAAoBzS,KAApB,EAA2B;KAC/D,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK0S,CAAAA,WAAL,CAAiB1S,KAAjB,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAK2S,CAAAA,WAAL,CAAiB3S,KAAjB,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB4S,WAAzB,GAAuC,SAASA,WAAT,CAAqB1S,KAArB,EAA4B;CACjE,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,MAAmBV,KAAlC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyB6S,WAAzB,GAAuC,SAASA,WAAT,CAAqB1F,MAArB,EAA6B;CAClEA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAlC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;;GAcAmP,cAAc,CAAC4C,UAAf,GAA4B,SAASA,UAAT,CAAoBxF,MAApB,EAA4BjN,KAA5B,EAAmC;CAC7D,IAAA,MAAMoN,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACqF,UAAV,CAAqBzS,KAArB,CAAP,CAAA;IAFF,CAAA;;GAIA6P,cAAc,CAAC/P,SAAf,CAAyB8S,kBAAzB,GAA8C/C,cAAc,CAAC/P,SAAf,CAAyB2S,UAAvE,CAAA;GACA5C,cAAc,CAAC/P,SAAf,CAAyB+S,mBAAzB,GAA+ChD,cAAc,CAAC/P,SAAf,CAAyB4S,WAAxE,CAAA;GACA7C,cAAc,CAAC/P,SAAf,CAAyBgT,mBAAzB,GAA+CjD,cAAc,CAAC/P,SAAf,CAAyB6S,WAAxE,CAAA;CACA9C,EAAAA,cAAc,CAAC+C,kBAAf,GAAoC/C,cAAc,CAAC4C,UAAnD,CAAA;;CAEA5C,EAAAA,cAAc,CAAC/P,SAAf,CAAyBiT,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAItS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,CAAE,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACkD,GAAf,GAAqB,SAASA,GAAT,CAAa9F,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC2F,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKAlD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBgE,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACqE,GAAL,CAAS,KAAKkL,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC/L,GAAf,GAAqB,SAASA,GAAT,CAAamJ,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACtJ,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKA+L,EAAAA,cAAc,CAAC/P,SAAf,CAAyBkT,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAIvS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACuT,IAAL,CAAU,KAAKhE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACmD,IAAf,GAAsB,SAASA,IAAT,CAAc/F,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC4F,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAnD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBmT,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAIxS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACwT,KAAL,CAAW,KAAKjE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACoD,KAAf,GAAuB,SAASA,KAAT,CAAehG,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC6F,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKApD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBoT,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAIzS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACyT,IAAL,CAAU,KAAKlE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACqD,IAAf,GAAsB,SAASA,IAAT,CAAcjG,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC8F,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKArD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBqT,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAI1S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC0T,KAAL,CAAW,KAAKnE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACsD,KAAf,GAAuB,SAASA,KAAT,CAAelG,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC+F,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKAtD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBsT,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI3S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC2T,IAAL,CAAU,KAAKpE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACuD,IAAf,GAAsB,SAASA,IAAT,CAAcnG,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACgG,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAvD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBuT,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAI5S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC4T,KAAL,CAAW,KAAKrE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACwD,KAAf,GAAuB,SAASA,KAAT,CAAepG,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACiG,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKAxD,EAAAA,cAAc,CAAC/P,SAAf,CAAyBwT,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI7S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC6T,IAAL,CAAU,KAAKtE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACyD,IAAf,GAAsB,SAASA,IAAT,CAAcrG,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACkG,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAzD,EAAAA,cAAc,CAAC/P,SAAf,CAAyByT,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI9S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC8T,IAAL,CAAU,KAAKvE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC0D,IAAf,GAAsB,SAASA,IAAT,CAActG,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACmG,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKA1D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB0T,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAI/S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC+T,KAAL,CAAW,KAAKxE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC2D,KAAf,GAAuB,SAASA,KAAT,CAAevG,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACoG,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKA3D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB2T,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAIhT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACgU,GAAL,CAAS,KAAKzE,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC4D,GAAf,GAAqB,SAASA,GAAT,CAAaxG,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACqG,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKA5D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB4T,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAIjT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACiU,IAAL,CAAU,KAAK1E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC6D,IAAf,GAAsB,SAASA,IAAT,CAAczG,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACsG,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKA7D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB6T,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAIlT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACkU,GAAL,CAAS,KAAK3E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC8D,GAAf,GAAqB,SAASA,GAAT,CAAa1G,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACuG,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKA9D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB8T,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAInT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACmU,KAAL,CAAW,KAAK5E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC+D,KAAf,GAAuB,SAASA,KAAT,CAAe3G,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACwG,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKA/D,EAAAA,cAAc,CAAC/P,SAAf,CAAyB+T,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAIpT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACoU,KAAL,CAAW,KAAK7E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACgE,KAAf,GAAuB,SAASA,KAAT,CAAe5G,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACyG,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKAhE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBgU,MAAzB,GAAkC,SAASA,MAAT,GAAkB;CAClD,IAAA,KAAK,IAAIrT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACqU,MAAL,CAAY,KAAK9E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAZ,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACiE,MAAf,GAAwB,SAASA,MAAT,CAAgB7G,MAAhB,EAAwB;CAC9C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC0G,MAAV,EAAP,CAAA;IAFF,CAAA;;CAKAjE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBJ,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACC,GAAL,CAAS,KAAKsP,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACnQ,GAAf,GAAqB,SAASA,GAAT,CAAauN,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC1N,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKAmQ,EAAAA,cAAc,CAAC/P,SAAf,CAAyBiU,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAItT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACsU,KAAL,CAAW,KAAK/E,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACkE,KAAf,GAAuB,SAASA,KAAT,CAAe9G,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC2G,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKAlE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBkU,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAIvT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACuU,KAAL,CAAW,KAAKhF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACmE,KAAf,GAAuB,SAASA,KAAT,CAAe/G,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC4G,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKAnE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBmU,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAIxT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACwU,IAAL,CAAU,KAAKjF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACoE,IAAf,GAAsB,SAASA,IAAT,CAAchH,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC6G,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKApE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBiK,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAItJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACsK,KAAL,CAAW,KAAKiF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC9F,KAAf,GAAuB,SAASA,KAAT,CAAekD,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACrD,KAAV,EAAP,CAAA;IAFF,CAAA;;CAKA8F,EAAAA,cAAc,CAAC/P,SAAf,CAAyBoU,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAIzT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAACyU,IAAL,CAAU,KAAKlF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACqE,IAAf,GAAsB,SAASA,IAAT,CAAcjH,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC8G,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKArE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBqU,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAI1T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC0U,GAAL,CAAS,KAAKnF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACsE,GAAf,GAAqB,SAASA,GAAT,CAAalH,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC+G,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKAtE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBsU,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI3T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC2U,IAAL,CAAU,KAAKpF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACuE,IAAf,GAAsB,SAASA,IAAT,CAAcnH,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACgH,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAvE,EAAAA,cAAc,CAAC/P,SAAf,CAAyByD,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI9C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC8D,IAAL,CAAU,KAAKyL,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACtM,IAAf,GAAsB,SAASA,IAAT,CAAc0J,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAAC7J,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAsM,EAAAA,cAAc,CAAC/P,SAAf,CAAyBuU,GAAzB,GAA+B,SAASA,GAAT,GAAe;CAC5C,IAAA,KAAK,IAAI5T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC4U,GAAL,CAAS,KAAKrF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACwE,GAAf,GAAqB,SAASA,GAAT,CAAapH,MAAb,EAAqB;CACxC,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACiH,GAAV,EAAP,CAAA;IAFF,CAAA;;CAKAxE,EAAAA,cAAc,CAAC/P,SAAf,CAAyBwU,IAAzB,GAAgC,SAASA,IAAT,GAAgB;CAC9C,IAAA,KAAK,IAAI7T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC6U,IAAL,CAAU,KAAKtF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAV,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAACyE,IAAf,GAAsB,SAASA,IAAT,CAAcrH,MAAd,EAAsB;CAC1C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACkH,IAAV,EAAP,CAAA;IAFF,CAAA;;CAKAzE,EAAAA,cAAc,CAAC/P,SAAf,CAAyByU,KAAzB,GAAiC,SAASA,KAAT,GAAiB;CAChD,IAAA,KAAK,IAAI9T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC8U,KAAL,CAAW,KAAKvF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;CASAmP,EAAAA,cAAc,CAAC0E,KAAf,GAAuB,SAASA,KAAT,CAAetH,MAAf,EAAuB;CAC5C,IAAA,MAAMG,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;KACA,OAAOG,SAAS,CAACmH,KAAV,EAAP,CAAA;IAFF,CAAA;;GAKA1E,cAAc,CAAC2E,GAAf,GAAqB,SAASA,GAAT,CAAavH,MAAb,EAAqBwH,IAArB,EAA2B;CAC9C,IAAA,MAAMrH,SAAS,GAAG,IAAI0C,MAAJ,CAAW7C,MAAX,CAAlB,CAAA;CACA,IAAA,OAAOG,SAAS,CAACoH,GAAV,CAAcC,IAAd,CAAP,CAAA;IAFF,CAAA;;GAKA5E,cAAc,CAAC/P,SAAf,CAAyB0U,GAAzB,GAA+B,SAASA,GAAT,CAAaxU,KAAb,EAAoB;KACjD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,IAAK0U,CAAAA,IAAL,CAAU1U,KAAV,CAAP,CAAA;CAC/B,IAAA,OAAO,IAAK2U,CAAAA,IAAL,CAAU3U,KAAV,CAAP,CAAA;IAFF,CAAA;;GAKA6P,cAAc,CAAC/P,SAAf,CAAyB4U,IAAzB,GAAgC,SAASA,IAAT,CAAc1U,KAAd,EAAqB;CACnD,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC+U,GAAL,CAAS,IAAKxF,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,EAAyBV,KAAzB,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IANF,CAAA;;GASA6P,cAAc,CAAC/P,SAAf,CAAyB6U,IAAzB,GAAgC,SAASA,IAAT,CAAc1H,MAAd,EAAsB;CACpDA,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAI,IAAKyB,CAAAA,IAAL,KAAczB,MAAM,CAACyB,IAArB,IACF,IAAA,CAAKC,OAAL,KAAiB1B,MAAM,CAAC0B,OAD1B,EACmC;CACjC,MAAA,MAAM,IAAI1H,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAKuP,CAAAA,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAejB,IAAI,CAAC+U,GAAL,CAAS,IAAA,CAAKxF,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAT,EAAyBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAzB,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;IAXF,CAAA;CAaD;;CCpzBD;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAASkU,aAAT,CAAuB3H,MAAvB,EAA+B3N,KAA/B,EAAsCuV,KAAtC,EAA6C;CAClD,EAAA,IAAIrS,GAAG,GAAGqS,KAAK,GAAG5H,MAAM,CAACyB,IAAV,GAAiBzB,MAAM,CAACyB,IAAP,GAAc,CAA9C,CAAA;;CACA,EAAA,IAAIpP,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGkD,GAAzB,EAA8B;CAC5B,IAAA,MAAM,IAAIyE,UAAJ,CAAe,wBAAf,CAAN,CAAA;CACD,GAAA;CACF,CAAA;CAED;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAAS6N,gBAAT,CAA0B7H,MAA1B,EAAkC3N,KAAlC,EAAyCuV,KAAzC,EAAgD;CACrD,EAAA,IAAIrS,GAAG,GAAGqS,KAAK,GAAG5H,MAAM,CAAC0B,OAAV,GAAoB1B,MAAM,CAAC0B,OAAP,GAAiB,CAApD,CAAA;;CACA,EAAA,IAAIrP,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGkD,GAAzB,EAA8B;CAC5B,IAAA,MAAM,IAAIyE,UAAJ,CAAe,2BAAf,CAAN,CAAA;CACD,GAAA;CACF,CAAA;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAAS8N,cAAT,CAAwB9H,MAAxB,EAAgC+H,MAAhC,EAAwC;GAC7C,IAAIA,MAAM,CAACC,SAAX,EAAsB;CACpBD,IAAAA,MAAM,GAAGA,MAAM,CAACC,SAAP,EAAT,CAAA;CACD,GAAA;;CACD,EAAA,IAAID,MAAM,CAAClW,MAAP,KAAkBmO,MAAM,CAAC0B,OAA7B,EAAsC;CACpC,IAAA,MAAM,IAAI1H,UAAJ,CACJ,uDADI,CAAN,CAAA;CAGD,GAAA;;CACD,EAAA,OAAO+N,MAAP,CAAA;CACD,CAAA;CAED;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAASE,iBAAT,CAA2BjI,MAA3B,EAAmC+H,MAAnC,EAA2C;GAChD,IAAIA,MAAM,CAACC,SAAX,EAAsB;CACpBD,IAAAA,MAAM,GAAGA,MAAM,CAACC,SAAP,EAAT,CAAA;CACD,GAAA;;CACD,EAAA,IAAID,MAAM,CAAClW,MAAP,KAAkBmO,MAAM,CAACyB,IAA7B,EAAmC;CACjC,IAAA,MAAM,IAAIzH,UAAJ,CAAe,oDAAf,CAAN,CAAA;CACD,GAAA;;CACD,EAAA,OAAO+N,MAAP,CAAA;CACD,CAAA;CAEM,SAASG,eAAT,CAAyBlI,MAAzB,EAAiCmI,UAAjC,EAA6C;CAClD,EAAA,IAAI,CAACrV,UAAU,CAACqV,UAAD,CAAf,EAA6B;CAC3B,IAAA,MAAM,IAAIhU,SAAJ,CAAc,8BAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,KAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2U,UAAU,CAACtW,MAA/B,EAAuC2B,CAAC,EAAxC,EAA4C;CAC1C,IAAA,IAAI2U,UAAU,CAAC3U,CAAD,CAAV,GAAgB,CAAhB,IAAqB2U,UAAU,CAAC3U,CAAD,CAAV,IAAiBwM,MAAM,CAACyB,IAAjD,EAAuD;CACrD,MAAA,MAAM,IAAIzH,UAAJ,CAAe,8BAAf,CAAN,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAASoO,kBAAT,CAA4BpI,MAA5B,EAAoCqI,aAApC,EAAmD;CACxD,EAAA,IAAI,CAACvV,UAAU,CAACuV,aAAD,CAAf,EAAgC;CAC9B,IAAA,MAAM,IAAIlU,SAAJ,CAAc,iCAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,KAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6U,aAAa,CAACxW,MAAlC,EAA0C2B,CAAC,EAA3C,EAA+C;CAC7C,IAAA,IAAI6U,aAAa,CAAC7U,CAAD,CAAb,GAAmB,CAAnB,IAAwB6U,aAAa,CAAC7U,CAAD,CAAb,IAAoBwM,MAAM,CAAC0B,OAAvD,EAAgE;CAC9D,MAAA,MAAM,IAAI1H,UAAJ,CAAe,iCAAf,CAAN,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAASsO,UAAT,CAAoBtI,MAApB,EAA4BuI,QAA5B,EAAsCC,MAAtC,EAA8CC,WAA9C,EAA2DC,SAA3D,EAAsE;CAC3E,EAAA,IAAIpI,SAAS,CAACzO,MAAV,KAAqB,CAAzB,EAA4B;CAC1B,IAAA,MAAM,IAAImI,UAAJ,CAAe,sBAAf,CAAN,CAAA;CACD,GAAA;;CACD2O,EAAAA,WAAW,CAAC,UAAD,EAAaJ,QAAb,CAAX,CAAA;CACAI,EAAAA,WAAW,CAAC,QAAD,EAAWH,MAAX,CAAX,CAAA;CACAG,EAAAA,WAAW,CAAC,aAAD,EAAgBF,WAAhB,CAAX,CAAA;CACAE,EAAAA,WAAW,CAAC,WAAD,EAAcD,SAAd,CAAX,CAAA;;GACA,IACEH,QAAQ,GAAGC,MAAX,IACAC,WAAW,GAAGC,SADd,IAEAH,QAAQ,GAAG,CAFX,IAGAA,QAAQ,IAAIvI,MAAM,CAACyB,IAHnB,IAIA+G,MAAM,GAAG,CAJT,IAKAA,MAAM,IAAIxI,MAAM,CAACyB,IALjB,IAMAgH,WAAW,GAAG,CANd,IAOAA,WAAW,IAAIzI,MAAM,CAAC0B,OAPtB,IAQAgH,SAAS,GAAG,CARZ,IASAA,SAAS,IAAI1I,MAAM,CAAC0B,OAVtB,EAWE;CACA,IAAA,MAAM,IAAI1H,UAAJ,CAAe,oCAAf,CAAN,CAAA;CACD,GAAA;CACF,CAAA;CAEM,SAAS4O,QAAT,CAAkB/W,MAAlB,EAAqC;GAAA,IAAXkB,KAAW,uEAAH,CAAG,CAAA;GAC1C,IAAId,KAAK,GAAG,EAAZ,CAAA;;GACA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,MAApB,EAA4B2B,CAAC,EAA7B,EAAiC;KAC/BvB,KAAK,CAAC2H,IAAN,CAAW7G,KAAX,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOd,KAAP,CAAA;CACD,CAAA;;CAED,SAAS0W,WAAT,CAAqBpH,IAArB,EAA2BxO,KAA3B,EAAkC;CAChC,EAAA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;CAC7B,IAAA,MAAM,IAAIoB,SAAJ,CAAe,CAAEoN,EAAAA,IAAK,mBAAtB,CAAN,CAAA;CACD,GAAA;CACF,CAAA;;CAEM,SAASsH,aAAT,CAAuB7I,MAAvB,EAA+B;CACpC,EAAA,IAAIA,MAAM,CAAC8I,OAAP,EAAJ,EAAsB;CACpB,IAAA,MAAM,IAAIpW,KAAJ,CAAU,uCAAV,CAAN,CAAA;CACD,GAAA;CACF;;CCpIM,SAASqW,QAAT,CAAkB/I,MAAlB,EAA0B;CAC/B,EAAA,IAAIgJ,GAAG,GAAGJ,QAAQ,CAAC5I,MAAM,CAACyB,IAAR,CAAlB,CAAA;;CACA,EAAA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiC,EAAEjO,CAAnC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoC,EAAEjO,CAAtC,EAAyC;OACvCuV,GAAG,CAACxV,CAAD,CAAH,IAAUwM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAV,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOuV,GAAP,CAAA;CACD,CAAA;CAEM,SAASC,WAAT,CAAqBjJ,MAArB,EAA6B;CAClC,EAAA,IAAIgJ,GAAG,GAAGJ,QAAQ,CAAC5I,MAAM,CAAC0B,OAAR,CAAlB,CAAA;;CACA,EAAA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiC,EAAEjO,CAAnC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoC,EAAEjO,CAAtC,EAAyC;OACvCuV,GAAG,CAACvV,CAAD,CAAH,IAAUuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAV,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOuV,GAAP,CAAA;CACD,CAAA;CAEM,SAASE,MAAT,CAAgBlJ,MAAhB,EAAwB;GAC7B,IAAImJ,CAAC,GAAG,CAAR,CAAA;;CACA,EAAA,KAAK,IAAI3V,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;OACvC0V,CAAC,IAAInJ,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAL,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO0V,CAAP,CAAA;CACD,CAAA;CAEM,SAASC,YAAT,CAAsBpJ,MAAtB,EAA8B;GACnC,IAAIgJ,GAAG,GAAGJ,QAAQ,CAAC5I,MAAM,CAACyB,IAAR,EAAc,CAAd,CAAlB,CAAA;;CACA,EAAA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiC,EAAEjO,CAAnC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoC,EAAEjO,CAAtC,EAAyC;OACvCuV,GAAG,CAACxV,CAAD,CAAH,IAAUwM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAV,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOuV,GAAP,CAAA;CACD,CAAA;CAEM,SAASK,eAAT,CAAyBrJ,MAAzB,EAAiC;GACtC,IAAIgJ,GAAG,GAAGJ,QAAQ,CAAC5I,MAAM,CAAC0B,OAAR,EAAiB,CAAjB,CAAlB,CAAA;;CACA,EAAA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiC,EAAEjO,CAAnC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoC,EAAEjO,CAAtC,EAAyC;OACvCuV,GAAG,CAACvV,CAAD,CAAH,IAAUuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAV,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOuV,GAAP,CAAA;CACD,CAAA;CAEM,SAASM,UAAT,CAAoBtJ,MAApB,EAA4B;GACjC,IAAImJ,CAAC,GAAG,CAAR,CAAA;;CACA,EAAA,KAAK,IAAI3V,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;OACvC0V,CAAC,IAAInJ,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAL,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO0V,CAAP,CAAA;CACD,CAAA;CAEM,SAASI,aAAT,CAAuBvJ,MAAvB,EAA+B5G,QAA/B,EAAyCC,IAAzC,EAA+C;CACpD,EAAA,MAAMoI,IAAI,GAAGzB,MAAM,CAACyB,IAApB,CAAA;CACA,EAAA,MAAM+H,IAAI,GAAGxJ,MAAM,CAAC0B,OAApB,CAAA;GACA,MAAM+H,QAAQ,GAAG,EAAjB,CAAA;;GAEA,KAAK,IAAIjW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;KAC7B,IAAIkW,IAAI,GAAG,CAAX,CAAA;KACA,IAAIC,IAAI,GAAG,CAAX,CAAA;KACA,IAAIzS,CAAC,GAAG,CAAR,CAAA;;KACA,KAAK,IAAIzD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+V,IAApB,EAA0B/V,CAAC,EAA3B,EAA+B;CAC7ByD,MAAAA,CAAC,GAAG8I,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAmB4F,GAAAA,IAAI,CAAC7F,CAAD,CAA3B,CAAA;CACAkW,MAAAA,IAAI,IAAIxS,CAAR,CAAA;OACAyS,IAAI,IAAIzS,CAAC,GAAGA,CAAZ,CAAA;CACD,KAAA;;CACD,IAAA,IAAIkC,QAAJ,EAAc;CACZqQ,MAAAA,QAAQ,CAAC7P,IAAT,CAAc,CAAC+P,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBF,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAd,CAAA,CAAA;CACD,KAFD,MAEO;CACLC,MAAAA,QAAQ,CAAC7P,IAAT,CAAc,CAAC+P,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBF,IAAxB,IAAgCA,IAA9C,CAAA,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOC,QAAP,CAAA;CACD,CAAA;CAEM,SAASG,gBAAT,CAA0B5J,MAA1B,EAAkC5G,QAAlC,EAA4CC,IAA5C,EAAkD;CACvD,EAAA,MAAMoI,IAAI,GAAGzB,MAAM,CAACyB,IAApB,CAAA;CACA,EAAA,MAAM+H,IAAI,GAAGxJ,MAAM,CAAC0B,OAApB,CAAA;GACA,MAAM+H,QAAQ,GAAG,EAAjB,CAAA;;GAEA,KAAK,IAAIhW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+V,IAApB,EAA0B/V,CAAC,EAA3B,EAA+B;KAC7B,IAAIiW,IAAI,GAAG,CAAX,CAAA;KACA,IAAIC,IAAI,GAAG,CAAX,CAAA;KACA,IAAIzS,CAAC,GAAG,CAAR,CAAA;;KACA,KAAK,IAAI1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;CAC7B0D,MAAAA,CAAC,GAAG8I,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAmB4F,GAAAA,IAAI,CAAC5F,CAAD,CAA3B,CAAA;CACAiW,MAAAA,IAAI,IAAIxS,CAAR,CAAA;OACAyS,IAAI,IAAIzS,CAAC,GAAGA,CAAZ,CAAA;CACD,KAAA;;CACD,IAAA,IAAIkC,QAAJ,EAAc;CACZqQ,MAAAA,QAAQ,CAAC7P,IAAT,CAAc,CAAC+P,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBjI,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAd,CAAA,CAAA;CACD,KAFD,MAEO;CACLgI,MAAAA,QAAQ,CAAC7P,IAAT,CAAc,CAAC+P,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBjI,IAAxB,IAAgCA,IAA9C,CAAA,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOgI,QAAP,CAAA;CACD,CAAA;CAEM,SAASI,WAAT,CAAqB7J,MAArB,EAA6B5G,QAA7B,EAAuCC,IAAvC,EAA6C;CAClD,EAAA,MAAMoI,IAAI,GAAGzB,MAAM,CAACyB,IAApB,CAAA;CACA,EAAA,MAAM+H,IAAI,GAAGxJ,MAAM,CAAC0B,OAApB,CAAA;CACA,EAAA,MAAMoI,IAAI,GAAGrI,IAAI,GAAG+H,IAApB,CAAA;GAEA,IAAIE,IAAI,GAAG,CAAX,CAAA;GACA,IAAIC,IAAI,GAAG,CAAX,CAAA;GACA,IAAIzS,CAAC,GAAG,CAAR,CAAA;;GACA,KAAK,IAAI1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;KAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+V,IAApB,EAA0B/V,CAAC,EAA3B,EAA+B;OAC7ByD,CAAC,GAAG8I,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAA,GAAmB4F,IAAvB,CAAA;CACAqQ,MAAAA,IAAI,IAAIxS,CAAR,CAAA;OACAyS,IAAI,IAAIzS,CAAC,GAAGA,CAAZ,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,IAAIkC,QAAJ,EAAc;CACZ,IAAA,OAAO,CAACuQ,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBI,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAP,CAAA;CACD,GAFD,MAEO;KACL,OAAO,CAACH,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBI,IAAxB,IAAgCA,IAAvC,CAAA;CACD,GAAA;CACF,CAAA;CAEM,SAASC,WAAT,CAAqB/J,MAArB,EAA6B3G,IAA7B,EAAmC;CACxC,EAAA,KAAK,IAAI7F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB4F,IAAI,CAAC7F,CAAD,CAAxC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAASwW,cAAT,CAAwBhK,MAAxB,EAAgC3G,IAAhC,EAAsC;CAC3C,EAAA,KAAK,IAAI7F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB4F,IAAI,CAAC5F,CAAD,CAAxC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAASwW,SAAT,CAAmBjK,MAAnB,EAA2B3G,IAA3B,EAAiC;CACtC,EAAA,KAAK,IAAI7F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB4F,IAApC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAAS6Q,aAAT,CAAuBlK,MAAvB,EAA+B;GACpC,MAAMmK,KAAK,GAAG,EAAd,CAAA;;CACA,EAAA,KAAK,IAAI3W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;KACpC,IAAIwV,GAAG,GAAG,CAAV,CAAA;;CACA,IAAA,KAAK,IAAIvV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;OACvCuV,GAAG,IAAIxW,IAAI,CAAC+U,GAAL,CAASvH,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAT,EAA2B,CAA3B,CAAA,IAAiCuM,MAAM,CAAC0B,OAAP,GAAiB,CAAlD,CAAP,CAAA;CACD,KAAA;;KACDyI,KAAK,CAACvQ,IAAN,CAAWpH,IAAI,CAAC8D,IAAL,CAAU0S,GAAV,CAAX,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOmB,KAAP,CAAA;CACD,CAAA;CAEM,SAASC,UAAT,CAAoBpK,MAApB,EAA4BmK,KAA5B,EAAmC;CACxC,EAAA,KAAK,IAAI3W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB0W,KAAK,CAAC3W,CAAD,CAAzC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAAS6W,gBAAT,CAA0BrK,MAA1B,EAAkC;GACvC,MAAMmK,KAAK,GAAG,EAAd,CAAA;;CACA,EAAA,KAAK,IAAI1W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;KACvC,IAAIuV,GAAG,GAAG,CAAV,CAAA;;CACA,IAAA,KAAK,IAAIxV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;OACpCwV,GAAG,IAAIxW,IAAI,CAAC+U,GAAL,CAASvH,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAT,EAA2B,CAA3B,CAAA,IAAiCuM,MAAM,CAACyB,IAAP,GAAc,CAA/C,CAAP,CAAA;CACD,KAAA;;KACD0I,KAAK,CAACvQ,IAAN,CAAWpH,IAAI,CAAC8D,IAAL,CAAU0S,GAAV,CAAX,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOmB,KAAP,CAAA;CACD,CAAA;CAEM,SAASG,aAAT,CAAuBtK,MAAvB,EAA+BmK,KAA/B,EAAsC;CAC3C,EAAA,KAAK,IAAI3W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB0W,KAAK,CAAC1W,CAAD,CAAzC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;CAEM,SAAS8W,WAAT,CAAqBvK,MAArB,EAA6B;CAClC,EAAA,MAAMwK,OAAO,GAAGxK,MAAM,CAAC8J,IAAP,GAAc,CAA9B,CAAA;GACA,IAAId,GAAG,GAAG,CAAV,CAAA;;CACA,EAAA,KAAK,IAAIvV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvC,IAAA,KAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpCwV,MAAAA,GAAG,IAAIxW,IAAI,CAAC+U,GAAL,CAASvH,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAT,EAA2B,CAA3B,IAAgC+W,OAAvC,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOhY,IAAI,CAAC8D,IAAL,CAAU0S,GAAV,CAAP,CAAA;CACD,CAAA;CAEM,SAASyB,QAAT,CAAkBzK,MAAlB,EAA0BmK,KAA1B,EAAiC;CACtC,EAAA,KAAK,IAAI3W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCuM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmB0W,KAApC,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF;;CC/KM,MAAMvH,cAAN,CAAqB;CACR,EAAA,OAAX8H,WAAW,CAACC,OAAD,EAAUC,UAAV,EAAsBC,OAAtB,EAA+B;CAC/C,IAAA,IAAIhZ,MAAM,GAAG8Y,OAAO,GAAGC,UAAvB,CAAA;;CACA,IAAA,IAAI/Y,MAAM,KAAKgZ,OAAO,CAAChZ,MAAvB,EAA+B;CAC7B,MAAA,MAAM,IAAImI,UAAJ,CAAe,6CAAf,CAAN,CAAA;CACD,KAAA;;KACD,IAAImG,SAAS,GAAG,IAAI0C,MAAJ,CAAW8H,OAAX,EAAoBC,UAApB,CAAhB,CAAA;;KACA,KAAK,IAAIxK,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGuK,OAAxB,EAAiCvK,GAAG,EAApC,EAAwC;OACtC,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGuK,UAA9B,EAA0CvK,MAAM,EAAhD,EAAoD;CAClDF,QAAAA,SAAS,CAAC6C,GAAV,CAAc5C,GAAd,EAAmBC,MAAnB,EAA2BwK,OAAO,CAACzK,GAAG,GAAGwK,UAAN,GAAmBvK,MAApB,CAAlC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOF,SAAP,CAAA;CACD,GAAA;;GAEe,OAAT2K,SAAS,CAACD,OAAD,EAAU;KACxB,IAAI9C,MAAM,GAAG,IAAIlF,MAAJ,CAAW,CAAX,EAAcgI,OAAO,CAAChZ,MAAtB,CAAb,CAAA;;CACA,IAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqX,OAAO,CAAChZ,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;OACvCuU,MAAM,CAAC/E,GAAP,CAAW,CAAX,EAAcxP,CAAd,EAAiBqX,OAAO,CAACrX,CAAD,CAAxB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOuU,MAAP,CAAA;CACD,GAAA;;GAEkB,OAAZgD,YAAY,CAACF,OAAD,EAAU;KAC3B,IAAI9C,MAAM,GAAG,IAAIlF,MAAJ,CAAWgI,OAAO,CAAChZ,MAAnB,EAA2B,CAA3B,CAAb,CAAA;;CACA,IAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqX,OAAO,CAAChZ,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;OACvCuU,MAAM,CAAC/E,GAAP,CAAWxP,CAAX,EAAc,CAAd,EAAiBqX,OAAO,CAACrX,CAAD,CAAxB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOuU,MAAP,CAAA;CACD,GAAA;;CAEW,EAAA,OAALiD,KAAK,CAACvJ,IAAD,EAAOC,OAAP,EAAgB;CAC1B,IAAA,OAAO,IAAImB,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAP,CAAA;CACD,GAAA;;CAEU,EAAA,OAAJuJ,IAAI,CAACxJ,IAAD,EAAOC,OAAP,EAAgB;KACzB,OAAO,IAAImB,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAA0BwJ,CAAAA,IAA1B,CAA+B,CAA/B,CAAP,CAAA;CACD,GAAA;;CAEU,EAAA,OAAJC,IAAI,CAAC1J,IAAD,EAAOC,OAAP,EAA8B;KAAA,IAAdhQ,OAAc,uEAAJ,EAAI,CAAA;;CACvC,IAAA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;OAAEiX,MAAM,GAAG5Y,IAAI,CAAC4Y,MAAAA;CAAhB,KAAA,GAA2B1Z,OAAjC,CAAA;KACA,IAAIsO,MAAM,GAAG,IAAI6C,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;SAChCuM,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiB2X,MAAM,EAAvB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOpL,MAAP,CAAA;CACD,GAAA;;CAEa,EAAA,OAAPqL,OAAO,CAAC5J,IAAD,EAAOC,OAAP,EAA8B;KAAA,IAAdhQ,OAAc,uEAAJ,EAAI,CAAA;;CAC1C,IAAA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEmB,MAAAA,GAAG,GAAG,CAAR;CAAWC,MAAAA,GAAG,GAAG,IAAjB;OAAuB6V,MAAM,GAAG5Y,IAAI,CAAC4Y,MAAAA;CAArC,KAAA,GAAgD1Z,OAAtD,CAAA;CACA,IAAA,IAAI,CAACsD,MAAM,CAACyL,SAAP,CAAiBnL,GAAjB,CAAL,EAA4B,MAAM,IAAInB,SAAJ,CAAc,wBAAd,CAAN,CAAA;CAC5B,IAAA,IAAI,CAACa,MAAM,CAACyL,SAAP,CAAiBlL,GAAjB,CAAL,EAA4B,MAAM,IAAIpB,SAAJ,CAAc,wBAAd,CAAN,CAAA;KAC5B,IAAImB,GAAG,IAAIC,GAAX,EAAgB,MAAM,IAAIyE,UAAJ,CAAe,8BAAf,CAAN,CAAA;CAChB,IAAA,IAAIsR,QAAQ,GAAG/V,GAAG,GAAGD,GAArB,CAAA;KACA,IAAI0K,MAAM,GAAG,IAAI6C,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;SAChC,IAAIV,KAAK,GAAGuC,GAAG,GAAG9C,IAAI,CAACsK,KAAL,CAAWsO,MAAM,EAAKE,GAAAA,QAAtB,CAAlB,CAAA;CACAtL,QAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBV,KAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOiN,MAAP,CAAA;CACD,GAAA;;CAES,EAAA,OAAHuL,GAAG,CAAC9J,IAAD,EAAOC,OAAP,EAAgB3O,KAAhB,EAAuB;CAC/B,IAAA,IAAI2O,OAAO,KAAK5M,SAAhB,EAA2B4M,OAAO,GAAGD,IAAV,CAAA;CAC3B,IAAA,IAAI1O,KAAK,KAAK+B,SAAd,EAAyB/B,KAAK,GAAG,CAAR,CAAA;KACzB,IAAIuC,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAASmM,IAAT,EAAeC,OAAf,CAAV,CAAA;KACA,IAAI1B,MAAM,GAAG,IAAKgL,CAAAA,KAAL,CAAWvJ,IAAX,EAAiBC,OAAjB,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAApB,EAAyB9B,CAAC,EAA1B,EAA8B;CAC5BwM,MAAAA,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcA,CAAd,EAAiBT,KAAjB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOiN,MAAP,CAAA;CACD,GAAA;;CAEU,EAAA,OAAJwL,IAAI,CAAC7Q,IAAD,EAAO8G,IAAP,EAAaC,OAAb,EAAsB;CAC/B,IAAA,IAAI+J,CAAC,GAAG9Q,IAAI,CAAC9I,MAAb,CAAA;CACA,IAAA,IAAI4P,IAAI,KAAK3M,SAAb,EAAwB2M,IAAI,GAAGgK,CAAP,CAAA;CACxB,IAAA,IAAI/J,OAAO,KAAK5M,SAAhB,EAA2B4M,OAAO,GAAGD,IAAV,CAAA;KAC3B,IAAInM,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAASmW,CAAT,EAAYhK,IAAZ,EAAkBC,OAAlB,CAAV,CAAA;KACA,IAAI1B,MAAM,GAAG,IAAKgL,CAAAA,KAAL,CAAWvJ,IAAX,EAAiBC,OAAjB,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAApB,EAAyB9B,CAAC,EAA1B,EAA8B;OAC5BwM,MAAM,CAACgD,GAAP,CAAWxP,CAAX,EAAcA,CAAd,EAAiBmH,IAAI,CAACnH,CAAD,CAArB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOwM,MAAP,CAAA;CACD,GAAA;;CAES,EAAA,OAAH1K,GAAG,CAACoW,OAAD,EAAUC,OAAV,EAAmB;CAC3BD,IAAAA,OAAO,GAAG,IAAA,CAAKzI,WAAL,CAAiByI,OAAjB,CAAV,CAAA;CACAC,IAAAA,OAAO,GAAG,IAAA,CAAK1I,WAAL,CAAiB0I,OAAjB,CAAV,CAAA;CACA,IAAA,IAAIlK,IAAI,GAAGiK,OAAO,CAACjK,IAAnB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAGgK,OAAO,CAAChK,OAAtB,CAAA;KACA,IAAIjI,MAAM,GAAG,IAAIoJ,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;CAChCgG,QAAAA,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBjB,IAAI,CAAC8C,GAAL,CAASoW,OAAO,CAAC3J,GAAR,CAAYvO,CAAZ,EAAeC,CAAf,CAAT,EAA4BkY,OAAO,CAAC5J,GAAR,CAAYvO,CAAZ,EAAeC,CAAf,CAA5B,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOgG,MAAP,CAAA;CACD,GAAA;;CAES,EAAA,OAAHlE,GAAG,CAACmW,OAAD,EAAUC,OAAV,EAAmB;CAC3BD,IAAAA,OAAO,GAAG,IAAA,CAAKzI,WAAL,CAAiByI,OAAjB,CAAV,CAAA;CACAC,IAAAA,OAAO,GAAG,IAAA,CAAK1I,WAAL,CAAiB0I,OAAjB,CAAV,CAAA;CACA,IAAA,IAAIlK,IAAI,GAAGiK,OAAO,CAACjK,IAAnB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAGgK,OAAO,CAAChK,OAAtB,CAAA;KACA,IAAIjI,MAAM,GAAG,IAAI,IAAJ,CAASgI,IAAT,EAAeC,OAAf,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;CAChCgG,QAAAA,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBjB,IAAI,CAAC+C,GAAL,CAASmW,OAAO,CAAC3J,GAAR,CAAYvO,CAAZ,EAAeC,CAAf,CAAT,EAA4BkY,OAAO,CAAC5J,GAAR,CAAYvO,CAAZ,EAAeC,CAAf,CAA5B,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOgG,MAAP,CAAA;CACD,GAAA;;GAEiB,OAAXwJ,WAAW,CAAClQ,KAAD,EAAQ;CACxB,IAAA,OAAO6P,cAAc,CAACgJ,QAAf,CAAwB7Y,KAAxB,CAAA,GAAiCA,KAAjC,GAAyC,IAAI8P,MAAJ,CAAW9P,KAAX,CAAhD,CAAA;CACD,GAAA;;GAEc,OAAR6Y,QAAQ,CAAC7Y,KAAD,EAAQ;KACrB,OAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAAC8Y,KAAN,KAAgB,QAAxC,CAAA;CACD,GAAA;;CAEO,EAAA,IAAJ/B,IAAI,GAAG;CACT,IAAA,OAAO,IAAKrI,CAAAA,IAAL,GAAY,IAAA,CAAKC,OAAxB,CAAA;CACD,GAAA;;GAEDoK,KAAK,CAACC,QAAD,EAAW;CACd,IAAA,IAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;CAClC,MAAA,MAAM,IAAI5X,SAAJ,CAAc,6BAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,KAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrCsY,QAAAA,QAAQ,CAAC/Y,IAAT,CAAc,IAAd,EAAoBQ,CAApB,EAAuBC,CAAvB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDuU,EAAAA,SAAS,GAAG;KACV,IAAI/V,KAAK,GAAG,EAAZ,CAAA;;CACA,IAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrCxB,KAAK,CAAC2H,IAAN,CAAW,IAAA,CAAKmI,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAX,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOxB,KAAP,CAAA;CACD,GAAA;;CAED+Z,EAAAA,SAAS,GAAG;KACV,IAAIC,IAAI,GAAG,EAAX,CAAA;;CACA,IAAA,KAAK,IAAIzY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClCyY,IAAI,CAACrS,IAAL,CAAU,EAAV,CAAA,CAAA;;CACA,MAAA,KAAK,IAAInG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrCwY,QAAAA,IAAI,CAACzY,CAAD,CAAJ,CAAQoG,IAAR,CAAa,IAAKmI,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAb,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOwY,IAAP,CAAA;CACD,GAAA;;CAEDC,EAAAA,MAAM,GAAG;KACP,OAAO,IAAA,CAAKF,SAAL,EAAP,CAAA;CACD,GAAA;;CAEDG,EAAAA,WAAW,GAAG;KACZ,OAAO,IAAA,CAAK1K,IAAL,KAAc,CAArB,CAAA;CACD,GAAA;;CAED2K,EAAAA,cAAc,GAAG;KACf,OAAO,IAAA,CAAK1K,OAAL,KAAiB,CAAxB,CAAA;CACD,GAAA;;CAED2K,EAAAA,QAAQ,GAAG;KACT,OAAO,IAAA,CAAK5K,IAAL,KAAc,CAAd,IAAmB,IAAKC,CAAAA,OAAL,KAAiB,CAA3C,CAAA;CACD,GAAA;;CAED4K,EAAAA,QAAQ,GAAG;CACT,IAAA,OAAO,IAAK7K,CAAAA,IAAL,KAAc,IAAA,CAAKC,OAA1B,CAAA;CACD,GAAA;;CAEDoH,EAAAA,OAAO,GAAG;KACR,OAAO,IAAA,CAAKrH,IAAL,KAAc,CAAd,IAAmB,IAAKC,CAAAA,OAAL,KAAiB,CAA3C,CAAA;CACD,GAAA;;CAED6K,EAAAA,WAAW,GAAG;KACZ,IAAI,IAAA,CAAKD,QAAL,EAAJ,EAAqB;CACnB,MAAA,KAAK,IAAI9Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;SAClC,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAID,CAArB,EAAwBC,CAAC,EAAzB,EAA6B;CAC3B,UAAA,IAAI,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmB,IAAKsO,CAAAA,GAAL,CAAStO,CAAT,EAAYD,CAAZ,CAAvB,EAAuC;CACrC,YAAA,OAAO,KAAP,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;;CACD,MAAA,OAAO,IAAP,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,KAAP,CAAA;CACD,GAAA;;CAEDgZ,EAAAA,aAAa,GAAG;KACd,IAAIhZ,CAAC,GAAG,CAAR,CAAA;KACA,IAAIC,CAAC,GAAG,CAAR,CAAA;KACA,IAAIgZ,cAAc,GAAG,CAAC,CAAtB,CAAA;KACA,IAAID,aAAa,GAAG,IAApB,CAAA;KACA,IAAIE,OAAO,GAAG,KAAd,CAAA;;CACA,IAAA,OAAOlZ,CAAC,GAAG,IAAA,CAAKiO,IAAT,IAAiB+K,aAAxB,EAAuC;CACrC/Y,MAAAA,CAAC,GAAG,CAAJ,CAAA;CACAiZ,MAAAA,OAAO,GAAG,KAAV,CAAA;;OACA,OAAOjZ,CAAC,GAAG,IAAKiO,CAAAA,OAAT,IAAoBgL,OAAO,KAAK,KAAvC,EAA8C;SAC5C,IAAI,IAAA,CAAK3K,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmB,CAAvB,EAA0B;WACxBA,CAAC,EAAA,CAAA;CACF,SAFD,MAEO,IAAI,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmB,CAAnB,IAAwBA,CAAC,GAAGgZ,cAAhC,EAAgD;CACrDC,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAD,UAAAA,cAAc,GAAGhZ,CAAjB,CAAA;CACD,SAHM,MAGA;CACL+Y,UAAAA,aAAa,GAAG,KAAhB,CAAA;CACAE,UAAAA,OAAO,GAAG,IAAV,CAAA;CACD,SAAA;CACF,OAAA;;OACDlZ,CAAC,EAAA,CAAA;CACF,KAAA;;CACD,IAAA,OAAOgZ,aAAP,CAAA;CACD,GAAA;;CAEDG,EAAAA,oBAAoB,GAAG;KACrB,IAAInZ,CAAC,GAAG,CAAR,CAAA;KACA,IAAIC,CAAC,GAAG,CAAR,CAAA;KACA,IAAIgZ,cAAc,GAAG,CAAC,CAAtB,CAAA;KACA,IAAIE,oBAAoB,GAAG,IAA3B,CAAA;KACA,IAAID,OAAO,GAAG,KAAd,CAAA;;CACA,IAAA,OAAOlZ,CAAC,GAAG,IAAA,CAAKiO,IAAT,IAAiBkL,oBAAxB,EAA8C;CAC5ClZ,MAAAA,CAAC,GAAG,CAAJ,CAAA;CACAiZ,MAAAA,OAAO,GAAG,KAAV,CAAA;;OACA,OAAOjZ,CAAC,GAAG,IAAKiO,CAAAA,OAAT,IAAoBgL,OAAO,KAAK,KAAvC,EAA8C;SAC5C,IAAI,IAAA,CAAK3K,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmB,CAAvB,EAA0B;WACxBA,CAAC,EAAA,CAAA;CACF,SAFD,MAEO,IAAI,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,KAAmB,CAAnB,IAAwBA,CAAC,GAAGgZ,cAAhC,EAAgD;CACrDC,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAD,UAAAA,cAAc,GAAGhZ,CAAjB,CAAA;CACD,SAHM,MAGA;CACLkZ,UAAAA,oBAAoB,GAAG,KAAvB,CAAA;CACAD,UAAAA,OAAO,GAAG,IAAV,CAAA;CACD,SAAA;CACF,OAAA;;CACD,MAAA,KAAK,IAAIE,CAAC,GAAGnZ,CAAC,GAAG,CAAjB,EAAoBmZ,CAAC,GAAG,IAAKnL,CAAAA,IAA7B,EAAmCmL,CAAC,EAApC,EAAwC;SACtC,IAAI,IAAA,CAAK7K,GAAL,CAASvO,CAAT,EAAYoZ,CAAZ,CAAA,KAAmB,CAAvB,EAA0B;CACxBD,UAAAA,oBAAoB,GAAG,KAAvB,CAAA;CACD,SAAA;CACF,OAAA;;OACDnZ,CAAC,EAAA,CAAA;CACF,KAAA;;CACD,IAAA,OAAOmZ,oBAAP,CAAA;CACD,GAAA;;CAEDE,EAAAA,WAAW,GAAG;CACZ,IAAA,IAAIpT,MAAM,GAAG,IAAKqT,CAAAA,KAAL,EAAb,CAAA;KACA,IAAIvZ,CAAC,GAAG,CAAR,CAAA;KACA,IAAIqZ,CAAC,GAAG,CAAR,CAAA;;KACA,OAAOrZ,CAAC,GAAGkG,MAAM,CAACgI,IAAX,IAAmBmL,CAAC,GAAGnT,MAAM,CAACiI,OAArC,EAA8C;OAC5C,IAAIqL,IAAI,GAAGxZ,CAAX,CAAA;;CACA,MAAA,KAAK,IAAIC,CAAC,GAAGD,CAAb,EAAgBC,CAAC,GAAGiG,MAAM,CAACgI,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,QAAA,IAAIiG,MAAM,CAACsI,GAAP,CAAWvO,CAAX,EAAcoZ,CAAd,CAAA,GAAmBnT,MAAM,CAACsI,GAAP,CAAWgL,IAAX,EAAiBH,CAAjB,CAAvB,EAA4C;CAC1CG,UAAAA,IAAI,GAAGvZ,CAAP,CAAA;CACD,SAAA;CACF,OAAA;;OACD,IAAIiG,MAAM,CAACsI,GAAP,CAAWgL,IAAX,EAAiBH,CAAjB,CAAwB,KAAA,CAA5B,EAA+B;SAC7BA,CAAC,EAAA,CAAA;CACF,OAFD,MAEO;CACLnT,QAAAA,MAAM,CAACuT,QAAP,CAAgBzZ,CAAhB,EAAmBwZ,IAAnB,CAAA,CAAA;SACA,IAAIE,GAAG,GAAGxT,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAcqZ,CAAd,CAAV,CAAA;;CACA,QAAA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAb,EAAgBnZ,CAAC,GAAGgG,MAAM,CAACiI,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvCgG,UAAAA,MAAM,CAACuJ,GAAP,CAAWzP,CAAX,EAAcE,CAAd,EAAiBgG,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAcE,CAAd,IAAmBwZ,GAApC,CAAA,CAAA;CACD,SAAA;;CACD,QAAA,KAAK,IAAIzZ,CAAC,GAAGD,CAAC,GAAG,CAAjB,EAAoBC,CAAC,GAAGiG,MAAM,CAACgI,IAA/B,EAAqCjO,CAAC,EAAtC,EAA0C;CACxC,UAAA,IAAIwF,MAAM,GAAGS,MAAM,CAACsI,GAAP,CAAWvO,CAAX,EAAcoZ,CAAd,CAAA,GAAmBnT,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAcqZ,CAAd,CAAhC,CAAA;CACAnT,UAAAA,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcoZ,CAAd,EAAiB,CAAjB,CAAA,CAAA;;CACA,UAAA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGgG,MAAM,CAACiI,OAA/B,EAAwCjO,CAAC,EAAzC,EAA6C;aAC3CgG,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBgG,MAAM,CAACsI,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAmBgG,GAAAA,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAcE,CAAd,CAAA,GAAmBuF,MAAvD,CAAA,CAAA;CACD,WAAA;CACF,SAAA;;SACDzF,CAAC,EAAA,CAAA;SACDqZ,CAAC,EAAA,CAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOnT,MAAP,CAAA;CACD,GAAA;;CAEDyT,EAAAA,kBAAkB,GAAG;CACnB,IAAA,IAAIzT,MAAM,GAAG,IAAKoT,CAAAA,WAAL,EAAb,CAAA;CACA,IAAA,IAAIM,CAAC,GAAG1T,MAAM,CAACiI,OAAf,CAAA;CACA,IAAA,IAAI1L,CAAC,GAAGyD,MAAM,CAACgI,IAAf,CAAA;CACA,IAAA,IAAIlO,CAAC,GAAGyC,CAAC,GAAG,CAAZ,CAAA;;KACA,OAAOzC,CAAC,IAAI,CAAZ,EAAe;CACb,MAAA,IAAIkG,MAAM,CAAC2T,MAAP,CAAc7Z,CAAd,CAAA,KAAqB,CAAzB,EAA4B;SAC1BA,CAAC,EAAA,CAAA;CACF,OAFD,MAEO;SACL,IAAI8Z,CAAC,GAAG,CAAR,CAAA;SACA,IAAIC,KAAK,GAAG,KAAZ,CAAA;;CACA,QAAA,OAAOD,CAAC,GAAGrX,CAAJ,IAASsX,KAAK,KAAK,KAA1B,EAAiC;WAC/B,IAAI7T,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAc8Z,CAAd,CAAqB,KAAA,CAAzB,EAA4B;CAC1BC,YAAAA,KAAK,GAAG,IAAR,CAAA;CACD,WAFD,MAEO;aACLD,CAAC,EAAA,CAAA;CACF,WAAA;CACF,SAAA;;SACD,KAAK,IAAI7Z,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,CAApB,EAAuBC,CAAC,EAAxB,EAA4B;WAC1B,IAAIwF,MAAM,GAAGS,MAAM,CAACsI,GAAP,CAAWvO,CAAX,EAAc6Z,CAAd,CAAb,CAAA;;WACA,KAAK,IAAI5Z,CAAC,GAAG4Z,CAAb,EAAgB5Z,CAAC,GAAG0Z,CAApB,EAAuB1Z,CAAC,EAAxB,EAA4B;CAC1B,YAAA,IAAIwZ,GAAG,GAAGxT,MAAM,CAACsI,GAAP,CAAWvO,CAAX,EAAcC,CAAd,IAAmBuF,MAAM,GAAGS,MAAM,CAACsI,GAAP,CAAWxO,CAAX,EAAcE,CAAd,CAAtC,CAAA;CACAgG,YAAAA,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiBwZ,GAAjB,CAAA,CAAA;CACD,WAAA;CACF,SAAA;;SACD1Z,CAAC,EAAA,CAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOkG,MAAP,CAAA;CACD,GAAA;;CAEDuJ,EAAAA,GAAG,GAAG;CACJ,IAAA,MAAM,IAAItQ,KAAJ,CAAU,6BAAV,CAAN,CAAA;CACD,GAAA;;CAEDqP,EAAAA,GAAG,GAAG;CACJ,IAAA,MAAM,IAAIrP,KAAJ,CAAU,6BAAV,CAAN,CAAA;CACD,GAAA;;CAEDqO,EAAAA,MAAM,GAAe;KAAA,IAAdrP,OAAc,uEAAJ,EAAI,CAAA;;CACnB,IAAA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEsN,MAAAA,IAAI,GAAG,CAAT;CAAYC,MAAAA,OAAO,GAAG,CAAA;CAAtB,KAAA,GAA4BhQ,OAAlC,CAAA;;KACA,IAAI,CAACsD,MAAM,CAACyL,SAAP,CAAiBgB,IAAjB,CAAD,IAA2BA,IAAI,IAAI,CAAvC,EAA0C;CACxC,MAAA,MAAM,IAAItN,SAAJ,CAAc,iCAAd,CAAN,CAAA;CACD,KAAA;;KACD,IAAI,CAACa,MAAM,CAACyL,SAAP,CAAiBiB,OAAjB,CAAD,IAA8BA,OAAO,IAAI,CAA7C,EAAgD;CAC9C,MAAA,MAAM,IAAIvN,SAAJ,CAAc,oCAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,IAAI6L,MAAM,GAAG,IAAI6C,MAAJ,CAAW,IAAKpB,CAAAA,IAAL,GAAYA,IAAvB,EAA6B,IAAA,CAAKC,OAAL,GAAeA,OAA5C,CAAb,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;CAChCuM,QAAAA,MAAM,CAACuN,YAAP,CAAoB,IAApB,EAA0B,IAAA,CAAK9L,IAAL,GAAYjO,CAAtC,EAAyC,IAAKkO,CAAAA,OAAL,GAAejO,CAAxD,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOuM,MAAP,CAAA;CACD,GAAA;;GAEDkL,IAAI,CAACnY,KAAD,EAAQ;CACV,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAeV,KAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDya,EAAAA,GAAG,GAAG;CACJ,IAAA,OAAO,IAAK/J,CAAAA,IAAL,CAAU,CAAC,CAAX,CAAP,CAAA;CACD,GAAA;;GAEDgK,MAAM,CAACpb,KAAD,EAAQ;CACZsV,IAAAA,aAAa,CAAC,IAAD,EAAOtV,KAAP,CAAb,CAAA;KACA,IAAI+N,GAAG,GAAG,EAAV,CAAA;;CACA,IAAA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC4M,GAAG,CAACxG,IAAJ,CAAS,IAAA,CAAKmI,GAAL,CAAS1P,KAAT,EAAgBmB,CAAhB,CAAT,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO4M,GAAP,CAAA;CACD,GAAA;;GAEDsN,YAAY,CAACrb,KAAD,EAAQ;KAClB,OAAOwQ,MAAM,CAACiI,SAAP,CAAiB,KAAK2C,MAAL,CAAYpb,KAAZ,CAAjB,CAAP,CAAA;CACD,GAAA;;CAEDsb,EAAAA,MAAM,CAACtb,KAAD,EAAQJ,KAAR,EAAe;CACnB0V,IAAAA,aAAa,CAAC,IAAD,EAAOtV,KAAP,CAAb,CAAA;CACAJ,IAAAA,KAAK,GAAG6V,cAAc,CAAC,IAAD,EAAO7V,KAAP,CAAtB,CAAA;;CACA,IAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAKwP,CAAAA,GAAL,CAAS3Q,KAAT,EAAgBmB,CAAhB,EAAmBvB,KAAK,CAACuB,CAAD,CAAxB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDwZ,EAAAA,QAAQ,CAACY,IAAD,EAAOC,IAAP,EAAa;CACnBlG,IAAAA,aAAa,CAAC,IAAD,EAAOiG,IAAP,CAAb,CAAA;CACAjG,IAAAA,aAAa,CAAC,IAAD,EAAOkG,IAAP,CAAb,CAAA;;CACA,IAAA,KAAK,IAAIra,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAIsa,IAAI,GAAG,IAAK/L,CAAAA,GAAL,CAAS6L,IAAT,EAAepa,CAAf,CAAX,CAAA;CACA,MAAA,IAAA,CAAKwP,GAAL,CAAS4K,IAAT,EAAepa,CAAf,EAAkB,IAAKuO,CAAAA,GAAL,CAAS8L,IAAT,EAAera,CAAf,CAAlB,CAAA,CAAA;CACA,MAAA,IAAA,CAAKwP,GAAL,CAAS6K,IAAT,EAAera,CAAf,EAAkBsa,IAAlB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDC,SAAS,CAAC1b,KAAD,EAAQ;CACfwV,IAAAA,gBAAgB,CAAC,IAAD,EAAOxV,KAAP,CAAhB,CAAA;KACA,IAAIgO,MAAM,GAAG,EAAb,CAAA;;CACA,IAAA,KAAK,IAAI7M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC6M,MAAM,CAACzG,IAAP,CAAY,IAAA,CAAKmI,GAAL,CAASvO,CAAT,EAAYnB,KAAZ,CAAZ,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOgO,MAAP,CAAA;CACD,GAAA;;GAED2N,eAAe,CAAC3b,KAAD,EAAQ;KACrB,OAAOwQ,MAAM,CAACkI,YAAP,CAAoB,KAAKgD,SAAL,CAAe1b,KAAf,CAApB,CAAP,CAAA;CACD,GAAA;;CAED4b,EAAAA,SAAS,CAAC5b,KAAD,EAAQJ,KAAR,EAAe;CACtB4V,IAAAA,gBAAgB,CAAC,IAAD,EAAOxV,KAAP,CAAhB,CAAA;CACAJ,IAAAA,KAAK,GAAGgW,iBAAiB,CAAC,IAAD,EAAOhW,KAAP,CAAzB,CAAA;;CACA,IAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAKwP,CAAAA,GAAL,CAASxP,CAAT,EAAYnB,KAAZ,EAAmBJ,KAAK,CAACuB,CAAD,CAAxB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAED0a,EAAAA,WAAW,CAACC,OAAD,EAAUC,OAAV,EAAmB;CAC5BvG,IAAAA,gBAAgB,CAAC,IAAD,EAAOsG,OAAP,CAAhB,CAAA;CACAtG,IAAAA,gBAAgB,CAAC,IAAD,EAAOuG,OAAP,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAI5a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAIsa,IAAI,GAAG,IAAK/L,CAAAA,GAAL,CAASvO,CAAT,EAAY2a,OAAZ,CAAX,CAAA;CACA,MAAA,IAAA,CAAKnL,GAAL,CAASxP,CAAT,EAAY2a,OAAZ,EAAqB,IAAKpM,CAAAA,GAAL,CAASvO,CAAT,EAAY4a,OAAZ,CAArB,CAAA,CAAA;CACA,MAAA,IAAA,CAAKpL,GAAL,CAASxP,CAAT,EAAY4a,OAAZ,EAAqBN,IAArB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDO,YAAY,CAACtG,MAAD,EAAS;CACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACtU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAED6a,YAAY,CAACvG,MAAD,EAAS;CACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACtU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAED8a,YAAY,CAACxG,MAAD,EAAS;CACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACtU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAED+a,YAAY,CAACzG,MAAD,EAAS;CACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACtU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDgb,eAAe,CAAC1G,MAAD,EAAS;CACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACvU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDkb,eAAe,CAAC3G,MAAD,EAAS;CACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACvU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDmb,eAAe,CAAC5G,MAAD,EAAS;CACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACvU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDob,eAAe,CAAC7G,MAAD,EAAS;CACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B,CAAA;;CACA,IAAA,KAAK,IAAIvU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAe,IAAKsO,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiBsU,MAAM,CAACvU,CAAD,CAAtC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDqb,EAAAA,MAAM,CAACxc,KAAD,EAAQU,KAAR,EAAe;CACnB4U,IAAAA,aAAa,CAAC,IAAD,EAAOtV,KAAP,CAAb,CAAA;;CACA,IAAA,KAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;CACrC,MAAA,IAAA,CAAKwP,GAAL,CAAS3Q,KAAT,EAAgBmB,CAAhB,EAAmB,IAAKuO,CAAAA,GAAL,CAAS1P,KAAT,EAAgBmB,CAAhB,IAAqBT,KAAxC,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAED+b,EAAAA,SAAS,CAACzc,KAAD,EAAQU,KAAR,EAAe;CACtB8U,IAAAA,gBAAgB,CAAC,IAAD,EAAOxV,KAAP,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,IAAA,CAAKwP,GAAL,CAASxP,CAAT,EAAYnB,KAAZ,EAAmB,IAAK0P,CAAAA,GAAL,CAASvO,CAAT,EAAYnB,KAAZ,IAAqBU,KAAxC,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDwC,GAAG,CAACwZ,EAAD,EAAK;KACN,IAAI,IAAA,CAAKjG,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;CACD,IAAA,QAAQD,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;CACV,UAAA,MAAMxZ,GAAG,GAAG,IAAI0F,KAAJ,CAAU,IAAA,CAAKwG,IAAf,CAAA,CAAqByJ,IAArB,CAA0BlW,MAAM,CAACmG,iBAAjC,CAAZ,CAAA;;CACA,UAAA,KAAK,IAAIiF,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB9K,GAAG,CAAC6K,GAAD,CAA/B,EAAsC;iBACpC7K,GAAG,CAAC6K,GAAD,CAAH,GAAW,IAAA,CAAK2B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAX,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO9K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;CACb,UAAA,MAAMA,GAAG,GAAG,IAAI0F,KAAJ,CAAU,IAAA,CAAKyG,OAAf,CAAA,CAAwBwJ,IAAxB,CAA6BlW,MAAM,CAACmG,iBAApC,CAAZ,CAAA;;CACA,UAAA,KAAK,IAAIiF,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB9K,GAAG,CAAC8K,MAAD,CAA/B,EAAyC;iBACvC9K,GAAG,CAAC8K,MAAD,CAAH,GAAc,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAd,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO9K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAKT,SAAL;CAAgB,QAAA;WACd,IAAIS,GAAG,GAAG,IAAKwM,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAV,CAAA;;CACA,UAAA,KAAK,IAAI3B,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB9K,GAA5B,EAAiC;CAC/BA,gBAAAA,GAAG,GAAG,IAAKwM,CAAAA,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAN,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO9K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA;CACE,QAAA,MAAM,IAAI7C,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CAnCJ,KAAA;CAqCD,GAAA;;CAEDE,EAAAA,QAAQ,GAAG;KACTpG,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR,CAAA;CACA,IAAA,IAAImN,GAAG,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI1b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAI,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiB0V,CAArB,EAAwB;CACtBA,UAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAJ,CAAA;CACAyb,UAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACA0b,UAAAA,GAAG,CAAC,CAAD,CAAH,GAASzb,CAAT,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOyb,GAAP,CAAA;CACD,GAAA;;GAED5Z,GAAG,CAACyZ,EAAD,EAAK;KACN,IAAI,IAAA,CAAKjG,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;CAED,IAAA,QAAQD,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;CACV,UAAA,MAAMzZ,GAAG,GAAG,IAAI2F,KAAJ,CAAU,IAAA,CAAKwG,IAAf,CAAA,CAAqByJ,IAArB,CAA0BlW,MAAM,CAAC+B,iBAAjC,CAAZ,CAAA;;CACA,UAAA,KAAK,IAAIqJ,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB/K,GAAG,CAAC8K,GAAD,CAA/B,EAAsC;iBACpC9K,GAAG,CAAC8K,GAAD,CAAH,GAAW,IAAA,CAAK2B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAX,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO/K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;CACb,UAAA,MAAMA,GAAG,GAAG,IAAI2F,KAAJ,CAAU,IAAA,CAAKyG,OAAf,CAAA,CAAwBwJ,IAAxB,CAA6BlW,MAAM,CAAC+B,iBAApC,CAAZ,CAAA;;CACA,UAAA,KAAK,IAAIqJ,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB/K,GAAG,CAAC+K,MAAD,CAA/B,EAAyC;iBACvC/K,GAAG,CAAC+K,MAAD,CAAH,GAAc,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAd,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO/K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAKR,SAAL;CAAgB,QAAA;WACd,IAAIQ,GAAG,GAAG,IAAKyM,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAV,CAAA;;CACA,UAAA,KAAK,IAAI3B,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,YAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;eACpD,IAAI,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAA,GAAwB/K,GAA5B,EAAiC;CAC/BA,gBAAAA,GAAG,GAAG,IAAKyM,CAAAA,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAAN,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACD,UAAA,OAAO/K,GAAP,CAAA;CACD,SAAA;;CACD,MAAA;CACE,QAAA,MAAM,IAAI5C,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CAnCJ,KAAA;CAqCD,GAAA;;CAEDI,EAAAA,QAAQ,GAAG;KACTtG,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR,CAAA;CACA,IAAA,IAAImN,GAAG,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI1b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;SACrC,IAAI,IAAA,CAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiB0V,CAArB,EAAwB;CACtBA,UAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAJ,CAAA;CACAyb,UAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACA0b,UAAAA,GAAG,CAAC,CAAD,CAAH,GAASzb,CAAT,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOyb,GAAP,CAAA;CACD,GAAA;;GAED9B,MAAM,CAAChN,GAAD,EAAM;CACVuH,IAAAA,aAAa,CAAC,IAAD,EAAOvH,GAAP,CAAb,CAAA;;KACA,IAAI,IAAA,CAAK0I,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;KACD,IAAI7F,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc,CAAd,CAAR,CAAA;;CACA,IAAA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAI,IAAA,CAAKuO,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAA,GAAmB2V,CAAvB,EAA0B;CACxBA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAJ,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO2V,CAAP,CAAA;CACD,GAAA;;GAEDiG,WAAW,CAAChP,GAAD,EAAM;CACfuH,IAAAA,aAAa,CAAC,IAAD,EAAOvH,GAAP,CAAb,CAAA;KACAyI,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc,CAAd,CAAR,CAAA;CACA,IAAA,IAAI8O,GAAG,GAAG,CAAC9O,GAAD,EAAM,CAAN,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAI,IAAA,CAAKuO,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAA,GAAmB2V,CAAvB,EAA0B;CACxBA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAJ,CAAA;CACA0b,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0b,GAAP,CAAA;CACD,GAAA;;GAEDG,MAAM,CAACjP,GAAD,EAAM;CACVuH,IAAAA,aAAa,CAAC,IAAD,EAAOvH,GAAP,CAAb,CAAA;;KACA,IAAI,IAAA,CAAK0I,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;KACD,IAAI7F,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc,CAAd,CAAR,CAAA;;CACA,IAAA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAI,IAAA,CAAKuO,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAA,GAAmB2V,CAAvB,EAA0B;CACxBA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAJ,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO2V,CAAP,CAAA;CACD,GAAA;;GAEDmG,WAAW,CAAClP,GAAD,EAAM;CACfuH,IAAAA,aAAa,CAAC,IAAD,EAAOvH,GAAP,CAAb,CAAA;KACAyI,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc,CAAd,CAAR,CAAA;CACA,IAAA,IAAI8O,GAAG,GAAG,CAAC9O,GAAD,EAAM,CAAN,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;OACrC,IAAI,IAAA,CAAKuO,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAA,GAAmB2V,CAAvB,EAA0B;CACxBA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS3B,GAAT,EAAc5M,CAAd,CAAJ,CAAA;CACA0b,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0b,GAAP,CAAA;CACD,GAAA;;GAEDK,SAAS,CAAClP,MAAD,EAAS;CAChBwH,IAAAA,gBAAgB,CAAC,IAAD,EAAOxH,MAAP,CAAhB,CAAA;;KACA,IAAI,IAAA,CAAKyI,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;KACD,IAAI7F,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY1B,MAAZ,CAAR,CAAA;;CACA,IAAA,KAAK,IAAI7M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAI,IAAA,CAAKuO,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAA,GAAsB8I,CAA1B,EAA6B;CAC3BA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAJ,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO8I,CAAP,CAAA;CACD,GAAA;;GAEDqG,cAAc,CAACnP,MAAD,EAAS;CACrBwH,IAAAA,gBAAgB,CAAC,IAAD,EAAOxH,MAAP,CAAhB,CAAA;KACAwI,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY1B,MAAZ,CAAR,CAAA;CACA,IAAA,IAAI6O,GAAG,GAAG,CAAC,CAAD,EAAI7O,MAAJ,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI7M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAI,IAAA,CAAKuO,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAA,GAAsB8I,CAA1B,EAA6B;CAC3BA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAJ,CAAA;CACA6O,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0b,GAAP,CAAA;CACD,GAAA;;GAEDO,SAAS,CAACpP,MAAD,EAAS;CAChBwH,IAAAA,gBAAgB,CAAC,IAAD,EAAOxH,MAAP,CAAhB,CAAA;;KACA,IAAI,IAAA,CAAKyI,OAAL,EAAJ,EAAoB;CAClB,MAAA,OAAOkG,GAAP,CAAA;CACD,KAAA;;KACD,IAAI7F,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY1B,MAAZ,CAAR,CAAA;;CACA,IAAA,KAAK,IAAI7M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAI,IAAA,CAAKuO,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAA,GAAsB8I,CAA1B,EAA6B;CAC3BA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAJ,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO8I,CAAP,CAAA;CACD,GAAA;;GAEDuG,cAAc,CAACrP,MAAD,EAAS;CACrBwH,IAAAA,gBAAgB,CAAC,IAAD,EAAOxH,MAAP,CAAhB,CAAA;KACAwI,aAAa,CAAC,IAAD,CAAb,CAAA;KACA,IAAIM,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAAS,CAAT,EAAY1B,MAAZ,CAAR,CAAA;CACA,IAAA,IAAI6O,GAAG,GAAG,CAAC,CAAD,EAAI7O,MAAJ,CAAV,CAAA;;CACA,IAAA,KAAK,IAAI7M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,IAAI,IAAA,CAAKuO,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAA,GAAsB8I,CAA1B,EAA6B;CAC3BA,QAAAA,CAAC,GAAG,IAAKpH,CAAAA,GAAL,CAASvO,CAAT,EAAY6M,MAAZ,CAAJ,CAAA;CACA6O,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS1b,CAAT,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0b,GAAP,CAAA;CACD,GAAA;;CAED1D,EAAAA,IAAI,GAAG;KACL,IAAIlW,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAAS,IAAA,CAAKmM,IAAd,EAAoB,IAAKC,CAAAA,OAAzB,CAAV,CAAA;KACA,IAAI8J,IAAI,GAAG,EAAX,CAAA;;KACA,KAAK,IAAIhY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAApB,EAAyB9B,CAAC,EAA1B,EAA8B;OAC5BgY,IAAI,CAAC5R,IAAL,CAAU,IAAA,CAAKmI,GAAL,CAASvO,CAAT,EAAYA,CAAZ,CAAV,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOgY,IAAP,CAAA;CACD,GAAA;;CAEDmE,EAAAA,IAAI,GAAqB;KAAA,IAApBC,IAAoB,uEAAb,WAAa,CAAA;KACvB,IAAInW,MAAM,GAAG,CAAb,CAAA;;KACA,IAAImW,IAAI,KAAK,KAAb,EAAoB;OAClB,OAAO,IAAA,CAAKra,GAAL,EAAP,CAAA;CACD,KAFD,MAEO,IAAIqa,IAAI,KAAK,WAAb,EAA0B;CAC/B,MAAA,KAAK,IAAIpc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,QAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrCgG,UAAAA,MAAM,GAAGA,MAAM,GAAG,IAAKsI,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiB,KAAKsO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAnC,CAAA;CACD,SAAA;CACF,OAAA;;CACD,MAAA,OAAOjB,IAAI,CAAC8D,IAAL,CAAUmD,MAAV,CAAP,CAAA;CACD,KAPM,MAOA;CACL,MAAA,MAAM,IAAIO,UAAJ,CAAgB,CAAqB4V,mBAAAA,EAAAA,IAAK,EAA1C,CAAN,CAAA;CACD,KAAA;CACF,GAAA;;CAEDC,EAAAA,aAAa,GAAG;KACd,IAAI7G,GAAG,GAAG,CAAV,CAAA;;CACA,IAAA,KAAK,IAAIxV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrCuV,QAAAA,GAAG,IAAI,IAAKjH,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAP,CAAA;CACA,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAeuV,GAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAED8G,GAAG,CAACC,OAAD,EAAU;CACX,IAAA,IAAInN,cAAc,CAACgJ,QAAf,CAAwBmE,OAAxB,CAAJ,EAAsCA,OAAO,GAAGA,OAAO,CAAC/H,SAAR,EAAV,CAAA;CACtC,IAAA,IAAIgI,OAAO,GAAG,IAAKhI,CAAAA,SAAL,EAAd,CAAA;;CACA,IAAA,IAAIgI,OAAO,CAACne,MAAR,KAAmBke,OAAO,CAACle,MAA/B,EAAuC;CACrC,MAAA,MAAM,IAAImI,UAAJ,CAAe,mCAAf,CAAN,CAAA;CACD,KAAA;;KACD,IAAI8V,GAAG,GAAG,CAAV,CAAA;;CACA,IAAA,KAAK,IAAItc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwc,OAAO,CAACne,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;OACvCsc,GAAG,IAAIE,OAAO,CAACxc,CAAD,CAAP,GAAauc,OAAO,CAACvc,CAAD,CAA3B,CAAA;CACD,KAAA;;CACD,IAAA,OAAOsc,GAAP,CAAA;CACD,GAAA;;GAEDG,IAAI,CAACC,KAAD,EAAQ;CACVA,IAAAA,KAAK,GAAGrN,MAAM,CAACI,WAAP,CAAmBiN,KAAnB,CAAR,CAAA;KAEA,IAAI/C,CAAC,GAAG,IAAA,CAAK1L,IAAb,CAAA;KACA,IAAIzL,CAAC,GAAG,IAAA,CAAK0L,OAAb,CAAA;CACA,IAAA,IAAI2L,CAAC,GAAG6C,KAAK,CAACxO,OAAd,CAAA;KAEA,IAAIjI,MAAM,GAAG,IAAIoJ,MAAJ,CAAWsK,CAAX,EAAcE,CAAd,CAAb,CAAA;CAEA,IAAA,IAAI8C,KAAK,GAAG,IAAIje,YAAJ,CAAiB8D,CAAjB,CAAZ,CAAA;;KACA,KAAK,IAAIvC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Z,CAApB,EAAuB5Z,CAAC,EAAxB,EAA4B;OAC1B,KAAK,IAAImZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5W,CAApB,EAAuB4W,CAAC,EAAxB,EAA4B;SAC1BuD,KAAK,CAACvD,CAAD,CAAL,GAAWsD,KAAK,CAACnO,GAAN,CAAU6K,CAAV,EAAanZ,CAAb,CAAX,CAAA;CACD,OAAA;;OAED,KAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;SAC1B,IAAI4c,CAAC,GAAG,CAAR,CAAA;;SACA,KAAK,IAAIxD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5W,CAApB,EAAuB4W,CAAC,EAAxB,EAA4B;WAC1BwD,CAAC,IAAI,IAAKrO,CAAAA,GAAL,CAASvO,CAAT,EAAYoZ,CAAZ,CAAiBuD,GAAAA,KAAK,CAACvD,CAAD,CAA3B,CAAA;CACD,SAAA;;CAEDnT,QAAAA,MAAM,CAACuJ,GAAP,CAAWxP,CAAX,EAAcC,CAAd,EAAiB2c,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO3W,MAAP,CAAA;CACD,GAAA;;GAED4W,WAAW,CAACH,KAAD,EAAQ;CACjBA,IAAAA,KAAK,GAAGrN,MAAM,CAACI,WAAP,CAAmBiN,KAAnB,CAAR,CAAA;KACA,IAAIzW,MAAM,GAAG,IAAIoJ,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb,CAAA;KACA,MAAMyN,GAAG,GAAG,IAAKvO,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAMwO,GAAG,GAAGL,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMyO,GAAG,GAAG,IAAKzO,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM0O,GAAG,GAAGP,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAM2O,GAAG,GAAG,IAAK3O,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM4O,GAAG,GAAGT,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAM6O,GAAG,GAAG,IAAK7O,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM8O,GAAG,GAAGX,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAViB;;KAajB,MAAM+O,EAAE,GAAG,CAACR,GAAG,GAAGM,GAAP,KAAeL,GAAG,GAAGM,GAArB,CAAX,CAAA;CACA,IAAA,MAAME,EAAE,GAAG,CAACL,GAAG,GAAGE,GAAP,IAAcL,GAAzB,CAAA;CACA,IAAA,MAAMS,EAAE,GAAGV,GAAG,IAAIG,GAAG,GAAGI,GAAV,CAAd,CAAA;CACA,IAAA,MAAMI,EAAE,GAAGL,GAAG,IAAID,GAAG,GAAGJ,GAAV,CAAd,CAAA;CACA,IAAA,MAAMW,EAAE,GAAG,CAACZ,GAAG,GAAGE,GAAP,IAAcK,GAAzB,CAAA;KACA,MAAMM,EAAE,GAAG,CAACT,GAAG,GAAGJ,GAAP,KAAeC,GAAG,GAAGE,GAArB,CAAX,CAAA;CACA,IAAA,MAAMW,EAAE,GAAG,CAACZ,GAAG,GAAGI,GAAP,KAAeD,GAAG,GAAGE,GAArB,CAAX,CAnBiB;;KAsBjB,MAAMQ,GAAG,GAAGP,EAAE,GAAGG,EAAL,GAAUC,EAAV,GAAeE,EAA3B,CAAA;CACA,IAAA,MAAME,GAAG,GAAGN,EAAE,GAAGE,EAAjB,CAAA;CACA,IAAA,MAAMK,GAAG,GAAGR,EAAE,GAAGE,EAAjB,CAAA;KACA,MAAMO,GAAG,GAAGV,EAAE,GAAGC,EAAL,GAAUC,EAAV,GAAeG,EAA3B,CAAA;CAEA1X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBqO,GAAjB,CAAA,CAAA;CACA5X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBsO,GAAjB,CAAA,CAAA;CACA7X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBuO,GAAjB,CAAA,CAAA;CACA9X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBwO,GAAjB,CAAA,CAAA;CACA,IAAA,OAAO/X,MAAP,CAAA;CACD,GAAA;;GAEDgY,WAAW,CAACvB,KAAD,EAAQ;CACjBA,IAAAA,KAAK,GAAGrN,MAAM,CAACI,WAAP,CAAmBiN,KAAnB,CAAR,CAAA;KACA,IAAIzW,MAAM,GAAG,IAAIoJ,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb,CAAA;KAEA,MAAM6O,GAAG,GAAG,IAAK3P,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM4P,GAAG,GAAG,IAAK5P,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM6P,GAAG,GAAG,IAAK7P,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM8P,GAAG,GAAG,IAAK9P,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAMuO,GAAG,GAAG,IAAKvO,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAMyO,GAAG,GAAG,IAAKzO,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM+P,GAAG,GAAG,IAAK/P,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM2O,GAAG,GAAG,IAAK3O,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KACA,MAAM6O,GAAG,GAAG,IAAK7O,CAAAA,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ,CAAA;KAEA,MAAMgQ,GAAG,GAAG7B,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMiQ,GAAG,GAAG9B,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMkQ,GAAG,GAAG/B,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMmQ,GAAG,GAAGhC,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMwO,GAAG,GAAGL,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAM0O,GAAG,GAAGP,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAMoQ,GAAG,GAAGjC,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAM4O,GAAG,GAAGT,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;KACA,MAAM8O,GAAG,GAAGX,KAAK,CAACnO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAAA;CAEA,IAAA,MAAM+O,EAAE,GAAG,CAACY,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBvB,GAAxB,GAA8BI,GAA9B,GAAoCE,GAArC,IAA4CL,GAAvD,CAAA;KACA,MAAMQ,EAAE,GAAG,CAACW,GAAG,GAAGG,GAAP,KAAe,CAACG,GAAD,GAAOzB,GAAtB,CAAX,CAAA;CACA,IAAA,MAAMS,EAAE,GAAGV,GAAG,IAAI,CAACyB,GAAD,GAAOC,GAAP,GAAaE,GAAb,GAAmB3B,GAAnB,GAAyBE,GAAzB,GAA+B0B,GAA/B,GAAqCtB,GAAzC,CAAd,CAAA;CACA,IAAA,MAAMI,EAAE,GAAG,CAAC,CAACS,GAAD,GAAOG,GAAP,GAAavB,GAAd,KAAsByB,GAAG,GAAGC,GAAN,GAAYzB,GAAlC,CAAX,CAAA;KACA,MAAMW,EAAE,GAAG,CAACW,GAAG,GAAGvB,GAAP,KAAe,CAACyB,GAAD,GAAOC,GAAtB,CAAX,CAAA;CACA,IAAA,MAAMb,EAAE,GAAGO,GAAG,GAAGK,GAAjB,CAAA;CACA,IAAA,MAAMX,EAAE,GAAG,CAAC,CAACM,GAAD,GAAOI,GAAP,GAAapB,GAAd,KAAsBqB,GAAG,GAAGE,GAAN,GAAYxB,GAAlC,CAAX,CAAA;KACA,MAAM2B,EAAE,GAAG,CAAC,CAACV,GAAD,GAAOI,GAAR,KAAgBG,GAAG,GAAGxB,GAAtB,CAAX,CAAA;KACA,MAAM4B,EAAE,GAAG,CAACP,GAAG,GAAGpB,GAAP,KAAe,CAACqB,GAAD,GAAOE,GAAtB,CAAX,CAAA;CACA,IAAA,MAAMK,GAAG,GAAG,CAACZ,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBtB,GAAlB,GAAwBE,GAAxB,GAA8BsB,GAA9B,GAAoCpB,GAArC,IAA4CD,GAAxD,CAAA;CACA,IAAA,MAAM8B,GAAG,GAAG7B,GAAG,IAAI,CAACqB,GAAD,GAAOE,GAAP,GAAaC,GAAb,GAAmB3B,GAAnB,GAAyBE,GAAzB,GAA+B0B,GAA/B,GAAqCxB,GAAzC,CAAf,CAAA;CACA,IAAA,MAAM6B,GAAG,GAAG,CAAC,CAACZ,GAAD,GAAOlB,GAAP,GAAaE,GAAd,KAAsBL,GAAG,GAAG4B,GAAN,GAAYxB,GAAlC,CAAZ,CAAA;KACA,MAAM8B,GAAG,GAAG,CAACb,GAAG,GAAGhB,GAAP,KAAeL,GAAG,GAAGI,GAArB,CAAZ,CAAA;CACA,IAAA,MAAM+B,GAAG,GAAGd,GAAG,GAAGO,GAAlB,CAAA;KACA,MAAMQ,GAAG,GAAG,CAACjC,GAAG,GAAGE,GAAP,KAAe,CAACuB,GAAD,GAAOxB,GAAtB,CAAZ,CAAA;CACA,IAAA,MAAMiC,GAAG,GAAG,CAAC,CAAChB,GAAD,GAAOtB,GAAP,GAAaE,GAAd,KAAsBC,GAAG,GAAG0B,GAAN,GAAYtB,GAAlC,CAAZ,CAAA;KACA,MAAMgC,GAAG,GAAG,CAACjB,GAAG,GAAGpB,GAAP,KAAeC,GAAG,GAAGI,GAArB,CAAZ,CAAA;KACA,MAAMiC,GAAG,GAAG,CAACxC,GAAG,GAAGE,GAAP,KAAe,CAAC2B,GAAD,GAAOtB,GAAtB,CAAZ,CAAA;CACA,IAAA,MAAMkC,GAAG,GAAGpB,GAAG,GAAGO,GAAlB,CAAA;CACA,IAAA,MAAMc,GAAG,GAAGxC,GAAG,GAAGG,GAAlB,CAAA;CACA,IAAA,MAAMsC,GAAG,GAAGpB,GAAG,GAAGI,GAAlB,CAAA;CACA,IAAA,MAAMiB,GAAG,GAAGpB,GAAG,GAAGE,GAAlB,CAAA;CACA,IAAA,MAAMmB,GAAG,GAAGvC,GAAG,GAAGC,GAAlB,CAAA;CAEA,IAAA,MAAMQ,GAAG,GAAGF,EAAE,GAAGuB,GAAL,GAAWK,GAAvB,CAAA;CACA,IAAA,MAAMzB,GAAG,GAAGR,EAAE,GAAGG,EAAL,GAAUC,EAAV,GAAeC,EAAf,GAAoBqB,GAApB,GAA0BE,GAA1B,GAAgCC,GAA5C,CAAA;CACA,IAAA,MAAMS,GAAG,GAAGjC,EAAE,GAAGC,EAAL,GAAUiB,EAAV,GAAeC,GAAf,GAAqBI,GAArB,GAA2BE,GAA3B,GAAiCE,GAA7C,CAAA;CACA,IAAA,MAAMvB,GAAG,GAAGR,EAAE,GAAGC,EAAL,GAAUC,EAAV,GAAeE,EAAf,GAAoBuB,GAApB,GAA0BE,GAA1B,GAAgCC,GAA5C,CAAA;KACA,MAAMrB,GAAG,GAAGT,EAAE,GAAGE,EAAL,GAAUC,EAAV,GAAeC,EAAf,GAAoB6B,GAAhC,CAAA;KACA,MAAMK,GAAG,GAAGX,GAAG,GAAGE,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBG,GAApC,CAAA;CACA,IAAA,MAAMK,GAAG,GAAGnC,EAAE,GAAGC,EAAL,GAAUgB,EAAV,GAAeG,GAAf,GAAqBC,GAArB,GAA2BC,GAA3B,GAAiCC,GAA7C,CAAA;KACA,MAAMa,GAAG,GAAGf,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBO,GAApC,CAAA;KACA,MAAMM,GAAG,GAAGrC,EAAE,GAAGC,EAAL,GAAUgB,EAAV,GAAeC,EAAf,GAAoBc,GAAhC,CAAA;CAEA1Z,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBqO,GAAjB,CAAA,CAAA;CACA5X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBsO,GAAjB,CAAA,CAAA;CACA7X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBoQ,GAAjB,CAAA,CAAA;CACA3Z,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBuO,GAAjB,CAAA,CAAA;CACA9X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBwO,GAAjB,CAAA,CAAA;CACA/X,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBqQ,GAAjB,CAAA,CAAA;CACA5Z,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBsQ,GAAjB,CAAA,CAAA;CACA7Z,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBuQ,GAAjB,CAAA,CAAA;CACA9Z,IAAAA,MAAM,CAACuJ,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiBwQ,GAAjB,CAAA,CAAA;CACA,IAAA,OAAO/Z,MAAP,CAAA;CACD,GAAA;;GAEDga,YAAY,CAAC5Y,CAAD,EAAI;CACdA,IAAAA,CAAC,GAAGgI,MAAM,CAACI,WAAP,CAAmBpI,CAAnB,CAAJ,CAAA;CACA,IAAA,IAAI3D,CAAC,GAAG,IAAK4V,CAAAA,KAAL,EAAR,CAAA;CACA,IAAA,IAAI4G,EAAE,GAAGxc,CAAC,CAACuK,IAAX,CAAA;CACA,IAAA,IAAIkS,EAAE,GAAGzc,CAAC,CAACwK,OAAX,CAAA;CACA,IAAA,IAAIkS,EAAE,GAAG/Y,CAAC,CAAC4G,IAAX,CAAA;CACA,IAAA,IAAIoS,EAAE,GAAGhZ,CAAC,CAAC6G,OAAX,CAAA;;KACA,IAAIiS,EAAE,KAAKC,EAAX,EAAe;CACb;OACAE,OAAO,CAACC,IAAR,CACG,CAAcL,YAAAA,EAAAA,EAAG,CAAKC,GAAAA,EAAAA,EAAG,CAAOC,KAAAA,EAAAA,EAAG,CAAKC,GAAAA,EAAAA,EAAG,CAD9C,iCAAA,CAAA,CAAA,CAAA;CAGD,KAZa;CAed;;;CACA,IAAA,SAASG,KAAT,CAAeC,GAAf,EAAoBxS,IAApB,EAA0B+H,IAA1B,EAAgC;CAC9B,MAAA,IAAI0K,CAAC,GAAGD,GAAG,CAACxS,IAAZ,CAAA;CACA,MAAA,IAAI/N,CAAC,GAAGugB,GAAG,CAACvS,OAAZ,CAAA;;CACA,MAAA,IAAIwS,CAAC,KAAKzS,IAAN,IAAc/N,CAAC,KAAK8V,IAAxB,EAA8B;CAC5B,QAAA,OAAOyK,GAAP,CAAA;CACD,OAFD,MAEO;SACL,IAAIE,QAAQ,GAAGvR,cAAc,CAACoI,KAAf,CAAqBvJ,IAArB,EAA2B+H,IAA3B,CAAf,CAAA;SACA2K,QAAQ,GAAGA,QAAQ,CAAC5G,YAAT,CAAsB0G,GAAtB,EAA2B,CAA3B,EAA8B,CAA9B,CAAX,CAAA;CACA,QAAA,OAAOE,QAAP,CAAA;CACD,OAAA;CACF,KA1Ba;CA6Bd;CACA;;;KAEA,IAAID,CAAC,GAAG1hB,IAAI,CAAC+C,GAAL,CAASme,EAAT,EAAaE,EAAb,CAAR,CAAA;KACA,IAAIlgB,CAAC,GAAGlB,IAAI,CAAC+C,GAAL,CAASoe,EAAT,EAAaE,EAAb,CAAR,CAAA;KACA3c,CAAC,GAAG8c,KAAK,CAAC9c,CAAD,EAAIgd,CAAJ,EAAOxgB,CAAP,CAAT,CAAA;KACAmH,CAAC,GAAGmZ,KAAK,CAACnZ,CAAD,EAAIqZ,CAAJ,EAAOxgB,CAAP,CAAT,CAnCc;;KAsCd,SAAS0gB,SAAT,CAAmBlhB,CAAnB,EAAsBS,CAAtB,EAAyB8N,IAAzB,EAA+B+H,IAA/B,EAAqC;CACnC;CACA,MAAA,IAAI/H,IAAI,IAAI,GAAR,IAAe+H,IAAI,IAAI,GAA3B,EAAgC;CAC9B,QAAA,OAAOtW,CAAC,CAAC+c,IAAF,CAAOtc,CAAP,CAAP,CAD8B;CAE/B,OAJkC;;;OAOnC,IAAI8N,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkB+H,IAAI,GAAG,CAAP,KAAa,CAAnC,EAAsC;CACpCtW,QAAAA,CAAC,GAAG8gB,KAAK,CAAC9gB,CAAD,EAAIuO,IAAI,GAAG,CAAX,EAAc+H,IAAI,GAAG,CAArB,CAAT,CAAA;CACA7V,QAAAA,CAAC,GAAGqgB,KAAK,CAACrgB,CAAD,EAAI8N,IAAI,GAAG,CAAX,EAAc+H,IAAI,GAAG,CAArB,CAAT,CAAA;CACD,OAHD,MAGO,IAAI/H,IAAI,GAAG,CAAP,KAAa,CAAjB,EAAoB;SACzBvO,CAAC,GAAG8gB,KAAK,CAAC9gB,CAAD,EAAIuO,IAAI,GAAG,CAAX,EAAc+H,IAAd,CAAT,CAAA;SACA7V,CAAC,GAAGqgB,KAAK,CAACrgB,CAAD,EAAI8N,IAAI,GAAG,CAAX,EAAc+H,IAAd,CAAT,CAAA;CACD,OAHM,MAGA,IAAIA,IAAI,GAAG,CAAP,KAAa,CAAjB,EAAoB;SACzBtW,CAAC,GAAG8gB,KAAK,CAAC9gB,CAAD,EAAIuO,IAAJ,EAAU+H,IAAI,GAAG,CAAjB,CAAT,CAAA;SACA7V,CAAC,GAAGqgB,KAAK,CAACrgB,CAAD,EAAI8N,IAAJ,EAAU+H,IAAI,GAAG,CAAjB,CAAT,CAAA;CACD,OAAA;;OAED,IAAI6K,QAAQ,GAAGC,QAAQ,CAACphB,CAAC,CAACuO,IAAF,GAAS,CAAV,EAAa,EAAb,CAAvB,CAAA;CACA,MAAA,IAAI8S,QAAQ,GAAGD,QAAQ,CAACphB,CAAC,CAACwO,OAAF,GAAY,CAAb,EAAgB,EAAhB,CAAvB,CAnBmC;;CAqBnC,MAAA,IAAI4O,GAAG,GAAGpd,CAAC,CAACshB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6B,CAA7B,EAAgCE,QAAQ,GAAG,CAA3C,CAAV,CAAA;CACA,MAAA,IAAIhE,GAAG,GAAG5c,CAAC,CAAC6gB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6B,CAA7B,EAAgCE,QAAQ,GAAG,CAA3C,CAAV,CAAA;CAEA,MAAA,IAAI/D,GAAG,GAAGtd,CAAC,CAACshB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6BE,QAA7B,EAAuCrhB,CAAC,CAACwO,OAAF,GAAY,CAAnD,CAAV,CAAA;CACA,MAAA,IAAI+O,GAAG,GAAG9c,CAAC,CAAC6gB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6BE,QAA7B,EAAuC5gB,CAAC,CAAC+N,OAAF,GAAY,CAAnD,CAAV,CAAA;CAEA,MAAA,IAAIgP,GAAG,GAAGxd,CAAC,CAACshB,SAAF,CAAYH,QAAZ,EAAsBnhB,CAAC,CAACuO,IAAF,GAAS,CAA/B,EAAkC,CAAlC,EAAqC8S,QAAQ,GAAG,CAAhD,CAAV,CAAA;CACA,MAAA,IAAI5D,GAAG,GAAGhd,CAAC,CAAC6gB,SAAF,CAAYH,QAAZ,EAAsB1gB,CAAC,CAAC8N,IAAF,GAAS,CAA/B,EAAkC,CAAlC,EAAqC8S,QAAQ,GAAG,CAAhD,CAAV,CAAA;OAEA,IAAI3D,GAAG,GAAG1d,CAAC,CAACshB,SAAF,CAAYH,QAAZ,EAAsBnhB,CAAC,CAACuO,IAAF,GAAS,CAA/B,EAAkC8S,QAAlC,EAA4CrhB,CAAC,CAACwO,OAAF,GAAY,CAAxD,CAAV,CAAA;OACA,IAAImP,GAAG,GAAGld,CAAC,CAAC6gB,SAAF,CAAYH,QAAZ,EAAsB1gB,CAAC,CAAC8N,IAAF,GAAS,CAA/B,EAAkC8S,QAAlC,EAA4C5gB,CAAC,CAAC+N,OAAF,GAAY,CAAxD,CAAV,CA/BmC;;OAkCnC,IAAIoP,EAAE,GAAGsD,SAAS,CAChBxR,cAAc,CAAC/D,GAAf,CAAmByR,GAAnB,EAAwBM,GAAxB,CADgB,EAEhBhO,cAAc,CAAC/D,GAAf,CAAmB0R,GAAnB,EAAwBM,GAAxB,CAFgB,EAGhBwD,QAHgB,EAIhBE,QAJgB,CAAlB,CAAA;CAMA,MAAA,IAAIxD,EAAE,GAAGqD,SAAS,CAACxR,cAAc,CAAC/D,GAAf,CAAmB6R,GAAnB,EAAwBE,GAAxB,CAAD,EAA+BL,GAA/B,EAAoC8D,QAApC,EAA8CE,QAA9C,CAAlB,CAAA;CACA,MAAA,IAAIvD,EAAE,GAAGoD,SAAS,CAAC9D,GAAD,EAAM1N,cAAc,CAACM,GAAf,CAAmBuN,GAAnB,EAAwBI,GAAxB,CAAN,EAAoCwD,QAApC,EAA8CE,QAA9C,CAAlB,CAAA;CACA,MAAA,IAAItD,EAAE,GAAGmD,SAAS,CAACxD,GAAD,EAAMhO,cAAc,CAACM,GAAf,CAAmByN,GAAnB,EAAwBJ,GAAxB,CAAN,EAAoC8D,QAApC,EAA8CE,QAA9C,CAAlB,CAAA;CACA,MAAA,IAAIrD,EAAE,GAAGkD,SAAS,CAACxR,cAAc,CAAC/D,GAAf,CAAmByR,GAAnB,EAAwBE,GAAxB,CAAD,EAA+BK,GAA/B,EAAoCwD,QAApC,EAA8CE,QAA9C,CAAlB,CAAA;OACA,IAAIpD,EAAE,GAAGiD,SAAS,CAChBxR,cAAc,CAACM,GAAf,CAAmBwN,GAAnB,EAAwBJ,GAAxB,CADgB,EAEhB1N,cAAc,CAAC/D,GAAf,CAAmB0R,GAAnB,EAAwBE,GAAxB,CAFgB,EAGhB4D,QAHgB,EAIhBE,QAJgB,CAAlB,CAAA;OAMA,IAAInD,EAAE,GAAGgD,SAAS,CAChBxR,cAAc,CAACM,GAAf,CAAmBsN,GAAnB,EAAwBI,GAAxB,CADgB,EAEhBhO,cAAc,CAAC/D,GAAf,CAAmB8R,GAAnB,EAAwBE,GAAxB,CAFgB,EAGhBwD,QAHgB,EAIhBE,QAJgB,CAAlB,CAlDmC;;OA0DnC,IAAI/C,GAAG,GAAG5O,cAAc,CAAC/D,GAAf,CAAmBiS,EAAnB,EAAuBG,EAAvB,CAAV,CAAA;OACAO,GAAG,CAACtO,GAAJ,CAAQgO,EAAR,CAAA,CAAA;OACAM,GAAG,CAAC3S,GAAJ,CAAQuS,EAAR,CAAA,CAAA;OACA,IAAIiC,GAAG,GAAGzQ,cAAc,CAAC/D,GAAf,CAAmBmS,EAAnB,EAAuBE,EAAvB,CAAV,CAAA;OACA,IAAIqC,GAAG,GAAG3Q,cAAc,CAAC/D,GAAf,CAAmBkS,EAAnB,EAAuBE,EAAvB,CAAV,CAAA;OACA,IAAIuC,GAAG,GAAG5Q,cAAc,CAACM,GAAf,CAAmB4N,EAAnB,EAAuBC,EAAvB,CAAV,CAAA;OACAyC,GAAG,CAAC3U,GAAJ,CAAQmS,EAAR,CAAA,CAAA;CACAwC,MAAAA,GAAG,CAAC3U,GAAJ,CAAQsS,EAAR,EAjEmC;;CAoEnC,MAAA,IAAIgD,QAAQ,GAAGvR,cAAc,CAACoI,KAAf,CAAqB,CAAA,GAAIwG,GAAG,CAAC/P,IAA7B,EAAmC,CAAA,GAAI+P,GAAG,CAAC9P,OAA3C,CAAf,CAAA;OACAyS,QAAQ,GAAGA,QAAQ,CAAC5G,YAAT,CAAsBiE,GAAtB,EAA2B,CAA3B,EAA8B,CAA9B,CAAX,CAAA;CACA2C,MAAAA,QAAQ,GAAGA,QAAQ,CAAC5G,YAAT,CAAsB8F,GAAtB,EAA2B7B,GAAG,CAAC/P,IAA/B,EAAqC,CAArC,CAAX,CAAA;CACA0S,MAAAA,QAAQ,GAAGA,QAAQ,CAAC5G,YAAT,CAAsBgG,GAAtB,EAA2B,CAA3B,EAA8B/B,GAAG,CAAC9P,OAAlC,CAAX,CAAA;CACAyS,MAAAA,QAAQ,GAAGA,QAAQ,CAAC5G,YAAT,CAAsBiG,GAAtB,EAA2BhC,GAAG,CAAC/P,IAA/B,EAAqC+P,GAAG,CAAC9P,OAAzC,CAAX,CAAA;CACA,MAAA,OAAOyS,QAAQ,CAACK,SAAT,CAAmB,CAAnB,EAAsB/S,IAAI,GAAG,CAA7B,EAAgC,CAAhC,EAAmC+H,IAAI,GAAG,CAA1C,CAAP,CAAA;CACD,KAAA;;KAED,OAAO4K,SAAS,CAACld,CAAD,EAAI2D,CAAJ,EAAOqZ,CAAP,EAAUxgB,CAAV,CAAhB,CAAA;CACD,GAAA;;CAED+gB,EAAAA,SAAS,GAAe;KAAA,IAAd/iB,OAAc,uEAAJ,EAAI,CAAA;;CACtB,IAAA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEmB,MAAAA,GAAG,GAAG,CAAR;CAAWC,MAAAA,GAAG,GAAG,CAAA;CAAjB,KAAA,GAAuB7D,OAA7B,CAAA;CACA,IAAA,IAAI,CAACsD,MAAM,CAAC0f,QAAP,CAAgBpf,GAAhB,CAAL,EAA2B,MAAM,IAAInB,SAAJ,CAAc,sBAAd,CAAN,CAAA;CAC3B,IAAA,IAAI,CAACa,MAAM,CAAC0f,QAAP,CAAgBnf,GAAhB,CAAL,EAA2B,MAAM,IAAIpB,SAAJ,CAAc,sBAAd,CAAN,CAAA;KAC3B,IAAImB,GAAG,IAAIC,GAAX,EAAgB,MAAM,IAAIyE,UAAJ,CAAe,8BAAf,CAAN,CAAA;KAChB,IAAImG,SAAS,GAAG,IAAI0C,MAAJ,CAAW,KAAKpB,IAAhB,EAAsB,IAAKC,CAAAA,OAA3B,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,MAAM4M,GAAG,GAAG,IAAA,CAAKqN,MAAL,CAAYja,CAAZ,CAAZ,CAAA;;CACA,MAAA,IAAI4M,GAAG,CAACvO,MAAJ,GAAa,CAAjB,EAAoB;SAClB6O,SAAO,CAACN,GAAD,EAAM;WAAE9K,GAAF;WAAOC,GAAP;CAAYV,UAAAA,MAAM,EAAEuL,GAAAA;CAApB,SAAN,CAAP,CAAA;CACD,OAAA;;CACDD,MAAAA,SAAS,CAACwN,MAAV,CAAiBna,CAAjB,EAAoB4M,GAApB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOD,SAAP,CAAA;CACD,GAAA;;CAEDwU,EAAAA,YAAY,GAAe;KAAA,IAAdjjB,OAAc,uEAAJ,EAAI,CAAA;;CACzB,IAAA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEmB,MAAAA,GAAG,GAAG,CAAR;CAAWC,MAAAA,GAAG,GAAG,CAAA;CAAjB,KAAA,GAAuB7D,OAA7B,CAAA;CACA,IAAA,IAAI,CAACsD,MAAM,CAAC0f,QAAP,CAAgBpf,GAAhB,CAAL,EAA2B,MAAM,IAAInB,SAAJ,CAAc,sBAAd,CAAN,CAAA;CAC3B,IAAA,IAAI,CAACa,MAAM,CAAC0f,QAAP,CAAgBnf,GAAhB,CAAL,EAA2B,MAAM,IAAIpB,SAAJ,CAAc,sBAAd,CAAN,CAAA;KAC3B,IAAImB,GAAG,IAAIC,GAAX,EAAgB,MAAM,IAAIyE,UAAJ,CAAe,8BAAf,CAAN,CAAA;KAChB,IAAImG,SAAS,GAAG,IAAI0C,MAAJ,CAAW,KAAKpB,IAAhB,EAAsB,IAAKC,CAAAA,OAA3B,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;CACrC,MAAA,MAAM6M,MAAM,GAAG,IAAA,CAAK0N,SAAL,CAAeva,CAAf,CAAf,CAAA;;OACA,IAAI6M,MAAM,CAACxO,MAAX,EAAmB;SACjB6O,SAAO,CAACL,MAAD,EAAS;CACd/K,UAAAA,GAAG,EAAEA,GADS;CAEdC,UAAAA,GAAG,EAAEA,GAFS;CAGdV,UAAAA,MAAM,EAAEwL,MAAAA;CAHM,SAAT,CAAP,CAAA;CAKD,OAAA;;CACDF,MAAAA,SAAS,CAAC8N,SAAV,CAAoBza,CAApB,EAAuB6M,MAAvB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAOF,SAAP,CAAA;CACD,GAAA;;CAEDyU,EAAAA,QAAQ,GAAG;KACT,MAAMlf,MAAM,GAAGlD,IAAI,CAAC8T,IAAL,CAAU,IAAK5E,CAAAA,OAAL,GAAe,CAAzB,CAAf,CAAA;;CACA,IAAA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiC,MAApB,EAA4BjC,CAAC,EAA7B,EAAiC;SAC/B,IAAIohB,KAAK,GAAG,IAAK9S,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAZ,CAAA;CACA,QAAA,IAAIqhB,IAAI,GAAG,IAAK/S,CAAAA,GAAL,CAASvO,CAAT,EAAY,IAAA,CAAKkO,OAAL,GAAe,CAAf,GAAmBjO,CAA/B,CAAX,CAAA;CACA,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAeqhB,IAAf,CAAA,CAAA;SACA,IAAK9R,CAAAA,GAAL,CAASxP,CAAT,EAAY,IAAA,CAAKkO,OAAL,GAAe,CAAf,GAAmBjO,CAA/B,EAAkCohB,KAAlC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDE,EAAAA,WAAW,GAAG;KACZ,MAAMrf,MAAM,GAAGlD,IAAI,CAAC8T,IAAL,CAAU,IAAK7E,CAAAA,IAAL,GAAY,CAAtB,CAAf,CAAA;;CACA,IAAA,KAAK,IAAIhO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;OACrC,KAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,MAApB,EAA4BlC,CAAC,EAA7B,EAAiC;SAC/B,IAAIqhB,KAAK,GAAG,IAAK9S,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAZ,CAAA;CACA,QAAA,IAAIqhB,IAAI,GAAG,IAAK/S,CAAAA,GAAL,CAAS,IAAA,CAAKN,IAAL,GAAY,CAAZ,GAAgBjO,CAAzB,EAA4BC,CAA5B,CAAX,CAAA;CACA,QAAA,IAAA,CAAKuP,GAAL,CAASxP,CAAT,EAAYC,CAAZ,EAAeqhB,IAAf,CAAA,CAAA;SACA,IAAK9R,CAAAA,GAAL,CAAS,IAAA,CAAKvB,IAAL,GAAY,CAAZ,GAAgBjO,CAAzB,EAA4BC,CAA5B,EAA+BohB,KAA/B,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDG,gBAAgB,CAAC9E,KAAD,EAAQ;CACtBA,IAAAA,KAAK,GAAGrN,MAAM,CAACI,WAAP,CAAmBiN,KAAnB,CAAR,CAAA;KAEA,IAAI/C,CAAC,GAAG,IAAA,CAAK1L,IAAb,CAAA;KACA,IAAIzL,CAAC,GAAG,IAAA,CAAK0L,OAAb,CAAA;CACA,IAAA,IAAI2L,CAAC,GAAG6C,KAAK,CAACzO,IAAd,CAAA;CACA,IAAA,IAAIwT,CAAC,GAAG/E,KAAK,CAACxO,OAAd,CAAA;CAEA,IAAA,IAAIjI,MAAM,GAAG,IAAIoJ,MAAJ,CAAWsK,CAAC,GAAGE,CAAf,EAAkBrX,CAAC,GAAGif,CAAtB,CAAb,CAAA;;KACA,KAAK,IAAIzhB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;OAC1B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuC,CAApB,EAAuBvC,CAAC,EAAxB,EAA4B;SAC1B,KAAK,IAAImZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,CAApB,EAAuBT,CAAC,EAAxB,EAA4B;WAC1B,KAAK,IAAInB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwJ,CAApB,EAAuBxJ,CAAC,EAAxB,EAA4B;CAC1BhS,YAAAA,MAAM,CAACuJ,GAAP,CAAWqK,CAAC,GAAG7Z,CAAJ,GAAQoZ,CAAnB,EAAsBqI,CAAC,GAAGxhB,CAAJ,GAAQgY,CAA9B,EAAiC,IAAA,CAAK1J,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAA,GAAiByc,KAAK,CAACnO,GAAN,CAAU6K,CAAV,EAAanB,CAAb,CAAlD,CAAA,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOhS,MAAP,CAAA;CACD,GAAA;;GAEDyb,YAAY,CAAChF,KAAD,EAAQ;CAClBA,IAAAA,KAAK,GAAGrN,MAAM,CAACI,WAAP,CAAmBiN,KAAnB,CAAR,CAAA;;KACA,IAAI,CAAC,IAAK5D,CAAAA,QAAL,EAAD,IAAoB,CAAC4D,KAAK,CAAC5D,QAAN,EAAzB,EAA2C;CACzC,MAAA,MAAM,IAAI5Z,KAAJ,CAAU,yCAAV,CAAN,CAAA;CACD,KAAA;;KACD,IAAIya,CAAC,GAAG,IAAA,CAAK1L,IAAb,CAAA;CACA,IAAA,IAAIzL,CAAC,GAAGka,KAAK,CAACzO,IAAd,CAAA;CACA,IAAA,IAAI0T,GAAG,GAAG,IAAKH,CAAAA,gBAAL,CAAsBnS,MAAM,CAAC0I,GAAP,CAAWvV,CAAX,EAAcA,CAAd,CAAtB,CAAV,CAAA;CACA,IAAA,IAAIof,GAAG,GAAGvS,MAAM,CAAC0I,GAAP,CAAW4B,CAAX,EAAcA,CAAd,CAAA,CAAiB6H,gBAAjB,CAAkC9E,KAAlC,CAAV,CAAA;CACA,IAAA,OAAOiF,GAAG,CAACtW,GAAJ,CAAQuW,GAAR,CAAP,CAAA;CACD,GAAA;;CAEDC,EAAAA,SAAS,GAAG;KACV,IAAI5b,MAAM,GAAG,IAAIoJ,MAAJ,CAAW,KAAKnB,OAAhB,EAAyB,IAAKD,CAAAA,IAA9B,CAAb,CAAA;;CACA,IAAA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,OAAzB,EAAkCjO,CAAC,EAAnC,EAAuC;CACrCgG,QAAAA,MAAM,CAACuJ,GAAP,CAAWvP,CAAX,EAAcD,CAAd,EAAiB,IAAA,CAAKuO,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOgG,MAAP,CAAA;CACD,GAAA;;CAED6b,EAAAA,QAAQ,GAAmC;KAAA,IAAlCC,eAAkC,uEAAhBC,cAAgB,CAAA;;CACzC,IAAA,KAAK,IAAIhiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClC,MAAA,IAAA,CAAKma,MAAL,CAAYna,CAAZ,EAAe,IAAKia,CAAAA,MAAL,CAAYja,CAAZ,CAAe0B,CAAAA,IAAf,CAAoBqgB,eAApB,CAAf,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDE,EAAAA,WAAW,GAAmC;KAAA,IAAlCF,eAAkC,uEAAhBC,cAAgB,CAAA;;CAC5C,IAAA,KAAK,IAAIhiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;CACrC,MAAA,IAAA,CAAKya,SAAL,CAAeza,CAAf,EAAkB,IAAKua,CAAAA,SAAL,CAAeva,CAAf,CAAkB0B,CAAAA,IAAlB,CAAuBqgB,eAAvB,CAAlB,CAAA,CAAA;CACD,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDf,SAAS,CAACjM,QAAD,EAAWC,MAAX,EAAmBC,WAAnB,EAAgCC,SAAhC,EAA2C;KAClDJ,UAAU,CAAC,IAAD,EAAOC,QAAP,EAAiBC,MAAjB,EAAyBC,WAAzB,EAAsCC,SAAtC,CAAV,CAAA;CACA,IAAA,IAAIvI,SAAS,GAAG,IAAI0C,MAAJ,CACd2F,MAAM,GAAGD,QAAT,GAAoB,CADN,EAEdG,SAAS,GAAGD,WAAZ,GAA0B,CAFZ,CAAhB,CAAA;;KAIA,KAAK,IAAIjV,CAAC,GAAG+U,QAAb,EAAuB/U,CAAC,IAAIgV,MAA5B,EAAoChV,CAAC,EAArC,EAAyC;OACvC,KAAK,IAAIC,CAAC,GAAGgV,WAAb,EAA0BhV,CAAC,IAAIiV,SAA/B,EAA0CjV,CAAC,EAA3C,EAA+C;CAC7C0M,QAAAA,SAAS,CAAC6C,GAAV,CAAcxP,CAAC,GAAG+U,QAAlB,EAA4B9U,CAAC,GAAGgV,WAAhC,EAA6C,IAAK1G,CAAAA,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAA7C,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0M,SAAP,CAAA;CACD,GAAA;;CAEDuV,EAAAA,YAAY,CAACC,OAAD,EAAUlN,WAAV,EAAuBC,SAAvB,EAAkC;CAC5C,IAAA,IAAID,WAAW,KAAK3T,SAApB,EAA+B2T,WAAW,GAAG,CAAd,CAAA;KAC/B,IAAIC,SAAS,KAAK5T,SAAlB,EAA6B4T,SAAS,GAAG,IAAA,CAAKhH,OAAL,GAAe,CAA3B,CAAA;;KAC7B,IACE+G,WAAW,GAAGC,SAAd,IACAD,WAAW,GAAG,CADd,IAEAA,WAAW,IAAI,KAAK/G,OAFpB,IAGAgH,SAAS,GAAG,CAHZ,IAIAA,SAAS,IAAI,IAAKhH,CAAAA,OALpB,EAME;CACA,MAAA,MAAM,IAAI1H,UAAJ,CAAe,uBAAf,CAAN,CAAA;CACD,KAAA;;CAED,IAAA,IAAImG,SAAS,GAAG,IAAI0C,MAAJ,CAAW8S,OAAO,CAAC9jB,MAAnB,EAA2B6W,SAAS,GAAGD,WAAZ,GAA0B,CAArD,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAIjV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmiB,OAAO,CAAC9jB,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;OACvC,KAAK,IAAIC,CAAC,GAAGgV,WAAb,EAA0BhV,CAAC,IAAIiV,SAA/B,EAA0CjV,CAAC,EAA3C,EAA+C;CAC7C,QAAA,IAAIkiB,OAAO,CAACniB,CAAD,CAAP,GAAa,CAAb,IAAkBmiB,OAAO,CAACniB,CAAD,CAAP,IAAc,IAAA,CAAKiO,IAAzC,EAA+C;WAC7C,MAAM,IAAIzH,UAAJ,CAAgB,CAAA,wBAAA,EAA0B2b,OAAO,CAACniB,CAAD,CAAI,CAAA,CAArD,CAAN,CAAA;CACD,SAAA;;CACD2M,QAAAA,SAAS,CAAC6C,GAAV,CAAcxP,CAAd,EAAiBC,CAAC,GAAGgV,WAArB,EAAkC,IAAK1G,CAAAA,GAAL,CAAS4T,OAAO,CAACniB,CAAD,CAAhB,EAAqBC,CAArB,CAAlC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0M,SAAP,CAAA;CACD,GAAA;;CAEDyV,EAAAA,eAAe,CAACD,OAAD,EAAUpN,QAAV,EAAoBC,MAApB,EAA4B;CACzC,IAAA,IAAID,QAAQ,KAAKzT,SAAjB,EAA4ByT,QAAQ,GAAG,CAAX,CAAA;KAC5B,IAAIC,MAAM,KAAK1T,SAAf,EAA0B0T,MAAM,GAAG,IAAA,CAAK/G,IAAL,GAAY,CAArB,CAAA;;KAC1B,IACE8G,QAAQ,GAAGC,MAAX,IACAD,QAAQ,GAAG,CADX,IAEAA,QAAQ,IAAI,KAAK9G,IAFjB,IAGA+G,MAAM,GAAG,CAHT,IAIAA,MAAM,IAAI,IAAK/G,CAAAA,IALjB,EAME;CACA,MAAA,MAAM,IAAIzH,UAAJ,CAAe,uBAAf,CAAN,CAAA;CACD,KAAA;;CAED,IAAA,IAAImG,SAAS,GAAG,IAAI0C,MAAJ,CAAW2F,MAAM,GAAGD,QAAT,GAAoB,CAA/B,EAAkCoN,OAAO,CAAC9jB,MAA1C,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmiB,OAAO,CAAC9jB,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;OACvC,KAAK,IAAIC,CAAC,GAAG8U,QAAb,EAAuB9U,CAAC,IAAI+U,MAA5B,EAAoC/U,CAAC,EAArC,EAAyC;CACvC,QAAA,IAAIkiB,OAAO,CAACniB,CAAD,CAAP,GAAa,CAAb,IAAkBmiB,OAAO,CAACniB,CAAD,CAAP,IAAc,IAAA,CAAKkO,OAAzC,EAAkD;WAChD,MAAM,IAAI1H,UAAJ,CAAgB,CAAA,2BAAA,EAA6B2b,OAAO,CAACniB,CAAD,CAAI,CAAA,CAAxD,CAAN,CAAA;CACD,SAAA;;CACD2M,QAAAA,SAAS,CAAC6C,GAAV,CAAcvP,CAAC,GAAG8U,QAAlB,EAA4B/U,CAA5B,EAA+B,IAAKuO,CAAAA,GAAL,CAAStO,CAAT,EAAYkiB,OAAO,CAACniB,CAAD,CAAnB,CAA/B,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO2M,SAAP,CAAA;CACD,GAAA;;CAEDoN,EAAAA,YAAY,CAACvN,MAAD,EAASuI,QAAT,EAAmBE,WAAnB,EAAgC;CAC1CzI,IAAAA,MAAM,GAAG6C,MAAM,CAACI,WAAP,CAAmBjD,MAAnB,CAAT,CAAA;;CACA,IAAA,IAAIA,MAAM,CAAC8I,OAAP,EAAJ,EAAsB;CACpB,MAAA,OAAO,IAAP,CAAA;CACD,KAAA;;KACD,IAAIN,MAAM,GAAGD,QAAQ,GAAGvI,MAAM,CAACyB,IAAlB,GAAyB,CAAtC,CAAA;KACA,IAAIiH,SAAS,GAAGD,WAAW,GAAGzI,MAAM,CAAC0B,OAArB,GAA+B,CAA/C,CAAA;KACA4G,UAAU,CAAC,IAAD,EAAOC,QAAP,EAAiBC,MAAjB,EAAyBC,WAAzB,EAAsCC,SAAtC,CAAV,CAAA;;CACA,IAAA,KAAK,IAAIlV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACyB,IAA3B,EAAiCjO,CAAC,EAAlC,EAAsC;CACpC,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,MAAM,CAAC0B,OAA3B,EAAoCjO,CAAC,EAArC,EAAyC;CACvC,QAAA,IAAA,CAAKuP,GAAL,CAASuF,QAAQ,GAAG/U,CAApB,EAAuBiV,WAAW,GAAGhV,CAArC,EAAwCuM,MAAM,CAAC+B,GAAP,CAAWvO,CAAX,EAAcC,CAAd,CAAxC,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDoiB,EAAAA,SAAS,CAAC1N,UAAD,EAAaE,aAAb,EAA4B;CACnCH,IAAAA,eAAe,CAAC,IAAD,EAAOC,UAAP,CAAf,CAAA;CACAC,IAAAA,kBAAkB,CAAC,IAAD,EAAOC,aAAP,CAAlB,CAAA;CACA,IAAA,IAAIlI,SAAS,GAAG,IAAI0C,MAAJ,CAAWsF,UAAU,CAACtW,MAAtB,EAA8BwW,aAAa,CAACxW,MAA5C,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2U,UAAU,CAACtW,MAA/B,EAAuC2B,CAAC,EAAxC,EAA4C;CAC1C,MAAA,IAAIsiB,QAAQ,GAAG3N,UAAU,CAAC3U,CAAD,CAAzB,CAAA;;CACA,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4U,aAAa,CAACxW,MAAlC,EAA0C4B,CAAC,EAA3C,EAA+C;CAC7C,QAAA,IAAIsiB,WAAW,GAAG1N,aAAa,CAAC5U,CAAD,CAA/B,CAAA;CACA0M,QAAAA,SAAS,CAAC6C,GAAV,CAAcxP,CAAd,EAAiBC,CAAjB,EAAoB,IAAA,CAAKsO,GAAL,CAAS+T,QAAT,EAAmBC,WAAnB,CAApB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO5V,SAAP,CAAA;CACD,GAAA;;CAED6V,EAAAA,KAAK,GAAG;KACN,IAAI1gB,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAAS,IAAA,CAAKmM,IAAd,EAAoB,IAAKC,CAAAA,OAAzB,CAAV,CAAA;KACA,IAAIsU,KAAK,GAAG,CAAZ,CAAA;;KACA,KAAK,IAAIxiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8B,GAApB,EAAyB9B,CAAC,EAA1B,EAA8B;CAC5BwiB,MAAAA,KAAK,IAAI,IAAKjU,CAAAA,GAAL,CAASvO,CAAT,EAAYA,CAAZ,CAAT,CAAA;CACD,KAAA;;CACD,IAAA,OAAOwiB,KAAP,CAAA;CACD,GAAA;;CAEDlJ,EAAAA,KAAK,GAAG;KACN,IAAI3M,SAAS,GAAG,IAAI0C,MAAJ,CAAW,KAAKpB,IAAhB,EAAsB,IAAKC,CAAAA,OAA3B,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAItB,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,IAAA,CAAKqB,IAA7B,EAAmCrB,GAAG,EAAtC,EAA0C;CACxC,MAAA,KAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,IAAA,CAAKqB,OAAnC,EAA4CrB,MAAM,EAAlD,EAAsD;CACpDF,QAAAA,SAAS,CAAC6C,GAAV,CAAc5C,GAAd,EAAmBC,MAAnB,EAA2B,IAAA,CAAK0B,GAAL,CAAS3B,GAAT,EAAcC,MAAd,CAA3B,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAOF,SAAP,CAAA;CACD,GAAA;;GAED6I,GAAG,CAAC+F,EAAD,EAAK;CACN,IAAA,QAAQA,EAAR;CACE,MAAA,KAAK,KAAL;SACE,OAAOhG,QAAQ,CAAC,IAAD,CAAf,CAAA;;CACF,MAAA,KAAK,QAAL;SACE,OAAOE,WAAW,CAAC,IAAD,CAAlB,CAAA;;CACF,MAAA,KAAKnU,SAAL;SACE,OAAOoU,MAAM,CAAC,IAAD,CAAb,CAAA;;CACF,MAAA;CACE,QAAA,MAAM,IAAIxW,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CARJ,KAAA;CAUD,GAAA;;GAEDkH,OAAO,CAAClH,EAAD,EAAK;CACV,IAAA,QAAQA,EAAR;CACE,MAAA,KAAK,KAAL;SACE,OAAO3F,YAAY,CAAC,IAAD,CAAnB,CAAA;;CACF,MAAA,KAAK,QAAL;SACE,OAAOC,eAAe,CAAC,IAAD,CAAtB,CAAA;;CACF,MAAA,KAAKvU,SAAL;SACE,OAAOwU,UAAU,CAAC,IAAD,CAAjB,CAAA;;CACF,MAAA;CACE,QAAA,MAAM,IAAI5W,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CARJ,KAAA;CAUD,GAAA;;GAED1V,IAAI,CAAC0V,EAAD,EAAK;CACP,IAAA,MAAM/F,GAAG,GAAG,IAAA,CAAKA,GAAL,CAAS+F,EAAT,CAAZ,CAAA;;CACA,IAAA,QAAQA,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;CACV,UAAA,KAAK,IAAIvb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;CAClCwV,YAAAA,GAAG,CAACxV,CAAD,CAAH,IAAU,KAAKkO,OAAf,CAAA;CACD,WAAA;;CACD,UAAA,OAAOsH,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;CACb,UAAA,KAAK,IAAIxV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKkO,OAAzB,EAAkClO,CAAC,EAAnC,EAAuC;CACrCwV,YAAAA,GAAG,CAACxV,CAAD,CAAH,IAAU,KAAKiO,IAAf,CAAA;CACD,WAAA;;CACD,UAAA,OAAOuH,GAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAKlU,SAAL;SACE,OAAOkU,GAAG,GAAG,IAAA,CAAKc,IAAlB,CAAA;;CACF,MAAA;CACE,QAAA,MAAM,IAAIpX,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CAhBJ,KAAA;CAkBD,GAAA;;GAEDtF,QAAQ,CAACsF,EAAD,EAAmB;KAAA,IAAdrd,OAAc,uEAAJ,EAAI,CAAA;;CACzB,IAAA,IAAI,OAAOqd,EAAP,KAAc,QAAlB,EAA4B;CAC1Brd,MAAAA,OAAO,GAAGqd,EAAV,CAAA;CACAA,MAAAA,EAAE,GAAGja,SAAL,CAAA;CACD,KAAA;;CACD,IAAA,IAAI,OAAOpD,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEiF,MAAAA,QAAQ,GAAG,IAAb;CAAmBC,MAAAA,IAAI,GAAG,IAAA,CAAKA,IAAL,CAAU0V,EAAV,CAAA;CAA1B,KAAA,GAA4Crd,OAAlD,CAAA;;CACA,IAAA,IAAI,OAAO0H,QAAP,KAAoB,SAAxB,EAAmC;CACjC,MAAA,MAAM,IAAIjF,SAAJ,CAAc,4BAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,QAAQ4a,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;CACV,UAAA,IAAI,CAACjc,UAAU,CAACuG,IAAD,CAAf,EAAuB;CACrB,YAAA,MAAM,IAAIlF,SAAJ,CAAc,uBAAd,CAAN,CAAA;CACD,WAAA;;CACD,UAAA,OAAOoV,aAAa,CAAC,IAAD,EAAOnQ,QAAP,EAAiBC,IAAjB,CAApB,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;CACb,UAAA,IAAI,CAACvG,UAAU,CAACuG,IAAD,CAAf,EAAuB;CACrB,YAAA,MAAM,IAAIlF,SAAJ,CAAc,uBAAd,CAAN,CAAA;CACD,WAAA;;CACD,UAAA,OAAOyV,gBAAgB,CAAC,IAAD,EAAOxQ,QAAP,EAAiBC,IAAjB,CAAvB,CAAA;CACD,SAAA;;CACD,MAAA,KAAKvE,SAAL;CAAgB,QAAA;CACd,UAAA,IAAI,OAAOuE,IAAP,KAAgB,QAApB,EAA8B;CAC5B,YAAA,MAAM,IAAIlF,SAAJ,CAAc,uBAAd,CAAN,CAAA;CACD,WAAA;;CACD,UAAA,OAAO0V,WAAW,CAAC,IAAD,EAAOzQ,QAAP,EAAiBC,IAAjB,CAAlB,CAAA;CACD,SAAA;;CACD,MAAA;CACE,QAAA,MAAM,IAAI3G,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CApBJ,KAAA;CAsBD,GAAA;;CAEDmH,EAAAA,iBAAiB,CAACnH,EAAD,EAAKrd,OAAL,EAAc;CAC7B,IAAA,IAAI,OAAOqd,EAAP,KAAc,QAAlB,EAA4B;CAC1Brd,MAAAA,OAAO,GAAGqd,EAAV,CAAA;CACAA,MAAAA,EAAE,GAAGja,SAAL,CAAA;CACD,KAAA;;KACD,MAAM2U,QAAQ,GAAG,IAAKA,CAAAA,QAAL,CAAcsF,EAAd,EAAkBrd,OAAlB,CAAjB,CAAA;;KACA,IAAIqd,EAAE,KAAKja,SAAX,EAAsB;CACpB,MAAA,OAAOtC,IAAI,CAAC8D,IAAL,CAAUmT,QAAV,CAAP,CAAA;CACD,KAFD,MAEO;CACL,MAAA,KAAK,IAAIjW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiW,QAAQ,CAAC5X,MAA7B,EAAqC2B,CAAC,EAAtC,EAA0C;CACxCiW,QAAAA,QAAQ,CAACjW,CAAD,CAAR,GAAchB,IAAI,CAAC8D,IAAL,CAAUmT,QAAQ,CAACjW,CAAD,CAAlB,CAAd,CAAA;CACD,OAAA;;CACD,MAAA,OAAOiW,QAAP,CAAA;CACD,KAAA;CACF,GAAA;;GAED0M,MAAM,CAACpH,EAAD,EAAmB;KAAA,IAAdrd,OAAc,uEAAJ,EAAI,CAAA;;CACvB,IAAA,IAAI,OAAOqd,EAAP,KAAc,QAAlB,EAA4B;CAC1Brd,MAAAA,OAAO,GAAGqd,EAAV,CAAA;CACAA,MAAAA,EAAE,GAAGja,SAAL,CAAA;CACD,KAAA;;CACD,IAAA,IAAI,OAAOpD,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;KACD,MAAM;CAAEgiB,MAAAA,MAAM,GAAG,IAAA,CAAK9c,IAAL,CAAU0V,EAAV,CAAA;CAAX,KAAA,GAA6Brd,OAAnC,CAAA;;CACA,IAAA,QAAQqd,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;CACV,UAAA,IAAI,CAACjc,UAAU,CAACqjB,MAAD,CAAf,EAAyB;CACvB,YAAA,MAAM,IAAIhiB,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,WAAA;;CACD4V,UAAAA,WAAW,CAAC,IAAD,EAAOoM,MAAP,CAAX,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;CACb,UAAA,IAAI,CAACrjB,UAAU,CAACqjB,MAAD,CAAf,EAAyB;CACvB,YAAA,MAAM,IAAIhiB,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,WAAA;;CACD6V,UAAAA,cAAc,CAAC,IAAD,EAAOmM,MAAP,CAAd,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAKrhB,SAAL;CAAgB,QAAA;CACd,UAAA,IAAI,OAAOqhB,MAAP,KAAkB,QAAtB,EAAgC;CAC9B,YAAA,MAAM,IAAIhiB,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,WAAA;;CACD8V,UAAAA,SAAS,CAAC,IAAD,EAAOkM,MAAP,CAAT,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA;CACE,QAAA,MAAM,IAAIzjB,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CAvBJ,KAAA;CAyBD,GAAA;;GAED5E,KAAK,CAAC4E,EAAD,EAAmB;KAAA,IAAdrd,OAAc,uEAAJ,EAAI,CAAA;;CACtB,IAAA,IAAI,OAAOqd,EAAP,KAAc,QAAlB,EAA4B;CAC1Brd,MAAAA,OAAO,GAAGqd,EAAV,CAAA;CACAA,MAAAA,EAAE,GAAGja,SAAL,CAAA;CACD,KAAA;;CACD,IAAA,IAAI,OAAOpD,OAAP,KAAmB,QAAvB,EAAiC;CAC/B,MAAA,MAAM,IAAIyC,SAAJ,CAAc,2BAAd,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,IAAIgW,KAAK,GAAGzY,OAAO,CAACyY,KAApB,CAAA;;CACA,IAAA,QAAQ4E,EAAR;CACE,MAAA,KAAK,KAAL;CAAY,QAAA;WACV,IAAI5E,KAAK,KAAKrV,SAAd,EAAyB;CACvBqV,YAAAA,KAAK,GAAGD,aAAa,CAAC,IAAD,CAArB,CAAA;CACD,WAFD,MAEO,IAAI,CAACpX,UAAU,CAACqX,KAAD,CAAf,EAAwB;CAC7B,YAAA,MAAM,IAAIhW,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,WAAA;;CACDiW,UAAAA,UAAU,CAAC,IAAD,EAAOD,KAAP,CAAV,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAK,QAAL;CAAe,QAAA;WACb,IAAIA,KAAK,KAAKrV,SAAd,EAAyB;CACvBqV,YAAAA,KAAK,GAAGE,gBAAgB,CAAC,IAAD,CAAxB,CAAA;CACD,WAFD,MAEO,IAAI,CAACvX,UAAU,CAACqX,KAAD,CAAf,EAAwB;CAC7B,YAAA,MAAM,IAAIhW,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,WAAA;;CACDmW,UAAAA,aAAa,CAAC,IAAD,EAAOH,KAAP,CAAb,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA,KAAKrV,SAAL;CAAgB,QAAA;WACd,IAAIqV,KAAK,KAAKrV,SAAd,EAAyB;CACvBqV,YAAAA,KAAK,GAAGI,WAAW,CAAC,IAAD,CAAnB,CAAA;CACD,WAFD,MAEO,IAAI,OAAOJ,KAAP,KAAiB,QAArB,EAA+B;CACpC,YAAA,MAAM,IAAIhW,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,WAAA;;CACDsW,UAAAA,QAAQ,CAAC,IAAD,EAAON,KAAP,CAAR,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACD,SAAA;;CACD,MAAA;CACE,QAAA,MAAM,IAAIzX,KAAJ,CAAW,CAAkBqc,gBAAAA,EAAAA,EAAG,EAAhC,CAAN,CAAA;CA7BJ,KAAA;CA+BD,GAAA;;GAEDpc,QAAQ,CAACjB,OAAD,EAAU;CAChB,IAAA,OAAOwP,wBAAwB,CAAC,IAAD,EAAOxP,OAAP,CAA/B,CAAA;CACD,GAAA;;CAl8CyB,CAAA;CAq8C5BkR,cAAc,CAAC/P,SAAf,CAAyBgZ,KAAzB,GAAiC,QAAjC,CAAA;;CACA,IAAI,OAAOuK,MAAP,KAAkB,WAAtB,EAAmC;GACjCxT,cAAc,CAAC/P,SAAf,CAAyBujB,MAAM,CAACC,GAAP,CAAW,4BAAX,CAAzB,CAAA,GACEpV,aADF,CAAA;CAED,CAAA;;CAED,SAASuU,cAAT,CAAwBtiB,CAAxB,EAA2BS,CAA3B,EAA8B;GAC5B,OAAOT,CAAC,GAAGS,CAAX,CAAA;CACD;;;CAGDiP,cAAc,CAACwI,MAAf,GAAwBxI,cAAc,CAACuI,IAAvC,CAAA;CACAvI,cAAc,CAAC0T,SAAf,GAA2B1T,cAAc,CAACyI,OAA1C,CAAA;CACAzI,cAAc,CAAC2T,QAAf,GAA0B3T,cAAc,CAAC4I,IAAzC,CAAA;CACA5I,cAAc,CAAC/P,SAAf,CAAyB0jB,QAAzB,GAAoC3T,cAAc,CAAC/P,SAAf,CAAyB2Y,IAA7D,CAAA;CACA5I,cAAc,CAAC4T,QAAf,GAA0B5T,cAAc,CAAC2I,GAAzC,CAAA;CACA3I,cAAc,CAAC/P,SAAf,CAAyB4jB,MAAzB,GAAkC7T,cAAc,CAAC/P,SAAf,CAAyB2a,GAA3D,CAAA;CACA5K,cAAc,CAAC/P,SAAf,CAAyB6jB,aAAzB,GACE9T,cAAc,CAAC/P,SAAf,CAAyBmiB,gBAD3B,CAAA;CAGe,MAAMnS,MAAN,SAAqBD,cAArB,CAAoC;CACjDtB,EAAAA,WAAW,CAACqV,KAAD,EAAQC,QAAR,EAAkB;CAC3B,IAAA,KAAA,EAAA,CAAA;;CACA,IAAA,IAAI/T,MAAM,CAAC+I,QAAP,CAAgB+K,KAAhB,CAAJ,EAA4B;CAC1B;OACA,OAAOA,KAAK,CAAC7J,KAAN,EAAP,CAAA;MAFF,MAGO,IAAI9X,MAAM,CAACyL,SAAP,CAAiBkW,KAAjB,CAA2BA,IAAAA,KAAK,IAAI,CAAxC,EAA2C;CAChD;OACA,IAAKhc,CAAAA,IAAL,GAAY,EAAZ,CAAA;;OACA,IAAI3F,MAAM,CAACyL,SAAP,CAAiBmW,QAAjB,CAA8BA,IAAAA,QAAQ,IAAI,CAA9C,EAAiD;SAC/C,KAAK,IAAIpjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmjB,KAApB,EAA2BnjB,CAAC,EAA5B,EAAgC;WAC9B,IAAKmH,CAAAA,IAAL,CAAUf,IAAV,CAAe,IAAI1H,YAAJ,CAAiB0kB,QAAjB,CAAf,CAAA,CAAA;CACD,SAAA;CACF,OAJD,MAIO;CACL,QAAA,MAAM,IAAIziB,SAAJ,CAAc,qCAAd,CAAN,CAAA;CACD,OAAA;CACF,KAVM,MAUA,IAAIrB,UAAU,CAAC6jB,KAAD,CAAd,EAAuB;CAC5B;OACA,MAAME,SAAS,GAAGF,KAAlB,CAAA;OACAA,KAAK,GAAGE,SAAS,CAAChlB,MAAlB,CAAA;OACA+kB,QAAQ,GAAGD,KAAK,GAAGE,SAAS,CAAC,CAAD,CAAT,CAAahlB,MAAhB,GAAyB,CAAzC,CAAA;;CACA,MAAA,IAAI,OAAO+kB,QAAP,KAAoB,QAAxB,EAAkC;CAChC,QAAA,MAAM,IAAIziB,SAAJ,CACJ,mDADI,CAAN,CAAA;CAGD,OAAA;;OACD,IAAKwG,CAAAA,IAAL,GAAY,EAAZ,CAAA;;OACA,KAAK,IAAInH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmjB,KAApB,EAA2BnjB,CAAC,EAA5B,EAAgC;SAC9B,IAAIqjB,SAAS,CAACrjB,CAAD,CAAT,CAAa3B,MAAb,KAAwB+kB,QAA5B,EAAsC;CACpC,UAAA,MAAM,IAAI5c,UAAJ,CAAe,+BAAf,CAAN,CAAA;CACD,SAAA;;CACD,QAAA,IAAA,CAAKW,IAAL,CAAUf,IAAV,CAAe1H,YAAY,CAACP,IAAb,CAAkBklB,SAAS,CAACrjB,CAAD,CAA3B,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAjBM,MAiBA;CACL,MAAA,MAAM,IAAIW,SAAJ,CACJ,sDADI,CAAN,CAAA;CAGD,KAAA;;KACD,IAAKsN,CAAAA,IAAL,GAAYkV,KAAZ,CAAA;KACA,IAAKjV,CAAAA,OAAL,GAAekV,QAAf,CAAA;CACD,GAAA;;CAED5T,EAAAA,GAAG,CAAC8S,QAAD,EAAWC,WAAX,EAAwBhjB,KAAxB,EAA+B;CAChC,IAAA,IAAA,CAAK4H,IAAL,CAAUmb,QAAV,CAAoBC,CAAAA,WAApB,IAAmChjB,KAAnC,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDgP,EAAAA,GAAG,CAAC+T,QAAD,EAAWC,WAAX,EAAwB;CACzB,IAAA,OAAO,KAAKpb,IAAL,CAAUmb,QAAV,CAAA,CAAoBC,WAApB,CAAP,CAAA;CACD,GAAA;;GAEDe,SAAS,CAACzkB,KAAD,EAAQ;CACfsV,IAAAA,aAAa,CAAC,IAAD,EAAOtV,KAAP,CAAb,CAAA;CACA,IAAA,IAAA,CAAKsI,IAAL,CAAUoc,MAAV,CAAiB1kB,KAAjB,EAAwB,CAAxB,CAAA,CAAA;KACA,IAAKoP,CAAAA,IAAL,IAAa,CAAb,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDuV,EAAAA,MAAM,CAAC3kB,KAAD,EAAQJ,KAAR,EAAe;KACnB,IAAIA,KAAK,KAAK6C,SAAd,EAAyB;CACvB7C,MAAAA,KAAK,GAAGI,KAAR,CAAA;OACAA,KAAK,GAAG,KAAKoP,IAAb,CAAA;CACD,KAAA;;CACDkG,IAAAA,aAAa,CAAC,IAAD,EAAOtV,KAAP,EAAc,IAAd,CAAb,CAAA;KACAJ,KAAK,GAAGC,YAAY,CAACP,IAAb,CAAkBmW,cAAc,CAAC,IAAD,EAAO7V,KAAP,CAAhC,CAAR,CAAA;KACA,IAAK0I,CAAAA,IAAL,CAAUoc,MAAV,CAAiB1kB,KAAjB,EAAwB,CAAxB,EAA2BJ,KAA3B,CAAA,CAAA;KACA,IAAKwP,CAAAA,IAAL,IAAa,CAAb,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;GAEDwV,YAAY,CAAC5kB,KAAD,EAAQ;CAClBwV,IAAAA,gBAAgB,CAAC,IAAD,EAAOxV,KAAP,CAAhB,CAAA;;CACA,IAAA,KAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,MAAM0jB,MAAM,GAAG,IAAIhlB,YAAJ,CAAiB,IAAKwP,CAAAA,OAAL,GAAe,CAAhC,CAAf,CAAA;;OACA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpB,KAApB,EAA2BoB,CAAC,EAA5B,EAAgC;SAC9ByjB,MAAM,CAACzjB,CAAD,CAAN,GAAY,IAAA,CAAKkH,IAAL,CAAUnH,CAAV,CAAaC,CAAAA,CAAb,CAAZ,CAAA;CACD,OAAA;;CACD,MAAA,KAAK,IAAIA,CAAC,GAAGpB,KAAK,GAAG,CAArB,EAAwBoB,CAAC,GAAG,IAAKiO,CAAAA,OAAjC,EAA0CjO,CAAC,EAA3C,EAA+C;CAC7CyjB,QAAAA,MAAM,CAACzjB,CAAC,GAAG,CAAL,CAAN,GAAgB,IAAKkH,CAAAA,IAAL,CAAUnH,CAAV,CAAaC,CAAAA,CAAb,CAAhB,CAAA;CACD,OAAA;;CACD,MAAA,IAAA,CAAKkH,IAAL,CAAUnH,CAAV,CAAA,GAAe0jB,MAAf,CAAA;CACD,KAAA;;KACD,IAAKxV,CAAAA,OAAL,IAAgB,CAAhB,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDyV,EAAAA,SAAS,CAAC9kB,KAAD,EAAQJ,KAAR,EAAe;CACtB,IAAA,IAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;CAChCA,MAAAA,KAAK,GAAGI,KAAR,CAAA;OACAA,KAAK,GAAG,KAAKqP,OAAb,CAAA;CACD,KAAA;;CACDmG,IAAAA,gBAAgB,CAAC,IAAD,EAAOxV,KAAP,EAAc,IAAd,CAAhB,CAAA;CACAJ,IAAAA,KAAK,GAAGgW,iBAAiB,CAAC,IAAD,EAAOhW,KAAP,CAAzB,CAAA;;CACA,IAAA,KAAK,IAAIuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,IAAA,CAAKiO,IAAzB,EAA+BjO,CAAC,EAAhC,EAAoC;OAClC,MAAM0jB,MAAM,GAAG,IAAIhlB,YAAJ,CAAiB,IAAKwP,CAAAA,OAAL,GAAe,CAAhC,CAAf,CAAA;OACA,IAAIjO,CAAC,GAAG,CAAR,CAAA;;CACA,MAAA,OAAOA,CAAC,GAAGpB,KAAX,EAAkBoB,CAAC,EAAnB,EAAuB;SACrByjB,MAAM,CAACzjB,CAAD,CAAN,GAAY,IAAA,CAAKkH,IAAL,CAAUnH,CAAV,CAAaC,CAAAA,CAAb,CAAZ,CAAA;CACD,OAAA;;OACDyjB,MAAM,CAACzjB,CAAC,EAAF,CAAN,GAAcxB,KAAK,CAACuB,CAAD,CAAnB,CAAA;;OACA,OAAOC,CAAC,GAAG,IAAKiO,CAAAA,OAAL,GAAe,CAA1B,EAA6BjO,CAAC,EAA9B,EAAkC;CAChCyjB,QAAAA,MAAM,CAACzjB,CAAD,CAAN,GAAY,IAAKkH,CAAAA,IAAL,CAAUnH,CAAV,CAAaC,CAAAA,CAAC,GAAG,CAAjB,CAAZ,CAAA;CACD,OAAA;;CACD,MAAA,IAAA,CAAKkH,IAAL,CAAUnH,CAAV,CAAA,GAAe0jB,MAAf,CAAA;CACD,KAAA;;KACD,IAAKxV,CAAAA,OAAL,IAAgB,CAAhB,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CA3GgD,CAAA;CA8GnDiB,qBAAqB,CAACC,cAAD,EAAiBC,MAAjB,CAArB;;CCzmDe,MAAMuU,QAAN,SAAuBxU,cAAvB,CAAsC;CACnDtB,EAAAA,WAAW,CAACtB,MAAD,EAASyB,IAAT,EAAeC,OAAf,EAAwB;CACjC,IAAA,KAAA,EAAA,CAAA;KACA,IAAK1B,CAAAA,MAAL,GAAcA,MAAd,CAAA;KACA,IAAKyB,CAAAA,IAAL,GAAYA,IAAZ,CAAA;KACA,IAAKC,CAAAA,OAAL,GAAeA,OAAf,CAAA;CACD,GAAA;;CANkD;;CCAtC,MAAM2V,mBAAN,SAAkCD,QAAlC,CAA2C;GACxD9V,WAAW,CAACtB,MAAD,EAAS;KAClB,KAAMA,CAAAA,MAAN,EAAcA,MAAM,CAAC0B,OAArB,EAA8B1B,MAAM,CAACyB,IAArC,CAAA,CAAA;CACD,GAAA;;CAEDuB,EAAAA,GAAG,CAAC8S,QAAD,EAAWC,WAAX,EAAwBhjB,KAAxB,EAA+B;KAChC,IAAKiN,CAAAA,MAAL,CAAYgD,GAAZ,CAAgB+S,WAAhB,EAA6BD,QAA7B,EAAuC/iB,KAAvC,CAAA,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDgP,EAAAA,GAAG,CAAC+T,QAAD,EAAWC,WAAX,EAAwB;KACzB,OAAO,IAAA,CAAK/V,MAAL,CAAY+B,GAAZ,CAAgBgU,WAAhB,EAA6BD,QAA7B,CAAP,CAAA;CACD,GAAA;;CAZuD;;CCA3C,MAAMwB,eAAN,SAA8B1U,cAA9B,CAA6C;GAC1DtB,WAAW,CAAC3G,IAAD,EAAO;CAChB,IAAA,KAAA,EAAA,CAAA;KACA,IAAKA,CAAAA,IAAL,GAAYA,IAAZ,CAAA;CACA,IAAA,IAAA,CAAK8G,IAAL,GAAY9G,IAAI,CAAC9I,MAAjB,CAAA;CACA,IAAA,IAAA,CAAK6P,OAAL,GAAe/G,IAAI,CAAC,CAAD,CAAJ,CAAQ9I,MAAvB,CAAA;CACD,GAAA;;CAEDmR,EAAAA,GAAG,CAAC8S,QAAD,EAAWC,WAAX,EAAwBhjB,KAAxB,EAA+B;CAChC,IAAA,IAAA,CAAK4H,IAAL,CAAUmb,QAAV,CAAoBC,CAAAA,WAApB,IAAmChjB,KAAnC,CAAA;CACA,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEDgP,EAAAA,GAAG,CAAC+T,QAAD,EAAWC,WAAX,EAAwB;CACzB,IAAA,OAAO,KAAKpb,IAAL,CAAUmb,QAAV,CAAA,CAAoBC,WAApB,CAAP,CAAA;CACD,GAAA;;CAfyD;;CCC7C,MAAMwB,eAAN,CAAsB;GACnCjW,WAAW,CAACtB,MAAD,EAAS;CAClBA,IAAAA,MAAM,GAAGsX,eAAe,CAACrU,WAAhB,CAA4BjD,MAA5B,CAAT,CAAA;CAEA,IAAA,IAAIwX,EAAE,GAAGxX,MAAM,CAAC8M,KAAP,EAAT,CAAA;CACA,IAAA,IAAIrL,IAAI,GAAG+V,EAAE,CAAC/V,IAAd,CAAA;CACA,IAAA,IAAIC,OAAO,GAAG8V,EAAE,CAAC9V,OAAjB,CAAA;CACA,IAAA,IAAI+V,WAAW,GAAG,IAAIvlB,YAAJ,CAAiBuP,IAAjB,CAAlB,CAAA;KACA,IAAIiW,SAAS,GAAG,CAAhB,CAAA;CACA,IAAA,IAAIlkB,CAAJ,EAAOC,CAAP,EAAUmZ,CAAV,EAAaS,CAAb,EAAgB+C,CAAhB,EAAmBuH,CAAnB,EAAsBxO,CAAtB,CAAA;KACA,IAAIyO,MAAJ,EAAYC,IAAZ,CAAA;;KAEA,KAAKrkB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;CACzBikB,MAAAA,WAAW,CAACjkB,CAAD,CAAX,GAAiBA,CAAjB,CAAA;CACD,KAAA;;CAEDokB,IAAAA,MAAM,GAAG,IAAI1lB,YAAJ,CAAiBuP,IAAjB,CAAT,CAAA;;KAEA,KAAKhO,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiO,OAAhB,EAAyBjO,CAAC,EAA1B,EAA8B;OAC5B,KAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;SACzBokB,MAAM,CAACpkB,CAAD,CAAN,GAAYgkB,EAAE,CAACzV,GAAH,CAAOvO,CAAP,EAAUC,CAAV,CAAZ,CAAA;CACD,OAAA;;OAED,KAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;SACzBqkB,IAAI,GAAGrlB,IAAI,CAAC8C,GAAL,CAAS9B,CAAT,EAAYC,CAAZ,CAAP,CAAA;CACA2c,QAAAA,CAAC,GAAG,CAAJ,CAAA;;SACA,KAAKxD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiL,IAAhB,EAAsBjL,CAAC,EAAvB,EAA2B;CACzBwD,UAAAA,CAAC,IAAIoH,EAAE,CAACzV,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAegL,GAAAA,MAAM,CAAChL,CAAD,CAA1B,CAAA;CACD,SAAA;;CACDgL,QAAAA,MAAM,CAACpkB,CAAD,CAAN,IAAa4c,CAAb,CAAA;SACAoH,EAAE,CAACxU,GAAH,CAAOxP,CAAP,EAAUC,CAAV,EAAamkB,MAAM,CAACpkB,CAAD,CAAnB,CAAA,CAAA;CACD,OAAA;;CAED6Z,MAAAA,CAAC,GAAG5Z,CAAJ,CAAA;;CACA,MAAA,KAAKD,CAAC,GAAGC,CAAC,GAAG,CAAb,EAAgBD,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;CAC7B,QAAA,IAAIhB,IAAI,CAACqE,GAAL,CAAS+gB,MAAM,CAACpkB,CAAD,CAAf,CAAA,GAAsBhB,IAAI,CAACqE,GAAL,CAAS+gB,MAAM,CAACvK,CAAD,CAAf,CAA1B,EAA+C;CAC7CA,UAAAA,CAAC,GAAG7Z,CAAJ,CAAA;CACD,SAAA;CACF,OAAA;;OAED,IAAI6Z,CAAC,KAAK5Z,CAAV,EAAa;SACX,KAAKmZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGlL,OAAhB,EAAyBkL,CAAC,EAA1B,EAA8B;WAC5B+K,CAAC,GAAGH,EAAE,CAACzV,GAAH,CAAOsL,CAAP,EAAUT,CAAV,CAAJ,CAAA;CACA4K,UAAAA,EAAE,CAACxU,GAAH,CAAOqK,CAAP,EAAUT,CAAV,EAAa4K,EAAE,CAACzV,GAAH,CAAOtO,CAAP,EAAUmZ,CAAV,CAAb,CAAA,CAAA;CACA4K,UAAAA,EAAE,CAACxU,GAAH,CAAOvP,CAAP,EAAUmZ,CAAV,EAAa+K,CAAb,CAAA,CAAA;CACD,SAAA;;CAEDxO,QAAAA,CAAC,GAAGsO,WAAW,CAACpK,CAAD,CAAf,CAAA;CACAoK,QAAAA,WAAW,CAACpK,CAAD,CAAX,GAAiBoK,WAAW,CAAChkB,CAAD,CAA5B,CAAA;CACAgkB,QAAAA,WAAW,CAAChkB,CAAD,CAAX,GAAiB0V,CAAjB,CAAA;SAEAuO,SAAS,GAAG,CAACA,SAAb,CAAA;CACD,OAAA;;CAED,MAAA,IAAIjkB,CAAC,GAAGgO,IAAJ,IAAY+V,EAAE,CAACzV,GAAH,CAAOtO,CAAP,EAAUA,CAAV,CAAA,KAAiB,CAAjC,EAAoC;CAClC,QAAA,KAAKD,CAAC,GAAGC,CAAC,GAAG,CAAb,EAAgBD,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;WAC7BgkB,EAAE,CAACxU,GAAH,CAAOxP,CAAP,EAAUC,CAAV,EAAa+jB,EAAE,CAACzV,GAAH,CAAOvO,CAAP,EAAUC,CAAV,IAAe+jB,EAAE,CAACzV,GAAH,CAAOtO,CAAP,EAAUA,CAAV,CAA5B,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;KAED,IAAKqkB,CAAAA,EAAL,GAAUN,EAAV,CAAA;KACA,IAAKC,CAAAA,WAAL,GAAmBA,WAAnB,CAAA;KACA,IAAKC,CAAAA,SAAL,GAAiBA,SAAjB,CAAA;CACD,GAAA;;CAEDK,EAAAA,UAAU,GAAG;KACX,IAAIpd,IAAI,GAAG,IAAA,CAAKmd,EAAhB,CAAA;CACA,IAAA,IAAIE,GAAG,GAAGrd,IAAI,CAAC+G,OAAf,CAAA;;KACA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGukB,GAApB,EAAyBvkB,CAAC,EAA1B,EAA8B;OAC5B,IAAIkH,IAAI,CAACoH,GAAL,CAAStO,CAAT,EAAYA,CAAZ,CAAmB,KAAA,CAAvB,EAA0B;CACxB,QAAA,OAAO,IAAP,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,KAAP,CAAA;CACD,GAAA;;GAEDwkB,KAAK,CAACllB,KAAD,EAAQ;CACXA,IAAAA,KAAK,GAAG8P,MAAM,CAACI,WAAP,CAAmBlQ,KAAnB,CAAR,CAAA;KAEA,IAAIykB,EAAE,GAAG,IAAA,CAAKM,EAAd,CAAA;CACA,IAAA,IAAIrW,IAAI,GAAG+V,EAAE,CAAC/V,IAAd,CAAA;;CAEA,IAAA,IAAIA,IAAI,KAAK1O,KAAK,CAAC0O,IAAnB,EAAyB;CACvB,MAAA,MAAM,IAAI/O,KAAJ,CAAU,2BAAV,CAAN,CAAA;CACD,KAAA;;KACD,IAAI,IAAA,CAAKqlB,UAAL,EAAJ,EAAuB;CACrB,MAAA,MAAM,IAAIrlB,KAAJ,CAAU,uBAAV,CAAN,CAAA;CACD,KAAA;;CAED,IAAA,IAAIwlB,KAAK,GAAGnlB,KAAK,CAAC2O,OAAlB,CAAA;CACA,IAAA,IAAIyW,CAAC,GAAGplB,KAAK,CAAC2iB,YAAN,CAAmB,IAAA,CAAK+B,WAAxB,EAAqC,CAArC,EAAwCS,KAAK,GAAG,CAAhD,CAAR,CAAA;CACA,IAAA,IAAIxW,OAAO,GAAG8V,EAAE,CAAC9V,OAAjB,CAAA;CACA,IAAA,IAAIlO,CAAJ,EAAOC,CAAP,EAAUmZ,CAAV,CAAA;;KAEA,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGlL,OAAhB,EAAyBkL,CAAC,EAA1B,EAA8B;CAC5B,MAAA,KAAKpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAb,EAAgBpZ,CAAC,GAAGkO,OAApB,EAA6BlO,CAAC,EAA9B,EAAkC;SAChC,KAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;CAC1B0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc0kB,CAAC,CAACpW,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,CAAA,GAAc+jB,EAAE,CAACzV,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAxC,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,KAAKA,CAAC,GAAGlL,OAAO,GAAG,CAAnB,EAAsBkL,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;OACjC,KAAKnZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;SAC1B0kB,CAAC,CAACnV,GAAF,CAAM4J,CAAN,EAASnZ,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,IAAc+jB,EAAE,CAACzV,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAA1B,CAAA,CAAA;CACD,OAAA;;OACD,KAAKpZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGoZ,CAAhB,EAAmBpZ,CAAC,EAApB,EAAwB;SACtB,KAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;CAC1B0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc0kB,CAAC,CAACpW,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,CAAA,GAAc+jB,EAAE,CAACzV,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAxC,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOuL,CAAP,CAAA;CACD,GAAA;;CAEc,EAAA,IAAXC,WAAW,GAAG;KAChB,IAAIzd,IAAI,GAAG,IAAA,CAAKmd,EAAhB,CAAA;;CACA,IAAA,IAAI,CAACnd,IAAI,CAAC2R,QAAL,EAAL,EAAsB;CACpB,MAAA,MAAM,IAAI5Z,KAAJ,CAAU,uBAAV,CAAN,CAAA;CACD,KAAA;;KACD,IAAI0lB,WAAW,GAAG,IAAA,CAAKV,SAAvB,CAAA;CACA,IAAA,IAAIM,GAAG,GAAGrd,IAAI,CAAC+G,OAAf,CAAA;;KACA,KAAK,IAAIjO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGukB,GAApB,EAAyBvkB,CAAC,EAA1B,EAA8B;OAC5B2kB,WAAW,IAAIzd,IAAI,CAACoH,GAAL,CAAStO,CAAT,EAAYA,CAAZ,CAAf,CAAA;CACD,KAAA;;CACD,IAAA,OAAO2kB,WAAP,CAAA;CACD,GAAA;;CAEwB,EAAA,IAArBC,qBAAqB,GAAG;KAC1B,IAAI1d,IAAI,GAAG,IAAA,CAAKmd,EAAhB,CAAA;CACA,IAAA,IAAIrW,IAAI,GAAG9G,IAAI,CAAC8G,IAAhB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAG/G,IAAI,CAAC+G,OAAnB,CAAA;KACA,IAAIyW,CAAC,GAAG,IAAItV,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAR,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;SAChC,IAAID,CAAC,GAAGC,CAAR,EAAW;CACT0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkH,IAAI,CAACoH,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAZ,CAAA,CAAA;CACD,SAFD,MAEO,IAAID,CAAC,KAAKC,CAAV,EAAa;CAClB0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAFM,MAEA;CACL0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0kB,CAAP,CAAA;CACD,GAAA;;CAEwB,EAAA,IAArBG,qBAAqB,GAAG;KAC1B,IAAI3d,IAAI,GAAG,IAAA,CAAKmd,EAAhB,CAAA;CACA,IAAA,IAAIrW,IAAI,GAAG9G,IAAI,CAAC8G,IAAhB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAG/G,IAAI,CAAC+G,OAAnB,CAAA;KACA,IAAIyW,CAAC,GAAG,IAAItV,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAR,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,IAApB,EAA0BjO,CAAC,EAA3B,EAA+B;OAC7B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiO,OAApB,EAA6BjO,CAAC,EAA9B,EAAkC;SAChC,IAAID,CAAC,IAAIC,CAAT,EAAY;CACV0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkH,IAAI,CAACoH,GAAL,CAASvO,CAAT,EAAYC,CAAZ,CAAZ,CAAA,CAAA;CACD,SAFD,MAEO;CACL0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0kB,CAAP,CAAA;CACD,GAAA;;CAEyB,EAAA,IAAtBI,sBAAsB,GAAG;CAC3B,IAAA,OAAOtd,KAAK,CAACtJ,IAAN,CAAW,IAAA,CAAK8lB,WAAhB,CAAP,CAAA;CACD,GAAA;;CAtKkC;;CCH9B,SAASe,UAAT,CAAoBtlB,CAApB,EAAuBS,CAAvB,EAA0B;GAC/B,IAAIugB,CAAC,GAAG,CAAR,CAAA;;CACA,EAAA,IAAI1hB,IAAI,CAACqE,GAAL,CAAS3D,CAAT,CAAA,GAAcV,IAAI,CAACqE,GAAL,CAASlD,CAAT,CAAlB,EAA+B;KAC7BugB,CAAC,GAAGvgB,CAAC,GAAGT,CAAR,CAAA;CACA,IAAA,OAAOV,IAAI,CAACqE,GAAL,CAAS3D,CAAT,CAAcV,GAAAA,IAAI,CAAC8D,IAAL,CAAU,CAAA,GAAI4d,CAAC,GAAGA,CAAlB,CAArB,CAAA;CACD,GAAA;;GACD,IAAIvgB,CAAC,KAAK,CAAV,EAAa;KACXugB,CAAC,GAAGhhB,CAAC,GAAGS,CAAR,CAAA;CACA,IAAA,OAAOnB,IAAI,CAACqE,GAAL,CAASlD,CAAT,CAAcnB,GAAAA,IAAI,CAAC8D,IAAL,CAAU,CAAA,GAAI4d,CAAC,GAAGA,CAAlB,CAArB,CAAA;CACD,GAAA;;CACD,EAAA,OAAO,CAAP,CAAA;CACD;;CCNc,MAAMuE,eAAN,CAAsB;GACnCnX,WAAW,CAACvO,KAAD,EAAQ;CACjBA,IAAAA,KAAK,GAAGukB,eAAe,CAACrU,WAAhB,CAA4BlQ,KAA5B,CAAR,CAAA;CAEA,IAAA,IAAI2lB,EAAE,GAAG3lB,KAAK,CAAC+Z,KAAN,EAAT,CAAA;CACA,IAAA,IAAIK,CAAC,GAAGpa,KAAK,CAAC0O,IAAd,CAAA;CACA,IAAA,IAAIzL,CAAC,GAAGjD,KAAK,CAAC2O,OAAd,CAAA;CACA,IAAA,IAAIiX,KAAK,GAAG,IAAIzmB,YAAJ,CAAiB8D,CAAjB,CAAZ,CAAA;CACA,IAAA,IAAIxC,CAAJ,EAAOC,CAAP,EAAUmZ,CAAV,EAAawD,CAAb,CAAA;;KAEA,KAAKxD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG5W,CAAhB,EAAmB4W,CAAC,EAApB,EAAwB;OACtB,IAAIgM,GAAG,GAAG,CAAV,CAAA;;OACA,KAAKplB,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;CACtBolB,QAAAA,GAAG,GAAGJ,UAAU,CAACI,GAAD,EAAMF,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAN,CAAhB,CAAA;CACD,OAAA;;OACD,IAAIgM,GAAG,KAAK,CAAZ,EAAe;SACb,IAAIF,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAAe,GAAA,CAAnB,EAAsB;WACpBgM,GAAG,GAAG,CAACA,GAAP,CAAA;CACD,SAAA;;SACD,KAAKplB,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;CACtBklB,UAAAA,EAAE,CAAC1V,GAAH,CAAOxP,CAAP,EAAUoZ,CAAV,EAAa8L,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,IAAegM,GAA5B,CAAA,CAAA;CACD,SAAA;;CACDF,QAAAA,EAAE,CAAC1V,GAAH,CAAO4J,CAAP,EAAUA,CAAV,EAAa8L,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,IAAe,CAA5B,CAAA,CAAA;;CACA,QAAA,KAAKnZ,CAAC,GAAGmZ,CAAC,GAAG,CAAb,EAAgBnZ,CAAC,GAAGuC,CAApB,EAAuBvC,CAAC,EAAxB,EAA4B;CAC1B2c,UAAAA,CAAC,GAAG,CAAJ,CAAA;;WACA,KAAK5c,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;CACtB4c,YAAAA,CAAC,IAAIsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAe8L,GAAAA,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUC,CAAV,CAApB,CAAA;CACD,WAAA;;WACD2c,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAAT,CAAA;;WACA,KAAKpZ,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;aACtBklB,EAAE,CAAC1V,GAAH,CAAOxP,CAAP,EAAUC,CAAV,EAAailB,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUC,CAAV,CAAA,GAAe2c,CAAC,GAAGsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAhC,CAAA,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;;CACD+L,MAAAA,KAAK,CAAC/L,CAAD,CAAL,GAAW,CAACgM,GAAZ,CAAA;CACD,KAAA;;KAED,IAAKC,CAAAA,EAAL,GAAUH,EAAV,CAAA;KACA,IAAKI,CAAAA,KAAL,GAAaH,KAAb,CAAA;CACD,GAAA;;GAEDV,KAAK,CAACllB,KAAD,EAAQ;CACXA,IAAAA,KAAK,GAAG8P,MAAM,CAACI,WAAP,CAAmBlQ,KAAnB,CAAR,CAAA;KAEA,IAAI2lB,EAAE,GAAG,IAAA,CAAKG,EAAd,CAAA;CACA,IAAA,IAAI1L,CAAC,GAAGuL,EAAE,CAACjX,IAAX,CAAA;;CAEA,IAAA,IAAI1O,KAAK,CAAC0O,IAAN,KAAe0L,CAAnB,EAAsB;CACpB,MAAA,MAAM,IAAIza,KAAJ,CAAU,kCAAV,CAAN,CAAA;CACD,KAAA;;CACD,IAAA,IAAI,CAAC,IAAA,CAAKqmB,UAAL,EAAL,EAAwB;CACtB,MAAA,MAAM,IAAIrmB,KAAJ,CAAU,0BAAV,CAAN,CAAA;CACD,KAAA;;CAED,IAAA,IAAIwlB,KAAK,GAAGnlB,KAAK,CAAC2O,OAAlB,CAAA;CACA,IAAA,IAAIyW,CAAC,GAAGplB,KAAK,CAAC+Z,KAAN,EAAR,CAAA;CACA,IAAA,IAAI9W,CAAC,GAAG0iB,EAAE,CAAChX,OAAX,CAAA;CACA,IAAA,IAAIlO,CAAJ,EAAOC,CAAP,EAAUmZ,CAAV,EAAawD,CAAb,CAAA;;KAEA,KAAKxD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG5W,CAAhB,EAAmB4W,CAAC,EAApB,EAAwB;OACtB,KAAKnZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;CAC1B2c,QAAAA,CAAC,GAAG,CAAJ,CAAA;;SACA,KAAK5c,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;CACtB4c,UAAAA,CAAC,IAAIsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAeuL,GAAAA,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAApB,CAAA;CACD,SAAA;;SACD2c,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAAT,CAAA;;SACA,KAAKpZ,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAG2Z,CAAhB,EAAmB3Z,CAAC,EAApB,EAAwB;WACtB2kB,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc2c,CAAC,GAAGsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAA9B,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,KAAKA,CAAC,GAAG5W,CAAC,GAAG,CAAb,EAAgB4W,CAAC,IAAI,CAArB,EAAwBA,CAAC,EAAzB,EAA6B;OAC3B,KAAKnZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;CAC1B0kB,QAAAA,CAAC,CAACnV,GAAF,CAAM4J,CAAN,EAASnZ,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,CAAA,GAAc,KAAKqlB,KAAL,CAAWlM,CAAX,CAA1B,CAAA,CAAA;CACD,OAAA;;OACD,KAAKpZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGoZ,CAAhB,EAAmBpZ,CAAC,EAApB,EAAwB;SACtB,KAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGykB,KAAhB,EAAuBzkB,CAAC,EAAxB,EAA4B;CAC1B0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc0kB,CAAC,CAACpW,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,CAAA,GAAcilB,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAxC,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CAED,IAAA,OAAOuL,CAAC,CAAC3D,SAAF,CAAY,CAAZ,EAAexe,CAAC,GAAG,CAAnB,EAAsB,CAAtB,EAAyBkiB,KAAK,GAAG,CAAjC,CAAP,CAAA;CACD,GAAA;;CAEDa,EAAAA,UAAU,GAAG;CACX,IAAA,IAAIrX,OAAO,GAAG,IAAKmX,CAAAA,EAAL,CAAQnX,OAAtB,CAAA;;KACA,KAAK,IAAIlO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkO,OAApB,EAA6BlO,CAAC,EAA9B,EAAkC;CAChC,MAAA,IAAI,KAAKslB,KAAL,CAAWtlB,CAAX,CAAA,KAAkB,CAAtB,EAAyB;CACvB,QAAA,OAAO,KAAP,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,OAAO,IAAP,CAAA;CACD,GAAA;;CAEwB,EAAA,IAArB8kB,qBAAqB,GAAG;KAC1B,IAAII,EAAE,GAAG,IAAA,CAAKG,EAAd,CAAA;CACA,IAAA,IAAI7iB,CAAC,GAAG0iB,EAAE,CAAChX,OAAX,CAAA;KACA,IAAIyW,CAAC,GAAG,IAAItV,MAAJ,CAAW7M,CAAX,EAAcA,CAAd,CAAR,CAAA;KACA,IAAIxC,CAAJ,EAAOC,CAAP,CAAA;;KACA,KAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwC,CAAhB,EAAmBxC,CAAC,EAApB,EAAwB;OACtB,KAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuC,CAAhB,EAAmBvC,CAAC,EAApB,EAAwB;SACtB,IAAID,CAAC,GAAGC,CAAR,EAAW;CACT0kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYilB,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUC,CAAV,CAAZ,CAAA,CAAA;CACD,SAFD,MAEO,IAAID,CAAC,KAAKC,CAAV,EAAa;WAClB0kB,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,IAAKqlB,CAAAA,KAAL,CAAWtlB,CAAX,CAAZ,CAAA,CAAA;CACD,SAFM,MAEA;CACL2kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAO0kB,CAAP,CAAA;CACD,GAAA;;CAEmB,EAAA,IAAhBa,gBAAgB,GAAG;KACrB,IAAIN,EAAE,GAAG,IAAA,CAAKG,EAAd,CAAA;CACA,IAAA,IAAIpX,IAAI,GAAGiX,EAAE,CAACjX,IAAd,CAAA;CACA,IAAA,IAAIC,OAAO,GAAGgX,EAAE,CAAChX,OAAjB,CAAA;KACA,IAAIyW,CAAC,GAAG,IAAItV,MAAJ,CAAWpB,IAAX,EAAiBC,OAAjB,CAAR,CAAA;CACA,IAAA,IAAIlO,CAAJ,EAAOC,CAAP,EAAUmZ,CAAV,EAAawD,CAAb,CAAA;;CAEA,IAAA,KAAKxD,CAAC,GAAGlL,OAAO,GAAG,CAAnB,EAAsBkL,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;OACjC,KAAKpZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;CACzB2kB,QAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,OAAA;;CACDuL,MAAAA,CAAC,CAACnV,GAAF,CAAM4J,CAAN,EAASA,CAAT,EAAY,CAAZ,CAAA,CAAA;;OACA,KAAKnZ,CAAC,GAAGmZ,CAAT,EAAYnZ,CAAC,GAAGiO,OAAhB,EAAyBjO,CAAC,EAA1B,EAA8B;SAC5B,IAAIilB,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAAiB,KAAA,CAArB,EAAwB;CACtBwD,UAAAA,CAAC,GAAG,CAAJ,CAAA;;WACA,KAAK5c,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;CACzB4c,YAAAA,CAAC,IAAIsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAeuL,GAAAA,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAApB,CAAA;CACD,WAAA;;WAED2c,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC3W,GAAH,CAAO6K,CAAP,EAAUA,CAAV,CAAT,CAAA;;WAEA,KAAKpZ,CAAC,GAAGoZ,CAAT,EAAYpZ,CAAC,GAAGiO,IAAhB,EAAsBjO,CAAC,EAAvB,EAA2B;aACzB2kB,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY0kB,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc2c,CAAC,GAAGsI,EAAE,CAAC3W,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAA9B,CAAA,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOuL,CAAP,CAAA;CACD,GAAA;;CA9IkC;;CCAtB,MAAMc,0BAAN,CAAiC;GAC9C3X,WAAW,CAACvO,KAAD,EAAsB;KAAA,IAAdrB,OAAc,uEAAJ,EAAI,CAAA;CAC/BqB,IAAAA,KAAK,GAAGukB,eAAe,CAACrU,WAAhB,CAA4BlQ,KAA5B,CAAR,CAAA;;CAEA,IAAA,IAAIA,KAAK,CAAC+V,OAAN,EAAJ,EAAqB;CACnB,MAAA,MAAM,IAAIpW,KAAJ,CAAU,0BAAV,CAAN,CAAA;CACD,KAAA;;CAED,IAAA,IAAIya,CAAC,GAAGpa,KAAK,CAAC0O,IAAd,CAAA;CACA,IAAA,IAAIzL,CAAC,GAAGjD,KAAK,CAAC2O,OAAd,CAAA;KAEA,MAAM;CACJwX,MAAAA,0BAA0B,GAAG,IADzB;CAEJC,MAAAA,2BAA2B,GAAG,IAF1B;CAGJC,MAAAA,aAAa,GAAG,KAAA;CAHZ,KAAA,GAIF1nB,OAJJ,CAAA;CAMA,IAAA,IAAI2nB,KAAK,GAAGC,OAAO,CAACJ,0BAAD,CAAnB,CAAA;CACA,IAAA,IAAIK,KAAK,GAAGD,OAAO,CAACH,2BAAD,CAAnB,CAAA;KAEA,IAAIK,OAAO,GAAG,KAAd,CAAA;CACA,IAAA,IAAItmB,CAAJ,CAAA;;KACA,IAAIia,CAAC,GAAGnX,CAAR,EAAW;OACT,IAAI,CAACojB,aAAL,EAAoB;CAClBlmB,QAAAA,CAAC,GAAGH,KAAK,CAAC+Z,KAAN,EAAJ,CADkB;;SAGlBgH,OAAO,CAACC,IAAR,CACE,wFADF,CAAA,CAAA;CAGD,OAND,MAMO;CACL7gB,QAAAA,CAAC,GAAGH,KAAK,CAACsiB,SAAN,EAAJ,CAAA;SACAlI,CAAC,GAAGja,CAAC,CAACuO,IAAN,CAAA;SACAzL,CAAC,GAAG9C,CAAC,CAACwO,OAAN,CAAA;CACA8X,QAAAA,OAAO,GAAG,IAAV,CAAA;SACA,IAAIC,GAAG,GAAGJ,KAAV,CAAA;CACAA,QAAAA,KAAK,GAAGE,KAAR,CAAA;CACAA,QAAAA,KAAK,GAAGE,GAAR,CAAA;CACD,OAAA;CACF,KAhBD,MAgBO;CACLvmB,MAAAA,CAAC,GAAGH,KAAK,CAAC+Z,KAAN,EAAJ,CAAA;CACD,KAAA;;KAED,IAAI4M,EAAE,GAAGlnB,IAAI,CAAC8C,GAAL,CAAS6X,CAAT,EAAYnX,CAAZ,CAAT,CAAA;KACA,IAAI2jB,EAAE,GAAGnnB,IAAI,CAAC8C,GAAL,CAAS6X,CAAC,GAAG,CAAb,EAAgBnX,CAAhB,CAAT,CAAA;CACA,IAAA,IAAIoa,CAAC,GAAG,IAAIle,YAAJ,CAAiBynB,EAAjB,CAAR,CAAA;KACA,IAAIC,CAAC,GAAG,IAAI/W,MAAJ,CAAWsK,CAAX,EAAcuM,EAAd,CAAR,CAAA;KACA,IAAIG,CAAC,GAAG,IAAIhX,MAAJ,CAAW7M,CAAX,EAAcA,CAAd,CAAR,CAAA;CAEA,IAAA,IAAI5C,CAAC,GAAG,IAAIlB,YAAJ,CAAiB8D,CAAjB,CAAR,CAAA;CACA,IAAA,IAAI8jB,IAAI,GAAG,IAAI5nB,YAAJ,CAAiBib,CAAjB,CAAX,CAAA;CAEA,IAAA,IAAI4M,EAAE,GAAG,IAAI7nB,YAAJ,CAAiBynB,EAAjB,CAAT,CAAA;;CACA,IAAA,KAAK,IAAInmB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmmB,EAApB,EAAwBnmB,CAAC,EAAzB,EAA6BumB,EAAE,CAACvmB,CAAD,CAAF,GAAQA,CAAR,CAAA;;KAE7B,IAAIwmB,GAAG,GAAGxnB,IAAI,CAAC8C,GAAL,CAAS6X,CAAC,GAAG,CAAb,EAAgBnX,CAAhB,CAAV,CAAA;CACA,IAAA,IAAIikB,GAAG,GAAGznB,IAAI,CAAC+C,GAAL,CAAS,CAAT,EAAY/C,IAAI,CAAC8C,GAAL,CAASU,CAAC,GAAG,CAAb,EAAgBmX,CAAhB,CAAZ,CAAV,CAAA;KACA,IAAI+M,GAAG,GAAG1nB,IAAI,CAAC+C,GAAL,CAASykB,GAAT,EAAcC,GAAd,CAAV,CAAA;;KAEA,KAAK,IAAIrN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsN,GAApB,EAAyBtN,CAAC,EAA1B,EAA8B;OAC5B,IAAIA,CAAC,GAAGoN,GAAR,EAAa;CACX5J,QAAAA,CAAC,CAACxD,CAAD,CAAD,GAAO,CAAP,CAAA;;SACA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1B4c,UAAAA,CAAC,CAACxD,CAAD,CAAD,GAAO4L,UAAU,CAACpI,CAAC,CAACxD,CAAD,CAAF,EAAO1Z,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAP,CAAjB,CAAA;CACD,SAAA;;CACD,QAAA,IAAIwD,CAAC,CAACxD,CAAD,CAAD,KAAS,CAAb,EAAgB;WACd,IAAI1Z,CAAC,CAAC6O,GAAF,CAAM6K,CAAN,EAASA,CAAT,CAAc,GAAA,CAAlB,EAAqB;aACnBwD,CAAC,CAACxD,CAAD,CAAD,GAAO,CAACwD,CAAC,CAACxD,CAAD,CAAT,CAAA;CACD,WAAA;;WACD,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BN,YAAAA,CAAC,CAAC8P,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY1Z,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,IAAcwD,CAAC,CAACxD,CAAD,CAA3B,CAAA,CAAA;CACD,WAAA;;CACD1Z,UAAAA,CAAC,CAAC8P,GAAF,CAAM4J,CAAN,EAASA,CAAT,EAAY1Z,CAAC,CAAC6O,GAAF,CAAM6K,CAAN,EAASA,CAAT,IAAc,CAA1B,CAAA,CAAA;CACD,SAAA;;SACDwD,CAAC,CAACxD,CAAD,CAAD,GAAO,CAACwD,CAAC,CAACxD,CAAD,CAAT,CAAA;CACD,OAAA;;CAED,MAAA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGuC,CAAxB,EAA2BvC,CAAC,EAA5B,EAAgC;SAC9B,IAAImZ,CAAC,GAAGoN,GAAJ,IAAW5J,CAAC,CAACxD,CAAD,CAAD,KAAS,CAAxB,EAA2B;WACzB,IAAI+K,CAAC,GAAG,CAAR,CAAA;;WACA,KAAK,IAAInkB,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BmkB,YAAAA,CAAC,IAAIzkB,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAc1Z,GAAAA,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAnB,CAAA;CACD,WAAA;;WACDkkB,CAAC,GAAG,CAACA,CAAD,GAAKzkB,CAAC,CAAC6O,GAAF,CAAM6K,CAAN,EAASA,CAAT,CAAT,CAAA;;WACA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;aAC1BN,CAAC,CAAC8P,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYP,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAckkB,CAAC,GAAGzkB,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAA9B,CAAA,CAAA;CACD,WAAA;CACF,SAAA;;SACDxZ,CAAC,CAACK,CAAD,CAAD,GAAOP,CAAC,CAAC6O,GAAF,CAAM6K,CAAN,EAASnZ,CAAT,CAAP,CAAA;CACD,OAAA;;CAED,MAAA,IAAI4lB,KAAK,IAAIzM,CAAC,GAAGoN,GAAjB,EAAsB;SACpB,KAAK,IAAIxmB,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BomB,UAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY1Z,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAZ,CAAA,CAAA;CACD,SAAA;CACF,OAAA;;OAED,IAAIA,CAAC,GAAGqN,GAAR,EAAa;CACX7mB,QAAAA,CAAC,CAACwZ,CAAD,CAAD,GAAO,CAAP,CAAA;;CACA,QAAA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAGwC,CAAxB,EAA2BxC,CAAC,EAA5B,EAAgC;CAC9BJ,UAAAA,CAAC,CAACwZ,CAAD,CAAD,GAAO4L,UAAU,CAACplB,CAAC,CAACwZ,CAAD,CAAF,EAAOxZ,CAAC,CAACI,CAAD,CAAR,CAAjB,CAAA;CACD,SAAA;;CACD,QAAA,IAAIJ,CAAC,CAACwZ,CAAD,CAAD,KAAS,CAAb,EAAgB;WACd,IAAIxZ,CAAC,CAACwZ,CAAC,GAAG,CAAL,CAAD,GAAW,CAAf,EAAkB;aAChBxZ,CAAC,CAACwZ,CAAD,CAAD,GAAO,IAAIxZ,CAAC,CAACwZ,CAAD,CAAZ,CAAA;CACD,WAAA;;CACD,UAAA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAGwC,CAAxB,EAA2BxC,CAAC,EAA5B,EAAgC;CAC9BJ,YAAAA,CAAC,CAACI,CAAD,CAAD,IAAQJ,CAAC,CAACwZ,CAAD,CAAT,CAAA;CACD,WAAA;;CACDxZ,UAAAA,CAAC,CAACwZ,CAAC,GAAG,CAAL,CAAD,IAAY,CAAZ,CAAA;CACD,SAAA;;SACDxZ,CAAC,CAACwZ,CAAD,CAAD,GAAO,CAACxZ,CAAC,CAACwZ,CAAD,CAAT,CAAA;;CACA,QAAA,IAAIA,CAAC,GAAG,CAAJ,GAAQO,CAAR,IAAa/Z,CAAC,CAACwZ,CAAD,CAAD,KAAS,CAA1B,EAA6B;CAC3B,UAAA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAG2Z,CAAxB,EAA2B3Z,CAAC,EAA5B,EAAgC;CAC9BsmB,YAAAA,IAAI,CAACtmB,CAAD,CAAJ,GAAU,CAAV,CAAA;CACD,WAAA;;CACD,UAAA,KAAK,IAAIA,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAG2Z,CAAxB,EAA2B3Z,CAAC,EAA5B,EAAgC;CAC9B,YAAA,KAAK,IAAIC,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGuC,CAAxB,EAA2BvC,CAAC,EAA5B,EAAgC;CAC9BqmB,cAAAA,IAAI,CAACtmB,CAAD,CAAJ,IAAWJ,CAAC,CAACK,CAAD,CAAD,GAAOP,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAlB,CAAA;CACD,aAAA;CACF,WAAA;;CACD,UAAA,KAAK,IAAIA,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGuC,CAAxB,EAA2BvC,CAAC,EAA5B,EAAgC;CAC9B,YAAA,IAAIkkB,CAAC,GAAG,CAACvkB,CAAC,CAACK,CAAD,CAAF,GAAQL,CAAC,CAACwZ,CAAC,GAAG,CAAL,CAAjB,CAAA;;CACA,YAAA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAG2Z,CAAxB,EAA2B3Z,CAAC,EAA5B,EAAgC;eAC9BN,CAAC,CAAC8P,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYP,CAAC,CAAC6O,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAckkB,GAAAA,CAAC,GAAGmC,IAAI,CAACtmB,CAAD,CAAlC,CAAA,CAAA;CACD,aAAA;CACF,WAAA;CACF,SAAA;;CACD,QAAA,IAAI+lB,KAAJ,EAAW;CACT,UAAA,KAAK,IAAI/lB,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAGwC,CAAxB,EAA2BxC,CAAC,EAA5B,EAAgC;aAC9BqmB,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAYxZ,CAAC,CAACI,CAAD,CAAb,CAAA,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;CACF,KAAA;;KAED,IAAI6Z,CAAC,GAAG7a,IAAI,CAAC8C,GAAL,CAASU,CAAT,EAAYmX,CAAC,GAAG,CAAhB,CAAR,CAAA;;KACA,IAAI6M,GAAG,GAAGhkB,CAAV,EAAa;OACXoa,CAAC,CAAC4J,GAAD,CAAD,GAAS9mB,CAAC,CAAC6O,GAAF,CAAMiY,GAAN,EAAWA,GAAX,CAAT,CAAA;CACD,KAAA;;KACD,IAAI7M,CAAC,GAAGE,CAAR,EAAW;CACT+C,MAAAA,CAAC,CAAC/C,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX,CAAA;CACD,KAAA;;CACD,IAAA,IAAI4M,GAAG,GAAG,CAAN,GAAU5M,CAAd,EAAiB;CACfja,MAAAA,CAAC,CAAC6mB,GAAD,CAAD,GAAS/mB,CAAC,CAAC6O,GAAF,CAAMkY,GAAN,EAAW5M,CAAC,GAAG,CAAf,CAAT,CAAA;CACD,KAAA;;CACDja,IAAAA,CAAC,CAACia,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX,CAAA;;CAEA,IAAA,IAAIgM,KAAJ,EAAW;OACT,KAAK,IAAI5lB,CAAC,GAAGumB,GAAb,EAAkBvmB,CAAC,GAAGimB,EAAtB,EAA0BjmB,CAAC,EAA3B,EAA+B;SAC7B,KAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BomB,UAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;;CACDmmB,QAAAA,CAAC,CAAC5W,GAAF,CAAMvP,CAAN,EAASA,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,OAAA;;CACD,MAAA,KAAK,IAAImZ,CAAC,GAAGoN,GAAG,GAAG,CAAnB,EAAsBpN,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;CACjC,QAAA,IAAIwD,CAAC,CAACxD,CAAD,CAAD,KAAS,CAAb,EAAgB;CACd,UAAA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGimB,EAAxB,EAA4BjmB,CAAC,EAA7B,EAAiC;aAC/B,IAAIkkB,CAAC,GAAG,CAAR,CAAA;;aACA,KAAK,IAAInkB,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BmkB,cAAAA,CAAC,IAAIiC,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAcgN,GAAAA,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAnB,CAAA;CACD,aAAA;;aACDkkB,CAAC,GAAG,CAACA,CAAD,GAAKiC,CAAC,CAAC7X,GAAF,CAAM6K,CAAN,EAASA,CAAT,CAAT,CAAA;;aACA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;eAC1BomB,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYmmB,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAckkB,CAAC,GAAGiC,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAA9B,CAAA,CAAA;CACD,aAAA;CACF,WAAA;;WACD,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAb,EAAgBpZ,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BomB,YAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAACgN,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAb,CAAA,CAAA;CACD,WAAA;;CACDgN,UAAAA,CAAC,CAAC5W,GAAF,CAAM4J,CAAN,EAASA,CAAT,EAAY,CAAIgN,GAAAA,CAAC,CAAC7X,GAAF,CAAM6K,CAAN,EAASA,CAAT,CAAhB,CAAA,CAAA;;CACA,UAAA,KAAK,IAAIpZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoZ,CAAC,GAAG,CAAxB,EAA2BpZ,CAAC,EAA5B,EAAgC;CAC9BomB,YAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,WAAA;CACF,SAlBD,MAkBO;WACL,KAAK,IAAIpZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;CAC1BomB,YAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,WAAA;;CACDgN,UAAAA,CAAC,CAAC5W,GAAF,CAAM4J,CAAN,EAASA,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;CAED,IAAA,IAAI2M,KAAJ,EAAW;CACT,MAAA,KAAK,IAAI3M,CAAC,GAAG5W,CAAC,GAAG,CAAjB,EAAoB4W,CAAC,IAAI,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;SAC/B,IAAIA,CAAC,GAAGqN,GAAJ,IAAW7mB,CAAC,CAACwZ,CAAD,CAAD,KAAS,CAAxB,EAA2B;CACzB,UAAA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAC,GAAG,CAAjB,EAAoBnZ,CAAC,GAAGuC,CAAxB,EAA2BvC,CAAC,EAA5B,EAAgC;aAC9B,IAAIkkB,CAAC,GAAG,CAAR,CAAA;;CACA,YAAA,KAAK,IAAInkB,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAGwC,CAAxB,EAA2BxC,CAAC,EAA5B,EAAgC;CAC9BmkB,cAAAA,CAAC,IAAIkC,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAciN,GAAAA,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAnB,CAAA;CACD,aAAA;;CACDkkB,YAAAA,CAAC,GAAG,CAACA,CAAD,GAAKkC,CAAC,CAAC9X,GAAF,CAAM6K,CAAC,GAAG,CAAV,EAAaA,CAAb,CAAT,CAAA;;CACA,YAAA,KAAK,IAAIpZ,CAAC,GAAGoZ,CAAC,GAAG,CAAjB,EAAoBpZ,CAAC,GAAGwC,CAAxB,EAA2BxC,CAAC,EAA5B,EAAgC;eAC9BqmB,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYomB,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAckkB,CAAC,GAAGkC,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAA9B,CAAA,CAAA;CACD,aAAA;CACF,WAAA;CACF,SAAA;;SACD,KAAK,IAAIpZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;CAC1BqmB,UAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,SAAA;;CACDiN,QAAAA,CAAC,CAAC7W,GAAF,CAAM4J,CAAN,EAASA,CAAT,EAAY,CAAZ,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CAED,IAAA,IAAIuN,EAAE,GAAG9M,CAAC,GAAG,CAAb,CAAA;CAEA,IAAA,IAAI+M,GAAG,GAAGplB,MAAM,CAACqlB,OAAjB,CAAA;;KACA,OAAOhN,CAAC,GAAG,CAAX,EAAc;OACZ,IAAIT,CAAJ,EAAO0N,IAAP,CAAA;;CACA,MAAA,KAAK1N,CAAC,GAAGS,CAAC,GAAG,CAAb,EAAgBT,CAAC,IAAI,CAAC,CAAtB,EAAyBA,CAAC,EAA1B,EAA8B;CAC5B,QAAA,IAAIA,CAAC,KAAK,CAAC,CAAX,EAAc;CACZ,UAAA,MAAA;CACD,SAAA;;CACD,QAAA,MAAM2N,KAAK,GACTvlB,MAAM,CAACwlB,SAAP,GAAmBJ,GAAG,GAAG5nB,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAACxD,CAAD,CAAD,GAAOpa,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAACxD,CAAC,GAAG,CAAL,CAAV,CAAhB,CAD3B,CAAA;;SAEA,IAAIpa,IAAI,CAACqE,GAAL,CAASzD,CAAC,CAACwZ,CAAD,CAAV,CAAkB2N,IAAAA,KAAlB,IAA2BvlB,MAAM,CAACwF,KAAP,CAAapH,CAAC,CAACwZ,CAAD,CAAd,CAA/B,EAAmD;CACjDxZ,UAAAA,CAAC,CAACwZ,CAAD,CAAD,GAAO,CAAP,CAAA;CACA,UAAA,MAAA;CACD,SAAA;CACF,OAAA;;CACD,MAAA,IAAIA,CAAC,KAAKS,CAAC,GAAG,CAAd,EAAiB;CACfiN,QAAAA,IAAI,GAAG,CAAP,CAAA;CACD,OAFD,MAEO;CACL,QAAA,IAAIG,EAAJ,CAAA;;CACA,QAAA,KAAKA,EAAE,GAAGpN,CAAC,GAAG,CAAd,EAAiBoN,EAAE,IAAI7N,CAAvB,EAA0B6N,EAAE,EAA5B,EAAgC;WAC9B,IAAIA,EAAE,KAAK7N,CAAX,EAAc;CACZ,YAAA,MAAA;CACD,WAAA;;CACD,UAAA,IAAI+K,CAAC,GACH,CAAC8C,EAAE,KAAKpN,CAAP,GAAW7a,IAAI,CAACqE,GAAL,CAASzD,CAAC,CAACqnB,EAAD,CAAV,CAAX,GAA6B,CAA9B,KACCA,EAAE,KAAK7N,CAAC,GAAG,CAAX,GAAepa,IAAI,CAACqE,GAAL,CAASzD,CAAC,CAACqnB,EAAE,GAAG,CAAN,CAAV,CAAf,GAAqC,CADtC,CADF,CAAA;;CAGA,UAAA,IAAIjoB,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAACqK,EAAD,CAAV,CAAmBL,IAAAA,GAAG,GAAGzC,CAA7B,EAAgC;CAC9BvH,YAAAA,CAAC,CAACqK,EAAD,CAAD,GAAQ,CAAR,CAAA;CACA,YAAA,MAAA;CACD,WAAA;CACF,SAAA;;SACD,IAAIA,EAAE,KAAK7N,CAAX,EAAc;CACZ0N,UAAAA,IAAI,GAAG,CAAP,CAAA;CACD,SAFD,MAEO,IAAIG,EAAE,KAAKpN,CAAC,GAAG,CAAf,EAAkB;CACvBiN,UAAAA,IAAI,GAAG,CAAP,CAAA;CACD,SAFM,MAEA;CACLA,UAAAA,IAAI,GAAG,CAAP,CAAA;CACA1N,UAAAA,CAAC,GAAG6N,EAAJ,CAAA;CACD,SAAA;CACF,OAAA;;OAED7N,CAAC,EAAA,CAAA;;CAED,MAAA,QAAQ0N,IAAR;CACE,QAAA,KAAK,CAAL;CAAQ,UAAA;CACN,YAAA,IAAIjnB,CAAC,GAAGD,CAAC,CAACia,CAAC,GAAG,CAAL,CAAT,CAAA;CACAja,YAAAA,CAAC,CAACia,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX,CAAA;;CACA,YAAA,KAAK,IAAI5Z,CAAC,GAAG4Z,CAAC,GAAG,CAAjB,EAAoB5Z,CAAC,IAAImZ,CAAzB,EAA4BnZ,CAAC,EAA7B,EAAiC;eAC/B,IAAIkkB,CAAC,GAAGa,UAAU,CAACpI,CAAC,CAAC3c,CAAD,CAAF,EAAOJ,CAAP,CAAlB,CAAA;CACA,cAAA,IAAIqnB,EAAE,GAAGtK,CAAC,CAAC3c,CAAD,CAAD,GAAOkkB,CAAhB,CAAA;CACA,cAAA,IAAIgD,EAAE,GAAGtnB,CAAC,GAAGskB,CAAb,CAAA;CACAvH,cAAAA,CAAC,CAAC3c,CAAD,CAAD,GAAOkkB,CAAP,CAAA;;eACA,IAAIlkB,CAAC,KAAKmZ,CAAV,EAAa;iBACXvZ,CAAC,GAAG,CAACsnB,EAAD,GAAMvnB,CAAC,CAACK,CAAC,GAAG,CAAL,CAAX,CAAA;CACAL,gBAAAA,CAAC,CAACK,CAAC,GAAG,CAAL,CAAD,GAAWinB,EAAE,GAAGtnB,CAAC,CAACK,CAAC,GAAG,CAAL,CAAjB,CAAA;CACD,eAAA;;CACD,cAAA,IAAI8lB,KAAJ,EAAW;iBACT,KAAK,IAAI/lB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAG+C,EAAE,GAAGb,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAL,GAAmBknB,EAAE,GAAGd,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAAS6Z,CAAC,GAAG,CAAb,CAA5B,CAAA;CACAwM,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAAS6Z,CAAC,GAAG,CAAb,EAAgB,CAACsN,EAAD,GAAMd,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAN,GAAoBinB,EAAE,GAAGb,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAAS6Z,CAAC,GAAG,CAAb,CAAzC,CAAA,CAAA;CACAwM,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkkB,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;CACF,aAAA;;CACD,YAAA,MAAA;CACD,WAAA;;CACD,QAAA,KAAK,CAAL;CAAQ,UAAA;CACN,YAAA,IAAItkB,CAAC,GAAGD,CAAC,CAACwZ,CAAC,GAAG,CAAL,CAAT,CAAA;CACAxZ,YAAAA,CAAC,CAACwZ,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX,CAAA;;aACA,KAAK,IAAInZ,CAAC,GAAGmZ,CAAb,EAAgBnZ,CAAC,GAAG4Z,CAApB,EAAuB5Z,CAAC,EAAxB,EAA4B;eAC1B,IAAIkkB,CAAC,GAAGa,UAAU,CAACpI,CAAC,CAAC3c,CAAD,CAAF,EAAOJ,CAAP,CAAlB,CAAA;CACA,cAAA,IAAIqnB,EAAE,GAAGtK,CAAC,CAAC3c,CAAD,CAAD,GAAOkkB,CAAhB,CAAA;CACA,cAAA,IAAIgD,EAAE,GAAGtnB,CAAC,GAAGskB,CAAb,CAAA;CACAvH,cAAAA,CAAC,CAAC3c,CAAD,CAAD,GAAOkkB,CAAP,CAAA;CACAtkB,cAAAA,CAAC,GAAG,CAACsnB,EAAD,GAAMvnB,CAAC,CAACK,CAAD,CAAX,CAAA;eACAL,CAAC,CAACK,CAAD,CAAD,GAAOinB,EAAE,GAAGtnB,CAAC,CAACK,CAAD,CAAb,CAAA;;CACA,cAAA,IAAI4lB,KAAJ,EAAW;iBACT,KAAK,IAAI7lB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAG+C,EAAE,GAAGd,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAL,GAAmBknB,EAAE,GAAGf,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAC,GAAG,CAAb,CAA5B,CAAA;CACAgN,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAC,GAAG,CAAb,EAAgB,CAAC+N,EAAD,GAAMf,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAN,GAAoBinB,EAAE,GAAGd,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAC,GAAG,CAAb,CAAzC,CAAA,CAAA;CACAgN,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkkB,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;CACF,aAAA;;CACD,YAAA,MAAA;CACD,WAAA;;CACD,QAAA,KAAK,CAAL;CAAQ,UAAA;CACN,YAAA,MAAMxN,KAAK,GAAG3X,IAAI,CAAC+C,GAAL,CACZ/C,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAAC/C,CAAC,GAAG,CAAL,CAAV,CADY,EAEZ7a,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAAC/C,CAAC,GAAG,CAAL,CAAV,CAFY,EAGZ7a,IAAI,CAACqE,GAAL,CAASzD,CAAC,CAACia,CAAC,GAAG,CAAL,CAAV,CAHY,EAIZ7a,IAAI,CAACqE,GAAL,CAASuZ,CAAC,CAACxD,CAAD,CAAV,CAJY,EAKZpa,IAAI,CAACqE,GAAL,CAASzD,CAAC,CAACwZ,CAAD,CAAV,CALY,CAAd,CAAA;aAOA,MAAMgO,EAAE,GAAGxK,CAAC,CAAC/C,CAAC,GAAG,CAAL,CAAD,GAAWlD,KAAtB,CAAA;aACA,MAAM0Q,IAAI,GAAGzK,CAAC,CAAC/C,CAAC,GAAG,CAAL,CAAD,GAAWlD,KAAxB,CAAA;aACA,MAAM2Q,IAAI,GAAG1nB,CAAC,CAACia,CAAC,GAAG,CAAL,CAAD,GAAWlD,KAAxB,CAAA;CACA,YAAA,MAAM4Q,EAAE,GAAG3K,CAAC,CAACxD,CAAD,CAAD,GAAOzC,KAAlB,CAAA;CACA,YAAA,MAAM6Q,EAAE,GAAG5nB,CAAC,CAACwZ,CAAD,CAAD,GAAOzC,KAAlB,CAAA;CACA,YAAA,MAAMxW,CAAC,GAAG,CAAC,CAACknB,IAAI,GAAGD,EAAR,KAAeC,IAAI,GAAGD,EAAtB,CAA4BE,GAAAA,IAAI,GAAGA,IAApC,IAA4C,CAAtD,CAAA;aACA,MAAMpnB,CAAC,GAAGknB,EAAE,GAAGE,IAAL,IAAaF,EAAE,GAAGE,IAAlB,CAAV,CAAA;aACA,IAAIG,KAAK,GAAG,CAAZ,CAAA;;CACA,YAAA,IAAItnB,CAAC,KAAK,CAAN,IAAWD,CAAC,KAAK,CAArB,EAAwB;eACtB,IAAIC,CAAC,GAAG,CAAR,EAAW;iBACTsnB,KAAK,GAAG,CAAIzoB,GAAAA,IAAI,CAAC8D,IAAL,CAAU3C,CAAC,GAAGA,CAAJ,GAAQD,CAAlB,CAAZ,CAAA;CACD,eAFD,MAEO;iBACLunB,KAAK,GAAGzoB,IAAI,CAAC8D,IAAL,CAAU3C,CAAC,GAAGA,CAAJ,GAAQD,CAAlB,CAAR,CAAA;CACD,eAAA;;CACDunB,cAAAA,KAAK,GAAGvnB,CAAC,IAAIC,CAAC,GAAGsnB,KAAR,CAAT,CAAA;CACD,aAAA;;aACD,IAAI5nB,CAAC,GAAG,CAAC0nB,EAAE,GAAGH,EAAN,KAAaG,EAAE,GAAGH,EAAlB,CAAA,GAAwBK,KAAhC,CAAA;CACA,YAAA,IAAI3nB,CAAC,GAAGynB,EAAE,GAAGC,EAAb,CAAA;;CACA,YAAA,KAAK,IAAIvnB,CAAC,GAAGmZ,CAAb,EAAgBnZ,CAAC,GAAG4Z,CAAC,GAAG,CAAxB,EAA2B5Z,CAAC,EAA5B,EAAgC;CAC9B,cAAA,IAAIkkB,CAAC,GAAGa,UAAU,CAACnlB,CAAD,EAAIC,CAAJ,CAAlB,CAAA;eACA,IAAIqkB,CAAC,KAAK,CAAV,EAAaA,CAAC,GAAG3iB,MAAM,CAACwlB,SAAX,CAAA;CACb,cAAA,IAAIE,EAAE,GAAGrnB,CAAC,GAAGskB,CAAb,CAAA;CACA,cAAA,IAAIgD,EAAE,GAAGrnB,CAAC,GAAGqkB,CAAb,CAAA;;eACA,IAAIlkB,CAAC,KAAKmZ,CAAV,EAAa;CACXxZ,gBAAAA,CAAC,CAACK,CAAC,GAAG,CAAL,CAAD,GAAWkkB,CAAX,CAAA;CACD,eAAA;;CACDtkB,cAAAA,CAAC,GAAGqnB,EAAE,GAAGtK,CAAC,CAAC3c,CAAD,CAAN,GAAYknB,EAAE,GAAGvnB,CAAC,CAACK,CAAD,CAAtB,CAAA;CACAL,cAAAA,CAAC,CAACK,CAAD,CAAD,GAAOinB,EAAE,GAAGtnB,CAAC,CAACK,CAAD,CAAN,GAAYknB,EAAE,GAAGvK,CAAC,CAAC3c,CAAD,CAAzB,CAAA;eACAH,CAAC,GAAGqnB,EAAE,GAAGvK,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAAV,CAAA;CACA2c,cAAAA,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAAD,GAAWinB,EAAE,GAAGtK,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAAjB,CAAA;;CACA,cAAA,IAAI8lB,KAAJ,EAAW;iBACT,KAAK,IAAI/lB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAG+C,EAAE,GAAGb,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAL,GAAmBknB,EAAE,GAAGd,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAC,GAAG,CAAb,CAA5B,CAAA;CACAomB,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASC,CAAC,GAAG,CAAb,EAAgB,CAACknB,EAAD,GAAMd,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAN,GAAoBinB,EAAE,GAAGb,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAC,GAAG,CAAb,CAAzC,CAAA,CAAA;CACAomB,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkkB,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;;CACDA,cAAAA,CAAC,GAAGa,UAAU,CAACnlB,CAAD,EAAIC,CAAJ,CAAd,CAAA;eACA,IAAIqkB,CAAC,KAAK,CAAV,EAAaA,CAAC,GAAG3iB,MAAM,CAACwlB,SAAX,CAAA;eACbE,EAAE,GAAGrnB,CAAC,GAAGskB,CAAT,CAAA;eACAgD,EAAE,GAAGrnB,CAAC,GAAGqkB,CAAT,CAAA;CACAvH,cAAAA,CAAC,CAAC3c,CAAD,CAAD,GAAOkkB,CAAP,CAAA;CACAtkB,cAAAA,CAAC,GAAGqnB,EAAE,GAAGtnB,CAAC,CAACK,CAAD,CAAN,GAAYknB,EAAE,GAAGvK,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAAtB,CAAA;eACA2c,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAAD,GAAW,CAACknB,EAAD,GAAMvnB,CAAC,CAACK,CAAD,CAAP,GAAainB,EAAE,GAAGtK,CAAC,CAAC3c,CAAC,GAAG,CAAL,CAA9B,CAAA;eACAH,CAAC,GAAGqnB,EAAE,GAAGvnB,CAAC,CAACK,CAAC,GAAG,CAAL,CAAV,CAAA;CACAL,cAAAA,CAAC,CAACK,CAAC,GAAG,CAAL,CAAD,GAAWinB,EAAE,GAAGtnB,CAAC,CAACK,CAAC,GAAG,CAAL,CAAjB,CAAA;;CACA,cAAA,IAAI4lB,KAAK,IAAI5lB,CAAC,GAAG0Z,CAAC,GAAG,CAArB,EAAwB;iBACtB,KAAK,IAAI3Z,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAG+C,EAAE,GAAGd,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAL,GAAmBknB,EAAE,GAAGf,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAC,GAAG,CAAb,CAA5B,CAAA;CACAmmB,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASC,CAAC,GAAG,CAAb,EAAgB,CAACknB,EAAD,GAAMf,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAN,GAAoBinB,EAAE,GAAGd,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASC,CAAC,GAAG,CAAb,CAAzC,CAAA,CAAA;CACAmmB,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYkkB,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;CACF,aAAA;;CACDvkB,YAAAA,CAAC,CAACia,CAAC,GAAG,CAAL,CAAD,GAAWha,CAAX,CAAA;CAEA,YAAA,MAAA;CACD,WAAA;;CACD,QAAA,KAAK,CAAL;CAAQ,UAAA;CACN,YAAA,IAAI+c,CAAC,CAACxD,CAAD,CAAD,IAAQ,CAAZ,EAAe;CACbwD,cAAAA,CAAC,CAACxD,CAAD,CAAD,GAAOwD,CAAC,CAACxD,CAAD,CAAD,GAAO,CAAP,GAAW,CAACwD,CAAC,CAACxD,CAAD,CAAb,GAAmB,CAA1B,CAAA;;CACA,cAAA,IAAI2M,KAAJ,EAAW;iBACT,KAAK,IAAI/lB,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI2mB,EAArB,EAAyB3mB,CAAC,EAA1B,EAA8B;CAC5BqmB,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY,CAACiN,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAb,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;CACF,aAAA;;aACD,OAAOA,CAAC,GAAGuN,EAAX,EAAe;eACb,IAAI/J,CAAC,CAACxD,CAAD,CAAD,IAAQwD,CAAC,CAACxD,CAAC,GAAG,CAAL,CAAb,EAAsB;CACpB,gBAAA,MAAA;CACD,eAAA;;CACD,cAAA,IAAI+K,CAAC,GAAGvH,CAAC,CAACxD,CAAD,CAAT,CAAA;eACAwD,CAAC,CAACxD,CAAD,CAAD,GAAOwD,CAAC,CAACxD,CAAC,GAAG,CAAL,CAAR,CAAA;CACAwD,cAAAA,CAAC,CAACxD,CAAC,GAAG,CAAL,CAAD,GAAW+K,CAAX,CAAA;;CACA,cAAA,IAAI4B,KAAK,IAAI3M,CAAC,GAAG5W,CAAC,GAAG,CAArB,EAAwB;iBACtB,KAAK,IAAIxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAGkC,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASoZ,CAAC,GAAG,CAAb,CAAJ,CAAA;CACAiN,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASoZ,CAAC,GAAG,CAAb,EAAgBiN,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAhB,CAAA,CAAA;CACAiN,kBAAAA,CAAC,CAAC7W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY+K,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;;CACD,cAAA,IAAI0B,KAAK,IAAIzM,CAAC,GAAGO,CAAC,GAAG,CAArB,EAAwB;iBACtB,KAAK,IAAI3Z,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2Z,CAApB,EAAuB3Z,CAAC,EAAxB,EAA4B;mBAC1BmkB,CAAC,GAAGiC,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAC,GAAG,CAAb,CAAJ,CAAA;CACAgN,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAC,GAAG,CAAb,EAAgBgN,CAAC,CAAC7X,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAhB,CAAA,CAAA;CACAgN,kBAAAA,CAAC,CAAC5W,GAAF,CAAMxP,CAAN,EAASoZ,CAAT,EAAY+K,CAAZ,CAAA,CAAA;CACD,iBAAA;CACF,eAAA;;eACD/K,CAAC,EAAA,CAAA;CACF,aAAA;aAEDS,CAAC,EAAA,CAAA;CACD,YAAA,MAAA;CACD,WAAA;CACD;CAjJF,OAAA;CAmJD,KAAA;;CAED,IAAA,IAAImM,OAAJ,EAAa;OACX,IAAIvM,GAAG,GAAG4M,CAAV,CAAA;CACAA,MAAAA,CAAC,GAAGD,CAAJ,CAAA;CACAA,MAAAA,CAAC,GAAG3M,GAAJ,CAAA;CACD,KAAA;;KAED,IAAKE,CAAAA,CAAL,GAASA,CAAT,CAAA;KACA,IAAKnX,CAAAA,CAAL,GAASA,CAAT,CAAA;KACA,IAAKoa,CAAAA,CAAL,GAASA,CAAT,CAAA;KACA,IAAKwJ,CAAAA,CAAL,GAASA,CAAT,CAAA;KACA,IAAKC,CAAAA,CAAL,GAASA,CAAT,CAAA;CACD,GAAA;;GAED5B,KAAK,CAACllB,KAAD,EAAQ;KACX,IAAImoB,CAAC,GAAGnoB,KAAR,CAAA;KACA,IAAIK,CAAC,GAAG,IAAA,CAAK+nB,SAAb,CAAA;CACA,IAAA,IAAIC,KAAK,GAAG,IAAKhL,CAAAA,CAAL,CAAOve,MAAnB,CAAA;KACA,IAAIwpB,EAAE,GAAGxY,MAAM,CAACmI,KAAP,CAAaoQ,KAAb,EAAoBA,KAApB,CAAT,CAAA;;KAEA,KAAK,IAAI5nB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4nB,KAApB,EAA2B5nB,CAAC,EAA5B,EAAgC;OAC9B,IAAIhB,IAAI,CAACqE,GAAL,CAAS,IAAA,CAAKuZ,CAAL,CAAO5c,CAAP,CAAT,CAAuBJ,IAAAA,CAA3B,EAA8B;CAC5BioB,QAAAA,EAAE,CAACrY,GAAH,CAAOxP,CAAP,EAAUA,CAAV,EAAa,CAAb,CAAA,CAAA;CACD,OAFD,MAEO;CACL6nB,QAAAA,EAAE,CAACrY,GAAH,CAAOxP,CAAP,EAAUA,CAAV,EAAa,CAAA,GAAI,IAAK4c,CAAAA,CAAL,CAAO5c,CAAP,CAAjB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;KAED,IAAIomB,CAAC,GAAG,IAAA,CAAKA,CAAb,CAAA;KACA,IAAIC,CAAC,GAAG,IAAA,CAAKyB,oBAAb,CAAA;CAEA,IAAA,IAAIC,EAAE,GAAG1B,CAAC,CAAC5J,IAAF,CAAOoL,EAAP,CAAT,CAAA;CACA,IAAA,IAAIG,KAAK,GAAG3B,CAAC,CAACpY,IAAd,CAAA;CACA,IAAA,IAAIga,KAAK,GAAG7B,CAAC,CAACnY,IAAd,CAAA;KACA,IAAIia,GAAG,GAAG7Y,MAAM,CAACmI,KAAP,CAAawQ,KAAb,EAAoBC,KAApB,CAAV,CAAA;;KAEA,KAAK,IAAIjoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgoB,KAApB,EAA2BhoB,CAAC,EAA5B,EAAgC;OAC9B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgoB,KAApB,EAA2BhoB,CAAC,EAA5B,EAAgC;SAC9B,IAAIuV,GAAG,GAAG,CAAV,CAAA;;SACA,KAAK,IAAI4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwO,KAApB,EAA2BxO,CAAC,EAA5B,EAAgC;CAC9B5D,UAAAA,GAAG,IAAIuS,EAAE,CAACxZ,GAAH,CAAOvO,CAAP,EAAUoZ,CAAV,CAAegN,GAAAA,CAAC,CAAC7X,GAAF,CAAMtO,CAAN,EAASmZ,CAAT,CAAtB,CAAA;CACD,SAAA;;CACD8O,QAAAA,GAAG,CAAC1Y,GAAJ,CAAQxP,CAAR,EAAWC,CAAX,EAAcuV,GAAd,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CAED,IAAA,OAAO0S,GAAG,CAACzL,IAAJ,CAASiL,CAAT,CAAP,CAAA;CACD,GAAA;;GAEDS,gBAAgB,CAAC5oB,KAAD,EAAQ;KACtB,OAAO,IAAA,CAAKklB,KAAL,CAAWpV,MAAM,CAAC2I,IAAP,CAAYzY,KAAZ,CAAX,CAAP,CAAA;CACD,GAAA;;CAED6oB,EAAAA,OAAO,GAAG;KACR,IAAI/B,CAAC,GAAG,IAAA,CAAKA,CAAb,CAAA;KACA,IAAIzmB,CAAC,GAAG,IAAA,CAAK+nB,SAAb,CAAA;CACA,IAAA,IAAIK,KAAK,GAAG3B,CAAC,CAACpY,IAAd,CAAA;CACA,IAAA,IAAIoa,KAAK,GAAGhC,CAAC,CAACnY,OAAd,CAAA;KACA,IAAIyW,CAAC,GAAG,IAAItV,MAAJ,CAAW2Y,KAAX,EAAkB,IAAKpL,CAAAA,CAAL,CAAOve,MAAzB,CAAR,CAAA;;KAEA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgoB,KAApB,EAA2BhoB,CAAC,EAA5B,EAAgC;OAC9B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGooB,KAApB,EAA2BpoB,CAAC,EAA5B,EAAgC;SAC9B,IAAIjB,IAAI,CAACqE,GAAL,CAAS,IAAA,CAAKuZ,CAAL,CAAO3c,CAAP,CAAT,CAAsBL,GAAAA,CAA1B,EAA6B;CAC3B+kB,UAAAA,CAAC,CAACnV,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYomB,CAAC,CAAC9X,GAAF,CAAMvO,CAAN,EAASC,CAAT,CAAA,GAAc,KAAK2c,CAAL,CAAO3c,CAAP,CAA1B,CAAA,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;;KAED,IAAImmB,CAAC,GAAG,IAAA,CAAKA,CAAb,CAAA;CAEA,IAAA,IAAI6B,KAAK,GAAG7B,CAAC,CAACnY,IAAd,CAAA;CACA,IAAA,IAAIqa,KAAK,GAAGlC,CAAC,CAAClY,OAAd,CAAA;KACA,IAAIwZ,CAAC,GAAG,IAAIrY,MAAJ,CAAW2Y,KAAX,EAAkBC,KAAlB,CAAR,CAAA;;KAEA,KAAK,IAAIjoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgoB,KAApB,EAA2BhoB,CAAC,EAA5B,EAAgC;OAC9B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgoB,KAApB,EAA2BhoB,CAAC,EAA5B,EAAgC;SAC9B,IAAIuV,GAAG,GAAG,CAAV,CAAA;;SACA,KAAK,IAAI4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkP,KAApB,EAA2BlP,CAAC,EAA5B,EAAgC;CAC9B5D,UAAAA,GAAG,IAAImP,CAAC,CAACpW,GAAF,CAAMvO,CAAN,EAASoZ,CAAT,CAAcgN,GAAAA,CAAC,CAAC7X,GAAF,CAAMtO,CAAN,EAASmZ,CAAT,CAArB,CAAA;CACD,SAAA;;CACDsO,QAAAA,CAAC,CAAClY,GAAF,CAAMxP,CAAN,EAASC,CAAT,EAAYuV,GAAZ,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CAED,IAAA,OAAOkS,CAAP,CAAA;CACD,GAAA;;CAEY,EAAA,IAATa,SAAS,GAAG;CACd,IAAA,OAAO,KAAK3L,CAAL,CAAO,CAAP,CAAY,GAAA,IAAA,CAAKA,CAAL,CAAO5d,IAAI,CAAC8C,GAAL,CAAS,KAAK6X,CAAd,EAAiB,KAAKnX,CAAtB,CAAA,GAA2B,CAAlC,CAAnB,CAAA;CACD,GAAA;;CAEQ,EAAA,IAALgmB,KAAK,GAAG;CACV,IAAA,OAAO,IAAK5L,CAAAA,CAAL,CAAO,CAAP,CAAP,CAAA;CACD,GAAA;;CAEO,EAAA,IAAJ6L,IAAI,GAAG;KACT,IAAIC,GAAG,GAAG1pB,IAAI,CAAC+C,GAAL,CAAS,IAAA,CAAK4X,CAAd,EAAiB,IAAA,CAAKnX,CAAtB,CAA2B,GAAA,IAAA,CAAKoa,CAAL,CAAO,CAAP,CAA3B,GAAuCpb,MAAM,CAACqlB,OAAxD,CAAA;KACA,IAAInG,CAAC,GAAG,CAAR,CAAA;KACA,IAAI9D,CAAC,GAAG,IAAA,CAAKA,CAAb,CAAA;;CACA,IAAA,KAAK,IAAI5c,CAAC,GAAG,CAAR,EAAW2oB,EAAE,GAAG/L,CAAC,CAACve,MAAvB,EAA+B2B,CAAC,GAAG2oB,EAAnC,EAAuC3oB,CAAC,EAAxC,EAA4C;CAC1C,MAAA,IAAI4c,CAAC,CAAC5c,CAAD,CAAD,GAAO0oB,GAAX,EAAgB;SACdhI,CAAC,EAAA,CAAA;CACF,OAAA;CACF,KAAA;;CACD,IAAA,OAAOA,CAAP,CAAA;CACD,GAAA;;CAEW,EAAA,IAARqC,QAAQ,GAAG;CACb,IAAA,OAAOtb,KAAK,CAACtJ,IAAN,CAAW,IAAA,CAAKye,CAAhB,CAAP,CAAA;CACD,GAAA;;CAEY,EAAA,IAAT+K,SAAS,GAAG;KACd,OAAQnmB,MAAM,CAACqlB,OAAP,GAAiB,CAAlB,GAAuB7nB,IAAI,CAAC+C,GAAL,CAAS,KAAK4X,CAAd,EAAiB,KAAKnX,CAAtB,CAAvB,GAAkD,IAAKoa,CAAAA,CAAL,CAAO,CAAP,CAAzD,CAAA;CACD,GAAA;;CAEsB,EAAA,IAAnBgM,mBAAmB,GAAG;CACxB,IAAA,OAAO,KAAKxC,CAAZ,CAAA;CACD,GAAA;;CAEuB,EAAA,IAApB0B,oBAAoB,GAAG;CACzB,IAAA,OAAO,KAAKzB,CAAZ,CAAA;CACD,GAAA;;CAEiB,EAAA,IAAdwC,cAAc,GAAG;CACnB,IAAA,OAAOxZ,MAAM,CAAC2I,IAAP,CAAY,IAAA,CAAK4E,CAAjB,CAAP,CAAA;CACD,GAAA;;CAxgB6C;;CCUzC,SAAS6H,KAAT,CAAeqE,YAAf,EAA6BC,aAA7B,EAA4D;GAAA,IAAhBC,MAAgB,uEAAP,KAAO,CAAA;CACjEF,EAAAA,YAAY,GAAGhF,eAAe,CAACrU,WAAhB,CAA4BqZ,YAA5B,CAAf,CAAA;CACAC,EAAAA,aAAa,GAAGjF,eAAe,CAACrU,WAAhB,CAA4BsZ,aAA5B,CAAhB,CAAA;;CACA,EAAA,IAAIC,MAAJ,EAAY;KACV,OAAO,IAAIvD,0BAAJ,CAA+BqD,YAA/B,EAA6CrE,KAA7C,CAAmDsE,aAAnD,CAAP,CAAA;CACD,GAFD,MAEO;KACL,OAAOD,YAAY,CAAChQ,QAAb,EAAA,GACH,IAAIiL,eAAJ,CAAoB+E,YAApB,CAAA,CAAkCrE,KAAlC,CAAwCsE,aAAxC,CADG,GAEH,IAAI9D,eAAJ,CAAoB6D,YAApB,CAAkCrE,CAAAA,KAAlC,CAAwCsE,aAAxC,CAFJ,CAAA;CAGD,GAAA;CACF;;CCnBD;;;;;;;;;;CASM,SAAUE,SAAV,CACJzc,MADI,EAYE;GAAA,IAVNtO,OAUM,uEAAF,EAAE,CAAA;GAKN,MAAM;CAAE6D,IAAAA,GAAG,GAAG,GAAA;CAAR,GAAA,GAAgB7D,OAAtB,CAAA;CACA,EAAA,IAAIgrB,OAAO,GAAG,IAAI7Z,MAAJ,CAAW7C,MAAX,CAAd,CAAA;;CACA,EAAA,KAAK,IAAIxM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpB,OAAO,CAACjb,IAA5B,EAAkCjO,CAAC,EAAnC,EAAuC;CACrC,IAAA,MAAMmpB,mBAAmB,GAAGD,OAAO,CAAChP,YAAR,CAAqBla,CAArB,CAAA,CAAwBmc,IAAxB,CAA6B,WAA7B,CAAA,GAA4Cpa,GAAxE,CAAA;KACA,MAAM6K,GAAG,GAAGsc,OAAO,CAAChP,YAAR,CAAqBla,CAArB,CAAwBrB,CAAAA,GAAxB,CAA4BwqB,mBAA5B,CAAZ,CAAA;CACAD,IAAAA,OAAO,CAAC/O,MAAR,CAAena,CAAf,EAAkB4M,GAAlB,CAAA,CAAA;CACD,GAAA;;GAED,IAAIwc,iBAAiB,GAAG,EAAxB,CAAA;;CACA,EAAA,KAAK,IAAIppB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpB,OAAO,CAAChb,OAA5B,EAAqClO,CAAC,EAAtC,EAA0C;CACxC,IAAA,MAAMqpB,eAAe,GAAGH,OAAO,CAAC3O,SAAR,CAAkBva,CAAlB,CAAxB,CAAA;CACAopB,IAAAA,iBAAiB,CAAChjB,IAAlB,CAAuB3F,OAAO,CAAC4oB,eAAD,CAA9B,CAAA,CAAA;CACD,GAAA;;GAED,IAAIC,iBAAiB,GAAG,EAAxB,CAAA;;CACA,EAAA,KAAK,IAAItpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpB,OAAO,CAAChb,OAA5B,EAAqClO,CAAC,EAAtC,EAA0C;CACxC,IAAA,IAAIupB,SAAS,GAAGL,OAAO,CAAC1O,eAAR,CAAwBxa,CAAxB,CAA2BrB,CAAAA,GAA3B,CAA+ByqB,iBAAiB,CAACppB,CAAD,CAAhD,CAAhB,CAAA;KACAspB,iBAAiB,CAACljB,IAAlB,CAAuB3F,OAAO,CAAC8oB,SAAS,CAAChP,SAAV,CAAoB,CAApB,CAAD,CAA9B,CAAA,CAAA;CACD,GAAA;;CAED,EAAA,KAAK,IAAIva,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpB,OAAO,CAACjb,IAA5B,EAAkCjO,CAAC,EAAnC,EAAuC;KACrCkpB,OAAO,CAAC7N,MAAR,CAAerb,CAAf,EAAkB,CAAIspB,GAAAA,iBAAiB,CAACtpB,CAAD,CAAvC,CAAA,CAAA;CACD,GAAA;;GAED,OAAO;CACLmH,IAAAA,IAAI,EAAE+hB,OAAO,CAAC1Q,SAAR,EADD;CAEL8Q,IAAAA,iBAAiB,EAAEA,iBAAAA;IAFrB,CAAA;CAID;;CC1DD;;;;;;CAMM,SAAUE,cAAV,CACJhd,MADI,EAaE;GAAA,IAXNtO,OAWM,uEAAF,EAAE,CAAA;GAEN,MAAM;CAAE4D,IAAAA,GAAG,GAAG,CAAR;CAAWC,IAAAA,GAAG,GAAG,CAAA;CAAjB,GAAA,GAAuB7D,OAA7B,CAAA;CACA,EAAA,MAAMuO,MAAM,GAAGD,MAAM,CAACnO,MAAtB,CAAA;CACA,EAAA,MAAMqO,SAAS,GAAGF,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAA5B,CAAA;CACA,EAAA,MAAMsO,SAAS,GAAG,IAAIlF,KAAJ,CAAUgF,MAAV,CAAlB,CAAA;;GACA,KAAK,IAAIG,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;KACrCD,SAAS,CAACC,GAAD,CAAT,GAAiB,IAAIlO,YAAJ,CAAiBgO,SAAjB,CAAjB,CAAA;CACD,GAAA;;GACD,KAAK,IAAIG,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGH,SAA9B,EAAyCG,MAAM,EAA/C,EAAmD;KACjD,IAAIvG,UAAU,GAAGkG,MAAM,CAAC,CAAD,CAAN,CAAUK,MAAV,CAAjB,CAAA;KACA,IAAItG,UAAU,GAAGiG,MAAM,CAAC,CAAD,CAAN,CAAUK,MAAV,CAAjB,CAAA;;KACA,KAAK,IAAID,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;CACrC,MAAA,IAAIJ,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAsBvG,GAAAA,UAA1B,EAAsCA,UAAU,GAAGkG,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAb,CAAA;CACtC,MAAA,IAAIL,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAsBtG,GAAAA,UAA1B,EAAsCA,UAAU,GAAGiG,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAb,CAAA;CACvC,KAAA;;KAED,MAAMrH,MAAM,GAAG,CAACzD,GAAG,GAAGD,GAAP,KAAeyE,UAAU,GAAGD,UAA5B,CAAf,CAAA;;KAEA,KAAK,IAAIsG,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGH,MAAxB,EAAgCG,GAAG,EAAnC,EAAuC;CACrCD,MAAAA,SAAS,CAACC,GAAD,CAAT,CAAeC,MAAf,CAAA,GACE,CAACL,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAA,GAAsBvG,UAAvB,IAAqCd,MAArC,GAA8C1D,GADhD,CAAA;CAED,KAAA;CACF,GAAA;;CACD,EAAA,OAAO6K,SAAP,CAAA;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCWD,EAAA,CAAC,UAAU8c,MAAV,EAAkBC,OAAlB,EAA2B;KACuCrpB,MAAiB,CAAAC,OAAjB,GAAiBopB,OAAO,EAAvF,CAAA,CAAA;CAGH,GAJD,EAIGC,cAJH,EAIU,YAAY;;KAElB,IAAIC,OAAO,GAAG,UAAUlmB,CAAV,EAAa5B,GAAb,EAAkBC,GAAlB,EAAuB;CACjC,MAAA,IAAKD,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,CAAJ,CAAA;CACtB,MAAA,IAAKC,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,CAAJ,CAAA;CAEtB,MAAA,OAAO2B,CAAC,GAAG5B,GAAJ,GAAUA,GAAV,GAAgB4B,CAAC,GAAG3B,GAAJ,GAAUA,GAAV,GAAgB2B,CAAvC,CAAA;MAJJ,CAAA;;KAOA,IAAImmB,OAAO,GAAGD,OAAd,CAAA;;CAEA,IAAA,IAAIE,UAAU,GAAG,UAAUC,GAAV,EAAe;OAC5BA,GAAG,CAACC,QAAJ,GAAe,KAAf,CAAA;OACAD,GAAG,CAACE,UAAJ,GAAiBF,GAAG,CAAClpB,KAAJ,CAAU,CAAV,CAAjB,CAAA;;OACA,KAAK,IAAIb,CAAC,GAAC,CAAX,EAAcA,CAAC,IAAE,CAAjB,EAAoBA,CAAC,EAArB,EAAyB;SACrB,IAAIA,CAAC,GAAG,CAAR,EAAW;CACP,UAAA,IAAI+pB,GAAG,CAAC/pB,CAAD,CAAH,GAAS,CAAT,IAAc+pB,GAAG,CAAC/pB,CAAD,CAAH,GAAS,GAA3B,EAAgC;aAAE+pB,GAAG,CAACC,QAAJ,GAAe,IAAf,CAAA;CAAsB,WAAA;;CACxDD,UAAAA,GAAG,CAAC/pB,CAAD,CAAH,GAAS6pB,OAAO,CAACE,GAAG,CAAC/pB,CAAD,CAAJ,EAAS,CAAT,EAAY,GAAZ,CAAhB,CAAA;CACH,SAHD,MAGO,IAAIA,CAAC,KAAK,CAAV,EAAa;CAChB+pB,UAAAA,GAAG,CAAC/pB,CAAD,CAAH,GAAS6pB,OAAO,CAACE,GAAG,CAAC/pB,CAAD,CAAJ,EAAS,CAAT,EAAY,CAAZ,CAAhB,CAAA;CACH,SAAA;CACJ,OAAA;;CACD,MAAA,OAAO+pB,GAAP,CAAA;CACH,KAZD,CAXkB;;;KA0BlB,IAAIG,WAAW,GAAG,EAAlB,CAAA;;CACA,IAAA,KAAK,IAAIC,GAAG,GAAG,CAAV,EAAaC,MAAM,GAAG,CAAC,SAAD,EAAY,QAAZ,EAAsB,QAAtB,EAAgC,UAAhC,EAA4C,OAA5C,EAAqD,MAArD,EAA6D,QAA7D,EAAuE,WAAvE,EAAoF,MAApF,CAA3B,EAAwHD,GAAG,GAAGC,MAAM,CAAC/rB,MAArI,EAA6I8rB,GAAG,IAAI,CAApJ,EAAuJ;CACnJ,MAAA,IAAIpc,IAAI,GAAGqc,MAAM,CAACD,GAAD,CAAjB,CAAA;OAEAD,WAAW,CAAE,UAAanc,GAAAA,IAAb,GAAoB,GAAtB,CAAX,GAAyCA,IAAI,CAAC3I,WAAL,EAAzC,CAAA;CACH,KAAA;;CACD,IAAA,IAAIilB,MAAM,GAAG,UAASC,GAAT,EAAc;CACvB,MAAA,OAAOJ,WAAW,CAAC9qB,MAAM,CAACC,SAAP,CAAiBF,QAAjB,CAA0BK,IAA1B,CAA+B8qB,GAA/B,CAAD,CAAX,IAAoD,QAA3D,CAAA;MADJ,CAAA;;KAIA,IAAIC,MAAM,GAAGF,MAAb,CAAA;;CAEA,IAAA,IAAIG,QAAQ,GAAG,UAAUC,IAAV,EAAgBC,QAAhB,EAA0B;OACrC,IAAKA,QAAQ,KAAK,KAAK,CAAvB,EAA2BA,QAAQ,GAAC,IAAT,CADU;;CAIrC,MAAA,IAAID,IAAI,CAACpsB,MAAL,IAAe,CAAnB,EAAsB;SAAE,OAAOoJ,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BirB,IAA3B,CAAP,CAAA;CAA0C,OAJ7B;CAM7C;;;OACK,IAAIF,MAAM,CAACE,IAAI,CAAC,CAAD,CAAL,CAAN,IAAmB,QAAnB,IAA+BC,QAAnC,EAA6C;SAC5C,OAAOA,QAAQ,CAACC,KAAT,CAAe,EAAf,EACLriB,MADK,CACE,UAAU8Q,CAAV,EAAa;CAAE,UAAA,OAAOqR,IAAI,CAAC,CAAD,CAAJ,CAAQrR,CAAR,MAAe9X,SAAtB,CAAA;CAAkC,SADnD,CAEL6G,CAAAA,GAFK,CAED,UAAUiR,CAAV,EAAa;CAAE,UAAA,OAAOqR,IAAI,CAAC,CAAD,CAAJ,CAAQrR,CAAR,CAAP,CAAA;CAAoB,SAFlC,CAAP,CAAA;CAGA,OAXuC;CAa7C;;;OACQ,OAAOqR,IAAI,CAAC,CAAD,CAAX,CAAA;MAdJ,CAAA;;KAiBA,IAAIG,MAAM,GAAGP,MAAb,CAAA;;CAEA,IAAA,IAAIQ,MAAM,GAAG,UAAUJ,IAAV,EAAgB;CACzB,MAAA,IAAIA,IAAI,CAACpsB,MAAL,GAAc,CAAlB,EAAqB;CAAE,QAAA,OAAO,IAAP,CAAA;CAAc,OAAA;;CACrC,MAAA,IAAI4Z,CAAC,GAAGwS,IAAI,CAACpsB,MAAL,GAAY,CAApB,CAAA;;OACA,IAAIusB,MAAM,CAACH,IAAI,CAACxS,CAAD,CAAL,CAAN,IAAmB,QAAvB,EAAiC;CAAE,QAAA,OAAOwS,IAAI,CAACxS,CAAD,CAAJ,CAAQ7S,WAAR,EAAP,CAAA;CAA+B,OAAA;;CAClE,MAAA,OAAO,IAAP,CAAA;MAJJ,CAAA;;CAOA,IAAA,IAAI0lB,IAAI,GAAG9rB,IAAI,CAAC+rB,EAAhB,CAAA;CAEA,IAAA,IAAIC,KAAK,GAAG;CACXC,MAAAA,QAAQ,EAAEnB,UADC;CAEXoB,MAAAA,KAAK,EAAEtB,OAFI;CAGXxN,MAAAA,IAAI,EAAEiO,MAHK;CAIXc,MAAAA,MAAM,EAAEX,QAJG;CAKXlJ,MAAAA,IAAI,EAAEuJ,MALK;CAMXE,MAAAA,EAAE,EAAED,IANO;OAOXM,KAAK,EAAEN,IAAI,GAAC,CAPD;OAQXO,OAAO,EAAEP,IAAI,GAAC,CARH;OASXQ,OAAO,EAAER,IAAI,GAAG,GATL;CAUXS,MAAAA,OAAO,EAAE,GAAMT,GAAAA,IAAAA;MAVhB,CAAA;CAaA,IAAA,IAAIU,OAAO,GAAG;CACbC,MAAAA,MAAM,EAAE,EADK;CAEbC,MAAAA,UAAU,EAAE,EAAA;MAFb,CAAA;CAKA,IAAA,IAAIC,MAAM,GAAGX,KAAK,CAAC1J,IAAnB,CAAA;CACA,IAAA,IAAIsK,UAAU,GAAGZ,KAAK,CAACC,QAAvB,CAAA;CACA,IAAA,IAAIY,MAAM,GAAGb,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAI0P,MAAM,GAAGN,OAAb,CAAA;;CAEA,IAAA,IAAIO,OAAO,GAAG,SAASC,KAAT,GAAiB;OAC3B,IAAIvB,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,IAAIC,EAAE,GAAG,IAAT,CAAA;;OACA,IAAIL,MAAM,CAACpB,IAAI,CAAC,CAAD,CAAL,CAAN,KAAoB,QAApB,IACAA,IAAI,CAAC,CAAD,CAAJ,CAAQ3c,WADR,IAEA2c,IAAI,CAAC,CAAD,CAAJ,CAAQ3c,WAAR,KAAwB,IAAKA,CAAAA,WAFjC,EAE8C;CACtD;SACY,OAAO2c,IAAI,CAAC,CAAD,CAAX,CAAA;CACH,OAV0B;;;CAa3B,MAAA,IAAI0B,IAAI,GAAGR,MAAM,CAAClB,IAAD,CAAjB,CAAA;OACA,IAAIiB,UAAU,GAAG,KAAjB,CAAA;;OAEA,IAAI,CAACS,IAAL,EAAW;CACPT,QAAAA,UAAU,GAAG,IAAb,CAAA;;CACA,QAAA,IAAI,CAACI,MAAM,CAAC5oB,MAAZ,EAAoB;CAChB4oB,UAAAA,MAAM,CAACJ,UAAP,GAAoBI,MAAM,CAACJ,UAAP,CAAkBhqB,IAAlB,CAAuB,UAAUhC,CAAV,EAAYS,CAAZ,EAAe;CAAE,YAAA,OAAOA,CAAC,CAAC0Z,CAAF,GAAMna,CAAC,CAACma,CAAf,CAAA;CAAmB,WAA3D,CAApB,CAAA;WACAiS,MAAM,CAAC5oB,MAAP,GAAgB,IAAhB,CAAA;CACH,SALM;;;SAOP,KAAK,IAAIlD,CAAC,GAAG,CAAR,EAAWosB,IAAI,GAAGN,MAAM,CAACJ,UAA9B,EAA0C1rB,CAAC,GAAGosB,IAAI,CAAC/tB,MAAnD,EAA2D2B,CAAC,IAAI,CAAhE,EAAmE;CAC/D,UAAA,IAAIqsB,GAAG,GAAGD,IAAI,CAACpsB,CAAD,CAAd,CAAA;WAEAmsB,IAAI,GAAGE,GAAG,CAACC,IAAJ,CAAShU,KAAT,CAAe+T,GAAf,EAAoB5B,IAApB,CAAP,CAAA;;CACA,UAAA,IAAI0B,IAAJ,EAAU;CAAE,YAAA,MAAA;CAAQ,WAAA;CACvB,SAAA;CACJ,OAAA;;CAED,MAAA,IAAIL,MAAM,CAACL,MAAP,CAAcU,IAAd,CAAJ,EAAyB;SACrB,IAAIpC,GAAG,GAAG+B,MAAM,CAACL,MAAP,CAAcU,IAAd,CAAA,CAAoB7T,KAApB,CAA0B,IAA1B,EAAgCoT,UAAU,GAAGjB,IAAH,GAAUA,IAAI,CAAC5pB,KAAL,CAAW,CAAX,EAAa,CAAC,CAAd,CAApD,CAAV,CAAA;;CACAqrB,QAAAA,EAAE,CAACK,IAAH,GAAUX,UAAU,CAAC7B,GAAD,CAApB,CAAA;CACH,OAHD,MAGO;CACH,QAAA,MAAM,IAAI7qB,KAAJ,CAAU,kBAAA,GAAmBurB,IAA7B,CAAN,CAAA;CACH,OApC0B;;;CAuC3B,MAAA,IAAIyB,EAAE,CAACK,IAAH,CAAQluB,MAAR,KAAmB,CAAvB,EAA0B;CAAE6tB,QAAAA,EAAE,CAACK,IAAH,CAAQnmB,IAAR,CAAa,CAAb,CAAA,CAAA;CAAkB,OAAA;MAvClD,CAAA;;CA0CA2lB,IAAAA,OAAO,CAAC1sB,SAAR,CAAkBF,QAAlB,GAA6B,SAASA,QAAT,GAAqB;CAC9C,MAAA,IAAI0sB,MAAM,CAAC,IAAA,CAAKW,GAAN,CAAN,IAAoB,UAAxB,EAAoC;SAAE,OAAO,IAAA,CAAKA,GAAL,EAAP,CAAA;CAAoB,OAAA;;OAC1D,OAAQ,GAAA,GAAO,KAAKD,IAAL,CAAU/d,IAAV,CAAe,GAAf,CAAP,GAA8B,GAAtC,CAAA;MAFJ,CAAA;;KAKA,IAAIie,OAAO,GAAGV,OAAd,CAAA;;KAEA,IAAIW,QAAQ,GAAG,YAAY;OAC1B,IAAIjC,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BoU,QAAQ,CAACV,KAAxC,EAA+C,CAAE,IAAF,CAAA,CAASlgB,MAAT,CAAiB2e,IAAjB,CAA/C,CAAL,GAAP,CAAA;MAJD,CAAA;;KAOAiC,QAAQ,CAACV,KAAT,GAAiBS,OAAjB,CAAA;KACAC,QAAQ,CAACE,OAAT,GAAmB,OAAnB,CAAA;KAEA,IAAIC,QAAQ,GAAGH,QAAf,CAAA;CAEA,IAAA,IAAII,QAAQ,GAAG9B,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI4B,KAAK,GAAG/tB,IAAI,CAAC+C,GAAjB,CAAA;;KAEA,IAAIirB,UAAU,GAAG,YAAY;OACzB,IAAIvC,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGH,QAAQ,CAACrC,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACAvM,CAAC,GAAGA,CAAC,GAAG,GAAR,CAAA;OACA5gB,CAAC,GAAGA,CAAC,GAAG,GAAR,CAAA;OACAK,CAAC,GAAGA,CAAC,GAAG,GAAR,CAAA;CACA,MAAA,IAAIiZ,CAAC,GAAG,CAAI2T,GAAAA,KAAK,CAACrM,CAAD,EAAGqM,KAAK,CAACjtB,CAAD,EAAGK,CAAH,CAAR,CAAjB,CAAA;OACA,IAAIN,CAAC,GAAGuZ,CAAC,GAAG,CAAJ,GAAQ,CAAA,IAAK,CAAEA,GAAAA,CAAP,CAAR,GAAoB,CAA5B,CAAA;OACA,IAAIlZ,CAAC,GAAG,CAAC,CAAA,GAAEwgB,CAAF,GAAItH,CAAL,IAAUvZ,CAAlB,CAAA;OACA,IAAI8Z,CAAC,GAAG,CAAC,CAAA,GAAE7Z,CAAF,GAAIsZ,CAAL,IAAUvZ,CAAlB,CAAA;OACA,IAAIwH,CAAC,GAAG,CAAC,CAAA,GAAElH,CAAF,GAAIiZ,CAAL,IAAUvZ,CAAlB,CAAA;OACA,OAAO,CAACK,CAAD,EAAGyZ,CAAH,EAAKtS,CAAL,EAAO+R,CAAP,CAAP,CAAA;MAhBJ,CAAA;;KAmBA,IAAI8T,UAAU,GAAGF,UAAjB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAGnC,KAAK,CAACG,MAArB,CAAA;;KAEA,IAAIiC,QAAQ,GAAG,YAAY;OACvB,IAAI3C,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAG0C,QAAQ,CAAC1C,IAAD,EAAO,MAAP,CAAf,CAAA;CACA,MAAA,IAAIvqB,CAAC,GAAGuqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI9Q,CAAC,GAAG8Q,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIpjB,CAAC,GAAGojB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIrR,CAAC,GAAGqR,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI1D,KAAK,GAAG0D,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAxC,CAAA;;OACA,IAAIrR,CAAC,KAAK,CAAV,EAAa;SAAE,OAAO,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,EAAO2N,KAAP,CAAP,CAAA;CAAuB,OAAA;;CACtC,MAAA,OAAO,CACH7mB,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,GAAO,IAAA,CAAA,GAAEA,CAAT,CAAA,IAAe,CAAEkZ,GAAAA,CAAjB,CADV;CAEHO,MAAAA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,GAAA,IAAO,CAAEA,GAAAA,CAAT,CAAe,IAAA,CAAA,GAAEP,CAAjB,CAFV;CAGH/R,MAAAA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,GAAA,IAAO,CAAEA,GAAAA,CAAT,CAAe,IAAA,CAAA,GAAE+R,CAAjB,CAHV;CAIH2N,MAAAA,KAJG,CAAP,CAAA;MAXJ,CAAA;;KAmBA,IAAIsG,UAAU,GAAGD,QAAjB,CAAA;KAEA,IAAIE,QAAQ,GAAGT,QAAf,CAAA;KACA,IAAIU,OAAO,GAAGd,OAAd,CAAA;KACA,IAAIe,OAAO,GAAGhC,OAAd,CAAA;CACA,IAAA,IAAIiC,QAAQ,GAAGzC,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIuC,MAAM,GAAG1C,KAAK,CAAC5O,IAAnB,CAAA;KAEA,IAAIuR,QAAQ,GAAGT,UAAf,CAAA;;CAEAK,IAAAA,OAAO,CAACluB,SAAR,CAAkBuuB,IAAlB,GAAyB,YAAW;CAChC,MAAA,OAAOD,QAAQ,CAAC,IAAKpB,CAAAA,IAAN,CAAf,CAAA;MADJ,CAAA;;KAIAe,QAAQ,CAACM,IAAT,GAAgB,YAAY;OACxB,IAAInD,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BiV,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASzhB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,MAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA+C,IAAAA,OAAO,CAAC/B,MAAR,CAAemC,IAAf,GAAsBP,UAAtB,CAAA;CAEAG,IAAAA,OAAO,CAAC9B,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAGgD,QAAQ,CAAChD,IAAD,EAAO,MAAP,CAAf,CAAA;;CACA,QAAA,IAAIiD,MAAM,CAACjD,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,MAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAIwvB,QAAQ,GAAG7C,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI2C,MAAM,GAAG9C,KAAK,CAAC1J,IAAnB,CAAA;;CACA,IAAA,IAAIyM,GAAG,GAAG,UAAUruB,CAAV,EAAa;OAAE,OAAOV,IAAI,CAACsK,KAAL,CAAW5J,CAAC,GAAC,GAAb,IAAkB,GAAzB,CAAA;MAAzB,CAAA;CAEJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;KACI,IAAIsuB,SAAS,GAAG,YAAY;OACxB,IAAIvD,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgC,IAAI,GAAGJ,QAAQ,CAACpD,IAAD,EAAO,MAAP,CAAnB,CAAA;CACA,MAAA,IAAI0B,IAAI,GAAG2B,MAAM,CAACrD,IAAD,CAAN,IAAgB,KAA3B,CAAA;CACAwD,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,GAAG,CAACE,IAAI,CAAC,CAAD,CAAJ,IAAW,CAAZ,CAAb,CAAA;CACAA,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,GAAG,CAACE,IAAI,CAAC,CAAD,CAAJ,GAAQ,GAAT,CAAH,GAAmB,GAA7B,CAAA;CACAA,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,GAAG,CAACE,IAAI,CAAC,CAAD,CAAJ,GAAQ,GAAT,CAAH,GAAmB,GAA7B,CAAA;;CACA,MAAA,IAAI9B,IAAI,KAAK,MAAT,IAAoB8B,IAAI,CAAC5vB,MAAL,GAAc,CAAd,IAAmB4vB,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAnD,EAAuD;CACnDA,QAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC5vB,MAAL,GAAc,CAAd,GAAkB4vB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAtC,CAAA;CACA9B,QAAAA,IAAI,GAAG,MAAP,CAAA;CACH,OAHD,MAGO;SACH8B,IAAI,CAAC5vB,MAAL,GAAc,CAAd,CAAA;CACH,OAAA;;OACD,OAAQ8tB,IAAI,GAAG,GAAP,GAAc8B,IAAI,CAACzf,IAAL,CAAU,GAAV,CAAd,GAAgC,GAAxC,CAAA;MAfJ,CAAA;;KAkBA,IAAI0f,SAAS,GAAGF,SAAhB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAGnD,KAAK,CAACG,MAArB,CAAA;CAEJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;KACI,IAAIiD,SAAS,GAAG,YAAY;OACxB,IAAI3D,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAG0D,QAAQ,CAAC1D,IAAD,EAAO,MAAP,CAAf,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAG+J,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI3qB,CAAC,GAAG2qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAItqB,CAAC,GAAGsqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CAEA/J,MAAAA,CAAC,IAAI,GAAL,CAAA;CACA5gB,MAAAA,CAAC,IAAI,GAAL,CAAA;CACAK,MAAAA,CAAC,IAAI,GAAL,CAAA;OAEA,IAAI2B,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAAS4e,CAAT,EAAY5gB,CAAZ,EAAeK,CAAf,CAAV,CAAA;OACA,IAAI4B,GAAG,GAAG/C,IAAI,CAAC+C,GAAL,CAAS2e,CAAT,EAAY5gB,CAAZ,EAAeK,CAAf,CAAV,CAAA;CAEA,MAAA,IAAI8X,CAAC,GAAG,CAAClW,GAAG,GAAGD,GAAP,IAAc,CAAtB,CAAA;OACA,IAAI8a,CAAJ,EAAO7c,CAAP,CAAA;;OAEA,IAAIgC,GAAG,KAAKD,GAAZ,EAAgB;CACZ8a,QAAAA,CAAC,GAAG,CAAJ,CAAA;SACA7c,CAAC,GAAGyB,MAAM,CAACga,GAAX,CAAA;CACH,OAHD,MAGO;SACHoB,CAAC,GAAG3E,CAAC,GAAG,GAAJ,GAAU,CAAClW,GAAG,GAAGD,GAAP,KAAeC,GAAG,GAAGD,GAArB,CAAV,GAAsC,CAACC,GAAG,GAAGD,GAAP,KAAe,CAAIC,GAAAA,GAAJ,GAAUD,GAAzB,CAA1C,CAAA;CACH,OAAA;;OAED,IAAI4e,CAAC,IAAI3e,GAAT,EAAc;SAAEhC,CAAC,GAAG,CAACD,CAAC,GAAGK,CAAL,KAAW4B,GAAG,GAAGD,GAAjB,CAAJ,CAAA;CAA4B,OAA5C,MACK,IAAIhC,CAAC,IAAIiC,GAAT,EAAc;SAAEhC,CAAC,GAAG,CAAI,GAAA,CAACI,CAAC,GAAGugB,CAAL,KAAW3e,GAAG,GAAGD,GAAjB,CAAR,CAAA;CAAgC,OAAhD,MACA,IAAI3B,CAAC,IAAI4B,GAAT,EAAc;SAAEhC,CAAC,GAAG,CAAI,GAAA,CAAC2gB,CAAC,GAAG5gB,CAAL,KAAWiC,GAAG,GAAGD,GAAjB,CAAR,CAAA;CAAgC,OAAA;;CAErD/B,MAAAA,CAAC,IAAI,EAAL,CAAA;;OACA,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,QAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,OAAA;;CACxB,MAAA,IAAI0qB,IAAI,CAACpsB,MAAL,GAAY,CAAZ,IAAiBosB,IAAI,CAAC,CAAD,CAAJ,KAAUnpB,SAA/B,EAA0C;SAAE,OAAO,CAACvB,CAAD,EAAG6c,CAAH,EAAK3E,CAAL,EAAOwS,IAAI,CAAC,CAAD,CAAX,CAAP,CAAA;CAAyB,OAAA;;CACrE,MAAA,OAAO,CAAC1qB,CAAD,EAAG6c,CAAH,EAAK3E,CAAL,CAAP,CAAA;MAjCJ,CAAA;;KAoCA,IAAIoW,SAAS,GAAGD,SAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAGtD,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIoD,MAAM,GAAGvD,KAAK,CAAC1J,IAAnB,CAAA;KACA,IAAIkN,OAAO,GAAGN,SAAd,CAAA;KACA,IAAIO,SAAS,GAAGJ,SAAhB,CAAA;CACA,IAAA,IAAIK,OAAO,GAAG1vB,IAAI,CAACsK,KAAnB,CAAA;CAEJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;KACI,IAAIqlB,SAAS,GAAG,YAAY;OACxB,IAAIlE,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAI2C,IAAI,GAAGN,QAAQ,CAAC7D,IAAD,EAAO,MAAP,CAAnB,CAAA;CACA,MAAA,IAAI0B,IAAI,GAAGoC,MAAM,CAAC9D,IAAD,CAAN,IAAgB,KAA3B,CAAA;;OACA,IAAI0B,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAoB,IAAA,KAAxB,EAA+B;SAC3B,OAAOL,OAAO,CAACC,SAAS,CAACG,IAAD,CAAV,EAAkBzC,IAAlB,CAAd,CAAA;CACH,OAAA;;OACDyC,IAAI,CAAC,CAAD,CAAJ,GAAUF,OAAO,CAACE,IAAI,CAAC,CAAD,CAAL,CAAjB,CAAA;OACAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,OAAO,CAACE,IAAI,CAAC,CAAD,CAAL,CAAjB,CAAA;OACAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,OAAO,CAACE,IAAI,CAAC,CAAD,CAAL,CAAjB,CAAA;;CACA,MAAA,IAAIzC,IAAI,KAAK,MAAT,IAAoByC,IAAI,CAACvwB,MAAL,GAAc,CAAd,IAAmBuwB,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAnD,EAAuD;CACnDA,QAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAACvwB,MAAL,GAAc,CAAd,GAAkBuwB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAtC,CAAA;CACAzC,QAAAA,IAAI,GAAG,MAAP,CAAA;CACH,OAAA;;OACD,OAAQA,IAAI,GAAG,GAAP,GAAcyC,IAAI,CAAC/tB,KAAL,CAAW,CAAX,EAAasrB,IAAI,KAAG,KAAP,GAAa,CAAb,GAAe,CAA5B,CAAA,CAA+B3d,IAA/B,CAAoC,GAApC,CAAd,GAA0D,GAAlE,CAAA;MAhBJ,CAAA;;KAmBA,IAAIsgB,SAAS,GAAGH,SAAhB,CAAA;CAEA,IAAA,IAAII,QAAQ,GAAG/D,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI6D,OAAO,GAAGhwB,IAAI,CAACsK,KAAnB,CAAA;;KAEA,IAAI2lB,SAAS,GAAG,YAAY;CACxB,MAAA,IAAIC,MAAJ,CAAA;OAEA,IAAIzE,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAChBxB,MAAAA,IAAI,GAAGsE,QAAQ,CAACtE,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI7N,CAAC,GAAG6N,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGwS,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI/J,CAAJ,EAAM5gB,CAAN,EAAQK,CAAR,CAAA;;OACA,IAAIyc,CAAC,KAAK,CAAV,EAAa;CACT8D,QAAAA,CAAC,GAAG5gB,CAAC,GAAGK,CAAC,GAAG8X,CAAC,GAAC,GAAd,CAAA;CACH,OAFD,MAEO;SACH,IAAIkX,EAAE,GAAG,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAT,CAAA;SACA,IAAIjvB,CAAC,GAAG,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAR,CAAA;CACA,QAAA,IAAIkvB,EAAE,GAAGnX,CAAC,GAAG,GAAJ,GAAUA,CAAC,IAAI,CAAA,GAAE2E,CAAN,CAAX,GAAsB3E,CAAC,GAAC2E,CAAF,GAAI3E,CAAC,GAAC2E,CAArC,CAAA;CACA,QAAA,IAAIyS,EAAE,GAAG,CAAIpX,GAAAA,CAAJ,GAAQmX,EAAjB,CAAA;CACA,QAAA,IAAIE,EAAE,GAAGvvB,CAAC,GAAG,GAAb,CAAA;CACAovB,QAAAA,EAAE,CAAC,CAAD,CAAF,GAAQG,EAAE,GAAG,IAAE,CAAf,CAAA;CACAH,QAAAA,EAAE,CAAC,CAAD,CAAF,GAAQG,EAAR,CAAA;CACAH,QAAAA,EAAE,CAAC,CAAD,CAAF,GAAQG,EAAE,GAAG,IAAE,CAAf,CAAA;;SACA,KAAK,IAAItvB,CAAC,GAAC,CAAX,EAAcA,CAAC,GAAC,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;CACpB,UAAA,IAAImvB,EAAE,CAACnvB,CAAD,CAAF,GAAQ,CAAZ,EAAe;CAAEmvB,YAAAA,EAAE,CAACnvB,CAAD,CAAF,IAAS,CAAT,CAAA;CAAa,WAAA;;CAC9B,UAAA,IAAImvB,EAAE,CAACnvB,CAAD,CAAF,GAAQ,CAAZ,EAAe;CAAEmvB,YAAAA,EAAE,CAACnvB,CAAD,CAAF,IAAS,CAAT,CAAA;CAAa,WAAA;;CAC9B,UAAA,IAAI,IAAImvB,EAAE,CAACnvB,CAAD,CAAN,GAAY,CAAhB,EACI;CAAEE,YAAAA,CAAC,CAACF,CAAD,CAAD,GAAOqvB,EAAE,GAAG,CAACD,EAAE,GAAGC,EAAN,IAAY,CAAZ,GAAgBF,EAAE,CAACnvB,CAAD,CAA9B,CAAA;YADN,MAEK,IAAI,CAAImvB,GAAAA,EAAE,CAACnvB,CAAD,CAAN,GAAY,CAAhB,EACD;CAAEE,YAAAA,CAAC,CAACF,CAAD,CAAD,GAAOovB,EAAP,CAAA;YADD,MAEA,IAAI,CAAID,GAAAA,EAAE,CAACnvB,CAAD,CAAN,GAAY,CAAhB,EACD;CAAEE,YAAAA,CAAC,CAACF,CAAD,CAAD,GAAOqvB,EAAE,GAAG,CAACD,EAAE,GAAGC,EAAN,KAAc,CAAA,GAAI,CAAL,GAAUF,EAAE,CAACnvB,CAAD,CAAzB,IAAgC,CAA5C,CAAA;CAAgD,WADjD,MAGD;CAAEE,YAAAA,CAAC,CAACF,CAAD,CAAD,GAAOqvB,EAAP,CAAA;CAAY,WAAA;CACrB,SAAA;;SACAH,MAAM,GAAG,CAACF,OAAO,CAAC9uB,CAAC,CAAC,CAAD,CAAD,GAAK,GAAN,CAAR,EAAmB8uB,OAAO,CAAC9uB,CAAC,CAAC,CAAD,CAAD,GAAK,GAAN,CAA1B,EAAqC8uB,OAAO,CAAC9uB,CAAC,CAAC,CAAD,CAAD,GAAK,GAAN,CAA5C,CAAT,EAAkEwgB,CAAC,GAAGwO,MAAM,CAAC,CAAD,CAA5E,EAAiFpvB,CAAC,GAAGovB,MAAM,CAAC,CAAD,CAA3F,EAAgG/uB,CAAC,GAAG+uB,MAAM,CAAC,CAAD,CAA3G,CAAA;CACH,OAAA;;CACD,MAAA,IAAIzE,IAAI,CAACpsB,MAAL,GAAc,CAAlB,EAAqB;CAC7B;SACY,OAAO,CAACqiB,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAOsqB,IAAI,CAAC,CAAD,CAAX,CAAP,CAAA;CACH,OAAA;;OACD,OAAO,CAAC/J,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAO,CAAP,CAAP,CAAA;MAvCJ,CAAA;;KA0CA,IAAIovB,SAAS,GAAGN,SAAhB,CAAA;KAEA,IAAIO,OAAO,GAAGD,SAAd,CAAA;KACA,IAAIE,OAAO,GAAGjE,OAAd,CAAA;KAEA,IAAIkE,MAAM,GAAG,iDAAb,CAAA;KACA,IAAIC,OAAO,GAAG,uEAAd,CAAA;KACA,IAAIC,UAAU,GAAG,kFAAjB,CAAA;KACA,IAAIC,WAAW,GAAG,wGAAlB,CAAA;KACA,IAAIC,MAAM,GAAG,iFAAb,CAAA;KACA,IAAIC,OAAO,GAAG,uGAAd,CAAA;CAEA,IAAA,IAAIC,OAAO,GAAGhxB,IAAI,CAACsK,KAAnB,CAAA;;CAEA,IAAA,IAAI2mB,SAAS,GAAG,UAAUC,GAAV,EAAe;CAC3BA,MAAAA,GAAG,GAAGA,GAAG,CAAC9qB,WAAJ,EAAA,CAAkB+qB,IAAlB,EAAN,CAAA;CACA,MAAA,IAAIxW,CAAJ,CAAA;;CAEA,MAAA,IAAI8V,OAAO,CAAChE,MAAR,CAAe2E,KAAnB,EAA0B;SACtB,IAAI;CACA,UAAA,OAAOX,OAAO,CAAChE,MAAR,CAAe2E,KAAf,CAAqBF,GAArB,CAAP,CAAA;CACH,SAFD,CAEE,OAAOtwB,CAAP,EAAU;CAEX,SAAA;CACJ,OAV0B;;;OAa3B,IAAK+Z,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUX,MAAV,CAAT,EAA6B;SACzB,IAAI3F,GAAG,GAAGpQ,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAV,CAAA;;SACA,KAAK,IAAIb,CAAC,GAAC,CAAX,EAAcA,CAAC,GAAC,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;WACpB+pB,GAAG,CAAC/pB,CAAD,CAAH,GAAS,CAAC+pB,GAAG,CAAC/pB,CAAD,CAAb,CAAA;CACH,SAAA;;CACD+pB,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS,CAAT,CALyB;;CAMzB,QAAA,OAAOA,GAAP,CAAA;CACH,OApB0B;;;OAuB3B,IAAKpQ,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUV,OAAV,CAAT,EAA8B;SAC1B,IAAIW,KAAK,GAAG3W,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAZ,CAAA;;SACA,KAAK,IAAIspB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC,CAApB,EAAuBA,GAAG,EAA1B,EAA8B;WAC1BmG,KAAK,CAACnG,GAAD,CAAL,GAAa,CAACmG,KAAK,CAACnG,GAAD,CAAnB,CAAA;CACH,SAAA;;CACD,QAAA,OAAOmG,KAAP,CAAA;CACH,OA7B0B;;;OAgC3B,IAAK3W,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUT,UAAV,CAAT,EAAiC;SAC7B,IAAIW,KAAK,GAAG5W,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAZ,CAAA;;SACA,KAAK,IAAI2vB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC,CAApB,EAAuBA,GAAG,EAA1B,EAA8B;CAC1BD,UAAAA,KAAK,CAACC,GAAD,CAAL,GAAaR,OAAO,CAACO,KAAK,CAACC,GAAD,CAAL,GAAa,IAAd,CAApB,CAAA;CACH,SAAA;;CACDD,QAAAA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX,CAL6B;;CAM7B,QAAA,OAAOA,KAAP,CAAA;CACH,OAvC0B;;;OA0C3B,IAAK5W,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUR,WAAV,CAAT,EAAkC;SAC9B,IAAIY,KAAK,GAAG9W,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAZ,CAAA;;SACA,KAAK,IAAI6vB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC,CAApB,EAAuBA,GAAG,EAA1B,EAA8B;CAC1BD,UAAAA,KAAK,CAACC,GAAD,CAAL,GAAaV,OAAO,CAACS,KAAK,CAACC,GAAD,CAAL,GAAa,IAAd,CAApB,CAAA;CACH,SAAA;;SACDD,KAAK,CAAC,CAAD,CAAL,GAAW,CAACA,KAAK,CAAC,CAAD,CAAjB,CAAA;CACA,QAAA,OAAOA,KAAP,CAAA;CACH,OAjD0B;;;OAoD3B,IAAK9W,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUP,MAAV,CAAT,EAA6B;SACzB,IAAIa,GAAG,GAAGhX,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAV,CAAA;CACA8vB,QAAAA,GAAG,CAAC,CAAD,CAAH,IAAU,IAAV,CAAA;CACAA,QAAAA,GAAG,CAAC,CAAD,CAAH,IAAU,IAAV,CAAA;CACA,QAAA,IAAIC,KAAK,GAAGpB,OAAO,CAACmB,GAAD,CAAnB,CAAA;CACAC,QAAAA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX,CAAA;CACA,QAAA,OAAOA,KAAP,CAAA;CACH,OA3D0B;;;OA8D3B,IAAKjX,CAAC,GAAGuW,GAAG,CAACG,KAAJ,CAAUN,OAAV,CAAT,EAA8B;SAC1B,IAAIc,KAAK,GAAGlX,CAAC,CAAC9Y,KAAF,CAAQ,CAAR,EAAU,CAAV,CAAZ,CAAA;CACAgwB,QAAAA,KAAK,CAAC,CAAD,CAAL,IAAY,IAAZ,CAAA;CACAA,QAAAA,KAAK,CAAC,CAAD,CAAL,IAAY,IAAZ,CAAA;CACA,QAAA,IAAIC,KAAK,GAAGtB,OAAO,CAACqB,KAAD,CAAnB,CAAA;SACAC,KAAK,CAAC,CAAD,CAAL,GAAW,CAACnX,CAAC,CAAC,CAAD,CAAb,CAL0B;;CAM1B,QAAA,OAAOmX,KAAP,CAAA;CACH,OAAA;MArEL,CAAA;;CAwEAb,IAAAA,SAAS,CAAC3D,IAAV,GAAiB,UAAU1P,CAAV,EAAa;CAC1B,MAAA,OAAO8S,MAAM,CAACpD,IAAP,CAAY1P,CAAZ,KACH+S,OAAO,CAACrD,IAAR,CAAa1P,CAAb,CADG,IAEHgT,UAAU,CAACtD,IAAX,CAAgB1P,CAAhB,CAFG,IAGHiT,WAAW,CAACvD,IAAZ,CAAiB1P,CAAjB,CAHG,IAIHkT,MAAM,CAACxD,IAAP,CAAY1P,CAAZ,CAJG,IAKHmT,OAAO,CAACzD,IAAR,CAAa1P,CAAb,CALJ,CAAA;MADJ,CAAA;;KASA,IAAImU,SAAS,GAAGd,SAAhB,CAAA;KAEA,IAAIe,QAAQ,GAAGnE,QAAf,CAAA;KACA,IAAIoE,OAAO,GAAGxE,OAAd,CAAA;KACA,IAAIyE,OAAO,GAAG1F,OAAd,CAAA;CACA,IAAA,IAAI2F,MAAM,GAAGnG,KAAK,CAAC5O,IAAnB,CAAA;KAEA,IAAIgV,OAAO,GAAGtC,SAAd,CAAA;KACA,IAAIuC,OAAO,GAAGN,SAAd,CAAA;;CAEAE,IAAAA,OAAO,CAAC5xB,SAAR,CAAkB6wB,GAAlB,GAAwB,UAAS/D,IAAT,EAAe;CACnC,MAAA,OAAOiF,OAAO,CAAC,IAAA,CAAK7E,IAAN,EAAYJ,IAAZ,CAAd,CAAA;MADJ,CAAA;;KAIA6E,QAAQ,CAACd,GAAT,GAAe,YAAY;OACvB,IAAIzF,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B2Y,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASnlB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAyG,IAAAA,OAAO,CAACzF,MAAR,CAAeyE,GAAf,GAAqBmB,OAArB,CAAA;CAEAH,IAAAA,OAAO,CAACxF,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;OAEpByS,IAAI,EAAE,UAAUvsB,CAAV,EAAa;SACf,IAAIuxB,IAAI,GAAG,EAAX;CAAA,YAAerF,GAAG,GAAGnf,SAAS,CAACzO,MAAV,GAAmB,CAAxC,CAAA;;CACA,QAAA,OAAQ4tB,GAAG,EAAA,GAAK,CAAhB,EAAoBqF,IAAI,CAAErF,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAG,GAAG,CAAR,CAAvB,CAAA;;CAEpB,QAAA,IAAI,CAACqF,IAAI,CAACjzB,MAAN,IAAgB8yB,MAAM,CAACpxB,CAAD,CAAN,KAAc,QAA9B,IAA0CsxB,OAAO,CAAC/E,IAAR,CAAavsB,CAAb,CAA9C,EAA+D;CAC3D,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MATL,CAAA,CAAA;KAYA,IAAIwxB,OAAO,GAAG9E,OAAd,CAAA;KACA,IAAI+E,QAAQ,GAAG3E,QAAf,CAAA;KACA,IAAI4E,OAAO,GAAGjG,OAAd,CAAA;CACA,IAAA,IAAIkG,QAAQ,GAAG1G,KAAK,CAACG,MAArB,CAAA;;CAEAsG,IAAAA,OAAO,CAAChG,MAAR,CAAekG,EAAf,GAAoB,YAAY;OAC5B,IAAIlH,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIlC,GAAG,GAAG2H,QAAQ,CAACjH,IAAD,EAAO,MAAP,CAAlB,CAAA;CACAV,MAAAA,GAAG,CAAC,CAAD,CAAH,IAAU,GAAV,CAAA;CACAA,MAAAA,GAAG,CAAC,CAAD,CAAH,IAAU,GAAV,CAAA;CACAA,MAAAA,GAAG,CAAC,CAAD,CAAH,IAAU,GAAV,CAAA;CACA,MAAA,OAAOA,GAAP,CAAA;MARJ,CAAA;;KAWAyH,QAAQ,CAACG,EAAT,GAAc,YAAY;OACtB,IAAIlH,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BiZ,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASzlB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,IAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA8G,IAAAA,OAAO,CAAClyB,SAAR,CAAkBsyB,EAAlB,GAAuB,YAAW;OAC9B,IAAI5H,GAAG,GAAG,IAAA,CAAKwC,IAAf,CAAA;OACA,OAAO,CAACxC,GAAG,CAAC,CAAD,CAAH,GAAO,GAAR,EAAaA,GAAG,CAAC,CAAD,CAAH,GAAO,GAApB,EAAyBA,GAAG,CAAC,CAAD,CAAH,GAAO,GAAhC,EAAqCA,GAAG,CAAC,CAAD,CAAxC,CAAP,CAAA;MAFJ,CAAA;;CAKA,IAAA,IAAI6H,QAAQ,GAAG5G,KAAK,CAACG,MAArB,CAAA;;KAEA,IAAI0G,SAAS,GAAG,YAAY;OACxB,IAAIpH,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAG2E,QAAQ,CAACnH,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAInrB,GAAG,GAAG9C,IAAI,CAAC8C,GAAL,CAAS4e,CAAT,EAAY5gB,CAAZ,EAAeK,CAAf,CAAV,CAAA;OACA,IAAI4B,GAAG,GAAG/C,IAAI,CAAC+C,GAAL,CAAS2e,CAAT,EAAY5gB,CAAZ,EAAeK,CAAf,CAAV,CAAA;CACA,MAAA,IAAIvB,KAAK,GAAGmD,GAAG,GAAGD,GAAlB,CAAA;CACA,MAAA,IAAI5B,CAAC,GAAGtB,KAAK,GAAG,GAAR,GAAc,GAAtB,CAAA;;OACA,IAAIkzB,EAAE,GAAGhwB,GAAG,IAAI,MAAMlD,KAAV,CAAH,GAAsB,GAA/B,CAAA;;CACA,MAAA,IAAImB,CAAJ,CAAA;;OACA,IAAInB,KAAK,KAAK,CAAd,EAAiB;SACbmB,CAAC,GAAGyB,MAAM,CAACga,GAAX,CAAA;CACH,OAFD,MAEO;SACH,IAAIkF,CAAC,KAAK3e,GAAV,EAAe;CAAEhC,UAAAA,CAAC,GAAG,CAACD,CAAC,GAAGK,CAAL,IAAUvB,KAAd,CAAA;CAAsB,SAAA;;SACvC,IAAIkB,CAAC,KAAKiC,GAAV,EAAe;CAAEhC,UAAAA,CAAC,GAAG,CAAE,GAAA,CAACI,CAAC,GAAGugB,CAAL,IAAU9hB,KAAhB,CAAA;CAAwB,SAAA;;SACzC,IAAIuB,CAAC,KAAK4B,GAAV,EAAe;CAAEhC,UAAAA,CAAC,GAAG,CAAE,GAAA,CAAC2gB,CAAC,GAAG5gB,CAAL,IAAUlB,KAAhB,CAAA;CAAwB,SAAA;;CACzCmB,QAAAA,CAAC,IAAI,EAAL,CAAA;;SACA,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;CAC3B,OAAA;;CACD,MAAA,OAAO,CAACA,CAAD,EAAIG,CAAJ,EAAO4xB,EAAP,CAAP,CAAA;MAvBJ,CAAA;;KA0BA,IAAIC,SAAS,GAAGF,SAAhB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAGhH,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI8G,OAAO,GAAGjzB,IAAI,CAACoU,KAAnB,CAAA;CAEJ;CACA;CACA;CACA;CACA;CACA;CACA;;KAEI,IAAI8e,OAAO,GAAG,YAAY;OACtB,IAAIhD,MAAJ,EAAYiD,QAAZ,EAAsBC,QAAtB,EAAgCC,QAAhC,EAA0CC,QAA1C,EAAoDC,QAApD,CAAA;OAEA,IAAI9H,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAChBxB,MAAAA,IAAI,GAAGuH,QAAQ,CAACvH,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIvqB,CAAC,GAAGuqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIqH,EAAE,GAAGrH,IAAI,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAI/J,CAAJ,EAAM5gB,CAAN,EAAQK,CAAR,CAAA;OACA2xB,EAAE,GAAGA,EAAE,GAAG,GAAV,CAAA;;CACA,MAAA,IAAIU,EAAE,GAAGtyB,CAAC,GAAG,GAAb,CAAA;;OACA,IAAIA,CAAC,KAAK,CAAV,EAAa;CACTwgB,QAAAA,CAAC,GAAG5gB,CAAC,GAAGK,CAAC,GAAG2xB,EAAZ,CAAA;CACH,OAFD,MAEO;SACH,IAAI/xB,CAAC,KAAK,GAAV,EAAe;CAAEA,UAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,SAAA;;SACzB,IAAIA,CAAC,GAAG,GAAR,EAAa;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;;SAC1B,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;;CACxBA,QAAAA,CAAC,IAAI,EAAL,CAAA;CACA,QAAA,IAAIC,CAAC,GAAGiyB,OAAO,CAAClyB,CAAD,CAAf,CAAA;CACA,QAAA,IAAIF,CAAC,GAAGE,CAAC,GAAGC,CAAZ,CAAA;CACA,QAAA,IAAI6Z,CAAC,GAAGiY,EAAE,IAAI,CAAA,GAAI5xB,CAAR,CAAV,CAAA;SACA,IAAIuhB,CAAC,GAAG5H,CAAC,GAAG2Y,EAAE,IAAI,CAAA,GAAI3yB,CAAR,CAAd,CAAA;CACA,QAAA,IAAIskB,CAAC,GAAGtK,CAAC,GAAG2Y,EAAE,GAAG3yB,CAAjB,CAAA;CACA,QAAA,IAAI8V,CAAC,GAAGkE,CAAC,GAAG2Y,EAAZ,CAAA;;CACA,QAAA,QAAQxyB,CAAR;CACI,UAAA,KAAK,CAAL;CAASkvB,YAAAA,MAAM,GAAG,CAACvZ,CAAD,EAAIwO,CAAJ,EAAOtK,CAAP,CAAT,EAAoB6G,CAAC,GAAGwO,MAAM,CAAC,CAAD,CAA9B,EAAmCpvB,CAAC,GAAGovB,MAAM,CAAC,CAAD,CAA7C,EAAkD/uB,CAAC,GAAG+uB,MAAM,CAAC,CAAD,CAA7D,CAAA;CAAmE,YAAA,MAAA;;CAC3E,UAAA,KAAK,CAAL;CAASiD,YAAAA,QAAQ,GAAG,CAAC1Q,CAAD,EAAI9L,CAAJ,EAAOkE,CAAP,CAAX,EAAsB6G,CAAC,GAAGyR,QAAQ,CAAC,CAAD,CAAlC,EAAuCryB,CAAC,GAAGqyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDhyB,CAAC,GAAGgyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACvY,CAAD,EAAIlE,CAAJ,EAAOwO,CAAP,CAAX,EAAsBzD,CAAC,GAAG0R,QAAQ,CAAC,CAAD,CAAlC,EAAuCtyB,CAAC,GAAGsyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDjyB,CAAC,GAAGiyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACxY,CAAD,EAAI4H,CAAJ,EAAO9L,CAAP,CAAX,EAAsB+K,CAAC,GAAG2R,QAAQ,CAAC,CAAD,CAAlC,EAAuCvyB,CAAC,GAAGuyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDlyB,CAAC,GAAGkyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACnO,CAAD,EAAItK,CAAJ,EAAOlE,CAAP,CAAX,EAAsB+K,CAAC,GAAG4R,QAAQ,CAAC,CAAD,CAAlC,EAAuCxyB,CAAC,GAAGwyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDnyB,CAAC,GAAGmyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAAC5c,CAAD,EAAIkE,CAAJ,EAAO4H,CAAP,CAAX,EAAsBf,CAAC,GAAG6R,QAAQ,CAAC,CAAD,CAAlC,EAAuCzyB,CAAC,GAAGyyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDpyB,CAAC,GAAGoyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;CANvF,SAAA;CAQH,OAAA;;CACD,MAAA,OAAO,CAAC7R,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,EAAUsqB,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAtC,CAAP,CAAA;MAlCJ,CAAA;;KAqCA,IAAIgI,SAAS,GAAGP,OAAhB,CAAA;CAEA,IAAA,IAAIQ,QAAQ,GAAG1H,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIwH,MAAM,GAAG3H,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIwW,QAAQ,GAAG/F,QAAf,CAAA;KACA,IAAIgG,OAAO,GAAGpG,OAAd,CAAA;KACA,IAAIqG,OAAO,GAAGtH,OAAd,CAAA;KAEA,IAAIuH,OAAO,GAAGhB,SAAd,CAAA;;CAEAc,IAAAA,OAAO,CAACxzB,SAAR,CAAkB2zB,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOD,OAAO,CAAC,IAAKxG,CAAAA,IAAN,CAAd,CAAA;MADJ,CAAA;;KAIAqG,QAAQ,CAACI,GAAT,GAAe,YAAY;OACvB,IAAIvI,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+Bua,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAS/mB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAqI,IAAAA,OAAO,CAACrH,MAAR,CAAeuH,GAAf,GAAqBP,SAArB,CAAA;CAEAK,IAAAA,OAAO,CAACpH,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAGiI,QAAQ,CAACjI,IAAD,EAAO,KAAP,CAAf,CAAA;;CACA,QAAA,IAAIkI,MAAM,CAAClI,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAI40B,QAAQ,GAAGjI,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI7J,IAAI,GAAG0J,KAAK,CAAC1J,IAAjB,CAAA;CACA,IAAA,IAAI4R,OAAO,GAAGl0B,IAAI,CAACsK,KAAnB,CAAA;;KAEA,IAAI6pB,SAAS,GAAG,YAAY;OACxB,IAAI1I,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGgG,QAAQ,CAACxI,IAAD,EAAO,MAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIvtB,CAAC,GAAGutB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAId,IAAI,GAAG7K,IAAI,CAACmJ,IAAD,CAAJ,IAAc,MAAzB,CAAA;;OACA,IAAI/qB,CAAC,KAAK4B,SAAV,EAAqB;CAAE5B,QAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,OAAA;;OAC/B,IAAIysB,IAAI,KAAK,MAAb,EAAqB;CACjBA,QAAAA,IAAI,GAAGzsB,CAAC,GAAG,CAAJ,GAAQ,MAAR,GAAiB,KAAxB,CAAA;CACH,OAAA;;CACDghB,MAAAA,CAAC,GAAGwS,OAAO,CAACxS,CAAD,CAAX,CAAA;CACA5gB,MAAAA,CAAC,GAAGozB,OAAO,CAACpzB,CAAD,CAAX,CAAA;CACAK,MAAAA,CAAC,GAAG+yB,OAAO,CAAC/yB,CAAD,CAAX,CAAA;OACA,IAAIizB,CAAC,GAAG1S,CAAC,IAAI,EAAL,GAAU5gB,CAAC,IAAI,CAAf,GAAmBK,CAA3B,CAAA;OACA,IAAIkzB,GAAG,GAAG,QAAA,GAAWD,CAAC,CAACj0B,QAAF,CAAW,EAAX,CAArB,CAlBwB;;OAmBxBk0B,GAAG,GAAGA,GAAG,CAACxE,MAAJ,CAAWwE,GAAG,CAACh1B,MAAJ,GAAa,CAAxB,CAAN,CAAA;CACA,MAAA,IAAIi1B,GAAG,GAAG,GAAMJ,GAAAA,OAAO,CAACxzB,CAAC,GAAG,GAAL,CAAP,CAAiBP,QAAjB,CAA0B,EAA1B,CAAhB,CAAA;OACAm0B,GAAG,GAAGA,GAAG,CAACzE,MAAJ,CAAWyE,GAAG,CAACj1B,MAAJ,GAAa,CAAxB,CAAN,CAAA;;OACA,QAAQ8tB,IAAI,CAAC/mB,WAAL,EAAR;CACI,QAAA,KAAK,MAAL;WAAa,OAAQ,GAAA,GAAMiuB,GAAN,GAAYC,GAApB,CAAA;;CACb,QAAA,KAAK,MAAL;WAAa,OAAQ,GAAA,GAAMA,GAAN,GAAYD,GAApB,CAAA;;CACb,QAAA;CAAS,UAAA,OAAQ,MAAMA,GAAd,CAAA;CAHb,OAAA;MAtBJ,CAAA;;KA6BA,IAAIE,SAAS,GAAGJ,SAAhB,CAAA;KAEA,IAAIK,MAAM,GAAG,qCAAb,CAAA;KACA,IAAIC,OAAO,GAAG,qCAAd,CAAA;;CAEA,IAAA,IAAIC,SAAS,GAAG,UAAUlH,GAAV,EAAe;CAC3B,MAAA,IAAIA,GAAG,CAAC6D,KAAJ,CAAUmD,MAAV,CAAJ,EAAuB;CAC/B;SACY,IAAIhH,GAAG,CAACnuB,MAAJ,KAAe,CAAf,IAAoBmuB,GAAG,CAACnuB,MAAJ,KAAe,CAAvC,EAA0C;CACtCmuB,UAAAA,GAAG,GAAGA,GAAG,CAACqC,MAAJ,CAAW,CAAX,CAAN,CAAA;CACH,SAJkB;;;CAMnB,QAAA,IAAIrC,GAAG,CAACnuB,MAAJ,KAAe,CAAnB,EAAsB;CAClBmuB,UAAAA,GAAG,GAAGA,GAAG,CAAC7B,KAAJ,CAAU,EAAV,CAAN,CAAA;CACA6B,UAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,GAAOA,GAAG,CAAC,CAAD,CAAV,GAAcA,GAAG,CAAC,CAAD,CAAjB,GAAqBA,GAAG,CAAC,CAAD,CAAxB,GAA4BA,GAAG,CAAC,CAAD,CAA/B,GAAmCA,GAAG,CAAC,CAAD,CAA5C,CAAA;CACH,SAAA;;CACD,QAAA,IAAI4G,CAAC,GAAGtS,QAAQ,CAAC0L,GAAD,EAAM,EAAN,CAAhB,CAAA;CACA,QAAA,IAAI9L,CAAC,GAAG0S,CAAC,IAAI,EAAb,CAAA;CACA,QAAA,IAAItzB,CAAC,GAAGszB,CAAC,IAAI,CAAL,GAAS,IAAjB,CAAA;CACA,QAAA,IAAIjzB,CAAC,GAAGizB,CAAC,GAAG,IAAZ,CAAA;SACA,OAAO,CAAC1S,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAO,CAAP,CAAP,CAAA;CACH,OAhB0B;;;CAmB3B,MAAA,IAAIqsB,GAAG,CAAC6D,KAAJ,CAAUoD,OAAV,CAAJ,EAAwB;SACpB,IAAIjH,GAAG,CAACnuB,MAAJ,KAAe,CAAf,IAAoBmuB,GAAG,CAACnuB,MAAJ,KAAe,CAAvC,EAA0C;CACtD;CACgBmuB,UAAAA,GAAG,GAAGA,GAAG,CAACqC,MAAJ,CAAW,CAAX,CAAN,CAAA;CACH,SAJmB;;;CAMpB,QAAA,IAAIrC,GAAG,CAACnuB,MAAJ,KAAe,CAAnB,EAAsB;CAClBmuB,UAAAA,GAAG,GAAGA,GAAG,CAAC7B,KAAJ,CAAU,EAAV,CAAN,CAAA;CACA6B,UAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAH,GAAOA,GAAG,CAAC,CAAD,CAAV,GAAcA,GAAG,CAAC,CAAD,CAAjB,GAAqBA,GAAG,CAAC,CAAD,CAAxB,GAA4BA,GAAG,CAAC,CAAD,CAA/B,GAAmCA,GAAG,CAAC,CAAD,CAAtC,GAA0CA,GAAG,CAAC,CAAD,CAA7C,GAAiDA,GAAG,CAAC,CAAD,CAA1D,CAAA;CACH,SAAA;;CACD,QAAA,IAAImH,GAAG,GAAG7S,QAAQ,CAAC0L,GAAD,EAAM,EAAN,CAAlB,CAAA;CACA,QAAA,IAAIoH,GAAG,GAAGD,GAAG,IAAI,EAAP,GAAY,IAAtB,CAAA;CACA,QAAA,IAAIE,GAAG,GAAGF,GAAG,IAAI,EAAP,GAAY,IAAtB,CAAA;CACA,QAAA,IAAIG,GAAG,GAAGH,GAAG,IAAI,CAAP,GAAW,IAArB,CAAA;CACA,QAAA,IAAIj0B,CAAC,GAAGV,IAAI,CAACsK,KAAL,CAAW,CAACqqB,GAAG,GAAG,IAAP,IAAe,IAAf,GAAsB,GAAjC,IAAwC,GAAhD,CAAA;SACA,OAAO,CAACC,GAAD,EAAKC,GAAL,EAASC,GAAT,EAAap0B,CAAb,CAAP,CAAA;CACH,OAnC0B;CAsCnC;CACA;;;CAEQ,MAAA,MAAM,IAAIR,KAAJ,CAAW,qBAAA,GAAwBstB,GAAnC,CAAN,CAAA;MAzCJ,CAAA;;KA4CA,IAAIuH,SAAS,GAAGL,SAAhB,CAAA;KAEA,IAAIM,QAAQ,GAAGnH,QAAf,CAAA;KACA,IAAIoH,OAAO,GAAGxH,OAAd,CAAA;CACA,IAAA,IAAIyH,MAAM,GAAGlJ,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAI+X,OAAO,GAAG3I,OAAd,CAAA;KAEA,IAAI4I,SAAS,GAAGb,SAAhB,CAAA;;CAEAU,IAAAA,OAAO,CAAC50B,SAAR,CAAkBmtB,GAAlB,GAAwB,UAASL,IAAT,EAAe;CACnC,MAAA,OAAOiI,SAAS,CAAC,IAAA,CAAK7H,IAAN,EAAYJ,IAAZ,CAAhB,CAAA;MADJ,CAAA;;KAIA6H,QAAQ,CAACxH,GAAT,GAAe,YAAY;OACvB,IAAI/B,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B2b,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASnoB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA0J,IAAAA,OAAO,CAAC1I,MAAR,CAAee,GAAf,GAAqBuH,SAArB,CAAA;CACAI,IAAAA,OAAO,CAACzI,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;OAEpByS,IAAI,EAAE,UAAUvsB,CAAV,EAAa;SACf,IAAIuxB,IAAI,GAAG,EAAX;CAAA,YAAerF,GAAG,GAAGnf,SAAS,CAACzO,MAAV,GAAmB,CAAxC,CAAA;;CACA,QAAA,OAAQ4tB,GAAG,EAAA,GAAK,CAAhB,EAAoBqF,IAAI,CAAErF,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAG,GAAG,CAAR,CAAvB,CAAA;;CAEpB,QAAA,IAAI,CAACqF,IAAI,CAACjzB,MAAN,IAAgB61B,MAAM,CAACn0B,CAAD,CAAN,KAAc,QAA9B,IAA0C,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,EAAO,CAAP,EAAS,CAAT,EAAW,CAAX,EAAa,CAAb,CAAgBmP,CAAAA,OAAhB,CAAwBnP,CAAC,CAAC1B,MAA1B,CAAA,IAAqC,CAAnF,EAAsF;CAClF,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MATL,CAAA,CAAA;CAYA,IAAA,IAAIg2B,QAAQ,GAAGrJ,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAImJ,OAAO,GAAGtJ,KAAK,CAACI,KAApB,CAAA;CACA,IAAA,IAAImJ,KAAK,GAAGv1B,IAAI,CAAC8C,GAAjB,CAAA;CACA,IAAA,IAAI0yB,MAAM,GAAGx1B,IAAI,CAAC8D,IAAlB,CAAA;CACA,IAAA,IAAIyP,IAAI,GAAGvT,IAAI,CAACuT,IAAhB,CAAA;;KAEA,IAAIkiB,SAAS,GAAG,YAAY;OACxB,IAAIhK,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;CAExB;CACA;CACA;CACA;;;CACQ,MAAA,IAAIgB,GAAG,GAAGoH,QAAQ,CAAC5J,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;CACAvM,MAAAA,CAAC,IAAI,GAAL,CAAA;CACA5gB,MAAAA,CAAC,IAAI,GAAL,CAAA;CACAK,MAAAA,CAAC,IAAI,GAAL,CAAA;CACA,MAAA,IAAIJ,CAAJ,CAAA;OACA,IAAI20B,IAAI,GAAGH,KAAK,CAAC7T,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,CAAhB,CAAA;OACA,IAAIH,CAAC,GAAG,CAAC0gB,CAAC,GAAC5gB,CAAF,GAAIK,CAAL,IAAU,CAAlB,CAAA;OACA,IAAIyc,CAAC,GAAG5c,CAAC,GAAG,CAAJ,GAAQ,CAAA,GAAI00B,IAAI,GAAC10B,CAAjB,GAAqB,CAA7B,CAAA;;OACA,IAAI4c,CAAC,KAAK,CAAV,EAAa;CACT7c,QAAAA,CAAC,GAAGyb,GAAJ,CAAA;CACH,OAFD,MAEO;SACHzb,CAAC,GAAG,CAAE2gB,CAAC,GAAC5gB,CAAH,IAAO4gB,CAAC,GAACvgB,CAAT,CAAD,IAAgB,CAApB,CAAA;SACAJ,CAAC,IAAIy0B,MAAM,CAAC,CAAC9T,CAAC,GAAC5gB,CAAH,KAAO4gB,CAAC,GAAC5gB,CAAT,CAAc,GAAA,CAAC4gB,CAAC,GAACvgB,CAAH,KAAOL,CAAC,GAACK,CAAT,CAAf,CAAX,CAAA;CACAJ,QAAAA,CAAC,GAAGwS,IAAI,CAACxS,CAAD,CAAR,CAAA;;SACA,IAAII,CAAC,GAAGL,CAAR,EAAW;WACPC,CAAC,GAAGu0B,OAAO,GAAGv0B,CAAd,CAAA;CACH,SAAA;;CACDA,QAAAA,CAAC,IAAIu0B,OAAL,CAAA;CACH,OAAA;;OACD,OAAO,CAACv0B,CAAC,GAAC,GAAH,EAAO6c,CAAP,EAAS5c,CAAT,CAAP,CAAA;MA9BJ,CAAA;;KAiCA,IAAI20B,SAAS,GAAGF,SAAhB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAG5J,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAID,KAAK,GAAGF,KAAK,CAACE,KAAlB,CAAA;CACA,IAAA,IAAI2J,OAAO,GAAG7J,KAAK,CAACI,KAApB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAGL,KAAK,CAACK,OAApB,CAAA;CACA,IAAA,IAAIyJ,KAAK,GAAG91B,IAAI,CAACgU,GAAjB,CAAA;CAEJ;CACA;CACA;CACA;CACA;;KACI,IAAI+hB,OAAO,GAAG,YAAY;OACtB,IAAItK,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;CAExB;CACA;CACA;CACA;;;CACQxB,MAAAA,IAAI,GAAGmK,QAAQ,CAACnK,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI7N,CAAC,GAAG6N,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIzqB,CAAC,GAAGyqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI/J,CAAJ,EAAM5gB,CAAN,EAAQK,CAAR,CAAA;;CAEA,MAAA,IAAI6G,KAAK,CAACjH,CAAD,CAAT,EAAc;CAAEA,QAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,OAAA;;CACxB,MAAA,IAAIiH,KAAK,CAAC4V,CAAD,CAAT,EAAc;CAAEA,QAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,OAfF;;;OAiBtB,IAAI7c,CAAC,GAAG,GAAR,EAAa;CAAEA,QAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,OAAA;;OAC1B,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,QAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,OAAA;;CACxBA,MAAAA,CAAC,IAAI,GAAL,CAAA;;CACA,MAAA,IAAIA,CAAC,GAAG,CAAE,GAAA,CAAV,EAAa;CACTI,QAAAA,CAAC,GAAG,CAAC,CAAEyc,GAAAA,CAAH,IAAM,CAAV,CAAA;SACA8D,CAAC,GAAG,CAAC,CAAE9D,GAAAA,CAAC,GAACkY,KAAK,CAACD,OAAO,GAAC90B,CAAT,CAAP,GAAmB+0B,KAAK,CAACzJ,OAAO,GAACwJ,OAAO,GAAC90B,CAAjB,CAA3B,IAAgD,CAApD,CAAA;CACAD,QAAAA,CAAC,GAAG,CAAA,IAAKK,CAAC,GAACugB,CAAP,CAAJ,CAAA;CACH,OAJD,MAIO,IAAI3gB,CAAC,GAAG,CAAA,GAAE,CAAV,EAAa;SAChBA,CAAC,IAAI,IAAE,CAAP,CAAA;CACA2gB,QAAAA,CAAC,GAAG,CAAC,CAAE9D,GAAAA,CAAH,IAAM,CAAV,CAAA;SACA9c,CAAC,GAAG,CAAC,CAAE8c,GAAAA,CAAC,GAACkY,KAAK,CAACD,OAAO,GAAC90B,CAAT,CAAP,GAAmB+0B,KAAK,CAACzJ,OAAO,GAACwJ,OAAO,GAAC90B,CAAjB,CAA3B,IAAgD,CAApD,CAAA;CACAI,QAAAA,CAAC,GAAG,CAAA,IAAKugB,CAAC,GAAC5gB,CAAP,CAAJ,CAAA;CACH,OALM,MAKA;SACHC,CAAC,IAAI,IAAE,CAAP,CAAA;CACAD,QAAAA,CAAC,GAAG,CAAC,CAAE8c,GAAAA,CAAH,IAAM,CAAV,CAAA;SACAzc,CAAC,GAAG,CAAC,CAAEyc,GAAAA,CAAC,GAACkY,KAAK,CAACD,OAAO,GAAC90B,CAAT,CAAP,GAAmB+0B,KAAK,CAACzJ,OAAO,GAACwJ,OAAO,GAAC90B,CAAjB,CAA3B,IAAgD,CAApD,CAAA;CACA2gB,QAAAA,CAAC,GAAG,CAAA,IAAK5gB,CAAC,GAACK,CAAP,CAAJ,CAAA;CACH,OAAA;;OACDugB,CAAC,GAAGwK,KAAK,CAAClrB,CAAC,GAAC0gB,CAAF,GAAI,CAAL,CAAT,CAAA;OACA5gB,CAAC,GAAGorB,KAAK,CAAClrB,CAAC,GAACF,CAAF,GAAI,CAAL,CAAT,CAAA;OACAK,CAAC,GAAG+qB,KAAK,CAAClrB,CAAC,GAACG,CAAF,GAAI,CAAL,CAAT,CAAA;OACA,OAAO,CAACugB,CAAC,GAAC,GAAH,EAAQ5gB,CAAC,GAAC,GAAV,EAAeK,CAAC,GAAC,GAAjB,EAAsBsqB,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAlD,CAAP,CAAA;MAtCJ,CAAA;;KAyCA,IAAIuK,SAAS,GAAGD,OAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAGjK,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI+J,MAAM,GAAGlK,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAI+Y,QAAQ,GAAGtI,QAAf,CAAA;KACA,IAAIuI,OAAO,GAAG3I,OAAd,CAAA;KACA,IAAI4I,OAAO,GAAG7J,OAAd,CAAA;KAEA,IAAI8J,OAAO,GAAGX,SAAd,CAAA;;CAEAS,IAAAA,OAAO,CAAC/1B,SAAR,CAAkBk2B,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOD,OAAO,CAAC,IAAK/I,CAAAA,IAAN,CAAd,CAAA;MADJ,CAAA;;KAIA4I,QAAQ,CAACI,GAAT,GAAe,YAAY;OACvB,IAAI9K,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B8c,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAStpB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA4K,IAAAA,OAAO,CAAC5J,MAAR,CAAe8J,GAAf,GAAqBP,SAArB,CAAA;CAEAK,IAAAA,OAAO,CAAC3J,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAGwK,QAAQ,CAACxK,IAAD,EAAO,KAAP,CAAf,CAAA;;CACA,QAAA,IAAIyK,MAAM,CAACzK,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAIm3B,QAAQ,GAAGxK,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIsK,MAAM,GAAGzK,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIsZ,QAAQ,GAAG7I,QAAf,CAAA;KACA,IAAI8I,OAAO,GAAGlJ,OAAd,CAAA;KACA,IAAImJ,OAAO,GAAGpK,OAAd,CAAA;KAEA,IAAIqK,SAAS,GAAGxH,SAAhB,CAAA;;CAEAsH,IAAAA,OAAO,CAACt2B,SAAR,CAAkBsxB,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOkF,SAAS,CAAC,IAAKtJ,CAAAA,IAAN,CAAhB,CAAA;MADJ,CAAA;;KAIAmJ,QAAQ,CAAC/E,GAAT,GAAe,YAAY;OACvB,IAAIlG,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+Bqd,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAS7pB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAmL,IAAAA,OAAO,CAACnK,MAAR,CAAekF,GAAf,GAAqBpB,SAArB,CAAA;CAEAqG,IAAAA,OAAO,CAAClK,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAG+K,QAAQ,CAAC/K,IAAD,EAAO,KAAP,CAAf,CAAA;;CACA,QAAA,IAAIgL,MAAM,CAAChL,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAIy3B,QAAQ,GAAG9K,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI4K,KAAK,GAAG/2B,IAAI,CAAC8C,GAAjB,CAAA;CACA,IAAA,IAAIk0B,KAAK,GAAGh3B,IAAI,CAAC+C,GAAjB,CAAA;CAEJ;CACA;CACA;CACA;CACA;CACA;;KACI,IAAIk0B,OAAO,GAAG,YAAY;OACtB,IAAIxL,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAGqL,QAAQ,CAACrL,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAG+J,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI3qB,CAAC,GAAG2qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAItqB,CAAC,GAAGsqB,IAAI,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIiK,IAAI,GAAGqB,KAAK,CAACrV,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,CAAhB,CAAA;OACA,IAAI+1B,IAAI,GAAGF,KAAK,CAACtV,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,CAAhB,CAAA;CACA,MAAA,IAAIvB,KAAK,GAAGs3B,IAAI,GAAGxB,IAAnB,CAAA;CACA,MAAA,IAAI30B,CAAJ,EAAM6c,CAAN,EAAQjH,CAAR,CAAA;OACAA,CAAC,GAAGugB,IAAI,GAAG,KAAX,CAAA;;OACA,IAAIA,IAAI,KAAK,CAAb,EAAgB;SACZn2B,CAAC,GAAGyB,MAAM,CAACga,GAAX,CAAA;CACAoB,QAAAA,CAAC,GAAG,CAAJ,CAAA;CACH,OAHD,MAGO;SACHA,CAAC,GAAGhe,KAAK,GAAGs3B,IAAZ,CAAA;;SACA,IAAIxV,CAAC,KAAKwV,IAAV,EAAgB;CAAEn2B,UAAAA,CAAC,GAAG,CAACD,CAAC,GAAGK,CAAL,IAAUvB,KAAd,CAAA;CAAsB,SAAA;;SACxC,IAAIkB,CAAC,KAAKo2B,IAAV,EAAgB;CAAEn2B,UAAAA,CAAC,GAAG,CAAE,GAAA,CAACI,CAAC,GAAGugB,CAAL,IAAU9hB,KAAhB,CAAA;CAAwB,SAAA;;SAC1C,IAAIuB,CAAC,KAAK+1B,IAAV,EAAgB;CAAEn2B,UAAAA,CAAC,GAAG,CAAE,GAAA,CAAC2gB,CAAC,GAAG5gB,CAAL,IAAUlB,KAAhB,CAAA;CAAwB,SAAA;;CAC1CmB,QAAAA,CAAC,IAAI,EAAL,CAAA;;SACA,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;CAC3B,OAAA;;CACD,MAAA,OAAO,CAACA,CAAD,EAAI6c,CAAJ,EAAOjH,CAAP,CAAP,CAAA;MAxBJ,CAAA;;KA2BA,IAAIwgB,SAAS,GAAGF,OAAhB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAGpL,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIkL,OAAO,GAAGr3B,IAAI,CAACoU,KAAnB,CAAA;;KAEA,IAAIkjB,OAAO,GAAG,YAAY;OACtB,IAAIpH,MAAJ,EAAYiD,QAAZ,EAAsBC,QAAtB,EAAgCC,QAAhC,EAA0CC,QAA1C,EAAoDC,QAApD,CAAA;OAEA,IAAI9H,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAChBxB,MAAAA,IAAI,GAAG2L,QAAQ,CAAC3L,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI7N,CAAC,GAAG6N,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI9U,CAAC,GAAG8U,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI/J,CAAJ,EAAM5gB,CAAN,EAAQK,CAAR,CAAA;CACAwV,MAAAA,CAAC,IAAI,GAAL,CAAA;;OACA,IAAIiH,CAAC,KAAK,CAAV,EAAa;CACT8D,QAAAA,CAAC,GAAG5gB,CAAC,GAAGK,CAAC,GAAGwV,CAAZ,CAAA;CACH,OAFD,MAEO;SACH,IAAI5V,CAAC,KAAK,GAAV,EAAe;CAAEA,UAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,SAAA;;SACzB,IAAIA,CAAC,GAAG,GAAR,EAAa;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;;SAC1B,IAAIA,CAAC,GAAG,CAAR,EAAW;CAAEA,UAAAA,CAAC,IAAI,GAAL,CAAA;CAAW,SAAA;;CACxBA,QAAAA,CAAC,IAAI,EAAL,CAAA;CAEA,QAAA,IAAIC,CAAC,GAAGq2B,OAAO,CAACt2B,CAAD,CAAf,CAAA;CACA,QAAA,IAAIF,CAAC,GAAGE,CAAC,GAAGC,CAAZ,CAAA;CACA,QAAA,IAAI6Z,CAAC,GAAGlE,CAAC,IAAI,CAAA,GAAIiH,CAAR,CAAT,CAAA;SACA,IAAI6E,CAAC,GAAG9L,CAAC,IAAI,IAAIiH,CAAC,GAAG/c,CAAZ,CAAT,CAAA;SACA,IAAIskB,CAAC,GAAGxO,CAAC,IAAI,CAAA,GAAIiH,CAAC,IAAI,CAAA,GAAI/c,CAAR,CAAT,CAAT,CAAA;;CAEA,QAAA,QAAQG,CAAR;CACI,UAAA,KAAK,CAAL;CAASkvB,YAAAA,MAAM,GAAG,CAACvZ,CAAD,EAAIwO,CAAJ,EAAOtK,CAAP,CAAT,EAAoB6G,CAAC,GAAGwO,MAAM,CAAC,CAAD,CAA9B,EAAmCpvB,CAAC,GAAGovB,MAAM,CAAC,CAAD,CAA7C,EAAkD/uB,CAAC,GAAG+uB,MAAM,CAAC,CAAD,CAA7D,CAAA;CAAmE,YAAA,MAAA;;CAC3E,UAAA,KAAK,CAAL;CAASiD,YAAAA,QAAQ,GAAG,CAAC1Q,CAAD,EAAI9L,CAAJ,EAAOkE,CAAP,CAAX,EAAsB6G,CAAC,GAAGyR,QAAQ,CAAC,CAAD,CAAlC,EAAuCryB,CAAC,GAAGqyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDhyB,CAAC,GAAGgyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACvY,CAAD,EAAIlE,CAAJ,EAAOwO,CAAP,CAAX,EAAsBzD,CAAC,GAAG0R,QAAQ,CAAC,CAAD,CAAlC,EAAuCtyB,CAAC,GAAGsyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDjyB,CAAC,GAAGiyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACxY,CAAD,EAAI4H,CAAJ,EAAO9L,CAAP,CAAX,EAAsB+K,CAAC,GAAG2R,QAAQ,CAAC,CAAD,CAAlC,EAAuCvyB,CAAC,GAAGuyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDlyB,CAAC,GAAGkyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAACnO,CAAD,EAAItK,CAAJ,EAAOlE,CAAP,CAAX,EAAsB+K,CAAC,GAAG4R,QAAQ,CAAC,CAAD,CAAlC,EAAuCxyB,CAAC,GAAGwyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDnyB,CAAC,GAAGmyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;;CACnF,UAAA,KAAK,CAAL;CAASC,YAAAA,QAAQ,GAAG,CAAC5c,CAAD,EAAIkE,CAAJ,EAAO4H,CAAP,CAAX,EAAsBf,CAAC,GAAG6R,QAAQ,CAAC,CAAD,CAAlC,EAAuCzyB,CAAC,GAAGyyB,QAAQ,CAAC,CAAD,CAAnD,EAAwDpyB,CAAC,GAAGoyB,QAAQ,CAAC,CAAD,CAArE,CAAA;CAA2E,YAAA,MAAA;CANvF,SAAA;CAQH,OAAA;;CACD,MAAA,OAAO,CAAC7R,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAOsqB,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAgBosB,IAAI,CAAC,CAAD,CAApB,GAAwB,CAA/B,CAAP,CAAA;MAlCJ,CAAA;;KAqCA,IAAI8L,SAAS,GAAGD,OAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAGxL,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIsL,MAAM,GAAGzL,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIsa,QAAQ,GAAG7J,QAAf,CAAA;KACA,IAAI8J,OAAO,GAAGlK,OAAd,CAAA;KACA,IAAImK,OAAO,GAAGpL,OAAd,CAAA;KAEA,IAAIqL,OAAO,GAAGV,SAAd,CAAA;;CAEAQ,IAAAA,OAAO,CAACt3B,SAAR,CAAkBy3B,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOD,OAAO,CAAC,IAAKtK,CAAAA,IAAN,CAAd,CAAA;MADJ,CAAA;;KAIAmK,QAAQ,CAACI,GAAT,GAAe,YAAY;OACvB,IAAIrM,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+Bqe,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAS7qB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAmM,IAAAA,OAAO,CAACnL,MAAR,CAAeqL,GAAf,GAAqBP,SAArB,CAAA;CAEAK,IAAAA,OAAO,CAAClL,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAG+L,QAAQ,CAAC/L,IAAD,EAAO,KAAP,CAAf,CAAA;;CACA,QAAA,IAAIgM,MAAM,CAAChM,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAI04B,YAAY,GAAG;CACvB;CACQC,MAAAA,EAAE,EAAE,EAFW;CAIvB;CACQC,MAAAA,EAAE,EAAE,QALW;CAMfC,MAAAA,EAAE,EAAE,CANW;CAOfC,MAAAA,EAAE,EAAE,QAPW;CASfC,MAAAA,EAAE,EAAE,WATW;CASA;CACf/H,MAAAA,EAAE,EAAE,WAVW;CAUA;CACfD,MAAAA,EAAE,EAAE,UAXW;CAWD;OACdD,EAAE,EAAE,WAZW;;MAAnB,CAAA;KAeA,IAAIkI,eAAe,GAAGN,YAAtB,CAAA;CACA,IAAA,IAAIO,QAAQ,GAAGtM,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIoM,KAAK,GAAGv4B,IAAI,CAAC+U,GAAjB,CAAA;;KAEA,IAAIyjB,SAAS,GAAG,YAAY;OACxB,IAAI/M,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGqK,QAAQ,CAAC7M,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAIwK,KAAK,GAAGC,OAAO,CAAChX,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,CAAnB,CAAA;CACA,MAAA,IAAIuD,CAAC,GAAG+zB,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIpwB,CAAC,GAAGowB,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIE,CAAC,GAAGF,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIxf,CAAC,GAAG,GAAM5Q,GAAAA,CAAN,GAAU,EAAlB,CAAA;OACA,OAAO,CAAC4Q,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAYA,CAAb,EAAgB,GAAA,IAAOvU,CAAC,GAAG2D,CAAX,CAAhB,EAA+B,GAAA,IAAOA,CAAC,GAAGswB,CAAX,CAA/B,CAAP,CAAA;MAbJ,CAAA;;CAgBA,IAAA,IAAIC,OAAO,GAAG,UAAUlX,CAAV,EAAa;CACvB,MAAA,IAAI,CAACA,CAAC,IAAI,GAAN,KAAc,OAAlB,EAA2B;SAAE,OAAOA,CAAC,GAAG,KAAX,CAAA;CAAmB,OAAA;;OAChD,OAAO6W,KAAK,CAAC,CAAC7W,CAAC,GAAG,KAAL,IAAc,KAAf,EAAsB,GAAtB,CAAZ,CAAA;MAFJ,CAAA;;CAKA,IAAA,IAAImX,OAAO,GAAG,UAAU1T,CAAV,EAAa;CACvB,MAAA,IAAIA,CAAC,GAAGkT,eAAe,CAAClI,EAAxB,EAA4B;CAAE,QAAA,OAAOoI,KAAK,CAACpT,CAAD,EAAI,CAAA,GAAI,CAAR,CAAZ,CAAA;CAAyB,OAAA;;OACvD,OAAOA,CAAC,GAAGkT,eAAe,CAACjI,EAApB,GAAyBiI,eAAe,CAACD,EAAhD,CAAA;MAFJ,CAAA;;KAKA,IAAIM,OAAO,GAAG,UAAUhX,CAAV,EAAY5gB,CAAZ,EAAcK,CAAd,EAAiB;CAC3BugB,MAAAA,CAAC,GAAGkX,OAAO,CAAClX,CAAD,CAAX,CAAA;CACA5gB,MAAAA,CAAC,GAAG83B,OAAO,CAAC93B,CAAD,CAAX,CAAA;CACAK,MAAAA,CAAC,GAAGy3B,OAAO,CAACz3B,CAAD,CAAX,CAAA;CACA,MAAA,IAAIuD,CAAC,GAAGm0B,OAAO,CAAC,CAAC,YAAYnX,CAAZ,GAAgB,SAAY5gB,GAAAA,CAA5B,GAAgC,SAAYK,GAAAA,CAA7C,IAAkDk3B,eAAe,CAACJ,EAAnE,CAAf,CAAA;CACA,MAAA,IAAI5vB,CAAC,GAAGwwB,OAAO,CAAC,CAAC,YAAYnX,CAAZ,GAAgB,SAAY5gB,GAAAA,CAA5B,GAAgC,SAAYK,GAAAA,CAA7C,IAAkDk3B,eAAe,CAACH,EAAnE,CAAf,CAAA;CACA,MAAA,IAAIS,CAAC,GAAGE,OAAO,CAAC,CAAC,YAAYnX,CAAZ,GAAgB,SAAY5gB,GAAAA,CAA5B,GAAgC,SAAYK,GAAAA,CAA7C,IAAkDk3B,eAAe,CAACF,EAAnE,CAAf,CAAA;CACA,MAAA,OAAO,CAACzzB,CAAD,EAAG2D,CAAH,EAAKswB,CAAL,CAAP,CAAA;MAPJ,CAAA;;KAUA,IAAIG,SAAS,GAAGN,SAAhB,CAAA;KAEA,IAAIO,eAAe,GAAGhB,YAAtB,CAAA;CACA,IAAA,IAAIiB,QAAQ,GAAGhN,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI8M,KAAK,GAAGj5B,IAAI,CAAC+U,GAAjB,CAAA;CAEJ;CACA;CACA;CACA;CACA;;KACI,IAAImkB,SAAS,GAAG,YAAY;OACxB,IAAIzN,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAGuN,QAAQ,CAACvN,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGwS,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI/qB,CAAC,GAAG+qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAItqB,CAAC,GAAGsqB,IAAI,CAAC,CAAD,CAAZ,CAAA;OACA,IAAI/mB,CAAJ,EAAM2D,CAAN,EAAQswB,CAAR,EAAWjX,CAAX,EAAa5gB,CAAb,EAAeq4B,EAAf,CAAA;CAEA9wB,MAAAA,CAAC,GAAG,CAAC4Q,CAAC,GAAG,EAAL,IAAW,GAAf,CAAA;CACAvU,MAAAA,CAAC,GAAGsD,KAAK,CAACtH,CAAD,CAAL,GAAW2H,CAAX,GAAeA,CAAC,GAAG3H,CAAC,GAAG,GAA3B,CAAA;CACAi4B,MAAAA,CAAC,GAAG3wB,KAAK,CAAC7G,CAAD,CAAL,GAAWkH,CAAX,GAAeA,CAAC,GAAGlH,CAAC,GAAG,GAA3B,CAAA;OAEAkH,CAAC,GAAG0wB,eAAe,CAACb,EAAhB,GAAqBkB,OAAO,CAAC/wB,CAAD,CAAhC,CAAA;OACA3D,CAAC,GAAGq0B,eAAe,CAACd,EAAhB,GAAqBmB,OAAO,CAAC10B,CAAD,CAAhC,CAAA;OACAi0B,CAAC,GAAGI,eAAe,CAACZ,EAAhB,GAAqBiB,OAAO,CAACT,CAAD,CAAhC,CAAA;CAEAjX,MAAAA,CAAC,GAAG2X,OAAO,CAAC,SAAA,GAAY30B,CAAZ,GAAgB,SAAY2D,GAAAA,CAA5B,GAAgC,SAAA,GAAYswB,CAA7C,CAAX,CAlBwB;;CAmBxB73B,MAAAA,CAAC,GAAGu4B,OAAO,CAAC,CAAC,SAAD,GAAa30B,CAAb,GAAiB,SAAY2D,GAAAA,CAA7B,GAAiC,SAAA,GAAYswB,CAA9C,CAAX,CAAA;OACAQ,EAAE,GAAGE,OAAO,CAAC,SAAY30B,GAAAA,CAAZ,GAAgB,SAAA,GAAY2D,CAA5B,GAAgC,SAAYswB,GAAAA,CAA7C,CAAZ,CAAA;CAEA,MAAA,OAAO,CAACjX,CAAD,EAAG5gB,CAAH,EAAKq4B,EAAL,EAAQ1N,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAApC,CAAP,CAAA;MAtBJ,CAAA;;CAyBA,IAAA,IAAI4N,OAAO,GAAG,UAAU3X,CAAV,EAAa;CACvB,MAAA,OAAO,OAAOA,CAAC,IAAI,OAAL,GAAe,KAAA,GAAQA,CAAvB,GAA2B,KAAA,GAAQuX,KAAK,CAACvX,CAAD,EAAI,CAAA,GAAI,GAAR,CAAb,GAA4B,KAA9D,CAAP,CAAA;MADJ,CAAA;;CAIA,IAAA,IAAI0X,OAAO,GAAG,UAAUjU,CAAV,EAAa;OACvB,OAAOA,CAAC,GAAG4T,eAAe,CAAC1I,EAApB,GAAyBlL,CAAC,GAAGA,CAAJ,GAAQA,CAAjC,GAAqC4T,eAAe,CAAC3I,EAAhB,IAAsBjL,CAAC,GAAG4T,eAAe,CAACX,EAA1C,CAA5C,CAAA;MADJ,CAAA;;KAIA,IAAIkB,SAAS,GAAGJ,SAAhB,CAAA;CAEA,IAAA,IAAIK,QAAQ,GAAGvN,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIqN,MAAM,GAAGxN,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIqc,QAAQ,GAAG5L,QAAf,CAAA;KACA,IAAI6L,OAAO,GAAGjM,OAAd,CAAA;KACA,IAAIkM,OAAO,GAAGnN,OAAd,CAAA;KAEA,IAAIoN,SAAS,GAAGd,SAAhB,CAAA;;CAEAY,IAAAA,OAAO,CAACr5B,SAAR,CAAkBw5B,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOD,SAAS,CAAC,IAAKrM,CAAAA,IAAN,CAAhB,CAAA;MADJ,CAAA;;KAIAkM,QAAQ,CAACI,GAAT,GAAe,YAAY;OACvB,IAAIpO,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BogB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAS5sB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAkO,IAAAA,OAAO,CAAClN,MAAR,CAAeoN,GAAf,GAAqBP,SAArB,CAAA;CAEAK,IAAAA,OAAO,CAACjN,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAG8N,QAAQ,CAAC9N,IAAD,EAAO,KAAP,CAAf,CAAA;;CACA,QAAA,IAAI+N,MAAM,CAAC/N,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAIy6B,QAAQ,GAAG9N,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAII,OAAO,GAAGP,KAAK,CAACO,OAApB,CAAA;CACA,IAAA,IAAIwN,MAAM,GAAG/5B,IAAI,CAAC8D,IAAlB,CAAA;CACA,IAAA,IAAIk2B,OAAO,GAAGh6B,IAAI,CAACi6B,KAAnB,CAAA;CACA,IAAA,IAAIC,OAAO,GAAGl6B,IAAI,CAACsK,KAAnB,CAAA;;KAEA,IAAI6vB,SAAS,GAAG,YAAY;OACxB,IAAI1O,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAG6L,QAAQ,CAACrO,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGgV,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIvtB,CAAC,GAAGutB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAI/sB,CAAC,GAAG64B,MAAM,CAACr5B,CAAC,GAAGA,CAAJ,GAAQS,CAAC,GAAGA,CAAb,CAAd,CAAA;CACA,MAAA,IAAIJ,CAAC,GAAG,CAACi5B,OAAO,CAAC74B,CAAD,EAAIT,CAAJ,CAAP,GAAgB6rB,OAAhB,GAA0B,GAA3B,IAAkC,GAA1C,CAAA;;OACA,IAAI2N,OAAO,CAACh5B,CAAC,GAAC,KAAH,CAAP,KAAqB,CAAzB,EAA4B;SAAEH,CAAC,GAAGyB,MAAM,CAACga,GAAX,CAAA;CAAiB,OAAA;;CAC/C,MAAA,OAAO,CAACvD,CAAD,EAAI/X,CAAJ,EAAOH,CAAP,CAAP,CAAA;MAXJ,CAAA;;KAcA,IAAIq5B,SAAS,GAAGD,SAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAGrO,KAAK,CAACG,MAArB,CAAA;KACA,IAAImO,OAAO,GAAGxB,SAAd,CAAA;KACA,IAAIyB,SAAS,GAAGH,SAAhB,CAAA;;KAEA,IAAII,SAAS,GAAG,YAAY;OACxB,IAAI/O,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGoM,QAAQ,CAAC5O,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAIwK,KAAK,GAAG6B,OAAO,CAAC5Y,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,CAAnB,CAAA;CACA,MAAA,IAAI8X,CAAC,GAAGwf,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAI/3B,CAAC,GAAG+3B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIU,EAAE,GAAGV,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,OAAO8B,SAAS,CAACthB,CAAD,EAAGvY,CAAH,EAAKy4B,EAAL,CAAhB,CAAA;MAZJ,CAAA;;KAeA,IAAIsB,SAAS,GAAGD,SAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAG1O,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIG,OAAO,GAAGN,KAAK,CAACM,OAApB,CAAA;CACA,IAAA,IAAIqO,KAAK,GAAG36B,IAAI,CAAC0U,GAAjB,CAAA;CACA,IAAA,IAAIkmB,KAAK,GAAG56B,IAAI,CAACgU,GAAjB,CAAA;;KAEA,IAAI6mB,SAAS,GAAG,YAAY;OACxB,IAAIpP,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;CAExB;CACA;CACA;CACA;CACA;CACA;;;CAEQ,MAAA,IAAIgB,GAAG,GAAGyM,QAAQ,CAACjP,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGgV,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI/sB,CAAC,GAAG+sB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIltB,CAAC,GAAGktB,GAAG,CAAC,CAAD,CAAX,CAAA;;CACA,MAAA,IAAIjmB,KAAK,CAACjH,CAAD,CAAT,EAAc;CAAEA,QAAAA,CAAC,GAAG,CAAJ,CAAA;CAAQ,OAAA;;OACxBA,CAAC,GAAGA,CAAC,GAAGurB,OAAR,CAAA;CACA,MAAA,OAAO,CAACrT,CAAD,EAAI2hB,KAAK,CAAC75B,CAAD,CAAL,GAAWG,CAAf,EAAkBy5B,KAAK,CAAC55B,CAAD,CAAL,GAAWG,CAA7B,CAAP,CAAA;MAjBJ,CAAA;;KAoBA,IAAI45B,SAAS,GAAGD,SAAhB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAG/O,KAAK,CAACG,MAArB,CAAA;KACA,IAAI6O,SAAS,GAAGF,SAAhB,CAAA;KACA,IAAIG,OAAO,GAAG3B,SAAd,CAAA;;KAEA,IAAI4B,SAAS,GAAG,YAAY;OACxB,IAAIzP,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAGsP,QAAQ,CAACtP,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGwS,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIvqB,CAAC,GAAGuqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIwC,GAAG,GAAG+M,SAAS,CAAE/hB,CAAF,EAAI/X,CAAJ,EAAMH,CAAN,CAAnB,CAAA;CACA,MAAA,IAAIo6B,CAAC,GAAGlN,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIvtB,CAAC,GAAGutB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIkL,EAAE,GAAGlL,GAAG,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIwK,KAAK,GAAGwC,OAAO,CAAEE,CAAF,EAAIz6B,CAAJ,EAAMy4B,EAAN,CAAnB,CAAA;CACA,MAAA,IAAIzX,CAAC,GAAG+W,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAI33B,CAAC,GAAG23B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIt3B,CAAC,GAAGs3B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,OAAO,CAAC/W,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,EAAUsqB,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAtC,CAAP,CAAA;MAhBJ,CAAA;;KAmBA,IAAI2P,SAAS,GAAGF,SAAhB,CAAA;CAEA,IAAA,IAAIG,QAAQ,GAAGrP,KAAK,CAACG,MAArB,CAAA;KACA,IAAImP,OAAO,GAAGF,SAAd,CAAA;;KAEA,IAAIG,OAAO,GAAG,YAAY;OACtB,IAAI9P,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,IAAIuO,GAAG,GAAGH,QAAQ,CAAC5P,IAAD,EAAO,KAAP,CAAR,CAAsBgQ,OAAtB,EAAV,CAAA;OACA,OAAOH,OAAO,CAAChiB,KAAR,CAAc,KAAK,CAAnB,EAAsBkiB,GAAtB,CAAP,CAAA;MALJ,CAAA;;KAQA,IAAIE,SAAS,GAAGH,OAAhB,CAAA;CAEA,IAAA,IAAII,QAAQ,GAAG3P,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIyP,MAAM,GAAG5P,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIye,QAAQ,GAAGhO,QAAf,CAAA;KACA,IAAIiO,OAAO,GAAGrO,OAAd,CAAA;KACA,IAAIsO,OAAO,GAAGvP,OAAd,CAAA;KAEA,IAAIwP,OAAO,GAAGvB,SAAd,CAAA;;CAEAqB,IAAAA,OAAO,CAACz7B,SAAR,CAAkB47B,GAAlB,GAAwB,YAAW;CAAE,MAAA,OAAOD,OAAO,CAAC,IAAKzO,CAAAA,IAAN,CAAd,CAAA;MAArC,CAAA;;CACAuO,IAAAA,OAAO,CAACz7B,SAAR,CAAkBm7B,GAAlB,GAAwB,YAAW;CAAE,MAAA,OAAOQ,OAAO,CAAC,IAAA,CAAKzO,IAAN,CAAP,CAAmBkO,OAAnB,EAAP,CAAA;MAArC,CAAA;;KAEAI,QAAQ,CAACI,GAAT,GAAe,YAAY;OACvB,IAAIxQ,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BwiB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAShvB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;KAMAoQ,QAAQ,CAACL,GAAT,GAAe,YAAY;OACvB,IAAI/P,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BwiB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAShvB,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAsQ,IAAAA,OAAO,CAACtP,MAAR,CAAewP,GAAf,GAAqBb,SAArB,CAAA;CACAW,IAAAA,OAAO,CAACtP,MAAR,CAAe+O,GAAf,GAAqBE,SAArB,CAAA;KAEA,CAAC,KAAD,EAAO,KAAP,CAAA,CAAcryB,OAAd,CAAsB,UAAUsR,CAAV,EAAa;CAAE,MAAA,OAAOohB,OAAO,CAACrP,UAAR,CAAmBtlB,IAAnB,CAAwB;CAChEyT,QAAAA,CAAC,EAAE,CAD6D;CAEhEyS,QAAAA,IAAI,EAAE,YAAY;WACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,cAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;WACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,UAAAA,IAAI,GAAGkQ,QAAQ,CAAClQ,IAAD,EAAO9Q,CAAP,CAAf,CAAA;;CACA,UAAA,IAAIihB,MAAM,CAACnQ,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,YAAA,OAAOsb,CAAP,CAAA;CACH,WAAA;CACJ,SAAA;CAV+D,OAAxB,CAAP,CAAA;MAArC,CAAA,CAAA;CAaJ;CACA;CACA;CACA;;CAGI,IAAA,IAAIuhB,QAAQ,GAAG;CACXC,MAAAA,SAAS,EAAE,SADA;CAEXC,MAAAA,YAAY,EAAE,SAFH;CAGXC,MAAAA,IAAI,EAAE,SAHK;CAIXC,MAAAA,UAAU,EAAE,SAJD;CAKXC,MAAAA,KAAK,EAAE,SALI;CAMXC,MAAAA,KAAK,EAAE,SANI;CAOXC,MAAAA,MAAM,EAAE,SAPG;CAQXC,MAAAA,KAAK,EAAE,SARI;CASXC,MAAAA,cAAc,EAAE,SATL;CAUXC,MAAAA,IAAI,EAAE,SAVK;CAWXC,MAAAA,UAAU,EAAE,SAXD;CAYXC,MAAAA,KAAK,EAAE,SAZI;CAaXC,MAAAA,SAAS,EAAE,SAbA;CAcXC,MAAAA,SAAS,EAAE,SAdA;CAeXC,MAAAA,UAAU,EAAE,SAfD;CAgBXC,MAAAA,SAAS,EAAE,SAhBA;CAiBXC,MAAAA,KAAK,EAAE,SAjBI;CAkBXC,MAAAA,UAAU,EAAE,SAlBD;CAmBXC,MAAAA,cAAc,EAAE,SAnBL;CAoBXC,MAAAA,QAAQ,EAAE,SApBC;CAqBXC,MAAAA,OAAO,EAAE,SArBE;CAsBXC,MAAAA,IAAI,EAAE,SAtBK;CAuBXC,MAAAA,QAAQ,EAAE,SAvBC;CAwBXC,MAAAA,QAAQ,EAAE,SAxBC;CAyBXC,MAAAA,aAAa,EAAE,SAzBJ;CA0BXC,MAAAA,QAAQ,EAAE,SA1BC;CA2BXC,MAAAA,SAAS,EAAE,SA3BA;CA4BXC,MAAAA,QAAQ,EAAE,SA5BC;CA6BXC,MAAAA,SAAS,EAAE,SA7BA;CA8BXC,MAAAA,WAAW,EAAE,SA9BF;CA+BXC,MAAAA,cAAc,EAAE,SA/BL;CAgCXC,MAAAA,UAAU,EAAE,SAhCD;CAiCXC,MAAAA,UAAU,EAAE,SAjCD;CAkCXC,MAAAA,OAAO,EAAE,SAlCE;CAmCXC,MAAAA,UAAU,EAAE,SAnCD;CAoCXC,MAAAA,YAAY,EAAE,SApCH;CAqCXC,MAAAA,aAAa,EAAE,SArCJ;CAsCXC,MAAAA,aAAa,EAAE,SAtCJ;CAuCXC,MAAAA,aAAa,EAAE,SAvCJ;CAwCXC,MAAAA,aAAa,EAAE,SAxCJ;CAyCXC,MAAAA,UAAU,EAAE,SAzCD;CA0CXC,MAAAA,QAAQ,EAAE,SA1CC;CA2CXC,MAAAA,WAAW,EAAE,SA3CF;CA4CXC,MAAAA,OAAO,EAAE,SA5CE;CA6CXC,MAAAA,OAAO,EAAE,SA7CE;CA8CXC,MAAAA,UAAU,EAAE,SA9CD;CA+CXC,MAAAA,SAAS,EAAE,SA/CA;CAgDXC,MAAAA,WAAW,EAAE,SAhDF;CAiDXC,MAAAA,WAAW,EAAE,SAjDF;CAkDXC,MAAAA,OAAO,EAAE,SAlDE;CAmDXC,MAAAA,SAAS,EAAE,SAnDA;CAoDXC,MAAAA,UAAU,EAAE,SApDD;CAqDXC,MAAAA,IAAI,EAAE,SArDK;CAsDXC,MAAAA,SAAS,EAAE,SAtDA;CAuDXC,MAAAA,IAAI,EAAE,SAvDK;CAwDXC,MAAAA,KAAK,EAAE,SAxDI;CAyDXC,MAAAA,WAAW,EAAE,SAzDF;CA0DXC,MAAAA,IAAI,EAAE,SA1DK;CA2DXC,MAAAA,QAAQ,EAAE,SA3DC;CA4DXC,MAAAA,OAAO,EAAE,SA5DE;CA6DXC,MAAAA,SAAS,EAAE,SA7DA;CA8DXC,MAAAA,MAAM,EAAE,SA9DG;CA+DXC,MAAAA,KAAK,EAAE,SA/DI;CAgEXC,MAAAA,KAAK,EAAE,SAhEI;CAiEXC,MAAAA,UAAU,EAAE,SAjED;CAkEXC,MAAAA,QAAQ,EAAE,SAlEC;CAmEXC,MAAAA,aAAa,EAAE,SAnEJ;CAoEXC,MAAAA,SAAS,EAAE,SApEA;CAqEXC,MAAAA,YAAY,EAAE,SArEH;CAsEXC,MAAAA,SAAS,EAAE,SAtEA;CAuEXC,MAAAA,UAAU,EAAE,SAvED;CAwEXC,MAAAA,SAAS,EAAE,SAxEA;CAyEXC,MAAAA,cAAc,EAAE,SAzEL;CA0EXC,MAAAA,oBAAoB,EAAE,SA1EX;CA2EXC,MAAAA,SAAS,EAAE,SA3EA;CA4EXC,MAAAA,UAAU,EAAE,SA5ED;CA6EXC,MAAAA,SAAS,EAAE,SA7EA;CA8EXC,MAAAA,SAAS,EAAE,SA9EA;CA+EXC,MAAAA,WAAW,EAAE,SA/EF;CAgFXC,MAAAA,aAAa,EAAE,SAhFJ;CAiFXC,MAAAA,YAAY,EAAE,SAjFH;CAkFXC,MAAAA,cAAc,EAAE,SAlFL;CAmFXC,MAAAA,cAAc,EAAE,SAnFL;CAoFXC,MAAAA,cAAc,EAAE,SApFL;CAqFXC,MAAAA,WAAW,EAAE,SArFF;CAsFXC,MAAAA,IAAI,EAAE,SAtFK;CAuFXC,MAAAA,SAAS,EAAE,SAvFA;CAwFXC,MAAAA,KAAK,EAAE,SAxFI;CAyFXC,MAAAA,OAAO,EAAE,SAzFE;CA0FXC,MAAAA,MAAM,EAAE,SA1FG;CA2FXC,MAAAA,OAAO,EAAE,SA3FE;CA4FXC,MAAAA,OAAO,EAAE,SA5FE;CA6FXC,MAAAA,gBAAgB,EAAE,SA7FP;CA8FXC,MAAAA,UAAU,EAAE,SA9FD;CA+FXC,MAAAA,YAAY,EAAE,SA/FH;CAgGXC,MAAAA,YAAY,EAAE,SAhGH;CAiGXC,MAAAA,cAAc,EAAE,SAjGL;CAkGXC,MAAAA,eAAe,EAAE,SAlGN;CAmGXC,MAAAA,iBAAiB,EAAE,SAnGR;CAoGXC,MAAAA,eAAe,EAAE,SApGN;CAqGXC,MAAAA,eAAe,EAAE,SArGN;CAsGXC,MAAAA,YAAY,EAAE,SAtGH;CAuGXC,MAAAA,SAAS,EAAE,SAvGA;CAwGXC,MAAAA,SAAS,EAAE,SAxGA;CAyGXC,MAAAA,QAAQ,EAAE,SAzGC;CA0GXC,MAAAA,WAAW,EAAE,SA1GF;CA2GXC,MAAAA,IAAI,EAAE,SA3GK;CA4GXC,MAAAA,OAAO,EAAE,SA5GE;CA6GXC,MAAAA,KAAK,EAAE,SA7GI;CA8GXC,MAAAA,SAAS,EAAE,SA9GA;CA+GXC,MAAAA,MAAM,EAAE,SA/GG;CAgHXC,MAAAA,SAAS,EAAE,SAhHA;CAiHXC,MAAAA,MAAM,EAAE,SAjHG;CAkHXC,MAAAA,aAAa,EAAE,SAlHJ;CAmHXC,MAAAA,SAAS,EAAE,SAnHA;CAoHXC,MAAAA,aAAa,EAAE,SApHJ;CAqHXC,MAAAA,aAAa,EAAE,SArHJ;CAsHXC,MAAAA,UAAU,EAAE,SAtHD;CAuHXC,MAAAA,SAAS,EAAE,SAvHA;CAwHXC,MAAAA,IAAI,EAAE,SAxHK;CAyHXC,MAAAA,IAAI,EAAE,SAzHK;CA0HXC,MAAAA,IAAI,EAAE,SA1HK;CA2HXC,MAAAA,UAAU,EAAE,SA3HD;CA4HXC,MAAAA,MAAM,EAAE,SA5HG;CA6HXC,MAAAA,OAAO,EAAE,SA7HE;CA8HXC,MAAAA,OAAO,EAAE,SA9HE;CA+HXC,MAAAA,aAAa,EAAE,SA/HJ;CAgIXC,MAAAA,GAAG,EAAE,SAhIM;CAiIXC,MAAAA,SAAS,EAAE,SAjIA;CAkIXC,MAAAA,SAAS,EAAE,SAlIA;CAmIXC,MAAAA,WAAW,EAAE,SAnIF;CAoIXC,MAAAA,MAAM,EAAE,SApIG;CAqIXC,MAAAA,UAAU,EAAE,SArID;CAsIXC,MAAAA,QAAQ,EAAE,SAtIC;CAuIXC,MAAAA,QAAQ,EAAE,SAvIC;CAwIXC,MAAAA,MAAM,EAAE,SAxIG;CAyIXC,MAAAA,MAAM,EAAE,SAzIG;CA0IXC,MAAAA,OAAO,EAAE,SA1IE;CA2IXC,MAAAA,SAAS,EAAE,SA3IA;CA4IXC,MAAAA,SAAS,EAAE,SA5IA;CA6IXC,MAAAA,SAAS,EAAE,SA7IA;CA8IXC,MAAAA,IAAI,EAAE,SA9IK;CA+IXC,MAAAA,WAAW,EAAE,SA/IF;CAgJXC,MAAAA,SAAS,EAAE,SAhJA;CAiJXtwB,MAAAA,GAAG,EAAE,SAjJM;CAkJXuwB,MAAAA,IAAI,EAAE,SAlJK;CAmJXC,MAAAA,OAAO,EAAE,SAnJE;CAoJXC,MAAAA,MAAM,EAAE,SApJG;CAqJXC,MAAAA,SAAS,EAAE,SArJA;CAsJXC,MAAAA,MAAM,EAAE,SAtJG;CAuJXC,MAAAA,KAAK,EAAE,SAvJI;CAwJXC,MAAAA,KAAK,EAAE,SAxJI;CAyJXC,MAAAA,UAAU,EAAE,SAzJD;CA0JXC,MAAAA,MAAM,EAAE,SA1JG;CA2JXC,MAAAA,WAAW,EAAE,SAAA;MA3JjB,CAAA;KA8JA,IAAIC,QAAQ,GAAG3J,QAAf,CAAA;KAEA,IAAI4J,OAAO,GAAGrY,OAAd,CAAA;KACA,IAAIsY,OAAO,GAAGvZ,OAAd,CAAA;CACA,IAAA,IAAIwZ,MAAM,GAAGha,KAAK,CAAC5O,IAAnB,CAAA;KAEA,IAAI6oB,MAAM,GAAGJ,QAAb,CAAA;KACA,IAAIK,OAAO,GAAGnR,SAAd,CAAA;KACA,IAAIoR,OAAO,GAAG5R,SAAd,CAAA;;CAEAuR,IAAAA,OAAO,CAACzlC,SAAR,CAAkB0O,IAAlB,GAAyB,YAAW;OAChC,IAAIye,GAAG,GAAG2Y,OAAO,CAAC,KAAK5Y,IAAN,EAAY,KAAZ,CAAjB,CAAA;;OACA,KAAK,IAAIvsB,CAAC,GAAG,CAAR,EAAWosB,IAAI,GAAGhtB,MAAM,CAACgmC,IAAP,CAAYH,MAAZ,CAAvB,EAA4CjlC,CAAC,GAAGosB,IAAI,CAAC/tB,MAArD,EAA6D2B,CAAC,IAAI,CAAlE,EAAqE;CACjE,QAAA,IAAIwC,CAAC,GAAG4pB,IAAI,CAACpsB,CAAD,CAAZ,CAAA;;CAEA,QAAA,IAAIilC,MAAM,CAACziC,CAAD,CAAN,KAAcgqB,GAAlB,EAAuB;WAAE,OAAOhqB,CAAC,CAAC4C,WAAF,EAAP,CAAA;CAAyB,SAAA;CACrD,OAAA;;CACD,MAAA,OAAOonB,GAAP,CAAA;MAPJ,CAAA;;CAUAuY,IAAAA,OAAO,CAACtZ,MAAR,CAAe2E,KAAf,GAAuB,UAAUriB,IAAV,EAAgB;CACnCA,MAAAA,IAAI,GAAGA,IAAI,CAAC3I,WAAL,EAAP,CAAA;;CACA,MAAA,IAAI6/B,MAAM,CAACl3B,IAAD,CAAV,EAAkB;CAAE,QAAA,OAAOm3B,OAAO,CAACD,MAAM,CAACl3B,IAAD,CAAP,CAAd,CAAA;CAA+B,OAAA;;CACnD,MAAA,MAAM,IAAI7O,KAAJ,CAAU,sBAAA,GAAuB6O,IAAjC,CAAN,CAAA;MAHJ,CAAA;;CAMAg3B,IAAAA,OAAO,CAACrZ,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;OAEpByS,IAAI,EAAE,UAAUvsB,CAAV,EAAa;SACf,IAAIuxB,IAAI,GAAG,EAAX;CAAA,YAAerF,GAAG,GAAGnf,SAAS,CAACzO,MAAV,GAAmB,CAAxC,CAAA;;CACA,QAAA,OAAQ4tB,GAAG,EAAA,GAAK,CAAhB,EAAoBqF,IAAI,CAAErF,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAG,GAAG,CAAR,CAAvB,CAAA;;CAEpB,QAAA,IAAI,CAACqF,IAAI,CAACjzB,MAAN,IAAgB2mC,MAAM,CAACjlC,CAAD,CAAN,KAAc,QAA9B,IAA0CklC,MAAM,CAACllC,CAAC,CAACqF,WAAF,EAAD,CAApD,EAAuE;CACnE,UAAA,OAAO,OAAP,CAAA;CACH,SAAA;CACJ,OAAA;MATL,CAAA,CAAA;CAYA,IAAA,IAAIigC,QAAQ,GAAGra,KAAK,CAACG,MAArB,CAAA;;KAEA,IAAIma,SAAS,GAAG,YAAY;OACxB,IAAI7a,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGoY,QAAQ,CAAC5a,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,OAAO,CAACvM,CAAC,IAAI,EAAN,KAAa5gB,CAAC,IAAI,CAAlB,CAAA,GAAuBK,CAA9B,CAAA;MARJ,CAAA;;KAWA,IAAIolC,SAAS,GAAGD,SAAhB,CAAA;CAEA,IAAA,IAAIE,MAAM,GAAGxa,KAAK,CAAC5O,IAAnB,CAAA;;CAEA,IAAA,IAAIqpB,OAAO,GAAG,UAAUh3B,GAAV,EAAe;CACzB,MAAA,IAAI+2B,MAAM,CAAC/2B,GAAD,CAAN,IAAe,QAAf,IAA2BA,GAAG,IAAI,CAAlC,IAAuCA,GAAG,IAAI,QAAlD,EAA4D;CACxD,QAAA,IAAIiS,CAAC,GAAGjS,GAAG,IAAI,EAAf,CAAA;CACA,QAAA,IAAI3O,CAAC,GAAI2O,GAAG,IAAI,CAAR,GAAa,IAArB,CAAA;CACA,QAAA,IAAItO,CAAC,GAAGsO,GAAG,GAAG,IAAd,CAAA;SACA,OAAO,CAACiS,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAO,CAAP,CAAP,CAAA;CACH,OAAA;;CACD,MAAA,MAAM,IAAIjB,KAAJ,CAAU,qBAAA,GAAsBuP,GAAhC,CAAN,CAAA;MAPJ,CAAA;;KAUA,IAAIi3B,SAAS,GAAGD,OAAhB,CAAA;KAEA,IAAIE,QAAQ,GAAG9Y,QAAf,CAAA;KACA,IAAI+Y,OAAO,GAAGnZ,OAAd,CAAA;KACA,IAAIoZ,OAAO,GAAGra,OAAd,CAAA;CACA,IAAA,IAAIsa,MAAM,GAAG9a,KAAK,CAAC5O,IAAnB,CAAA;KAEA,IAAI2pB,OAAO,GAAGR,SAAd,CAAA;;CAEAK,IAAAA,OAAO,CAACvmC,SAAR,CAAkBoP,GAAlB,GAAwB,YAAW;CAC/B,MAAA,OAAOs3B,OAAO,CAAC,IAAKxZ,CAAAA,IAAN,CAAd,CAAA;MADJ,CAAA;;KAIAoZ,QAAQ,CAACl3B,GAAT,GAAe,YAAY;OACvB,IAAIgc,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BstB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAAS95B,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAob,IAAAA,OAAO,CAACpa,MAAR,CAAehd,GAAf,GAAqBi3B,SAArB,CAAA;CAEAG,IAAAA,OAAO,CAACna,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,QAAA,IAAIxB,IAAI,CAACpsB,MAAL,KAAgB,CAAhB,IAAqBynC,MAAM,CAACrb,IAAI,CAAC,CAAD,CAAL,CAAN,KAAoB,QAAzC,IAAqDA,IAAI,CAAC,CAAD,CAAJ,IAAW,CAAhE,IAAqEA,IAAI,CAAC,CAAD,CAAJ,IAAW,QAApF,EAA8F;CAC1F,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MATL,CAAA,CAAA;KAYA,IAAIub,QAAQ,GAAGnZ,QAAf,CAAA;KACA,IAAIoZ,OAAO,GAAGxZ,OAAd,CAAA;KACA,IAAIyZ,OAAO,GAAG1a,OAAd,CAAA;CACA,IAAA,IAAI2a,QAAQ,GAAGnb,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIib,MAAM,GAAGpb,KAAK,CAAC5O,IAAnB,CAAA;CACA,IAAA,IAAIiqB,OAAO,GAAGrnC,IAAI,CAACsK,KAAnB,CAAA;;CAEA28B,IAAAA,OAAO,CAAC5mC,SAAR,CAAkB0qB,GAAlB,GAAwB,UAASgE,GAAT,EAAc;CAClC,MAAA,IAAKA,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,IAAJ,CAAA;;OAEtB,IAAIA,GAAG,KAAK,KAAZ,EAAmB;SAAE,OAAO,IAAA,CAAKxB,IAAL,CAAU1rB,KAAV,CAAgB,CAAhB,EAAkB,CAAlB,CAAP,CAAA;CAA8B,OAAA;;CACnD,MAAA,OAAO,IAAK0rB,CAAAA,IAAL,CAAU1rB,KAAV,CAAgB,CAAhB,EAAkB,CAAlB,CAAqBsH,CAAAA,GAArB,CAAyBk+B,OAAzB,CAAP,CAAA;MAJJ,CAAA;;CAOAJ,IAAAA,OAAO,CAAC5mC,SAAR,CAAkBuvB,IAAlB,GAAyB,UAASb,GAAT,EAAc;CACnC,MAAA,IAAKA,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,IAAJ,CAAA;CAEtB,MAAA,OAAO,IAAKxB,CAAAA,IAAL,CAAU1rB,KAAV,CAAgB,CAAhB,EAAkB,CAAlB,CAAA,CAAqBsH,GAArB,CAAyB,UAAUwN,CAAV,EAAY3V,CAAZ,EAAe;CAC3C,QAAA,OAAOA,CAAC,GAAC,CAAF,GAAO+tB,GAAG,KAAK,KAAR,GAAgBpY,CAAhB,GAAoB0wB,OAAO,CAAC1wB,CAAD,CAAlC,GAAyCA,CAAhD,CAAA;CACH,OAFM,CAAP,CAAA;MAHJ,CAAA;;KAQAqwB,QAAQ,CAACjc,GAAT,GAAe,YAAY;OACvB,IAAIU,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B2tB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASn6B,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,KAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOAyb,IAAAA,OAAO,CAACza,MAAR,CAAe1B,GAAf,GAAqB,YAAY;OAC7B,IAAIU,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAI2C,IAAI,GAAGuX,QAAQ,CAAC1b,IAAD,EAAO,MAAP,CAAnB,CAAA;;CACA,MAAA,IAAImE,IAAI,CAAC,CAAD,CAAJ,KAAYttB,SAAhB,EAA2B;CAAEstB,QAAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,CAAV,CAAA;CAAc,OAAA;;CAC3C,MAAA,OAAOA,IAAP,CAAA;MANJ,CAAA;;CASAsX,IAAAA,OAAO,CAACxa,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAG0b,QAAQ,CAAC1b,IAAD,EAAO,MAAP,CAAf,CAAA;;CACA,QAAA,IAAI2b,MAAM,CAAC3b,IAAD,CAAN,KAAiB,OAAjB,KAA6BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhB,IAC7BosB,IAAI,CAACpsB,MAAL,KAAgB,CAAhB,IAAqB+nC,MAAM,CAAC3b,IAAI,CAAC,CAAD,CAAL,CAAN,IAAmB,QAAxC,IAAoDA,IAAI,CAAC,CAAD,CAAJ,IAAW,CAA/D,IAAoEA,IAAI,CAAC,CAAD,CAAJ,IAAW,CAD/E,CAAJ,EACuF;CACnF,UAAA,OAAO,KAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAXL,CAAA,CAAA;CAcJ;CACA;CACA;CACA;;CAEI,IAAA,IAAI6b,KAAK,GAAGtnC,IAAI,CAACC,GAAjB,CAAA;;CAEA,IAAA,IAAIsnC,iBAAiB,GAAG,UAAUC,MAAV,EAAkB;CACtC,MAAA,IAAIlsB,IAAI,GAAGksB,MAAM,GAAG,GAApB,CAAA;CACA,MAAA,IAAI9lB,CAAJ,EAAM5gB,CAAN,EAAQK,CAAR,CAAA;;OACA,IAAIma,IAAI,GAAG,EAAX,EAAe;CACXoG,QAAAA,CAAC,GAAG,GAAJ,CAAA;SACA5gB,CAAC,GAAGwa,IAAI,GAAG,CAAP,GAAW,CAAX,GAAe,CAAC,kBAAD,GAAsB,mBAAA,IAAuBxa,CAAC,GAAGwa,IAAI,GAAC,CAAhC,CAAtB,GAA2D,kBAAqBgsB,GAAAA,KAAK,CAACxmC,CAAD,CAAxG,CAAA;SACAK,CAAC,GAAGma,IAAI,GAAG,EAAP,GAAY,CAAZ,GAAgB,CAAC,kBAAD,GAAsB,kBAAA,IAAsBna,CAAC,GAAGma,IAAI,GAAC,EAA/B,CAAtB,GAA2D,kBAAqBgsB,GAAAA,KAAK,CAACnmC,CAAD,CAAzG,CAAA;CACH,OAJD,MAIO;CACHugB,QAAAA,CAAC,GAAG,kBAAA,GAAqB,iBAAqBA,IAAAA,CAAC,GAAGpG,IAAI,GAAC,EAA9B,CAArB,GAAyD,iBAAA,GAAoBgsB,KAAK,CAAC5lB,CAAD,CAAtF,CAAA;CACA5gB,QAAAA,CAAC,GAAG,iBAAA,GAAoB,mBAAuBA,IAAAA,CAAC,GAAGwa,IAAI,GAAC,EAAhC,CAApB,GAA0D,gBAAA,GAAmBgsB,KAAK,CAACxmC,CAAD,CAAtF,CAAA;CACAK,QAAAA,CAAC,GAAG,GAAJ,CAAA;CACH,OAAA;;OACD,OAAO,CAACugB,CAAD,EAAG5gB,CAAH,EAAKK,CAAL,EAAO,CAAP,CAAP,CAAA;MAZJ,CAAA;;KAeA,IAAIsmC,iBAAiB,GAAGF,iBAAxB,CAAA;CAEJ;CACA;CACA;CACA;;KAEI,IAAIG,eAAe,GAAGD,iBAAtB,CAAA;CACA,IAAA,IAAIE,QAAQ,GAAG3b,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI7hB,KAAK,GAAGtK,IAAI,CAACsK,KAAjB,CAAA;;KAEA,IAAIs9B,iBAAiB,GAAG,YAAY;OAChC,IAAInc,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIlC,GAAG,GAAG4c,QAAQ,CAAClc,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGqJ,GAAG,CAAC,CAAD,CAAX;CAAA,UAAgB5pB,CAAC,GAAG4pB,GAAG,CAAC,CAAD,CAAvB,CAAA;OACA,IAAI8c,OAAO,GAAG,IAAd,CAAA;OACA,IAAIC,OAAO,GAAG,KAAd,CAAA;OACA,IAAIlgB,GAAG,GAAG,GAAV,CAAA;CACA,MAAA,IAAItM,IAAJ,CAAA;;CACA,MAAA,OAAOwsB,OAAO,GAAGD,OAAV,GAAoBjgB,GAA3B,EAAgC;CAC5BtM,QAAAA,IAAI,GAAG,CAACwsB,OAAO,GAAGD,OAAX,IAAsB,GAA7B,CAAA;CACA,QAAA,IAAIvW,KAAK,GAAGoW,eAAe,CAACpsB,IAAD,CAA3B,CAAA;;CACA,QAAA,IAAKgW,KAAK,CAAC,CAAD,CAAL,GAAWA,KAAK,CAAC,CAAD,CAAjB,IAA0BnwB,CAAC,GAAGugB,CAAlC,EAAsC;CAClComB,UAAAA,OAAO,GAAGxsB,IAAV,CAAA;CACH,SAFD,MAEO;CACHusB,UAAAA,OAAO,GAAGvsB,IAAV,CAAA;CACH,SAAA;CACJ,OAAA;;OACD,OAAOhR,KAAK,CAACgR,IAAD,CAAZ,CAAA;MAnBJ,CAAA;;KAsBA,IAAIysB,iBAAiB,GAAGH,iBAAxB,CAAA;KAEA,IAAII,QAAQ,GAAGna,QAAf,CAAA;KACA,IAAIoa,OAAO,GAAGxa,OAAd,CAAA;KACA,IAAIya,OAAO,GAAG1b,OAAd,CAAA;KAEA,IAAI2b,eAAe,GAAGJ,iBAAtB,CAAA;;CAEAE,IAAAA,OAAO,CAAC5nC,SAAR,CAAkBib,IAAlB,GACA2sB,OAAO,CAAC5nC,SAAR,CAAkBmnC,MAAlB,GACAS,OAAO,CAAC5nC,SAAR,CAAkB+nC,WAAlB,GAAgC,YAAW;CACvC,MAAA,OAAOD,eAAe,CAAC,IAAK5a,CAAAA,IAAN,CAAtB,CAAA;MAHJ,CAAA;;KAMAya,QAAQ,CAAC1sB,IAAT,GACA0sB,QAAQ,CAACR,MAAT,GACAQ,QAAQ,CAACI,WAAT,GAAuB,YAAY;OAC/B,IAAI3c,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B2uB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASn7B,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,MAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MANJ,CAAA;;CASAyc,IAAAA,OAAO,CAACzb,MAAR,CAAenR,IAAf,GACA4sB,OAAO,CAACzb,MAAR,CAAe+a,MAAf,GACAU,OAAO,CAACzb,MAAR,CAAe2b,WAAf,GAA6BX,iBAF7B,CAAA;CAIA,IAAA,IAAIY,QAAQ,GAAGrc,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAItY,IAAI,GAAG7T,IAAI,CAAC6T,IAAhB,CAAA;CACA,IAAA,IAAIy0B,KAAK,GAAGtoC,IAAI,CAAC+U,GAAjB,CAAA;CACA,IAAA,IAAIwzB,MAAM,GAAGvoC,IAAI,CAACyU,IAAlB,CAAA;;KAEA,IAAI+zB,WAAW,GAAG,YAAY;OAC1B,IAAI/c,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;CACA,MAAA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAFU;CAKlC;;;CACQ,MAAA,IAAIgB,GAAG,GAAGoa,QAAQ,CAAC5c,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAIwK,KAAK,GAAG,CAACgQ,QAAQ,CAAC/mB,CAAC,GAAG,GAAL,CAAT,EAAoB+mB,QAAQ,CAAC3nC,CAAC,GAAG,GAAL,CAA5B,EAAuC2nC,QAAQ,CAACtnC,CAAC,GAAG,GAAL,CAA/C,CAAZ,CAAA;CACA,MAAA,IAAIunC,EAAE,GAAGjQ,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAIkQ,EAAE,GAAGlQ,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAImQ,EAAE,GAAGnQ,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAIxf,CAAC,GAAGpF,IAAI,CAAC,YAAe60B,GAAAA,EAAf,GAAoB,YAAA,GAAeC,EAAnC,GAAwC,YAAeC,GAAAA,EAAxD,CAAZ,CAAA;CACA,MAAA,IAAIjuB,CAAC,GAAG9G,IAAI,CAAC,YAAe60B,GAAAA,EAAf,GAAoB,YAAA,GAAeC,EAAnC,GAAwC,YAAeC,GAAAA,EAAxD,CAAZ,CAAA;CACA,MAAA,IAAIhrB,CAAC,GAAG/J,IAAI,CAAC,YAAe60B,GAAAA,EAAf,GAAoB,YAAA,GAAeC,EAAnC,GAAwC,YAAeC,GAAAA,EAAxD,CAAZ,CAAA;OAEA,OAAO,CACH,YAAe3vB,GAAAA,CAAf,GAAmB,WAAA,GAAc0B,CAAjC,GAAqC,YAAeiD,GAAAA,CADjD,EAEH,YAAA,GAAe3E,CAAf,GAAmB,WAAc0B,GAAAA,CAAjC,GAAqC,YAAA,GAAeiD,CAFjD,EAGH,YAAe3E,GAAAA,CAAf,GAAmB,YAAA,GAAe0B,CAAlC,GAAsC,WAAciD,GAAAA,CAHjD,CAAP,CAAA;MAlBJ,CAAA;;KAyBA,IAAIirB,WAAW,GAAGL,WAAlB,CAAA;;KAEA,SAASC,QAAT,CAAkBvnC,CAAlB,EAAqB;CACjB,MAAA,IAAImD,GAAG,GAAGrE,IAAI,CAACqE,GAAL,CAASnD,CAAT,CAAV,CAAA;;OACA,IAAImD,GAAG,GAAG,OAAV,EAAmB;SACf,OAAOnD,CAAC,GAAG,KAAX,CAAA;CACH,OAAA;;CACD,MAAA,OAAO,CAACqnC,MAAM,CAACrnC,CAAD,CAAN,IAAa,CAAd,IAAmBonC,KAAK,CAAC,CAACjkC,GAAG,GAAG,KAAP,IAAgB,KAAjB,EAAwB,GAAxB,CAA/B,CAAA;CACH,KAAA;;CAED,IAAA,IAAIykC,QAAQ,GAAG9c,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAI4c,KAAK,GAAG/oC,IAAI,CAAC+U,GAAjB,CAAA;CACA,IAAA,IAAIN,IAAI,GAAGzU,IAAI,CAACyU,IAAhB,CAAA;CAEJ;CACA;CACA;CACA;CACA;;KACI,IAAIu0B,WAAW,GAAG,YAAY;OAC1B,IAAIvd,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAGqd,QAAQ,CAACrd,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAI0P,CAAC,GAAG1P,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI/qB,CAAC,GAAG+qB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAItqB,CAAC,GAAGsqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CAEA,MAAA,IAAIxS,CAAC,GAAG8vB,KAAK,CAAC5N,CAAC,GAAG,YAAez6B,GAAAA,CAAnB,GAAuB,YAAA,GAAeS,CAAvC,EAA0C,CAA1C,CAAb,CAAA;CACA,MAAA,IAAIwZ,CAAC,GAAGouB,KAAK,CAAC5N,CAAC,GAAG,YAAez6B,GAAAA,CAAnB,GAAuB,YAAA,GAAeS,CAAvC,EAA0C,CAA1C,CAAb,CAAA;CACA,MAAA,IAAIyc,CAAC,GAAGmrB,KAAK,CAAC5N,CAAC,GAAG,YAAez6B,GAAAA,CAAnB,GAAuB,WAAA,GAAcS,CAAtC,EAAyC,CAAzC,CAAb,CAAA;OAEA,OAAO,CACH,GAAM8nC,GAAAA,QAAQ,CAAC,CAAC,YAAD,GAAgBhwB,CAAhB,GAAoB,YAAe0B,GAAAA,CAAnC,GAAuC,YAAA,GAAeiD,CAAvD,CADX,EAEH,GAAA,GAAMqrB,QAAQ,CAAC,CAAC,YAAD,GAAgBhwB,CAAhB,GAAoB,YAAA,GAAe0B,CAAnC,GAAuC,YAAeiD,GAAAA,CAAvD,CAFX,EAGH,GAAA,GAAMqrB,QAAQ,CAAC,CAAC,YAAD,GAAgBhwB,CAAhB,GAAoB,YAAA,GAAe0B,CAAnC,GAAuC,WAAciD,GAAAA,CAAtD,CAHX,EAIH6N,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAJzB,CAAP,CAAA;MAbJ,CAAA;;KAqBA,IAAIyd,WAAW,GAAGF,WAAlB,CAAA;;KAEA,SAASC,QAAT,CAAkB/nC,CAAlB,EAAqB;CACjB,MAAA,IAAImD,GAAG,GAAGrE,IAAI,CAACqE,GAAL,CAASnD,CAAT,CAAV,CAAA;;OACA,IAAImD,GAAG,GAAG,SAAV,EAAqB;CACjB,QAAA,OAAO,CAACoQ,IAAI,CAACvT,CAAD,CAAJ,IAAW,CAAZ,KAAkB,KAAA,GAAQ6nC,KAAK,CAAC1kC,GAAD,EAAM,CAAA,GAAI,GAAV,CAAb,GAA8B,KAAhD,CAAP,CAAA;CACH,OAAA;;OACD,OAAOnD,CAAC,GAAG,KAAX,CAAA;CACH,KAAA;;CAED,IAAA,IAAIioC,QAAQ,GAAGnd,KAAK,CAACG,MAArB,CAAA;CACA,IAAA,IAAIid,MAAM,GAAGpd,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIisB,QAAQ,GAAGxb,QAAf,CAAA;KACA,IAAIyb,OAAO,GAAG7b,OAAd,CAAA;KACA,IAAI8b,OAAO,GAAG/c,OAAd,CAAA;KAEA,IAAIgd,WAAW,GAAGX,WAAlB,CAAA;;CAEAS,IAAAA,OAAO,CAACjpC,SAAR,CAAkBopC,KAAlB,GAA0B,YAAY;CAClC,MAAA,OAAOD,WAAW,CAAC,IAAKjc,CAAAA,IAAN,CAAlB,CAAA;MADJ,CAAA;;KAIA8b,QAAQ,CAACI,KAAT,GAAiB,YAAY;OACzB,IAAIhe,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BgwB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASx8B,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,OAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA8d,IAAAA,OAAO,CAAC9c,MAAR,CAAegd,KAAf,GAAuBP,WAAvB,CAAA;CAEAK,IAAAA,OAAO,CAAC7c,UAAR,CAAmBtlB,IAAnB,CAAwB;CACpByT,MAAAA,CAAC,EAAE,CADiB;CAEpByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAG0d,QAAQ,CAAC1d,IAAD,EAAO,OAAP,CAAf,CAAA;;CACA,QAAA,IAAI2d,MAAM,CAAC3d,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,OAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;CAaA,IAAA,IAAIqqC,QAAQ,GAAG1d,KAAK,CAACG,MAArB,CAAA;KACA,IAAIwd,SAAS,GAAGd,WAAhB,CAAA;KACA,IAAIe,OAAO,GAAGxP,SAAd,CAAA;;KAEA,IAAIyP,WAAW,GAAG,YAAY;OAC1B,IAAIpe,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhB,MAAA,IAAIgB,GAAG,GAAGyb,QAAQ,CAACje,IAAD,EAAO,KAAP,CAAlB,CAAA;CACA,MAAA,IAAI/J,CAAC,GAAGuM,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIntB,CAAC,GAAGmtB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAI9sB,CAAC,GAAG8sB,GAAG,CAAC,CAAD,CAAX,CAAA;OACA,IAAIwK,KAAK,GAAGkR,SAAS,CAACjoB,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,CAArB,CAAA;CACA,MAAA,IAAI8X,CAAC,GAAGwf,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAI/3B,CAAC,GAAG+3B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIU,EAAE,GAAGV,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,OAAOmR,OAAO,CAAC3wB,CAAD,EAAIvY,CAAJ,EAAOy4B,EAAP,CAAd,CAAA;MAZJ,CAAA;;KAeA,IAAI2Q,WAAW,GAAGD,WAAlB,CAAA;CAEA,IAAA,IAAIE,QAAQ,GAAG/d,KAAK,CAACG,MAArB,CAAA;KACA,IAAI6d,OAAO,GAAGlP,SAAd,CAAA;KACA,IAAImP,SAAS,GAAGf,WAAhB,CAAA;;KAEA,IAAIgB,SAAS,GAAG,YAAY;OACxB,IAAIze,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,MAAAA,IAAI,GAAGse,QAAQ,CAACte,IAAD,EAAO,KAAP,CAAf,CAAA;CACA,MAAA,IAAIxS,CAAC,GAAGwS,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIvqB,CAAC,GAAGuqB,IAAI,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI1qB,CAAC,GAAG0qB,IAAI,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIwC,GAAG,GAAG+b,OAAO,CAAC/wB,CAAD,EAAI/X,CAAJ,EAAOH,CAAP,CAAjB,CAAA;CACA,MAAA,IAAIo6B,CAAC,GAAGlN,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIvtB,CAAC,GAAGutB,GAAG,CAAC,CAAD,CAAX,CAAA;CACA,MAAA,IAAIkL,EAAE,GAAGlL,GAAG,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIwK,KAAK,GAAGwR,SAAS,CAAC9O,CAAD,EAAIz6B,CAAJ,EAAOy4B,EAAP,CAArB,CAAA;CACA,MAAA,IAAIzX,CAAC,GAAG+W,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAI33B,CAAC,GAAG23B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,IAAIt3B,CAAC,GAAGs3B,KAAK,CAAC,CAAD,CAAb,CAAA;CACA,MAAA,OAAO,CAAC/W,CAAD,EAAI5gB,CAAJ,EAAOK,CAAP,EAAUsqB,IAAI,CAACpsB,MAAL,GAAc,CAAd,GAAkBosB,IAAI,CAAC,CAAD,CAAtB,GAA4B,CAAtC,CAAP,CAAA;MAhBJ,CAAA;;KAmBA,IAAI0e,WAAW,GAAGD,SAAlB,CAAA;CAEA,IAAA,IAAI/d,MAAM,GAAGH,KAAK,CAACG,MAAnB,CAAA;CACA,IAAA,IAAIie,MAAM,GAAGpe,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIitB,QAAQ,GAAGxc,QAAf,CAAA;KACA,IAAIyc,OAAO,GAAG7c,OAAd,CAAA;KACA,IAAI/rB,KAAK,GAAG8qB,OAAZ,CAAA;KAEA,IAAI+d,SAAS,GAAGT,WAAhB,CAAA;;CAEAQ,IAAAA,OAAO,CAACjqC,SAAR,CAAkBmqC,KAAlB,GAA0B,YAAY;CAClC,MAAA,OAAOD,SAAS,CAAC,IAAKhd,CAAAA,IAAN,CAAhB,CAAA;MADJ,CAAA;;KAIA8c,QAAQ,CAACG,KAAT,GAAiB,YAAY;OACzB,IAAI/e,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,OAAO,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+BgxB,OAA/B,EAAwC,CAAE,IAAF,CAAA,CAASx9B,MAAT,CAAiB2e,IAAjB,EAAuB,CAAC,OAAD,CAAvB,CAAxC,CAAL,GAAP,CAAA;MAJJ,CAAA;;CAOA/pB,IAAAA,KAAK,CAAC+qB,MAAN,CAAa+d,KAAb,GAAqBL,WAArB,CAAA;CAEAzoC,IAAAA,KAAK,CAACgrB,UAAN,CAAiBtlB,IAAjB,CAAsB;CAClByT,MAAAA,CAAC,EAAE,CADe;CAElByS,MAAAA,IAAI,EAAE,YAAY;SACd,IAAI7B,IAAI,GAAG,EAAX;CAAA,YAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;SACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;CAEhBxB,QAAAA,IAAI,GAAGU,MAAM,CAACV,IAAD,EAAO,OAAP,CAAb,CAAA;;CACA,QAAA,IAAI2e,MAAM,CAAC3e,IAAD,CAAN,KAAiB,OAAjB,IAA4BA,IAAI,CAACpsB,MAAL,KAAgB,CAAhD,EAAmD;CAC/C,UAAA,OAAO,OAAP,CAAA;CACH,SAAA;CACJ,OAAA;MAVL,CAAA,CAAA;KAaA,IAAIorC,OAAO,GAAGhd,OAAd,CAAA;CACA,IAAA,IAAIid,MAAM,GAAG1e,KAAK,CAAC5O,IAAnB,CAAA;;KAEAqtB,OAAO,CAACpqC,SAAR,CAAkB0nB,KAAlB,GAA0B,UAASrnB,CAAT,EAAYiqC,MAAZ,EAAoB;CAC1C,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,KAAP,CAAA;;OAEzB,IAAIjqC,CAAC,KAAK4B,SAAN,IAAmBooC,MAAM,CAAChqC,CAAD,CAAN,KAAc,QAArC,EAA+C;CAC3C,QAAA,IAAIiqC,MAAJ,EAAY;CACR,UAAA,IAAA,CAAKpd,IAAL,CAAU,CAAV,CAAA,GAAe7sB,CAAf,CAAA;CACA,UAAA,OAAO,IAAP,CAAA;CACH,SAAA;;SACD,OAAO,IAAI+pC,OAAJ,CAAY,CAAC,IAAA,CAAKld,IAAL,CAAU,CAAV,CAAD,EAAe,IAAA,CAAKA,IAAL,CAAU,CAAV,CAAf,EAA6B,IAAKA,CAAAA,IAAL,CAAU,CAAV,CAA7B,EAA2C7sB,CAA3C,CAAZ,EAA2D,KAA3D,CAAP,CAAA;CACH,OAAA;;CACD,MAAA,OAAO,IAAK6sB,CAAAA,IAAL,CAAU,CAAV,CAAP,CAAA;MAVJ,CAAA;;KAaA,IAAIqd,OAAO,GAAGnd,OAAd,CAAA;;CAEAmd,IAAAA,OAAO,CAACvqC,SAAR,CAAkBwqC,OAAlB,GAA4B,YAAW;CACnC,MAAA,OAAO,IAAKtd,CAAAA,IAAL,CAAUvC,QAAV,IAAsB,KAA7B,CAAA;MADJ,CAAA;;KAIA,IAAI8f,OAAO,GAAGrd,OAAd,CAAA;KACA,IAAIsd,eAAe,GAAGhT,YAAtB,CAAA;;CAEA+S,IAAAA,OAAO,CAACzqC,SAAR,CAAkB2qC,MAAlB,GAA2B,UAASC,MAAT,EAAiB;CAC3C,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,CAAP,CAAA;OAEzB,IAAI/d,EAAE,GAAG,IAAT,CAAA;CACA,MAAA,IAAI2M,GAAG,GAAG3M,EAAE,CAAC2M,GAAH,EAAV,CAAA;OACAA,GAAG,CAAC,CAAD,CAAH,IAAUkR,eAAe,CAAC/S,EAAhB,GAAqBiT,MAA/B,CAAA;CACA,MAAA,OAAO,IAAIH,OAAJ,CAAYjR,GAAZ,EAAiB,KAAjB,CAAA,CAAwB9R,KAAxB,CAA8BmF,EAAE,CAACnF,KAAH,EAA9B,EAA0C,IAA1C,CAAP,CAAA;MAND,CAAA;;CASA+iB,IAAAA,OAAO,CAACzqC,SAAR,CAAkB6qC,QAAlB,GAA6B,UAASD,MAAT,EAAiB;CAC7C,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,CAAP,CAAA;CAEzB,MAAA,OAAO,IAAKD,CAAAA,MAAL,CAAY,CAACC,MAAb,CAAP,CAAA;MAHD,CAAA;;KAMAH,OAAO,CAACzqC,SAAR,CAAkB8qC,MAAlB,GAA2BL,OAAO,CAACzqC,SAAR,CAAkB2qC,MAA7C,CAAA;KACAF,OAAO,CAACzqC,SAAR,CAAkB+qC,QAAlB,GAA6BN,OAAO,CAACzqC,SAAR,CAAkB6qC,QAA/C,CAAA;KAEA,IAAIG,OAAO,GAAG5d,OAAd,CAAA;;CAEA4d,IAAAA,OAAO,CAAChrC,SAAR,CAAkBkP,GAAlB,GAAwB,UAAU+7B,EAAV,EAAc;CAClC,MAAA,IAAIrd,GAAG,GAAGqd,EAAE,CAAC3f,KAAH,CAAS,GAAT,CAAV,CAAA;CACA,MAAA,IAAIwB,IAAI,GAAGc,GAAG,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAIsd,OAAO,GAAGtd,GAAG,CAAC,CAAD,CAAjB,CAAA;CACA,MAAA,IAAIud,GAAG,GAAG,IAAKre,CAAAA,IAAL,CAAV,EAAA,CAAA;;CACA,MAAA,IAAIoe,OAAJ,EAAa;SACT,IAAIvqC,CAAC,GAAGmsB,IAAI,CAACjd,OAAL,CAAaq7B,OAAb,KAAyBpe,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAe,CAAf,CAAA,KAAsB,IAAtB,GAA6B,CAA7B,GAAiC,CAA1D,CAAR,CAAA;;CACA,QAAA,IAAI7uB,CAAC,GAAG,CAAC,CAAT,EAAY;WAAE,OAAOwqC,GAAG,CAACxqC,CAAD,CAAV,CAAA;CAAgB,SAAA;;SAC9B,MAAM,IAAId,KAAJ,CAAW,kBAAA,GAAqBqrC,OAArB,GAA+B,WAA/B,GAA6Cpe,IAAxD,CAAN,CAAA;CACH,OAJD,MAIO;CACH,QAAA,OAAOqe,GAAP,CAAA;CACH,OAAA;MAXL,CAAA;;KAcA,IAAIC,OAAO,GAAGhe,OAAd,CAAA;CACA,IAAA,IAAIie,MAAM,GAAG1f,KAAK,CAAC5O,IAAnB,CAAA;CACA,IAAA,IAAIuuB,KAAK,GAAG3rC,IAAI,CAAC+U,GAAjB,CAAA;KAEA,IAAI62B,GAAG,GAAG,IAAV,CAAA;KACA,IAAIC,QAAQ,GAAG,EAAf,CAAA;;CAEAJ,IAAAA,OAAO,CAACprC,SAAR,CAAkByrC,SAAlB,GAA8B,UAASC,GAAT,EAAc;OACxC,IAAIA,GAAG,KAAKzpC,SAAR,IAAqBopC,MAAM,CAACK,GAAD,CAAN,KAAgB,QAAzC,EAAmD;SAC/C,IAAIA,GAAG,KAAK,CAAZ,EAAe;CAC3B;CACgB,UAAA,OAAO,IAAIN,OAAJ,CAAY,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,EAAO,IAAA,CAAKle,IAAL,CAAU,CAAV,CAAP,CAAZ,EAAkC,KAAlC,CAAP,CAAA;CACH,SAAA;;SACD,IAAIwe,GAAG,KAAK,CAAZ,EAAe;CAC3B;CACgB,UAAA,OAAO,IAAIN,OAAJ,CAAY,CAAC,GAAD,EAAK,GAAL,EAAS,GAAT,EAAa,IAAA,CAAKle,IAAL,CAAU,CAAV,CAAb,CAAZ,EAAwC,KAAxC,CAAP,CAAA;CACH,SAR8C;;;CAU/C,QAAA,IAAIye,OAAO,GAAG,IAAKF,CAAAA,SAAL,EAAd,CAAA;SACA,IAAI3e,IAAI,GAAG,KAAX,CAAA;SACA,IAAI8e,QAAQ,GAAGJ,QAAf,CAAA;;CAEA,QAAA,IAAIve,IAAI,GAAG,UAAUnpB,GAAV,EAAeC,IAAf,EAAqB;WAC5B,IAAI8nC,GAAG,GAAG/nC,GAAG,CAACgoC,WAAJ,CAAgB/nC,IAAhB,EAAsB,GAAtB,EAA2B+oB,IAA3B,CAAV,CAAA;CACA,UAAA,IAAIif,EAAE,GAAGF,GAAG,CAACJ,SAAJ,EAAT,CAAA;;CACA,UAAA,IAAI9rC,IAAI,CAACqE,GAAL,CAAS0nC,GAAG,GAAGK,EAAf,CAAA,GAAqBR,GAArB,IAA4B,CAACK,QAAQ,EAAzC,EAA6C;CAC7D;CACoB,YAAA,OAAOC,GAAP,CAAA;CACH,WAAA;;CACD,UAAA,OAAOE,EAAE,GAAGL,GAAL,GAAWze,IAAI,CAACnpB,GAAD,EAAM+nC,GAAN,CAAf,GAA4B5e,IAAI,CAAC4e,GAAD,EAAM9nC,IAAN,CAAvC,CAAA;UAPJ,CAAA;;CAUA,QAAA,IAAI2mB,GAAG,GAAG,CAACihB,OAAO,GAAGD,GAAV,GAAgBze,IAAI,CAAC,IAAIme,OAAJ,CAAY,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,CAAZ,CAAD,EAAuB,IAAvB,CAApB,GAAmDne,IAAI,CAAC,IAAD,EAAO,IAAIme,OAAJ,CAAY,CAAC,GAAD,EAAK,GAAL,EAAS,GAAT,CAAZ,CAAP,CAAxD,EAA4F1gB,GAA5F,EAAV,CAAA;CACA,QAAA,OAAO,IAAI0gB,OAAJ,CAAY1gB,GAAG,CAACje,MAAJ,CAAY,CAAC,IAAA,CAAKygB,IAAL,CAAU,CAAV,CAAD,CAAZ,CAAZ,CAAP,CAAA;CACH,OAAA;;CACD,MAAA,OAAO8e,aAAa,CAAC/yB,KAAd,CAAoB,KAAK,CAAzB,EAA6B,IAAA,CAAKiU,IAAN,CAAY1rB,KAAZ,CAAkB,CAAlB,EAAoB,CAApB,CAA5B,CAAP,CAAA;MA5BJ,CAAA;;KAgCA,IAAIwqC,aAAa,GAAG,UAAU3qB,CAAV,EAAY5gB,CAAZ,EAAcK,CAAd,EAAiB;CACzC;CACA;CACQugB,MAAAA,CAAC,GAAG4qB,WAAW,CAAC5qB,CAAD,CAAf,CAAA;CACA5gB,MAAAA,CAAC,GAAGwrC,WAAW,CAACxrC,CAAD,CAAf,CAAA;CACAK,MAAAA,CAAC,GAAGmrC,WAAW,CAACnrC,CAAD,CAAf,CAAA;CACA,MAAA,OAAO,SAASugB,CAAT,GAAa,SAAS5gB,CAAtB,GAA0B,SAASK,CAA1C,CAAA;MANJ,CAAA;;CASA,IAAA,IAAImrC,WAAW,GAAG,UAAU5nC,CAAV,EAAa;CAC3BA,MAAAA,CAAC,IAAI,GAAL,CAAA;CACA,MAAA,OAAOA,CAAC,IAAI,OAAL,GAAeA,CAAC,GAAC,KAAjB,GAAyBinC,KAAK,CAAC,CAACjnC,CAAC,GAAC,KAAH,IAAU,KAAX,EAAkB,GAAlB,CAArC,CAAA;MAFJ,CAAA;;KAKA,IAAI6nC,cAAc,GAAG,EAArB,CAAA;KAEA,IAAIC,OAAO,GAAG/e,OAAd,CAAA;CACA,IAAA,IAAIgf,MAAM,GAAGzgB,KAAK,CAAC5O,IAAnB,CAAA;KACA,IAAIsvB,YAAY,GAAGH,cAAnB,CAAA;;KAEA,IAAII,KAAK,GAAG,UAAUC,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CACjC,MAAA,IAAKA,CAAC,KAAK,KAAK,CAAhB,EAAoBA,CAAC,GAAC,GAAF,CAAA;OACpB,IAAIyxB,IAAI,GAAG,EAAX;CAAA,UAAerF,GAAG,GAAGnf,SAAS,CAACzO,MAAV,GAAmB,CAAxC,CAAA;;CACA,MAAA,OAAQ4tB,GAAG,EAAA,GAAK,CAAhB,EAAoBqF,IAAI,CAAErF,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAG,GAAG,CAAR,CAAvB,CAAA;;CAEpB,MAAA,IAAIE,IAAI,GAAGmF,IAAI,CAAC,CAAD,CAAJ,IAAW,MAAtB,CAAA;;OACA,IAAI,CAACoa,YAAY,CAACvf,IAAD,CAAb,IAAuB,CAACmF,IAAI,CAACjzB,MAAjC,EAAyC;CACjD;SACY8tB,IAAI,GAAG/sB,MAAM,CAACgmC,IAAP,CAAYsG,YAAZ,CAAA,CAA0B,CAA1B,CAAP,CAAA;CACH,OAAA;;CACD,MAAA,IAAI,CAACA,YAAY,CAACvf,IAAD,CAAjB,EAAyB;CACrB,QAAA,MAAM,IAAIjtB,KAAJ,CAAW,wBAAwBitB,IAAxB,GAA+B,iBAA1C,CAAN,CAAA;CACH,OAAA;;CACD,MAAA,IAAIsf,MAAM,CAACG,IAAD,CAAN,KAAiB,QAArB,EAA+B;CAAEA,QAAAA,IAAI,GAAG,IAAIJ,OAAJ,CAAYI,IAAZ,CAAP,CAAA;CAA2B,OAAA;;CAC5D,MAAA,IAAIH,MAAM,CAACI,IAAD,CAAN,KAAiB,QAArB,EAA+B;CAAEA,QAAAA,IAAI,GAAG,IAAIL,OAAJ,CAAYK,IAAZ,CAAP,CAAA;CAA2B,OAAA;;CAC5D,MAAA,OAAOH,YAAY,CAACvf,IAAD,CAAZ,CAAmByf,IAAnB,EAAyBC,IAAzB,EAA+BhsC,CAA/B,CACFknB,CAAAA,KADE,CACI6kB,IAAI,CAAC7kB,KAAL,EAAelnB,GAAAA,CAAC,IAAIgsC,IAAI,CAAC9kB,KAAL,EAAe6kB,GAAAA,IAAI,CAAC7kB,KAAL,EAAnB,CADpB,CAAP,CAAA;MAfJ,CAAA;;KAmBA,IAAI+kB,OAAO,GAAGrf,OAAd,CAAA;KACA,IAAIsf,GAAG,GAAGJ,KAAV,CAAA;;CAEAG,IAAAA,OAAO,CAACzsC,SAAR,CAAkB0sC,GAAlB,GACAD,OAAO,CAACzsC,SAAR,CAAkB8rC,WAAlB,GAAgC,UAASU,IAAT,EAAehsC,CAAf,EAAkB;CACjD,MAAA,IAAKA,CAAC,KAAK,KAAK,CAAhB,EAAoBA,CAAC,GAAC,GAAF,CAAA;OACpB,IAAIyxB,IAAI,GAAG,EAAX;CAAA,UAAerF,GAAG,GAAGnf,SAAS,CAACzO,MAAV,GAAmB,CAAxC,CAAA;;CACA,MAAA,OAAQ4tB,GAAG,EAAA,GAAK,CAAhB,EAAoBqF,IAAI,CAAErF,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAG,GAAG,CAAR,CAAvB,CAAA;;CAEpB,MAAA,OAAO8f,GAAG,CAACzzB,KAAJ,CAAU,KAAK,CAAf,EAAkB,CAAE,IAAF,EAAQuzB,IAAR,EAAchsC,CAAd,CAAA,CAAkBiM,MAAlB,CAA0BwlB,IAA1B,CAAlB,CAAP,CAAA;MAND,CAAA;;KASA,IAAI0a,OAAO,GAAGvf,OAAd,CAAA;;CAEAuf,IAAAA,OAAO,CAAC3sC,SAAR,CAAkB4sC,WAAlB,GAAgC,UAAStC,MAAT,EAAiB;CAChD,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,KAAP,CAAA;OAEzB,IAAI5f,GAAG,GAAG,IAAA,CAAKwC,IAAf,CAAA;CACA,MAAA,IAAI7sB,CAAC,GAAGqqB,GAAG,CAAC,CAAD,CAAX,CAAA;;CACA,MAAA,IAAI4f,MAAJ,EAAY;SACX,IAAKpd,CAAAA,IAAL,GAAY,CAACxC,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAAR,EAAWqqB,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAAlB,EAAqBqqB,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAA5B,EAA+BA,CAA/B,CAAZ,CAAA;CACA,QAAA,OAAO,IAAP,CAAA;CACA,OAHD,MAGO;CACN,QAAA,OAAO,IAAIssC,OAAJ,CAAY,CAACjiB,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAAR,EAAWqqB,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAAlB,EAAqBqqB,GAAG,CAAC,CAAD,CAAH,GAAOrqB,CAA5B,EAA+BA,CAA/B,CAAZ,EAA+C,KAA/C,CAAP,CAAA;CACA,OAAA;MAVF,CAAA;;KAaA,IAAIwsC,OAAO,GAAGzf,OAAd,CAAA;KACA,IAAI0f,aAAa,GAAGpV,YAApB,CAAA;;CAEAmV,IAAAA,OAAO,CAAC7sC,SAAR,CAAkB+sC,QAAlB,GAA6B,UAASnC,MAAT,EAAiB;CAC7C,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,CAAP,CAAA;OAEzB,IAAI/d,EAAE,GAAG,IAAT,CAAA;CACA,MAAA,IAAI+O,GAAG,GAAG/O,EAAE,CAAC+O,GAAH,EAAV,CAAA;OACAA,GAAG,CAAC,CAAD,CAAH,IAAUkR,aAAa,CAACnV,EAAd,GAAmBiT,MAA7B,CAAA;;CACA,MAAA,IAAIhP,GAAG,CAAC,CAAD,CAAH,GAAS,CAAb,EAAgB;CAAEA,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS,CAAT,CAAA;CAAa,OAAA;;CAC/B,MAAA,OAAO,IAAIiR,OAAJ,CAAYjR,GAAZ,EAAiB,KAAjB,CAAA,CAAwBlU,KAAxB,CAA8BmF,EAAE,CAACnF,KAAH,EAA9B,EAA0C,IAA1C,CAAP,CAAA;MAPD,CAAA;;CAUAmlB,IAAAA,OAAO,CAAC7sC,SAAR,CAAkBgtC,UAAlB,GAA+B,UAASpC,MAAT,EAAiB;CAC/C,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAC,CAAP,CAAA;CAEzB,MAAA,OAAO,IAAKmC,CAAAA,QAAL,CAAc,CAACnC,MAAf,CAAP,CAAA;MAHD,CAAA;;KAMA,IAAIqC,OAAO,GAAG7f,OAAd,CAAA;CACA,IAAA,IAAI8f,MAAM,GAAGvhB,KAAK,CAAC5O,IAAnB,CAAA;;KAEAkwB,OAAO,CAACjtC,SAAR,CAAkBmQ,GAAlB,GAAwB,UAAU86B,EAAV,EAAc/qC,KAAd,EAAqBoqC,MAArB,EAA6B;CACjD,MAAA,IAAKA,MAAM,KAAK,KAAK,CAArB,EAAyBA,MAAM,GAAG,KAAT,CAAA;CAEzB,MAAA,IAAI1c,GAAG,GAAGqd,EAAE,CAAC3f,KAAH,CAAS,GAAT,CAAV,CAAA;CACA,MAAA,IAAIwB,IAAI,GAAGc,GAAG,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAIsd,OAAO,GAAGtd,GAAG,CAAC,CAAD,CAAjB,CAAA;CACA,MAAA,IAAIud,GAAG,GAAG,IAAKre,CAAAA,IAAL,CAAV,EAAA,CAAA;;CACA,MAAA,IAAIoe,OAAJ,EAAa;SACT,IAAIvqC,CAAC,GAAGmsB,IAAI,CAACjd,OAAL,CAAaq7B,OAAb,KAAyBpe,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAe,CAAf,CAAA,KAAsB,IAAtB,GAA6B,CAA7B,GAAiC,CAA1D,CAAR,CAAA;;CACA,QAAA,IAAI7uB,CAAC,GAAG,CAAC,CAAT,EAAY;CACR,UAAA,IAAIusC,MAAM,CAAChtC,KAAD,CAAN,IAAiB,QAArB,EAA+B;CAC3B,YAAA,QAAQA,KAAK,CAACitC,MAAN,CAAa,CAAb,CAAR;CACI,cAAA,KAAK,GAAL;CACIhC,gBAAAA,GAAG,CAACxqC,CAAD,CAAH,IAAU,CAACT,KAAX,CAAA;CACA,gBAAA,MAAA;;CACJ,cAAA,KAAK,GAAL;CACIirC,gBAAAA,GAAG,CAACxqC,CAAD,CAAH,IAAU,CAACT,KAAX,CAAA;CACA,gBAAA,MAAA;;CACJ,cAAA,KAAK,GAAL;iBACIirC,GAAG,CAACxqC,CAAD,CAAH,IAAU,CAACT,KAAK,CAACsvB,MAAN,CAAa,CAAb,CAAX,CAAA;CACA,gBAAA,MAAA;;CACJ,cAAA,KAAK,GAAL;iBACI2b,GAAG,CAACxqC,CAAD,CAAH,IAAU,CAACT,KAAK,CAACsvB,MAAN,CAAa,CAAb,CAAX,CAAA;CACA,gBAAA,MAAA;;CACJ,cAAA;CACI2b,gBAAAA,GAAG,CAACxqC,CAAD,CAAH,GAAS,CAACT,KAAV,CAAA;CAdR,aAAA;YADJ,MAiBO,IAAIgtC,MAAM,CAAChtC,KAAD,CAAN,KAAkB,QAAtB,EAAgC;CACnCirC,YAAAA,GAAG,CAACxqC,CAAD,CAAH,GAAST,KAAT,CAAA;CACH,WAFM,MAEA;CACH,YAAA,MAAM,IAAIL,KAAJ,CAAU,iCAAV,CAAN,CAAA;CACH,WAAA;;WACD,IAAIutC,GAAG,GAAG,IAAIH,OAAJ,CAAY9B,GAAZ,EAAiBre,IAAjB,CAAV,CAAA;;CACA,UAAA,IAAIwd,MAAJ,EAAY;CACR,YAAA,IAAA,CAAKpd,IAAL,GAAYkgB,GAAG,CAAClgB,IAAhB,CAAA;CACA,YAAA,OAAO,IAAP,CAAA;CACH,WAAA;;CACD,UAAA,OAAOkgB,GAAP,CAAA;CACH,SAAA;;SACD,MAAM,IAAIvtC,KAAJ,CAAW,kBAAA,GAAqBqrC,OAArB,GAA+B,WAA/B,GAA6Cpe,IAAxD,CAAN,CAAA;CACH,OAjCD,MAiCO;CACH,QAAA,OAAOqe,GAAP,CAAA;CACH,OAAA;MA1CL,CAAA;;KA6CA,IAAIkC,OAAO,GAAGjgB,OAAd,CAAA;;KAEA,IAAI1C,GAAG,GAAG,UAAU6hB,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CAC/B,MAAA,IAAI8sC,IAAI,GAAGf,IAAI,CAACrf,IAAhB,CAAA;CACA,MAAA,IAAIqgB,IAAI,GAAGf,IAAI,CAACtf,IAAhB,CAAA;OACA,OAAO,IAAImgB,OAAJ,CACHC,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CADR,EAEHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CAFR,EAGHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CAHR,EAIH,KAJG,CAAP,CAAA;CAMH,KATD,CAnnEkB;;;KA+nElBpB,cAAc,CAACxhB,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAI8iB,OAAO,GAAGpgB,OAAd,CAAA;CACA,IAAA,IAAIqgB,MAAM,GAAG9tC,IAAI,CAAC8D,IAAlB,CAAA;CACA,IAAA,IAAIiqC,KAAK,GAAG/tC,IAAI,CAAC+U,GAAjB,CAAA;;KAEA,IAAIi5B,IAAI,GAAG,UAAUpB,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CAChC,MAAA,IAAIotB,GAAG,GAAG2e,IAAI,CAACrf,IAAf,CAAA;CACA,MAAA,IAAI9hB,EAAE,GAAGwiB,GAAG,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAI7hB,EAAE,GAAG6hB,GAAG,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIggB,EAAE,GAAGhgB,GAAG,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIwK,KAAK,GAAGoU,IAAI,CAACtf,IAAjB,CAAA;CACA,MAAA,IAAI2gB,EAAE,GAAGzV,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAI0V,EAAE,GAAG1V,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAI2V,EAAE,GAAG3V,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,OAAO,IAAIoV,OAAJ,CACHC,MAAM,CAACC,KAAK,CAACtiC,EAAD,EAAI,CAAJ,CAAL,IAAe,CAAA,GAAE5K,CAAjB,CAAsBktC,GAAAA,KAAK,CAACG,EAAD,EAAI,CAAJ,CAAL,GAAcrtC,CAArC,CADH,EAEHitC,MAAM,CAACC,KAAK,CAAC3hC,EAAD,EAAI,CAAJ,CAAL,IAAe,CAAA,GAAEvL,CAAjB,CAAA,GAAsBktC,KAAK,CAACI,EAAD,EAAI,CAAJ,CAAL,GAActtC,CAArC,CAFH,EAGHitC,MAAM,CAACC,KAAK,CAACE,EAAD,EAAI,CAAJ,CAAL,IAAe,CAAA,GAAEptC,CAAjB,CAAA,GAAsBktC,KAAK,CAACK,EAAD,EAAI,CAAJ,CAAL,GAAcvtC,CAArC,CAHH,EAIH,KAJG,CAAP,CAAA;CAMH,KAfD,CAroEkB;;;KAupElB0rC,cAAc,CAACyB,IAAf,GAAsBA,IAAtB,CAAA;KAEA,IAAIK,OAAO,GAAG5gB,OAAd,CAAA;;KAEA,IAAIoM,GAAG,GAAG,UAAU+S,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CAC/B,MAAA,IAAI8sC,IAAI,GAAGf,IAAI,CAAC/S,GAAL,EAAX,CAAA;CACA,MAAA,IAAI+T,IAAI,GAAGf,IAAI,CAAChT,GAAL,EAAX,CAAA;OACA,OAAO,IAAIwU,OAAJ,CACHV,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CADR,EAEHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CAFR,EAGHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAQD,IAAI,CAAC,CAAD,CAAhB,CAHR,EAIH,KAJG,CAAP,CAAA;CAMH,KATD,CA3pEkB;;;KAuqElBpB,cAAc,CAAC1S,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAIyU,OAAO,GAAG7gB,OAAd,CAAA;;KAEA,IAAI8gB,IAAI,GAAG,UAAU3B,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB8Z,CAAzB,EAA4B;OACnC,IAAIuV,MAAJ,EAAYiD,QAAZ,CAAA;OAEA,IAAIwa,IAAJ,EAAUC,IAAV,CAAA;;OACA,IAAIjzB,CAAC,KAAK,KAAV,EAAiB;CACbgzB,QAAAA,IAAI,GAAGf,IAAI,CAACjb,GAAL,EAAP,CAAA;CACAic,QAAAA,IAAI,GAAGf,IAAI,CAAClb,GAAL,EAAP,CAAA;CACH,OAHD,MAGO,IAAIhX,CAAC,KAAK,KAAV,EAAiB;CACpBgzB,QAAAA,IAAI,GAAGf,IAAI,CAAC9U,GAAL,EAAP,CAAA;CACA8V,QAAAA,IAAI,GAAGf,IAAI,CAAC/U,GAAL,EAAP,CAAA;CACH,OAHM,MAGA,IAAInd,CAAC,KAAK,KAAV,EAAiB;CACpBgzB,QAAAA,IAAI,GAAGf,IAAI,CAAC5Y,GAAL,EAAP,CAAA;CACA4Z,QAAAA,IAAI,GAAGf,IAAI,CAAC7Y,GAAL,EAAP,CAAA;CACH,OAHM,MAGA,IAAIrZ,CAAC,KAAK,KAAV,EAAiB;CACpBgzB,QAAAA,IAAI,GAAGf,IAAI,CAACrW,GAAL,EAAP,CAAA;CACAqX,QAAAA,IAAI,GAAGf,IAAI,CAACtW,GAAL,EAAP,CAAA;QAFG,MAGA,IAAI5b,CAAC,KAAK,KAAN,IAAeA,CAAC,KAAK,KAAzB,EAAgC;CACnCA,QAAAA,CAAC,GAAG,KAAJ,CAAA;CACAgzB,QAAAA,IAAI,GAAGf,IAAI,CAACpR,GAAL,EAAP,CAAA;CACAoS,QAAAA,IAAI,GAAGf,IAAI,CAACrR,GAAL,EAAP,CAAA;CACH,OAJM,MAIA,IAAI7gB,CAAC,KAAK,OAAV,EAAmB;CACtBgzB,QAAAA,IAAI,GAAGf,IAAI,CAACpC,KAAL,EAAA,CAAa/O,OAAb,EAAP,CAAA;CACAmS,QAAAA,IAAI,GAAGf,IAAI,CAACrC,KAAL,EAAA,CAAa/O,OAAb,EAAP,CAAA;CACH,OAAA;;OAED,IAAI+S,IAAJ,EAAUC,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,CAAA;;CACA,MAAA,IAAIl0B,CAAC,CAACkV,MAAF,CAAS,CAAT,EAAY,CAAZ,CAAA,KAAmB,GAAnB,IAA0BlV,CAAC,KAAK,OAApC,EAA6C;SACxCuV,MAAM,GAAGyd,IAAT,EAAea,IAAI,GAAGte,MAAM,CAAC,CAAD,CAA5B,EAAiCwe,IAAI,GAAGxe,MAAM,CAAC,CAAD,CAA9C,EAAmD0e,IAAI,GAAG1e,MAAM,CAAC,CAAD,CAAjE,CAAA;SACCiD,QAAQ,GAAGya,IAAX,EAAiBa,IAAI,GAAGtb,QAAQ,CAAC,CAAD,CAAhC,EAAqCwb,IAAI,GAAGxb,QAAQ,CAAC,CAAD,CAApD,EAAyD0b,IAAI,GAAG1b,QAAQ,CAAC,CAAD,CAAzE,CAAA;CACH,OAAA;;CAED,MAAA,IAAI2b,GAAJ,EAASC,GAAT,EAAcC,GAAd,EAAmBC,EAAnB,CAAA;;OAEA,IAAI,CAACjnC,KAAK,CAACwmC,IAAD,CAAN,IAAgB,CAACxmC,KAAK,CAACymC,IAAD,CAA1B,EAAkC;CAC1C;SACY,IAAIA,IAAI,GAAGD,IAAP,IAAeC,IAAI,GAAGD,IAAP,GAAc,GAAjC,EAAsC;CAClCS,UAAAA,EAAE,GAAGR,IAAI,IAAID,IAAI,GAAG,GAAX,CAAT,CAAA;UADJ,MAEO,IAAIC,IAAI,GAAGD,IAAP,IAAeA,IAAI,GAAGC,IAAP,GAAc,GAAjC,EAAsC;CACzCQ,UAAAA,EAAE,GAAGR,IAAI,GAAG,GAAP,GAAaD,IAAlB,CAAA;CACH,SAFM,MAEA;WACHS,EAAE,GAAGR,IAAI,GAAGD,IAAZ,CAAA;CACH,SAAA;;CACDO,QAAAA,GAAG,GAAGP,IAAI,GAAG3tC,CAAC,GAAGouC,EAAjB,CAAA;CACH,OAVD,MAUO,IAAI,CAACjnC,KAAK,CAACwmC,IAAD,CAAV,EAAkB;CACrBO,QAAAA,GAAG,GAAGP,IAAN,CAAA;;CACA,QAAA,IAAI,CAACK,IAAI,IAAI,CAAR,IAAaA,IAAI,IAAI,CAAtB,KAA4Bl0B,CAAC,IAAI,KAArC,EAA4C;CAAEm0B,UAAAA,GAAG,GAAGJ,IAAN,CAAA;CAAa,SAAA;CAC9D,OAHM,MAGA,IAAI,CAAC1mC,KAAK,CAACymC,IAAD,CAAV,EAAkB;CACrBM,QAAAA,GAAG,GAAGN,IAAN,CAAA;;CACA,QAAA,IAAI,CAACG,IAAI,IAAI,CAAR,IAAaA,IAAI,IAAI,CAAtB,KAA4Bj0B,CAAC,IAAI,KAArC,EAA4C;CAAEm0B,UAAAA,GAAG,GAAGH,IAAN,CAAA;CAAa,SAAA;CAC9D,OAHM,MAGA;SACHI,GAAG,GAAGvsC,MAAM,CAACga,GAAb,CAAA;CACH,OAAA;;OAED,IAAIsyB,GAAG,KAAKxsC,SAAZ,EAAuB;SAAEwsC,GAAG,GAAGJ,IAAI,GAAG7tC,CAAC,IAAI8tC,IAAI,GAAGD,IAAX,CAAd,CAAA;CAAiC,OAAA;;OAC1DM,GAAG,GAAGJ,IAAI,GAAG/tC,CAAC,IAAIguC,IAAI,GAAGD,IAAX,CAAd,CAAA;CACA,MAAA,OAAOj0B,CAAC,KAAK,OAAN,GAAgB,IAAI2zB,OAAJ,CAAY,CAACU,GAAD,EAAMF,GAAN,EAAWC,GAAX,CAAZ,EAA6Bp0B,CAA7B,CAAhB,GAAkD,IAAI2zB,OAAJ,CAAY,CAACS,GAAD,EAAMD,GAAN,EAAWE,GAAX,CAAZ,EAA6Br0B,CAA7B,CAAzD,CAAA;MAvDJ,CAAA;;KA0DA,IAAIu0B,iBAAiB,GAAGX,IAAxB,CAAA;;KAEA,IAAItS,GAAG,GAAG,UAAU2Q,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OAClC,OAAOquC,iBAAiB,CAACtC,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,KAAhB,CAAxB,CAAA;CACA,KAFD,CAvuEkB;;;KA4uElB0rC,cAAc,CAACtQ,GAAf,GAAqBA,GAArB,CAAA;KACAsQ,cAAc,CAAC/Q,GAAf,GAAqBS,GAArB,CAAA;KAEA,IAAIkT,OAAO,GAAG1hB,OAAd,CAAA;;KAEA,IAAIhe,GAAG,GAAG,UAAUm9B,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CAC/B,MAAA,IAAIsgB,EAAE,GAAGyrB,IAAI,CAACn9B,GAAL,EAAT,CAAA;CACA,MAAA,IAAI4R,EAAE,GAAGwrB,IAAI,CAACp9B,GAAL,EAAT,CAAA;CACA,MAAA,OAAO,IAAI0/B,OAAJ,CAAYhuB,EAAE,GAAGtgB,CAAC,IAAIwgB,EAAE,GAACF,EAAP,CAAlB,EAA8B,KAA9B,CAAP,CAAA;CACH,KAJD,CAjvEkB;;;KAwvElBorB,cAAc,CAAC98B,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAI2/B,iBAAiB,GAAGb,IAAxB,CAAA;;KAEA,IAAIva,GAAG,GAAG,UAAU4Y,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OAClC,OAAOuuC,iBAAiB,CAACxC,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,KAAhB,CAAxB,CAAA;CACA,KAFD,CA5vEkB;;;KAiwElB0rC,cAAc,CAACvY,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAIqb,iBAAiB,GAAGd,IAAxB,CAAA;;KAEA,IAAIhY,GAAG,GAAG,UAAUqW,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OAClC,OAAOwuC,iBAAiB,CAACzC,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,KAAhB,CAAxB,CAAA;CACA,KAFD,CArwEkB;;;KA0wElB0rC,cAAc,CAAChW,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAI+Y,iBAAiB,GAAGf,IAAxB,CAAA;;KAEA,IAAI5c,GAAG,GAAG,UAAUib,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OAClC,OAAOyuC,iBAAiB,CAAC1C,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,KAAhB,CAAxB,CAAA;CACA,KAFD,CA9wEkB;;;KAmxElB0rC,cAAc,CAAC5a,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAI4d,iBAAiB,GAAGhB,IAAxB,CAAA;;KAEA,IAAIzW,GAAG,GAAG,UAAU8U,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OAClC,OAAO0uC,iBAAiB,CAAC3C,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,KAAhB,CAAxB,CAAA;CACA,KAFD,CAvxEkB;;;KA4xElB0rC,cAAc,CAACzU,GAAf,GAAqBA,GAArB,CAAA;KAEA,IAAI0X,OAAO,GAAG/hB,OAAd,CAAA;;KAEA,IAAIgc,KAAK,GAAG,UAAUmD,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;CACjC,MAAA,IAAI8sC,IAAI,GAAGf,IAAI,CAACnD,KAAL,EAAX,CAAA;CACA,MAAA,IAAImE,IAAI,GAAGf,IAAI,CAACpD,KAAL,EAAX,CAAA;OACA,OAAO,IAAI+F,OAAJ,CACH7B,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAUD,IAAI,CAAC,CAAD,CAAlB,CADR,EAEHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAUD,IAAI,CAAC,CAAD,CAAlB,CAFR,EAGHA,IAAI,CAAC,CAAD,CAAJ,GAAU9sC,CAAC,IAAI+sC,IAAI,CAAC,CAAD,CAAJ,GAAUD,IAAI,CAAC,CAAD,CAAlB,CAHR,EAIH,OAJG,CAAP,CAAA;CAMH,KATD,CAhyEkB;;;KA4yElBpB,cAAc,CAAC9C,KAAf,GAAuBA,KAAvB,CAAA;KAEA,IAAIgG,eAAe,GAAGlB,IAAtB,CAAA;;KAEA,IAAI/D,KAAK,GAAG,UAAUoC,IAAV,EAAgBC,IAAhB,EAAsBhsC,CAAtB,EAAyB;OACjC,OAAO4uC,eAAe,CAAC7C,IAAD,EAAOC,IAAP,EAAahsC,CAAb,EAAgB,OAAhB,CAAtB,CAAA;CACH,KAFD,CAhzEkB;;;KAqzElB0rC,cAAc,CAAC/B,KAAf,GAAuBA,KAAvB,CAAA;KAEA,IAAIkF,OAAO,GAAGjiB,OAAd,CAAA;CACA,IAAA,IAAIkiB,UAAU,GAAG3jB,KAAK,CAACC,QAAvB,CAAA;CACA,IAAA,IAAI2jB,KAAK,GAAG5vC,IAAI,CAAC+U,GAAjB,CAAA;CACA,IAAA,IAAI86B,MAAM,GAAG7vC,IAAI,CAAC8D,IAAlB,CAAA;CACA,IAAA,IAAIgsC,IAAI,GAAG9vC,IAAI,CAAC+rB,EAAhB,CAAA;CACA,IAAA,IAAIgkB,KAAK,GAAG/vC,IAAI,CAACgU,GAAjB,CAAA;CACA,IAAA,IAAIg8B,KAAK,GAAGhwC,IAAI,CAAC0U,GAAjB,CAAA;CACA,IAAA,IAAIu7B,OAAO,GAAGjwC,IAAI,CAACi6B,KAAnB,CAAA;;KAEA,IAAIiW,OAAO,GAAG,UAAUC,MAAV,EAAkBhjB,IAAlB,EAAwBijB,OAAxB,EAAiC;CAC3C,MAAA,IAAKjjB,IAAI,KAAK,KAAK,CAAnB,EAAuBA,IAAI,GAAC,MAAL,CAAA;CACvB,MAAA,IAAKijB,OAAO,KAAK,KAAK,CAAtB,EAA0BA,OAAO,GAAC,IAAR,CAAA;CAE1B,MAAA,IAAIn3B,CAAC,GAAGk3B,MAAM,CAAC9wC,MAAf,CAAA;;OACA,IAAI,CAAC+wC,OAAL,EAAc;CAAEA,QAAAA,OAAO,GAAG3nC,KAAK,CAACtJ,IAAN,CAAW,IAAIsJ,KAAJ,CAAUwQ,CAAV,CAAX,CAAyB9P,CAAAA,GAAzB,CAA6B,YAAY;CAAE,UAAA,OAAO,CAAP,CAAA;CAAW,SAAtD,CAAV,CAAA;CAAoE,OALzC;;;CAO3C,MAAA,IAAIiR,CAAC,GAAGnB,CAAC,GAAGm3B,OAAO,CAAClmC,MAAR,CAAe,UAASxJ,CAAT,EAAYS,CAAZ,EAAe;SAAE,OAAOT,CAAC,GAAGS,CAAX,CAAA;CAAe,OAA/C,CAAZ,CAAA;CACAivC,MAAAA,OAAO,CAAC/mC,OAAR,CAAgB,UAAUgnC,CAAV,EAAYrvC,CAAZ,EAAe;CAAEovC,QAAAA,OAAO,CAACpvC,CAAD,CAAP,IAAcoZ,CAAd,CAAA;CAAkB,OAAnD,EAR2C;;CAU3C+1B,MAAAA,MAAM,GAAGA,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;CAAE,QAAA,OAAO,IAAIwuC,OAAJ,CAAYxuC,CAAZ,CAAP,CAAA;CAAwB,OAAlD,CAAT,CAAA;;OACA,IAAIisB,IAAI,KAAK,MAAb,EAAqB;CACjB,QAAA,OAAOmjB,aAAa,CAACH,MAAD,EAASC,OAAT,CAApB,CAAA;CACH,OAAA;;CACD,MAAA,IAAI/tB,KAAK,GAAG8tB,MAAM,CAAC1nB,KAAP,EAAZ,CAAA;CACA,MAAA,IAAI8nB,GAAG,GAAGluB,KAAK,CAAC9S,GAAN,CAAU4d,IAAV,CAAV,CAAA;OACA,IAAIqjB,GAAG,GAAG,EAAV,CAAA;OACA,IAAIC,EAAE,GAAG,CAAT,CAAA;CACA,MAAA,IAAIC,EAAE,GAAG,CAAT,CAlB2C;;CAoB3C,MAAA,KAAK,IAAI1vC,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACuvC,GAAG,CAAClxC,MAApB,EAA4B2B,CAAC,EAA7B,EAAiC;CAC7BuvC,QAAAA,GAAG,CAACvvC,CAAD,CAAH,GAAS,CAACuvC,GAAG,CAACvvC,CAAD,CAAH,IAAU,CAAX,IAAgBovC,OAAO,CAAC,CAAD,CAAhC,CAAA;CACAI,QAAAA,GAAG,CAACppC,IAAJ,CAASY,KAAK,CAACuoC,GAAG,CAACvvC,CAAD,CAAJ,CAAL,GAAgB,CAAhB,GAAoBovC,OAAO,CAAC,CAAD,CAApC,CAAA,CAAA;;CACA,QAAA,IAAIjjB,IAAI,CAACqgB,MAAL,CAAYxsC,CAAZ,MAAmB,GAAnB,IAA0B,CAACgH,KAAK,CAACuoC,GAAG,CAACvvC,CAAD,CAAJ,CAApC,EAA8C;WAC1C,IAAIsC,CAAC,GAAGitC,GAAG,CAACvvC,CAAD,CAAH,GAAS,GAAT,GAAe8uC,IAAvB,CAAA;WACAW,EAAE,IAAIV,KAAK,CAACzsC,CAAD,CAAL,GAAW8sC,OAAO,CAAC,CAAD,CAAxB,CAAA;WACAM,EAAE,IAAIV,KAAK,CAAC1sC,CAAD,CAAL,GAAW8sC,OAAO,CAAC,CAAD,CAAxB,CAAA;CACH,SAAA;CACJ,OAAA;;OAED,IAAIroB,KAAK,GAAG1F,KAAK,CAAC0F,KAAN,EAAgBqoB,GAAAA,OAAO,CAAC,CAAD,CAAnC,CAAA;CACAD,MAAAA,MAAM,CAAC9mC,OAAP,CAAe,UAAUnI,CAAV,EAAYyvC,EAAZ,EAAgB;CAC3B,QAAA,IAAIC,IAAI,GAAG1vC,CAAC,CAACqO,GAAF,CAAM4d,IAAN,CAAX,CAAA;SACApF,KAAK,IAAI7mB,CAAC,CAAC6mB,KAAF,EAAA,GAAYqoB,OAAO,CAACO,EAAE,GAAC,CAAJ,CAA5B,CAAA;;CACA,QAAA,KAAK,IAAI3vC,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACuvC,GAAG,CAAClxC,MAApB,EAA4B2B,CAAC,EAA7B,EAAiC;WAC7B,IAAI,CAACgH,KAAK,CAAC4oC,IAAI,CAAC5vC,CAAD,CAAL,CAAV,EAAqB;aACjBwvC,GAAG,CAACxvC,CAAD,CAAH,IAAUovC,OAAO,CAACO,EAAE,GAAC,CAAJ,CAAjB,CAAA;;CACA,YAAA,IAAIxjB,IAAI,CAACqgB,MAAL,CAAYxsC,CAAZ,CAAA,KAAmB,GAAvB,EAA4B;eACxB,IAAIsC,CAAC,GAAGstC,IAAI,CAAC5vC,CAAD,CAAJ,GAAU,GAAV,GAAgB8uC,IAAxB,CAAA;eACAW,EAAE,IAAIV,KAAK,CAACzsC,CAAD,CAAL,GAAW8sC,OAAO,CAACO,EAAE,GAAC,CAAJ,CAAxB,CAAA;eACAD,EAAE,IAAIV,KAAK,CAAC1sC,CAAD,CAAL,GAAW8sC,OAAO,CAACO,EAAE,GAAC,CAAJ,CAAxB,CAAA;CACH,aAJD,MAIO;CACHJ,cAAAA,GAAG,CAACvvC,CAAD,CAAH,IAAU4vC,IAAI,CAAC5vC,CAAD,CAAJ,GAAUovC,OAAO,CAACO,EAAE,GAAC,CAAJ,CAA3B,CAAA;CACH,aAAA;CACJ,WAAA;CACJ,SAAA;QAdL,CAAA,CAAA;;CAiBA,MAAA,KAAK,IAAIxlB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAColB,GAAG,CAAClxC,MAAxB,EAAgC8rB,GAAG,EAAnC,EAAuC;CACnC,QAAA,IAAIgC,IAAI,CAACqgB,MAAL,CAAYriB,GAAZ,CAAA,KAAqB,GAAzB,EAA8B;WAC1B,IAAI0lB,GAAG,GAAGZ,OAAO,CAACS,EAAE,GAAGF,GAAG,CAACrlB,GAAD,CAAT,EAAgBslB,EAAE,GAAGD,GAAG,CAACrlB,GAAD,CAAxB,CAAP,GAAwC2kB,IAAxC,GAA+C,GAAzD,CAAA;;WACA,OAAOe,GAAG,GAAG,CAAb,EAAgB;CAAEA,YAAAA,GAAG,IAAI,GAAP,CAAA;CAAa,WAAA;;WAC/B,OAAOA,GAAG,IAAI,GAAd,EAAmB;CAAEA,YAAAA,GAAG,IAAI,GAAP,CAAA;CAAa,WAAA;;CAClCN,UAAAA,GAAG,CAACplB,GAAD,CAAH,GAAW0lB,GAAX,CAAA;CACH,SALD,MAKO;CACHN,UAAAA,GAAG,CAACplB,GAAD,CAAH,GAAWolB,GAAG,CAACplB,GAAD,CAAH,GAASqlB,GAAG,CAACrlB,GAAD,CAAvB,CAAA;CACH,SAAA;CACJ,OAAA;;CACDpD,MAAAA,KAAK,IAAI9O,CAAT,CAAA;CACA,MAAA,OAAQ,IAAIy2B,OAAJ,CAAYa,GAAZ,EAAiBpjB,IAAjB,CAAD,CAAyBpF,KAAzB,CAA+BA,KAAK,GAAG,OAAR,GAAkB,CAAlB,GAAsBA,KAArD,EAA4D,IAA5D,CAAP,CAAA;MA3DJ,CAAA;;CA+DA,IAAA,IAAIuoB,aAAa,GAAG,UAAUH,MAAV,EAAkBC,OAAlB,EAA2B;CAC3C,MAAA,IAAIn3B,CAAC,GAAGk3B,MAAM,CAAC9wC,MAAf,CAAA;OACA,IAAIkxC,GAAG,GAAG,CAAC,CAAD,EAAG,CAAH,EAAK,CAAL,EAAO,CAAP,CAAV,CAAA;;CACA,MAAA,KAAK,IAAIvvC,CAAC,GAAC,CAAX,EAAcA,CAAC,GAAGmvC,MAAM,CAAC9wC,MAAzB,EAAiC2B,CAAC,EAAlC,EAAsC;CAClC,QAAA,IAAIwkB,GAAG,GAAG2qB,MAAM,CAACnvC,CAAD,CAAhB,CAAA;CACA,QAAA,IAAIH,CAAC,GAAGuvC,OAAO,CAACpvC,CAAD,CAAP,GAAaiY,CAArB,CAAA;CACA,QAAA,IAAI8R,GAAG,GAAGvF,GAAG,CAAC+H,IAAd,CAAA;CACAgjB,QAAAA,GAAG,CAAC,CAAD,CAAH,IAAUX,KAAK,CAAC7kB,GAAG,CAAC,CAAD,CAAJ,EAAQ,CAAR,CAAL,GAAkBlqB,CAA5B,CAAA;CACA0vC,QAAAA,GAAG,CAAC,CAAD,CAAH,IAAUX,KAAK,CAAC7kB,GAAG,CAAC,CAAD,CAAJ,EAAQ,CAAR,CAAL,GAAkBlqB,CAA5B,CAAA;CACA0vC,QAAAA,GAAG,CAAC,CAAD,CAAH,IAAUX,KAAK,CAAC7kB,GAAG,CAAC,CAAD,CAAJ,EAAQ,CAAR,CAAL,GAAkBlqB,CAA5B,CAAA;SACA0vC,GAAG,CAAC,CAAD,CAAH,IAAUxlB,GAAG,CAAC,CAAD,CAAH,GAASlqB,CAAnB,CAAA;CACH,OAAA;;OACD0vC,GAAG,CAAC,CAAD,CAAH,GAASV,MAAM,CAACU,GAAG,CAAC,CAAD,CAAJ,CAAf,CAAA;OACAA,GAAG,CAAC,CAAD,CAAH,GAASV,MAAM,CAACU,GAAG,CAAC,CAAD,CAAJ,CAAf,CAAA;OACAA,GAAG,CAAC,CAAD,CAAH,GAASV,MAAM,CAACU,GAAG,CAAC,CAAD,CAAJ,CAAf,CAAA;;CACA,MAAA,IAAIA,GAAG,CAAC,CAAD,CAAH,GAAS,SAAb,EAAwB;CAAEA,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS,CAAT,CAAA;CAAa,OAAA;;CACvC,MAAA,OAAO,IAAIb,OAAJ,CAAYC,UAAU,CAACY,GAAD,CAAtB,CAAP,CAAA;CACH,KAjBD,CA/3EkB;CAo5EtB;;;KAEI,IAAIO,QAAQ,GAAGjjB,QAAf,CAAA;CACA,IAAA,IAAIkjB,MAAM,GAAG/kB,KAAK,CAAC5O,IAAnB,CAAA;CAEA,IAAA,IAAI4zB,KAAK,GAAGhxC,IAAI,CAAC+U,GAAjB,CAAA;;CAEA,IAAA,IAAIk8B,OAAO,GAAG,UAASd,MAAT,EAAiB;CAEnC;OACQ,IAAIe,KAAK,GAAG,KAAZ,CAAA;;CACA,MAAA,IAAIC,MAAM,GAAGL,QAAQ,CAAC,MAAD,CAArB,CAAA;;CACA,MAAA,IAAIM,OAAO,GAAG,CAAd,CAL2B;;CAO3B,MAAA,IAAIC,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAd,CAAA;OACA,IAAIC,IAAI,GAAG,EAAX,CAAA;CACA,MAAA,IAAIC,QAAQ,GAAG,CAAC,CAAD,EAAG,CAAH,CAAf,CAAA;OACA,IAAIC,QAAQ,GAAG,KAAf,CAAA;OACA,IAAIC,OAAO,GAAG,EAAd,CAAA;OACA,IAAIC,IAAI,GAAG,KAAX,CAAA;OACA,IAAIC,IAAI,GAAG,CAAX,CAAA;OACA,IAAIC,IAAI,GAAG,CAAX,CAAA;OACA,IAAIC,iBAAiB,GAAG,KAAxB,CAAA;OACA,IAAIC,WAAW,GAAG,EAAlB,CAAA;OACA,IAAIC,SAAS,GAAG,IAAhB,CAAA;CACA,MAAA,IAAIC,MAAM,GAAG,CAAb,CAlB2B;;CAsB3B,MAAA,IAAIC,SAAS,GAAG,UAAS9B,MAAT,EAAiB;CAC7BA,QAAAA,MAAM,GAAGA,MAAM,IAAI,CAAC,MAAD,EAAS,MAAT,CAAnB,CAAA;;SACA,IAAIA,MAAM,IAAIY,MAAM,CAACZ,MAAD,CAAN,KAAmB,QAA7B,IAAyCW,QAAQ,CAACoB,MAAlD,IACApB,QAAQ,CAACoB,MAAT,CAAgB/B,MAAM,CAAC/pC,WAAP,EAAhB,CADJ,EAC2C;WACvC+pC,MAAM,GAAGW,QAAQ,CAACoB,MAAT,CAAgB/B,MAAM,CAAC/pC,WAAP,EAAhB,CAAT,CAAA;CACH,SAAA;;CACD,QAAA,IAAI2qC,MAAM,CAACZ,MAAD,CAAN,KAAmB,OAAvB,EAAgC;CAC5C;CACgB,UAAA,IAAIA,MAAM,CAAC9wC,MAAP,KAAkB,CAAtB,EAAyB;aACrB8wC,MAAM,GAAG,CAACA,MAAM,CAAC,CAAD,CAAP,EAAYA,MAAM,CAAC,CAAD,CAAlB,CAAT,CAAA;CACH,WAJ2B;;;WAM5BA,MAAM,GAAGA,MAAM,CAACtuC,KAAP,CAAa,CAAb,CAAT,CAN4B;;CAQ5B,UAAA,KAAK,IAAIX,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACivC,MAAM,CAAC9wC,MAAvB,EAA+B6B,CAAC,EAAhC,EAAoC;aAChCivC,MAAM,CAACjvC,CAAD,CAAN,GAAY4vC,QAAQ,CAACX,MAAM,CAACjvC,CAAD,CAAP,CAApB,CAAA;CACH,WAV2B;;;WAY5BowC,IAAI,CAACjyC,MAAL,GAAc,CAAd,CAAA;;CACA,UAAA,KAAK,IAAI8yC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAChC,MAAM,CAAC9wC,MAA3B,EAAmC8yC,GAAG,EAAtC,EAA0C;aACtCb,IAAI,CAAClqC,IAAL,CAAU+qC,GAAG,IAAEhC,MAAM,CAAC9wC,MAAP,GAAc,CAAhB,CAAb,CAAA,CAAA;CACH,WAAA;CACJ,SAAA;;SACD+yC,UAAU,EAAA,CAAA;SACV,OAAOX,OAAO,GAAGtB,MAAjB,CAAA;QAxBJ,CAAA;;CA2BA,MAAA,IAAIkC,QAAQ,GAAG,UAAS9xC,KAAT,EAAgB;SAC3B,IAAIixC,QAAQ,IAAI,IAAhB,EAAsB;CAClB,UAAA,IAAIhuC,CAAC,GAAGguC,QAAQ,CAACnyC,MAAT,GAAgB,CAAxB,CAAA;WACA,IAAI2B,CAAC,GAAG,CAAR,CAAA;;WACA,OAAOA,CAAC,GAAGwC,CAAJ,IAASjD,KAAK,IAAIixC,QAAQ,CAACxwC,CAAD,CAAjC,EAAsC;aAClCA,CAAC,EAAA,CAAA;CACJ,WAAA;;WACD,OAAOA,CAAC,GAAC,CAAT,CAAA;CACH,SAAA;;CACD,QAAA,OAAO,CAAP,CAAA;QATJ,CAAA;;CAYA,MAAA,IAAIsxC,aAAa,GAAG,UAAUntB,CAAV,EAAa;CAAE,QAAA,OAAOA,CAAP,CAAA;QAAnC,CAAA;;CACA,MAAA,IAAIotB,UAAU,GAAG,UAAUptB,CAAV,EAAa;CAAE,QAAA,OAAOA,CAAP,CAAA;CAAW,OAA3C,CA9D2B;CAiEnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;CAEQ,MAAA,IAAIqtB,QAAQ,GAAG,UAASC,GAAT,EAAcC,SAAd,EAAyB;SACpC,IAAIltB,GAAJ,EAASL,CAAT,CAAA;;SACA,IAAIutB,SAAS,IAAI,IAAjB,EAAuB;CAAEA,UAAAA,SAAS,GAAG,KAAZ,CAAA;CAAoB,SAAA;;SAC7C,IAAI1qC,KAAK,CAACyqC,GAAD,CAAL,IAAeA,GAAG,KAAK,IAA3B,EAAkC;CAAE,UAAA,OAAOtB,MAAP,CAAA;CAAgB,SAAA;;SACpD,IAAI,CAACuB,SAAL,EAAgB;CACZ,UAAA,IAAIlB,QAAQ,IAAKA,QAAQ,CAACnyC,MAAT,GAAkB,CAAnC,EAAuC;CACvD;CACoB,YAAA,IAAI6B,CAAC,GAAGmxC,QAAQ,CAACI,GAAD,CAAhB,CAAA;aACAttB,CAAC,GAAGjkB,CAAC,IAAIswC,QAAQ,CAACnyC,MAAT,GAAgB,CAApB,CAAL,CAAA;CACH,WAJD,MAIO,IAAIuyC,IAAI,KAAKD,IAAb,EAAmB;CAC1C;aACoBxsB,CAAC,GAAG,CAACstB,GAAG,GAAGd,IAAP,KAAgBC,IAAI,GAAGD,IAAvB,CAAJ,CAAA;CACH,WAHM,MAGA;CACHxsB,YAAAA,CAAC,GAAG,CAAJ,CAAA;CACH,WAAA;CACJ,SAXD,MAWO;CACHA,UAAAA,CAAC,GAAGstB,GAAJ,CAAA;CACH,SAjBmC;;;CAoBpCttB,QAAAA,CAAC,GAAGotB,UAAU,CAACptB,CAAD,CAAd,CAAA;;SAEA,IAAI,CAACutB,SAAL,EAAgB;CACZvtB,UAAAA,CAAC,GAAGmtB,aAAa,CAACntB,CAAD,CAAjB,CADY;CAEf,SAAA;;SAED,IAAI6sB,MAAM,KAAK,CAAf,EAAkB;CAAE7sB,UAAAA,CAAC,GAAG6rB,KAAK,CAAC7rB,CAAD,EAAI6sB,MAAJ,CAAT,CAAA;CAAuB,SAAA;;CAE3C7sB,QAAAA,CAAC,GAAGosB,QAAQ,CAAC,CAAD,CAAR,GAAepsB,CAAC,IAAI,CAAA,GAAIosB,QAAQ,CAAC,CAAD,CAAZ,GAAkBA,QAAQ,CAAC,CAAD,CAA9B,CAApB,CAAA;CAEApsB,QAAAA,CAAC,GAAGnlB,IAAI,CAAC8C,GAAL,CAAS,CAAT,EAAY9C,IAAI,CAAC+C,GAAL,CAAS,CAAT,EAAYoiB,CAAZ,CAAZ,CAAJ,CAAA;SAEA,IAAI/K,CAAC,GAAGpa,IAAI,CAACoU,KAAL,CAAW+Q,CAAC,GAAG,KAAf,CAAR,CAAA;;CAEA,QAAA,IAAI4sB,SAAS,IAAID,WAAW,CAAC13B,CAAD,CAA5B,EAAiC;CAC7BoL,UAAAA,GAAG,GAAGssB,WAAW,CAAC13B,CAAD,CAAjB,CAAA;CACH,SAFD,MAEO;CACH,UAAA,IAAI22B,MAAM,CAACU,OAAD,CAAN,KAAoB,OAAxB,EAAiC;CACjD;CACoB,YAAA,KAAK,IAAIzwC,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACswC,IAAI,CAACjyC,MAArB,EAA6B2B,CAAC,EAA9B,EAAkC;CAC9B,cAAA,IAAI6Z,CAAC,GAAGy2B,IAAI,CAACtwC,CAAD,CAAZ,CAAA;;eACA,IAAImkB,CAAC,IAAItK,CAAT,EAAY;CACR2K,gBAAAA,GAAG,GAAGisB,OAAO,CAACzwC,CAAD,CAAb,CAAA;CACA,gBAAA,MAAA;CACH,eAAA;;eACD,IAAKmkB,CAAC,IAAItK,CAAN,IAAa7Z,CAAC,KAAMswC,IAAI,CAACjyC,MAAL,GAAY,CAApC,EAAyC;CACrCmmB,gBAAAA,GAAG,GAAGisB,OAAO,CAACzwC,CAAD,CAAb,CAAA;CACA,gBAAA,MAAA;CACH,eAAA;;CACD,cAAA,IAAImkB,CAAC,GAAGtK,CAAJ,IAASsK,CAAC,GAAGmsB,IAAI,CAACtwC,CAAC,GAAC,CAAH,CAArB,EAA4B;CACxBmkB,gBAAAA,CAAC,GAAG,CAACA,CAAC,GAACtK,CAAH,KAAOy2B,IAAI,CAACtwC,CAAC,GAAC,CAAH,CAAJ,GAAU6Z,CAAjB,CAAJ,CAAA;iBACA2K,GAAG,GAAGsrB,QAAQ,CAAC3E,WAAT,CAAqBsF,OAAO,CAACzwC,CAAD,CAA5B,EAAiCywC,OAAO,CAACzwC,CAAC,GAAC,CAAH,CAAxC,EAA+CmkB,CAA/C,EAAkD+rB,KAAlD,CAAN,CAAA;CACA,gBAAA,MAAA;CACH,eAAA;CACJ,aAAA;YAjBL,MAkBO,IAAIH,MAAM,CAACU,OAAD,CAAN,KAAoB,UAAxB,EAAoC;CACvCjsB,YAAAA,GAAG,GAAGisB,OAAO,CAACtsB,CAAD,CAAb,CAAA;CACH,WAAA;;CACD,UAAA,IAAI4sB,SAAJ,EAAe;CAAED,YAAAA,WAAW,CAAC13B,CAAD,CAAX,GAAiBoL,GAAjB,CAAA;CAAuB,WAAA;CAC3C,SAAA;;CACD,QAAA,OAAOA,GAAP,CAAA;QA5DJ,CAAA;;OA+DA,IAAI4sB,UAAU,GAAG,YAAY;SAAE,OAAON,WAAW,GAAG,EAArB,CAAA;QAA/B,CAAA;;CAEAG,MAAAA,SAAS,CAAC9B,MAAD,CAAT,CA7I2B;;CAiJ3B,MAAA,IAAItvC,CAAC,GAAG,UAAS8V,CAAT,EAAY;SAChB,IAAIzV,CAAC,GAAG4vC,QAAQ,CAAC0B,QAAQ,CAAC77B,CAAD,CAAT,CAAhB,CAAA;;CACA,QAAA,IAAI+6B,IAAI,IAAIxwC,CAAC,CAACwwC,IAAD,CAAb,EAAqB;CAAE,UAAA,OAAOxwC,CAAC,CAACwwC,IAAD,CAAD,EAAP,CAAA;CAAmB,SAA1C,MAAgD;CAAE,UAAA,OAAOxwC,CAAP,CAAA;CAAW,SAAA;QAFjE,CAAA;;CAKAL,MAAAA,CAAC,CAAC8xC,OAAF,GAAY,UAASA,OAAT,EAAkB;SAC1B,IAAIA,OAAO,IAAI,IAAf,EAAqB;CACjB,UAAA,IAAI5B,MAAM,CAAC4B,OAAD,CAAN,KAAoB,OAAxB,EAAiC;CAC7BnB,YAAAA,QAAQ,GAAGmB,OAAX,CAAA;CACAtB,YAAAA,OAAO,GAAG,CAACsB,OAAO,CAAC,CAAD,CAAR,EAAaA,OAAO,CAACA,OAAO,CAACtzC,MAAR,GAAe,CAAhB,CAApB,CAAV,CAAA;CACH,WAHD,MAGO;CACH,YAAA,IAAIsB,CAAC,GAAGmwC,QAAQ,CAAC8B,OAAT,CAAiBvB,OAAjB,CAAR,CAAA;;aACA,IAAIsB,OAAO,KAAK,CAAhB,EAAmB;eACfnB,QAAQ,GAAG,CAAC7wC,CAAC,CAACmC,GAAH,EAAQnC,CAAC,CAACoC,GAAV,CAAX,CAAA;CACH,aAFD,MAEO;eACHyuC,QAAQ,GAAGV,QAAQ,CAAC+B,MAAT,CAAgBlyC,CAAhB,EAAmB,GAAnB,EAAwBgyC,OAAxB,CAAX,CAAA;CACH,aAAA;CACJ,WAAA;;CACD,UAAA,OAAO9xC,CAAP,CAAA;CACH,SAAA;;CACD,QAAA,OAAO2wC,QAAP,CAAA;QAfJ,CAAA;;CAmBA3wC,MAAAA,CAAC,CAACiyC,MAAF,GAAW,UAASA,MAAT,EAAiB;CACxB,QAAA,IAAI,CAAChlC,SAAS,CAACzO,MAAf,EAAuB;CACnB,UAAA,OAAOgyC,OAAP,CAAA;CACH,SAAA;;CACDM,QAAAA,IAAI,GAAGmB,MAAM,CAAC,CAAD,CAAb,CAAA;SACAlB,IAAI,GAAGkB,MAAM,CAACA,MAAM,CAACzzC,MAAP,GAAc,CAAf,CAAb,CAAA;CACAiyC,QAAAA,IAAI,GAAG,EAAP,CAAA;CACA,QAAA,IAAIl3B,CAAC,GAAGq3B,OAAO,CAACpyC,MAAhB,CAAA;;SACA,IAAKyzC,MAAM,CAACzzC,MAAP,KAAkB+a,CAAnB,IAA0Bu3B,IAAI,KAAKC,IAAvC,EAA8C;CAC1D;WACgB,KAAK,IAAI5wC,CAAC,GAAG,CAAR,EAAWosB,IAAI,GAAG3kB,KAAK,CAACtJ,IAAN,CAAW2zC,MAAX,CAAvB,EAA2C9xC,CAAC,GAAGosB,IAAI,CAAC/tB,MAApD,EAA4D2B,CAAC,IAAI,CAAjE,EAAoE;CAChE,YAAA,IAAIL,CAAC,GAAGysB,IAAI,CAACpsB,CAAD,CAAZ,CAAA;;aAEFswC,IAAI,CAAClqC,IAAL,CAAU,CAACzG,CAAC,GAACgxC,IAAH,KAAYC,IAAI,GAACD,IAAjB,CAAV,CAAA,CAAA;CACD,WAAA;CACJ,SAPD,MAOO;WACH,KAAK,IAAIzwC,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACkZ,CAAhB,EAAmBlZ,CAAC,EAApB,EAAwB;aACpBowC,IAAI,CAAClqC,IAAL,CAAUlG,CAAC,IAAEkZ,CAAC,GAAC,CAAJ,CAAX,CAAA,CAAA;CACH,WAAA;;CACD,UAAA,IAAI04B,MAAM,CAACzzC,MAAP,GAAgB,CAApB,EAAuB;CACvC;aACoB,IAAI0zC,IAAI,GAAGD,MAAM,CAAC3pC,GAAP,CAAW,UAAUxI,CAAV,EAAYK,CAAZ,EAAe;CAAE,cAAA,OAAOA,CAAC,IAAE8xC,MAAM,CAACzzC,MAAP,GAAc,CAAhB,CAAR,CAAA;CAA6B,aAAzD,CAAX,CAAA;aACA,IAAI2zC,OAAO,GAAGF,MAAM,CAAC3pC,GAAP,CAAW,UAAUxI,CAAV,EAAa;eAAE,OAAO,CAACA,CAAC,GAAGgxC,IAAL,KAAcC,IAAI,GAAGD,IAArB,CAAP,CAAA;CAAoC,aAA9D,CAAd,CAAA;;aACA,IAAI,CAACqB,OAAO,CAACC,KAAR,CAAc,UAAUR,GAAV,EAAezxC,CAAf,EAAkB;CAAE,cAAA,OAAO+xC,IAAI,CAAC/xC,CAAD,CAAJ,KAAYyxC,GAAnB,CAAA;CAAyB,aAA3D,CAAL,EAAmE;eAC/DF,UAAU,GAAG,UAAUptB,CAAV,EAAa;CACtB,gBAAA,IAAIA,CAAC,IAAI,CAAL,IAAUA,CAAC,IAAI,CAAnB,EAAsB;CAAE,kBAAA,OAAOA,CAAP,CAAA;CAAW,iBAAA;;iBACnC,IAAInkB,CAAC,GAAG,CAAR,CAAA;;iBACA,OAAOmkB,CAAC,IAAI6tB,OAAO,CAAChyC,CAAC,GAAC,CAAH,CAAnB,EAA0B;mBAAEA,CAAC,EAAA,CAAA;CAAK,iBAAA;;iBAClC,IAAIH,CAAC,GAAG,CAACskB,CAAC,GAAG6tB,OAAO,CAAChyC,CAAD,CAAZ,KAAoBgyC,OAAO,CAAChyC,CAAC,GAAC,CAAH,CAAP,GAAegyC,OAAO,CAAChyC,CAAD,CAA1C,CAAR,CAAA;iBACA,IAAIysC,GAAG,GAAGsF,IAAI,CAAC/xC,CAAD,CAAJ,GAAUH,CAAC,IAAIkyC,IAAI,CAAC/xC,CAAC,GAAC,CAAH,CAAJ,GAAY+xC,IAAI,CAAC/xC,CAAD,CAApB,CAArB,CAAA;CACA,gBAAA,OAAOysC,GAAP,CAAA;gBANJ,CAAA;CAQH,aAAA;CAEJ,WAAA;CACJ,SAAA;;CACD4D,QAAAA,OAAO,GAAG,CAACM,IAAD,EAAOC,IAAP,CAAV,CAAA;CACA,QAAA,OAAO/wC,CAAP,CAAA;QArCJ,CAAA;;CAwCAA,MAAAA,CAAC,CAACssB,IAAF,GAAS,UAAS+lB,EAAT,EAAa;CAClB,QAAA,IAAI,CAACplC,SAAS,CAACzO,MAAf,EAAuB;CACnB,UAAA,OAAO6xC,KAAP,CAAA;CACH,SAAA;;CACDA,QAAAA,KAAK,GAAGgC,EAAR,CAAA;SACAd,UAAU,EAAA,CAAA;CACV,QAAA,OAAOvxC,CAAP,CAAA;QANJ,CAAA;;CASAA,MAAAA,CAAC,CAACsyC,KAAF,GAAU,UAAShD,MAAT,EAAiBmB,IAAjB,EAAuB;SAC7BW,SAAS,CAAC9B,MAAD,CAAT,CAAA;CACA,QAAA,OAAOtvC,CAAP,CAAA;QAFJ,CAAA;;CAKAA,MAAAA,CAAC,CAAC4sC,GAAF,GAAQ,UAAS2F,EAAT,EAAa;CACjB1B,QAAAA,IAAI,GAAG0B,EAAP,CAAA;CACA,QAAA,OAAOvyC,CAAP,CAAA;QAFJ,CAAA;;CAKAA,MAAAA,CAAC,CAACwyC,MAAF,GAAW,UAASZ,GAAT,EAAc;CACrB,QAAA,IAAI,CAAC3kC,SAAS,CAACzO,MAAf,EAAuB;CACnB,UAAA,OAAO+xC,OAAP,CAAA;CACH,SAAA;;CACDA,QAAAA,OAAO,GAAGqB,GAAV,CAAA;CACA,QAAA,OAAO5xC,CAAP,CAAA;QALJ,CAAA;;CAQAA,MAAAA,CAAC,CAACyyC,gBAAF,GAAqB,UAAS38B,CAAT,EAAY;SAC7B,IAAIA,CAAC,IAAI,IAAT,EAAe;CAAEA,UAAAA,CAAC,GAAG,IAAJ,CAAA;CAAW,SAAA;;CAC5Bk7B,QAAAA,iBAAiB,GAAGl7B,CAApB,CAAA;SACAy7B,UAAU,EAAA,CAAA;;CACV,QAAA,IAAIP,iBAAJ,EAAuB;WACnBS,aAAa,GAAG,UAASntB,CAAT,EAAY;CACxB,YAAA,IAAIouB,EAAE,GAAGf,QAAQ,CAAC,CAAD,EAAI,IAAJ,CAAR,CAAkB3Y,GAAlB,EAAwB,CAAA,CAAxB,CAAT,CAAA;CACA,YAAA,IAAI2Z,EAAE,GAAGhB,QAAQ,CAAC,CAAD,EAAI,IAAJ,CAAR,CAAkB3Y,GAAlB,EAAwB,CAAA,CAAxB,CAAT,CAAA;CACA,YAAA,IAAI4Z,GAAG,GAAGF,EAAE,GAAGC,EAAf,CAAA;CACA,YAAA,IAAIE,QAAQ,GAAGlB,QAAQ,CAACrtB,CAAD,EAAI,IAAJ,CAAR,CAAkB0U,GAAlB,EAAwB,CAAA,CAAxB,CAAf,CAAA;aACA,IAAI8Z,OAAO,GAAGJ,EAAE,GAAI,CAACC,EAAE,GAAGD,EAAN,IAAYpuB,CAAhC,CAAA;CACA,YAAA,IAAIyuB,MAAM,GAAGF,QAAQ,GAAGC,OAAxB,CAAA;aACA,IAAIvb,EAAE,GAAG,CAAT,CAAA;aACA,IAAI/H,EAAE,GAAG,CAAT,CAAA;aACA,IAAI4b,QAAQ,GAAG,EAAf,CAAA;;aACA,OAAQjsC,IAAI,CAACqE,GAAL,CAASuvC,MAAT,CAAmB,GAAA,IAApB,IAA8B3H,QAAQ,EAAK,GAAA,CAAlD,EAAsD;CAClD,cAAA,CAAC,YAAW;CACR,gBAAA,IAAIwH,GAAJ,EAAS;mBAAEG,MAAM,IAAI,CAAC,CAAX,CAAA;CAAe,iBAAA;;iBAC1B,IAAIA,MAAM,GAAG,CAAb,EAAgB;CACZxb,kBAAAA,EAAE,GAAGjT,CAAL,CAAA;CACAA,kBAAAA,CAAC,IAAI,CAACkL,EAAE,GAAGlL,CAAN,IAAW,GAAhB,CAAA;CACH,iBAHD,MAGO;CACHkL,kBAAAA,EAAE,GAAGlL,CAAL,CAAA;CACAA,kBAAAA,CAAC,IAAI,CAACiT,EAAE,GAAGjT,CAAN,IAAW,GAAhB,CAAA;CACH,iBAAA;;iBACDuuB,QAAQ,GAAGlB,QAAQ,CAACrtB,CAAD,EAAI,IAAJ,CAAR,CAAkB0U,GAAlB,EAAwB,CAAA,CAAxB,CAAX,CAAA;CACA,gBAAA,OAAO+Z,MAAM,GAAGF,QAAQ,GAAGC,OAA3B,CAAA;gBAVJ,GAAA,CAAA;CAYH,aAAA;;CACD,YAAA,OAAOxuB,CAAP,CAAA;YAxBJ,CAAA;CA0BH,SA3BD,MA2BO;WACHmtB,aAAa,GAAG,UAAUntB,CAAV,EAAa;CAAE,YAAA,OAAOA,CAAP,CAAA;YAA/B,CAAA;CACH,SAAA;;CACD,QAAA,OAAOtkB,CAAP,CAAA;QAlCJ,CAAA;;CAqCAA,MAAAA,CAAC,CAACgzC,OAAF,GAAY,UAASh5B,CAAT,EAAY;SACpB,IAAIA,CAAC,IAAI,IAAT,EAAe;CACX,UAAA,IAAIk2B,MAAM,CAACl2B,CAAD,CAAN,KAAc,QAAlB,EAA4B;CACxBA,YAAAA,CAAC,GAAG,CAACA,CAAD,EAAGA,CAAH,CAAJ,CAAA;CACH,WAAA;;CACD02B,UAAAA,QAAQ,GAAG12B,CAAX,CAAA;CACA,UAAA,OAAOha,CAAP,CAAA;CACH,SAND,MAMO;CACH,UAAA,OAAO0wC,QAAP,CAAA;CACH,SAAA;QATL,CAAA;;CAYA1wC,MAAAA,CAAC,CAACsvC,MAAF,GAAW,UAAS2D,SAAT,EAAoBrG,GAApB,EAAyB;CAC5C;CACY,QAAA,IAAI3/B,SAAS,CAACzO,MAAV,GAAmB,CAAvB,EAA0B;CAAEouC,UAAAA,GAAG,GAAG,KAAN,CAAA;CAAc,SAAA;;SAC1C,IAAIxmC,MAAM,GAAG,EAAb,CAAA;;CAEA,QAAA,IAAI6G,SAAS,CAACzO,MAAV,KAAqB,CAAzB,EAA4B;CACxB4H,UAAAA,MAAM,GAAGwqC,OAAO,CAAC5vC,KAAR,CAAc,CAAd,CAAT,CAAA;CAEH,SAHD,MAGO,IAAIiyC,SAAS,KAAK,CAAlB,EAAqB;CACxB7sC,UAAAA,MAAM,GAAG,CAACpG,CAAC,CAAC,GAAD,CAAF,CAAT,CAAA;CAEH,SAHM,MAGA,IAAIizC,SAAS,GAAG,CAAhB,EAAmB;CACtB,UAAA,IAAIC,EAAE,GAAG1C,OAAO,CAAC,CAAD,CAAhB,CAAA;CACA,UAAA,IAAI2C,EAAE,GAAG3C,OAAO,CAAC,CAAD,CAAP,GAAa0C,EAAtB,CAAA;CACA9sC,UAAAA,MAAM,GAAGgtC,SAAS,CAAC,CAAD,EAAIH,SAAJ,EAAe,KAAf,CAAT,CAA+B3qC,GAA/B,CAAmC,UAAUnI,CAAV,EAAa;CAAE,YAAA,OAAOH,CAAC,CAAEkzC,EAAE,GAAK/yC,CAAC,IAAE8yC,SAAS,GAAC,CAAZ,CAAF,GAAoBE,EAA5B,CAAR,CAAA;CAA4C,WAA9F,CAAT,CAAA;CAEH,SALM,MAKA;CAAA;CACH7D,UAAAA,MAAM,GAAG,EAAT,CAAA;WACA,IAAI+D,OAAO,GAAG,EAAd,CAAA;;CACA,UAAA,IAAI1C,QAAQ,IAAKA,QAAQ,CAACnyC,MAAT,GAAkB,CAAnC,EAAuC;CACnC,YAAA,KAAK,IAAI2B,CAAC,GAAG,CAAR,EAAWmzC,GAAG,GAAG3C,QAAQ,CAACnyC,MAA1B,EAAkC+0C,GAAG,GAAG,KAAKD,GAAlD,EAAuDC,GAAG,GAAGpzC,CAAC,GAAGmzC,GAAP,GAAanzC,CAAC,GAAGmzC,GAA3E,EAAgFC,GAAG,GAAGpzC,CAAC,EAAJ,GAASA,CAAC,EAA7F,EAAiG;CAC7FkzC,cAAAA,OAAO,CAAC9sC,IAAR,CAAa,CAACoqC,QAAQ,CAACxwC,CAAC,GAAC,CAAH,CAAR,GAAcwwC,QAAQ,CAACxwC,CAAD,CAAvB,IAA4B,GAAzC,CAAA,CAAA;CACH,aAAA;CACJ,WAJD,MAIO;CACHkzC,YAAAA,OAAO,GAAG7C,OAAV,CAAA;CACH,WAAA;;CACDpqC,UAAAA,MAAM,GAAGitC,OAAO,CAAC/qC,GAAR,CAAY,UAAUwN,CAAV,EAAa;aAAE,OAAO9V,CAAC,CAAC8V,CAAD,CAAR,CAAA;CAAc,WAAzC,CAAT,CAAA;CACH,SAAA;;CAED,QAAA,IAAIm6B,QAAQ,CAACrD,GAAD,CAAZ,EAAmB;CACfxmC,UAAAA,MAAM,GAAGA,MAAM,CAACkC,GAAP,CAAW,UAAUjI,CAAV,EAAa;CAAE,YAAA,OAAOA,CAAC,CAACusC,GAAD,CAAD,EAAP,CAAA;CAAkB,WAA5C,CAAT,CAAA;CACH,SAAA;;CACD,QAAA,OAAOxmC,MAAP,CAAA;QAhCJ,CAAA;;CAmCApG,MAAAA,CAAC,CAACwzC,KAAF,GAAU,UAASnzC,CAAT,EAAY;SAClB,IAAIA,CAAC,IAAI,IAAT,EAAe;CACX6wC,UAAAA,SAAS,GAAG7wC,CAAZ,CAAA;CACA,UAAA,OAAOL,CAAP,CAAA;CACH,SAHD,MAGO;CACH,UAAA,OAAOkxC,SAAP,CAAA;CACH,SAAA;QANL,CAAA;;CASAlxC,MAAAA,CAAC,CAACyzC,KAAF,GAAU,UAASxzC,CAAT,EAAY;SAClB,IAAIA,CAAC,IAAI,IAAT,EAAe;CACXkxC,UAAAA,MAAM,GAAGlxC,CAAT,CAAA;CACA,UAAA,OAAOD,CAAP,CAAA;CACH,SAHD,MAGO;CACH,UAAA,OAAOmxC,MAAP,CAAA;CACH,SAAA;QANL,CAAA;;CASAnxC,MAAAA,CAAC,CAAC0zC,MAAF,GAAW,UAAS5zC,CAAT,EAAY;SACnB,IAAIA,CAAC,IAAI,IAAT,EAAe;CACXwwC,UAAAA,MAAM,GAAGL,QAAQ,CAACnwC,CAAD,CAAjB,CAAA;CACA,UAAA,OAAOE,CAAP,CAAA;CACH,SAHD,MAGO;CACH,UAAA,OAAOswC,MAAP,CAAA;CACH,SAAA;QANL,CAAA;;CASA,MAAA,OAAOtwC,CAAP,CAAA;MA3VJ,CAAA;;CA8VA,IAAA,SAASozC,SAAT,CAAmBO,IAAnB,EAAyBC,KAAzB,EAAgCC,SAAhC,EAA2C;OACzC,IAAIvB,KAAK,GAAG,EAAZ,CAAA;CACA,MAAA,IAAIwB,SAAS,GAAGH,IAAI,GAAGC,KAAvB,CAAA;CACA,MAAA,IAAIN,GAAG,GAAG,CAACO,SAAD,GAAaD,KAAb,GAAqBE,SAAS,GAAGF,KAAK,GAAG,CAAX,GAAeA,KAAK,GAAG,CAA/D,CAAA;;OACA,KAAK,IAAIzzC,CAAC,GAAGwzC,IAAb,EAAmBG,SAAS,GAAG3zC,CAAC,GAAGmzC,GAAP,GAAanzC,CAAC,GAAGmzC,GAA7C,EAAkDQ,SAAS,GAAG3zC,CAAC,EAAJ,GAASA,CAAC,EAArE,EAAyE;SACvEmyC,KAAK,CAAC/rC,IAAN,CAAWpG,CAAX,CAAA,CAAA;CACD,OAAA;;CACD,MAAA,OAAOmyC,KAAP,CAAA;CACD,KAjwFiB;CAowFtB;CACA;CAEA;;;KACI,IAAIyB,OAAO,GAAGnnB,OAAd,CAAA;CAEA,IAAA,IAAIonB,OAAO,GAAG5D,OAAd,CA1wFkB;;CA6wFlB,IAAA,IAAI6D,SAAS,GAAG,UAAStxC,CAAT,EAAY;CACxB,MAAA,IAAIoK,GAAG,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAV,CAAA;;OACA,KAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,CAApB,EAAuBxC,CAAC,EAAxB,EAA4B;CACxB,QAAA,IAAI+zC,MAAM,GAAG,CAAC,CAAD,CAAb,CAAA;;CACA,QAAA,KAAK,IAAI9zC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI2M,GAAG,CAACvO,MAAzB,EAAiC4B,CAAC,EAAlC,EAAsC;CAClC8zC,UAAAA,MAAM,CAAC9zC,CAAD,CAAN,GAAY,CAAC2M,GAAG,CAAC3M,CAAD,CAAH,IAAU,CAAX,IAAgB2M,GAAG,CAAC3M,CAAC,GAAG,CAAL,CAA/B,CAAA;CACH,SAAA;;CACD2M,QAAAA,GAAG,GAAGmnC,MAAN,CAAA;CACH,OAAA;;CACD,MAAA,OAAOnnC,GAAP,CAAA;MATJ,CAAA;;CAYA,IAAA,IAAIonC,MAAM,GAAG,UAAS7E,MAAT,EAAiB;CAC1B,MAAA,IAAIjgB,MAAJ,EAAYiD,QAAZ,EAAsBC,QAAtB,CAAA;CAEA,MAAA,IAAI6hB,CAAJ,EAAOC,IAAP,EAAaC,IAAb,EAAmBC,IAAnB,CAAA;CACAjF,MAAAA,MAAM,GAAGA,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;CAAE,QAAA,OAAO,IAAI0zC,OAAJ,CAAY1zC,CAAZ,CAAP,CAAA;CAAwB,OAAlD,CAAT,CAAA;;CACA,MAAA,IAAIivC,MAAM,CAAC9wC,MAAP,KAAkB,CAAtB,EAAyB;CACjC;CACa6wB,QAAAA,MAAM,GAAGigB,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;WAAE,OAAOA,CAAC,CAAC24B,GAAF,EAAP,CAAA;CAAiB,SAA3C,CAAT,EAAuDqb,IAAI,GAAGhlB,MAAM,CAAC,CAAD,CAApE,EAAyEilB,IAAI,GAAGjlB,MAAM,CAAC,CAAD,CAAvF,CAAA;;SACA+kB,CAAC,GAAG,UAAS9vB,CAAT,EAAY;CACZ,UAAA,IAAI0U,GAAG,GAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAU1wB,CAAAA,GAAV,CAAc,UAAUnI,CAAV,EAAa;CAAE,YAAA,OAAOk0C,IAAI,CAACl0C,CAAD,CAAJ,GAAWmkB,CAAC,IAAIgwB,IAAI,CAACn0C,CAAD,CAAJ,GAAUk0C,IAAI,CAACl0C,CAAD,CAAlB,CAAnB,CAAA;CAA6C,WAA1E,CAAX,CAAA;CACA,UAAA,OAAO,IAAI4zC,OAAJ,CAAY/a,GAAZ,EAAiB,KAAjB,CAAP,CAAA;UAFJ,CAAA;CAIH,OAPD,MAOO,IAAIsW,MAAM,CAAC9wC,MAAP,KAAkB,CAAtB,EAAyB;CACxC;CACa8zB,QAAAA,QAAQ,GAAGgd,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;WAAE,OAAOA,CAAC,CAAC24B,GAAF,EAAP,CAAA;UAA1B,CAAX,EAAyDqb,IAAI,GAAG/hB,QAAQ,CAAC,CAAD,CAAxE,EAA6EgiB,IAAI,GAAGhiB,QAAQ,CAAC,CAAD,CAA5F,EAAiGiiB,IAAI,GAAGjiB,QAAQ,CAAC,CAAD,CAAjH,CAAA;;SACA8hB,CAAC,GAAG,UAAS9vB,CAAT,EAAY;CACZ,UAAA,IAAI0U,GAAG,GAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAU1wB,CAAAA,GAAV,CAAc,UAAUnI,CAAV,EAAa;CAAE,YAAA,OAAQ,CAAC,CAAA,GAAEmkB,CAAH,KAAO,CAAEA,GAAAA,CAAT,CAAc+vB,GAAAA,IAAI,CAACl0C,CAAD,CAAnB,GAA2B,KAAK,CAAEmkB,GAAAA,CAAP,CAAYA,GAAAA,CAAZ,GAAgBgwB,IAAI,CAACn0C,CAAD,CAA/C,GAAuDmkB,CAAC,GAAGA,CAAJ,GAAQiwB,IAAI,CAACp0C,CAAD,CAA1E,CAAA;CAAiF,WAA9G,CAAX,CAAA;CACA,UAAA,OAAO,IAAI4zC,OAAJ,CAAY/a,GAAZ,EAAiB,KAAjB,CAAP,CAAA;UAFJ,CAAA;CAIH,OAPM,MAOA,IAAIsW,MAAM,CAAC9wC,MAAP,KAAkB,CAAtB,EAAyB;CACxC;CACY,QAAA,IAAIg2C,IAAJ,CAAA;CACCjiB,QAAAA,QAAQ,GAAG+c,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;WAAE,OAAOA,CAAC,CAAC24B,GAAF,EAAP,CAAA;CAAiB,SAA3C,CAAX,EAAyDqb,IAAI,GAAG9hB,QAAQ,CAAC,CAAD,CAAxE,EAA6E+hB,IAAI,GAAG/hB,QAAQ,CAAC,CAAD,CAA5F,EAAiGgiB,IAAI,GAAGhiB,QAAQ,CAAC,CAAD,CAAhH,EAAqHiiB,IAAI,GAAGjiB,QAAQ,CAAC,CAAD,CAArI,CAAA;;SACA6hB,CAAC,GAAG,UAAS9vB,CAAT,EAAY;CACZ,UAAA,IAAI0U,GAAG,GAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAU1wB,CAAAA,GAAV,CAAc,UAAUnI,CAAV,EAAa;aAAE,OAAQ,CAAC,IAAEmkB,CAAH,KAAO,IAAEA,CAAT,CAAA,IAAa,CAAEA,GAAAA,CAAf,CAAoB+vB,GAAAA,IAAI,CAACl0C,CAAD,CAAzB,GAAiC,CAAA,IAAK,CAAEmkB,GAAAA,CAAP,KAAa,CAAEA,GAAAA,CAAf,CAAoBA,GAAAA,CAApB,GAAwBgwB,IAAI,CAACn0C,CAAD,CAA7D,GAAqE,CAAA,IAAK,CAAEmkB,GAAAA,CAAP,IAAYA,CAAZ,GAAgBA,CAAhB,GAAoBiwB,IAAI,CAACp0C,CAAD,CAA7F,GAAqGmkB,CAAC,GAACA,CAAF,GAAIA,CAAJ,GAAQkwB,IAAI,CAACr0C,CAAD,CAAxH,CAAA;CAA+H,WAA5J,CAAX,CAAA;CACA,UAAA,OAAO,IAAI4zC,OAAJ,CAAY/a,GAAZ,EAAiB,KAAjB,CAAP,CAAA;UAFJ,CAAA;CAIH,OARM,MAQA,IAAIsW,MAAM,CAAC9wC,MAAP,IAAiB,CAArB,EAAwB;CACvC;CACY,QAAA,IAAIi2C,IAAJ,EAAU1nC,GAAV,EAAepK,CAAf,CAAA;CACA8xC,QAAAA,IAAI,GAAGnF,MAAM,CAAChnC,GAAP,CAAW,UAAUjI,CAAV,EAAa;WAAE,OAAOA,CAAC,CAAC24B,GAAF,EAAP,CAAA;CAAiB,SAA3C,CAAP,CAAA;CACAr2B,QAAAA,CAAC,GAAG2sC,MAAM,CAAC9wC,MAAP,GAAgB,CAApB,CAAA;CACAuO,QAAAA,GAAG,GAAGknC,SAAS,CAACtxC,CAAD,CAAf,CAAA;;SACAyxC,CAAC,GAAG,UAAU9vB,CAAV,EAAa;WACb,IAAIiP,CAAC,GAAG,CAAA,GAAIjP,CAAZ,CAAA;CACA,UAAA,IAAI0U,GAAG,GAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAU1wB,CAAAA,GAAV,CAAc,UAAUnI,CAAV,EAAa;aAAE,OAAOs0C,IAAI,CAACprC,MAAL,CAAY,UAAUsM,GAAV,EAAe++B,EAAf,EAAmBt0C,CAAnB,EAAsB;CAAE,cAAA,OAAQuV,GAAG,GAAG5I,GAAG,CAAC3M,CAAD,CAAH,GAASjB,IAAI,CAAC+U,GAAL,CAAUqf,CAAV,EAAc5wB,CAAC,GAAGvC,CAAlB,CAAT,GAAkCjB,IAAI,CAAC+U,GAAL,CAAUoQ,CAAV,EAAalkB,CAAb,CAAlC,GAAqDs0C,EAAE,CAACv0C,CAAD,CAArE,CAAA;cAApC,EAAkH,CAAlH,CAAP,CAAA;CAA8H,WAA3J,CAAX,CAAA;CACA,UAAA,OAAO,IAAI4zC,OAAJ,CAAY/a,GAAZ,EAAiB,KAAjB,CAAP,CAAA;UAHJ,CAAA;CAKH,OAXM,MAWA;CACH,QAAA,MAAM,IAAIryB,UAAJ,CAAe,iDAAf,CAAN,CAAA;CACH,OAAA;;CACD,MAAA,OAAOytC,CAAP,CAAA;MAzCJ,CAAA;;CA4CA,IAAA,IAAIO,QAAQ,GAAG,UAAUrF,MAAV,EAAkB;CAC7B,MAAA,IAAItvC,CAAC,GAAGm0C,MAAM,CAAC7E,MAAD,CAAd,CAAA;;OACAtvC,CAAC,CAAC8W,KAAF,GAAU,YAAY;SAAE,OAAOk9B,OAAO,CAACh0C,CAAD,CAAd,CAAA;QAAxB,CAAA;;CACA,MAAA,OAAOA,CAAP,CAAA;MAHJ,CAAA;CAMJ;CACA;CACA;CACA;;;KAEI,IAAI40C,QAAQ,GAAG5nB,QAAf,CAAA;;KAEA,IAAI6nB,KAAK,GAAG,UAAUC,MAAV,EAAkBC,GAAlB,EAAuBzoB,IAAvB,EAA6B;CACrC,MAAA,IAAI,CAACuoB,KAAK,CAACvoB,IAAD,CAAV,EAAkB;CACd,QAAA,MAAM,IAAIjtB,KAAJ,CAAU,qBAAA,GAAwBitB,IAAlC,CAAN,CAAA;CACH,OAAA;;OACD,OAAOuoB,KAAK,CAACvoB,IAAD,CAAL,CAAYwoB,MAAZ,EAAoBC,GAApB,CAAP,CAAA;MAJJ,CAAA;;CAOA,IAAA,IAAIC,OAAO,GAAG,UAAUh1C,CAAV,EAAa;CAAE,MAAA,OAAO,UAAU80C,MAAV,EAAiBC,GAAjB,EAAsB;SAClD,IAAIE,EAAE,GAAGL,QAAQ,CAACG,GAAD,CAAR,CAAc7qB,GAAd,EAAT,CAAA;SACA,IAAI5J,EAAE,GAAGs0B,QAAQ,CAACE,MAAD,CAAR,CAAiB5qB,GAAjB,EAAT,CAAA;SACA,OAAO0qB,QAAQ,CAAC1qB,GAAT,CAAalqB,CAAC,CAACi1C,EAAD,EAAK30B,EAAL,CAAd,CAAP,CAAA;QAHqB,CAAA;MAA7B,CAAA;;CAMA,IAAA,IAAI40B,IAAI,GAAG,UAAUl1C,CAAV,EAAa;CAAE,MAAA,OAAO,UAAUi1C,EAAV,EAAc30B,EAAd,EAAkB;SAC3C,IAAIssB,GAAG,GAAG,EAAV,CAAA;CACAA,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS5sC,CAAC,CAACi1C,EAAE,CAAC,CAAD,CAAH,EAAQ30B,EAAE,CAAC,CAAD,CAAV,CAAV,CAAA;CACAssB,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS5sC,CAAC,CAACi1C,EAAE,CAAC,CAAD,CAAH,EAAQ30B,EAAE,CAAC,CAAD,CAAV,CAAV,CAAA;CACAssB,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS5sC,CAAC,CAACi1C,EAAE,CAAC,CAAD,CAAH,EAAQ30B,EAAE,CAAC,CAAD,CAAV,CAAV,CAAA;CACA,QAAA,OAAOssB,GAAP,CAAA;QALkB,CAAA;MAA1B,CAAA;;CAQA,IAAA,IAAIuI,MAAM,GAAG,UAAUt1C,CAAV,EAAa;CAAE,MAAA,OAAOA,CAAP,CAAA;MAA5B,CAAA;;CACA,IAAA,IAAIyQ,QAAQ,GAAG,UAAUzQ,CAAV,EAAYS,CAAZ,EAAe;CAAE,MAAA,OAAOT,CAAC,GAAGS,CAAJ,GAAQ,GAAf,CAAA;MAAhC,CAAA;;CACA,IAAA,IAAI6pC,MAAM,GAAG,UAAUtqC,CAAV,EAAYS,CAAZ,EAAe;CAAE,MAAA,OAAOT,CAAC,GAAGS,CAAJ,GAAQA,CAAR,GAAYT,CAAnB,CAAA;MAA9B,CAAA;;CACA,IAAA,IAAIu1C,OAAO,GAAG,UAAUv1C,CAAV,EAAYS,CAAZ,EAAe;CAAE,MAAA,OAAOT,CAAC,GAAGS,CAAJ,GAAQT,CAAR,GAAYS,CAAnB,CAAA;MAA/B,CAAA;;CACA,IAAA,IAAI+0C,MAAM,GAAG,UAAUx1C,CAAV,EAAYS,CAAZ,EAAe;CAAE,MAAA,OAAO,GAAO,IAAA,CAAA,GAAI,CAAC,CAAA,GAAET,CAAC,GAAC,GAAL,KAAa,CAAES,GAAAA,CAAC,GAAC,GAAjB,CAAX,CAAP,CAAA;MAA9B,CAAA;;CACA,IAAA,IAAIg1C,OAAO,GAAG,UAAUz1C,CAAV,EAAYS,CAAZ,EAAe;OAAE,OAAOA,CAAC,GAAG,GAAJ,GAAU,CAAA,GAAIT,CAAJ,GAAQS,CAAR,GAAY,GAAtB,GAA4B,GAAA,IAAO,IAAI,CAAK,IAAA,CAAA,GAAIT,CAAC,GAAG,GAAb,CAAA,IAAuB,IAAIS,CAAC,GAAG,GAA/B,CAAX,CAAnC,CAAA;MAA/B,CAAA;;CACA,IAAA,IAAIi1C,IAAI,GAAG,UAAU11C,CAAV,EAAYS,CAAZ,EAAe;CAAE,MAAA,OAAO,GAAO,IAAA,CAAA,GAAI,CAAC,CAAA,GAAIA,CAAC,GAAG,GAAT,KAAiBT,CAAC,GAAC,GAAnB,CAAX,CAAP,CAAA;MAA5B,CAAA;;CACA,IAAA,IAAI21C,KAAK,GAAG,UAAU31C,CAAV,EAAYS,CAAZ,EAAe;OACvB,IAAIT,CAAC,KAAK,GAAV,EAAe;CAAE,QAAA,OAAO,GAAP,CAAA;CAAa,OAAA;;OAC9BA,CAAC,GAAG,GAAOS,IAAAA,CAAC,GAAG,GAAX,KAAmB,CAAIT,GAAAA,CAAC,GAAG,GAA3B,CAAJ,CAAA;CACA,MAAA,OAAOA,CAAC,GAAG,GAAJ,GAAU,GAAV,GAAgBA,CAAvB,CAAA;CACH,KAJD,CA92FkB;CAq3FtB;;;KAEIg1C,KAAK,CAACM,MAAN,GAAeH,OAAO,CAACE,IAAI,CAACC,MAAD,CAAL,CAAtB,CAAA;KACAN,KAAK,CAACvkC,QAAN,GAAiB0kC,OAAO,CAACE,IAAI,CAAC5kC,QAAD,CAAL,CAAxB,CAAA;KACAukC,KAAK,CAACQ,MAAN,GAAeL,OAAO,CAACE,IAAI,CAACG,MAAD,CAAL,CAAtB,CAAA;KACAR,KAAK,CAACS,OAAN,GAAgBN,OAAO,CAACE,IAAI,CAACI,OAAD,CAAL,CAAvB,CAAA;KACAT,KAAK,CAAC1K,MAAN,GAAe6K,OAAO,CAACE,IAAI,CAAC/K,MAAD,CAAL,CAAtB,CAAA;KACA0K,KAAK,CAACO,OAAN,GAAgBJ,OAAO,CAACE,IAAI,CAACE,OAAD,CAAL,CAAvB,CAAA;KACAP,KAAK,CAACW,KAAN,GAAcR,OAAO,CAACE,IAAI,CAACM,KAAD,CAAL,CAArB,CAAA;KACAX,KAAK,CAACU,IAAN,GAAaP,OAAO,CAACE,IAAI,CAACK,IAAD,CAAL,CAApB,CA93FkB;;CAi4FlB,IAAA,IAAIE,OAAO,GAAGZ,KAAd,CAj4FkB;CAo4FtB;CACA;;CAEI,IAAA,IAAIa,MAAM,GAAGvqB,KAAK,CAAC5O,IAAnB,CAAA;CACA,IAAA,IAAI6O,QAAQ,GAAGD,KAAK,CAACC,QAArB,CAAA;CACA,IAAA,IAAIG,KAAK,GAAGJ,KAAK,CAACI,KAAlB,CAAA;CACA,IAAA,IAAIoqB,KAAK,GAAGx2C,IAAI,CAAC+U,GAAjB,CAAA;CACA,IAAA,IAAI0hC,KAAK,GAAGz2C,IAAI,CAAC0U,GAAjB,CAAA;CACA,IAAA,IAAIgiC,KAAK,GAAG12C,IAAI,CAACgU,GAAjB,CAAA;KACA,IAAI2iC,QAAQ,GAAG9oB,QAAf,CAAA;;CAEA,IAAA,IAAI+oB,SAAS,GAAG,UAAShsC,KAAT,EAAgBisC,SAAhB,EAA2B9H,GAA3B,EAAgCuF,KAAhC,EAAuCwC,SAAvC,EAAkD;CAC9D,MAAA,IAAKlsC,KAAK,KAAK,KAAK,CAApB,EAAwBA,KAAK,GAAC,GAAN,CAAA;OACxB,IAAKisC,SAAS,KAAK,KAAK,CAAxB,EAA4BA,SAAS,GAAC,CAAC,GAAX,CAAA;CAC5B,MAAA,IAAK9H,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,CAAJ,CAAA;CACtB,MAAA,IAAKuF,KAAK,KAAK,KAAK,CAApB,EAAwBA,KAAK,GAAC,CAAN,CAAA;OACxB,IAAKwC,SAAS,KAAK,KAAK,CAAxB,EAA4BA,SAAS,GAAC,CAAC,CAAD,EAAG,CAAH,CAAV,CAAA;OAE5B,IAAI7H,EAAE,GAAG,CAAT;CAAA,UAAY8H,EAAZ,CAAA;;CACA,MAAA,IAAIR,MAAM,CAACO,SAAD,CAAN,KAAsB,OAA1B,EAAmC;SAC/BC,EAAE,GAAGD,SAAS,CAAC,CAAD,CAAT,GAAeA,SAAS,CAAC,CAAD,CAA7B,CAAA;CACH,OAFD,MAEO;CACHC,QAAAA,EAAE,GAAG,CAAL,CAAA;CACAD,QAAAA,SAAS,GAAG,CAACA,SAAD,EAAYA,SAAZ,CAAZ,CAAA;CACH,OAAA;;CAED,MAAA,IAAIj2C,CAAC,GAAG,UAASm2C,KAAT,EAAgB;CACpB,QAAA,IAAIt2C,CAAC,GAAG0rB,KAAK,IAAK,CAACxhB,KAAK,GAAC,GAAP,IAAY,GAAb,GAAqBisC,SAAS,GAAGG,KAArC,CAAb,CAAA;CACA,QAAA,IAAI/9B,CAAC,GAAGu9B,KAAK,CAACM,SAAS,CAAC,CAAD,CAAT,GAAgBC,EAAE,GAAGC,KAAtB,EAA8B1C,KAA9B,CAAb,CAAA;CACA,QAAA,IAAIvzC,CAAC,GAAGkuC,EAAE,KAAK,CAAP,GAAWF,GAAG,CAAC,CAAD,CAAH,GAAUiI,KAAK,GAAG/H,EAA7B,GAAmCF,GAA3C,CAAA;SACA,IAAIkI,GAAG,GAAIl2C,CAAC,GAAGkY,CAAJ,IAAS,CAAEA,GAAAA,CAAX,CAAD,GAAkB,CAA5B,CAAA;CACA,QAAA,IAAIi+B,KAAK,GAAGR,KAAK,CAACh2C,CAAD,CAAjB,CAAA;CACA,QAAA,IAAIy2C,KAAK,GAAGV,KAAK,CAAC/1C,CAAD,CAAjB,CAAA;CACA,QAAA,IAAIghB,CAAC,GAAGzI,CAAC,GAAIg+B,GAAG,IAAK,CAAC,OAAD,GAAWC,KAAZ,GAAsB,OAAA,GAASC,KAAnC,CAAhB,CAAA;CACA,QAAA,IAAIr2C,CAAC,GAAGmY,CAAC,GAAIg+B,GAAG,IAAK,CAAC,OAAD,GAAWC,KAAZ,GAAsB,OAAA,GAASC,KAAnC,CAAhB,CAAA;SACA,IAAIh2C,CAAC,GAAG8X,CAAC,GAAIg+B,GAAG,IAAI,CAAC,OAAD,GAAWC,KAAf,CAAhB,CAAA;SACA,OAAOP,QAAQ,CAAC1qB,QAAQ,CAAC,CAACvK,CAAC,GAAC,GAAH,EAAO5gB,CAAC,GAAC,GAAT,EAAaK,CAAC,GAAC,GAAf,EAAmB,CAAnB,CAAD,CAAT,CAAf,CAAA;QAVJ,CAAA;;CAaAN,MAAAA,CAAC,CAAC+J,KAAF,GAAU,UAASgT,CAAT,EAAY;SAClB,IAAKA,CAAC,IAAI,IAAV,EAAiB;CAAE,UAAA,OAAOhT,KAAP,CAAA;CAAe,SAAA;;CAClCA,QAAAA,KAAK,GAAGgT,CAAR,CAAA;CACA,QAAA,OAAO/c,CAAP,CAAA;QAHJ,CAAA;;CAMAA,MAAAA,CAAC,CAACg2C,SAAF,GAAc,UAASn1B,CAAT,EAAY;SACtB,IAAKA,CAAC,IAAI,IAAV,EAAiB;CAAE,UAAA,OAAOm1B,SAAP,CAAA;CAAmB,SAAA;;CACtCA,QAAAA,SAAS,GAAGn1B,CAAZ,CAAA;CACA,QAAA,OAAO7gB,CAAP,CAAA;QAHJ,CAAA;;CAMAA,MAAAA,CAAC,CAACyzC,KAAF,GAAU,UAASxzC,CAAT,EAAY;SAClB,IAAKA,CAAC,IAAI,IAAV,EAAiB;CAAE,UAAA,OAAOwzC,KAAP,CAAA;CAAe,SAAA;;CAClCA,QAAAA,KAAK,GAAGxzC,CAAR,CAAA;CACA,QAAA,OAAOD,CAAP,CAAA;QAHJ,CAAA;;CAMAA,MAAAA,CAAC,CAACkuC,GAAF,GAAQ,UAAShuC,CAAT,EAAY;SAChB,IAAKA,CAAC,IAAI,IAAV,EAAiB;CAAE,UAAA,OAAOguC,GAAP,CAAA;CAAa,SAAA;;CAChCA,QAAAA,GAAG,GAAGhuC,CAAN,CAAA;;CACA,QAAA,IAAIw1C,MAAM,CAACxH,GAAD,CAAN,KAAgB,OAApB,EAA6B;WACzBE,EAAE,GAAGF,GAAG,CAAC,CAAD,CAAH,GAASA,GAAG,CAAC,CAAD,CAAjB,CAAA;;WACA,IAAIE,EAAE,KAAK,CAAX,EAAc;CAAEF,YAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAT,CAAA;CAAe,WAAA;CAClC,SAHD,MAGO;CACHE,UAAAA,EAAE,GAAG,CAAL,CAAA;CACH,SAAA;;CACD,QAAA,OAAOpuC,CAAP,CAAA;QATJ,CAAA;;CAYAA,MAAAA,CAAC,CAACi2C,SAAF,GAAc,UAAS/1C,CAAT,EAAY;SACtB,IAAKA,CAAC,IAAI,IAAV,EAAiB;CAAE,UAAA,OAAO+1C,SAAP,CAAA;CAAmB,SAAA;;CACtC,QAAA,IAAIP,MAAM,CAACx1C,CAAD,CAAN,KAAc,OAAlB,EAA2B;CACvB+1C,UAAAA,SAAS,GAAG/1C,CAAZ,CAAA;WACAg2C,EAAE,GAAGh2C,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAb,CAAA;CACH,SAHD,MAGO;CACH+1C,UAAAA,SAAS,GAAG,CAAC/1C,CAAD,EAAGA,CAAH,CAAZ,CAAA;CACAg2C,UAAAA,EAAE,GAAG,CAAL,CAAA;CACH,SAAA;;CACD,QAAA,OAAOl2C,CAAP,CAAA;QATJ,CAAA;;OAYAA,CAAC,CAAC8W,KAAF,GAAU,YAAY;CAAE,QAAA,OAAOg/B,QAAQ,CAACh/B,KAAT,CAAe9W,CAAf,CAAP,CAAA;QAAxB,CAAA;;OAEAA,CAAC,CAACkuC,GAAF,CAAMA,GAAN,CAAA,CAAA;CAEA,MAAA,OAAOluC,CAAP,CAAA;MA1EJ,CAAA;;KA6EA,IAAIu2C,OAAO,GAAG3pB,OAAd,CAAA;KACA,IAAI4pB,MAAM,GAAG,kBAAb,CAAA;CAEA,IAAA,IAAIC,OAAO,GAAGt3C,IAAI,CAACoU,KAAnB,CAAA;CACA,IAAA,IAAIwE,MAAM,GAAG5Y,IAAI,CAAC4Y,MAAlB,CAAA;;KAEA,IAAI2+B,QAAQ,GAAG,YAAY;OACvB,IAAIC,IAAI,GAAG,GAAX,CAAA;;OACA,KAAK,IAAIx2C,CAAC,GAAC,CAAX,EAAcA,CAAC,GAAC,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;SACpBw2C,IAAI,IAAIH,MAAM,CAAC7J,MAAP,CAAc8J,OAAO,CAAC1+B,MAAM,EAAA,GAAK,EAAZ,CAArB,CAAR,CAAA;CACH,OAAA;;CACD,MAAA,OAAO,IAAIw+B,OAAJ,CAAYI,IAAZ,EAAkB,KAAlB,CAAP,CAAA;MALJ,CAAA;;KAQA,IAAIp6B,IAAI,GAAGiO,MAAX,CAAA;CACA,IAAA,IAAIprB,GAAG,GAAGD,IAAI,CAACC,GAAf,CAAA;CACA,IAAA,IAAIw3C,KAAK,GAAGz3C,IAAI,CAAC+U,GAAjB,CAAA;CACA,IAAA,IAAIX,KAAK,GAAGpU,IAAI,CAACoU,KAAjB,CAAA;CACA,IAAA,IAAIsjC,KAAK,GAAG13C,IAAI,CAACqE,GAAjB,CAAA;;CAGA,IAAA,IAAIuuC,OAAO,GAAG,UAAUzqC,IAAV,EAAgBwvC,GAAhB,EAAqB;CAC/B,MAAA,IAAKA,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,IAAJ,CAAA;CAEtB,MAAA,IAAIj2B,CAAC,GAAG;SACJ5e,GAAG,EAAEN,MAAM,CAACsI,SADR;CAEJ/H,QAAAA,GAAG,EAAEP,MAAM,CAACsI,SAAP,GAAiB,CAAC,CAFnB;CAGJ0L,QAAAA,GAAG,EAAE,CAHD;CAIJ7P,QAAAA,MAAM,EAAE,EAJJ;CAKJ+e,QAAAA,KAAK,EAAE,CAAA;QALX,CAAA;;CAOA,MAAA,IAAItI,IAAI,CAACjV,IAAD,CAAJ,KAAe,QAAnB,EAA6B;CACzBA,QAAAA,IAAI,GAAG/H,MAAM,CAACuG,MAAP,CAAcwB,IAAd,CAAP,CAAA;CACH,OAAA;;CACDA,MAAAA,IAAI,CAACkB,OAAL,CAAa,UAAUopC,GAAV,EAAe;SACxB,IAAIkF,GAAG,IAAIv6B,IAAI,CAACq1B,GAAD,CAAJ,KAAc,QAAzB,EAAmC;CAAEA,UAAAA,GAAG,GAAGA,GAAG,CAACkF,GAAD,CAAT,CAAA;CAAiB,SAAA;;CACtD,QAAA,IAAIlF,GAAG,KAAKnwC,SAAR,IAAqBmwC,GAAG,KAAK,IAA7B,IAAqC,CAACzqC,KAAK,CAACyqC,GAAD,CAA/C,EAAsD;CAClD/wB,UAAAA,CAAC,CAAC/a,MAAF,CAASS,IAAT,CAAcqrC,GAAd,CAAA,CAAA;WACA/wB,CAAC,CAAClL,GAAF,IAASi8B,GAAT,CAAA;;CACA,UAAA,IAAIA,GAAG,GAAG/wB,CAAC,CAAC5e,GAAZ,EAAiB;aAAE4e,CAAC,CAAC5e,GAAF,GAAQ2vC,GAAR,CAAA;CAAc,WAAA;;CACjC,UAAA,IAAIA,GAAG,GAAG/wB,CAAC,CAAC3e,GAAZ,EAAiB;aAAE2e,CAAC,CAAC3e,GAAF,GAAQ0vC,GAAR,CAAA;CAAc,WAAA;;WACjC/wB,CAAC,CAACgE,KAAF,IAAW,CAAX,CAAA;CACH,SAAA;QARL,CAAA,CAAA;OAWAhE,CAAC,CAACoxB,MAAF,GAAW,CAACpxB,CAAC,CAAC5e,GAAH,EAAQ4e,CAAC,CAAC3e,GAAV,CAAX,CAAA;;CAEA2e,MAAAA,CAAC,CAACmxB,MAAF,GAAW,UAAU1lB,IAAV,EAAgB1d,GAAhB,EAAqB;CAAE,QAAA,OAAOojC,MAAM,CAACnxB,CAAD,EAAIyL,IAAJ,EAAU1d,GAAV,CAAb,CAAA;QAAlC,CAAA;;CAEA,MAAA,OAAOiS,CAAP,CAAA;MA5BJ,CAAA;;KAgCA,IAAImxB,MAAM,GAAG,UAAU1qC,IAAV,EAAgBglB,IAAhB,EAAsB1d,GAAtB,EAA2B;CACpC,MAAA,IAAK0d,IAAI,KAAK,KAAK,CAAnB,EAAuBA,IAAI,GAAC,OAAL,CAAA;CACvB,MAAA,IAAK1d,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAC,CAAJ,CAAA;;CAEtB,MAAA,IAAI2N,IAAI,CAACjV,IAAD,CAAJ,IAAc,OAAlB,EAA2B;CACvBA,QAAAA,IAAI,GAAGyqC,OAAO,CAACzqC,IAAD,CAAd,CAAA;CACH,OAAA;;CACD,MAAA,IAAIrF,GAAG,GAAGqF,IAAI,CAACrF,GAAf,CAAA;CACA,MAAA,IAAIC,GAAG,GAAGoF,IAAI,CAACpF,GAAf,CAAA;CACA,MAAA,IAAI4D,MAAM,GAAGwB,IAAI,CAACxB,MAAL,CAAYjE,IAAZ,CAAiB,UAAUhC,CAAV,EAAYS,CAAZ,EAAe;SAAE,OAAOT,CAAC,GAACS,CAAT,CAAA;CAAa,OAA/C,CAAb,CAAA;;OAEA,IAAIsO,GAAG,KAAK,CAAZ,EAAe;CAAE,QAAA,OAAO,CAAC3M,GAAD,EAAKC,GAAL,CAAP,CAAA;CAAmB,OAAA;;OAEpC,IAAI8vC,MAAM,GAAG,EAAb,CAAA;;OAEA,IAAI1lB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAqB,KAAA,GAAzB,EAA8B;CAAA;SAC1BgjB,MAAM,CAACzrC,IAAP,CAAYtE,GAAZ,CAAA,CAAA;SACA+vC,MAAM,CAACzrC,IAAP,CAAYrE,GAAZ,CAAA,CAAA;CACH,OAAA;;OAED,IAAIoqB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAqB,KAAA,GAAzB,EAA8B;CAAA;SAC1BgjB,MAAM,CAACzrC,IAAP,CAAYtE,GAAZ,CAAA,CAAA;;SACA,KAAK,IAAI9B,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACyO,GAAhB,EAAqBzO,CAAC,EAAtB,EAA0B;CACtB6xC,UAAAA,MAAM,CAACzrC,IAAP,CAAYtE,GAAG,GAAG9B,CAAC,GAACyO,GAAH,IAAS1M,GAAG,GAACD,GAAb,CAAjB,CAAA,CAAA;CACH,SAAA;;SACD+vC,MAAM,CAACzrC,IAAP,CAAYrE,GAAZ,CAAA,CAAA;QALJ,MAQK,IAAIoqB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAqB,KAAA,GAAzB,EAA8B;CAAA;SAC/B,IAAI/sB,GAAG,IAAI,CAAX,EAAc;CACV,UAAA,MAAM,IAAI5C,KAAJ,CAAU,qDAAV,CAAN,CAAA;CACH,SAAA;;SACD,IAAI03C,OAAO,GAAG53C,IAAI,CAAC63C,MAAL,GAAc53C,GAAG,CAAC6C,GAAD,CAA/B,CAAA;SACA,IAAIg1C,OAAO,GAAG93C,IAAI,CAAC63C,MAAL,GAAc53C,GAAG,CAAC8C,GAAD,CAA/B,CAAA;SACA8vC,MAAM,CAACzrC,IAAP,CAAYtE,GAAZ,CAAA,CAAA;;SACA,KAAK,IAAIqoB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC1b,GAApB,EAAyB0b,GAAG,EAA5B,EAAgC;CAC5B0nB,UAAAA,MAAM,CAACzrC,IAAP,CAAYqwC,KAAK,CAAC,EAAD,EAAKG,OAAO,GAAKzsB,GAAG,GAAC1b,GAAL,IAAaqoC,OAAO,GAAGF,OAAvB,CAAhB,CAAjB,CAAA,CAAA;CACH,SAAA;;SACD/E,MAAM,CAACzrC,IAAP,CAAYrE,GAAZ,CAAA,CAAA;QAVC,MAaA,IAAIoqB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAqB,KAAA,GAAzB,EAA8B;CAAA;SAC/BgjB,MAAM,CAACzrC,IAAP,CAAYtE,GAAZ,CAAA,CAAA;;SACA,KAAK,IAAI0uB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC/hB,GAApB,EAAyB+hB,GAAG,EAA5B,EAAgC;WAC5B,IAAI3W,CAAC,GAAI,CAAClU,MAAM,CAACtH,MAAP,GAAc,CAAf,IAAoBmyB,GAArB,GAA0B/hB,GAAlC,CAAA;CACA,UAAA,IAAIsoC,EAAE,GAAG3jC,KAAK,CAACyG,CAAD,CAAd,CAAA;;WACA,IAAIk9B,EAAE,KAAKl9B,CAAX,EAAc;CACVg4B,YAAAA,MAAM,CAACzrC,IAAP,CAAYT,MAAM,CAACoxC,EAAD,CAAlB,CAAA,CAAA;CACH,WAFD,MAEO;CAAA;CACH,YAAA,IAAIC,EAAE,GAAGn9B,CAAC,GAAGk9B,EAAb,CAAA;CACAlF,YAAAA,MAAM,CAACzrC,IAAP,CAAaT,MAAM,CAACoxC,EAAD,CAAN,IAAY,CAAA,GAAEC,EAAd,CAAD,GAAuBrxC,MAAM,CAACoxC,EAAE,GAAC,CAAJ,CAAN,GAAaC,EAAhD,CAAA,CAAA;CACH,WAAA;CACJ,SAAA;;SACDnF,MAAM,CAACzrC,IAAP,CAAYrE,GAAZ,CAAA,CAAA;QAZC,MAgBA,IAAIoqB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,EAAc,CAAd,CAAqB,KAAA,GAAzB,EAA8B;CAAA;;CAC3C;CACA;CACA;CACA;CACA;CACY,QAAA,IAAIooB,OAAJ,CAAA;CACA,QAAA,IAAIz0C,CAAC,GAAGmD,MAAM,CAACtH,MAAf,CAAA;CACA,QAAA,IAAI64C,WAAW,GAAG,IAAIzvC,KAAJ,CAAUjF,CAAV,CAAlB,CAAA;CACA,QAAA,IAAI20C,YAAY,GAAG,IAAI1vC,KAAJ,CAAUgH,GAAV,CAAnB,CAAA;SACA,IAAIlB,MAAM,GAAG,IAAb,CAAA;SACA,IAAI6pC,QAAQ,GAAG,CAAf,CAAA;CACA,QAAA,IAAIC,SAAS,GAAG,IAAhB,CAZ+B;;CAe/BA,QAAAA,SAAS,GAAG,EAAZ,CAAA;SACAA,SAAS,CAACjxC,IAAV,CAAetE,GAAf,CAAA,CAAA;;SACA,KAAK,IAAI4uB,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACjiB,GAApB,EAAyBiiB,GAAG,EAA5B,EAAgC;CAC5B2mB,UAAAA,SAAS,CAACjxC,IAAV,CAAetE,GAAG,GAAK4uB,GAAG,GAACjiB,GAAL,IAAa1M,GAAG,GAACD,GAAjB,CAAtB,CAAA,CAAA;CACH,SAAA;;SACDu1C,SAAS,CAACjxC,IAAV,CAAerE,GAAf,CAAA,CAAA;;CAEA,QAAA,OAAOwL,MAAP,EAAe;CAC3B;WACgB,KAAK,IAAItN,CAAC,GAAC,CAAX,EAAcA,CAAC,GAACwO,GAAhB,EAAqBxO,CAAC,EAAtB,EAA0B;CACtBk3C,YAAAA,YAAY,CAACl3C,CAAD,CAAZ,GAAkB,CAAlB,CAAA;CACH,WAAA;;WACD,KAAK,IAAIq3C,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC90C,CAApB,EAAuB80C,GAAG,EAA1B,EAA8B;CAC1B,YAAA,IAAI/3C,KAAK,GAAGoG,MAAM,CAAC2xC,GAAD,CAAlB,CAAA;CACA,YAAA,IAAIC,OAAO,GAAG/1C,MAAM,CAACsI,SAArB,CAAA;aACA,IAAI0tC,IAAI,GAAI,KAAK,CAAjB,CAAA;;aACA,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAChpC,GAApB,EAAyBgpC,GAAG,EAA5B,EAAgC;eAC5B,IAAIC,IAAI,GAAGhB,KAAK,CAACW,SAAS,CAACI,GAAD,CAAT,GAAel4C,KAAhB,CAAhB,CAAA;;eACA,IAAIm4C,IAAI,GAAGH,OAAX,EAAoB;CAChBA,gBAAAA,OAAO,GAAGG,IAAV,CAAA;CACAF,gBAAAA,IAAI,GAAGC,GAAP,CAAA;CACH,eAAA;;eACDN,YAAY,CAACK,IAAD,CAAZ,EAAA,CAAA;CACAN,cAAAA,WAAW,CAACI,GAAD,CAAX,GAAmBE,IAAnB,CAAA;CACH,aAAA;CACJ,WAlBU;;;CAqBX,UAAA,IAAIG,YAAY,GAAG,IAAIlwC,KAAJ,CAAUgH,GAAV,CAAnB,CAAA;;WACA,KAAK,IAAImpC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACnpC,GAApB,EAAyBmpC,GAAG,EAA5B,EAAgC;CAC5BD,YAAAA,YAAY,CAACC,GAAD,CAAZ,GAAoB,IAApB,CAAA;CACH,WAAA;;WACD,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACr1C,CAApB,EAAuBq1C,GAAG,EAA1B,EAA8B;CAC1BZ,YAAAA,OAAO,GAAGC,WAAW,CAACW,GAAD,CAArB,CAAA;;CACA,YAAA,IAAIF,YAAY,CAACV,OAAD,CAAZ,KAA0B,IAA9B,EAAoC;CAChCU,cAAAA,YAAY,CAACV,OAAD,CAAZ,GAAwBtxC,MAAM,CAACkyC,GAAD,CAA9B,CAAA;CACH,aAFD,MAEO;CACHF,cAAAA,YAAY,CAACV,OAAD,CAAZ,IAAyBtxC,MAAM,CAACkyC,GAAD,CAA/B,CAAA;CACH,aAAA;CACJ,WAAA;;WACD,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACrpC,GAApB,EAAyBqpC,GAAG,EAA5B,EAAgC;aAC5BH,YAAY,CAACG,GAAD,CAAZ,IAAqB,IAAEX,YAAY,CAACW,GAAD,CAAnC,CAAA;CACH,WAnCU;;;CAsCXvqC,UAAAA,MAAM,GAAG,KAAT,CAAA;;WACA,KAAK,IAAIwqC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACtpC,GAApB,EAAyBspC,GAAG,EAA5B,EAAgC;aAC5B,IAAIJ,YAAY,CAACI,GAAD,CAAZ,KAAsBV,SAAS,CAACU,GAAD,CAAnC,EAA0C;CACtCxqC,cAAAA,MAAM,GAAG,IAAT,CAAA;CACA,cAAA,MAAA;CACH,aAAA;CACJ,WAAA;;CAED8pC,UAAAA,SAAS,GAAGM,YAAZ,CAAA;WACAP,QAAQ,EAAA,CAAA;;WAER,IAAIA,QAAQ,GAAG,GAAf,EAAoB;CAChB7pC,YAAAA,MAAM,GAAG,KAAT,CAAA;CACH,WAAA;CACJ,SA1E8B;CA6E3C;;;SACY,IAAIyqC,SAAS,GAAG,EAAhB,CAAA;;SACA,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAACxpC,GAApB,EAAyBwpC,GAAG,EAA5B,EAAgC;CAC5BD,UAAAA,SAAS,CAACC,GAAD,CAAT,GAAiB,EAAjB,CAAA;CACH,SAAA;;SACD,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC11C,CAApB,EAAuB01C,GAAG,EAA1B,EAA8B;CAC1BjB,UAAAA,OAAO,GAAGC,WAAW,CAACgB,GAAD,CAArB,CAAA;WACAF,SAAS,CAACf,OAAD,CAAT,CAAmB7wC,IAAnB,CAAwBT,MAAM,CAACuyC,GAAD,CAA9B,CAAA,CAAA;CACH,SAAA;;SACD,IAAIC,eAAe,GAAG,EAAtB,CAAA;;SACA,KAAK,IAAIC,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAC3pC,GAApB,EAAyB2pC,GAAG,EAA5B,EAAgC;WAC5BD,eAAe,CAAC/xC,IAAhB,CAAqB4xC,SAAS,CAACI,GAAD,CAAT,CAAe,CAAf,CAArB,CAAA,CAAA;CACAD,UAAAA,eAAe,CAAC/xC,IAAhB,CAAqB4xC,SAAS,CAACI,GAAD,CAAT,CAAeJ,SAAS,CAACI,GAAD,CAAT,CAAe/5C,MAAf,GAAsB,CAArC,CAArB,CAAA,CAAA;CACH,SAAA;;SACD85C,eAAe,GAAGA,eAAe,CAACz2C,IAAhB,CAAqB,UAAUhC,CAAV,EAAYS,CAAZ,EAAc;WAAE,OAAOT,CAAC,GAACS,CAAT,CAAA;CAAa,SAAlD,CAAlB,CAAA;CACA0xC,QAAAA,MAAM,CAACzrC,IAAP,CAAY+xC,eAAe,CAAC,CAAD,CAA3B,CAAA,CAAA;;CACA,QAAA,KAAK,IAAIE,GAAG,GAAC,CAAb,EAAgBA,GAAG,GAAGF,eAAe,CAAC95C,MAAtC,EAA8Cg6C,GAAG,IAAG,CAApD,EAAuD;CACnD,UAAA,IAAI1iC,CAAC,GAAGwiC,eAAe,CAACE,GAAD,CAAvB,CAAA;;CACA,UAAA,IAAI,CAACrxC,KAAK,CAAC2O,CAAD,CAAN,IAAck8B,MAAM,CAAC3iC,OAAP,CAAeyG,CAAf,CAAsB,KAAA,CAAC,CAAzC,EAA6C;aACzCk8B,MAAM,CAACzrC,IAAP,CAAYuP,CAAZ,CAAA,CAAA;CACH,WAAA;CACJ,SAAA;CACJ,OAAA;;CACD,MAAA,OAAOk8B,MAAP,CAAA;MA7JJ,CAAA;;CAgKA,IAAA,IAAIyG,SAAS,GAAG;CAAC1G,MAAAA,OAAO,EAAEA,OAAV;CAAmBC,MAAAA,MAAM,EAAEA,MAAAA;MAA3C,CAAA;KAEA,IAAI0G,OAAO,GAAG9rB,OAAd,CAAA;;CAGA,IAAA,IAAI+rB,QAAQ,GAAG,UAAU94C,CAAV,EAAaS,CAAb,EAAgB;CACnC;CACA;CACQT,MAAAA,CAAC,GAAG,IAAI64C,OAAJ,CAAY74C,CAAZ,CAAJ,CAAA;CACAS,MAAAA,CAAC,GAAG,IAAIo4C,OAAJ,CAAYp4C,CAAZ,CAAJ,CAAA;CACA,MAAA,IAAIs4C,EAAE,GAAG/4C,CAAC,CAACorC,SAAF,EAAT,CAAA;CACA,MAAA,IAAI4N,EAAE,GAAGv4C,CAAC,CAAC2qC,SAAF,EAAT,CAAA;OACA,OAAO2N,EAAE,GAAGC,EAAL,GAAU,CAACD,EAAE,GAAG,IAAN,KAAeC,EAAE,GAAG,IAApB,CAAV,GAAsC,CAACA,EAAE,GAAG,IAAN,KAAeD,EAAE,GAAG,IAApB,CAA7C,CAAA;MAPJ,CAAA;;KAUA,IAAIE,OAAO,GAAGlsB,OAAd,CAAA;CACA,IAAA,IAAI3pB,IAAI,GAAG9D,IAAI,CAAC8D,IAAhB,CAAA;CACA,IAAA,IAAIiR,GAAG,GAAG/U,IAAI,CAAC+U,GAAf,CAAA;CACA,IAAA,IAAIjS,GAAG,GAAG9C,IAAI,CAAC8C,GAAf,CAAA;CACA,IAAA,IAAIC,GAAG,GAAG/C,IAAI,CAAC+C,GAAf,CAAA;CACA,IAAA,IAAIk3B,KAAK,GAAGj6B,IAAI,CAACi6B,KAAjB,CAAA;CACA,IAAA,IAAI51B,GAAG,GAAGrE,IAAI,CAACqE,GAAf,CAAA;CACA,IAAA,IAAI2P,GAAG,GAAGhU,IAAI,CAACgU,GAAf,CAAA;CACA,IAAA,IAAIU,GAAG,GAAG1U,IAAI,CAAC0U,GAAf,CAAA;CACA,IAAA,IAAIR,GAAG,GAAGlU,IAAI,CAACkU,GAAf,CAAA;CACA,IAAA,IAAI6X,EAAE,GAAG/rB,IAAI,CAAC+rB,EAAd,CAAA;;CAEA,IAAA,IAAI6tB,MAAM,GAAG,UAASl5C,CAAT,EAAYS,CAAZ,EAAe04C,EAAf,EAAmBC,EAAnB,EAAuBC,EAAvB,EAA2B;CACpC,MAAA,IAAKF,EAAE,KAAK,KAAK,CAAjB,EAAqBA,EAAE,GAAC,CAAH,CAAA;CACrB,MAAA,IAAKC,EAAE,KAAK,KAAK,CAAjB,EAAqBA,EAAE,GAAC,CAAH,CAAA;OACrB,IAAKC,EAAE,KAAK,KAAK,CAAjB,EAAqBA,EAAE,GAAC,CAAH,CAHe;CAM5C;;CACQ,MAAA,IAAIC,OAAO,GAAG,UAASC,GAAT,EAAc;CACxB,QAAA,OAAO,GAAMA,GAAAA,GAAN,IAAa,CAAA,GAAIluB,EAAjB,CAAP,CAAA;QADJ,CAAA;;CAGA,MAAA,IAAImuB,OAAO,GAAG,UAASC,GAAT,EAAc;CACxB,QAAA,OAAQ,CAAIpuB,GAAAA,EAAJ,GAASouB,GAAV,GAAiB,GAAxB,CAAA;QADJ,CAAA;;CAGAz5C,MAAAA,CAAC,GAAG,IAAIi5C,OAAJ,CAAYj5C,CAAZ,CAAJ,CAAA;CACAS,MAAAA,CAAC,GAAG,IAAIw4C,OAAJ,CAAYx4C,CAAZ,CAAJ,CAAA;OACA,IAAI8sB,GAAG,GAAGxlB,KAAK,CAACtJ,IAAN,CAAWuB,CAAC,CAACm5B,GAAF,EAAX,CAAV,CAAA;CACA,MAAA,IAAI2Z,EAAE,GAAGvlB,GAAG,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAImsB,EAAE,GAAGnsB,GAAG,CAAC,CAAD,CAAZ,CAAA;CACA,MAAA,IAAIosB,EAAE,GAAGpsB,GAAG,CAAC,CAAD,CAAZ,CAAA;OACA,IAAIwK,KAAK,GAAGhwB,KAAK,CAACtJ,IAAN,CAAWgC,CAAC,CAAC04B,GAAF,EAAX,CAAZ,CAAA;CACA,MAAA,IAAIygB,EAAE,GAAG7hB,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAI8hB,EAAE,GAAG9hB,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAI+hB,EAAE,GAAG/hB,KAAK,CAAC,CAAD,CAAd,CAAA;CACA,MAAA,IAAIgiB,IAAI,GAAG,CAACjH,EAAE,GAAG8G,EAAN,IAAU,CAArB,CAAA;CACA,MAAA,IAAII,EAAE,GAAG52C,IAAI,CAACiR,GAAG,CAACqlC,EAAD,EAAK,CAAL,CAAH,GAAarlC,GAAG,CAACslC,EAAD,EAAK,CAAL,CAAjB,CAAb,CAAA;CACA,MAAA,IAAIM,EAAE,GAAG72C,IAAI,CAACiR,GAAG,CAACwlC,EAAD,EAAK,CAAL,CAAH,GAAaxlC,GAAG,CAACylC,EAAD,EAAK,CAAL,CAAjB,CAAb,CAAA;CACA,MAAA,IAAII,IAAI,GAAG,CAACF,EAAE,GAAGC,EAAN,IAAU,CAArB,CAAA;CACA,MAAA,IAAIE,CAAC,GAAG,GAAK,IAAA,CAAA,GAAE/2C,IAAI,CAACiR,GAAG,CAAC6lC,IAAD,EAAO,CAAP,CAAH,IAAc7lC,GAAG,CAAC6lC,IAAD,EAAO,CAAP,CAAH,GAAe7lC,GAAG,CAAC,EAAD,EAAK,CAAL,CAAhC,CAAD,CAAX,CAAR,CAAA;CACA,MAAA,IAAI+lC,GAAG,GAAGV,EAAE,IAAE,CAAA,GAAES,CAAJ,CAAZ,CAAA;CACA,MAAA,IAAIE,GAAG,GAAGR,EAAE,IAAE,CAAA,GAAEM,CAAJ,CAAZ,CAAA;CACA,MAAA,IAAIG,GAAG,GAAGl3C,IAAI,CAACiR,GAAG,CAAC+lC,GAAD,EAAM,CAAN,CAAH,GAAc/lC,GAAG,CAACslC,EAAD,EAAK,CAAL,CAAlB,CAAd,CAAA;CACA,MAAA,IAAIY,GAAG,GAAGn3C,IAAI,CAACiR,GAAG,CAACgmC,GAAD,EAAM,CAAN,CAAH,GAAchmC,GAAG,CAACylC,EAAD,EAAK,CAAL,CAAlB,CAAd,CAAA;CACA,MAAA,IAAIU,KAAK,GAAG,CAACF,GAAG,GAAGC,GAAP,IAAY,CAAxB,CAAA;OACA,IAAIE,OAAO,GAAGnB,OAAO,CAAC/f,KAAK,CAACogB,EAAD,EAAKS,GAAL,CAAN,CAArB,CAAA;OACA,IAAIM,OAAO,GAAGpB,OAAO,CAAC/f,KAAK,CAACugB,EAAD,EAAKO,GAAL,CAAN,CAArB,CAAA;OACA,IAAIM,GAAG,GAAGF,OAAO,IAAI,CAAX,GAAeA,OAAf,GAAyBA,OAAO,GAAG,GAA7C,CAAA;OACA,IAAIG,GAAG,GAAGF,OAAO,IAAI,CAAX,GAAeA,OAAf,GAAyBA,OAAO,GAAG,GAA7C,CAAA;OACA,IAAIG,KAAK,GAAGl3C,GAAG,CAACg3C,GAAG,GAAGC,GAAP,CAAH,GAAiB,GAAjB,GAAuB,CAACD,GAAG,GAAGC,GAAN,GAAY,GAAb,IAAkB,CAAzC,GAA6C,CAACD,GAAG,GAAGC,GAAP,IAAY,CAArE,CAAA;OACA,IAAIE,CAAC,GAAG,CAAI,GAAA,IAAA,GAAKxnC,GAAG,CAACkmC,OAAO,CAACqB,KAAK,GAAG,EAAT,CAAR,CAAZ,GAAoC,IAAKvnC,GAAAA,GAAG,CAACkmC,OAAO,CAAC,CAAEqB,GAAAA,KAAH,CAAR,CAA5C,GAAiE,IAAKvnC,GAAAA,GAAG,CAACkmC,OAAO,CAAC,IAAEqB,KAAF,GAAU,CAAX,CAAR,CAAzE,GAAkG,GAAIvnC,GAAAA,GAAG,CAACkmC,OAAO,CAAC,IAAEqB,KAAF,GAAU,EAAX,CAAR,CAAjH,CAAA;CACA,MAAA,IAAIE,OAAO,GAAGH,GAAG,GAAGD,GAApB,CAAA;OACAI,OAAO,GAAGp3C,GAAG,CAACo3C,OAAD,CAAH,IAAgB,GAAhB,GAAsBA,OAAtB,GAAgCH,GAAG,IAAID,GAAP,GAAaI,OAAO,GAAG,GAAvB,GAA6BA,OAAO,GAAG,GAAjF,CAAA;CACAA,MAAAA,OAAO,GAAG,CAAE33C,GAAAA,IAAI,CAACk3C,GAAG,GAACC,GAAL,CAAN,GAAgBvmC,GAAG,CAACwlC,OAAO,CAACuB,OAAD,CAAP,GAAiB,CAAlB,CAA7B,CAAA;CACA,MAAA,IAAIC,MAAM,GAAGpB,EAAE,GAAG9G,EAAlB,CAAA;CACA,MAAA,IAAImI,OAAO,GAAGV,GAAG,GAAGD,GAApB,CAAA;OACA,IAAIY,EAAE,GAAG,CAAA,GAAK,KAAM7mC,GAAAA,GAAG,CAAC0lC,IAAI,GAAG,EAAR,EAAY,CAAZ,CAAV,GAA0B32C,IAAI,CAAC,EAAKiR,GAAAA,GAAG,CAAC0lC,IAAI,GAAG,EAAR,EAAY,CAAZ,CAAT,CAA3C,CAAA;CACA,MAAA,IAAIoB,EAAE,GAAG,CAAI,GAAA,KAAA,GAAMX,KAAnB,CAAA;CACA,MAAA,IAAIY,EAAE,GAAG,CAAA,GAAI,KAAMZ,GAAAA,KAAN,GAAYM,CAAzB,CAAA;CACA,MAAA,IAAIO,UAAU,GAAG,EAAA,GAAG7nC,GAAG,CAAC,CAACa,GAAG,CAAC,CAACwmC,KAAK,GAAG,GAAT,IAAc,EAAf,EAAmB,CAAnB,CAAL,CAAvB,CAAA;OACA,IAAIS,EAAE,GAAG,CAAA,GAAEl4C,IAAI,CAACiR,GAAG,CAACmmC,KAAD,EAAQ,CAAR,CAAH,IAAenmC,GAAG,CAACmmC,KAAD,EAAQ,CAAR,CAAH,GAAgBnmC,GAAG,CAAC,EAAD,EAAK,CAAL,CAAlC,CAAD,CAAf,CAAA;CACA,MAAA,IAAIknC,EAAE,GAAG,CAACD,EAAD,GAAItnC,GAAG,CAAC,CAAA,GAAEwlC,OAAO,CAAC6B,UAAD,CAAV,CAAhB,CAAA;OACA,IAAI90C,MAAM,GAAGnD,IAAI,CAACiR,GAAG,CAAC2mC,MAAM,IAAE7B,EAAE,GAAC+B,EAAL,CAAP,EAAiB,CAAjB,CAAH,GAAyB7mC,GAAG,CAAC4mC,OAAO,IAAE7B,EAAE,GAAC+B,EAAL,CAAR,EAAkB,CAAlB,CAA5B,GAAmD9mC,GAAG,CAAC0mC,OAAO,IAAE1B,EAAE,GAAC+B,EAAL,CAAR,EAAkB,CAAlB,CAAtD,GAA6EG,EAAE,IAAEN,OAAO,IAAE7B,EAAE,GAAC+B,EAAL,CAAT,CAAF,IAAsBJ,OAAO,IAAE1B,EAAE,GAAC+B,EAAL,CAA7B,CAA9E,CAAjB,CAAA;OACA,OAAO/4C,GAAG,CAAC,CAAD,EAAID,GAAG,CAAC,GAAD,EAAMmE,MAAN,CAAP,CAAV,CAAA;MAnDJ,CAAA;;CAsDA,IAAA,IAAIi1C,OAAO,GAAGzuB,OAAd,CAlwGkB;;KAqwGlB,IAAI0uB,QAAQ,GAAG,UAASz7C,CAAT,EAAYS,CAAZ,EAAegsB,IAAf,EAAqB;OAChC,IAAKA,IAAI,KAAK,KAAK,CAAnB,EAAuBA,IAAI,GAAC,KAAL,CADS;CAIxC;;CACQzsB,MAAAA,CAAC,GAAG,IAAIw7C,OAAJ,CAAYx7C,CAAZ,CAAJ,CAAA;CACAS,MAAAA,CAAC,GAAG,IAAI+6C,OAAJ,CAAY/6C,CAAZ,CAAJ,CAAA;CACA,MAAA,IAAIs4C,EAAE,GAAG/4C,CAAC,CAAC6O,GAAF,CAAM4d,IAAN,CAAT,CAAA;CACA,MAAA,IAAIusB,EAAE,GAAGv4C,CAAC,CAACoO,GAAF,CAAM4d,IAAN,CAAT,CAAA;OACA,IAAIivB,MAAM,GAAG,CAAb,CAAA;;CACA,MAAA,KAAK,IAAIp7C,CAAT,IAAcy4C,EAAd,EAAkB;CACd,QAAA,IAAI94C,CAAC,GAAG,CAAC84C,EAAE,CAACz4C,CAAD,CAAF,IAAS,CAAV,KAAgB04C,EAAE,CAAC14C,CAAD,CAAF,IAAS,CAAzB,CAAR,CAAA;SACAo7C,MAAM,IAAIz7C,CAAC,GAACA,CAAZ,CAAA;CACH,OAAA;;CACD,MAAA,OAAOX,IAAI,CAAC8D,IAAL,CAAUs4C,MAAV,CAAP,CAAA;MAdJ,CAAA;;KAiBA,IAAIpvB,KAAK,GAAGS,OAAZ,CAAA;;KAEA,IAAI4uB,KAAK,GAAG,YAAY;OACpB,IAAI5wB,IAAI,GAAG,EAAX;CAAA,UAAewB,GAAG,GAAGnf,SAAS,CAACzO,MAA/B,CAAA;;OACA,OAAQ4tB,GAAG,EAAX,EAAgBxB,IAAI,CAAEwB,GAAF,CAAJ,GAAcnf,SAAS,CAAEmf,GAAF,CAAvB,CAAA;;OAEhB,IAAI;CACA,QAAA,KAAKplB,QAAQ,CAACxH,SAAT,CAAmBstB,IAAnB,CAAwBrU,KAAxB,CAA+B0T,KAA/B,EAAsC,CAAE,IAAF,CAAA,CAASlgB,MAAT,CAAiB2e,IAAjB,CAAtC,CAAL,GAAA,CAAA;CACA,QAAA,OAAO,IAAP,CAAA;QAFJ,CAGE,OAAO7qB,CAAP,EAAU;CACR,QAAA,OAAO,KAAP,CAAA;CACH,OAAA;CACJ,KAVD,CAxxGkB;;;KAqyGlB,IAAI07C,QAAQ,GAAGzuB,QAAf,CAAA;KAEA,IAAIlW,KAAK,GAAGs5B,OAAZ,CAAA;CAEA,IAAA,IAAIsL,MAAM,GAAG;OACZC,IAAI,EAAE,SAASA,IAAT,GAAgB;SAAE,OAAO7kC,KAAK,CAAC,CAAC2kC,QAAQ,CAAC3qB,GAAT,CAAa,GAAb,EAAiB,CAAjB,EAAmB,EAAnB,CAAD,EAAyB2qB,QAAQ,CAAC3qB,GAAT,CAAa,GAAb,EAAiB,EAAjB,EAAoB,EAApB,CAAzB,CAAD,CAAZ,CAAA;QADZ;OAEZ8qB,GAAG,EAAE,SAASA,GAAT,GAAe;CAAE,QAAA,OAAO9kC,KAAK,CAAC,CAAC,MAAD,EAAQ,MAAR,EAAe,MAAf,EAAsB,MAAtB,CAAD,CAAL,CAAqCwV,IAArC,CAA0C,KAA1C,CAAP,CAAA;CAAyD,OAAA;MAFhF,CAAA;CAKJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAKI,IAAA,IAAIuvB,WAAW,GAAG;CACtB;CACQC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAFQ;CAGdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAHQ;CAIdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAJQ;CAKdC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CALK;CAMdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CANQ;CAOdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAPM;CAQdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CARQ;CASdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CATQ;CAUdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAVQ;CAWdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAXM;CAYdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAZM;CAadC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAbK;CAcdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAdQ;CAedC,MAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAfO;CAgBdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAhBM;CAiBdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAjBQ;CAkBdC,MAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAlBO;CAmBdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAnBM;CAoBdC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CApBK;CAsBtB;OAEQC,QAAQ,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CAxBI;OAyBdC,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CAzBM;OA0BdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA1BQ;OA2BdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA3BQ;OA4BdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA5BQ;OA6BdC,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA7BM;OA8BdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA9BQ;OA+BdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CA/BQ;OAgCdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,CAhCQ;CAkCtB;CAEQC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CApCQ;CAqCdC,MAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CArCM;CAsCdC,MAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAtCQ;OAuCdC,IAAI,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,EAA0H,SAA1H,CAvCQ;CAwCdC,MAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CAxCO;OAyCdC,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,EAAoG,SAApG,EAA+G,SAA/G,EAA0H,SAA1H,CAzCM;CA0CdC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CA1CK;CA2CdC,MAAAA,OAAO,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,EAAyF,SAAzF,CAAA;CA3CK,KAAlB,CA/zGkB;;KA82GlB,KAAK,IAAI99C,CAAC,GAAG,CAAR,EAAWosB,IAAI,GAAGhtB,MAAM,CAACgmC,IAAP,CAAYsW,WAAZ,CAAvB,EAAiD17C,CAAC,GAAGosB,IAAI,CAAC/tB,MAA1D,EAAkE2B,CAAC,IAAI,CAAvE,EAA0E;CACtE,MAAA,IAAI22C,GAAG,GAAGvqB,IAAI,CAACpsB,CAAD,CAAd,CAAA;OAEA07C,WAAW,CAAC/E,GAAG,CAACvxC,WAAJ,EAAD,CAAX,GAAiCs2C,WAAW,CAAC/E,GAAD,CAA5C,CAAA;CACH,KAAA;;KAED,IAAIoH,aAAa,GAAGrC,WAApB,CAAA;CAEA,IAAA,IAAIsC,MAAM,GAAGnxB,QAAb,CAt3GkB;CAy3GtB;CAEA;CAkBA;CAWA;CAaA;;KACImxB,MAAM,CAAC9O,OAAP,GAAiBA,OAAjB,CAAA;KACA8O,MAAM,CAAChK,MAAP,GAAgBQ,QAAhB,CAAA;KACAwJ,MAAM,CAACtJ,KAAP,GAAeY,OAAf,CAAA;KACA0I,MAAM,CAACpI,SAAP,GAAmBA,SAAnB,CAAA;CACAoI,IAAAA,MAAM,CAACjS,GAAP,GAAaiS,MAAM,CAAC7S,WAAP,GAAqBQ,KAAlC,CAAA;KACAqS,MAAM,CAACpmC,MAAP,GAAgB2+B,QAAhB,CAAA;CACAyH,IAAAA,MAAM,CAACrnC,KAAP,GAAes5B,OAAf,CA56GkB;;CA+6GlB+N,IAAAA,MAAM,CAACpM,OAAP,GAAiB0G,SAAS,CAAC1G,OAA3B,CAAA;KACAoM,MAAM,CAACxF,QAAP,GAAkBA,QAAlB,CAAA;KACAwF,MAAM,CAACpF,MAAP,GAAgBA,MAAhB,CAAA;KACAoF,MAAM,CAAC7C,QAAP,GAAkBA,QAAlB,CAAA;CACA6C,IAAAA,MAAM,CAACnM,MAAP,GAAgByG,SAAS,CAACzG,MAA1B,CAAA;CACAmM,IAAAA,MAAM,CAAC3C,KAAP,GAAeA,KAAf,CAp7GkB;;CAu7GlB2C,IAAAA,MAAM,CAACzC,MAAP,GAAgBA,MAAhB,CAv7GkB;;KA07GlByC,MAAM,CAAC7O,MAAP,GAAgBtK,QAAhB,CAAA;KACAmZ,MAAM,CAAC9M,MAAP,GAAgB6M,aAAhB,CAAA;KAEA,IAAIE,SAAS,GAAGD,MAAhB,CAAA;CAEA,IAAA,OAAOC,SAAP,CAAA;IAn8GJ,CAAA,CAAA;;;;;CCtDA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAASC,uBAAT,CAAiCC,gBAAjC,EAAmDt/C,KAAnD,EAAwE;GAAA,IAAdX,OAAc,uEAAJ,EAAI,CAAA;GAC7E,MAAM;KACJkgD,eAAe,GAAGD,gBAAgB,CAACE,kBAAjB,CAAoCx/C,KAApC,EAA2CX,OAA3C,CADd;KAEJogD,OAFI;CAGJC,IAAAA,GAAAA;CAHI,GAAA,GAIFrgD,OAJJ,CAAA;GAMA,MAAM;KAAE4D,GAAF;CAAOC,IAAAA,GAAAA;CAAP,GAAA,GAAe+C,aAAa,CAACs5C,eAAe,CAAC/2C,CAAjB,CAAlC,CAAA;GACA,IAAIm3C,aAAa,GAAGR,MAAM,CACvBrnC,KADiB,CACX,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,KAA3B,CADW,CAEjBm7B,CAAAA,MAFiB,CAEV,CAAChwC,GAAD,EAAMC,GAAN,CAFU,CAGjBoqB,CAAAA,IAHiB,CAGZ,KAHY,CAApB,CAAA;GAKA,IAAIsyB,UAAU,GAAGL,eAAe,CAAC/2C,CAAhB,CAAkBc,GAAlB,CACdd,CAAD,IAAQ,OAAMm3C,aAAa,CAACn3C,CAAD,CAAb,CAAiB0iB,GAAjB,EAAuBvb,CAAAA,IAAvB,EAA8B,CAAA,CAAA,CAD7B,CAAjB,CAAA;CAIA,EAAA,IAAI3I,IAAI,GAAGs4C,gBAAgB,CAACO,WAAjB,CAA6B;CAAEH,IAAAA,GAAAA;CAAF,GAA7B,CAAX,CAAA;;CACA,EAAA,IAAID,OAAJ,EAAa;KACXz4C,IAAI,GAAGkG,SAAS,CAAC;OAAErI,CAAC,EAAEmC,IAAI,CAACnC,CAAV;OAAa2D,CAAC,EAAExB,IAAI,CAACwB,CAAAA;MAAtB,EAA2Bi3C,OAA3B,CAAhB,CAAA;CACD,GAAA;;CAED,EAAA,IAAIK,aAAa,GAAG;CAClBviC,IAAAA,IAAI,EAAE,OADY;KAElB1Y,CAAC,EAAEmC,IAAI,CAACnC,CAFU;KAGlB2D,CAAC,EAAExB,IAAI,CAACwB,CAHU;CAIlBu3C,IAAAA,KAAK,EAAEH,UAJW;CAKlBI,IAAAA,MAAM,EAAE;CACNC,MAAAA,UAAU,EAAE;CACVC,QAAAA,SAAS,EAAE,CADD;CAEVC,QAAAA,SAAS,EAAE,CAAA;QAHP;CAKNC,MAAAA,QAAQ,EAAE;CACRF,QAAAA,SAAS,EAAE,CADH;CAERC,QAAAA,SAAS,EAAE,CAAA;CAFH,OAAA;CALJ,KAAA;IALV,CAAA;CAiBA,EAAA,OAAOL,aAAP,CAAA;CACD;;CCtDD;CACA;CACA;CACA;CACA;;CAEO,SAASO,cAAT,CAAwBC,cAAxB,EAAwC;GAC7C,MAAM;KAAEz7C,CAAF;CAAK8I,IAAAA,MAAAA;CAAL,GAAA,GAAgB2yC,cAAtB,CAAA;CACA,EAAA,IAAIC,KAAK,GAAG5yC,MAAM,CAACnO,MAAnB,CAAA;CACA,EAAA,IAAIghD,QAAQ,GAAG7yC,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAAzB,CAAA;CACA,EAAA,IAAI4H,MAAJ,CAAA;CACA,EAAA,IAAIq5C,OAAO,GAAG,IAAI5gD,YAAJ,CAAiB0gD,KAAjB,CAAd,CAAA;;GACA,KAAK,IAAIvyC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGwyC,QAA9B,EAAwCxyC,MAAM,EAA9C,EAAkD;KAChD,KAAK,IAAID,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGwyC,KAAxB,EAA+BxyC,GAAG,EAAlC,EAAsC;OACpC0yC,OAAO,CAAC1yC,GAAD,CAAP,GAAeJ,MAAM,CAACI,GAAD,CAAN,CAAYC,MAAZ,CAAf,CAAA;CACD,KAAA;;CACD,IAAA,IAAIlL,IAAI,GAAGF,QAAQ,CAAC69C,OAAD,CAAnB,CAAA;;KACA,IAAI,CAACr5C,MAAL,EAAa;CACXA,MAAAA,MAAM,GAAG;CAAEvC,QAAAA,CAAAA;QAAX,CAAA;;CACA,MAAA,KAAK,IAAIizC,GAAT,IAAgBh1C,IAAhB,EAAsB;CACpBsE,QAAAA,MAAM,CAAC0wC,GAAD,CAAN,GAAc,EAAd,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,KAAK,IAAIA,GAAT,IAAgBh1C,IAAhB,EAAsB;OACpBsE,MAAM,CAAC0wC,GAAD,CAAN,CAAYvwC,IAAZ,CAAiBzE,IAAI,CAACg1C,GAAD,CAArB,CAAA,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAO1wC,MAAP,CAAA;CACD;;CCxBM,SAASs5C,eAAT,CAAyBJ,cAAzB,EAAuD;GAAA,IAAdjhD,OAAc,uEAAJ,EAAI,CAAA;GAC5D,MAAM;CACJshD,IAAAA,YAAY,GAAG,MADX;CAEJC,IAAAA,cAAc,GAAG,GAFb;CAGJC,IAAAA,iBAAiB,GAAG,EAHhB;CAIJC,IAAAA,iBAAiB,GAAG,CAJhB;CAKJC,IAAAA,eAAe,GAAG,MALd;CAMJC,IAAAA,iBAAiB,GAAG,IAAA;CANhB,GAAA,GAOF3hD,OAPJ,CAAA;GAQA,IAAI4hD,WAAW,GAAG,EAAlB,CAAA;CAEA,EAAA,MAAMC,WAAW,GAAGb,cAAc,CAACC,cAAD,CAAlC,CAAA;;GAEA,IAAIM,cAAc,IAAID,YAAtB,EAAoC;KAClC,IAAIQ,GAAG,GAAG,EAAV,CAAA;;CACA,IAAA,KAAK,IAAIhgD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+/C,WAAW,CAACr8C,CAAZ,CAAcrF,MAAlC,EAA0C2B,CAAC,EAA3C,EAA+C;OAC7CggD,GAAG,CAAC55C,IAAJ,CAAS;CACP1C,QAAAA,CAAC,EAAEq8C,WAAW,CAACr8C,CAAZ,CAAc1D,CAAd,CADI;CAEPqH,QAAAA,CAAC,EAAE04C,WAAW,CAACn+C,EAAZ,CAAe5B,CAAf,CAAA;QAFL,CAAA,CAAA;CAID,KAAA;;CACD,IAAA,KAAK,IAAIA,CAAC,GAAG+/C,WAAW,CAACr8C,CAAZ,CAAcrF,MAAd,GAAuB,CAApC,EAAuC2B,CAAC,IAAI,CAA5C,EAA+CA,CAAC,EAAhD,EAAoD;OAClDggD,GAAG,CAAC55C,IAAJ,CAAS;CACP1C,QAAAA,CAAC,EAAEq8C,WAAW,CAACr8C,CAAZ,CAAc1D,CAAd,CADI;CAEPqH,QAAAA,CAAC,EAAE04C,WAAW,CAACl+C,EAAZ,CAAe7B,CAAf,CAAA;QAFL,CAAA,CAAA;CAID,KAAA;;KACD8/C,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,MAAAA,IAAI,EAAE,SADS;CAEf6jC,MAAAA,KAAK,EAAE,CAFQ;CAGfC,MAAAA,UAAU,EAAE;CACVC,QAAAA,SAAS,EAAEX,YADD;CAEVY,QAAAA,WAAW,EAAEX,cAFH;CAGVY,QAAAA,WAAW,EAAE,SAHH;CAIVl0C,QAAAA,QAAQ,EAAE6zC,GAAAA;CAJA,OAAA;MAHd,CAAA,CAAA;CAUD,GAAA;;GAED,IAAIJ,eAAe,IAAIC,iBAAvB,EAA0C;KACxC,IAAIS,MAAM,GAAG,EAAb,CAAA;;CACA,IAAA,KAAK,IAAItgD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+/C,WAAW,CAACr8C,CAAZ,CAAcrF,MAAlC,EAA0C2B,CAAC,EAA3C,EAA+C;OAC7CsgD,MAAM,CAACl6C,IAAP,CAAY;CACV1C,QAAAA,CAAC,EAAEq8C,WAAW,CAACr8C,CAAZ,CAAc1D,CAAd,CADO;CAEVqH,QAAAA,CAAC,EAAE04C,WAAW,CAACj+C,GAAZ,CAAgB9B,CAAhB,CAAA;QAFL,CAAA,CAAA;CAID,KAAA;;CACD,IAAA,KAAK,IAAIA,CAAC,GAAG+/C,WAAW,CAACr8C,CAAZ,CAAcrF,MAAd,GAAuB,CAApC,EAAuC2B,CAAC,IAAI,CAA5C,EAA+CA,CAAC,EAAhD,EAAoD;OAClDsgD,MAAM,CAACl6C,IAAP,CAAY;CACV1C,QAAAA,CAAC,EAAEq8C,WAAW,CAACr8C,CAAZ,CAAc1D,CAAd,CADO;CAEVqH,QAAAA,CAAC,EAAE04C,WAAW,CAACh+C,GAAZ,CAAgB/B,CAAhB,CAAA;QAFL,CAAA,CAAA;CAID,KAAA;;KAED8/C,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,MAAAA,IAAI,EAAE,SADS;CAEf6jC,MAAAA,KAAK,EAAE,CAFQ;CAGfC,MAAAA,UAAU,EAAE;CACVC,QAAAA,SAAS,EAAEP,eADD;CAEVQ,QAAAA,WAAW,EAAEP,iBAFH;CAGVQ,QAAAA,WAAW,EAAE,SAHH;CAIVE,QAAAA,WAAW,EAAE,MAJH;CAKVp0C,QAAAA,QAAQ,EAAEm0C,MAAAA;CALA,OAAA;MAHd,CAAA,CAAA;CAWD,GAAA;;CAED,EAAA,IAAI3B,aAAa,GAAG;CAClBviC,IAAAA,IAAI,EAAE,OADY;CAElBjV,IAAAA,IAAI,EAAE;OACJzD,CAAC,EAAEq8C,WAAW,CAACr8C,CADX;OAEJ2D,CAAC,EAAE04C,WAAW,CAACv/C,MAFX;OAGJo+C,KAAK,EAAEc,iBAAiB,GACpB,IAAIj4C,KAAJ,CAAUs4C,WAAW,CAACr8C,CAAZ,CAAcrF,MAAxB,CAAgCqZ,CAAAA,IAAhC,CAAqCgoC,iBAArC,CADoB,GAEpBc,SAAS,CAACrB,cAAc,CAAC3yC,MAAhB,CAAA;MAPG;CASlBqyC,IAAAA,MAAM,EAAE;CACNC,MAAAA,UAAU,EAAE;CACVC,QAAAA,SAAS,EAAEY,iBADD;CAEVX,QAAAA,SAAS,EAAE,CAAA;QAHP;CAKNC,MAAAA,QAAQ,EAAE;CACRF,QAAAA,SAAS,EAAEY,iBADH;CAERX,QAAAA,SAAS,EAAE,CAAA;CAFH,OAAA;MAdM;CAmBlBc,IAAAA,WAAAA;IAnBF,CAAA;CAsBA,EAAA,OAAOnB,aAAP,CAAA;CACD,CAAA;;CAED,SAAS6B,SAAT,CAAmBC,OAAnB,EAA4B;CAC1B,EAAA,MAAMj0C,MAAM,GAAG,IAAI6C,MAAJ,CAAWoxC,OAAX,CAAf,CAAA;CACA,EAAA,MAAMC,MAAM,GAAGl0C,MAAM,CAACkW,iBAAP,CAAyB,QAAzB,CAAf,CAAA;GACA,MAAM;KAAE5gB,GAAF;CAAOC,IAAAA,GAAAA;IAAQ+C,GAAAA,aAAa,CAAC47C,MAAD,CAAlC,CAAA;GACA,MAAMlC,aAAa,GAAGR,MAAM,CACzBrnC,KADmB,CACb,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,KAA3B,CADa,CAEnBm7B,CAAAA,MAFmB,CAEZ,CAAChwC,GAAD,EAAMC,GAAN,CAFY,CAGnBoqB,CAAAA,IAHmB,CAGd,KAHc,CAAtB,CAAA;CAKA,EAAA,MAAMgjB,MAAM,GAAGuR,MAAM,CAACv4C,GAAP,CAAYd,CAAD,IAAQ,CAAA,IAAA,EAAMm3C,aAAa,CAACn3C,CAAD,CAAb,CAAiB0iB,GAAjB,GAAuBvb,IAAvB,EAA8B,GAAvD,CAAf,CAAA;CACA,EAAA,OAAO2gC,MAAP,CAAA;CACD;;CC7GM,SAASwR,iBAAT,CAA2Bx5C,IAA3B,EAAiCy5C,QAAjC,EAA2C;GAChDz5C,IAAI,CAAC03C,MAAL,GAAc;CACZC,IAAAA,UAAU,EAAE;CACV+B,MAAAA,SAAS,EAAED,QAAQ,CAACE,IAAT,CAAclC,KAAd,IAAuB,UADxB;CAEVG,MAAAA,SAAS,EAAE,CAFD;CAGVC,MAAAA,SAAS,EAAE,CAAA;MAJD;CAMZC,IAAAA,QAAQ,EAAE;CACR4B,MAAAA,SAAS,EAAED,QAAQ,CAACE,IAAT,CAAclC,KAAd,IAAuB,UAD1B;CAERG,MAAAA,SAAS,EAAE,CAFH;CAGRC,MAAAA,SAAS,EAAE,CAAA;CAHH,KAAA;IANZ,CAAA;GAYA73C,IAAI,CAAC45C,KAAL,GAAaH,QAAQ,CAACE,IAAT,CAAcE,EAAd,IAAoBJ,QAAQ,CAACI,EAA1C,CAAA;CACD;;CCbD;CACA;CACA;CACA;CACA;CACA;;CACO,SAASC,QAAT,CAAkBC,OAAlB,EAAyC;GAAA,IAAdhjD,OAAc,uEAAJ,EAAI,CAAA;GAC9C,MAAM;KAAEqgD,GAAF;KAAO4C,OAAP;CAAgB7C,IAAAA,OAAO,GAAG,EAAA;CAA1B,GAAA,GAAiCpgD,OAAvC,CAAA;CACA,EAAA,IAAIkjD,KAAK,GAAG;CACVj6C,IAAAA,IAAI,EAAE,EAAA;IADR,CAAA;;CAIA,EAAA,KAAK,IAAIy5C,QAAT,IAAqBM,OAArB,EAA8B;KAC5B,IAAI,CAAC3C,GAAD,IAAQA,GAAG,CAAC8C,QAAJ,CAAaT,QAAQ,CAACI,EAAtB,CAAZ,EAAuC;CACrC,MAAA,IAAI75C,IAAI,GAAGy5C,QAAQ,CAACU,OAAT,CAAiB;SAAEH,OAAF;CAAW7C,QAAAA,OAAAA;CAAX,OAAjB,CAAX,CAAA;CACAqC,MAAAA,iBAAiB,CAACx5C,IAAD,EAAOy5C,QAAP,CAAjB,CAAA;CACAQ,MAAAA,KAAK,CAACj6C,IAAN,CAAWf,IAAX,CAAgBe,IAAhB,CAAA,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOi6C,KAAP,CAAA;CACD;;CCrBM,SAASG,2BAAT,GAAkD;GAAA,IAAbj5C,MAAa,uEAAJ,EAAI,CAAA;GACvD,IAAI;CAAEP,IAAAA,UAAU,GAAG,EAAA;CAAf,GAAA,GAAsBO,MAA1B,CAAA;GACA,IAAIw3C,WAAW,GAAG,EAAlB,CAAA;GACA/3C,UAAU,GAAGA,UAAU,CAACO,MAAX,CAAmBk5C,SAAD,IAAe,CAACA,SAAS,CAACC,MAA5C,CAAb,CAAA;CACA3B,EAAAA,WAAW,GAAG/3C,UAAU,CAACI,GAAX,CAAgBq5C,SAAD,IAAe;CAC1C,IAAA,IAAIE,UAAU,GAAG;CACftlC,MAAAA,IAAI,EAAE,MADS;CAEfjQ,MAAAA,QAAQ,EAAE,CACR;SAAEzI,CAAC,EAAE89C,SAAS,CAACrjD,IAAf;CAAqBkJ,QAAAA,CAAC,EAAE,KAAA;CAAxB,OADQ,EAER;SAAE3D,CAAC,EAAE89C,SAAS,CAACpjD,EAAf;CAAmBiJ,QAAAA,CAAC,EAAE,QAAA;CAAtB,OAFQ,CAFK;CAMfg5C,MAAAA,WAAW,EAAE,CANE;CAOfF,MAAAA,SAAS,EAAE,qBAAA;MAPb,CAAA;CASA,IAAA,OAAOuB,UAAP,CAAA;CACD,GAXa,CAAd,CAAA;;CAYA,EAAA,IAAIp5C,MAAM,CAACnK,IAAP,KAAgBmD,SAApB,EAA+B;KAC7Bw+C,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,MAAAA,IAAI,EAAE,MADS;CAEfjQ,MAAAA,QAAQ,EAAE,CACR;SAAEzI,CAAC,EAAElC,MAAM,CAACuJ,gBAAZ;CAA8B1D,QAAAA,CAAC,EAAE,KAAA;CAAjC,OADQ,EAER;SAAE3D,CAAC,EAAE4E,MAAM,CAACnK,IAAZ;CAAkBkJ,QAAAA,CAAC,EAAE,QAAA;CAArB,OAFQ,CAFK;CAMfg5C,MAAAA,WAAW,EAAE,CANE;CAOfF,MAAAA,SAAS,EAAE,qBAAA;MAPb,CAAA,CAAA;CASD,GAAA;;CACD,EAAA,IAAI73C,MAAM,CAAClK,EAAP,KAAckD,SAAlB,EAA6B;KAC3Bw+C,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,MAAAA,IAAI,EAAE,MADS;CAEfjQ,MAAAA,QAAQ,EAAE,CACR;SAAEzI,CAAC,EAAE4E,MAAM,CAAClK,EAAZ;CAAgBiJ,QAAAA,CAAC,EAAE,KAAA;CAAnB,OADQ,EAER;SAAE3D,CAAC,EAAElC,MAAM,CAAC6C,gBAAZ;CAA8BgD,QAAAA,CAAC,EAAE,QAAA;CAAjC,OAFQ,CAFK;CAMfg5C,MAAAA,WAAW,EAAE,CANE;CAOfF,MAAAA,SAAS,EAAE,qBAAA;MAPb,CAAA,CAAA;CASD,GAAA;;CACD,EAAA,OAAOL,WAAP,CAAA;CACD;;CCnCD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEO,SAAS6B,kBAAT,CAA4BT,OAA5B,EAAmD;GAAA,IAAdhjD,OAAc,uEAAJ,EAAI,CAAA;GACxD,MAAM;CAAEogD,IAAAA,OAAAA;CAAF,GAAA,GAAcpgD,OAApB,CAAA;CACA,EAAA,IAAIkjD,KAAK,GAAG;CACVj6C,IAAAA,IAAI,EAAE,EAAA;IADR,CAAA;;CAGA,EAAA,KAAK,IAAIy5C,QAAT,IAAqBM,OAArB,EAA8B;CAC5B,IAAA,IAAI/5C,IAAI,GAAGy5C,QAAQ,CAACgB,UAApB,CAAA;;CACA,IAAA,IAAItD,OAAJ,EAAa;CACXn3C,MAAAA,IAAI,GAAG4E,SAAS,CAAC5E,IAAD,EAAOm3C,OAAP,CAAhB,CAAA;CACD,KAAA;;CACDqC,IAAAA,iBAAiB,CAACx5C,IAAD,EAAOy5C,QAAP,CAAjB,CAAA;CACAQ,IAAAA,KAAK,CAACj6C,IAAN,CAAWf,IAAX,CAAgBe,IAAhB,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOi6C,KAAP,CAAA;CACD;;CC1BD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CACO,SAASS,qBAAT,CAA+B1D,gBAA/B,EAA+D;GAAA,IAAdjgD,OAAc,uEAAJ,EAAI,CAAA;CACpE,EAAA,IAAI4jD,MAAM,GAAG3D,gBAAgB,CAAC4D,oBAAjB,CAAsC7jD,OAAtC,CAAb,CAAA;CAEA,EAAA,IAAIkjD,KAAK,GAAG;CACVj6C,IAAAA,IAAI,EAAE,EAAA;IADR,CAAA;GAGA,IAAI,CAAC26C,MAAD,IAAW,CAACA,MAAM,CAACt1C,MAAvB,EAA+B,OAAO40C,KAAP,CAAA;;CAE/B,EAAA,KAAK,IAAIphD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8hD,MAAM,CAACt1C,MAAP,CAAcnO,MAAlC,EAA0C2B,CAAC,EAA3C,EAA+C;CAC7C,IAAA,IAAImH,IAAI,GAAG;OACTzD,CAAC,EAAEo+C,MAAM,CAACp+C,CADD;CAET2D,MAAAA,CAAC,EAAEI,KAAK,CAACtJ,IAAN,CAAW2jD,MAAM,CAACt1C,MAAP,CAAcxM,CAAd,CAAX,CAFM;;MAAX,CAAA;KAIA2gD,iBAAiB,CAACx5C,IAAD,EAAO;CAAE25C,MAAAA,IAAI,EAAEgB,MAAM,CAAChB,IAAP,CAAY9gD,CAAZ,CAAR;CAAwBghD,MAAAA,EAAE,EAAEc,MAAM,CAACvD,GAAP,CAAWv+C,CAAX,CAAA;CAA5B,KAAP,CAAjB,CAAA;CACAohD,IAAAA,KAAK,CAACj6C,IAAN,CAAWf,IAAX,CAAgBe,IAAhB,CAAA,CAAA;CACD,GAAA;;CAED,EAAA,OAAOi6C,KAAP,CAAA;CACD;;CC/BD;CACA;CACA;CACA;CACA;CACA;CAEO,SAASY,iBAAT,CAA2Bd,OAA3B,EAAkD;GAAA,IAAdhjD,OAAc,uEAAJ,EAAI,CAAA;GACvD,MAAM;CAAEqgD,IAAAA,GAAAA;CAAF,GAAA,GAAUrgD,OAAhB,CAAA;GAEA,IAAIsO,MAAM,GAAG,EAAb,CAAA;GACA,IAAIs0C,IAAI,GAAG,EAAX,CAAA;GACA,IAAImB,UAAU,GAAG,EAAjB,CAAA;GACA,IAAIv+C,CAAC,GAAG,EAAR,CAAA;;GAEA,IAAI+D,KAAK,CAACy6C,OAAN,CAAchB,OAAd,CAA0BA,IAAAA,OAAO,CAAC7iD,MAAR,GAAiB,CAA/C,EAAkD;CAChD,IAAA,KAAK,IAAIuiD,QAAT,IAAqBM,OAArB,EAA8B;OAC5B,IAAI,CAAC3C,GAAD,IAAQA,GAAG,CAAC8C,QAAJ,CAAaT,QAAQ,CAACI,EAAtB,CAAZ,EAAuC;CACrCiB,QAAAA,UAAU,CAAC77C,IAAX,CAAgBw6C,QAAQ,CAACI,EAAzB,CAAA,CAAA;CACAx0C,QAAAA,MAAM,CAACpG,IAAP,CAAYw6C,QAAQ,CAACgB,UAAT,CAAoBv6C,CAAhC,CAAA,CAAA;CACAy5C,QAAAA,IAAI,CAAC16C,IAAL,CAAUw6C,QAAQ,CAACE,IAAnB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;KACDp9C,CAAC,GAAGw9C,OAAO,CAAC,CAAD,CAAP,CAAWU,UAAX,CAAsBl+C,CAA1B,CAAA;CACD,GAAA;;GAED,OAAO;CAAE66C,IAAAA,GAAG,EAAE0D,UAAP;KAAmBz1C,MAAnB;KAA2Bs0C,IAA3B;CAAiCp9C,IAAAA,CAAAA;IAAxC,CAAA;CACD;;CCzBM,SAASy+C,kBAAT,CAA4BjB,OAA5B,EAAqCriD,KAArC,EAA0D;GAAA,IAAdX,OAAc,uEAAJ,EAAI,CAAA;GAC/D,MAAM;KAAEqgD,GAAF;CAAO6D,IAAAA,cAAc,GAAG,IAAxB;CAA8BC,IAAAA,KAAK,GAAG,IAAtC;CAA4Cn3B,IAAAA,KAAK,GAAG,EAAA;CAApD,GAAA,GAA2DhtB,OAAjE,CAAA;GACA,IAAI4hD,WAAW,GAAG,EAAlB,CAAA;CAEA,EAAA,IAAI8B,UAAU,GAAGI,iBAAiB,CAACd,OAAD,EAAU;CAAE3C,IAAAA,GAAAA;CAAF,GAAV,CAAlC,CAAA;GAEA,IAAIqD,UAAU,CAACrD,GAAX,CAAelgD,MAAf,KAA0B,CAA9B,EAAiC,OAAOyhD,WAAP,CAAA;CACjC,EAAA,IAAIzxC,IAAI,GAAG,CAAX,CAP+D;;GAU/DyxC,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,IAAAA,IAAI,EAAE,MADS;CAEfjQ,IAAAA,QAAQ,EAAE,CACR;OAAEzI,CAAC,EAAG,CAAE,EAAA,EAAG,CAAX,EAAA,CAAA;CAAgB2D,MAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAArC,KADQ,EAER;OAAE3K,CAAC,EAAG,CAAE,EAAA,EAAG,CAAX,EAAA,CAAA;CAAgB2D,MAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAArC,KAFQ,CAFK;CAMfgyC,IAAAA,WAAW,EAAE,SANE;CAOfU,IAAAA,KAAK,EAAE;CACLzqC,MAAAA,IAAI,EAAE,EADD;CAELgsC,MAAAA,IAAI,EAAG,CAAA,GAAA,EAAKV,UAAU,CAACl+C,CAAX,CAAa7E,KAAb,CAAA,CAAoBiQ,WAApB,CAAgC,CAAhC,CAAmC,CAF1C,CAAA;CAGL3C,MAAAA,QAAQ,EAAE;SAAEzI,CAAC,EAAG,CAAE,EAAA,GAAI,CAAZ,EAAA,CAAA;CAAiB2D,QAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAAtC,OAAA;CAHL,KAAA;IAPT,CAAA,CAAA;GAaAA,IAAI,EAAA,CAAA;GAEJ,IAAIk0C,KAAK,GAAG,EAAZ,CAAA;;CACA,EAAA,KAAK,IAAIviD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4hD,UAAU,CAACrD,GAAX,CAAelgD,MAAnC,EAA2C2B,CAAC,EAA5C,EAAgD;KAC9CuiD,KAAK,CAACn8C,IAAN,CAAW;CACT46C,MAAAA,EAAE,EAAEY,UAAU,CAACrD,GAAX,CAAev+C,CAAf,CADK;CAET8gD,MAAAA,IAAI,EAAEc,UAAU,CAACd,IAAX,CAAgB9gD,CAAhB,CAFG;CAGTqH,MAAAA,CAAC,EAAEu6C,UAAU,CAACp1C,MAAX,CAAkBxM,CAAlB,EAAqBnB,KAArB,CAAA;MAHL,CAAA,CAAA;CAKD,GAAA;;CAED,EAAA,IAAIwjD,KAAJ,EAAW;CACTE,IAAAA,KAAK,GAAGA,KAAK,CAAC7gD,IAAN,CAAW,CAAChC,CAAD,EAAIS,CAAJ,KAAUA,CAAC,CAACkH,CAAF,GAAM3H,CAAC,CAAC2H,CAA7B,CAAR,CAAA;CACD,GAAA;;CACD,EAAA,IAAI6jB,KAAJ,EAAW;KACTq3B,KAAK,GAAGA,KAAK,CAAC1hD,KAAN,CAAY,CAAZ,EAAeqqB,KAAf,CAAR,CAAA;CACD,GAAA;;CAED,EAAA,KAAK,IAAI;KAAE81B,EAAF;KAAMF,IAAN;CAAYz5C,IAAAA,CAAAA;IAArB,IAA4Bk7C,KAA5B,EAAmC;KACjCzC,WAAW,CAAC15C,IAAZ,CAAiB;CACfgW,MAAAA,IAAI,EAAE,MADS;CAEfjQ,MAAAA,QAAQ,EAAE,CACR;SAAEzI,CAAC,EAAG,CAAE,EAAA,EAAG,CAAX,EAAA,CAAA;CAAgB2D,QAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAArC,OADQ,EAER;SAAE3K,CAAC,EAAG,CAAE,EAAA,EAAG,CAAX,EAAA,CAAA;CAAgB2D,QAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAArC,OAFQ,CAFK;OAMfkyC,WAAW,EAAEO,IAAI,CAAClC,KANH;CAOfyB,MAAAA,WAAW,EAAE,CAPE;CAQfU,MAAAA,KAAK,EAAE;CACLuB,QAAAA,IAAI,EAAG,CAAEj7C,EAAAA,CAAC,CAACyH,WAAF,CAAc,CAAd,CAAiB,CAAEszC,EAAAA,cAAc,GAAI,CAAKpB,GAAAA,EAAAA,EAAG,CAAZ,CAAA,GAAgB,EAAG,CADxD,CAAA;CAEL70C,QAAAA,QAAQ,EAAE;WAAEzI,CAAC,EAAG,CAAE,EAAA,EAAG,CAAX,EAAA,CAAA;CAAgB2D,UAAAA,CAAC,EAAG,CAAA,EAAE,EAAK,GAAA,EAAA,GAAKgH,IAAK,CAAA,EAAA,CAAA;CAArC,SAAA;CAFL,OAAA;MART,CAAA,CAAA;KAaAA,IAAI,EAAA,CAAA;CACL,GAAA;;CAED,EAAA,OAAOyxC,WAAP,CAAA;CACD;;CC7DD;CACA;CACA;CACA;CACA;CACA;CAEO,SAAS0C,kBAAT,CAA4BC,QAA5B,EAAoD;GAAA,IAAdvkD,OAAc,uEAAJ,EAAI,CAAA;GACzD,MAAM;CAAEwkD,IAAAA,YAAY,GAAG,UAAA;CAAjB,GAAA,GAAgCxkD,OAAtC,CAAA;GACA,IAAIykD,UAAU,GAAG,EAAjB,CAAA;GACA,IAAIC,WAAW,GAAG,CAAlB,CAAA;;CACA,EAAA,KAAK,IAAIC,SAAT,IAAsBJ,QAAtB,EAAgC;CAC9B,IAAA,IAAIljD,KAAK,GAAGsjD,SAAS,CAACH,YAAD,CAArB,CAAA;;CACA,IAAA,IAAI,CAACC,UAAU,CAACpjD,KAAD,CAAf,EAAwB;OACtBojD,UAAU,CAACpjD,KAAD,CAAV,GAAoB;SAClBqjD,WAAW,EAAEA,WAAW,EADN;CAElBh6C,QAAAA,OAAO,EAAE,CAAA;QAFX,CAAA;CAID,KAAA;;CACD+5C,IAAAA,UAAU,CAACpjD,KAAD,CAAV,CAAkBqJ,OAAlB,EAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAO+5C,UAAP,CAAA;CACD;;CCtBD;CACA;CACA;CACA;CACA;CACA;CAEO,SAASG,cAAT,CAAwBL,QAAxB,EAAgD;GAAA,IAAdvkD,OAAc,uEAAJ,EAAI,CAAA;GACrD,MAAM;CAAEwkD,IAAAA,YAAY,GAAG,UAAA;CAAjB,GAAA,GAAgCxkD,OAAtC,CAAA;GACA,MAAMykD,UAAU,GAAG,EAAnB,CAAA;;CACA,EAAA,KAAK,MAAME,SAAX,IAAwBJ,QAAxB,EAAkC;CAChCE,IAAAA,UAAU,CAACv8C,IAAX,CAAgBy8C,SAAS,CAACH,YAAD,CAAzB,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOC,UAAP,CAAA;CACD;;CCZD;CACA;CACA;CACA;CACA;CACA;;CAEO,SAASI,UAAT,CAAoBN,QAApB,EAA4C;GAAA,IAAdvkD,OAAc,uEAAJ,EAAI,CAAA;GACjD,MAAM;CAAEwkD,IAAAA,YAAY,GAAG,UAAA;CAAjB,GAAA,GAAgCxkD,OAAtC,CAAA;CACA,EAAA,MAAM8kD,eAAe,GAAGR,kBAAkB,CAACC,QAAD,EAAWvkD,OAAX,CAA1C,CAAA;GACA,MAAM+H,MAAM,GAAG,IAAIwB,KAAJ,CAAUg7C,QAAQ,CAACpkD,MAAnB,CAAf,CAAA;;CACA,EAAA,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyiD,QAAQ,CAACpkD,MAA7B,EAAqC2B,CAAC,EAAtC,EAA0C;CACxCiG,IAAAA,MAAM,CAACjG,CAAD,CAAN,GAAYgjD,eAAe,CAACP,QAAQ,CAACziD,CAAD,CAAR,CAAY0iD,YAAZ,CAAD,CAAf,CAA2CE,WAAvD,CAAA;CACD,GAAA;;CACD,EAAA,OAAO38C,MAAP,CAAA;CACD;;CCjBD;CACA;CACA;CACA;CACA;CAEO,SAASg9C,WAAT,CAAqB/B,OAArB,EAA4C;GAAA,IAAdhjD,OAAc,uEAAJ,EAAI,CAAA;GACjD,MAAM;CAAEqgD,IAAAA,GAAAA;CAAF,GAAA,GAAUrgD,OAAhB,CAAA;GAEA,IAAIukD,QAAQ,GAAG,EAAf,CAAA;;GAEA,IAAIh7C,KAAK,CAACy6C,OAAN,CAAchB,OAAd,CAA0BA,IAAAA,OAAO,CAAC7iD,MAAR,GAAiB,CAA/C,EAAkD;CAChD,IAAA,KAAK,IAAIuiD,QAAT,IAAqBM,OAArB,EAA8B;OAC5B,IAAI,CAAC3C,GAAD,IAAQA,GAAG,CAAC8C,QAAJ,CAAaT,QAAQ,CAACI,EAAtB,CAAZ,EAAuC;CACrCyB,QAAAA,QAAQ,CAACr8C,IAAT,CAAcw6C,QAAQ,CAACE,IAAvB,CAAA,CAAA;CACD,OAAA;CACF,KAAA;CACF,GAAA;;CAED,EAAA,OAAO2B,QAAP,CAAA;CACD;;CCpBD;CACA;AACA;CACA;AACA;CACA;AACA;CACA;AACA;CACA;CACA;CACA;CACA;AACA;CACA;CACA;CACA;AACA;CACA;CACA;;CACA;CACA;CACA;CACA,SAASS,MAAT,CAAgBC,GAAhB,EAAqB;GACjB,IAAI,CAACA,GAAL,EAAU;CACN,IAAA,OAAO,KAAP,CAAA;CACH,GAAA;;GACD,IAAInjD,CAAC,GAAG,CAAR,CAAA;CACA,EAAA,IAAIisB,GAAG,GAAGk3B,GAAG,CAAC9kD,MAAd,CAAA;;GACA,OAAO2B,CAAC,GAAGisB,GAAX,EAAgB;CACZ;CACA,IAAA,IAAIk3B,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAd,EAAoB;OAChBA,CAAC,EAAA,CAAA;CACD,MAAA,SAAA;CACH,KALW;;;CAOZ,IAAA,IAAImjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAV,IAAkBmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAhC,EAAsC;CAClC;OACA,IAAImjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAAxB,EAA2B;CACvBA,QAAAA,CAAC,IAAI,CAAL,CAAA;CACA,QAAA,SAAA;CACH,OAHD,MAIK;CACD,QAAA,OAAO,KAAP,CAAA;CACH,OAAA;CACJ,KAhBW;CAkBZ;;;CACA,IAAA,IAAI,CAAEmjD,GAAG,CAACnjD,CAAD,CAAH,KAAW,IAAX,IAAmBmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAjC,IAAyCmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAxD,IACAmjD,GAAG,CAACnjD,CAAD,CAAH,KAAW,IAAX,IAAmBmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAjC,IAAyCmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IADxD,KACkEmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAD1F,EAC6F;CACzFA,MAAAA,CAAC,IAAI,CAAL,CAAA;CACA,MAAA,SAAA;CACH,KAvBW;CAyBZ;;;KACA,IAAI,CAAEmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAV,IAAkBmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAA7B,IACAmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAV,IAAkBmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAD7B,KAEAmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAFpB,IAGAmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAHxB,EAG2B;CACvBA,MAAAA,CAAC,IAAI,CAAL,CAAA;CACA,MAAA,SAAA;CACH,KAhCW;CAkCZ;CACA;;;KACA,IAAI,CAAEmjD,GAAG,CAACnjD,CAAD,CAAH,KAAW,IAAX,IAAmBmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAjC,IAAyCmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAxD,IACAmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAAV,IAAkBmjD,GAAG,CAACnjD,CAAD,CAAH,IAAU,IAA5B,IAAoCmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CADxD,IAEAmjD,GAAG,CAACnjD,CAAD,CAAH,KAAW,IAAX,IAAmBmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAAjC,IAAyCmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,IAFxD,KAGAmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAHpB,IAIAmjD,GAAG,CAACnjD,CAAC,GAAG,CAAL,CAAH,IAAc,CAAd,KAAoB,CAJxB,EAI2B;CACvBA,MAAAA,CAAC,IAAI,CAAL,CAAA;CACA,MAAA,SAAA;CACH,KAAA;;CACD,IAAA,OAAO,KAAP,CAAA;CACH,GAAA;;CACD,EAAA,OAAO,IAAP,CAAA;CACH;;CCjED;;;;;;;CAMM,SAAUojD,YAAV,CACJC,IADI,EAE6B;GAAA,IAAjCnlD,OAAiC,uEAAF,EAAE,CAAA;;CAEjC,EAAA,IAAI,OAAOmlD,IAAP,KAAgB,QAApB,EAA8B;CAC5B,IAAA,OAAOA,IAAP,CAAA;CACD,GAAA;;GACD,IAAIC,WAAW,CAACC,MAAZ,CAAmBF,IAAnB,CAA4BA,IAAAA,IAAI,YAAYC,WAAhD,EAA6D;KAC3D,MAAM;OAAEE,QAAQ,GAAGC,aAAa,CAACJ,IAAD,CAAA;CAA1B,KAAA,GAAqCnlD,OAA3C,CAAA;CACA,IAAA,MAAMwlD,OAAO,GAAG,IAAIC,WAAJ,CAAgBH,QAAhB,CAAhB,CAAA;CACA,IAAA,OAAOE,OAAO,CAACE,MAAR,CAAeP,IAAf,CAAP,CAAA;CACD,GAAA;;CACD,EAAA,MAAM,IAAI1iD,SAAJ,CAAc,CAAA,qDAAA,CAAd,CAAN,CAAA;CACD,CAAA;;CAED,SAAS8iD,aAAT,CAAuBJ,IAAvB,EAAqD;CACnD,EAAA,MAAMQ,KAAK,GAAGP,WAAW,CAACC,MAAZ,CAAmBF,IAAnB,CAAA,GACV,IAAIS,UAAJ,CAAeT,IAAI,CAACU,MAApB,EAA4BV,IAAI,CAACW,UAAjC,EAA6CX,IAAI,CAACY,UAAlD,CADU,GAEV,IAAIH,UAAJ,CAAeT,IAAf,CAFJ,CAAA;;CAGA,EAAA,IAAIQ,KAAK,CAACxlD,MAAN,IAAgB,CAApB,EAAuB;CACrB,IAAA,IAAIwlD,KAAK,CAAC,CAAD,CAAL,KAAa,IAAb,IAAqBA,KAAK,CAAC,CAAD,CAAL,KAAa,IAAtC,EAA4C;CAC1C,MAAA,OAAO,UAAP,CAAA;CACD,KAAA;;CACD,IAAA,IAAIA,KAAK,CAAC,CAAD,CAAL,KAAa,IAAb,IAAqBA,KAAK,CAAC,CAAD,CAAL,KAAa,IAAtC,EAA4C;CAC1C,MAAA,OAAO,UAAP,CAAA;CACD,KAAA;CACF,GAXkD;;;CAanD,EAAA,IAAI,CAACK,MAAM,CAACb,IAAD,CAAX,EAAmB,OAAO,QAAP,CAAA;CAEnB,EAAA,OAAO,OAAP,CAAA;CACD;;CChDD;CACA;CACA;CACA;CACA;CACO,SAASc,WAAT,CAAqB5kD,KAArB,EAA4B;GACjC,IAAIA,KAAK,CAAClB,MAAN,KAAiB,CAAjB,IAAsBkB,KAAK,CAAClB,MAAN,KAAiB,CAA3C,EAA8C;CAC5C,IAAA,IAAI+lD,SAAS,GAAG7kD,KAAK,CAAC6F,WAAN,EAAhB,CAAA;CAEA,IAAA,IAAIg/C,SAAS,KAAK,MAAlB,EAA0B,OAAO,IAAP,CAAA;CAC1B,IAAA,IAAIA,SAAS,KAAK,OAAlB,EAA2B,OAAO,KAAP,CAAA;CAC5B,GAAA;;CACD,EAAA,IAAIC,MAAM,GAAG7iD,MAAM,CAACjC,KAAD,CAAnB,CAAA;;GACA,IAAI8kD,MAAM,KAAK,CAAX,IAAgB,CAAC9kD,KAAK,CAAC8hD,QAAN,CAAe,GAAf,CAArB,EAA0C;CACxC,IAAA,OAAO9hD,KAAP,CAAA;CACD,GAAA;;GACD,IAAI,CAACiC,MAAM,CAACwF,KAAP,CAAaq9C,MAAb,CAAL,EAA2B,OAAOA,MAAP,CAAA;CAC3B,EAAA,OAAO9kD,KAAP,CAAA;CACD;;CClBD,MAAM+kD,YAAY,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,YAAhB,CAArB,CAAA;CAEM,SAAUC,mBAAV,CAA8Bt+C,MAA9B,EAAoC;CACxC,EAAA,IAAIi7C,OAAO,GAAGj7C,MAAM,CAACi7C,OAArB,CAAA;CACA,EAAA,IAAI7iD,MAAM,GAAG6iD,OAAO,CAAC7iD,MAArB,CAAA;CACA,EAAA,IAAImmD,YAAY,GAAG;CACjBC,IAAAA,KAAK,EAAE,IAAIh9C,KAAJ,CAAUpJ,MAAV,CADU;CAEjBqmD,IAAAA,MAAM,EAAE;CACNC,MAAAA,EAAE,EAAE;CACFC,QAAAA,SAAS,EAAE,CADT;CAEFz9C,QAAAA,IAAI,EAAE,IAAIM,KAAJ,CAAUpJ,MAAV,CAAA;CAFJ,OAAA;CADE,KAAA;IAFV,CAAA;GAUA,IAAIwmD,kBAAkB,GAAG,EAAzB,CAAA;;CACA,EAAA,KAAK,IAAI7kD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGskD,YAAY,CAACjmD,MAAjC,EAAyC2B,CAAC,EAA1C,EAA8C;KAC5C,IAAI+gD,KAAK,GAAG+D,qBAAqB,CAACR,YAAY,CAACtkD,CAAD,CAAb,CAAjC,CAAA;;CACA,IAAA,IAAIkhD,OAAO,CAAC,CAAD,CAAP,CAAWH,KAAX,CAAJ,EAAuB;OACrB8D,kBAAkB,CAACz+C,IAAnB,CAAwB26C,KAAxB,CAAA,CAAA;CACAyD,MAAAA,YAAY,CAACE,MAAb,CAAoB3D,KAApB,CAA6B,GAAA;CAC3B6D,QAAAA,SAAS,EAAE,CADgB;CAE3Bz9C,QAAAA,IAAI,EAAE,IAAIM,KAAJ,CAAUpJ,MAAV,CAAA;QAFR,CAAA;CAID,KAAA;CACF,GAAA;;GAED,KAAK,IAAI2B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3B,MAApB,EAA4B2B,CAAC,EAA7B,EAAiC;CAC/B,IAAA,IAAI4gD,QAAQ,GAAGM,OAAO,CAAClhD,CAAD,CAAtB,CAAA;CACAwkD,IAAAA,YAAY,CAACC,KAAb,CAAmBzkD,CAAnB,CAAwB4gD,GAAAA,QAAQ,CAACmE,SAAjC,CAAA;;CACA,IAAA,KAAK,IAAI9kD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4kD,kBAAkB,CAACxmD,MAAvC,EAA+C4B,CAAC,EAAhD,EAAoD;OAClDukD,YAAY,CAACE,MAAb,CAAoBG,kBAAkB,CAAC5kD,CAAD,CAAtC,EAA2CkH,IAA3C,CAAgDnH,CAAhD,CAAqDwB,GAAAA,MAAM,CACzDo/C,QAAQ,CAACiE,kBAAkB,CAAC5kD,CAAD,CAAnB,CADiD,CAA3D,CAAA;CAGD,KAAA;;KACD,IAAI2gD,QAAQ,CAACz5C,IAAb,EAAmB;OACjBq9C,YAAY,CAACE,MAAb,CAAoBC,EAApB,CAAuBx9C,IAAvB,CAA4BnH,CAA5B,CAAiC,GAAA,CAAC4gD,QAAQ,CAACz5C,IAAT,CAAczD,CAAf,EAAkBk9C,QAAQ,CAACz5C,IAAT,CAAcE,CAAhC,CAAjC,CAAA;CACD,KAAA;CACF,GAAA;;GACDpB,MAAM,CAACu+C,YAAP,GAAsBA,YAAtB,CAAA;CACD,CAAA;CAEK,SAAUQ,SAAV,CAAoBC,gBAApB,EAAoC;CACxC,EAAA,OAAOX,YAAY,CAACp1C,OAAb,CAAqB+1C,gBAArB,CAAA,KAA2C,CAAC,CAAnD,CAAA;CACD,CAAA;CAEK,SAAUH,qBAAV,CAAgCvlD,KAAhC,EAAqC;GACzC,OAAOA,KAAK,CAAC6F,WAAN,EAAA,CAAoB0B,OAApB,CAA4B,YAA5B,EAA0C,EAA1C,CAAP,CAAA;CACD;;CChDa,SAAUo+C,mBAAV,CAA8BC,WAA9B,EAAyC;GACrD,IAAIC,UAAU,GAAG,EAAjB,CAAA;;CACA,EAAA,KAAK,IAAIplD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmlD,WAAW,CAAC9mD,MAAhC,EAAwC2B,CAAC,EAAzC,EAA6C;KAC3ColD,UAAU,CAACh/C,IAAX,CAAgB5E,MAAM,CAAC2jD,WAAW,CAACnlD,CAAD,CAAZ,CAAtB,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOolD,UAAP,CAAA;CACD;;CCNa,SAAUC,eAAV,CAA0BzE,QAA1B,EAAoCrhD,KAApC,EAAyC;CACrD;CACA;CACA;CAEA,EAAA,IAAI4hD,OAAO,GAAGP,QAAQ,CAACO,OAAvB,CAAA;CACA,EAAA,IAAImE,MAAM,GAAG1E,QAAQ,CAAC0E,MAAtB,CAAA;GAEA1E,QAAQ,CAAC2E,QAAT,GAAoB,IAApB,CAAA;CACA,EAAA,IAAIC,WAAW,GAAG;CAAE9hD,IAAAA,CAAC,EAAE,EAAL;CAAS2D,IAAAA,CAAC,EAAE,EAAA;IAA9B,CAAA;GACAu5C,QAAQ,CAACz5C,IAAT,GAAgBq+C,WAAhB,CAAA;CAEA,EAAA,IAAIC,QAAQ,GAAG7E,QAAQ,CAAC8E,MAAxB,CAAA;CACA,EAAA,IAAIC,QAAQ,GAAG/E,QAAQ,CAACgF,MAAxB,CAbqD;CAgBrD;;GACA,IAAIC,OAAO,GAAG,KAAd,CAAA;CACA,EAAA,IAAIC,KAAJ,CAAA;GACA,IAAI9lD,CAAC,GAAG,CAAR,CAAA;;GACA,OAAOA,CAAC,GAAGT,KAAK,CAAClB,MAAjB,EAAyB2B,CAAC,EAA1B,EAA8B;CAC5B8lD,IAAAA,KAAK,GAAGvmD,KAAK,CAACwmD,UAAN,CAAiB/lD,CAAjB,CAAR,CAAA;;CACA,IAAA,IAAI8lD,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;CAChCD,MAAAA,OAAO,GAAG,IAAV,CAAA;CACD,KAFD,MAEO;CACL,MAAA,IAAIA,OAAJ,EAAa,MAAA;CACd,KAAA;CACF,GA3BoD;;;GA8BrD,IAAIG,OAAO,GAAG,IAAd,CAAA;GACA,IAAIC,YAAY,GAAG,KAAnB,CAAA;GACA,IAAIC,gBAAgB,GAAG,KAAvB,CAAA;GACA,IAAIC,cAAc,GAAG,CAArB,CAAA;GACA,IAAIC,WAAW,GAAG,KAAlB,CAAA;GACA,IAAIC,SAAS,GAAG,KAAhB,CAAA;CACA,EAAA,IAAIj8C,YAAY,GAAG,CAAnB,CApCqD;;CAqCrD,EAAA,IAAIk8C,SAAS,GAAG,CAAhB,CArCqD;;GAsCrD,IAAIC,UAAU,GAAG,KAAjB,CAAA;GACA,IAAIC,OAAO,GAAG,KAAd,CAAA;GACA,IAAIC,cAAc,GAAG,KAArB,CAAA;GACA,IAAIC,eAAe,GAAG,CAAtB,CAAA;;GACA,OAAO1mD,CAAC,IAAIT,KAAK,CAAClB,MAAlB,EAA0B2B,CAAC,EAA3B,EAA+B;CAC7B,IAAA,IAAIA,CAAC,KAAKT,KAAK,CAAClB,MAAhB,EAAwBynD,KAAK,GAAG,EAAR,CAAxB,KACKA,KAAK,GAAGvmD,KAAK,CAACwmD,UAAN,CAAiB/lD,CAAjB,CAAR,CAAA;;CACL,IAAA,IAAIqmD,SAAJ,EAAe;CACb;CACA,MAAA,IAAIP,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;CAChCE,QAAAA,OAAO,GAAG,IAAV,CAAA;CACAK,QAAAA,SAAS,GAAG,KAAZ,CAAA;CACD,OAAA;CACF,KAND,MAMO;CACL;CACA;CACA;CACA,MAAA,IAAIP,KAAK,IAAI,EAAT,IAAeA,KAAK,IAAI,EAA5B,EAAgC;CAC9B;CACAU,QAAAA,OAAO,GAAG,IAAV,CAAA;;SACA,IAAIE,eAAe,GAAG,CAAtB,EAAyB;CACvBt8C,UAAAA,YAAY,IAAI,CAAC07C,KAAK,GAAG,EAAT,IAAe9mD,IAAI,CAAC+U,GAAL,CAAS,EAAT,EAAa2yC,eAAe,EAA5B,CAA/B,CAAA;CACD,SAFD,MAEO;CACLt8C,UAAAA,YAAY,IAAI,EAAhB,CAAA;WACAA,YAAY,IAAI07C,KAAK,GAAG,EAAxB,CAAA;CACD,SAAA;QARH,MASO,IAAIA,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;CACvC;CACAU,QAAAA,OAAO,GAAG,IAAV,CAAA;SACAE,eAAe,EAAA,CAAA;CAChB,OAJM,MAIA;CACL,QAAA,IAAIF,OAAJ,EAAa;CACX;CACA,UAAA,IAAIR,OAAJ,EAAa;aACXA,OAAO,GAAG,KAAV,CADW;CAEX;CACA;CACA;;CACA,YAAA,IAAIE,gBAAJ,EAAsBO,cAAc,GAAG,IAAjB,CAAA;CACvB,WAND,MAMO;CACL;CACA,YAAA,IAAIA,cAAJ,EAAoB;CAClBA,cAAAA,cAAc,GAAG,KAAjB,CAAA;CACD,aAFD,MAEO;CACL,cAAA,IAAIR,YAAJ,EAAkB;CAChBE,gBAAAA,cAAc,GAAGI,UAAU,GAAG,CAAIn8C,GAAAA,YAAP,GAAsBA,YAAjD,CAAA;CACA87C,gBAAAA,gBAAgB,GAAG,IAAnB,CAAA;CACAD,gBAAAA,YAAY,GAAG,KAAf,CAAA;CACD,eAJD,MAIO,IAAI,CAACG,WAAL,EAAkB;CACvBE,gBAAAA,SAAS,GAAGC,UAAU,GAAG,CAAIn8C,GAAAA,YAAP,GAAsBA,YAA5C,CAAA;CACD,eAAA;;eACD,IAAIu8C,SAAS,GAAGP,WAAW,GAAGh8C,YAAY,GAAG,CAAlB,GAAsB,CAAjD,CAAA;;eACA,KAAK,IAAInK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0mD,SAApB,EAA+B1mD,CAAC,EAAhC,EAAoC;CAClC,gBAAA,IAAIimD,gBAAJ,EAAsB;CACpBP,kBAAAA,QAAQ,IAAIQ,cAAZ,CAAA;CACD,iBAFD,MAEO;CACLR,kBAAAA,QAAQ,GAAGW,SAAX,CAAA;CACD,iBAAA;;CACDd,gBAAAA,WAAW,CAAC9hD,CAAZ,CAAc0C,IAAd,CAAmBq/C,QAAnB,CAAA,CAAA;CACAD,gBAAAA,WAAW,CAACn+C,CAAZ,CAAcjB,IAAd,CAAmBu/C,QAAQ,GAAGxE,OAA9B,CAAA,CAAA;CACAsE,gBAAAA,QAAQ,IAAIH,MAAZ,CAAA;CACD,eAAA;CACF,aAAA;CACF,WAAA;;CACDiB,UAAAA,UAAU,GAAG,KAAb,CAAA;CACAn8C,UAAAA,YAAY,GAAG,CAAf,CAAA;CACAs8C,UAAAA,eAAe,GAAG,CAAlB,CAAA;CACAF,UAAAA,OAAO,GAAG,KAAV,CAAA;CACAJ,UAAAA,WAAW,GAAG,KAAd,CAAA;CACD,SAvCI;;;CA0CL,QAAA,IAAIN,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;CAC5BU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAN,UAAAA,gBAAgB,GAAG,KAAnB,CAAA;WACA97C,YAAY,GAAG07C,KAAK,GAAG,EAAvB,CAAA;UAHF,MAIO,IAAIA,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,GAA1B,EAA+B;CACpC;CACAU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAN,UAAAA,gBAAgB,GAAG,KAAnB,CAAA;WACA97C,YAAY,GAAG07C,KAAK,GAAG,EAAvB,CAAA;CACAS,UAAAA,UAAU,GAAG,IAAb,CAAA;CACD,SANM,MAMA,IAAIT,KAAK,KAAK,GAAd,EAAmB;CACxB;CACAU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAJ,UAAAA,WAAW,GAAG,IAAd,CAAA;CACAh8C,UAAAA,YAAY,GAAG,CAAf,CAAA;UAJK,MAKA,IAAI07C,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;CACnCU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAJ,UAAAA,WAAW,GAAG,IAAd,CAAA;WACAh8C,YAAY,GAAG07C,KAAK,GAAG,EAAvB,CAAA;UAHK,MAIA,IAAIA,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;CACnC;CACAU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAP,UAAAA,YAAY,GAAG,IAAf,CAAA;WACA77C,YAAY,GAAG07C,KAAK,GAAG,EAAvB,CAAA;UAJK,MAKA,IAAIA,KAAK,GAAG,GAAR,IAAeA,KAAK,GAAG,GAA3B,EAAgC;CACrC;CACAU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAP,UAAAA,YAAY,GAAG,IAAf,CAAA;WACA77C,YAAY,GAAG07C,KAAK,GAAG,GAAvB,CAAA;CACAS,UAAAA,UAAU,GAAG,IAAb,CAAA;CACD,SANM,MAMA,IAAIT,KAAK,KAAK,EAAV,IAAgBvmD,KAAK,CAACwmD,UAAN,CAAiB/lD,CAAC,GAAG,CAArB,CAAA,KAA4B,EAAhD,EAAoD;CACzD;CACAwmD,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAH,UAAAA,SAAS,GAAG,IAAZ,CAAA;CACD,SAJM,MAIA,IAAIP,KAAK,KAAK,EAAd,EAAkB;CACvB;CACAU,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAP,UAAAA,YAAY,GAAG,IAAf,CAAA;CACA77C,UAAAA,YAAY,GAAG,CAAf,CAAA;CACAm8C,UAAAA,UAAU,GAAG,KAAb,CAAA;CACD,SANM,MAMA,IAAIT,KAAK,KAAK,EAAd,EAAkB;CACvB;CACA;WACA,IAAIc,MAAM,GAAGrnD,KAAK,CAACwmD,UAAN,CAAiB/lD,CAAC,GAAG,CAArB,CAAb,CAAA;;CACA,UAAA,IACG4mD,MAAM,IAAI,EAAV,IAAgBA,MAAM,IAAI,EAA3B,IACAA,MAAM,KAAK,EADX,IAEAA,MAAM,KAAK,EAHb,EAIE;CACAJ,YAAAA,OAAO,GAAG,IAAV,CAAA;CACA,YAAA,IAAI,CAACR,OAAL,EAAcE,gBAAgB,GAAG,KAAnB,CAAA;CACdK,YAAAA,UAAU,GAAG,IAAb,CAAA;CACD,WAAA;UAZI,MAaA,IAAIT,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;CACvCE,UAAAA,OAAO,GAAG,IAAV,CAAA;CACAK,UAAAA,SAAS,GAAG,KAAZ,CAAA;CACD,SAlGI;CAoGL;;CACD,OAAA;CACF,KAAA;CACF,GAAA;CACF;;CC5KD,MAAMQ,mBAAmB,GAAG,QAA5B,CAAA;CACA,MAAMC,oBAAoB,GAAG,SAA7B,CAAA;CAEc,SAAUC,cAAV,CAAyBnG,QAAzB,EAAmCrhD,KAAnC,EAA0C0G,MAA1C,EAAgD;GAC5D26C,QAAQ,CAACoG,WAAT,GAAuB,IAAvB,CAAA;;CAEA,EAAA,IAAI,CAACpG,QAAQ,CAACqG,SAAV,IAAuB7nD,MAAM,CAACgmC,IAAP,CAAYwb,QAAQ,CAACqG,SAArB,CAAA,KAAoC,CAA/D,EAAkE;CAChEC,IAAAA,SAAO,CAACtG,QAAD,EAAWrhD,KAAX,EAAkB0G,MAAlB,CAAP,CAAA;CACD,GAFD,MAEO;CACLkhD,IAAAA,QAAQ,CAACvG,QAAD,EAAWrhD,KAAX,EAAkB0G,MAAlB,CAAR,CAAA;CACD,GAP2D;;;GAU5D,IAAI26C,QAAQ,CAACqG,SAAb,EAAwB;CACtB,IAAA,KAAK,IAAItQ,GAAT,IAAgBiK,QAAQ,CAACqG,SAAzB,EAAoC;CAClCrG,MAAAA,QAAQ,CAACqG,SAAT,CAAmBtQ,GAAnB,CAAwBxvC,CAAAA,IAAxB,GAA+By5C,QAAQ,CAACz5C,IAAT,CAAcwvC,GAAd,CAA/B,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;;CAED,SAASuQ,SAAT,CAAiBtG,QAAjB,EAA2BrhD,KAA3B,EAAkC0G,MAAlC,EAAwC;CACtC,EAAA,IAAIu/C,WAAW,GAAG;CAAE9hD,IAAAA,CAAC,EAAE,EAAL;CAAS2D,IAAAA,CAAC,EAAE,EAAA;IAA9B,CAAA;CACAu5C,EAAAA,QAAQ,CAACz5C,IAAT,GAAgBq+C,WAAhB,CAFsC;;CAKtC,EAAA,IAAI4B,KAAK,GAAG7nD,KAAK,CAACorB,KAAN,CAAY,kBAAZ,CAAZ,CAAA;;CAEA,EAAA,KAAK,IAAI3qB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGonD,KAAK,CAAC/oD,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC,IAAA,IAAI2F,MAAM,GAAGyhD,KAAK,CAACpnD,CAAD,CAAL,CACVmwB,IADU,EAAA,CAEVrpB,OAFU,CAEF+/C,mBAFE,EAEmB,EAFnB,EAGVl8B,KAHU,CAGJm8B,oBAHI,CAAb,CAAA;;CAIA,IAAA,IAAInhD,MAAM,CAACtH,MAAP,GAAgB,CAAhB,KAAsB,CAA1B,EAA6B;CAC3B,MAAA,KAAK,IAAI4B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0F,MAAM,CAACtH,MAA3B,EAAmC4B,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;CAC5C;CACAulD,QAAAA,WAAW,CAAC9hD,CAAZ,CAAc0C,IAAd,CAAmB5E,MAAM,CAACmE,MAAM,CAAC1F,CAAD,CAAP,CAAN,GAAoB2gD,QAAQ,CAACyG,OAAhD,CAAA,CAAA;CACA7B,QAAAA,WAAW,CAACn+C,CAAZ,CAAcjB,IAAd,CAAmB5E,MAAM,CAACmE,MAAM,CAAC1F,CAAC,GAAG,CAAL,CAAP,CAAN,GAAwB2gD,QAAQ,CAACO,OAApD,CAAA,CAAA;CACD,OAAA;CACF,KAND,MAMO;CACLl7C,MAAAA,MAAM,CAACqhD,IAAP,CAAYlhD,IAAZ,CAAiB,CAAA,cAAA,EAAiBT,MAAM,CAAxC,CAAA,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF,CAAA;;CAED,SAASwhD,QAAT,CAAkBvG,QAAlB,EAA4BrhD,KAA5B,EAAmC0G,MAAnC,EAAyC;GACvC,IAAIu/C,WAAW,GAAG,EAAlB,CAAA;GACA,IAAIyB,SAAS,GAAG7nD,MAAM,CAACgmC,IAAP,CAAYwb,QAAQ,CAACqG,SAArB,CAAhB,CAAA;CACA,EAAA,IAAIM,iBAAiB,GAAGN,SAAS,CAAC5oD,MAAlC,CAAA;GACA4oD,SAAS,CAAC5+C,OAAV,CAAmBm/C,QAAD,IAAehC,WAAW,CAACgC,QAAD,CAAX,GAAwB,EAAzD,CAAA,CAAA;CACA5G,EAAAA,QAAQ,CAACz5C,IAAT,GAAgBq+C,WAAhB,CALuC;;CAQvC,EAAA,IAAI4B,KAAK,GAAG7nD,KAAK,CAACorB,KAAN,CAAY,kBAAZ,CAAZ,CAAA;;CAEA,EAAA,KAAK,IAAI3qB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGonD,KAAK,CAAC/oD,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC,IAAA,IAAI2F,MAAM,GAAGyhD,KAAK,CAACpnD,CAAD,CAAL,CACVmwB,IADU,EAAA,CAEVrpB,OAFU,CAEF+/C,mBAFE,EAEmB,EAFnB,EAGVl8B,KAHU,CAGJm8B,oBAHI,CAAb,CAAA;;CAIA,IAAA,IAAInhD,MAAM,CAACtH,MAAP,GAAgBkpD,iBAAhB,KAAsC,CAA1C,EAA6C;CAC3C,MAAA,KAAK,IAAItnD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0F,MAAM,CAACtH,MAA3B,EAAmC4B,CAAC,EAApC,EAAwC;CACtC;CACAulD,QAAAA,WAAW,CAACyB,SAAS,CAAChnD,CAAC,GAAGsnD,iBAAL,CAAV,CAAX,CAA8CnhD,IAA9C,CAAmD5E,MAAM,CAACmE,MAAM,CAAC1F,CAAD,CAAP,CAAzD,CAAA,CAAA;CACD,OAAA;CACF,KALD,MAKO;CACLgG,MAAAA,MAAM,CAACqhD,IAAP,CAAYlhD,IAAZ,CAAiB,CAAA,cAAA,EAAiBT,MAAM,CAAxC,CAAA,CAAA,CAAA;CACD,KAAA;CACF,GAAA;CACF;;CCpEa,SAAU8hD,QAAV,CAAmB7G,QAAnB,EAA6BrhD,KAA7B,EAAkC;GAC9C,IAAImoD,kBAAkB,GAAG,sBAAzB,CAAA;GAEA9G,QAAQ,CAAC+G,SAAT,GAAqB,IAArB,CAAA;CACA,EAAA,IAAIhiD,MAAJ,CAAA;CACA,EAAA,IAAI6/C,WAAW,GAAG;CAAE9hD,IAAAA,CAAC,EAAE,EAAL;CAAS2D,IAAAA,CAAC,EAAE,EAAA;IAA9B,CAAA;GACAu5C,QAAQ,CAACz5C,IAAT,GAAgBq+C,WAAhB,CAAA;CAEA,EAAA,IAAI4B,KAAK,GAAG7nD,KAAK,CAACorB,KAAN,CAAY,kBAAZ,CAAZ,CAAA;;CAEA,EAAA,KAAK,IAAI3qB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGonD,KAAK,CAAC/oD,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC2F,IAAAA,MAAM,GAAGyhD,KAAK,CAACpnD,CAAD,CAAL,CAASmwB,IAAT,EAAA,CAAgBrpB,OAAhB,CAAwB4gD,kBAAxB,EAA4C,EAA5C,EAAgD/8B,KAAhD,CAAsD,GAAtD,CAAT,CAAA;KACA66B,WAAW,CAAC9hD,CAAZ,CAAc0C,IAAd,CAAmB5E,MAAM,CAACmE,MAAM,CAAC,CAAD,CAAP,CAAzB,CAAA,CAAA;KACA6/C,WAAW,CAACn+C,CAAZ,CAAcjB,IAAd,CAAmB5E,MAAM,CAACmE,MAAM,CAAC,CAAD,CAAP,CAAzB,CAAA,CAAA;CACD,GAAA;CACF;;CCZD,SAASnF,MAAT,CAAgBE,KAAhB,EAAuB;CACrB,EAAA,IAAI,CAACpB,UAAU,CAACoB,KAAD,CAAf,EAAwB;CACtB,IAAA,MAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAID,KAAK,CAACrC,MAAN,KAAiB,CAArB,EAAwB;CACtB,IAAA,MAAM,IAAIsC,SAAJ,CAAc,yBAAd,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,OAAOC,iBAAiB,CAACF,KAAK,CAACG,KAAN,EAAD,CAAxB,CAAA;CACD;;CCXa,SAAU+mD,YAAV,CAAuB1G,OAAvB,EAA8B;CAC1C,EAAA,IAAI2G,IAAI,GAAG3G,OAAO,CAAC,CAAD,CAAP,CAAW/5C,IAAX,CAAgBE,CAAhB,CAAkB,CAAlB,CAAX,CAAA;GACA,IAAIygD,IAAI,GAAGD,IAAX,CAAA;CACA,EAAA,IAAIE,KAAK,GAAG7G,OAAO,CAAC7iD,MAApB,CAAA;GACA,IAAI2pD,KAAK,GAAG9G,OAAO,CAAC,CAAD,CAAP,CAAW/5C,IAAX,CAAgBzD,CAAhB,CAAkBrF,MAA9B,CAAA;CAEA,EAAA,IAAIs5B,CAAC,GAAG,IAAIlwB,KAAJ,CAAUsgD,KAAV,CAAR,CAAA;;GACA,KAAK,IAAI/nD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+nD,KAApB,EAA2B/nD,CAAC,EAA5B,EAAgC;KAC9B23B,CAAC,CAAC33B,CAAD,CAAD,GAAOkhD,OAAO,CAAClhD,CAAD,CAAP,CAAWmH,IAAX,CAAgBE,CAAvB,CAAA;;KACA,KAAK,IAAIpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+nD,KAApB,EAA2B/nD,CAAC,EAA5B,EAAgC;OAC9B,IAAIV,KAAK,GAAGo4B,CAAC,CAAC33B,CAAD,CAAD,CAAKC,CAAL,CAAZ,CAAA;CACA,MAAA,IAAIV,KAAK,GAAGsoD,IAAZ,EAAkBA,IAAI,GAAGtoD,KAAP,CAAA;CAClB,MAAA,IAAIA,KAAK,GAAGuoD,IAAZ,EAAkBA,IAAI,GAAGvoD,KAAP,CAAA;CACnB,KAAA;CACF,GAAA;;CAED,EAAA,MAAMmmD,MAAM,GAAGxE,OAAO,CAAC,CAAD,CAAP,CAAW/5C,IAAX,CAAgBzD,CAAhB,CAAkB,CAAlB,CAAf,CAAA;GACA,MAAMukD,KAAK,GAAG/G,OAAO,CAAC,CAAD,CAAP,CAAW/5C,IAAX,CAAgBzD,CAAhB,CAAkBw9C,OAAO,CAAC,CAAD,CAAP,CAAW/5C,IAAX,CAAgBzD,CAAhB,CAAkBrF,MAAlB,GAA2B,CAA7C,CAAd,CAjB0C;;CAkB1C,EAAA,MAAMunD,MAAM,GAAG1E,OAAO,CAAC,CAAD,CAAP,CAAW6D,SAA1B,CAAA;GACA,MAAMmD,KAAK,GAAGhH,OAAO,CAAC6G,KAAK,GAAG,CAAT,CAAP,CAAmBhD,SAAjC,CAnB0C;CAsB1C;;GACA,IAAIW,MAAM,GAAGuC,KAAb,EAAoB;CAClB,IAAA,KAAK,IAAIrH,QAAT,IAAqBjpB,CAArB,EAAwB;CACtBipB,MAAAA,QAAQ,CAACnmB,OAAT,EAAA,CAAA;CACD,KAAA;CACF,GAAA;;GACD,IAAImrB,MAAM,GAAGsC,KAAb,EAAoB;CAClBvwB,IAAAA,CAAC,CAAC8C,OAAF,EAAA,CAAA;CACD,GAAA;;GAED,MAAM0tB,OAAO,GAAG,EAAhB,CAAA;;CACA,EAAA,KAAK,IAAInoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG23B,CAAC,CAACt5B,MAAtB,EAA8B2B,CAAC,EAA/B,EAAmC;KACjC,MAAM4M,GAAG,GAAGlO,YAAY,CAACP,IAAb,CAAkBw5B,CAAC,CAAC33B,CAAD,CAAnB,CAAZ,CAAA;;CACA,IAAA,KAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4M,GAAG,CAACvO,MAAxB,EAAgC2B,CAAC,EAAjC,EAAqC;CACnC,MAAA,IAAI4M,GAAG,CAAC5M,CAAD,CAAH,GAAS,CAAb,EAAgB4M,GAAG,CAAC5M,CAAD,CAAH,GAAS,CAAC4M,GAAG,CAAC5M,CAAD,CAAb,CAAA;CACjB,KAAA;;CACDmoD,IAAAA,OAAO,CAAC/hD,IAAR,CAAagiD,MAAS,CAACx7C,GAAD,CAAtB,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,MAAMpM,QAAM,GAAG4nD,MAAS,CAACD,OAAD,CAAxB,CAAA;GAEA,OAAO;CACLxwB,IAAAA,CAAC,EAAEA,CADE;KAEL0wB,IAAI,EAAErpD,IAAI,CAAC8C,GAAL,CAAS4jD,MAAT,EAAiBuC,KAAjB,CAFD;KAGLK,IAAI,EAAEtpD,IAAI,CAAC+C,GAAL,CAAS2jD,MAAT,EAAiBuC,KAAjB,CAHD;KAILM,IAAI,EAAEvpD,IAAI,CAAC8C,GAAL,CAAS8jD,MAAT,EAAiBsC,KAAjB,CAJD;KAKLM,IAAI,EAAExpD,IAAI,CAAC+C,GAAL,CAAS6jD,MAAT,EAAiBsC,KAAjB,CALD;CAMLL,IAAAA,IAAI,EAAEA,IAND;CAOLC,IAAAA,IAAI,EAAEA,IAPD;CAQLW,IAAAA,KAAK,EAAEjoD,QAAAA;IART,CAAA;CAUD;;CCtDa,SAAUkoD,oBAAV,CAA+BC,KAA/B,EAAsCzqD,OAAtC,EAA6C;CACzD,EAAA,IAAIuqD,KAAK,GAAGE,KAAK,CAACF,KAAlB,CAAA;CACA,EAAA,IAAI9wB,CAAC,GAAGgxB,KAAK,CAAChxB,CAAd,CAAA;CACA,EAAA,IAAIixB,YAAJ,EAAkBC,YAAlB,EAAgCC,YAAhC,EAA8CC,YAA9C,CAAA;CACA,EAAA,IAAIC,OAAJ,EAAaC,OAAb,EAAsBC,OAAtB,EAA+BC,OAA/B,CAAA;CACA,EAAA,IAAIC,YAAY,GAAGzxB,CAAC,CAACt5B,MAArB,CAAA;CACA,EAAA,IAAIgrD,QAAQ,GAAG1xB,CAAC,CAAC,CAAD,CAAD,CAAKt5B,MAApB,CAAA;CACA,EAAA,IAAIirD,GAAJ,EAASC,GAAT,EAAcC,GAAd,EAAmBC,GAAnB,CAAA;CAEA,EAAA,IAAIj/C,EAAE,GAAGm+C,KAAK,CAACN,IAAf,CAAA;CACA,EAAA,IAAIqB,EAAE,GAAGf,KAAK,CAACL,IAAf,CAAA;GACA,IAAI7Y,EAAE,GAAG,CAACia,EAAE,GAAGl/C,EAAN,KAAa6+C,QAAQ,GAAG,CAAxB,CAAT,CAAA;CACA,EAAA,IAAIl+C,EAAE,GAAGw9C,KAAK,CAACJ,IAAf,CAAA;CACA,EAAA,IAAIoB,EAAE,GAAGhB,KAAK,CAACH,IAAf,CAAA;GACA,IAAI9Y,EAAE,GAAG,CAACia,EAAE,GAAGx+C,EAAN,KAAai+C,YAAY,GAAG,CAA5B,CAAT,CAAA;CACA,EAAA,IAAIvB,IAAI,GAAGc,KAAK,CAACd,IAAjB,CAAA;CACA,EAAA,IAAIC,IAAI,GAAGa,KAAK,CAACb,IAAjB,CAhByD;CAmBzD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA,EAAA,IAAI8B,IAAI,GAAG1rD,OAAO,CAAC2rD,eAAR,GAA0B,CAArC,CAAA;CACA,EAAA,IAAIC,aAAa,GAAG,IAAIriD,KAAJ,CAAUmiD,IAAV,CAApB,CAAA;CACA,EAAA,IAAIG,UAAJ,CAAA;;GACA,KAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGJ,IAA5B,EAAkCI,KAAK,EAAvC,EAA2C;CACzC;KACA,IAAIC,YAAY,GAAG,EAAnB,CAAA;CACAH,IAAAA,aAAa,CAACE,KAAD,CAAb,GAAuBC,YAAvB,CAAA;CACA,IAAA,IAAIC,IAAI,GAAGF,KAAK,GAAG,CAAnB,CAAA;KACA,IAAIxkD,MAAM,GACR,CAACsiD,IAAI,GAAG5pD,OAAO,CAACisD,eAAR,GAA0B1B,KAAlC,IACAzpD,IAAI,CAACkU,GAAL,CAAS,CAAC82C,KAAK,IAAI,CAAV,IAAe9rD,OAAO,CAAC2rD,eAAhC,CAFF,CAAA;;KAGA,IAAIK,IAAI,KAAK,CAAb,EAAgB;CACdH,MAAAA,UAAU,GAAGvkD,MAAM,GAAGtH,OAAO,CAACisD,eAAR,GAA0B1B,KAAhD,CAAA;CACD,KAFD,MAEO;OACLsB,UAAU,GAAG,IAAIvkD,MAAJ,GAAatH,OAAO,CAACisD,eAAR,GAA0B1B,KAApD,CAAA;CACD,KAAA;;KACD,IAAIrB,KAAK,GAAG,EAAZ,CAAA;KACA6C,YAAY,CAACG,MAAb,GAAsBL,UAAtB,CAAA;KACAE,YAAY,CAAC7C,KAAb,GAAqBA,KAArB,CAAA;CAEA,IAAA,IAAI2C,UAAU,IAAIlC,IAAd,IAAsBkC,UAAU,IAAIjC,IAAxC,EAA8C,SAAA;;CAE9C,IAAA,KAAK,IAAIuC,WAAW,GAAG,CAAvB,EAA0BA,WAAW,GAAGjB,YAAY,GAAG,CAAvD,EAA0DiB,WAAW,EAArE,EAAyE;CACvE,MAAA,IAAIC,UAAU,GAAG3yB,CAAC,CAAC0yB,WAAD,CAAlB,CAAA;CACA,MAAA,IAAIE,eAAe,GAAG5yB,CAAC,CAAC0yB,WAAW,GAAG,CAAf,CAAvB,CAAA;;CACA,MAAA,KAAK,IAAIG,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGnB,QAAQ,GAAG,CAAvC,EAA0CmB,KAAK,EAA/C,EAAmD;CACjD5B,QAAAA,YAAY,GAAG0B,UAAU,CAACE,KAAD,CAAzB,CAAA;CACA3B,QAAAA,YAAY,GAAGyB,UAAU,CAACE,KAAK,GAAG,CAAT,CAAzB,CAAA;CACA1B,QAAAA,YAAY,GAAGyB,eAAe,CAACC,KAAD,CAA9B,CAAA;CACAzB,QAAAA,YAAY,GAAGwB,eAAe,CAACC,KAAK,GAAG,CAAT,CAA9B,CAAA;SAEAxB,OAAO,GAAGJ,YAAY,GAAGmB,UAAzB,CAAA;SACAd,OAAO,GAAGJ,YAAY,GAAGkB,UAAzB,CAAA;SACAb,OAAO,GAAGJ,YAAY,GAAGiB,UAAzB,CAAA;CACAZ,QAAAA,OAAO,GAAGJ,YAAY,GAAGgB,UAAzB,CATiD;CAYjD;CACA;;CACA,QAAA,IAAIf,OAAO,KAAKC,OAAZ,IAAuBD,OAAO,KAAKE,OAAvC,EAAgD;WAC9CI,GAAG,GACDkB,KAAK,GAAG,CAACT,UAAU,GAAGnB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CADV,CAAA;CAEAW,UAAAA,GAAG,GAAGc,WAAN,CAAA;CACAb,UAAAA,GAAG,GAAGgB,KAAN,CAAA;WACAf,GAAG,GACDY,WAAW,GACX,CAACN,UAAU,GAAGnB,YAAd,KAA+BE,YAAY,GAAGF,YAA9C,CAFF,CAAA;CAGAxB,UAAAA,KAAK,CAAChhD,IAAN,CAAWkjD,GAAG,GAAG7Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,UAAAA,KAAK,CAAChhD,IAAN,CAAWmjD,GAAG,GAAG7Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACAi8C,UAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,UAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,SA1BgD;;;CA4BjD,QAAA,IAAIg+C,OAAO,KAAKF,OAAZ,IAAuBE,OAAO,KAAKD,OAAvC,EAAgD;WAC9CI,GAAG,GAAGkB,KAAK,GAAG,CAAd,CAAA;CACAjB,UAAAA,GAAG,GACDc,WAAW,GACX,CADA,GAEA,CAACN,UAAU,GAAGhB,YAAd,KAA+BF,YAAY,GAAGE,YAA9C,CAHF,CAAA;CAIAS,UAAAA,GAAG,GACDgB,KAAK,GACL,CADA,GAEA,CAACT,UAAU,GAAGhB,YAAd,KAA+BD,YAAY,GAAGC,YAA9C,CAHF,CAAA;WAIAU,GAAG,GAAGY,WAAW,GAAG,CAApB,CAAA;CACAjD,UAAAA,KAAK,CAAChhD,IAAN,CAAWkjD,GAAG,GAAG7Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,UAAAA,KAAK,CAAChhD,IAAN,CAAWmjD,GAAG,GAAG7Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACAi8C,UAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,UAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,SA3CgD;;;SA6CjD,IAAI89C,OAAO,KAAKC,OAAhB,EAAyB;CACvBI,UAAAA,GAAG,GACD,CAACkB,KAAK,GACJ,CADD,GAEC,CAACT,UAAU,GAAGlB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CAFF,IAGEpZ,EAHF,GAIAjlC,EALF,CAAA;CAMA++C,UAAAA,GAAG,GACD,CAACc,WAAW,GACV,CAACN,UAAU,GAAGlB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CADF,IAEEnZ,EAFF,GAGAvkC,EAJF,CAAA;;WAKA,IAAI89C,OAAO,KAAKD,OAAhB,EAAyB;CACvBQ,YAAAA,GAAG,GACDgB,KAAK,GACL,CADA,GAEA,CAACT,UAAU,GAAGlB,YAAd,KAA+BD,YAAY,GAAGC,YAA9C,CAHF,CAAA;CAIAY,YAAAA,GAAG,GAAGY,WAAN,CAAA;aACAjD,KAAK,CAAChhD,IAAN,CAAWkjD,GAAX,CAAA,CAAA;aACAlC,KAAK,CAAChhD,IAAN,CAAWmjD,GAAX,CAAA,CAAA;CACAnC,YAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,YAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,WAAA;;WACD,IAAI+9C,OAAO,KAAKF,OAAhB,EAAyB;CACvBQ,YAAAA,GAAG,GAAGgB,KAAN,CAAA;CACAf,YAAAA,GAAG,GACDY,WAAW,GACX,CADA,GAEA,CAACN,UAAU,GAAGjB,YAAd,KAA+BF,YAAY,GAAGE,YAA9C,CAHF,CAAA;aAIA1B,KAAK,CAAChhD,IAAN,CAAWkjD,GAAX,CAAA,CAAA;aACAlC,KAAK,CAAChhD,IAAN,CAAWmjD,GAAX,CAAA,CAAA;CACAnC,YAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,YAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,WAAA;;WACD,IAAI89C,OAAO,KAAKE,OAAhB,EAAyB;aACvBK,GAAG,GAAGgB,KAAK,GAAG,CAAd,CAAA;aACAf,GAAG,GACDY,WAAW,GACX,CAACN,UAAU,GAAGlB,YAAd,KAA+BE,YAAY,GAAGF,YAA9C,CAFF,CAAA;aAGAzB,KAAK,CAAChhD,IAAN,CAAWkjD,GAAX,CAAA,CAAA;aACAlC,KAAK,CAAChhD,IAAN,CAAWmjD,GAAX,CAAA,CAAA;CACAnC,YAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,YAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,WAAA;;WACD,IAAI+9C,OAAO,KAAKC,OAAhB,EAAyB;aACvBK,GAAG,GACDgB,KAAK,GACL,CAACT,UAAU,GAAGjB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CAFF,CAAA;aAGAW,GAAG,GAAGY,WAAW,GAAG,CAApB,CAAA;aACAjD,KAAK,CAAChhD,IAAN,CAAWkjD,GAAX,CAAA,CAAA;aACAlC,KAAK,CAAChhD,IAAN,CAAWmjD,GAAX,CAAA,CAAA;CACAnC,YAAAA,KAAK,CAAChhD,IAAN,CAAWojD,GAAG,GAAG/Z,EAAN,GAAWjlC,EAAtB,CAAA,CAAA;CACA48C,YAAAA,KAAK,CAAChhD,IAAN,CAAWqjD,GAAG,GAAG/Z,EAAN,GAAWvkC,EAAtB,CAAA,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;;GAED,OAAO;KACLk9C,IAAI,EAAEM,KAAK,CAACN,IADP;KAELC,IAAI,EAAEK,KAAK,CAACL,IAFP;KAGLC,IAAI,EAAEI,KAAK,CAACJ,IAHP;KAILC,IAAI,EAAEG,KAAK,CAACH,IAJP;CAKLiC,IAAAA,QAAQ,EAAEX,aAAAA;IALZ,CAAA;CAOD;;CClKa,SAAUY,KAAV,CAAgBzkD,MAAhB,EAAwB/H,OAAxB,EAA+B;CAC3C,EAAA,IAAIyqD,KAAK,GAAGf,YAAY,CAAC3hD,MAAM,CAACi7C,OAAR,CAAxB,CAAA;;CACA,EAAA,IAAI,CAAChjD,OAAO,CAACysD,SAAb,EAAwB;KACtB1kD,MAAM,CAAC2kD,YAAP,GAAsBlC,oBAAoB,CAACC,KAAD,EAAQzqD,OAAR,CAA1C,CAAA;KACA,OAAOyqD,KAAK,CAAChxB,CAAb,CAAA;CACD,GAAA;;GACD1xB,MAAM,CAACq6C,MAAP,GAAgBqI,KAAhB,CAAA;CACD;;CCcM,MAAMkC,iBAAiB,GAAsB;CAClD,EAAA,IAAA,EAAM,cAD4C;CAElD,EAAA,IAAA,EAAM,QAF4C;CAGlD,EAAA,IAAA,EAAM,UAH4C;CAIlD,EAAA,KAAA,EAAO,CAAC,SAJ0C;CAKlD,EAAA,KAAA,EAAO,SAL2C;CAMlD,EAAA,KAAA,EAAO,UAN2C;CAOlD,EAAA,KAAA,EAAO,QAP2C;CAQlD,EAAA,KAAA,EAAO,CAAC,QAR0C;CASlD,EAAA,KAAA,EAAO,CAAC,QAT0C;CAUlD,EAAA,KAAA,EAAO,SAV2C;CAWlD,EAAA,MAAA,EAAQ,QAX0C;CAYlD,EAAA,MAAA,EAAQ,QAZ0C;CAalD,EAAA,MAAA,EAAQ,CAAC,OAbyC;CAclD,EAAA,KAAA,EAAO,SAd2C;CAelD,EAAA,MAAA,EAAQ,OAf0C;CAgBlD,EAAA,MAAA,EAAQ,QAhB0C;CAiBlD,EAAA,MAAA,EAAQ,QAjB0C;CAkBlD,EAAA,OAAA,EAAS,CAAC,QAAA;CAlBwC,CAA7C;;CCtBO,SAAUC,iBAAV,CAA4BC,WAA5B,EAAuC;CACnD;CAEA,EAAA,KAAK,IAAIC,KAAT,IAAkBD,WAAlB,EAA+B;KAC7B,IAAIE,gBAAgB,GAAG,CAAvB,CAAA;KACA,IAAIC,cAAc,GAAG,CAArB,CAAA;;CACA,IAAA,KAAK,IAAItK,QAAT,IAAqBoK,KAAK,CAAC9J,OAA3B,EAAoC;OAClC,IAAI8J,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACG,OAAN,CAAcC,MAAnC,EAA2C;CACzC,QAAA,IAAI,CAACH,gBAAD,IAAqBrK,QAAQ,CAACqK,gBAAlC,EAAoD;WAClDA,gBAAgB,GAAGrK,QAAQ,CAACqK,gBAA5B,CAAA;CACD,SAAA;;CACD,QAAA,IAAI,CAACC,cAAD,IAAmBtK,QAAQ,CAACsK,cAAhC,EAAgD;WAC9CA,cAAc,GAAGtK,QAAQ,CAACsK,cAA1B,CAAA;CACD,SAAA;CACF,OAPD,MAOO;SACLD,gBAAgB,GAAGrK,QAAQ,CAACqK,gBAA5B,CAAA;SACAC,cAAc,GAAGtK,QAAQ,CAACsK,cAA1B,CAAA;CACD,OAAA;;CAED,MAAA,IAAID,gBAAJ,EAAsB;CACpB,QAAA,IAAIrK,QAAQ,CAACyK,MAAT,IAAmBzK,QAAQ,CAACyK,MAAT,CAAgBC,WAAhB,EAA8BjK,CAAAA,QAA9B,CAAuC,IAAvC,CAAvB,EAAqE;WACnET,QAAQ,CAACyK,MAAT,GAAkB,KAAlB,CAAA;CACAzK,UAAAA,QAAQ,CAACyG,OAAT,GAAmBzG,QAAQ,CAACyG,OAAT,GAAmB4D,gBAAtC,CAAA;CACArK,UAAAA,QAAQ,CAAC8E,MAAT,GAAkB9E,QAAQ,CAAC8E,MAAT,GAAkBuF,gBAApC,CAAA;CACArK,UAAAA,QAAQ,CAACqH,KAAT,GAAiBrH,QAAQ,CAACqH,KAAT,GAAiBgD,gBAAlC,CAAA;CACArK,UAAAA,QAAQ,CAAC0E,MAAT,GAAkB1E,QAAQ,CAAC0E,MAAT,GAAkB2F,gBAApC,CAAA;;CACA,UAAA,KAAK,IAAIjrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4gD,QAAQ,CAACz5C,IAAT,CAAczD,CAAd,CAAgBrF,MAApC,EAA4C2B,CAAC,EAA7C,EAAiD;CAC/C4gD,YAAAA,QAAQ,CAACz5C,IAAT,CAAczD,CAAd,CAAgB1D,CAAhB,KAAsBirD,gBAAtB,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;;CACD,MAAA,IAAIC,cAAJ,EAAoB;CAClB,QAAA,IAAIzjC,KAAK,GAAGm5B,QAAQ,CAAC8E,MAAT,GAAkBwF,cAA9B,CAAA;CACAtK,QAAAA,QAAQ,CAAC8E,MAAT,GAAkB9E,QAAQ,CAAC8E,MAAT,GAAkBj+B,KAApC,CAAA;CACAm5B,QAAAA,QAAQ,CAACqH,KAAT,GAAiBrH,QAAQ,CAACqH,KAAT,GAAiBxgC,KAAlC,CAAA;;CACA,QAAA,KAAK,IAAIznB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4gD,QAAQ,CAACz5C,IAAT,CAAczD,CAAd,CAAgBrF,MAApC,EAA4C2B,CAAC,EAA7C,EAAiD;CAC/C4gD,UAAAA,QAAQ,CAACz5C,IAAT,CAAczD,CAAd,CAAgB1D,CAAhB,KAAsBynB,KAAtB,CAAA;CACD,SAAA;CACF,OAhCiC;;;CAmClC,MAAA,IAAIujC,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACG,OAAN,CAAcI,OAA/B,IAA0CP,KAAK,CAACG,OAAN,CAAcC,MAA5D,EAAoE;CAClE,QAAA,KAAK,IAAIprD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgrD,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBltD,MAA1C,EAAkD2B,CAAC,EAAnD,EAAuD;WACrD,IAAIorD,MAAM,GAAGJ,KAAK,CAACG,OAAN,CAAcC,MAAd,CAAqBprD,CAArB,CAAb,CAAA;WACA,IAAIurD,OAAO,GAAGP,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBvrD,CAAtB,CAAd,CAAA;;WACA,IAAIorD,MAAM,CAACI,UAAP,CAAkB,GAAlB,CAA0B,IAAA,CAACD,OAA/B,EAAwC;aACtC,IAAIH,MAAM,KAAK,IAAf,EAAqB;CACnB;CACA,cAAA,IAAIJ,KAAK,CAACvxC,GAAN,CAAUgyC,KAAd,EAAqB;iBACnBT,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBvrD,CAAtB,CAAA,GAA2BgrD,KAAK,CAACvxC,GAAN,CAAUgyC,KAArC,CAAA;CACD,eAFD,MAEO;iBACL,IAAIC,OAAO,GAAGV,KAAK,CAACG,OAAN,CAAcC,MAAd,CAAqBl8C,OAArB,CAA6B,IAA7B,CAAd,CAAA;;iBACA,IAAIw8C,OAAO,IAAIV,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBG,OAAtB,CAAf,EAA+C;CAC7CV,kBAAAA,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBvrD,CAAtB,CAAA,GAA2BgrD,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBG,OAAtB,CAA3B,CAAA;CACD,iBAAA;CACF,eAAA;CACF,aAAA;;CACD,YAAA,IAAIN,MAAM,KAAK,IAAf,EAAqBJ,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsBvrD,CAAtB,CAA2BgrD,GAAAA,KAAK,CAACvxC,GAAN,CAAUkyC,KAArC,CAAA;CACtB,WAAA;;WACD,IAAIP,MAAM,KAAK,IAAf,EAAqB;aACnBJ,KAAK,CAACY,KAAN,GAAcZ,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsB,CAAtB,CAAd,CAAA;CACD,WAAA;CACF,SAAA;CACF,OAAA;;CAED,MAAA,IACEN,gBAAgB,IAChBD,KAAK,CAACG,OADN,IAEAH,KAAK,CAACG,OAAN,CAAcC,MAFd,IAGAJ,KAAK,CAACG,OAAN,CAAcI,OAJhB,EAKE;SACA,IAAIM,IAAI,GAAG,EAAX,CAAA;CACA,QAAA,IAAIC,eAAe,GAAGd,KAAK,CAACG,OAAN,CAAcC,MAAd,CAAqBl8C,OAArB,CAA6B0xC,QAAQ,CAACmL,UAAtC,CAAtB,CAAA;;CACA,QAAA,IAAIf,KAAK,CAACG,OAAN,CAAca,KAAd,IAAuBhB,KAAK,CAACG,OAAN,CAAca,KAAd,CAAoBF,eAApB,CAA3B,EAAiE;WAC/DD,IAAI,GAAGb,KAAK,CAACG,OAAN,CAAca,KAAd,CAAoBF,eAApB,CAAP,CAAA;CACD,SAAA;;SACD,IAAID,IAAI,KAAK,KAAb,EAAoB;WAClB,IAAIC,eAAe,KAAK,CAAxB,EAA2B;aACzB,MAAM5sD,KAAK,CAAC,oCAAD,CAAX,CAAA;CACD,WAAA;;CAED,UAAA,IAAI+sD,MAAM,GAAGpB,iBAAiB,CAACG,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsB,CAAtB,CAAD,CAA9B,CAAA;CACA,UAAA,IAAIW,MAAM,GAAGrB,iBAAiB,CAACG,KAAK,CAACG,OAAN,CAAcI,OAAd,CAAsB,CAAtB,CAAD,CAA9B,CAAA;;CACA,UAAA,IAAI,CAACU,MAAD,IAAW,CAACC,MAAhB,EAAwB;aACtB,MAAMhtD,KAAK,CAAC,kDAAD,CAAX,CAAA;CACD,WAAA;;CACD,UAAA,IAAIitD,KAAK,GAAIF,MAAM,GAAGC,MAAV,GAAoBjB,gBAAhC,CAAA;WACArK,QAAQ,CAACmE,SAAT,IAAsBoH,KAAtB,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;CACF;;CC9Fa,SAAUC,SAAV,CAAoBnmD,MAApB,EAA4BomD,MAA5B,EAAoCnuD,OAApC,EAA2C;GACvD,IAAI+H,MAAM,CAACmmD,SAAX,EAAsB;CACpBnmD,IAAAA,MAAM,CAACmmD,SAAP,CAAiBhmD,IAAjB,CAAsB;OACpBimD,MADoB;CAEpBC,MAAAA,IAAI,EAAEC,IAAI,CAACC,GAAL,EAAA,GAAatuD,OAAO,CAAC0L,KAAAA;MAF7B,CAAA,CAAA;CAID,GAAA;CACF;;CCPa,SAAU6iD,kBAAV,CAA6BxmD,MAA7B,EAAmC;GAC/C,IAAIkB,IAAI,GAAGlB,MAAM,CAACi7C,OAAP,CAAe,CAAf,EAAkB/5C,IAA7B,CAAA;GACAlB,MAAM,CAACu+C,YAAP,GAAsB;CACpBC,IAAAA,KAAK,EAAEt9C,IAAI,CAACzD,CAAL,CAAO7C,KAAP,EADa;CAEpB6jD,IAAAA,MAAM,EAAE;CACNgI,MAAAA,SAAS,EAAE;CACT9H,QAAAA,SAAS,EAAE,CADF;CAETz9C,QAAAA,IAAI,EAAEA,IAAI,CAACE,CAAL,CAAOxG,KAAP,EAAA;CAFG,OAAA;CADL,KAAA;IAFV,CAAA;CASD;;CCLa,SAAU8rD,cAAV,CAAyB5B,WAAzB,EAAsC9kD,MAAtC,EAA8C/H,OAA9C,EAAqD;CACjE;GACA4sD,iBAAiB,CAACC,WAAD,CAAjB,CAAA;;CAEA,EAAA,KAAK,IAAIC,KAAT,IAAkBD,WAAlB,EAA+B;KAC7B,IAAI3rD,MAAM,CAACgmC,IAAP,CAAY4lB,KAAK,CAACG,OAAlB,CAA2B9sD,CAAAA,MAA3B,GAAoC,CAAxC,EAA2C;OACzC,IAAIuuD,UAAU,GAAG,EAAjB,CAAA;OACA,IAAIxnB,IAAI,GAAGhmC,MAAM,CAACgmC,IAAP,CAAY4lB,KAAK,CAACG,OAAlB,CAAX,CAAA;;CACA,MAAA,KAAK,IAAInrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGolC,IAAI,CAAC/mC,MAAzB,EAAiC2B,CAAC,EAAlC,EAAsC;CACpC,QAAA,IAAI22C,GAAG,GAAGvR,IAAI,CAACplC,CAAD,CAAd,CAAA;CACA,QAAA,IAAI2F,MAAM,GAAGqlD,KAAK,CAACG,OAAN,CAAcxU,GAAd,CAAb,CAAA;;CACA,QAAA,KAAK,IAAI12C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0F,MAAM,CAACtH,MAA3B,EAAmC4B,CAAC,EAApC,EAAwC;WACtC,IAAI,CAAC2sD,UAAU,CAAC3sD,CAAD,CAAf,EAAoB2sD,UAAU,CAAC3sD,CAAD,CAAV,GAAgB,EAAhB,CAAA;WACpB2sD,UAAU,CAAC3sD,CAAD,CAAV,CAAc02C,GAAd,CAAqBhxC,GAAAA,MAAM,CAAC1F,CAAD,CAA3B,CAAA;CACD,SAAA;CACF,OAAA;;OACD+qD,KAAK,CAACG,OAAN,GAAgByB,UAAhB,CAAA;CACD,KAAA;;CAED,IAAA,IAAI5B,KAAK,CAAC6B,IAAN,IAAc3uD,OAAO,CAAC4uD,MAA1B,EAAkC;CAChCpC,MAAAA,KAAK,CAACM,KAAD,EAAQ9sD,OAAR,CAAL,CAAA;CAEAkuD,MAAAA,SAAS,CAACnmD,MAAD,EAAS,oCAAT,EAA+C/H,OAA/C,CAAT,CAAA;;CAEA,MAAA,IAAI,CAACA,OAAO,CAAC6uD,WAAb,EAA0B;SACxB,OAAO/B,KAAK,CAAC9J,OAAb,CAAA;CACD,OAAA;CACF,KAvB4B;;;KA0B7B,IAAIhjD,OAAO,CAACsmD,YAAZ,EAA0B;CACxB,MAAA,IAAIwG,KAAK,CAAC9J,OAAN,CAAc7iD,MAAd,GAAuB,CAA3B,EAA8B;SAC5BkmD,mBAAmB,CAACyG,KAAD,CAAnB,CAAA;CACD,OAFD,MAEO;SACLyB,kBAAkB,CAACzB,KAAD,CAAlB,CAAA;CACD,OAAA;;CACDoB,MAAAA,SAAS,CAACnmD,MAAD,EAAS,mCAAT,EAA8C/H,OAA9C,CAAT,CAAA;CACD,KAAA;;KAED,OAAO8sD,KAAK,CAACvxC,GAAb,CAAA;CACD,GAAA;CACF;;CC/Ca,SAAUuzC,uBAAV,CAAkCC,YAAlC,EAAgDrM,QAAhD,EAA0DsM,IAA1D,EAA8D;GAC1E,IAAIC,MAAM,GAAG,CAAC,CAAd,CAAA;GACA,IAAIC,MAAM,GAAG,CAAC,CAAd,CAAA;GACA,IAAIC,aAAa,GAAG,EAApB,CAAA;GACA,IAAIC,cAAc,GAAG,EAArB,CAAA;;CACA,EAAA,IAAIJ,IAAI,CAACh+C,OAAL,CAAa,IAAb,CAAA,GAAqB,CAAzB,EAA4B;KAC1Bm+C,aAAa,GAAGH,IAAI,CAACpmD,OAAL,CAAa,0BAAb,EAAyC,IAAzC,CAAhB,CAAA;KACAwmD,cAAc,GAAGJ,IAAI,CAACpmD,OAAL,CAAa,wBAAb,EAAuC,IAAvC,CAAjB,CAAA;CACD,GAHD,MAGO;KACLomD,IAAI,GAAGA,IAAI,CAACpmD,OAAL,CAAa,YAAb,EAA2B,EAA3B,CAAP,CAAA;CACAumD,IAAAA,aAAa,GAAGH,IAAI,CAAC1gB,MAAL,CAAY,CAAZ,CAAhB,CAAA;CACA8gB,IAAAA,cAAc,GAAGJ,IAAI,CAAC1gB,MAAL,CAAY,CAAZ,CAAjB,CAAA;KACAoU,QAAQ,CAACqG,SAAT,GAAqB,EAArB,CAAA;;CACA,IAAA,KAAK,IAAImE,MAAT,IAAmB8B,IAAnB,EAAyB;CACvB,MAAA,IAAIK,eAAe,GAAGnC,MAAM,CAAChmD,WAAP,EAAtB,CAAA;OACA,IAAIvG,KAAK,GAAGouD,YAAY,CAAC9B,OAAb,CAAqBC,MAArB,CAA4Bl8C,OAA5B,CAAoCk8C,MAApC,CAAZ,CAAA;OACA,IAAIvsD,KAAK,KAAK,CAAC,CAAf,EAAkB,MAAMK,KAAK,CAAC,CAAA,kBAAA,EAAqBksD,MAAM,CAAA,CAA5B,CAAX,CAAA;CAClBxK,MAAAA,QAAQ,CAACqG,SAAT,CAAmBsG,eAAnB,IAAsC,EAAtC,CAAA;;CACA,MAAA,KAAK,IAAI5W,GAAT,IAAgBsW,YAAY,CAAC9B,OAA7B,EAAsC;SACpC,IAAI8B,YAAY,CAAC9B,OAAb,CAAqBxU,GAArB,CAA0B93C,CAAAA,KAA1B,CAAJ,EAAsC;WACpC+hD,QAAQ,CAACqG,SAAT,CAAmBsG,eAAnB,EAAoC5W,GAAG,CAAC7vC,OAAJ,CAAY,MAAZ,EAAoB,EAApB,CAApC,IACEmmD,YAAY,CAAC9B,OAAb,CAAqBxU,GAArB,CAA0B93C,CAAAA,KAA1B,CADF,CAAA;CAED,SAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;;GACDsuD,MAAM,GAAGF,YAAY,CAAC9B,OAAb,CAAqBC,MAArB,CAA4Bl8C,OAA5B,CAAoCm+C,aAApC,CAAT,CAAA;GACAD,MAAM,GAAGH,YAAY,CAAC9B,OAAb,CAAqBC,MAArB,CAA4Bl8C,OAA5B,CAAoCo+C,cAApC,CAAT,CAAA;CAEA,EAAA,IAAIH,MAAM,KAAK,CAAC,CAAhB,EAAmBA,MAAM,GAAG,CAAT,CAAA;CACnB,EAAA,IAAIC,MAAM,KAAK,CAAC,CAAhB,EAAmBA,MAAM,GAAG,CAAT,CAAA;;CAEnB,EAAA,IAAIH,YAAY,CAAC9B,OAAb,CAAqB9pC,KAAzB,EAAgC;KAC9B,IAAI4rC,YAAY,CAAC9B,OAAb,CAAqB9pC,KAArB,CAA2BhjB,MAA3B,GAAoC8uD,MAAxC,EAAgD;OAC9CvM,QAAQ,CAAC8E,MAAT,GAAkBuH,YAAY,CAAC9B,OAAb,CAAqB9pC,KAArB,CAA2B8rC,MAA3B,CAAlB,CAAA;CACD,KAAA;;KACD,IAAIF,YAAY,CAAC9B,OAAb,CAAqB9pC,KAArB,CAA2BhjB,MAA3B,GAAoC+uD,MAAxC,EAAgD;OAC9CxM,QAAQ,CAACgF,MAAT,GAAkBqH,YAAY,CAAC9B,OAAb,CAAqB9pC,KAArB,CAA2B+rC,MAA3B,CAAlB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,IAAIH,YAAY,CAAC9B,OAAb,CAAqB7pC,IAAzB,EAA+B;KAC7B,IAAI2rC,YAAY,CAAC9B,OAAb,CAAqB7pC,IAArB,CAA0BjjB,MAA1B,GAAmC8uD,MAAvC,EAA+C;OAC7CvM,QAAQ,CAACqH,KAAT,GAAiBgF,YAAY,CAAC9B,OAAb,CAAqB7pC,IAArB,CAA0B6rC,MAA1B,CAAjB,CAAA;CACD,KAAA;;KACD,IAAIF,YAAY,CAAC9B,OAAb,CAAqB7pC,IAArB,CAA0BjjB,MAA1B,GAAmC+uD,MAAvC,EAA+C;OAC7CxM,QAAQ,CAACsH,KAAT,GAAiB+E,YAAY,CAAC9B,OAAb,CAAqB7pC,IAArB,CAA0B8rC,MAA1B,CAAjB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,IACEH,YAAY,CAAC9B,OAAb,CAAqBqC,MAArB,IACAP,YAAY,CAAC9B,OAAb,CAAqBqC,MAArB,CAA4BnvD,MAA5B,GAAqC8uD,MAFvC,EAGE;KACAvM,QAAQ,CAAC6M,QAAT,GAAoBR,YAAY,CAAC9B,OAAb,CAAqBqC,MAArB,CAA4BL,MAA5B,CAApB,CAAA;CACD,GAAA;;CACD,EAAA,IAAIF,YAAY,CAAC9B,OAAb,CAAqB3lD,MAAzB,EAAiC;KAC/B,IAAIynD,YAAY,CAAC9B,OAAb,CAAqB3lD,MAArB,CAA4BnH,MAA5B,GAAqC8uD,MAAzC,EAAiD;OAC/CvM,QAAQ,CAACyG,OAAT,GAAmB4F,YAAY,CAAC9B,OAAb,CAAqB3lD,MAArB,CAA4B2nD,MAA5B,CAAnB,CAAA;CACD,KAAA;;KACD,IAAIF,YAAY,CAAC9B,OAAb,CAAqB3lD,MAArB,CAA4BnH,MAA5B,GAAqC+uD,MAAzC,EAAiD;OAC/CxM,QAAQ,CAACO,OAAT,GAAmB8L,YAAY,CAAC9B,OAAb,CAAqB3lD,MAArB,CAA4B4nD,MAA5B,CAAnB,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,IAAIH,YAAY,CAAC9B,OAAb,CAAqBa,KAAzB,EAAgC;KAC9B,IAAIiB,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2B3tD,MAA3B,GAAoC8uD,MAAxC,EAAgD;CAC9C,MAAA,IACEF,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,IACAT,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,CAA6BP,MAA7B,CAFF,EAGE;SACAvM,QAAQ,CAACyK,MAAT,GAAkB,CAAA,EAAG4B,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,CAA6BP,MAA7B,CAAoC,CAAA,EAAA,EAAKF,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2BmB,MAA3B,CAAkC,CAAhG,CAAA,CAAA,CAAA;CACD,OALD,MAKO;SACLvM,QAAQ,CAACyK,MAAT,GAAkB4B,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2BmB,MAA3B,CAAlB,CAAA;CACD,OAAA;CACF,KAAA;;KACD,IAAIF,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2B3tD,MAA3B,GAAoC+uD,MAAxC,EAAgD;CAC9C,MAAA,IACEH,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,IACAT,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,CAA6BN,MAA7B,CAFF,EAGE;SACAxM,QAAQ,CAAC+M,MAAT,GAAkB,CAAA,EAAGV,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,CAA6BN,MAA7B,CAAoC,CAAA,EAAA,EAAKH,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2BoB,MAA3B,CAAkC,CAAhG,CAAA,CAAA,CAAA;CACD,OALD,MAKO;SACLxM,QAAQ,CAAC+M,MAAT,GAAkBV,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,CAA2BoB,MAA3B,CAAlB,CAAA;CACD,OAAA;CACF,KAAA;CACF,GAAA;CACF;;CCpFa,SAAUQ,eAAV,CAA0BhN,QAA1B,EAAkC;GAC9C,IAAI,CAACA,QAAQ,CAACyG,OAAd,EAAuBzG,QAAQ,CAACyG,OAAT,GAAmB,CAAnB,CAAA;GACvB,IAAI,CAACzG,QAAQ,CAACO,OAAd,EAAuBP,QAAQ,CAACO,OAAT,GAAmB,CAAnB,CAAA;CACxB;;CCWD,MAAM0M,sBAAsB,GAAG,eAA/B,CAAA;CAEA,MAAMC,cAAc,GAAG;CACrBC,EAAAA,iBAAiB,EAAE,IADE;CAErBC,EAAAA,iBAAiB,EAAE,IAFE;CAGrBC,EAAAA,qBAAqB,EAAE,KAHF;CAIrBC,EAAAA,aAAa,EAAE,IAJM;CAKrBC,EAAAA,SAAS,EAAE,KALU;CAMrB3J,EAAAA,YAAY,EAAE,KANO;CAOrBuI,EAAAA,WAAW,EAAE,KAPQ;CAQrBpC,EAAAA,SAAS,EAAE,KARU;CASrBd,EAAAA,eAAe,EAAE,CATI;CAUrBM,EAAAA,eAAe,EAAE,CAVI;CAWrBiC,EAAAA,SAAS,EAAE,KAAA;CAXU,CAAvB,CAAA;CAcA;;;;;;;;;;;;;;;;CAgBA;;;;;;;;;;;;;;;;;CAiBA;;;;;;;;;;;CAWA;;;;;;;;;;;;;CAaA;;;;;;;;;CASA;;;;;;;;CAQM,SAAUgC,OAAV,CAAkBC,KAAlB,EAAqC;GAAA,IAAZnwD,OAAY,uEAAF,EAAE,CAAA;CACzCmwD,EAAAA,KAAK,GAAGjL,YAAY,CAACiL,KAAD,CAApB,CAAA;GACAnwD,OAAO,GAAG,EAAE,GAAG4vD,cAAL;KAAqB,GAAG5vD,OAAAA;IAAlC,CAAA;CACAA,EAAAA,OAAO,CAAC4uD,MAAR,GAAiB,CAAC5uD,OAAO,CAACiwD,SAA1B,CAAA;CACAjwD,EAAAA,OAAO,CAAC0L,KAAR,GAAgB2iD,IAAI,CAACC,GAAL,EAAhB,CAAA;GAEA,IAAIzB,WAAW,GAAG,EAAlB,CAAA;CAEA,EAAA,IAAI9kD,MAAM,GAAG;CACXmmD,IAAAA,SAAS,EAAEluD,OAAO,CAACkuD,SAAR,GAAoB,EAApB,GAAyB,KADzB;CAEX9E,IAAAA,IAAI,EAAE,EAFK;CAGXgH,IAAAA,OAAO,EAAE,EAAA;IAHX,CAAA;CAMA,EAAA,IAAIC,SAAS,GAAG;CAAEC,IAAAA,QAAQ,EAAE,EAAA;IAA5B,CAAA;GACA,IAAIvB,YAAY,GAAGsB,SAAnB,CAAA;GACA,IAAIE,YAAY,GAAG,EAAnB,CAAA;GAEA,IAAI7N,QAAQ,GAAG,EAAf,CAAA;;CAEA,EAAA,IAAI,OAAOyN,KAAP,KAAiB,QAArB,EAA+B;CAC7B,IAAA,MAAM,IAAI1tD,SAAJ,CAAc,8BAAd,CAAN,CAAA;CACD,GAAA;;CAEDyrD,EAAAA,SAAS,CAACnmD,MAAD,EAAS,sBAAT,EAAiC/H,OAAjC,CAAT,CAAA;CAEA,EAAA,IAAIwwD,IAAI,GAAGL,KAAK,CAACvnD,OAAN,CAAc,YAAd,EAA4B,MAA5B,CAAA,CAAoC6jB,KAApC,CAA0C,MAA1C,CAAX,CAAA;CAEAyhC,EAAAA,SAAS,CAACnmD,MAAD,EAAS,eAAT,EAA0B/H,OAA1B,CAAT,CAAA;GAEA,IAAIwwD,IAAI,CAAC,CAAD,CAAR,EAAaA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAJ,CAAQ5nD,OAAR,CAAgB,aAAhB,EAA+B,EAA/B,CAAV,CAAA;;CAEb,EAAA,KAAK,IAAI6nD,GAAT,IAAgBD,IAAhB,EAAsB;CACpB;CACA,IAAA,IAAIviD,QAAQ,GAAGwiD,GAAG,CAACz/C,OAAJ,CAAY,GAAZ,CAAf,CAAA;CACA,IAAA,IAAI0/C,SAAS,GAAGziD,QAAQ,GAAG,CAAX,GAAewiD,GAAG,CAACE,SAAJ,CAAc,CAAd,EAAiB1iD,QAAjB,CAAf,GAA4CwiD,GAA5D,CAAA;CACA,IAAA,IAAIG,SAAS,GAAG3iD,QAAQ,GAAG,CAAX,GAAewiD,GAAG,CAACE,SAAJ,CAAc1iD,QAAQ,GAAG,CAAzB,EAA4BgkB,IAA5B,EAAf,GAAoD,EAApE,CAAA;KAEA,IAAI80B,gBAAgB,GAAG2J,SAAS,CAAC9nD,OAAV,CAAkB,QAAlB,EAA4B,EAA5B,CAAgCwkD,CAAAA,WAAhC,EAAvB,CAAA;;KAEA,IAAIrG,gBAAgB,KAAK,WAAzB,EAAsC;CACpC,MAAA,IAAIY,OAAO,GAAGiJ,SAAS,CAAC5/C,OAAV,CAAkB,IAAlB,CAAd,CAAA;CACA,MAAA,IAAI22C,OAAO,KAAK,CAAC,CAAjB,EAAoBA,OAAO,GAAGiJ,SAAS,CAAC5/C,OAAV,CAAkB,IAAlB,CAAV,CAAA;;OACpB,IAAI22C,OAAO,GAAG,CAAd,EAAiB;CACf;CACA;CAEA,QAAA,IAAIkJ,KAAK,GAAGD,SAAS,CAACD,SAAV,CAAoB,CAApB,EAAuBhJ,OAAvB,CAAA,CAAgCl7B,KAAhC,CAAsC,UAAtC,CAAZ,CAAA;SACAqiC,uBAAuB,CAACC,YAAD,EAAerM,QAAf,EAAyBmO,KAAK,CAAC,CAAD,CAA9B,CAAvB,CAAA;CAEAnO,QAAAA,QAAQ,CAACoO,SAAT,GAAqBD,KAAK,CAAC,CAAD,CAA1B,CAAA;;CACA,QAAA,IAAIA,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAL,CAAS7/C,OAAT,CAAiB,OAAjB,CAA4B,GAAA,CAAC,CAA7C,EAAgD;CAC9C+1C,UAAAA,gBAAgB,GAAG,WAAnB,CAAA;UADF,MAEO,IACL8J,KAAK,CAAC,CAAD,CAAL,KACCA,KAAK,CAAC,CAAD,CAAL,CAAS7/C,OAAT,CAAiB,QAAjB,CAA8B6/C,IAAAA,KAAK,CAAC,CAAD,CAAL,CAAS7/C,OAAT,CAAiB,IAAjB,CAAA,GAAyB,CADxD,CADK,EAGL;CACA+1C,UAAAA,gBAAgB,GAAG,QAAnB,CAAA;;WACA,IAAIrE,QAAQ,CAAC6M,QAAb,EAAuB;CACrB7M,YAAAA,QAAQ,CAAC0E,MAAT,GACE,CAAC1E,QAAQ,CAACqH,KAAT,GAAiBrH,QAAQ,CAAC8E,MAA3B,KAAsC9E,QAAQ,CAAC6M,QAAT,GAAoB,CAA1D,CADF,CAAA;CAED,WAAA;CACF,SAAA;CACF,OAAA;CACF,KAAA;;KAED,IAAIxI,gBAAgB,KAAK,QAAzB,EAAmC;OACjC,IAAI/mD,OAAO,CAAC4uD,MAAZ,EAAoB;CAClBc,QAAAA,eAAe,CAAChN,QAAD,CAAf,CADkB;;CAGlB,QAAA,IAAIkO,SAAS,CAACz+B,KAAV,CAAgB,UAAhB,CAAJ,EAAiC;CAC/B;WACA,IAAIuwB,QAAQ,CAAC6M,QAAb,EAAuB;CACrB7M,YAAAA,QAAQ,CAAC0E,MAAT,GACE,CAAC1E,QAAQ,CAACqH,KAAT,GAAiBrH,QAAQ,CAAC8E,MAA3B,KAAsC9E,QAAQ,CAAC6M,QAAT,GAAoB,CAA1D,CADF,CAAA;CAED,WAAA;;CAEDpI,UAAAA,eAAe,CAACzE,QAAD,EAAWkO,SAAX,CAAf,CAAA;CACD,SARD,MAQO;CACL/H,UAAAA,cAAc,CAACnG,QAAD,EAAWkO,SAAX,EAAsB7oD,MAAtB,CAAd,CAAA;CACD,SAAA;;CACDgnD,QAAAA,YAAY,CAAC/L,OAAb,CAAqB96C,IAArB,CAA0Bw6C,QAA1B,CAAA,CAAA;CACAA,QAAAA,QAAQ,GAAG,EAAX,CAAA;CACD,OAAA;;CACD,MAAA,SAAA;CACD,KAnBD,MAmBO,IAAIqE,gBAAgB,KAAK,WAAzB,EAAsC;OAC3C,IAAI/mD,OAAO,CAAC4uD,MAAZ,EAAoB;SAClBc,eAAe,CAAChN,QAAD,CAAf,CAAA;CACAmG,QAAAA,cAAc,CAACnG,QAAD,EAAWkO,SAAX,EAAsB7oD,MAAtB,CAAd,CAAA;CACAgnD,QAAAA,YAAY,CAAC/L,OAAb,CAAqB96C,IAArB,CAA0Bw6C,QAA1B,CAAA,CAAA;CACAA,QAAAA,QAAQ,GAAG,EAAX,CAAA;CACD,OAAA;;CACD,MAAA,SAAA;CACD,KAAA;;KACD,IAAIqE,gBAAgB,KAAK,iBAAzB,EAA4C;OAC1C,IAAI/mD,OAAO,CAAC4uD,MAAZ,EAAoB;CAClB,QAAA,IAAIgC,SAAS,CAACz+B,KAAV,CAAgB,WAAhB,CAAJ,EAAkC;CAChC;CACAo3B,UAAAA,QAAQ,CAAC7G,QAAD,EAAWkO,SAAX,CAAR,CAAA;CACD,SAAA;;CACD7B,QAAAA,YAAY,CAAC/L,OAAb,CAAqB96C,IAArB,CAA0Bw6C,QAA1B,CAAA,CAAA;CACAA,QAAAA,QAAQ,GAAG,EAAX,CAAA;CACD,OAAA;;CACD,MAAA,SAAA;CACD,KAAA;;KAED,IAAIqE,gBAAgB,KAAK,OAAzB,EAAkC;OAChC,IAAIgK,WAAW,GAAGhC,YAAlB,CAAA;;CACA,MAAA,IAAI,CAACgC,WAAW,CAACT,QAAjB,EAA2B;SACzBS,WAAW,CAACT,QAAZ,GAAuB,EAAvB,CAAA;CACD,OAAA;;CACDvB,MAAAA,YAAY,GAAG;CACb/L,QAAAA,OAAO,EAAE,EADI;CAEbiK,QAAAA,OAAO,EAAE,EAFI;CAGbxpD,QAAAA,IAAI,EAAE,EAHO;CAIbm/C,QAAAA,IAAI,EAAE,EAJO;SAKbrnC,GAAG,EAAE,EALQ;;QAAf,CAAA;CAOAw1C,MAAAA,WAAW,CAACT,QAAZ,CAAqBpoD,IAArB,CAA0B6mD,YAA1B,CAAA,CAAA;OACAwB,YAAY,CAACroD,IAAb,CAAkB6oD,WAAlB,CAAA,CAAA;OACAlE,WAAW,CAAC3kD,IAAZ,CAAiB6mD,YAAjB,CAAA,CAAA;OACAA,YAAY,CAACiC,KAAb,GAAqBJ,SAArB,CAAA;CACD,KAhBD,MAgBO,IAAI7J,gBAAgB,KAAK,UAAzB,EAAqC;OAC1CgI,YAAY,CAACkC,QAAb,GAAwBL,SAAxB,CAAA;;CACA,MAAA,IAAIA,SAAS,CAACz+B,KAAV,CAAgB,eAAhB,CAAJ,EAAsC;SACpC48B,YAAY,CAACJ,IAAb,GAAoB,IAApB,CAAA;CACD,OAAA;CACF,KALM,MAKA,IAAI5H,gBAAgB,KAAK,SAAzB,EAAoC;CACzC,MAAA,IAAI6J,SAAS,CAACz+B,KAAV,CAAgB,eAAhB,CAAJ,EAAsC;SACpC48B,YAAY,CAACJ,IAAb,GAAoB,IAApB,CAAA;CACD,OAAA;CACF,KAJM,MAIA,IAAI5H,gBAAgB,KAAK,WAAzB,EAAsC;OAC3CgI,YAAY,CAACmC,SAAb,GAAyBN,SAAzB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,QAAzB,EAAmC;OACxCrE,QAAQ,CAACyK,MAAT,GAAkByD,SAAlB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,QAAzB,EAAmC;OACxCrE,QAAQ,CAAC+M,MAAT,GAAkBmB,SAAlB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,QAAzB,EAAmC;CACxCrE,MAAAA,QAAQ,CAAC8E,MAAT,GAAkBlkD,MAAM,CAACstD,SAAD,CAAxB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,OAAzB,EAAkC;CACvCrE,MAAAA,QAAQ,CAACqH,KAAT,GAAiBzmD,MAAM,CAACstD,SAAD,CAAvB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,QAAzB,EAAmC;CACxCrE,MAAAA,QAAQ,CAACgF,MAAT,GAAkBpkD,MAAM,CAACstD,SAAD,CAAxB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,OAAzB,EAAkC;CACvCrE,MAAAA,QAAQ,CAACsH,KAAT,GAAiB1mD,MAAM,CAACstD,SAAD,CAAvB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,SAAzB,EAAoC;CACzCrE,MAAAA,QAAQ,CAAC6M,QAAT,GAAoBjsD,MAAM,CAACstD,SAAD,CAA1B,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,SAAzB,EAAoC;CACzCrE,MAAAA,QAAQ,CAACyG,OAAT,GAAmB7lD,MAAM,CAACstD,SAAD,CAAzB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,SAAzB,EAAoC;CACzCrE,MAAAA,QAAQ,CAACO,OAAT,GAAmB3/C,MAAM,CAACstD,SAAD,CAAzB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,MAAzB,EAAiC;CACtCrE,MAAAA,QAAQ,CAAC0H,IAAT,GAAgB9mD,MAAM,CAACstD,SAAD,CAAtB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,MAAzB,EAAiC;CACtCrE,MAAAA,QAAQ,CAACyH,IAAT,GAAgB7mD,MAAM,CAACstD,SAAD,CAAtB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,MAAzB,EAAiC;CACtCrE,MAAAA,QAAQ,CAAC4H,IAAT,GAAgBhnD,MAAM,CAACstD,SAAD,CAAtB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,MAAzB,EAAiC;CACtCrE,MAAAA,QAAQ,CAAC2H,IAAT,GAAgB/mD,MAAM,CAACstD,SAAD,CAAtB,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,QAAzB,EAAmC;CACxCrE,MAAAA,QAAQ,CAAC0E,MAAT,GAAkB9jD,MAAM,CAACstD,SAAD,CAAxB,CAAA;MADK,MAEA,IACL7J,gBAAgB,KAAK,mBAArB,IACAA,gBAAgB,KAAK,OAFhB,EAGL;CACA,MAAA,IAAI,CAACrE,QAAQ,CAACqK,gBAAd,EAAgC;CAC9BrK,QAAAA,QAAQ,CAACqK,gBAAT,GAA4BzpD,MAAM,CAACstD,SAAD,CAAlC,CAAA;CACD,OAAA;CACF,KAPM,MAOA,IAAI7J,gBAAgB,KAAK,iBAAzB,EAA4C;CACjD,MAAA,IAAI,CAACrE,QAAQ,CAACyO,KAAd,EAAqB;SACnBpC,YAAY,CAACoC,KAAb,GAAqBP,SAAS,CAAChoD,OAAV,CAAkB,eAAlB,EAAmC,EAAnC,CAArB,CAAA;CACD,OAAA;CACF,KAJM,MAIA,IAAIm+C,gBAAgB,KAAK,SAAzB,EAAoC;CACzC;OACAgI,YAAY,CAACqC,cAAb,GAA8B,CAA9B,CAAA;;CACA,MAAA,IAAI,CAAC1O,QAAQ,CAACsK,cAAd,EAA8B;CAC5BtK,QAAAA,QAAQ,CAACsK,cAAT,GAA0B1pD,MAAM,CAACstD,SAAD,CAAhC,CAAA;CACD,OAAA;CACF,KANM,MAMA,IAAI7J,gBAAgB,KAAK,iBAAzB,EAA4C,CAA5C,MAOA,IAAIA,gBAAgB,KAAK,SAAzB,EAAoC;OACzCgI,YAAY,CAAC9B,OAAb,CAAqBuC,OAArB,GAA+BoB,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA/B,CAAA;CACD,KAFM,MAEA,IAAI5I,gBAAgB,KAAK,QAAzB,EAAmC;OACxCgI,YAAY,CAAC9B,OAAb,CAAqBC,MAArB,GAA8B0D,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA9B,CAAA;CACD,KAFM,MAEA,IAAI5I,gBAAgB,KAAK,SAAzB,EAAoC;OACzCgI,YAAY,CAAC9B,OAAb,CAAqBoE,OAArB,GAA+BT,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA/B,CAAA;CACD,KAFM,MAEA,IAAI5I,gBAAgB,KAAK,SAAzB,EAAoC;OACzCgI,YAAY,CAAC9B,OAAb,CAAqBqE,OAArB,GAA+BV,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA/B,CAAA;CACD,KAFM,MAEA,IAAI5I,gBAAgB,KAAK,QAAzB,EAAmC;CACxCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqBqC,MAArB,GAA8BtI,mBAAmB,CAC/C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD+C,CAAjD,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,OAAzB,EAAkC;OACvCgI,YAAY,CAAC9B,OAAb,CAAqBa,KAArB,GAA6B8C,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA7B,CAAA;CACD,KAFM,MAEA,IAAI5I,gBAAgB,KAAK,QAAzB,EAAmC;CACxCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqB3lD,MAArB,GAA8B0/C,mBAAmB,CAC/C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD+C,CAAjD,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,OAAzB,EAAkC;CACvCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqB9pC,KAArB,GAA6B6jC,mBAAmB,CAC9C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD8C,CAAhD,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,MAAzB,EAAiC;CACtCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqB7pC,IAArB,GAA4B4jC,mBAAmB,CAC7C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD6C,CAA/C,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,KAAzB,EAAgC;CACrCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqBrpD,GAArB,GAA2BojD,mBAAmB,CAC5C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD4C,CAA9C,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,KAAzB,EAAgC;CACrCgI,MAAAA,YAAY,CAAC9B,OAAb,CAAqBppD,GAArB,GAA2BmjD,mBAAmB,CAC5C4J,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAD4C,CAA9C,CAAA;CAGD,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,UAAzB,EAAqC;OAC1C,IAAIgI,YAAY,CAAC9B,OAAjB,EAA0B;SACxB8B,YAAY,CAAC9B,OAAb,CAAqBI,OAArB,GAA+BuD,SAAS,CAACnkC,KAAV,CAAgBkjC,sBAAhB,CAA/B,CAAA;CACD,OAAA;CACF,KAJM,MAIA,IAAI5I,gBAAgB,KAAK,MAAzB,EAAiC;CACtCrE,MAAAA,QAAQ,CAAC6O,IAAT,GAAgBX,SAAS,CAAC3+B,IAAV,EAAhB,CAAA;CACAywB,MAAAA,QAAQ,CAACmE,SAAT,GAAqBvjD,MAAM,CAACstD,SAAS,CAAChoD,OAAV,CAAkB,MAAlB,EAA0B,EAA1B,CAAD,CAA3B,CAAA;CACA85C,MAAAA,QAAQ,CAACmL,UAAT,GAAsBnL,QAAQ,CAAC6O,IAAT,CAAc3oD,OAAd,CAAsB,OAAtB,EAA+B,EAA/B,CAAtB,CAAA;CACD,KAJM,MAIA,IAAIm+C,gBAAgB,KAAK,eAAzB,EAA0C;CAC/CrE,MAAAA,QAAQ,CAACmE,SAAT,GAAqBvjD,MAAM,CAACstD,SAAD,CAA3B,CAAA;CACD,KAFM,MAEA,IAAI9J,SAAS,CAACC,gBAAD,CAAb,EAAiC;CACtCrE,MAAAA,QAAQ,CAACkE,qBAAqB,CAACG,gBAAD,CAAtB,CAAR,GAAoD6J,SAApD,CAAA;CACD,KAFM,MAEA,IAAI7J,gBAAgB,KAAK,mBAAzB,EAA8C;OACnDrE,QAAQ,CAAC8O,iBAAT,GAA6BZ,SAA7B,CAAA;MADK,MAEA,IAAI7J,gBAAgB,CAACuG,UAAjB,CAA4B,MAA5B,CAAJ,EAAyC;CAC9C,MAAA,IAAI,CAACyB,YAAY,CAACxzC,GAAb,CAAiBwrC,gBAAjB,CAAD,IAAuC,CAAC6J,SAAS,CAACzN,QAAV,CAAmB,KAAnB,CAA5C,EAAuE;CACrE4L,QAAAA,YAAY,CAACxzC,GAAb,CAAiBwrC,gBAAjB,CAAqC6J,GAAAA,SAAS,CAAChoD,OAAV,CAAkB,OAAlB,EAA2B,EAA3B,CAArC,CAAA;CACD,OAAA;CACF,KAJM,MAIA,IAAIm+C,gBAAgB,KAAK,KAAzB,EAAgC;CACrCgI,MAAAA,YAAY,GAAGwB,YAAY,CAACkB,GAAb,EAAf,CAAA;CACD,KAAA;;CAED,IAAA,IACE1C,YAAY,IACZA,YAAY,CAACtrD,IADb,IAEAsrD,YAAY,CAACnM,IAFb,IAGAmE,gBAAgB,CAAC50B,KAAjB,CAAuBnyB,OAAO,CAAC6vD,iBAA/B,CAJF,EAKE;CACA,MAAA,IAAIxuD,KAAK,GAAGuvD,SAAS,CAAC3+B,IAAV,EAAZ,CAAA;OACA,IAAIltB,MAAJ,EAAY89C,KAAZ,CAAA;;CACA,MAAA,IAAI6N,SAAS,CAACpD,UAAV,CAAqB,GAArB,CAAJ,EAA+B;CAC7BzK,QAAAA,KAAK,GAAG7iD,OAAO,CAAC+vD,qBAAR,GACJhJ,gBAAgB,CAAC4J,SAAjB,CAA2B,CAA3B,CADI,GAEJD,SAAS,CAACC,SAAV,CAAoB,CAApB,CAFJ,CAAA;SAGA5rD,MAAM,GAAGgqD,YAAY,CAACnM,IAAtB,CAAA;CACD,OALD,MAKO;CACLC,QAAAA,KAAK,GAAG7iD,OAAO,CAAC8vD,iBAAR,GAA4B/I,gBAA5B,GAA+C2J,SAAvD,CAAA;SACA3rD,MAAM,GAAGgqD,YAAY,CAACtrD,IAAtB,CAAA;CACD,OAAA;;OAED,IAAIzD,OAAO,CAACgwD,aAAZ,EAA2B;CACzB3uD,QAAAA,KAAK,GAAG4kD,WAAW,CAAC5kD,KAAD,CAAnB,CAAA;CACD,OAAA;;CACD,MAAA,IAAI0D,MAAM,CAAC89C,KAAD,CAAV,EAAmB;SACjB,IAAI,CAACt5C,KAAK,CAACy6C,OAAN,CAAcj/C,MAAM,CAAC89C,KAAD,CAApB,CAAL,EAAmC;WACjC99C,MAAM,CAAC89C,KAAD,CAAN,GAAgB,CAAC99C,MAAM,CAAC89C,KAAD,CAAP,CAAhB,CAAA;CACD,SAAA;;CACD99C,QAAAA,MAAM,CAAC89C,KAAD,CAAN,CAAc36C,IAAd,CAAmB7G,KAAnB,CAAA,CAAA;CACD,OALD,MAKO;CACL0D,QAAAA,MAAM,CAAC89C,KAAD,CAAN,GAAgBxhD,KAAhB,CAAA;CACD,OAAA;CACF,KAAA;CACF,GAAA;;CAED6sD,EAAAA,SAAS,CAACnmD,MAAD,EAAS,kBAAT,EAA6B/H,OAA7B,CAAT,CAAA;CAEAyuD,EAAAA,cAAc,CAAC5B,WAAD,EAAc9kD,MAAd,EAAsB/H,OAAtB,CAAd,CAAA;CAEAkuD,EAAAA,SAAS,CAACnmD,MAAD,EAAS,YAAT,EAAuB/H,OAAvB,CAAT,CAAA;CAEA;;;;;;CAKA+H,EAAAA,MAAM,CAACqoD,OAAP,GAAiBC,SAAS,CAACC,QAA3B,CAAA;GACAvoD,MAAM,CAAC2pD,OAAP,GAAiB7E,WAAjB,CAAA;CAEA,EAAA,OAAO9kD,MAAP,CAAA;CACD;;CCxYM,SAAS4pD,YAAT,CAAsB1oD,IAAtB,EAA4B;CACjC,EAAA,IAAIgoD,QAAQ,GAAGhoD,IAAI,CAACgoD,QAAL,CAAc/pD,WAAd,EAAf,CAAA;GACA,IAAIuoD,MAAM,GAAGxmD,IAAI,CAAC+5C,OAAL,CAAa,CAAb,CAAgByM,CAAAA,MAAhB,CAAuBvoD,WAAvB,EAAb,CAAA;;CAEA,EAAA,IAAI+pD,QAAQ,CAAC9+B,KAAT,CAAe,UAAf,CAAJ,EAAgC;CAC9B,IAAA,IAAIs9B,MAAM,CAACt9B,KAAP,CAAa,YAAb,CAAJ,EAAgC;CAC9B,MAAA,OAAOy/B,aAAP,CAAA;CACD,KAFD,MAEO;CACL,MAAA,OAAOC,gBAAP,CAAA;CACD,KAAA;CACF,GAAA;;CACD,EAAA,OAAOzuD,SAAP,CAAA;CACD,CAAA;CAEM,MAAMyuD,gBAAgB,GAAG;CAC9BC,EAAAA,aAAa,EAAE,EADe;CAE9BC,EAAAA,WAAW,EAAE;KACXC,SAAS,EAAGC,aAAD,IAAmB,CAACnxD,IAAI,CAACuU,KAAL,CAAW48C,aAAX,CAAA;IAHH;CAK9BjD,EAAAA,IAAI,EAAE,UALwB;CAM9BkD,EAAAA,OAAO,EAAE;CACPC,IAAAA,MAAM,EAAE,mBADD;CAEPC,IAAAA,SAAS,EAAE,IAFJ;CAGPC,IAAAA,MAAM,EAAE,YAAA;CAHD,GAAA;CANqB,CAAzB,CAAA;CAaA,MAAMT,aAAa,GAAG;CAC3BE,EAAAA,aAAa,EAAE,EADY;CAE3B9C,EAAAA,IAAI,EAAE,UAFqB;CAG3BkD,EAAAA,OAAO,EAAE;CACPC,IAAAA,MAAM,EAAE,mBADD;CAEPC,IAAAA,SAAS,EAAE,IAFJ;CAGPC,IAAAA,MAAM,EAAE,YAAA;CAHD,GAAA;CAHkB,CAAtB;;CCxBP;CACA;CACA;CACA;CACA;;CACe,SAASlC,KAAT,CAAemC,SAAf,EAA0B;CACvC,EAAA,MAAMC,MAAM,GAAGrC,OAAO,CAACoC,SAAD,EAAY;CAAEE,IAAAA,EAAE,EAAE,IAAN;CAAY3C,IAAAA,iBAAiB,EAAE,OAAA;CAA/B,GAAZ,CAAP,CACZ6B,OADY,CACJ,CADI,CAAf,CAAA;CAEA,EAAA,MAAM1C,IAAI,GAAG2C,YAAY,CAACY,MAAD,CAAzB,CAAA;GACA,MAAMtpD,IAAI,GAAGspD,MAAM,CAACvP,OAAP,CAAe,CAAf,EAAkB/5C,IAA/B,CAAA;CACA,EAAA,MAAM25C,IAAI,GAAG2P,MAAM,CAAC9uD,IAApB,CALuC;;GAOvC,IAAIurD,IAAI,IAAIA,IAAI,CAAC+C,WAAb,IAA4B/C,IAAI,CAAC+C,WAAL,CAAiBC,SAAjD,EAA4D;CAC1D/oD,IAAAA,IAAI,CAACE,CAAL,GAASF,IAAI,CAACE,CAAL,CAAOc,GAAP,CAAW+kD,IAAI,CAAC+C,WAAL,CAAiBC,SAA5B,CAAT,CAAA;CACD,GAAA;;GAED,OAAO;KAAE/oD,IAAF;KAAQ+lD,IAAR;CAAcpM,IAAAA,IAAAA;IAArB,CAAA;CACD;;CCpBD;CACA;CACA;CACA;CACA;CACA;CACA;CACe,SAASt0C,MAAT,CAAgB81C,IAAhB,EAAoC;GAAA,IAAdpkD,OAAc,uEAAJ,EAAI,CAAA;CACjD,EAAA,MAAMkpD,KAAK,GAAG9E,IAAI,CAAC33B,KAAL,CAAW,SAAX,CAAA,CAAsBriB,MAAtB,CAA8B/I,KAAD,IAAWA,KAAxC,CAAd,CAAA;GACA,MAAM;CAAEoxD,IAAAA,EAAE,GAAG,IAAA;CAAP,GAAA,GAAgBzyD,OAAtB,CAAA;GACA,IAAI0yD,aAAa,GAAG,EAApB,CAAA;GACA,IAAIrS,GAAG,GAAG,EAAV,CAAA;GACA,IAAIuC,IAAI,GAAG,EAAX,CAAA;GACA,IAAIp9C,CAAC,GAAG,EAAR,CAAA;GAEA,IAAImtD,OAAO,GAAGzJ,KAAK,CAAC,CAAD,CAAL,CAASz8B,KAAT,CAAegmC,EAAf,CAAd,CAAA;GACA,IAAIG,MAAM,GAAG,EAAb,CAAA;;CAEA,EAAA,KAAK,IAAI9wD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6wD,OAAO,CAACxyD,MAA5B,EAAoC2B,CAAC,EAArC,EAAyC;CACvC,IAAA,IAAI+wD,MAAM,GAAGF,OAAO,CAAC7wD,CAAD,CAApB,CAAA;;CACA,IAAA,IAAIgH,KAAK,CAAC+pD,MAAD,CAAT,EAAmB;CACjBD,MAAAA,MAAM,CAAC9wD,CAAD,CAAN,GAAY+wD,MAAZ,CAAA;CACD,KAFD,MAEO;CACLrtD,MAAAA,CAAC,GAAGmtD,OAAO,CAAChwD,KAAR,CAAcb,CAAd,CAAA,CAAiBmI,GAAjB,CAAsB5I,KAAD,IAAWiC,MAAM,CAACjC,KAAD,CAAtC,CAAJ,CAAA;CACA,MAAA,MAAA;CACD,KAAA;CACF,GAAA;;CAED,EAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGonD,KAAK,CAAC/oD,MAA1B,EAAkC2B,CAAC,EAAnC,EAAuC;CACrC,IAAA,IAAIqO,IAAI,GAAG+4C,KAAK,CAACpnD,CAAD,CAAhB,CAAA;CACA,IAAA,IAAIgxD,KAAK,GAAG3iD,IAAI,CAACsc,KAAL,CAAW,IAAX,CAAZ,CAAA;CACA4zB,IAAAA,GAAG,CAACn4C,IAAJ,CAAS4qD,KAAK,CAAC,CAAD,CAAd,CAAA,CAAA;KACA,IAAIC,OAAO,GAAG,EAAd,CAAA;KACAnQ,IAAI,CAAC16C,IAAL,CAAU6qD,OAAV,CAAA,CAAA;;CACA,IAAA,KAAK,IAAIhxD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+wD,KAAK,CAAC3yD,MAA1B,EAAkC4B,CAAC,EAAnC,EAAuC;CACrC,MAAA,IAAIA,CAAC,GAAG6wD,MAAM,CAACzyD,MAAf,EAAuB;SACrB4yD,OAAO,CAACH,MAAM,CAAC7wD,CAAD,CAAP,CAAP,GAAqB+wD,KAAK,CAAC/wD,CAAD,CAA1B,CAAA;CACD,OAFD,MAEO;CACL2wD,QAAAA,aAAa,CAACxqD,IAAd,CACE4qD,KAAK,CAACnwD,KAAN,CAAYiwD,MAAM,CAACzyD,MAAnB,CAA2B8J,CAAAA,GAA3B,CAAgC5I,KAAD,IAAWiC,MAAM,CAACjC,KAAD,CAAhD,CADF,CAAA,CAAA;CAGA,QAAA,MAAA;CACD,OAAA;CACF,KAAA;CACF,GAAA;;GACD,OAAO;KAAEmE,CAAF;KAAKo9C,IAAL;CAAWt0C,IAAAA,MAAM,EAAEokD,aAAnB;CAAkCrS,IAAAA,GAAAA;IAAzC,CAAA;CACD;;CC9CD;CACA;CACA;CACA;CACA;CAEe,SAAS2S,OAAT,GAA8B;GAAA,IAAbC,MAAa,uEAAJ,EAAI,CAAA;GAC3C,MAAM;KAAEztD,CAAF;CAAK2D,IAAAA,CAAAA;CAAL,GAAA,GAAW8pD,MAAjB,CAAA;CACA,EAAA,IAAIztD,CAAC,CAACrF,MAAF,GAAW,CAAf,EAAkB,OAAA;;CAClB,EAAA,IAAIqF,CAAC,CAACrF,MAAF,KAAagJ,CAAC,CAAChJ,MAAnB,EAA2B;CACzB,IAAA,MAAM,IAAIa,KAAJ,CAAU,8CAAV,CAAN,CAAA;CACD,GAAA;;CAED,EAAA,IAAIqI,OAAO,GAAG7D,CAAC,CAAC,CAAD,CAAf,CAAA;GACA,IAAIkF,OAAO,GAAG,CAAd,CAAA;;CAEA,EAAA,KAAK,IAAI5I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0D,CAAC,CAACrF,MAAtB,EAA8B2B,CAAC,EAA/B,EAAmC;CACjC,IAAA,IAAIuH,OAAO,KAAK7D,CAAC,CAAC1D,CAAD,CAAjB,EAAsB;OACpB4I,OAAO,EAAA,CAAA;CACPrB,MAAAA,OAAO,GAAG7D,CAAC,CAAC1D,CAAD,CAAX,CAAA;CACA0D,MAAAA,CAAC,CAACkF,OAAD,CAAD,GAAalF,CAAC,CAAC1D,CAAD,CAAd,CAAA;;OACA,IAAIA,CAAC,KAAK4I,OAAV,EAAmB;CACjBvB,QAAAA,CAAC,CAACuB,OAAD,CAAD,GAAa,CAAb,CAAA;CACD,OAAA;CACF,KAAA;;KACD,IAAI5I,CAAC,KAAK4I,OAAV,EAAmB;CACjBvB,MAAAA,CAAC,CAACuB,OAAD,CAAD,IAAcvB,CAAC,CAACrH,CAAD,CAAf,CAAA;CACD,KAAA;CACF,GAAA;;CAED0D,EAAAA,CAAC,CAACrF,MAAF,GAAWuK,OAAO,GAAG,CAArB,CAAA;CACAvB,EAAAA,CAAC,CAAChJ,MAAF,GAAWuK,OAAO,GAAG,CAArB,CAAA;CACD;;CCxBD;;;;;;;;CAOM,SAAUX,KAAV,CACJq6C,IADI,EAEwB;GAAA,IAA5BpkD,OAA4B,uEAAF,EAAE,CAAA;GAK5B,IAAI;CACFgP,IAAAA,OAAO,GAAG,KADR;CAEFgkD,aAAAA,SAAO,GAAG,KAFR;CAGFE,IAAAA,OAAO,GAAG,CAHR;CAIFC,IAAAA,OAAO,GAAG,CAJR;CAKFC,IAAAA,SAAS,GAAG,KALV;CAMF;KACAC,QAPE;KAQFC,aAAa,GAAGhwD,MAAM,CAAC6C,gBARrB;KASFotD,gBAAgB,GAAGjwD,MAAM,CAAC6C,gBATxB;CAUFqtD,IAAAA,gBAAgB,GAAG,CAAA;CAVjB,GAAA,GAWAxzD,OAXJ,CAAA;;GAaA,IAAIqzD,QAAQ,KAAKjwD,SAAjB,EAA4B;CAC1B,IAAA,MAAM,IAAIpC,KAAJ,CACJ,4EADI,CAAN,CAAA;CAGD,GAAA;;CAEDojD,EAAAA,IAAI,GAAGc,YAAY,CAACd,IAAD,CAAnB,CAAA;CAEAmP,EAAAA,gBAAgB,GAAGzyD,IAAI,CAAC+C,GAAL,CAAS0vD,gBAAT,EAA2BL,OAAO,GAAG,CAArC,EAAwCC,OAAO,GAAG,CAAlD,CAAnB,CAAA;CACAK,EAAAA,gBAAgB,GAAG1yD,IAAI,CAAC+C,GAAL,CAASqvD,OAAO,GAAG,CAAnB,EAAsBC,OAAO,GAAG,CAAhC,EAAmCK,gBAAnC,CAAnB,CAAA;CAEA,EAAA,IAAItK,KAAK,GAAG9E,IAAI,CAAC33B,KAAL,CAAW,SAAX,CAAZ,CAAA;GAEA,IAAIne,MAAM,GAAe,EAAzB,CAAA;GACA,IAAI7K,IAAI,GAA0C,EAAlD,CAAA;GACA,IAAIwK,QAAQ,GAAG,CAAf,CAAA;CACAi7C,EAAAA,KAAK,CAAC/+C,OAAN,CAAegG,IAAD,IAAS;CACrBA,IAAAA,IAAI,GAAGA,IAAI,CAAC8hB,IAAL,EAAP,CADqB;;KAGrB,IAAI,QAAA,CAAS7D,IAAT,CAAcje,IAAd,CAAA,IAAuB,qBAAqBie,IAArB,CAA0Bje,IAA1B,CAA3B,EAA4D;CAC1D,MAAA,IAAIsjD,MAAM,GAAGtjD,IAAI,CAACsc,KAAL,CAAW,kBAAX,CAAb,CAAA;;CACA,MAAA,IAAIgnC,MAAM,CAACtzD,MAAP,KAAkB,CAAtB,EAAyB;CACvBszD,QAAAA,MAAM,GAAGtjD,IAAI,CAACsc,KAAL,CAAW,UAAX,CAAT,CAAA;CACD,OAAA;;CACD,MAAA,IACEgnC,MAAM,IACNA,MAAM,CAACtzD,MAAP,IAAiBqzD,gBADjB;CAEAC,MAAAA,MAAM,CAACtzD,MAAP,IAAiBozD,gBAHnB,EAIE;SACAjlD,MAAM,CAACpG,IAAP,CAAYurD,MAAM,CAACxpD,GAAP,CAAY5I,KAAD,IAAWqyD,UAAU,CAACryD,KAAK,CAACuH,OAAN,CAAc,GAAd,EAAmB,GAAnB,CAAD,CAAhC,CAAZ,CAAA,CAAA;SACAqF,QAAQ,EAAA,CAAA;CACT,OAAA;MAZH,MAaO,IAAIkC,IAAJ,EAAU;OACf1M,IAAI,CAACyE,IAAL,CAAU;SAAE+F,QAAF;CAAY5M,QAAAA,KAAK,EAAE8O,IAAAA;QAA7B,CAAA,CAAA;CACD,KAAA;IAlBH,CAAA,CAAA;;CAqBA,EAAA,IAAIijD,SAAJ,EAAe;KACb,IACE9kD,MAAM,CAAC,CAAD,CAAN,IACAA,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAAV,KAAqB,CADrB,IAEAH,OAAO,CAACkzD,OAAR,KAAoB9vD,SAFpB,IAGApD,OAAO,CAACmzD,OAAR,KAAoB/vD,SAJtB,EAKE;CACA;OACA,IAAIuwD,eAAe,GAAG,IAAtB,CAAA;;CACA,MAAA,KAAK,IAAI7xD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwM,MAAM,CAACnO,MAAP,GAAgB,CAApC,EAAuC2B,CAAC,EAAxC,EAA4C;SAC1C,IAAIhB,IAAI,CAACqE,GAAL,CAASmJ,MAAM,CAACxM,CAAD,CAAN,CAAU,CAAV,CAAA,GAAewM,MAAM,CAACxM,CAAC,GAAG,CAAL,CAAN,CAAc,CAAd,CAAxB,CAA8C,KAAA,CAAlD,EAAqD;CACnD6xD,UAAAA,eAAe,GAAG,KAAlB,CAAA;CACD,SAAA;CACF,OAAA;;CACD,MAAA,IAAIA,eAAJ,EAAqB;CACnBT,QAAAA,OAAO,GAAG,CAAV,CAAA;CACAC,QAAAA,OAAO,GAAG,CAAV,CAAA;CACD,OAAA;CACF,KAAA;;CACD,IAAA,IAAI7kD,MAAM,CAAC,CAAD,CAAN,IAAaA,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAAV,GAAmB,CAApC,EAAuC;OACrC,MAAMyzD,EAAE,GAAa,EAArB,CAAA;;CACA,MAAA,KAAK,IAAIllD,GAAT,IAAgBJ,MAAhB,EAAwB;CACtB,QAAA,KAAK,IAAIxM,CAAC,GAAGoxD,OAAb,EAAsBpxD,CAAC,GAAG4M,GAAG,CAACvO,MAA9B,EAAsC2B,CAAC,IAAI,CAA3C,EAA8C;CAC5C8xD,UAAAA,EAAE,CAAC1rD,IAAH,CAAQwG,GAAG,CAAC5M,CAAD,CAAX,CAAA,CAAA;CACD,SAAA;CACF,OAAA;;CACD,MAAA,IAAIuE,WAAW,CAACutD,EAAD,CAAf,EAAqB;CACnBN,QAAAA,aAAa,GAAG,CAAhB,CAAA;CACD,OAAA;CACF,KAAA;CACF,GAAA;;CAED,EAAA,IAAIA,aAAJ,EAAmB;KACjB,MAAM7kD,SAAS,GAAe,EAA9B,CAAA;;CACA,IAAA,KAAK,MAAMC,GAAX,IAAkBJ,MAAlB,EAA0B;CACxB,MAAA,KAAK,IAAIxM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4M,GAAG,CAACvO,MAAxB,EAAgC2B,CAAC,IAAIwxD,aAArC,EAAoD;CAClD7kD,QAAAA,SAAS,CAACvG,IAAV,CAAewG,GAAG,CAAC/L,KAAJ,CAAUb,CAAV,EAAaA,CAAC,GAAGwxD,aAAjB,CAAf,CAAA,CAAA;CACD,OAAA;CACF,KAAA;;CACDhlD,IAAAA,MAAM,GAAGG,SAAT,CAAA;CACD,GAAA;;CACD,EAAA,MAAM1G,MAAM,GAAG;KACbvC,CAAC,EAAE8I,MAAM,CAACrE,GAAP,CAAYyE,GAAD,IAASA,GAAG,CAACwkD,OAAD,CAAvB,CADU;KAEb/pD,CAAC,EAAEmF,MAAM,CAACrE,GAAP,CAAYyE,GAAD,IAASA,GAAG,CAACykD,OAAD,CAAvB,CAAA;IAFL,CAAA;;CAKA,EAAA,IAAIH,SAAJ,EAAa;KACXa,OAAe,CAAC9rD,MAAD,CAAf,CAAA;CACD,GAAA;;CAED,EAAA,IAAIiH,OAAJ,EAAa;CACX,IAAA,IAAIs7C,IAAI,GAAGwJ,KAAU,CAAC/rD,MAAM,CAACoB,CAAR,CAArB,CAAA;;CACA,IAAA,KAAK,IAAIrH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiG,MAAM,CAACoB,CAAP,CAAShJ,MAA7B,EAAqC2B,CAAC,EAAtC,EAA0C;CACxCiG,MAAAA,MAAM,CAACoB,CAAP,CAASrH,CAAT,KAAewoD,IAAf,CAAA;CACD,KAAA;CACF,GAAA;;GAED,OAAO;KACL7mD,IADK;CAELwF,IAAAA,IAAI,EAAElB,MAAAA;IAFR,CAAA;CAID;;CC9HD;;;;;;;;CAOM,SAAUihD,OAAV,CAAkB5E,IAAlB,EAA8D;GAAA,IAA5BpkD,OAA4B,uEAAF,EAAE,CAAA;CAClE,EAAA,OAAO+J,KAAK,CAACq6C,IAAD,EAAOpkD,OAAP,CAAL,CAAqBiJ,IAA5B,CAAA;CACD;;CCdD;CACA;CACA;CACA;CACA;;CACe,SAASm7C,IAAT,CAAc/iD,KAAd,EAAmC;GAAA,IAAdrB,OAAc,uEAAJ,EAAI,CAAA;GAChD,MAAM;KAAEgvD,IAAF;CAAQ+E,IAAAA,aAAa,GAAG,EAAA;CAAxB,GAAA,GAA+B/zD,OAArC,CAAA;GAEA,MAAMiJ,IAAI,GAAG+/C,OAAO,CAAC3nD,KAAD,EAAQ0yD,aAAR,CAApB,CAHgD;;GAMhD,IAAI/E,IAAI,IAAIA,IAAI,CAAC+C,WAAb,IAA4B/C,IAAI,CAAC+C,WAAL,CAAiBC,SAAjD,EAA4D;CAC1D/oD,IAAAA,IAAI,CAACE,CAAL,GAASF,IAAI,CAACE,CAAL,CAAOc,GAAP,CAAW+kD,IAAI,CAAC+C,WAAL,CAAiBC,SAA5B,CAAT,CAAA;CACD,GAAA;;GAED,OAAO;CAAE/oD,IAAAA,IAAAA;IAAT,CAAA;CACD;;CChBD;CACA;CACA;;CAEO,SAASk3C,kBAAT,CAA4BuD,UAA5B,EAAwC/iD,KAAxC,EAA+C;CACpD,EAAA,IAAI2N,MAAM,GAAGo1C,UAAU,CAACp1C,MAAxB,CAAA;CACA,EAAA,IAAI4yC,KAAK,GAAG5yC,MAAM,CAACnO,MAAnB,CAAA;CACA,EAAA,IAAIghD,QAAQ,GAAG7yC,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAAzB,CAAA;CACA,EAAA,IAAI0C,MAAM,GAAG,IAAIrC,YAAJ,CAAiB0gD,KAAjB,CAAb,CAAA;CACA,EAAA,IAAIp+C,MAAM,GAAG,IAAItC,YAAJ,CAAiB0gD,KAAjB,CAAb,CAAA;CACA,EAAA,IAAIn5C,MAAM,GAAG,IAAIwB,KAAJ,CAAU43C,QAAV,CAAb,CAAA;;GACA,KAAK,IAAIp/C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm/C,KAApB,EAA2Bn/C,CAAC,EAA5B,EAAgC;KAC9Bc,MAAM,CAACd,CAAD,CAAN,GAAYuM,MAAM,CAACvM,CAAD,CAAN,CAAUpB,KAAV,CAAZ,CAAA;CACD,GAAA;;GACD,KAAK,IAAImB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGq/C,QAApB,EAA8Br/C,CAAC,EAA/B,EAAmC;KACjC,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm/C,KAApB,EAA2Bn/C,CAAC,EAA5B,EAAgC;OAC9Be,MAAM,CAACf,CAAD,CAAN,GAAYuM,MAAM,CAACvM,CAAD,CAAN,CAAUD,CAAV,CAAZ,CAAA;CACD,KAAA;;KACDiG,MAAM,CAACjG,CAAD,CAAN,GAAYqC,YAAY,CAACtB,MAAD,EAASC,MAAT,CAAxB,CAAA;CACD,GAAA;;GACD,OAAO;KACL0C,CAAC,EAAEk+C,UAAU,CAACl+C,CADT;CAEL2D,IAAAA,CAAC,EAAEpB,MAAAA;IAFL,CAAA;CAID;;CCxBD;CACA;CACA;;CAEO,SAASy4C,WAAT,CAAqBkD,UAArB,EAAiC;GACtC,IAAIp1C,MAAM,GAAG,IAAI6C,MAAJ,CAAWuyC,UAAU,CAACp1C,MAAtB,CAAb,CAAA;GACA,OAAO;KACL9I,CAAC,EAAEk+C,UAAU,CAACl+C,CADT;CAEL2D,IAAAA,CAAC,EAAEmF,MAAM,CAAC3G,IAAP,CAAY,QAAZ,CAAA;IAFL,CAAA;CAID;;CCZM,SAASqsD,aAAT,CAAuB/qD,IAAvB,EAA2C;GAAA,IAAdjJ,OAAc,uEAAJ,EAAI,CAAA;GAChD,IAAI;CAAEyyD,IAAAA,EAAE,GAAG,IAAP;CAAawB,IAAAA,EAAE,GAAG,IAAA;CAAlB,GAAA,GAA2Bj0D,OAA/B,CAAA;GACA,IAAI;KAAEsO,MAAF;KAAUs0C,IAAV;KAAgBvC,GAAhB;CAAqB76C,IAAAA,CAAAA;CAArB,GAAA,GAA2ByD,IAA/B,CAAA;GACA,IAAIirD,aAAa,GAAG,EAApB,CAAA;;CACA,EAAA,KAAK,IAAIC,KAAT,IAAkBvR,IAAlB,EAAwB;CACtB,IAAA,IAAIuR,KAAJ,EAAW;OACT,KAAK,IAAI1b,GAAT,IAAgBv3C,MAAM,CAACgmC,IAAP,CAAYitB,KAAZ,CAAhB,EAAoC;CAClC,QAAA,IAAIj2C,IAAI,GAAG,OAAOi2C,KAAK,CAAC1b,GAAD,CAAvB,CAAA;;SACA,IAAIv6B,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAA9B,IAA0CA,IAAI,KAAK,SAAvD,EAAkE;CAChEg2C,UAAAA,aAAa,CAACzb,GAAD,CAAb,GAAqB,IAArB,CAAA;CACD,SAAA;CACF,OAAA;CACF,KAAA;CACF,GAAA;;CACD,EAAA,IAAI2b,OAAO,GAAGlzD,MAAM,CAACgmC,IAAP,CAAYgtB,aAAZ,CAAd,CAAA;GAEA,IAAIhL,KAAK,GAAG,EAAZ,CAAA;GACA,IAAI/4C,IAAI,GAAG,EAAX,CAAA;GACAA,IAAI,CAACjI,IAAL,CAAU,IAAV,EAAgB,GAAGksD,OAAnB,EAA4B,GAAG5uD,CAA/B,CAAA,CAAA;GACA0jD,KAAK,CAAChhD,IAAN,CAAWiI,IAAI,CAACG,IAAL,CAAUmiD,EAAV,CAAX,CAAA,CAAA;;CAEA,EAAA,KAAK,IAAI3wD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu+C,GAAG,CAAClgD,MAAxB,EAAgC2B,CAAC,EAAjC,EAAqC;CACnCqO,IAAAA,IAAI,GAAG,EAAP,CAAA;CACAA,IAAAA,IAAI,CAACjI,IAAL,CAAUm4C,GAAG,CAACv+C,CAAD,CAAb,CAAA,CAAA;;CACA,IAAA,KAAK,IAAI22C,GAAT,IAAgB2b,OAAhB,EAAyB;OACvBjkD,IAAI,CAACjI,IAAL,CAAU06C,IAAI,CAAC9gD,CAAD,CAAJ,CAAQ22C,GAAR,CAAV,CAAA,CAAA;CACD,KAAA;;CACDtoC,IAAAA,IAAI,CAACjI,IAAL,CAAU,GAAGoG,MAAM,CAACxM,CAAD,CAAnB,CAAA,CAAA;KACAonD,KAAK,CAAChhD,IAAN,CAAWiI,IAAI,CAACG,IAAL,CAAUmiD,EAAV,CAAX,CAAA,CAAA;CACD,GAAA;;CACD,EAAA,OAAOvJ,KAAK,CAAC54C,IAAN,CAAW2jD,EAAX,CAAP,CAAA;CACD;;CC7BD;CACA;CACA;CACA;CACA;CACA;CACA;;CAEO,SAASI,iBAAT,CAA2BrR,OAA3B,EAAkD;GAAA,IAAdhjD,OAAc,uEAAJ,EAAI,CAAA;GACvD,IAAI;CAAEyyD,IAAAA,EAAE,GAAG,IAAP;CAAawB,IAAAA,EAAE,GAAG,IAAA;CAAlB,GAAA,GAA2Bj0D,OAA/B,CAAA;CAEA,EAAA,OAAOg0D,aAAa,CAAClQ,iBAAiB,CAACd,OAAD,CAAlB,EAA6B;KAC/CiR,EAD+C;CAE/CxB,IAAAA,EAAAA;CAF+C,GAA7B,CAApB,CAAA;CAID;;;;;GCjBD,CAAC,UAAS/wD,CAAT,EAAW;KAAgCS,MAAA,CAAAC,OAAA,GAAeV,CAAC,EAAzC,CAAA,CAAA;CAA0N,GAA5O,CAA6O,YAAU;KAAC,OAAO,SAAS8gB,CAAT,CAAW8xC,CAAX,EAAaxyD,CAAb,EAAeozB,CAAf,EAAiB;CAAC,MAAA,SAASxW,CAAT,CAAWpa,CAAX,EAAa5C,CAAb,EAAe;CAAC,QAAA,IAAG,CAACI,CAAC,CAACwC,CAAD,CAAL,EAAS;CAAC,UAAA,IAAG,CAACgwD,CAAC,CAAChwD,CAAD,CAAL,EAAS;aAAC,IAAI2hB,CAAC,GAAC,UAAA,IAAY,OAAOsuC,eAAnB,IAA4BA,eAAlC,CAAA;CAA0C,YAAA,IAAG,CAAC7yD,CAAD,IAAIukB,CAAP,EAAS,OAAOA,CAAC,CAAC3hB,CAAD,EAAG,CAAC,CAAJ,CAAR,CAAA;aAAe,IAAG9C,CAAH,EAAK,OAAOA,CAAC,CAAC8C,CAAD,EAAG,CAAC,CAAJ,CAAR,CAAA;CAAe,YAAA,MAAM,IAAItD,KAAJ,CAAU,yBAAuBsD,CAAvB,GAAyB,GAAnC,CAAN,CAAA;CAA8C,WAAA;;CAAA5C,UAAAA,CAAC,GAACI,CAAC,CAACwC,CAAD,CAAD,GAAK;CAAClC,YAAAA,OAAO,EAAC,EAAA;YAAhB,CAAA;CAAoBkyD,UAAAA,CAAC,CAAChwD,CAAD,CAAD,CAAK,CAAL,CAAQhD,CAAAA,IAAR,CAAaI,CAAC,CAACU,OAAf,EAAuB,UAASV,CAAT,EAAW;aAAC,IAAIukB,CAAC,GAACquC,CAAC,CAAChwD,CAAD,CAAD,CAAK,CAAL,CAAQ5C,CAAAA,CAAR,CAAN,CAAA;CAAiB,YAAA,OAAOgd,CAAC,CAACuH,CAAC,IAAEvkB,CAAJ,CAAR,CAAA;CAAe,WAAnE,EAAoEA,CAApE,EAAsEA,CAAC,CAACU,OAAxE,EAAgFogB,CAAhF,EAAkF8xC,CAAlF,EAAoFxyD,CAApF,EAAsFozB,CAAtF,CAAA,CAAA;CAAyF,SAAA;;CAAA,QAAA,OAAOpzB,CAAC,CAACwC,CAAD,CAAD,CAAKlC,OAAZ,CAAA;CAAoB,OAAA;;CAAA,MAAA,KAAI,IAAIZ,CAAC,GAAC,UAAA,IAAY,OAAO+yD,eAAnB,IAA4BA,eAAlC,EAA0C7yD,CAAC,GAAC,CAAhD,EAAkDA,CAAC,GAACwzB,CAAC,CAAC/0B,MAAtD,EAA6DuB,CAAC,EAA9D,EAAiEgd,CAAC,CAACwW,CAAC,CAACxzB,CAAD,CAAF,CAAD,CAAA;;CAAQ,MAAA,OAAOgd,CAAP,CAAA;CAAS,KAA7Y,CAA8Y;CAAC,MAAA,CAAA,EAAE,CAAC,UAASyyB,CAAT,EAAWlvC,CAAX,EAAawZ,CAAb,EAAe;CAAC,QAAA,CAAC,UAAS/Z,CAAT,EAAW4C,CAAX,EAAaoa,CAAb,EAAe1c,CAAf,EAAiBP,CAAjB,EAAmBI,CAAnB,EAAqB8Z,CAArB,EAAuB/Z,CAAvB,EAAyBuH,CAAzB,EAA2B;;CAAc,UAAA,IAAIqZ,CAAC,GAAC2uB,CAAC,CAAC,QAAD,CAAP,CAAA;;CAAkB,UAAA,SAASlrB,CAAT,CAAWvkB,CAAX,EAAaukB,CAAb,EAAe;CAACA,YAAAA,CAAC,GAACiP,CAAC,CAACxzB,CAAD,EAAGukB,CAAH,CAAH,CAAA;CAAS,YAAA,IAAI3hB,CAAJ,CAAA;aAAM,OAAO,KAAK,CAAL,KAAS,CAACA,CAAC,GAAC,aAAgB2hB,KAAAA,CAAC,CAAChf,SAAlB,GAA4Bub,CAAC,CAACgyC,UAAF,CAAavuC,CAAC,CAAChf,SAAf,CAA5B,GAAsD,IAAI8S,CAAJ,EAAzD,EAAgE06C,KAAzE,KAAiFnwD,CAAC,CAACmwD,KAAF,GAAQnwD,CAAC,CAACowD,MAAV,EAAiBpwD,CAAC,CAAC2wC,GAAF,GAAM3wC,CAAC,CAACowD,MAA1G,CAAkH/yD,EAAAA,CAAC,CAACskB,CAAD,EAAG3hB,CAAH,CAAD,CAAOqwD,QAAP,CAAgBjzD,CAAhB,CAAlH,EAAqI4C,CAAC,CAACowD,MAAF,IAAUpwD,CAAC,CAAC2wC,GAAF,CAAM,EAAN,CAA/I,EAAyJ3wC,CAAC,CAACswD,MAAF,GAAStwD,CAAC,CAACswD,MAAF,CAAS,QAAW3uC,KAAAA,CAAC,CAACq/B,QAAb,GAAsB,KAAK,CAA3B,GAA6Br/B,CAAC,CAACq/B,QAAxC,CAAT,IAA4D5jD,CAAC,GAAC4C,CAAC,CAACuwD,IAAF,EAAF,EAAW,QAAA,KAAW5uC,CAAC,CAACq/B,QAAb,GAAsB5jD,CAAC,CAACT,QAAF,CAAWglB,CAAC,CAACq/B,QAAb,CAAtB,GAA6C5jD,CAApH,CAAhK,CAAA;CAAuR,WAAA;;CAAA,UAAA,CAAC+Z,CAAC,GAACxZ,CAAC,CAACG,OAAF,GAAU6jB,CAAb,EAAgB6uC,IAAhB,GAAqB,UAASpzD,CAAT,EAAW;aAAC,OAAOukB,CAAC,CAACvkB,CAAD,CAAR,CAAA;CAAY,WAA7C,EAA8C+Z,CAAC,CAACyrB,IAAF,GAAO,UAASxlC,CAAT,EAAW;aAAC,OAAOukB,CAAC,CAACvkB,CAAD,EAAG;eAACqzD,aAAa,EAAC,CAAC,CAAhB;CAAkB9tD,cAAAA,SAAS,EAAC,MAA5B;CAAmCq+C,cAAAA,QAAQ,EAAC,KAAA;CAA5C,aAAH,CAAR,CAAA;CAA+D,WAAhI,EAAiI7pC,CAAC,CAACu5C,GAAF,GAAM,UAAStzD,CAAT,EAAW;aAAC,OAAOukB,CAAC,CAACvkB,CAAD,EAAG;CAACuF,cAAAA,SAAS,EAAC,KAAX;CAAiBq+C,cAAAA,QAAQ,EAAC,KAAA;CAA1B,aAAH,CAAR,CAAA;CAA6C,WAAhM,EAAiM7pC,CAAC,CAACw5C,OAAF,GAAU,UAASvzD,CAAT,EAAW;aAAC,OAAOukB,CAAC,CAACvkB,CAAD,EAAG;CAACuF,cAAAA,SAAS,EAAC,KAAX;CAAiBq+C,cAAAA,QAAQ,EAAC,KAA1B;CAAgCyP,cAAAA,aAAa,EAAC,CAAC,CAAA;CAA/C,aAAH,CAAR,CAAA;YAAvN,CAAA;CAAsR,UAAA,IAAIT,CAAC,GAAC9xC,CAAC,CAAC0yC,SAAF,GAAY1yC,CAAC,CAAC0yC,SAAF,EAAA,CAAcvyD,KAAd,EAAZ,GAAkC,CAAC,MAAD,EAAQ,KAAR,CAAxC;CAAA,cAAuDb,CAAC,IAAEwyD,CAAC,CAACpsD,IAAF,CAAO,aAAP,CAAA,EAAsB,CAAC,QAAD,EAAU,KAAV,EAAgB,QAAhB,EAAyB,QAAzB,CAAxB,CAAxD,CAAA;;CAAoH,UAAA,SAASgtB,CAAT,CAAWxzB,CAAX,EAAaukB,CAAb,EAAe;aAAC,IAAI3hB,CAAC,GAAC,EAAN,CAAA;CAAS,YAAA,IAAGA,CAAC,CAAC2C,SAAF,GAAY,CAACgf,CAAC,GAACA,CAAC,IAAE,EAAN,EAAUhf,SAAV,IAAqB,MAAjC,EAAwC3C,CAAC,CAACghD,QAAF,GAAWr/B,CAAC,CAACq/B,QAAF,IAAY,KAA/D,EAAqEhhD,CAAC,CAACywD,aAAF,GAAgB,CAAC,CAAC9uC,CAAC,CAAC8uC,aAAzF,EAAuGzwD,CAAC,CAAC2C,SAAF,GAAY3C,CAAC,CAAC2C,SAAF,CAAYC,WAAZ,EAAnH,EAA6I5C,CAAC,CAACghD,QAAF,GAAWhhD,CAAC,CAACghD,QAAF,CAAWp+C,WAAX,EAAxJ,EAAiL5C,CAAC,CAAC6wD,aAAF,GAAgB,CAAC,CAAD,KAAKlvC,CAAC,CAACkvC,aAAxM,EAAsN7wD,CAAC,CAAC8wD,WAAF,GAAc,CAAC,CAAD,KAAKnvC,CAAC,CAACmvC,WAA3O,EAAuP9wD,CAAC,CAAC+wD,oBAAF,GAAuB,CAAC,CAAD,KAAKpvC,CAAC,CAACovC,oBAArR,EAA0S/wD,CAAC,CAACgxD,yBAAF,GAA4B,CAAC,CAAD,KAAKrvC,CAAC,CAACqvC,yBAA7U,EAAuWhxD,CAAC,CAACixD,eAAF,GAAkB,CAAC,CAAD,KAAKtvC,CAAC,CAACsvC,eAAhY,EAAgZjxD,CAAC,CAACkxD,aAAF,GAAgB,CAAC,CAAD,KAAKvvC,CAAC,CAACuvC,aAAva,EAAqblxD,CAAC,CAACmxD,gBAAF,GAAmB,CAAC,CAAD,KAAKxvC,CAAC,CAACwvC,gBAA/c,EAAgenxD,CAAC,CAACoxD,QAAF,GAAWzvC,CAAC,CAACyvC,QAAF,IAAY,KAAK,CAA5f,EAA8fpxD,CAAC,CAACqxD,WAAF,GAAc1vC,CAAC,CAAC0vC,WAAF,IAAe,KAAK,CAAhiB,EAAkiB,KAAK,CAAL,KAASj0D,CAA9iB,EAAgjB,MAAM,IAAIV,KAAJ,CAAU,2BAAV,CAAN,CAAA;;CAA6C,YAAA,KAAI,IAAIwhB,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC8xC,CAAC,CAACn0D,MAAhB,EAAuB,EAAEqiB,CAAzB,EAA2B8xC,CAAC,CAAC9xC,CAAD,CAAD,CAAKtb,WAAL,EAAqB5C,KAAAA,CAAC,CAAC2C,SAAF,CAAYC,WAAZ,EAArB,KAAiD5C,CAAC,CAAC2C,SAAF,GAAYqtD,CAAC,CAAC9xC,CAAD,CAA9D,CAAA,CAAA;;CAAmE,YAAA,IAAG,CAAC,CAAD,KAAK8xC,CAAC,CAACtjD,OAAF,CAAU1M,CAAC,CAAC2C,SAAZ,CAAR,EAA+B,MAAM,IAAIjG,KAAJ,CAAU,aAAcsD,GAAAA,CAAC,CAAC2C,SAAhB,GAA0B,sCAA1B,GAAiEqtD,CAAC,CAAChkD,IAAF,CAAO,IAAP,CAA3E,CAAN,CAAA;CAA+F,YAAA,IAAG,CAAC,CAAD,KAAKxO,CAAC,CAACkP,OAAF,CAAU1M,CAAC,CAACghD,QAAZ,CAAL,IAA4B,aAAgBhhD,KAAAA,CAAC,CAAC2C,SAAjD,EAA2D,MAAM,IAAIjG,KAAJ,CAAU,YAAasD,GAAAA,CAAC,CAACghD,QAAf,GAAwB,sCAAxB,GAA+DxjD,CAAC,CAACwO,IAAF,CAAO,IAAP,CAAzE,CAAN,CAAA;CAA6F,YAAA,OAAOhM,CAAP,CAAA;CAAS,WAAA;;WAAA,SAAS9C,CAAT,CAAWE,CAAX,EAAa;CAAC,YAAA,IAAG,cAAY,OAAOA,CAAtB,EAAwB,OAAO,IAAA,IAAM,wDAAwDk0D,IAAxD,CAA6DjtD,QAAQ,CAACxH,SAAT,CAAmBF,QAAnB,CAA4BK,IAA5B,CAAiCI,CAAjC,CAA7D,CAAb,CAAA;CAA+G,WAAA;;CAAA,UAAA,SAASC,CAAT,CAAW2yD,CAAX,EAAaruC,CAAb,EAAenkB,CAAf,EAAiB;aAACA,CAAC,GAACA,CAAC,IAAE,EAAL,CAAA;;aAAQ,SAASozB,CAAT,CAAWxzB,CAAX,EAAa;eAAC,OAAOukB,CAAC,CAACyuC,MAAF,GAASzuC,CAAC,CAACyuC,MAAF,CAAShzD,CAAT,EAAW,MAAX,CAAT,GAA4BukB,CAAC,CAACwuC,KAAF,CAAQ/yD,CAAR,EAAU,MAAV,CAAnC,CAAA;CAAqD,aAAA;;aAAA,OAAM;eAACizD,QAAQ,EAAC,UAASjzD,CAAT,EAAW;iBAAC,OAAO,IAAA,CAAK,GAAK,IAAA,IAAA,MAAQA,CAAC,GAAC4yD,CAAC,CAACoB,QAAF,GAAWpB,CAAC,CAACoB,QAAF,CAAWh0D,CAAX,CAAX,GAAyBA,CAAnC,CAAsC,GAAA,MAAtC,GAA6C,OAAOA,CAAzD,CAAL,CAAkEA,CAAAA,CAAlE,CAAP,CAAA;gBAAtB;eAAmGm0D,OAAO,EAAC,UAAS5vC,CAAT,EAAW;CAAC,gBAAA,IAAI3hB,CAAJ;qBAAM5C,CAAC,GAACR,MAAM,CAACC,SAAP,CAAiBF,QAAjB,CAA0BK,IAA1B,CAA+B2kB,CAA/B,CAAR;CAAA,oBAA0CzD,CAAC,GAAC,kBAAA,CAAmBozC,IAAnB,CAAwBl0D,CAAxB,CAA5C,CAAA;CAAuE8gB,gBAAAA,CAAC,GAAC,CAACA,CAAC,GAACA,CAAC,GAACA,CAAC,CAAC,CAAD,CAAF,GAAM,WAAY9gB,GAAAA,CAAZ,GAAc,GAAxB,EAA6BwF,WAA7B,EAAF,CAAA;CAA6C,gBAAA,IAAG,MAAIxF,CAAC,GAACI,CAAC,CAACkP,OAAF,CAAUiV,CAAV,CAAN,CAAH,EAAuB,OAAO,KAAK0uC,QAAL,CAAc,eAAajzD,CAAb,GAAe,GAA7B,CAAP,CAAA;CAAyC,gBAAA,IAAGI,CAAC,CAACoG,IAAF,CAAO+d,CAAP,CAAA,EAAU,KAAK,CAAL,KAASvH,CAAT,IAAYA,CAAC,CAACo3C,QAAd,IAAwBp3C,CAAC,CAACo3C,QAAF,CAAW7vC,CAAX,CAArC,EAAmD,OAAOiP,CAAC,CAAC,SAAD,CAAD,EAAaA,CAAC,CAACjP,CAAD,CAArB,CAAA;CAAyB,gBAAA,IAAG,QAAWzD,KAAAA,CAAX,IAAc,UAAA,KAAaA,CAA3B,IAA8B,eAAA,KAAkBA,CAAnD,EAAqD,OAAO9gB,CAAC,GAACR,MAAM,CAACgmC,IAAP,CAAYjhB,CAAZ,CAAF,EAAiBquC,CAAC,CAACmB,gBAAF,KAAqB/zD,CAAC,GAACA,CAAC,CAAC8B,IAAF,EAAvB,CAAjB,EAAkD,CAAC,CAAD,KAAK8wD,CAAC,CAACc,WAAP,IAAoB5zD,CAAC,CAACykB,CAAD,CAArB,IAA0BvkB,CAAC,CAAC2jB,MAAF,CAAS,CAAT,EAAW,CAAX,EAAa,WAAb,EAAyB,WAAzB,EAAqC,aAArC,CAA5E,EAAgIivC,CAAC,CAACqB,WAAF,KAAgBj0D,CAAC,GAACA,CAAC,CAAC0I,MAAF,CAAS,UAAS1I,CAAT,EAAW;CAAC,kBAAA,OAAM,CAAC4yD,CAAC,CAACqB,WAAF,CAAcj0D,CAAd,CAAP,CAAA;kBAArB,CAAlB,CAAhI,EAAkMwzB,CAAC,CAAC,SAAUxzB,GAAAA,CAAC,CAACvB,MAAZ,GAAmB,GAApB,CAAnM,EAA4NmE,CAAC,GAAC,IAA9N,EAAmO5C,CAAC,CAACyI,OAAF,CAAU,UAASzI,CAAT,EAAW;mBAAC4C,CAAC,CAACqwD,QAAF,CAAWjzD,CAAX,CAAA,EAAcwzB,CAAC,CAAC,GAAD,CAAf,EAAqBo/B,CAAC,CAACS,aAAF,IAAiBzwD,CAAC,CAACqwD,QAAF,CAAW1uC,CAAC,CAACvkB,CAAD,CAAZ,CAAtC,EAAuDwzB,CAAC,CAAC,GAAD,CAAxD,CAAA;CAA8D,iBAApF,CAA1O,CAAA;;CAAgU,gBAAA,IAAG,CAAC,IAAA,CAAK,GAAI1S,GAAAA,CAAT,CAAJ,EAAgB;mBAAC,IAAG8xC,CAAC,CAACa,aAAL,EAAmB,OAAOjgC,CAAC,CAAC,GAAI1S,GAAAA,CAAJ,GAAM,GAAP,CAAR,CAAA;CAAoB,kBAAA,MAAM,IAAIxhB,KAAJ,CAAU,0BAAwBwhB,CAAxB,GAA0B,GAApC,CAAN,CAAA;CAA+C,iBAAA;;iBAAA,IAAK,CAAA,GAAA,GAAIA,CAAT,CAAA,CAAYyD,CAAZ,CAAA,CAAA;gBAAn1B;CAAm2B8vC,cAAAA,MAAM,EAAC,UAASr0D,CAAT,EAAWukB,CAAX,EAAa;CAACA,gBAAAA,CAAC,GAAC,KAAK,CAAL,KAASA,CAAT,GAAWA,CAAX,GAAa,CAAC,CAAD,KAAKquC,CAAC,CAACiB,eAAtB,CAAA;iBAAsC,IAAIjxD,CAAC,GAAC,IAAN,CAAA;iBAAW,IAAG4wB,CAAC,CAAC,QAAA,GAASxzB,CAAC,CAACvB,MAAX,GAAkB,GAAnB,CAAD,EAAyB,CAAC8lB,CAAD,IAAIvkB,CAAC,CAACvB,MAAF,IAAU,CAA1C,EAA4C,OAAOuB,CAAC,CAACyI,OAAF,CAAU,UAASzI,CAAT,EAAW;CAAC,kBAAA,OAAO4C,CAAC,CAACqwD,QAAF,CAAWjzD,CAAX,CAAP,CAAA;CAAqB,iBAA3C,CAAP,CAAA;iBAAoD,IAAI8gB,CAAC,GAAC,EAAN;qBAASyD,CAAC,GAACvkB,CAAC,CAACuI,GAAF,CAAM,UAASvI,CAAT,EAAW;CAAC,kBAAA,IAAIukB,CAAC,GAAC,IAAIlM,CAAJ,EAAN;CAAA,sBAAYzV,CAAC,GAACxC,CAAC,CAACa,KAAF,EAAd,CAAA;CAAwB,kBAAA,OAAOhB,CAAC,CAAC2yD,CAAD,EAAGruC,CAAH,EAAK3hB,CAAL,CAAD,CAASqwD,QAAT,CAAkBjzD,CAAlB,CAAqB8gB,EAAAA,CAAC,GAACA,CAAC,CAAC5U,MAAF,CAAStJ,CAAC,CAAC3B,KAAF,CAAQb,CAAC,CAAC3B,MAAV,CAAT,CAAvB,EAAmD8lB,CAAC,CAAC4uC,IAAF,EAAA,CAAS5zD,QAAT,EAA1D,CAAA;CAA8E,iBAAxH,CAAX,CAAA;iBAAqI,OAAOa,CAAC,GAACA,CAAC,CAAC8L,MAAF,CAAS4U,CAAT,CAAF,EAAcyD,CAAC,CAACziB,IAAF,EAAd,EAAuB,IAAKuyD,CAAAA,MAAL,CAAY9vC,CAAZ,EAAc,CAAC,CAAf,CAA9B,CAAA;gBAA9oC;eAA+rC+vC,KAAK,EAAC,UAASt0D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,OAAA,GAAQxzB,CAAC,CAAC8Y,MAAF,EAAT,CAAR,CAAA;gBAAjtC;eAA+uCy7C,OAAO,EAAC,UAASv0D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,SAAA,GAAUxzB,CAAC,CAACT,QAAF,EAAX,CAAR,CAAA;gBAAnwC;eAAqyCi1D,MAAM,EAAC,UAASx0D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,QAAA,GAASxzB,CAAC,CAACT,QAAF,EAAV,CAAR,CAAA;gBAAxzC;eAAy1Ck1D,QAAQ,EAAC,UAASz0D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,OAAA,GAAQxzB,CAAC,CAACT,QAAF,EAAT,CAAR,CAAA;gBAA92C;eAA84Cm1D,OAAO,EAAC,UAAS10D,CAAT,EAAW;CAACwzB,gBAAAA,CAAC,CAAC,SAAA,GAAUxzB,CAAC,CAACvB,MAAZ,GAAmB,GAApB,CAAD,EAA0B+0B,CAAC,CAACxzB,CAAC,CAACT,QAAF,EAAD,CAA3B,CAAA;gBAAl6C;eAA68Co1D,SAAS,EAAC,UAAS30D,CAAT,EAAW;iBAACwzB,CAAC,CAAC,KAAD,CAAD,EAAS1zB,CAAC,CAACE,CAAD,CAAD,GAAK,IAAKizD,CAAAA,QAAL,CAAc,UAAd,CAAL,GAA+B,IAAA,CAAKA,QAAL,CAAcjzD,CAAC,CAACT,QAAF,EAAd,CAAxC,EAAoE,CAAC,CAAD,KAAKqzD,CAAC,CAACe,oBAAP,IAA6B,IAAA,CAAKV,QAAL,CAAc,gBAAA,GAAiBlkD,MAAM,CAAC/O,CAAC,CAACmO,IAAH,CAArC,CAAjG,EAAgJykD,CAAC,CAACgB,yBAAF,IAA6B,IAAKO,CAAAA,OAAL,CAAan0D,CAAb,CAA7K,CAAA;gBAAn+C;eAAiqD40D,OAAO,EAAC,UAAS50D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,SAAA,GAAUxzB,CAAC,CAACT,QAAF,EAAX,CAAR,CAAA;gBAArrD;eAAutDs1D,IAAI,EAAC,UAAS70D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,MAAA,GAAOxzB,CAAC,CAACT,QAAF,EAAR,CAAR,CAAA;gBAAxuD;CAAuwDu1D,cAAAA,KAAK,EAAC,YAAU;iBAAC,OAAOthC,CAAC,CAAC,MAAD,CAAR,CAAA;gBAAxxD;CAA0yDuhC,cAAAA,UAAU,EAAC,YAAU;iBAAC,OAAOvhC,CAAC,CAAC,WAAD,CAAR,CAAA;gBAAh0D;eAAu1DwhC,OAAO,EAAC,UAASh1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,QAAA,GAASxzB,CAAC,CAACT,QAAF,EAAV,CAAR,CAAA;gBAA32D;eAA44D01D,WAAW,EAAC,UAASj1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,aAAD,CAAD,EAAiB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAxB,CAAA;gBAAp6D;eAA0+Dk1D,kBAAkB,EAAC,UAASl1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,oBAAD,CAAD,EAAwB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAA/B,CAAA;gBAAzgE;eAAslEm1D,UAAU,EAAC,UAASn1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,YAAD,CAAD,EAAgB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAvB,CAAA;gBAA7mE;eAAkrEo1D,YAAY,EAAC,UAASp1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,cAAD,CAAD,EAAkB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAzB,CAAA;gBAA3sE;eAAkxEq1D,WAAW,EAAC,UAASr1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,aAAD,CAAD,EAAiB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAxB,CAAA;gBAA1yE;eAAg3Es1D,YAAY,EAAC,UAASt1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,cAAD,CAAD,EAAkB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAzB,CAAA;gBAAz4E;eAAg9Eu1D,WAAW,EAAC,UAASv1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,aAAD,CAAD,EAAiB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAAxB,CAAA;gBAAx+E;eAA8iFw1D,aAAa,EAAC,UAASx1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,eAAD,CAAD,EAAmB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAA1B,CAAA;gBAAxkF;eAAgpFy1D,aAAa,EAAC,UAASz1D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,eAAD,CAAD,EAAmB,IAAA,CAAKy/B,QAAL,CAAcprD,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2BI,CAA3B,CAAd,CAA1B,CAAA;gBAA1qF;eAAkvF01D,YAAY,EAAC,UAAS11D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,cAAD,CAAD,EAAkB,IAAA,CAAKy/B,QAAL,CAAc,IAAI/O,UAAJ,CAAelkD,CAAf,CAAd,CAAzB,CAAA;gBAA3wF;eAAs0F21D,IAAI,EAAC,UAAS31D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,MAAA,GAAOxzB,CAAC,CAACT,QAAF,EAAR,CAAR,CAAA;gBAAv1F;eAAs3Fq2D,IAAI,EAAC,UAAS51D,CAAT,EAAW;iBAACwzB,CAAC,CAAC,MAAD,CAAD,CAAA;CAAUxzB,gBAAAA,CAAC,GAAC6H,KAAK,CAACtJ,IAAN,CAAWyB,CAAX,CAAF,CAAA;iBAAgB,OAAO,IAAA,CAAKq0D,MAAL,CAAYr0D,CAAZ,EAAc,CAAC,CAAD,KAAK4yD,CAAC,CAACkB,aAArB,CAAP,CAAA;gBAAj6F;eAA68F+B,IAAI,EAAC,UAAS71D,CAAT,EAAW;iBAACwzB,CAAC,CAAC,MAAD,CAAD,CAAA;CAAUxzB,gBAAAA,CAAC,GAAC6H,KAAK,CAACtJ,IAAN,CAAWyB,CAAX,CAAF,CAAA;iBAAgB,OAAO,IAAA,CAAKq0D,MAAL,CAAYr0D,CAAZ,EAAc,CAAC,CAAD,KAAK4yD,CAAC,CAACkB,aAArB,CAAP,CAAA;gBAAx/F;eAAoiGgC,KAAK,EAAC,UAAS91D,CAAT,EAAW;iBAAC,OAAOwzB,CAAC,CAAC,OAAD,CAAD,EAAW,KAAKy/B,QAAL,CAAc,CAACjzD,CAAC,CAACmO,IAAH,EAAQnO,CAAC,CAAC0W,IAAV,EAAe1W,CAAC,CAACwc,IAAjB,EAAsBxc,CAAC,CAAC+1D,WAAxB,CAAd,CAAlB,CAAA;gBAAtjG;CAA6nGC,cAAAA,KAAK,EAAC,YAAU;iBAAC,IAAGpD,CAAC,CAACa,aAAL,EAAmB,OAAOjgC,CAAC,CAAC,QAAD,CAAR,CAAA;iBAAmB,MAAMl0B,KAAK,CAAC,6JAAD,CAAX,CAAA;gBAAprG;CAAg2G22D,cAAAA,UAAU,EAAC,YAAU;iBAAC,OAAOziC,CAAC,CAAC,WAAD,CAAR,CAAA;gBAAt3G;eAA64G0iC,OAAO,EAAC,UAASl2D,CAAT,EAAW;CAAC,gBAAA,OAAOwzB,CAAC,CAAC,SAAA,GAAUxzB,CAAC,CAACT,QAAF,EAAX,CAAR,CAAA;gBAAj6G;CAAm8G42D,cAAAA,QAAQ,EAAC,YAAU;iBAAC,OAAO3iC,CAAC,CAAC,SAAD,CAAR,CAAA;gBAAv9G;CAA4+G4iC,cAAAA,MAAM,EAAC,YAAU;iBAAC,OAAO5iC,CAAC,CAAC,OAAD,CAAR,CAAA;gBAA9/G;CAAihH6iC,cAAAA,KAAK,EAAC,YAAU;iBAAC,OAAO7iC,CAAC,CAAC,MAAD,CAAR,CAAA;gBAAliH;CAAojH8iC,cAAAA,IAAI,EAAC,YAAU;iBAAC,OAAO9iC,CAAC,CAAC,KAAD,CAAR,CAAA;gBAApkH;CAAqlH+iC,cAAAA,IAAI,EAAC,YAAU;iBAAC,OAAO/iC,CAAC,CAAC,KAAD,CAAR,CAAA;gBAArmH;CAAsnHgjC,cAAAA,IAAI,EAAC,YAAU;iBAAC,OAAOhjC,CAAC,CAAC,KAAD,CAAR,CAAA;gBAAtoH;CAAupHijC,cAAAA,YAAY,EAAC,YAAU;iBAAC,OAAOjjC,CAAC,CAAC,aAAD,CAAR,CAAA;gBAA/qH;CAAwsHkjC,cAAAA,cAAc,EAAC,YAAU;iBAAC,OAAOljC,CAAC,CAAC,eAAD,CAAR,CAAA;gBAAluH;CAA6vHmjC,cAAAA,WAAW,EAAC,YAAU;iBAAC,OAAOnjC,CAAC,CAAC,YAAD,CAAR,CAAA;gBAApxH;CAA4yHojC,cAAAA,KAAK,EAAC,YAAU;iBAAC,OAAOpjC,CAAC,CAAC,MAAD,CAAR,CAAA;gBAA7zH;CAA+0HqjC,cAAAA,QAAQ,EAAC,YAAU;iBAAC,OAAOrjC,CAAC,CAAC,SAAD,CAAR,CAAA;gBAAn2H;CAAw3HsjC,cAAAA,WAAW,EAAC,YAAU;iBAAC,OAAOtjC,CAAC,CAAC,YAAD,CAAR,CAAA;gBAA/4H;CAAu6HujC,cAAAA,WAAW,EAAC,YAAU;iBAAC,OAAOvjC,CAAC,CAAC,YAAD,CAAR,CAAA;gBAA97H;CAAs9HwjC,cAAAA,SAAS,EAAC,YAAU;iBAAC,OAAOxjC,CAAC,CAAC,UAAD,CAAR,CAAA;gBAA3+H;CAAigIyjC,cAAAA,OAAO,EAAC,YAAU;iBAAC,OAAOzjC,CAAC,CAAC,QAAD,CAAR,CAAA;gBAAphI;CAAwiI0jC,cAAAA,QAAQ,EAAC,YAAU;iBAAC,OAAO1jC,CAAC,CAAC,SAAD,CAAR,CAAA;gBAA5jI;CAAilI2jC,cAAAA,QAAQ,EAAC,YAAU;iBAAC,OAAO3jC,CAAC,CAAC,SAAD,CAAR,CAAA;CAAoB,eAAA;cAA/nI,CAAA;CAAioI,WAAA;;CAAA,UAAA,SAASnb,CAAT,GAAY;aAAC,OAAM;CAACkrC,cAAAA,GAAG,EAAC,EAAL;eAAQwP,KAAK,EAAC,UAAS/yD,CAAT,EAAW;iBAAC,IAAKujD,CAAAA,GAAL,IAAUvjD,CAAV,CAAA;gBAA1B;eAAuCuzC,GAAG,EAAC,UAASvzC,CAAT,EAAW;iBAAC,IAAKujD,CAAAA,GAAL,IAAUvjD,CAAV,CAAA;gBAAvD;CAAoEmzD,cAAAA,IAAI,EAAC,YAAU;CAAC,gBAAA,OAAO,KAAK5P,GAAZ,CAAA;CAAgB,eAAA;cAA1G,CAAA;CAA4G,WAAA;;WAAAxpC,CAAC,CAACq9C,aAAF,GAAgB,UAASp3D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAAC,YAAA,OAAO,KAAK,CAAL,KAASA,CAAT,KAAaA,CAAC,GAAC2hB,CAAF,EAAIA,CAAC,GAAC,EAAnB,GAAuBtkB,CAAC,CAACskB,CAAC,GAACiP,CAAC,CAACxzB,CAAD,EAAGukB,CAAH,CAAJ,EAAU3hB,CAAV,CAAD,CAAcqwD,QAAd,CAAuBjzD,CAAvB,CAA9B,CAAA;YAAhC,CAAA;UAA1tM,CAAozMJ,IAApzM,CAAyzM,IAAzzM,EAA8zM6vC,CAAC,CAAC,QAAD,CAA/zM,EAA00M,WAAa,IAAA,OAAO4nB,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAA14M,EAA64M8uC,CAAC,CAAC,QAAD,CAAD,CAAY6nB,MAAz5M,EAAg6MpqD,SAAS,CAAC,CAAD,CAAz6M,EAA66MA,SAAS,CAAC,CAAD,CAAt7M,EAA07MA,SAAS,CAAC,CAAD,CAAn8M,EAAu8MA,SAAS,CAAC,CAAD,CAAh9M,EAAo9M,mBAAp9M,EAAw+M,GAAx+M,CAAD,CAAA;CAA8+M,OAA//M,EAAggN;CAACi3C,QAAAA,MAAM,EAAC,CAAR;CAAUoT,QAAAA,MAAM,EAAC,CAAjB;CAAmBC,QAAAA,MAAM,EAAC,EAAA;CAA1B,OAAhgN,CAAH;CAAkiN,MAAA,CAAA,EAAE,CAAC,UAASx3D,CAAT,EAAWukB,CAAX,EAAatkB,CAAb,EAAe;CAAC,QAAA,CAAC,UAASD,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB8xC,CAAjB,EAAmBxyD,CAAnB,EAAqBozB,CAArB,EAAuBxW,CAAvB,EAAyBld,CAAzB,EAA2B;WAAC,CAAC,UAASE,CAAT,EAAW;;aAAc,IAAIF,CAAC,GAAC,WAAa,IAAA,OAAOokD,UAApB,GAA+BA,UAA/B,GAA0Cr8C,KAAhD;CAAA,gBAAsD0c,CAAC,GAAC,GAAA,CAAI4hC,UAAJ,CAAe,CAAf,CAAxD;CAAA,gBAA0EvjD,CAAC,GAAC,GAAA,CAAIujD,UAAJ,CAAe,CAAf,CAA5E;CAAA,gBAA8FrlC,CAAC,GAAC,GAAA,CAAIqlC,UAAJ,CAAe,CAAf,CAAhG;CAAA,gBAAkHyM,CAAC,GAAC,GAAA,CAAIzM,UAAJ,CAAe,CAAf,CAApH;CAAA,gBAAsI/lD,CAAC,GAAC,GAAA,CAAI+lD,UAAJ,CAAe,CAAf,CAAxI;CAAA,gBAA0J3yB,CAAC,GAAC,GAAA,CAAI2yB,UAAJ,CAAe,CAAf,CAA5J;CAAA,gBAA8KnpC,CAAC,GAAC,GAAA,CAAImpC,UAAJ,CAAe,CAAf,CAAhL,CAAA;;aAAkM,SAASlmD,CAAT,CAAWD,CAAX,EAAa;CAACA,cAAAA,CAAC,GAACA,CAAC,CAACmmD,UAAF,CAAa,CAAb,CAAF,CAAA;CAAkB,cAAA,OAAOnmD,CAAC,KAAGukB,CAAJ,IAAOvkB,CAAC,KAAGwzB,CAAX,GAAa,EAAb,GAAgBxzB,CAAC,KAAG4C,CAAJ,IAAO5C,CAAC,KAAGgd,CAAX,GAAa,EAAb,GAAgBhd,CAAC,GAAC8gB,CAAF,GAAI,CAAC,CAAL,GAAO9gB,CAAC,GAAC8gB,CAAC,GAAC,EAAJ,GAAO9gB,CAAC,GAAC8gB,CAAF,GAAI,EAAJ,GAAO,EAAd,GAAiB9gB,CAAC,GAACI,CAAC,GAAC,EAAJ,GAAOJ,CAAC,GAACI,CAAT,GAAWJ,CAAC,GAAC4yD,CAAC,GAAC,EAAJ,GAAO5yD,CAAC,GAAC4yD,CAAF,GAAI,EAAX,GAAc,KAAK,CAA7F,CAAA;CAA+F,aAAA;;CAAA5yD,YAAAA,CAAC,CAACy3D,WAAF,GAAc,UAASz3D,CAAT,EAAW;eAAC,IAAIukB,CAAJ,EAAM3hB,CAAN,CAAA;CAAQ,cAAA,IAAG,CAAE5C,GAAAA,CAAC,CAACvB,MAAF,GAAS,CAAd,EAAgB,MAAM,IAAIa,KAAJ,CAAU,gDAAV,CAAN,CAAA;CAAkE,cAAA,IAAIwhB,CAAC,GAAC9gB,CAAC,CAACvB,MAAR;mBAAeqiB,CAAC,GAAC,GAAA,KAAM9gB,CAAC,CAAC4sC,MAAF,CAAS9rB,CAAC,GAAC,CAAX,CAAN,GAAoB,CAApB,GAAsB,GAAM9gB,KAAAA,CAAC,CAAC4sC,MAAF,CAAS9rB,CAAC,GAAC,CAAX,CAAN,GAAoB,CAApB,GAAsB,CAA7D;CAAA,kBAA+D8xC,CAAC,GAAC,IAAI9yD,CAAJ,CAAM,CAAA,GAAEE,CAAC,CAACvB,MAAJ,GAAW,CAAX,GAAaqiB,CAAnB,CAAjE;CAAA,kBAAuF1gB,CAAC,GAAC,CAAE0gB,GAAAA,CAAF,GAAI9gB,CAAC,CAACvB,MAAF,GAAS,CAAb,GAAeuB,CAAC,CAACvB,MAA1G;mBAAiH+0B,CAAC,GAAC,CAAnH,CAAA;;eAAqH,SAASxW,CAAT,CAAWhd,CAAX,EAAa;CAAC4yD,gBAAAA,CAAC,CAACp/B,CAAC,EAAF,CAAD,GAAOxzB,CAAP,CAAA;CAAS,eAAA;;CAAA,cAAA,KAAIukB,CAAC,GAAC,CAAN,EAAQA,CAAC,GAACnkB,CAAV,EAAYmkB,CAAC,IAAE,CAAH,EAAK,CAAjB,EAAmBvH,CAAC,CAAC,CAAC,QAAA,IAAUpa,CAAC,GAAC3C,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAT,CAAD,CAAD,IAAgB,EAAhB,GAAmBtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAD,IAAkB,EAArC,GAAwCtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAD,IAAkB,CAA1D,GAA4DtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAzE,CAAD,KAA6F,EAA9F,CAAD,EAAmGvH,CAAC,CAAC,CAAC,QAAMpa,CAAP,KAAW,CAAZ,CAApG,EAAmHoa,CAAC,CAAC,GAAA,GAAIpa,CAAL,CAApH,CAAA;;eAA4H,OAAO,CAAA,IAAGke,CAAH,GAAK9D,CAAC,CAAC,GAAKpa,IAAAA,CAAC,GAAC3C,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAT,CAAD,CAAD,IAAgB,CAAhB,GAAkBtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAD,IAAkB,CAA3C,CAAD,CAAN,GAAsD,CAAGzD,IAAAA,CAAH,KAAO9D,CAAC,CAAC,CAACpa,CAAC,GAAC3C,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAT,CAAD,CAAD,IAAgB,EAAhB,GAAmBtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAD,IAAkB,CAArC,GAAuCtkB,CAAC,CAACD,CAAC,CAAC4sC,MAAF,CAASroB,CAAC,GAAC,CAAX,CAAD,CAAD,IAAkB,CAA5D,KAAgE,CAAhE,GAAkE,GAAnE,CAAD,EAAyEvH,CAAC,CAAC,MAAIpa,CAAL,CAAjF,CAAtD,EAAgJgwD,CAAvJ,CAAA;CAAyJ,aAAxiB,EAAyiB5yD,CAAC,CAAC03D,aAAF,GAAgB,UAAS13D,CAAT,EAAW;CAAC,cAAA,IAAIukB,CAAJ;CAAA,kBAAM3hB,CAAN;CAAA,kBAAQke,CAAR;CAAA,kBAAU8xC,CAAV;CAAA,kBAAYxyD,CAAC,GAACJ,CAAC,CAACvB,MAAF,GAAS,CAAvB;mBAAyB+0B,CAAC,GAAC,EAA3B,CAAA;;eAA8B,SAASxW,CAAT,CAAWhd,CAAX,EAAa;CAAC,gBAAA,OAAM,kEAAmE4sC,CAAAA,MAAnE,CAA0E5sC,CAA1E,CAAN,CAAA;CAAmF,eAAA;;CAAA,cAAA,KAAIukB,CAAC,GAAC,CAAF,EAAIzD,CAAC,GAAC9gB,CAAC,CAACvB,MAAF,GAAS2B,CAAnB,EAAqBmkB,CAAC,GAACzD,CAAvB,EAAyByD,CAAC,IAAE,CAA5B,EAA8B3hB,CAAC,GAAC,CAAC5C,CAAC,CAACukB,CAAD,CAAD,IAAM,EAAP,KAAYvkB,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,CAApB,IAAuBvkB,CAAC,CAACukB,CAAC,GAAC,CAAH,CAA1B,EAAgCiP,CAAC,IAAExW,CAAC,CAAC,CAAC41C,CAAC,GAAChwD,CAAH,KAAO,EAAP,GAAU,EAAX,CAAD,GAAgBoa,CAAC,CAAC41C,CAAC,IAAE,EAAH,GAAM,EAAP,CAAjB,GAA4B51C,CAAC,CAAC41C,CAAC,IAAE,CAAH,GAAK,EAAN,CAA7B,GAAuC51C,CAAC,CAAC,EAAA,GAAG41C,CAAJ,CAA3E,CAAA;;CAAkF,cAAA,QAAOxyD,CAAP;CAAU,gBAAA,KAAK,CAAL;CAAOozB,kBAAAA,CAAC,GAAC,CAACA,CAAC,IAAExW,CAAC,CAAC,CAACpa,CAAC,GAAC5C,CAAC,CAACA,CAAC,CAACvB,MAAF,GAAS,CAAV,CAAJ,KAAmB,CAApB,CAAL,IAA6Bue,CAAC,CAACpa,CAAC,IAAE,CAAH,GAAK,EAAN,CAA9B,GAAwC,IAA1C,CAAA;CAA+C,kBAAA,MAAA;;CAAM,gBAAA,KAAK,CAAL;mBAAO4wB,CAAC,GAAC,CAACA,CAAC,GAAC,CAACA,CAAC,IAAExW,CAAC,CAAC,CAACpa,CAAC,GAAC,CAAC5C,CAAC,CAACA,CAAC,CAACvB,MAAF,GAAS,CAAV,CAAD,IAAe,CAAhB,IAAmBuB,CAAC,CAACA,CAAC,CAACvB,MAAF,GAAS,CAAV,CAAvB,KAAsC,EAAvC,CAAL,IAAiDue,CAAC,CAACpa,CAAC,IAAE,CAAH,GAAK,EAAN,CAArD,IAAgEoa,CAAC,CAACpa,CAAC,IAAE,CAAH,GAAK,EAAN,CAAjE,GAA2E,GAA7E,CAAA;CAA7E,eAAA;;CAA8J,cAAA,OAAO4wB,CAAP,CAAA;cAAl9B,CAAA;CAA49B,WAAtzC,CAAuzC,KAAK,CAAL,KAASvzB,CAAT,GAAW,IAAK03D,CAAAA,QAAL,GAAc,EAAzB,GAA4B13D,CAAn1C,CAAD,CAAA;UAA5B,CAAo3CL,IAAp3C,CAAy3C,IAAz3C,EAA83CI,CAAC,CAAC,QAAD,CAA/3C,EAA04C,WAAa,IAAA,OAAOq3D,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAA18C,EAA68CX,CAAC,CAAC,QAAD,CAAD,CAAYs3D,MAAz9C,EAAg+CpqD,SAAS,CAAC,CAAD,CAAz+C,EAA6+CA,SAAS,CAAC,CAAD,CAAt/C,EAA0/CA,SAAS,CAAC,CAAD,CAAngD,EAAugDA,SAAS,CAAC,CAAD,CAAhhD,EAAohD,iEAAphD,EAAslD,0DAAtlD,CAAD,CAAA;CAAmpD,OAApqD,EAAqqD;CAACi3C,QAAAA,MAAM,EAAC,CAAR;CAAUqT,QAAAA,MAAM,EAAC,EAAA;CAAjB,OAArqD,CAApiN;CAA+tQ,MAAA,CAAA,EAAE,CAAC,UAASI,CAAT,EAAW53D,CAAX,EAAa63D,CAAb,EAAe;CAAC,QAAA,CAAC,UAAS73D,CAAT,EAAW4C,CAAX,EAAa3C,CAAb,EAAe6gB,CAAf,EAAiB3gB,CAAjB,EAAmB8Z,CAAnB,EAAqB/Z,CAArB,EAAuBuH,CAAvB,EAAyBgoC,CAAzB,EAA2B;CAAC,UAAA,IAAI3vC,CAAC,GAAC83D,CAAC,CAAC,WAAD,CAAP;CAAA,cAAqBx3D,CAAC,GAACw3D,CAAC,CAAC,SAAD,CAAxB,CAAA;;CAAoC,UAAA,SAAS33D,CAAT,CAAWD,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiB;CAAC,YAAA,IAAG,EAAE,IAAA,YAAgB3C,CAAlB,CAAH,EAAwB,OAAO,IAAIA,CAAJ,CAAMD,CAAN,EAAQukB,CAAR,EAAU3hB,CAAV,CAAP,CAAA;CAAoB,YAAA,IAAIke,CAAJ;CAAA,gBAAM8xC,CAAN;CAAA,gBAAQxyD,CAAR;CAAA,gBAAUozB,CAAV;iBAAYxW,CAAC,GAAC,OAAOhd,CAArB,CAAA;CAAuB,YAAA,IAAG,aAAWukB,CAAX,IAAc,YAAUvH,CAA3B,EAA6B,KAAIhd,CAAC,GAAC,CAACwzB,CAAC,GAACxzB,CAAH,EAAMuwB,IAAN,GAAWiD,CAAC,CAACjD,IAAF,EAAX,GAAoBiD,CAAC,CAACtsB,OAAF,CAAU,YAAV,EAAuB,EAAvB,CAA1B,EAAqDlH,CAAC,CAACvB,MAAF,GAAS,CAAT,IAAY,CAAjE,GAAoEuB,CAAC,IAAE,GAAH,CAAA;aAAO,IAAG,QAAA,IAAUgd,CAAb,EAAe8D,CAAC,GAACzgB,CAAC,CAACL,CAAD,CAAH,CAAf,KAA2B,IAAG,QAAA,IAAUgd,CAAb,EAAe8D,CAAC,GAAC7gB,CAAC,CAACokD,UAAF,CAAarkD,CAAb,EAAeukB,CAAf,CAAF,CAAf,KAAuC;eAAC,IAAG,QAAA,IAAUvH,CAAb,EAAe,MAAM,IAAI1d,KAAJ,CAAU,uDAAV,CAAN,CAAA;CAAyEwhB,cAAAA,CAAC,GAACzgB,CAAC,CAACL,CAAC,CAACvB,MAAH,CAAH,CAAA;CAAc,aAAA;CAAA,YAAA,IAAGwB,CAAC,CAAC63D,eAAF,GAAkBlF,CAAC,GAAC3yD,CAAC,CAAC83D,QAAF,CAAW,IAAI7T,UAAJ,CAAepjC,CAAf,CAAX,CAApB,IAAmD,CAAC8xC,CAAC,GAAC,IAAH,EAASn0D,MAAT,GAAgBqiB,CAAhB,EAAkB8xC,CAAC,CAACoF,SAAF,GAAY,CAAC,CAAlF,CAAA,EAAqF/3D,CAAC,CAAC63D,eAAF,IAAmB,QAAU,IAAA,OAAO93D,CAAC,CAACqkD,UAA9H,EAAyIuO,CAAC,CAACiD,IAAF,CAAO71D,CAAP,CAAA,CAAzI,KAAwJ,IAAGi4D,CAAC,CAACzkC,CAAC,GAACxzB,CAAH,CAAD,IAAQC,CAAC,CAACm0D,QAAF,CAAW5gC,CAAX,CAAR,IAAuBA,CAAC,IAAE,YAAU,OAAOA,CAApB,IAAuB,QAAA,IAAU,OAAOA,CAAC,CAAC/0B,MAApE,EAA2E,KAAI2B,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC0gB,CAAV,EAAY1gB,CAAC,EAAb,EAAgBH,CAAC,CAACm0D,QAAF,CAAWp0D,CAAX,CAAc4yD,GAAAA,CAAC,CAACxyD,CAAD,CAAD,GAAKJ,CAAC,CAACk4D,SAAF,CAAY93D,CAAZ,CAAnB,GAAkCwyD,CAAC,CAACxyD,CAAD,CAAD,GAAKJ,CAAC,CAACI,CAAD,CAAxC,CAA3F,KAA4I,IAAG,YAAU4c,CAAb,EAAe41C,CAAC,CAACG,KAAF,CAAQ/yD,CAAR,EAAU,CAAV,EAAYukB,CAAZ,CAAA,CAAf,KAAmC,IAAG,YAAUvH,CAAV,IAAa,CAAC/c,CAAC,CAAC63D,eAAhB,IAAiC,CAACl1D,CAArC,EAAuC,KAAIxC,CAAC,GAAC,CAAN,EAAQA,CAAC,GAAC0gB,CAAV,EAAY1gB,CAAC,EAAb,EAAgBwyD,CAAC,CAACxyD,CAAD,CAAD,GAAK,CAAL,CAAA;CAAO,YAAA,OAAOwyD,CAAP,CAAA;CAAS,WAAA;;WAAA,SAASryD,CAAT,CAAWP,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;aAAC,OAAO7gB,CAAC,CAACk4D,aAAF,GAAgB73D,CAAC,CAAC,UAASN,CAAT,EAAW;CAAC,cAAA,KAAI,IAAIukB,CAAC,GAAC,EAAN,EAAS3hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC5C,CAAC,CAACvB,MAArB,EAA4BmE,CAAC,EAA7B,EAAgC2hB,CAAC,CAAC/d,IAAF,CAAO,GAAIxG,GAAAA,CAAC,CAACmmD,UAAF,CAAavjD,CAAb,CAAX,CAAA,CAAA;;CAA4B,cAAA,OAAO2hB,CAAP,CAAA;cAAxE,CAAkFA,CAAlF,CAAD,EAAsFvkB,CAAtF,EAAwF4C,CAAxF,EAA0Fke,CAA1F,CAAxB,CAAA;CAAqH,WAAA;;WAAA,SAAS/G,CAAT,CAAW/Z,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;aAAC,OAAO7gB,CAAC,CAACk4D,aAAF,GAAgB73D,CAAC,CAAC,UAASN,CAAT,EAAW;eAAC,KAAI,IAAIukB,CAAJ,EAAM3hB,CAAN,EAAQke,CAAC,GAAC,EAAV,EAAa8xC,CAAC,GAAC,CAAnB,EAAqBA,CAAC,GAAC5yD,CAAC,CAACvB,MAAzB,EAAgCm0D,CAAC,EAAjC,EAAoChwD,CAAC,GAAC5C,CAAC,CAACmmD,UAAF,CAAayM,CAAb,CAAF,EAAkBruC,CAAC,GAAC3hB,CAAC,IAAE,CAAvB,EAAyBA,CAAC,GAACA,CAAC,GAAC,GAA7B,EAAiCke,CAAC,CAACta,IAAF,CAAO5D,CAAP,CAAjC,EAA2Cke,CAAC,CAACta,IAAF,CAAO+d,CAAP,CAA3C,CAAA;;CAAqD,cAAA,OAAOzD,CAAP,CAAA;cAArG,CAA+GyD,CAA/G,CAAD,EAAmHvkB,CAAnH,EAAqH4C,CAArH,EAAuHke,CAAvH,CAAxB,CAAA;CAAkJ,WAAA;;CAAA,UAAA,SAAS/K,CAAT,CAAW/V,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiB;aAAC,IAAIke,CAAC,GAAC,EAAN,CAAA;aAASle,CAAC,GAACxD,IAAI,CAAC8C,GAAL,CAASlC,CAAC,CAACvB,MAAX,EAAkBmE,CAAlB,CAAF,CAAA;;aAAuB,KAAI,IAAIgwD,CAAC,GAACruC,CAAV,EAAYquC,CAAC,GAAChwD,CAAd,EAAgBgwD,CAAC,EAAjB,EAAoB9xC,CAAC,IAAE/R,MAAM,CAACqpD,YAAP,CAAoBp4D,CAAC,CAAC4yD,CAAD,CAArB,CAAH,CAAA;;CAA6B,YAAA,OAAO9xC,CAAP,CAAA;CAAS,WAAA;;WAAA,SAAS8xC,CAAT,CAAW5yD,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAACA,YAAAA,CAAC,KAAG/gB,CAAC,CAAC,SAAA,IAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAAC,QAAMwkB,CAAP,EAAS,gBAAT,CAApD,EAA+ExkB,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAnF,CAAD,CAAA;CAA0I,YAAA,IAAIm0D,CAAJ;CAAA,gBAAM9xC,CAAC,GAAC9gB,CAAC,CAACvB,MAAV,CAAA;CAAiB,YAAA,IAAG,EAAEqiB,CAAC,IAAEyD,CAAL,CAAH,EAAW,OAAO3hB,CAAC,IAAEgwD,CAAC,GAAC5yD,CAAC,CAACukB,CAAD,CAAH,EAAOA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,CAAnB,CAAT,KAAiCquC,CAAC,GAAC5yD,CAAC,CAACukB,CAAD,CAAD,IAAM,CAAR,EAAUA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAZ,CAA3C,CAAD,EAAgEquC,CAAvE,CAAA;CAAyE,WAAA;;WAAA,SAASp/B,CAAT,CAAWxzB,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAACA,YAAAA,CAAC,KAAG/gB,CAAC,CAAC,SAAA,IAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAAC,QAAMwkB,CAAP,EAAS,gBAAT,CAApD,EAA+ExkB,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAnF,CAAD,CAAA;CAA0I,YAAA,IAAIm0D,CAAJ;CAAA,gBAAM9xC,CAAC,GAAC9gB,CAAC,CAACvB,MAAV,CAAA;CAAiB,YAAA,IAAG,EAAEqiB,CAAC,IAAEyD,CAAL,CAAH,EAAW,OAAO3hB,CAAC,IAAE2hB,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,GAAC5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,EAAlB,CAAsBA,EAAAA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,CAAnB,CAAtB,EAA4CquC,CAAC,IAAE5yD,CAAC,CAACukB,CAAD,CAAhD,EAAoDA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,EAAR,KAAa,CAAxB,CAAtD,KAAmFA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,GAAC5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,EAAlB,CAAA,EAAsBA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAD,IAAQ,CAAnB,CAAtB,EAA4CA,CAAC,GAAC,CAAF,GAAIzD,CAAJ,KAAQ8xC,CAAC,IAAE5yD,CAAC,CAACukB,CAAC,GAAC,CAAH,CAAZ,CAA5C,EAA+DquC,CAAC,IAAE5yD,CAAC,CAACukB,CAAD,CAAD,IAAM,EAAN,KAAW,CAAhK,CAAD,EAAoKquC,CAA3K,CAAA;CAA6K,WAAA;;WAAA,SAASyF,CAAT,CAAWr4D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAAC,YAAA,IAAGA,CAAC,KAAG/gB,CAAC,CAAC,aAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAAC,QAAMwkB,CAAP,EAAS,gBAAT,CAApD,EAA+ExkB,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAnF,CAAD,EAA0I,EAAEuB,CAAC,CAACvB,MAAF,IAAU8lB,CAAZ,CAA7I,EAA4J,OAAOzD,CAAC,GAAC8xC,CAAC,CAAC5yD,CAAD,EAAGukB,CAAH,EAAK3hB,CAAL,EAAO,CAAC,CAAR,CAAH,EAAc,KAAMke,GAAAA,CAAN,GAAQ,CAAC,CAAD,IAAI,KAAA,GAAMA,CAAN,GAAQ,CAAZ,CAAR,GAAuBA,CAA5C,CAAA;CAA8C,WAAA;;WAAA,SAASw3C,CAAT,CAAWt4D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAAC,YAAA,IAAGA,CAAC,KAAG/gB,CAAC,CAAC,aAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAAC,QAAMwkB,CAAP,EAAS,gBAAT,CAApD,EAA+ExkB,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAnF,CAAD,EAA0I,EAAEuB,CAAC,CAACvB,MAAF,IAAU8lB,CAAZ,CAA7I,EAA4J,OAAOzD,CAAC,GAAC0S,CAAC,CAACxzB,CAAD,EAAGukB,CAAH,EAAK3hB,CAAL,EAAO,CAAC,CAAR,CAAH,EAAc,UAAWke,GAAAA,CAAX,GAAa,CAAC,CAAD,IAAI,UAAA,GAAWA,CAAX,GAAa,CAAjB,CAAb,GAAiCA,CAAtD,CAAA;CAAwD,WAAA;;WAAA,SAASuzB,CAAT,CAAWr0C,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAAC,YAAA,OAAOA,CAAC,KAAG/gB,CAAC,CAAC,SAAA,IAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAvD,CAAD,EAA8G2B,CAAC,CAAC+yD,IAAF,CAAOnzD,CAAP,EAASukB,CAAT,EAAW3hB,CAAX,EAAa,EAAb,EAAgB,CAAhB,CAArH,CAAA;CAAwI,WAAA;;WAAA,SAASF,CAAT,CAAW1C,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAAC,YAAA,OAAOA,CAAC,KAAG/gB,CAAC,CAAC,SAAA,IAAW,OAAO6C,CAAnB,EAAqB,2BAArB,CAAD,EAAmD7C,CAAC,CAACwkB,CAAC,GAAC,CAAF,GAAIvkB,CAAC,CAACvB,MAAP,EAAc,qCAAd,CAAvD,CAAD,EAA8G2B,CAAC,CAAC+yD,IAAF,CAAOnzD,CAAP,EAASukB,CAAT,EAAW3hB,CAAX,EAAa,EAAb,EAAgB,CAAhB,CAArH,CAAA;CAAwI,WAAA;;WAAA,SAASoa,CAAT,CAAWhd,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;aAACA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAW,IAAA,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiKqpB,CAAC,CAACvD,CAAD,EAAG,KAAH,CAArK,CAAD,CAAA;aAAiLquC,CAAC,GAAC5yD,CAAC,CAACvB,MAAJ,CAAA;aAAW,IAAG,EAAEm0D,CAAC,IAAEhwD,CAAL,CAAH,EAAW,KAAI,IAAIxC,CAAC,GAAC,CAAN,EAAQozB,CAAC,GAACp0B,IAAI,CAAC8C,GAAL,CAAS0wD,CAAC,GAAChwD,CAAX,EAAa,CAAb,CAAd,EAA8BxC,CAAC,GAACozB,CAAhC,EAAkCpzB,CAAC,EAAnC,EAAsCJ,CAAC,CAAC4C,CAAC,GAACxC,CAAH,CAAD,GAAO,CAACmkB,CAAC,GAAC,GAAA,IAAK,CAAGzD,IAAAA,CAAC,GAAC1gB,CAAD,GAAG,CAAA,GAAEA,CAAT,CAAR,MAAuB,CAAA,IAAG0gB,CAAC,GAAC1gB,CAAD,GAAG,CAAEA,GAAAA,CAAT,CAA9B,CAAA;CAA0C,WAAA;;WAAA,SAASiY,CAAT,CAAWrY,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;aAACA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAW,IAAA,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiKqpB,CAAC,CAACvD,CAAD,EAAG,UAAH,CAArK,CAAD,CAAA;aAAsLquC,CAAC,GAAC5yD,CAAC,CAACvB,MAAJ,CAAA;aAAW,IAAG,EAAEm0D,CAAC,IAAEhwD,CAAL,CAAH,EAAW,KAAI,IAAIxC,CAAC,GAAC,CAAN,EAAQozB,CAAC,GAACp0B,IAAI,CAAC8C,GAAL,CAAS0wD,CAAC,GAAChwD,CAAX,EAAa,CAAb,CAAd,EAA8BxC,CAAC,GAACozB,CAAhC,EAAkCpzB,CAAC,EAAnC,EAAsCJ,CAAC,CAAC4C,CAAC,GAACxC,CAAH,CAAD,GAAOmkB,CAAC,KAAG,CAAGzD,IAAAA,CAAC,GAAC1gB,CAAD,GAAG,CAAEA,GAAAA,CAAT,CAAJ,GAAgB,GAAvB,CAAA;CAA2B,WAAA;;WAAA,SAASuC,CAAT,CAAW3C,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;CAACA,YAAAA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAA,IAAW,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiK85D,CAAC,CAACh0C,CAAD,EAAG,KAAH,EAAS,CAAC,KAAV,CAArK,CAAD,EAAwLvkB,CAAC,CAACvB,MAAF,IAAUmE,CAAV,IAAaoa,CAAC,CAAChd,CAAD,EAAG,CAAGukB,IAAAA,CAAH,GAAKA,CAAL,GAAO,KAAMA,GAAAA,CAAN,GAAQ,CAAlB,EAAoB3hB,CAApB,EAAsBke,CAAtB,EAAwB8xC,CAAxB,CAAtM,CAAA;CAAiO,WAAA;;WAAA,SAASr4B,CAAT,CAAWv6B,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;CAACA,YAAAA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAA,IAAW,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiK85D,CAAC,CAACh0C,CAAD,EAAG,UAAH,EAAc,CAAC,UAAf,CAArK,CAAD,EAAkMvkB,CAAC,CAACvB,MAAF,IAAUmE,CAAV,IAAayV,CAAC,CAACrY,CAAD,EAAG,CAAGukB,IAAAA,CAAH,GAAKA,CAAL,GAAO,UAAWA,GAAAA,CAAX,GAAa,CAAvB,EAAyB3hB,CAAzB,EAA2Bke,CAA3B,EAA6B8xC,CAA7B,CAAhN,CAAA;CAAgP,WAAA;;WAAA,SAASpsC,CAAT,CAAWxmB,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;CAACA,YAAAA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAW,IAAA,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiK+5D,CAAC,CAACj0C,CAAD,EAAG,oBAAH,EAAwB,CAAC,oBAAzB,CAArK,CAAD,EAAsNvkB,CAAC,CAACvB,MAAF,IAAUmE,CAAV,IAAaxC,CAAC,CAAC2yD,KAAF,CAAQ/yD,CAAR,EAAUukB,CAAV,EAAY3hB,CAAZ,EAAcke,CAAd,EAAgB,EAAhB,EAAmB,CAAnB,CAAnO,CAAA;CAAyP,WAAA;;WAAA,SAAShd,CAAT,CAAW9D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqB;CAACA,YAAAA,CAAC,KAAG7yD,CAAC,CAAC,IAAA,IAAMwkB,CAAP,EAAS,eAAT,CAAD,EAA2BxkB,CAAC,CAAC,SAAW,IAAA,OAAO+gB,CAAnB,EAAqB,2BAArB,CAA5B,EAA8E/gB,CAAC,CAAC,IAAM6C,IAAAA,CAAP,EAAS,gBAAT,CAA/E,EAA0G7C,CAAC,CAAC6C,CAAC,GAAC,CAAF,GAAI5C,CAAC,CAACvB,MAAP,EAAc,sCAAd,CAA3G,EAAiK+5D,CAAC,CAACj0C,CAAD,EAAG,qBAAH,EAAyB,CAAC,qBAA1B,CAArK,CAAD,EAAwNvkB,CAAC,CAACvB,MAAF,IAAUmE,CAAV,IAAaxC,CAAC,CAAC2yD,KAAF,CAAQ/yD,CAAR,EAAUukB,CAAV,EAAY3hB,CAAZ,EAAcke,CAAd,EAAgB,EAAhB,EAAmB,CAAnB,CAArO,CAAA;CAA2P,WAAA;;WAAA+2C,CAAC,CAACP,MAAF,GAASr3D,CAAT,EAAW43D,CAAC,CAACY,UAAF,GAAax4D,CAAxB,EAA0B43D,CAAC,CAACa,iBAAF,GAAoB,EAA9C,EAAiDz4D,CAAC,CAAC04D,QAAF,GAAW,IAA5D,EAAiE14D,CAAC,CAAC63D,eAAF,GAAkB,YAAU;aAAC,IAAG;CAAC,cAAA,IAAI93D,CAAC,GAAC,IAAI0jD,WAAJ,CAAgB,CAAhB,CAAN;CAAA,kBAAyBn/B,CAAC,GAAC,IAAI2/B,UAAJ,CAAelkD,CAAf,CAA3B,CAAA;CAA6C,cAAA,OAAOukB,CAAC,CAACq0C,GAAF,GAAM,YAAU;CAAC,gBAAA,OAAO,EAAP,CAAA;gBAAjB,EAA4B,EAAKr0C,KAAAA,CAAC,CAACq0C,GAAF,EAAL,IAAc,UAAY,IAAA,OAAOr0C,CAAC,CAACs0C,QAAtE,CAAA;cAAjD,CAAgI,OAAM74D,CAAN,EAAQ;CAAC,cAAA,OAAM,CAAC,CAAP,CAAA;CAAS,aAAA;YAA7J,EAAnF,EAAoPC,CAAC,CAAC64D,UAAF,GAAa,UAAS94D,CAAT,EAAW;CAAC,YAAA,QAAO+O,MAAM,CAAC/O,CAAD,CAAN,CAAUwF,WAAV,EAAP;CAAgC,cAAA,KAAI,KAAJ,CAAA;CAAU,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,QAAJ,CAAA;CAAa,cAAA,KAAI,QAAJ,CAAA;CAAa,cAAA,KAAI,KAAJ,CAAA;CAAU,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,SAAJ,CAAA;CAAc,cAAA,KAAI,UAAJ;CAAe,gBAAA,OAAM,CAAC,CAAP,CAAA;;CAAS,cAAA;CAAQ,gBAAA,OAAM,CAAC,CAAP,CAAA;CAAtL,aAAA;CAAgM,WAA7c,EAA8cvF,CAAC,CAACm0D,QAAF,GAAW,UAASp0D,CAAT,EAAW;aAAC,OAAM,EAAE,QAAMA,CAAN,IAAS,CAACA,CAAC,CAACg4D,SAAd,CAAN,CAAA;YAAre,EAAqgB/3D,CAAC,CAACokD,UAAF,GAAa,UAASrkD,CAAT,EAAWukB,CAAX,EAAa;CAAC,YAAA,IAAI3hB,CAAJ,CAAA;;CAAM,YAAA,QAAO5C,CAAC,IAAE,EAAH,EAAMukB,CAAC,IAAE,MAAhB;CAAwB,cAAA,KAAI,KAAJ;CAAU3hB,gBAAAA,CAAC,GAAC5C,CAAC,CAACvB,MAAF,GAAS,CAAX,CAAA;CAAa,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ;CAAYmE,gBAAAA,CAAC,GAACg4C,CAAC,CAAC56C,CAAD,CAAD,CAAKvB,MAAP,CAAA;CAAc,gBAAA,MAAA;;CAAM,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,QAAJ,CAAA;CAAa,cAAA,KAAI,KAAJ;iBAAUmE,CAAC,GAAC5C,CAAC,CAACvB,MAAJ,CAAA;CAAW,gBAAA,MAAA;;CAAM,cAAA,KAAI,QAAJ;CAAamE,gBAAAA,CAAC,GAACm2D,CAAC,CAAC/4D,CAAD,CAAD,CAAKvB,MAAP,CAAA;CAAc,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,SAAJ,CAAA;CAAc,cAAA,KAAI,UAAJ;CAAemE,gBAAAA,CAAC,GAAC,CAAA,GAAE5C,CAAC,CAACvB,MAAN,CAAA;CAAa,gBAAA,MAAA;;CAAM,cAAA;CAAQ,gBAAA,MAAM,IAAIa,KAAJ,CAAU,kBAAV,CAAN,CAAA;CAApQ,aAAA;;CAAwS,YAAA,OAAOsD,CAAP,CAAA;YAA90B,EAAw1B3C,CAAC,CAACiM,MAAF,GAAS,UAASlM,CAAT,EAAWukB,CAAX,EAAa;aAAC,IAAGxkB,CAAC,CAACk4D,CAAC,CAACj4D,CAAD,CAAF,EAAM,qEAAN,CAAD,EAA8E,MAAIA,CAAC,CAACvB,MAAvF,EAA8F,OAAO,IAAIwB,CAAJ,CAAM,CAAN,CAAP,CAAA;aAAgB,IAAG,CAAA,KAAID,CAAC,CAACvB,MAAT,EAAgB,OAAOuB,CAAC,CAAC,CAAD,CAAR,CAAA;aAAY,IAAG,QAAA,IAAU,OAAOukB,CAApB,EAAsB,KAAIquC,CAAC,GAACruC,CAAC,GAAC,CAAR,EAAUquC,CAAC,GAAC5yD,CAAC,CAACvB,MAAd,EAAqBm0D,CAAC,EAAtB,EAAyBruC,CAAC,IAAEvkB,CAAC,CAAC4yD,CAAD,CAAD,CAAKn0D,MAAR,CAAA;;aAAe,KAAI,IAAImE,CAAC,GAAC,IAAI3C,CAAJ,CAAMskB,CAAN,CAAN,EAAezD,CAAC,GAAC,CAAjB,EAAmB8xC,CAAC,GAAC,CAAzB,EAA2BA,CAAC,GAAC5yD,CAAC,CAACvB,MAA/B,EAAsCm0D,CAAC,EAAvC,EAA0C;CAAC,cAAA,IAAIxyD,CAAC,GAACJ,CAAC,CAAC4yD,CAAD,CAAP,CAAA;eAAWxyD,CAAC,CAACyY,IAAF,CAAOjW,CAAP,EAASke,CAAT,CAAA,EAAYA,CAAC,IAAE1gB,CAAC,CAAC3B,MAAjB,CAAA;CAAwB,aAAA;;CAAA,YAAA,OAAOmE,CAAP,CAAA;CAAS,WAA9oC,EAA+oC3C,CAAC,CAACR,SAAF,CAAYszD,KAAZ,GAAkB,UAAS/yD,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB;CAACQ,YAAAA,QAAQ,CAACiD,CAAD,CAAR,GAAYjD,QAAQ,CAAC1e,CAAD,CAAR,KAAcke,CAAC,GAACle,CAAF,EAAIA,CAAC,GAAC,KAAK,CAAzB,CAAZ,IAAyC9C,CAAC,GAACghB,CAAF,EAAIA,CAAC,GAACyD,CAAN,EAAQA,CAAC,GAAC3hB,CAAV,EAAYA,CAAC,GAAC9C,CAAvD,CAAA,EAA0DykB,CAAC,GAAC3iB,MAAM,CAAC2iB,CAAD,CAAN,IAAW,CAAvE,CAAA;CAAyE,YAAA,IAAIquC,CAAJ;CAAA,gBAAMxyD,CAAN;CAAA,gBAAQozB,CAAR;CAAA,gBAAUxW,CAAV;CAAA,gBAAYld,CAAC,GAAC,IAAKrB,CAAAA,MAAL,GAAY8lB,CAA1B,CAAA;;CAA4B,YAAA,QAAO,CAAC,CAAC3hB,CAAD,IAAI9C,CAAC,IAAE8C,CAAC,GAAChB,MAAM,CAACgB,CAAD,CAAV,CAAN,MAAwBA,CAAC,GAAC9C,CAA1B,CAAA,EAA6BghB,CAAC,GAAC/R,MAAM,CAAC+R,CAAC,IAAE,MAAJ,CAAN,CAAkBtb,WAAlB,EAAtC;CAAuE,cAAA,KAAI,KAAJ;iBAAUotD,CAAC,GAAC,UAAS5yD,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB;CAACle,kBAAAA,CAAC,GAAChB,MAAM,CAACgB,CAAD,CAAN,IAAW,CAAb,CAAA;CAAe,kBAAA,IAAIgwD,CAAC,GAAC5yD,CAAC,CAACvB,MAAF,GAASmE,CAAf,CAAA;mBAAiB,CAAC,CAACke,CAAD,IAAI8xC,CAAC,IAAE9xC,CAAC,GAAClf,MAAM,CAACkf,CAAD,CAAV,CAAN,MAAwBA,CAAC,GAAC8xC,CAA1B,GAA6B7yD,CAAC,CAAC,CAAC6yD,CAAC,GAACruC,CAAC,CAAC9lB,MAAL,IAAa,CAAb,IAAgB,CAAjB,EAAmB,oBAAnB,CAA9B,EAAuEm0D,CAAC,GAAC,CAAF,GAAI9xC,CAAJ,KAAQA,CAAC,GAAC8xC,CAAC,GAAC,CAAZ,CAAvE,CAAA;;mBAAsF,KAAI,IAAIxyD,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC0gB,CAAd,EAAgB1gB,CAAC,EAAjB,EAAoB;CAAC,oBAAA,IAAIozB,CAAC,GAACtS,QAAQ,CAACqD,CAAC,CAAC0K,MAAF,CAAS,CAAA,GAAE7uB,CAAX,EAAa,CAAb,CAAD,EAAiB,EAAjB,CAAd,CAAA;CAAmCL,oBAAAA,CAAC,CAAC,CAACqH,KAAK,CAACosB,CAAD,CAAP,EAAW,oBAAX,CAAD,EAAkCxzB,CAAC,CAAC4C,CAAC,GAACxC,CAAH,CAAD,GAAOozB,CAAzC,CAAA;CAA2C,mBAAA;;CAAA,kBAAA,OAAOvzB,CAAC,CAACk4D,aAAF,GAAgB,CAAE/3D,GAAAA,CAAlB,EAAoBA,CAA3B,CAAA;kBAA3O,CAAyQ,IAAzQ,EAA8QJ,CAA9Q,EAAgRukB,CAAhR,EAAkR3hB,CAAlR,CAAF,CAAA;;CAAuR,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ;CAAYxC,gBAAAA,CAAC,GAAC,IAAF,EAAOozB,CAAC,GAACjP,CAAT,EAAWvH,CAAC,GAACpa,CAAb,EAAegwD,CAAC,GAAC3yD,CAAC,CAACk4D,aAAF,GAAgB73D,CAAC,CAACs6C,CAAC,CAAC56C,CAAD,CAAF,EAAMI,CAAN,EAAQozB,CAAR,EAAUxW,CAAV,CAAlC,CAAA;CAA+C,gBAAA,MAAA;;CAAM,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,QAAJ;iBAAa41C,CAAC,GAACryD,CAAC,CAAC,IAAD,EAAMP,CAAN,EAAQukB,CAAR,EAAU3hB,CAAV,CAAH,CAAA;CAAgB,gBAAA,MAAA;;CAAM,cAAA,KAAI,QAAJ;CAAaxC,gBAAAA,CAAC,GAAC,IAAF,EAAOozB,CAAC,GAACjP,CAAT,EAAWvH,CAAC,GAACpa,CAAb,EAAegwD,CAAC,GAAC3yD,CAAC,CAACk4D,aAAF,GAAgB73D,CAAC,CAACy4D,CAAC,CAAC/4D,CAAD,CAAF,EAAMI,CAAN,EAAQozB,CAAR,EAAUxW,CAAV,CAAlC,CAAA;CAA+C,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,SAAJ,CAAA;CAAc,cAAA,KAAI,UAAJ;iBAAe41C,CAAC,GAAC74C,CAAC,CAAC,IAAD,EAAM/Z,CAAN,EAAQukB,CAAR,EAAU3hB,CAAV,CAAH,CAAA;CAAgB,gBAAA,MAAA;;CAAM,cAAA;CAAQ,gBAAA,MAAM,IAAItD,KAAJ,CAAU,kBAAV,CAAN,CAAA;CAA7nB,aAAA;;CAAiqB,YAAA,OAAOszD,CAAP,CAAA;CAAS,WAAl8D,EAAm8D3yD,CAAC,CAACR,SAAF,CAAYF,QAAZ,GAAqB,UAASS,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAAC,YAAA,IAAIke,CAAJ;CAAA,gBAAM8xC,CAAN;CAAA,gBAAQxyD,CAAR;CAAA,gBAAUozB,CAAV;iBAAYxW,CAAC,GAAC,IAAd,CAAA;CAAmB,YAAA,IAAGhd,CAAC,GAAC+O,MAAM,CAAC/O,CAAC,IAAE,MAAJ,CAAN,CAAkBwF,WAAlB,EAAF,EAAkC+e,CAAC,GAAC3iB,MAAM,CAAC2iB,CAAD,CAAN,IAAW,CAA/C,EAAiD,CAAC3hB,CAAC,GAAC,KAAK,CAAL,KAASA,CAAT,GAAWhB,MAAM,CAACgB,CAAD,CAAjB,GAAqBoa,CAAC,CAACve,MAA1B,MAAoC8lB,CAAxF,EAA0F,OAAM,EAAN,CAAA;;CAAS,YAAA,QAAOvkB,CAAP;CAAU,cAAA,KAAI,KAAJ;CAAU8gB,gBAAAA,CAAC,GAAC,UAAS9gB,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAAC,kBAAA,IAAIke,CAAC,GAAC9gB,CAAC,CAACvB,MAAR,CAAA;mBAAe,CAAC,CAAC8lB,CAAD,IAAIA,CAAC,GAAC,CAAP,MAAYA,CAAC,GAAC,CAAd,CAAA,CAAA;CAAiB,kBAAA,CAAC,CAAC3hB,CAAD,IAAIA,CAAC,GAAC,CAAN,IAASke,CAAC,GAACle,CAAZ,MAAiBA,CAAC,GAACke,CAAnB,CAAA,CAAA;;mBAAsB,KAAI,IAAI8xC,CAAC,GAAC,EAAN,EAASxyD,CAAC,GAACmkB,CAAf,EAAiBnkB,CAAC,GAACwC,CAAnB,EAAqBxC,CAAC,EAAtB,EAAyBwyD,CAAC,IAAEp5C,CAAC,CAACxZ,CAAC,CAACI,CAAD,CAAF,CAAJ,CAAA;;CAAW,kBAAA,OAAOwyD,CAAP,CAAA;CAAS,iBAAnH,CAAoH51C,CAApH,EAAsHuH,CAAtH,EAAwH3hB,CAAxH,CAAF,CAAA;;CAA6H,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ;CAAYke,gBAAAA,CAAC,GAAC,UAAS9gB,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;mBAAC,IAAIke,CAAC,GAAC,EAAN;uBAAS8xC,CAAC,GAAC,EAAX,CAAA;mBAAchwD,CAAC,GAACxD,IAAI,CAAC8C,GAAL,CAASlC,CAAC,CAACvB,MAAX,EAAkBmE,CAAlB,CAAF,CAAA;;mBAAuB,KAAI,IAAIxC,CAAC,GAACmkB,CAAV,EAAYnkB,CAAC,GAACwC,CAAd,EAAgBxC,CAAC,EAAjB,EAAoBJ,CAAC,CAACI,CAAD,CAAD,IAAM,GAAN,IAAW0gB,CAAC,IAAEk4C,CAAC,CAACpG,CAAD,CAAD,GAAK7jD,MAAM,CAACqpD,YAAP,CAAoBp4D,CAAC,CAACI,CAAD,CAArB,CAAR,EAAkCwyD,CAAC,GAAC,EAA/C,IAAmDA,CAAC,IAAE,GAAI5yD,GAAAA,CAAC,CAACI,CAAD,CAAD,CAAKb,QAAL,CAAc,EAAd,CAA1D,CAAA;;CAA4E,kBAAA,OAAOuhB,CAAC,GAACk4C,CAAC,CAACpG,CAAD,CAAV,CAAA;CAAc,iBAAnK,CAAoK51C,CAApK,EAAsKuH,CAAtK,EAAwK3hB,CAAxK,CAAF,CAAA;;CAA6K,gBAAA,MAAA;;CAAM,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,QAAJ;iBAAake,CAAC,GAAC/K,CAAC,CAACiH,CAAD,EAAGuH,CAAH,EAAK3hB,CAAL,CAAH,CAAA;CAAW,gBAAA,MAAA;;CAAM,cAAA,KAAI,QAAJ;CAAagwD,gBAAAA,CAAC,GAAC51C,CAAF,EAAIwW,CAAC,GAAC5wB,CAAN,EAAQke,CAAC,GAAC,CAAA,MAAK1gB,CAAC,GAACmkB,CAAP,KAAWiP,CAAC,KAAGo/B,CAAC,CAACn0D,MAAjB,GAAwBqB,CAAC,CAAC43D,aAAF,CAAgB9E,CAAhB,CAAxB,GAA2C9yD,CAAC,CAAC43D,aAAF,CAAgB9E,CAAC,CAAC3xD,KAAF,CAAQb,CAAR,EAAUozB,CAAV,CAAhB,CAArD,CAAA;CAAmF,gBAAA,MAAA;;CAAM,cAAA,KAAI,MAAJ,CAAA;CAAW,cAAA,KAAI,OAAJ,CAAA;CAAY,cAAA,KAAI,SAAJ,CAAA;CAAc,cAAA,KAAI,UAAJ;CAAe1S,gBAAAA,CAAC,GAAC,UAAS9gB,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;mBAAC,KAAI,IAAIke,CAAC,GAAC9gB,CAAC,CAACiB,KAAF,CAAQsjB,CAAR,EAAU3hB,CAAV,CAAN,EAAmBgwD,CAAC,GAAC,EAArB,EAAwBxyD,CAAC,GAAC,CAA9B,EAAgCA,CAAC,GAAC0gB,CAAC,CAACriB,MAApC,EAA2C2B,CAAC,IAAE,CAA9C,EAAgDwyD,CAAC,IAAE7jD,MAAM,CAACqpD,YAAP,CAAoBt3C,CAAC,CAAC1gB,CAAD,CAAD,GAAK,GAAI0gB,GAAAA,CAAC,CAAC1gB,CAAC,GAAC,CAAH,CAA9B,CAAH,CAAA;;CAAwC,kBAAA,OAAOwyD,CAAP,CAAA;CAAS,iBAAjH,CAAkH51C,CAAlH,EAAoHuH,CAApH,EAAsH3hB,CAAtH,CAAF,CAAA;;CAA2H,gBAAA,MAAA;;CAAM,cAAA;CAAQ,gBAAA,MAAM,IAAItD,KAAJ,CAAU,kBAAV,CAAN,CAAA;CAA9qB,aAAA;;CAAktB,YAAA,OAAOwhB,CAAP,CAAA;CAAS,WAAzzF,EAA0zF7gB,CAAC,CAACR,SAAF,CAAYqZ,MAAZ,GAAmB,YAAU;aAAC,OAAM;CAAC0D,cAAAA,IAAI,EAAC,QAAN;CAAejV,cAAAA,IAAI,EAACM,KAAK,CAACpI,SAAN,CAAgBwB,KAAhB,CAAsBrB,IAAtB,CAA2B,IAAKq5D,CAAAA,IAAL,IAAW,IAAtC,EAA2C,CAA3C,CAAA;cAA1B,CAAA;CAAyE,WAAj6F,EAAk6Fh5D,CAAC,CAACR,SAAF,CAAYoZ,IAAZ,GAAiB,UAAS7Y,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB;CAAC,YAAA,IAAGyD,CAAC,GAACA,CAAC,IAAE,CAAL,EAAO,CAACzD,CAAC,GAACA,CAAC,IAAE,CAAIA,KAAAA,CAAP,GAASA,CAAT,GAAW,IAAKriB,CAAAA,MAAnB,OAA8BmE,CAAC,GAACA,CAAC,IAAE,CAAnC,CAAA,IAAuC,CAAI5C,KAAAA,CAAC,CAACvB,MAA7C,IAAqD,CAAI,KAAA,IAAA,CAAKA,MAAxE,EAA+E;eAACsB,CAAC,CAAC6C,CAAC,IAAEke,CAAJ,EAAM,yBAAN,CAAD,EAAkC/gB,CAAC,CAAC,CAAA,IAAGwkB,CAAH,IAAMA,CAAC,GAACvkB,CAAC,CAACvB,MAAX,EAAkB,2BAAlB,CAAnC,EAAkFsB,CAAC,CAAC,CAAG6C,IAAAA,CAAH,IAAMA,CAAC,GAAC,IAAKnE,CAAAA,MAAd,EAAqB,2BAArB,CAAnF,EAAqIsB,CAAC,CAAC,CAAG+gB,IAAAA,CAAH,IAAMA,CAAC,IAAE,IAAA,CAAKriB,MAAf,EAAsB,yBAAtB,CAAtI,EAAuLqiB,CAAC,GAAC,IAAA,CAAKriB,MAAP,KAAgBqiB,CAAC,GAAC,IAAKriB,CAAAA,MAAvB,CAAvL,CAAA;eAAsN,IAAIm0D,CAAC,GAAC,CAAC9xC,CAAC,GAAC9gB,CAAC,CAACvB,MAAF,GAAS8lB,CAAT,GAAWzD,CAAC,GAACle,CAAb,GAAe5C,CAAC,CAACvB,MAAF,GAAS8lB,CAAT,GAAW3hB,CAA1B,GAA4Bke,CAA/B,IAAkCle,CAAxC,CAAA;eAA0C,IAAGgwD,CAAC,GAAC,GAAF,IAAO,CAAC3yD,CAAC,CAAC63D,eAAb,EAA6B,KAAI,IAAI13D,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACwyD,CAAd,EAAgBxyD,CAAC,EAAjB,EAAoBJ,CAAC,CAACI,CAAC,GAACmkB,CAAH,CAAD,GAAO,IAAKnkB,CAAAA,CAAC,GAACwC,CAAP,CAAP,CAAjD,KAAuE5C,CAAC,CAAC61D,IAAF,CAAO,IAAA,CAAKgD,QAAL,CAAcj2D,CAAd,EAAgBA,CAAC,GAACgwD,CAAlB,CAAP,EAA4BruC,CAA5B,CAAA,CAAA;CAA+B,aAAA;YAA33G,EAA63GtkB,CAAC,CAACR,SAAF,CAAYwB,KAAZ,GAAkB,UAASjB,CAAT,EAAWukB,CAAX,EAAa;aAAC,IAAI3hB,CAAC,GAAC,IAAA,CAAKnE,MAAX,CAAA;CAAkB,YAAA,IAAGuB,CAAC,GAACk5D,CAAC,CAACl5D,CAAD,EAAG4C,CAAH,EAAK,CAAL,CAAH,EAAW2hB,CAAC,GAAC20C,CAAC,CAAC30C,CAAD,EAAG3hB,CAAH,EAAKA,CAAL,CAAd,EAAsB3C,CAAC,CAAC63D,eAA3B,EAA2C,OAAO73D,CAAC,CAAC83D,QAAF,CAAW,KAAKc,QAAL,CAAc74D,CAAd,EAAgBukB,CAAhB,CAAX,CAAP,CAAA;;CAAsC,YAAA,KAAI,IAAIzD,CAAC,GAACyD,CAAC,GAACvkB,CAAR,EAAU4yD,CAAC,GAAC,IAAI3yD,CAAJ,CAAM6gB,CAAN,EAAQ,KAAK,CAAb,EAAe,CAAC,CAAhB,CAAZ,EAA+B1gB,CAAC,GAAC,CAArC,EAAuCA,CAAC,GAAC0gB,CAAzC,EAA2C1gB,CAAC,EAA5C,EAA+CwyD,CAAC,CAACxyD,CAAD,CAAD,GAAK,KAAKA,CAAC,GAACJ,CAAP,CAAL,CAAA;;CAAe,YAAA,OAAO4yD,CAAP,CAAA;YAA9jH,EAAwkH3yD,CAAC,CAACR,SAAF,CAAYkP,GAAZ,GAAgB,UAAS3O,CAAT,EAAW;aAAC,OAAO0gB,OAAO,CAACrhB,GAAR,CAAY,2DAAZ,GAAyE,IAAK64D,CAAAA,SAAL,CAAel4D,CAAf,CAAhF,CAAA;YAApmH,EAAusHC,CAAC,CAACR,SAAF,CAAYmQ,GAAZ,GAAgB,UAAS5P,CAAT,EAAWukB,CAAX,EAAa;CAAC,YAAA,OAAO7D,OAAO,CAACrhB,GAAR,CAAY,2DAAZ,CAAA,EAAyE,IAAK85D,CAAAA,UAAL,CAAgBn5D,CAAhB,EAAkBukB,CAAlB,CAAhF,CAAA;YAAruH,EAA20HtkB,CAAC,CAACR,SAAF,CAAYy4D,SAAZ,GAAsB,UAASl4D,CAAT,EAAWukB,CAAX,EAAa;CAAC,YAAA,IAAGA,CAAC,KAAGxkB,CAAC,CAAC,IAAMC,IAAAA,CAAP,EAAS,gBAAT,CAAD,EAA4BD,CAAC,CAACC,CAAC,GAAC,IAAA,CAAKvB,MAAR,EAAe,qCAAf,CAAhC,CAAD,EAAwF,EAAEuB,CAAC,IAAE,IAAKvB,CAAAA,MAAV,CAA3F,EAA6G,OAAO,IAAA,CAAKuB,CAAL,CAAP,CAAA;YAA59H,EAA4+HC,CAAC,CAACR,SAAF,CAAY25D,YAAZ,GAAyB,UAASp5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAOquC,CAAC,CAAC,IAAD,EAAM5yD,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAnhI,EAA0iItkB,CAAC,CAACR,SAAF,CAAY45D,YAAZ,GAAyB,UAASr5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAOquC,CAAC,CAAC,IAAD,EAAM5yD,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAjlI,EAAwmItkB,CAAC,CAACR,SAAF,CAAY65D,YAAZ,GAAyB,UAASt5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAOiP,CAAC,CAAC,IAAD,EAAMxzB,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAA/oI,EAAsqItkB,CAAC,CAACR,SAAF,CAAY85D,YAAZ,GAAyB,UAASv5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAOiP,CAAC,CAAC,IAAD,EAAMxzB,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAA7sI,EAAouItkB,CAAC,CAACR,SAAF,CAAY+5D,QAAZ,GAAqB,UAASx5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,IAAGA,CAAC,KAAGxkB,CAAC,CAAC,QAAMC,CAAP,EAAS,gBAAT,CAAD,EAA4BD,CAAC,CAACC,CAAC,GAAC,IAAKvB,CAAAA,MAAR,EAAe,qCAAf,CAAhC,CAAD,EAAwF,EAAEuB,CAAC,IAAE,IAAKvB,CAAAA,MAAV,CAA3F,EAA6G,OAAO,MAAI,IAAKuB,CAAAA,CAAL,CAAJ,GAAY,CAAC,CAAD,IAAI,GAAI,GAAA,IAAA,CAAKA,CAAL,CAAJ,GAAY,CAAhB,CAAZ,GAA+B,IAAKA,CAAAA,CAAL,CAAtC,CAAA;YAAp3I,EAAm6IC,CAAC,CAACR,SAAF,CAAYg6D,WAAZ,GAAwB,UAASz5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO8zC,CAAC,CAAC,IAAD,EAAMr4D,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAz8I,EAAg+ItkB,CAAC,CAACR,SAAF,CAAYi6D,WAAZ,GAAwB,UAAS15D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO8zC,CAAC,CAAC,IAAD,EAAMr4D,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAtgJ,EAA6hJtkB,CAAC,CAACR,SAAF,CAAYk6D,WAAZ,GAAwB,UAAS35D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO+zC,CAAC,CAAC,IAAD,EAAMt4D,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAnkJ,EAA0lJtkB,CAAC,CAACR,SAAF,CAAYm6D,WAAZ,GAAwB,UAAS55D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO+zC,CAAC,CAAC,IAAD,EAAMt4D,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAhoJ,EAAupJtkB,CAAC,CAACR,SAAF,CAAYo6D,WAAZ,GAAwB,UAAS75D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO8vB,CAAC,CAAC,IAAD,EAAMr0C,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAA7rJ,EAAotJtkB,CAAC,CAACR,SAAF,CAAYq6D,WAAZ,GAAwB,UAAS95D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO8vB,CAAC,CAAC,IAAD,EAAMr0C,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAA1vJ,EAAixJtkB,CAAC,CAACR,SAAF,CAAYs6D,YAAZ,GAAyB,UAAS/5D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO7hB,CAAC,CAAC,IAAD,EAAM1C,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;YAAxzJ,EAA+0JtkB,CAAC,CAACR,SAAF,CAAYu6D,YAAZ,GAAyB,UAASh6D,CAAT,EAAWukB,CAAX,EAAa;aAAC,OAAO7hB,CAAC,CAAC,IAAD,EAAM1C,CAAN,EAAQ,CAAC,CAAT,EAAWukB,CAAX,CAAR,CAAA;CAAsB,WAA54J,EAA64JtkB,CAAC,CAACR,SAAF,CAAY05D,UAAZ,GAAuB,UAASn5D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACA,CAAC,KAAG7C,CAAC,CAAC,IAAA,IAAMC,CAAP,EAAS,eAAT,CAAD,EAA2BD,CAAC,CAAC,IAAMwkB,IAAAA,CAAP,EAAS,gBAAT,CAA5B,EAAuDxkB,CAAC,CAACwkB,CAAC,GAAC,IAAA,CAAK9lB,MAAR,EAAe,sCAAf,CAAxD,EAA+GqpB,CAAC,CAAC9nB,CAAD,EAAG,GAAH,CAAnH,CAAD,EAA6HukB,CAAC,IAAE,KAAK9lB,MAAR,KAAiB,KAAK8lB,CAAL,CAAA,GAAQvkB,CAAzB,CAA7H,CAAA;CAAyJ,WAA7kK,EAA8kKC,CAAC,CAACR,SAAF,CAAYw6D,aAAZ,GAA0B,UAASj6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACoa,CAAC,CAAC,IAAD,EAAMhd,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAzoK,EAA0oK3C,CAAC,CAACR,SAAF,CAAYy6D,aAAZ,GAA0B,UAASl6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACoa,CAAC,CAAC,IAAD,EAAMhd,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAArsK,EAAssK3C,CAAC,CAACR,SAAF,CAAY06D,aAAZ,GAA0B,UAASn6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACyV,CAAC,CAAC,IAAD,EAAMrY,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAjwK,EAAkwK3C,CAAC,CAACR,SAAF,CAAY26D,aAAZ,GAA0B,UAASp6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACyV,CAAC,CAAC,IAAD,EAAMrY,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAA7zK,EAA8zK3C,CAAC,CAACR,SAAF,CAAY46D,SAAZ,GAAsB,UAASr6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAACA,YAAAA,CAAC,KAAG7C,CAAC,CAAC,IAAA,IAAMC,CAAP,EAAS,eAAT,CAAD,EAA2BD,CAAC,CAAC,IAAMwkB,IAAAA,CAAP,EAAS,gBAAT,CAA5B,EAAuDxkB,CAAC,CAACwkB,CAAC,GAAC,IAAA,CAAK9lB,MAAR,EAAe,sCAAf,CAAxD,EAA+G85D,CAAC,CAACv4D,CAAD,EAAG,GAAH,EAAO,CAAC,GAAR,CAAnH,CAAD,EAAkIukB,CAAC,IAAE,KAAK9lB,MAAR,KAAiB,CAAGuB,IAAAA,CAAH,GAAK,IAAA,CAAKm5D,UAAL,CAAgBn5D,CAAhB,EAAkBukB,CAAlB,EAAoB3hB,CAApB,CAAL,GAA4B,IAAKu2D,CAAAA,UAAL,CAAgB,GAAIn5D,GAAAA,CAAJ,GAAM,CAAtB,EAAwBukB,CAAxB,EAA0B3hB,CAA1B,CAA7C,CAAlI,CAAA;CAA6M,WAAjjL,EAAkjL3C,CAAC,CAACR,SAAF,CAAY66D,YAAZ,GAAyB,UAASt6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACD,CAAC,CAAC,IAAD,EAAM3C,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAA5mL,EAA6mL3C,CAAC,CAACR,SAAF,CAAY86D,YAAZ,GAAyB,UAASv6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACD,CAAC,CAAC,IAAD,EAAM3C,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAvqL,EAAwqL3C,CAAC,CAACR,SAAF,CAAY+6D,YAAZ,GAAyB,UAASx6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAAC23B,CAAC,CAAC,IAAD,EAAMv6B,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAluL,EAAmuL3C,CAAC,CAACR,SAAF,CAAYg7D,YAAZ,GAAyB,UAASz6D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAAC23B,CAAC,CAAC,IAAD,EAAMv6B,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAA7xL,EAA8xL3C,CAAC,CAACR,SAAF,CAAYi7D,YAAZ,GAAyB,UAAS16D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAAC4jB,CAAC,CAAC,IAAD,EAAMxmB,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAx1L,EAAy1L3C,CAAC,CAACR,SAAF,CAAYk7D,YAAZ,GAAyB,UAAS36D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAAC4jB,CAAC,CAAC,IAAD,EAAMxmB,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAAn5L,EAAo5L3C,CAAC,CAACR,SAAF,CAAYm7D,aAAZ,GAA0B,UAAS56D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACkB,CAAC,CAAC,IAAD,EAAM9D,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAA/8L,EAAg9L3C,CAAC,CAACR,SAAF,CAAYo7D,aAAZ,GAA0B,UAAS76D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;aAACkB,CAAC,CAAC,IAAD,EAAM9D,CAAN,EAAQukB,CAAR,EAAU,CAAC,CAAX,EAAa3hB,CAAb,CAAD,CAAA;CAAiB,WAA3gM,EAA4gM3C,CAAC,CAACR,SAAF,CAAYqY,IAAZ,GAAiB,UAAS9X,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAAC,YAAA,IAAG2hB,CAAC,GAACA,CAAC,IAAE,CAAL,EAAO3hB,CAAC,GAACA,CAAC,IAAE,IAAKnE,CAAAA,MAAjB,EAAwBsB,CAAC,CAAC,QAAA,IAAU,QAAOC,CAAC,GAAC,QAAA,IAAU,QAAOA,CAAC,GAACA,CAAC,IAAE,CAAZ,CAAV,GAAyBA,CAAC,CAACmmD,UAAF,CAAa,CAAb,CAAzB,GAAyCnmD,CAAlD,CAAV,IAAgE,CAACoH,KAAK,CAACpH,CAAD,CAAvE,EAA2E,uBAA3E,CAAzB,EAA6HD,CAAC,CAACwkB,CAAC,IAAE3hB,CAAJ,EAAM,aAAN,CAA9H,EAAmJA,CAAC,KAAG2hB,CAAJ,IAAO,CAAI,KAAA,IAAA,CAAK9lB,MAAtK,EAA6K;eAACsB,CAAC,CAAC,KAAGwkB,CAAH,IAAMA,CAAC,GAAC,IAAA,CAAK9lB,MAAd,EAAqB,qBAArB,CAAD,EAA6CsB,CAAC,CAAC,CAAG6C,IAAAA,CAAH,IAAMA,CAAC,IAAE,IAAKnE,CAAAA,MAAf,EAAsB,mBAAtB,CAA9C,CAAA;;CAAyF,cAAA,KAAI,IAAIqiB,CAAC,GAACyD,CAAV,EAAYzD,CAAC,GAACle,CAAd,EAAgBke,CAAC,EAAjB,EAAoB,IAAKA,CAAAA,CAAL,IAAQ9gB,CAAR,CAAA;CAAU,aAAA;CAAC,WAAn1M,EAAo1MC,CAAC,CAACR,SAAF,CAAYq7D,OAAZ,GAAoB,YAAU;CAAC,YAAA,KAAI,IAAI96D,CAAC,GAAC,EAAN,EAASukB,CAAC,GAAC,IAAA,CAAK9lB,MAAhB,EAAuBmE,CAAC,GAAC,CAA7B,EAA+BA,CAAC,GAAC2hB,CAAjC,EAAmC3hB,CAAC,EAApC,EAAuC,IAAG5C,CAAC,CAAC4C,CAAD,CAAD,GAAK4W,CAAC,CAAC,IAAA,CAAK5W,CAAL,CAAD,CAAN,EAAgBA,CAAC,KAAGi1D,CAAC,CAACa,iBAAzB,EAA2C;CAAC14D,cAAAA,CAAC,CAAC4C,CAAC,GAAC,CAAH,CAAD,GAAO,KAAP,CAAA;CAAa,cAAA,MAAA;CAAM,aAAA;;aAAA,OAAM,UAAA,GAAW5C,CAAC,CAAC4O,IAAF,CAAO,GAAP,CAAX,GAAuB,GAA7B,CAAA;CAAiC,WAA1/M,EAA2/M3O,CAAC,CAACR,SAAF,CAAYs7D,aAAZ,GAA0B,YAAU;aAAC,IAAG,WAAA,IAAa,OAAO7W,UAAvB,EAAkC,MAAM,IAAI5kD,KAAJ,CAAU,oDAAV,CAAN,CAAA;aAAsE,IAAGW,CAAC,CAAC63D,eAAL,EAAqB,OAAO,IAAI73D,CAAJ,CAAM,IAAN,CAAA,CAAYkkD,MAAnB,CAAA;;CAA0B,YAAA,KAAI,IAAInkD,CAAC,GAAC,IAAIkkD,UAAJ,CAAe,IAAA,CAAKzlD,MAApB,CAAN,EAAkC8lB,CAAC,GAAC,CAApC,EAAsC3hB,CAAC,GAAC5C,CAAC,CAACvB,MAA9C,EAAqD8lB,CAAC,GAAC3hB,CAAvD,EAAyD2hB,CAAC,IAAE,CAA5D,EAA8DvkB,CAAC,CAACukB,CAAD,CAAD,GAAK,IAAA,CAAKA,CAAL,CAAL,CAAA;;aAAa,OAAOvkB,CAAC,CAACmkD,MAAT,CAAA;YAAlwN,CAAA;CAAmxN,UAAA,IAAI5/B,CAAC,GAACtkB,CAAC,CAACR,SAAR,CAAA;;CAAkB,UAAA,SAASy5D,CAAT,CAAWl5D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiB;CAAC,YAAA,OAAM,QAAU,IAAA,OAAO5C,CAAjB,GAAmB4C,CAAnB,GAAqB2hB,CAAC,KAAGvkB,CAAC,GAAC,CAAC,CAACA,CAAP,CAAD,GAAWukB,CAAX,GAAa,CAAA,IAAGvkB,CAAH,IAAM,CAAIA,KAAAA,CAAC,IAAEukB,CAAP,CAAN,GAAgBvkB,CAAhB,GAAkB,CAA1D,CAAA;CAA4D,WAAA;;WAAA,SAASK,CAAT,CAAWL,CAAX,EAAa;CAAC,YAAA,OAAM,CAACA,CAAC,GAAC,CAAC,CAACZ,IAAI,CAAC8T,IAAL,CAAU,CAAClT,CAAX,CAAL,IAAoB,CAApB,GAAsB,CAAtB,GAAwBA,CAA9B,CAAA;CAAgC,WAAA;;WAAA,SAASi4D,CAAT,CAAWj4D,CAAX,EAAa;CAAC,YAAA,OAAM,CAAC6H,KAAK,CAACy6C,OAAN,IAAe,UAAStiD,CAAT,EAAW;eAAC,OAAM,gBAAA,KAAmBR,MAAM,CAACC,SAAP,CAAiBF,QAAjB,CAA0BK,IAA1B,CAA+BI,CAA/B,CAAzB,CAAA;cAA5B,EAAyFA,CAAzF,CAAN,CAAA;CAAkG,WAAA;;WAAA,SAASwZ,CAAT,CAAWxZ,CAAX,EAAa;CAAC,YAAA,OAAOA,CAAC,GAAC,EAAF,GAAK,GAAA,GAAIA,CAAC,CAACT,QAAF,CAAW,EAAX,CAAT,GAAwBS,CAAC,CAACT,QAAF,CAAW,EAAX,CAA/B,CAAA;CAA8C,WAAA;;WAAA,SAASq7C,CAAT,CAAW56C,CAAX,EAAa;CAAC,YAAA,KAAI,IAAIukB,CAAC,GAAC,EAAN,EAAS3hB,CAAC,GAAC,CAAf,EAAiBA,CAAC,GAAC5C,CAAC,CAACvB,MAArB,EAA4BmE,CAAC,EAA7B,EAAgC;CAAC,cAAA,IAAIke,CAAC,GAAC9gB,CAAC,CAACmmD,UAAF,CAAavjD,CAAb,CAAN,CAAA;CAAsB,cAAA,IAAGke,CAAC,IAAE,GAAN,EAAUyD,CAAC,CAAC/d,IAAF,CAAOxG,CAAC,CAACmmD,UAAF,CAAavjD,CAAb,CAAP,CAAV,CAAA,KAAuC,KAAI,IAAIgwD,CAAC,GAAChwD,CAAN,EAAQxC,CAAC,IAAE,SAAO0gB,CAAP,IAAUA,CAAC,IAAE,KAAb,IAAoBle,CAAC,EAArB,EAAwBo4D,kBAAkB,CAACh7D,CAAC,CAACiB,KAAF,CAAQ2xD,CAAR,EAAUhwD,CAAC,GAAC,CAAZ,CAAD,CAAlB,CAAmCqsB,MAAnC,CAA0C,CAA1C,CAAA,CAA6ClE,KAA7C,CAAmD,GAAnD,CAA1B,CAAT,EAA4FyI,CAAC,GAAC,CAAlG,EAAoGA,CAAC,GAACpzB,CAAC,CAAC3B,MAAxG,EAA+G+0B,CAAC,EAAhH,EAAmHjP,CAAC,CAAC/d,IAAF,CAAO0a,QAAQ,CAAC9gB,CAAC,CAACozB,CAAD,CAAF,EAAM,EAAN,CAAf,CAAA,CAAA;CAA0B,aAAA;;CAAA,YAAA,OAAOjP,CAAP,CAAA;CAAS,WAAA;;WAAA,SAASw0C,CAAT,CAAW/4D,CAAX,EAAa;CAAC,YAAA,OAAOF,CAAC,CAAC23D,WAAF,CAAcz3D,CAAd,CAAP,CAAA;CAAwB,WAAA;;WAAA,SAASM,CAAT,CAAWN,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB;CAAC,YAAA,KAAI,IAAI8xC,CAAC,GAAC,CAAV,EAAYA,CAAC,GAAC9xC,CAAF,IAAK,EAAE8xC,CAAC,GAAChwD,CAAF,IAAK2hB,CAAC,CAAC9lB,MAAP,IAAem0D,CAAC,IAAE5yD,CAAC,CAACvB,MAAtB,CAAjB,EAA+Cm0D,CAAC,EAAhD,EAAmDruC,CAAC,CAACquC,CAAC,GAAChwD,CAAH,CAAD,GAAO5C,CAAC,CAAC4yD,CAAD,CAAR,CAAA;;CAAY,YAAA,OAAOA,CAAP,CAAA;CAAS,WAAA;;WAAA,SAASoG,CAAT,CAAWh5D,CAAX,EAAa;aAAC,IAAG;eAAC,OAAOi7D,kBAAkB,CAACj7D,CAAD,CAAzB,CAAA;cAAJ,CAAiC,OAAMA,CAAN,EAAQ;CAAC,cAAA,OAAO+O,MAAM,CAACqpD,YAAP,CAAoB,KAApB,CAAP,CAAA;CAAkC,aAAA;CAAC,WAAA;;CAAA,UAAA,SAAStwC,CAAT,CAAW9nB,CAAX,EAAaukB,CAAb,EAAe;CAACxkB,YAAAA,CAAC,CAAC,QAAU,IAAA,OAAOC,CAAlB,EAAoB,uCAApB,CAAD,EAA8DD,CAAC,CAAC,KAAGC,CAAJ,EAAM,0DAAN,CAA/D,EAAiID,CAAC,CAACC,CAAC,IAAEukB,CAAJ,EAAM,6CAAN,CAAlI,EAAuLxkB,CAAC,CAACX,IAAI,CAACoU,KAAL,CAAWxT,CAAX,CAAA,KAAgBA,CAAjB,EAAmB,kCAAnB,CAAxL,CAAA;CAA+O,WAAA;;CAAA,UAAA,SAASu4D,CAAT,CAAWv4D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiB;CAAC7C,YAAAA,CAAC,CAAC,QAAU,IAAA,OAAOC,CAAlB,EAAoB,uCAApB,CAAD,EAA8DD,CAAC,CAACC,CAAC,IAAEukB,CAAJ,EAAM,yCAAN,CAA/D,EAAgHxkB,CAAC,CAAC6C,CAAC,IAAE5C,CAAJ,EAAM,0CAAN,CAAjH,EAAmKD,CAAC,CAACX,IAAI,CAACoU,KAAL,CAAWxT,CAAX,MAAgBA,CAAjB,EAAmB,kCAAnB,CAApK,CAAA;CAA2N,WAAA;;CAAA,UAAA,SAASw4D,CAAT,CAAWx4D,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiB;aAAC7C,CAAC,CAAC,QAAU,IAAA,OAAOC,CAAlB,EAAoB,uCAApB,CAAD,EAA8DD,CAAC,CAACC,CAAC,IAAEukB,CAAJ,EAAM,yCAAN,CAA/D,EAAgHxkB,CAAC,CAAC6C,CAAC,IAAE5C,CAAJ,EAAM,0CAAN,CAAjH,CAAA;CAAmK,WAAA;;CAAA,UAAA,SAASD,CAAT,CAAWC,CAAX,EAAaukB,CAAb,EAAe;aAAC,IAAG,CAACvkB,CAAJ,EAAM,MAAM,IAAIV,KAAJ,CAAUilB,CAAC,IAAE,kBAAb,CAAN,CAAA;CAAuC,WAAA;;CAAAtkB,UAAAA,CAAC,CAAC83D,QAAF,GAAW,UAAS/3D,CAAT,EAAW;CAAC,YAAA,OAAOA,CAAC,CAACg4D,SAAF,GAAY,CAAC,CAAb,EAAeh4D,CAAC,CAACk7D,IAAF,GAAOl7D,CAAC,CAAC2O,GAAxB,EAA4B3O,CAAC,CAAC61D,IAAF,GAAO71D,CAAC,CAAC4P,GAArC,EAAyC5P,CAAC,CAAC2O,GAAF,GAAM4V,CAAC,CAAC5V,GAAjD,EAAqD3O,CAAC,CAAC4P,GAAF,GAAM2U,CAAC,CAAC3U,GAA7D,EAAiE5P,CAAC,CAAC+yD,KAAF,GAAQxuC,CAAC,CAACwuC,KAA3E,EAAiF/yD,CAAC,CAACT,QAAF,GAAWglB,CAAC,CAAChlB,QAA9F,EAAuGS,CAAC,CAACm7D,cAAF,GAAiB52C,CAAC,CAAChlB,QAA1H,EAAmIS,CAAC,CAAC8Y,MAAF,GAASyL,CAAC,CAACzL,MAA9I,EAAqJ9Y,CAAC,CAAC6Y,IAAF,GAAO0L,CAAC,CAAC1L,IAA9J,EAAmK7Y,CAAC,CAACiB,KAAF,GAAQsjB,CAAC,CAACtjB,KAA7K,EAAmLjB,CAAC,CAACk4D,SAAF,GAAY3zC,CAAC,CAAC2zC,SAAjM,EAA2Ml4D,CAAC,CAACo5D,YAAF,GAAe70C,CAAC,CAAC60C,YAA5N,EAAyOp5D,CAAC,CAACq5D,YAAF,GAAe90C,CAAC,CAAC80C,YAA1P,EAAuQr5D,CAAC,CAACs5D,YAAF,GAAe/0C,CAAC,CAAC+0C,YAAxR,EAAqSt5D,CAAC,CAACu5D,YAAF,GAAeh1C,CAAC,CAACg1C,YAAtT,EAAmUv5D,CAAC,CAACw5D,QAAF,GAAWj1C,CAAC,CAACi1C,QAAhV,EAAyVx5D,CAAC,CAACy5D,WAAF,GAAcl1C,CAAC,CAACk1C,WAAzW,EAAqXz5D,CAAC,CAAC05D,WAAF,GAAcn1C,CAAC,CAACm1C,WAArY,EAAiZ15D,CAAC,CAAC25D,WAAF,GAAcp1C,CAAC,CAACo1C,WAAja,EAA6a35D,CAAC,CAAC45D,WAAF,GAAcr1C,CAAC,CAACq1C,WAA7b,EAAyc55D,CAAC,CAAC65D,WAAF,GAAct1C,CAAC,CAACs1C,WAAzd,EAAqe75D,CAAC,CAAC85D,WAAF,GAAcv1C,CAAC,CAACu1C,WAArf,EAAigB95D,CAAC,CAAC+5D,YAAF,GAAex1C,CAAC,CAACw1C,YAAlhB,EAA+hB/5D,CAAC,CAACg6D,YAAF,GAAez1C,CAAC,CAACy1C,YAAhjB,EAA6jBh6D,CAAC,CAACm5D,UAAF,GAAa50C,CAAC,CAAC40C,UAA5kB,EAAulBn5D,CAAC,CAACi6D,aAAF,GAAgB11C,CAAC,CAAC01C,aAAzmB,EAAunBj6D,CAAC,CAACk6D,aAAF,GAAgB31C,CAAC,CAAC21C,aAAzoB,EAAupBl6D,CAAC,CAACm6D,aAAF,GAAgB51C,CAAC,CAAC41C,aAAzqB,EAAurBn6D,CAAC,CAACo6D,aAAF,GAAgB71C,CAAC,CAAC61C,aAAzsB,EAAutBp6D,CAAC,CAACq6D,SAAF,GAAY91C,CAAC,CAAC81C,SAAruB,EAA+uBr6D,CAAC,CAACs6D,YAAF,GAAe/1C,CAAC,CAAC+1C,YAAhwB,EAA6wBt6D,CAAC,CAACu6D,YAAF,GAAeh2C,CAAC,CAACg2C,YAA9xB,EAA2yBv6D,CAAC,CAACw6D,YAAF,GAAej2C,CAAC,CAACi2C,YAA5zB,EAAy0Bx6D,CAAC,CAACy6D,YAAF,GAAel2C,CAAC,CAACk2C,YAA11B,EAAu2Bz6D,CAAC,CAAC06D,YAAF,GAAen2C,CAAC,CAACm2C,YAAx3B,EAAq4B16D,CAAC,CAAC26D,YAAF,GAAep2C,CAAC,CAACo2C,YAAt5B,EAAm6B36D,CAAC,CAAC46D,aAAF,GAAgBr2C,CAAC,CAACq2C,aAAr7B,EAAm8B56D,CAAC,CAAC66D,aAAF,GAAgBt2C,CAAC,CAACs2C,aAAr9B,EAAm+B76D,CAAC,CAAC8X,IAAF,GAAOyM,CAAC,CAACzM,IAA5+B,EAAi/B9X,CAAC,CAAC86D,OAAF,GAAUv2C,CAAC,CAACu2C,OAA7/B,EAAqgC96D,CAAC,CAAC+6D,aAAF,GAAgBx2C,CAAC,CAACw2C,aAAvhC,EAAqiC/6D,CAA5iC,CAAA;YAAvB,CAAA;UAA96Y,CAAq/aJ,IAAr/a,CAA0/a,IAA1/a,EAA+/ag4D,CAAC,CAAC,QAAD,CAAhgb,EAA2gb,WAAa,IAAA,OAAOP,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAA3kb,EAA8kbi3D,CAAC,CAAC,QAAD,CAAD,CAAYN,MAA1lb,EAAimbpqD,SAAS,CAAC,CAAD,CAA1mb,EAA8mbA,SAAS,CAAC,CAAD,CAAvnb,EAA2nbA,SAAS,CAAC,CAAD,CAApob,EAAwobA,SAAS,CAAC,CAAD,CAAjpb,EAAqpb,4DAArpb,EAAktb,mDAAltb,CAAD,CAAA;CAAwwb,OAAzxb,EAA0xb;CAAC,QAAA,WAAA,EAAY,CAAb;CAAei3C,QAAAA,MAAM,EAAC,CAAtB;CAAwBiX,QAAAA,OAAO,EAAC,EAAhC;CAAmC5D,QAAAA,MAAM,EAAC,EAAA;CAA1C,OAA1xb,CAAjuQ;CAA0isB,MAAA,CAAA,EAAE,CAAC,UAASl3D,CAAT,EAAWP,CAAX,EAAaC,CAAb,EAAe;CAAC,QAAA,CAAC,UAASA,CAAT,EAAWukB,CAAX,EAAazkB,CAAb,EAAe8C,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuBozB,CAAvB,EAAyBxW,CAAzB,EAA2B;CAAC,UAAA,IAAIld,CAAC,GAACQ,CAAC,CAAC,QAAD,CAAD,CAAYg3D,MAAlB;eAAyBr3D,CAAC,GAAC,CAA3B;CAAA,cAA6BoY,CAAC,GAAC,IAAIvY,CAAJ,CAAMG,CAAN,CAA/B,CAAA;WAAwCoY,CAAC,CAACP,IAAF,CAAO,CAAP,CAAA,CAAA;WAAU/X,CAAC,CAACW,OAAF,GAAU;aAAC26D,IAAI,EAAC,UAASr7D,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB;eAAC,KAAI,IAAI8xC,CAAC,GAACruC,CAAC,CAAC,UAASvkB,CAAT,EAAWukB,CAAX,EAAa;CAACvkB,gBAAAA,CAAC,CAACvB,MAAF,GAASwB,CAAT,IAAY,CAAZ,KAAgB2C,CAAC,GAAC5C,CAAC,CAACvB,MAAF,IAAUwB,CAAC,GAACD,CAAC,CAACvB,MAAF,GAASwB,CAArB,CAAF,EAA0BD,CAAC,GAACF,CAAC,CAACoM,MAAF,CAAS,CAAClM,CAAD,EAAGqY,CAAH,CAAT,EAAezV,CAAf,CAA5C,CAAA,CAAA;;iBAA+D,KAAI,IAAIA,CAAJ,EAAMke,CAAC,GAAC,EAAR,EAAW8xC,CAAC,GAACruC,CAAC,GAACvkB,CAAC,CAAC45D,WAAH,GAAe55D,CAAC,CAAC25D,WAA/B,EAA2Cv5D,CAAC,GAAC,CAAjD,EAAmDA,CAAC,GAACJ,CAAC,CAACvB,MAAvD,EAA8D2B,CAAC,IAAEH,CAAjE,EAAmE6gB,CAAC,CAACta,IAAF,CAAOosD,CAAC,CAAChzD,IAAF,CAAOI,CAAP,EAASI,CAAT,CAAP,CAAA,CAAA;;CAAoB,gBAAA,OAAO0gB,CAAP,CAAA;CAAS,eAA7K,CAA8K9gB,CAAC,GAACF,CAAC,CAACs0D,QAAF,CAAWp0D,CAAX,CAAcA,GAAAA,CAAd,GAAgB,IAAIF,CAAJ,CAAME,CAAN,CAAhM,EAAyM8gB,CAAzM,CAAD,EAA6M,IAAE9gB,CAAC,CAACvB,MAAjN,CAAP,EAAgO8lB,CAAC,GAACzD,CAAlO,EAAoO1gB,CAAC,GAAC,IAAIN,CAAJ,CAAM8C,CAAN,CAAtO,EAA+O4wB,CAAC,GAACjP,CAAC,GAACnkB,CAAC,CAACq6D,YAAH,GAAgBr6D,CAAC,CAACo6D,YAApQ,EAAiRx9C,CAAC,GAAC,CAAvR,EAAyRA,CAAC,GAAC41C,CAAC,CAACn0D,MAA7R,EAAoSue,CAAC,EAArS,EAAwSwW,CAAC,CAAC5zB,IAAF,CAAOQ,CAAP,EAASwyD,CAAC,CAAC51C,CAAD,CAAV,EAAc,IAAEA,CAAhB,EAAkB,CAAC,CAAnB,CAAA,CAAA;;CAAsB,cAAA,OAAO5c,CAAP,CAAA;CAAS,aAAA;YAAzW,CAAA;UAA9E,CAA0bR,IAA1b,CAA+b,IAA/b,EAAocU,CAAC,CAAC,QAAD,CAArc,EAAgd,WAAa,IAAA,OAAO+2D,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAAhhB,EAAmhBL,CAAC,CAAC,QAAD,CAAD,CAAYg3D,MAA/hB,EAAsiBpqD,SAAS,CAAC,CAAD,CAA/iB,EAAmjBA,SAAS,CAAC,CAAD,CAA5jB,EAAgkBA,SAAS,CAAC,CAAD,CAAzkB,EAA6kBA,SAAS,CAAC,CAAD,CAAtlB,EAA0lB,yEAA1lB,EAAoqB,8DAApqB,CAAD,CAAA;CAAquB,OAAtvB,EAAuvB;CAACi3C,QAAAA,MAAM,EAAC,CAAR;CAAUqT,QAAAA,MAAM,EAAC,EAAA;CAAjB,OAAvvB,CAA5isB;CAAyztB,MAAA,CAAA,EAAE,CAAC,UAASzhD,CAAT,EAAW/V,CAAX,EAAaq4D,CAAb,EAAe;CAAC,QAAA,CAAC,UAAShgD,CAAT,EAAW/X,CAAX,EAAakzB,CAAb,EAAezzB,CAAf,EAAiBI,CAAjB,EAAmB8Z,CAAnB,EAAqB/Z,CAArB,EAAuBuH,CAAvB,EAAyBgoC,CAAzB,EAA2B;CAAC,UAAA,IAAIjc,CAAC,GAACzd,CAAC,CAAC,QAAD,CAAD,CAAYuhD,MAAlB;CAAA,cAAyBt3D,CAAC,GAAC+V,CAAC,CAAC,OAAD,CAA5B;CAAA,cAAsCwO,CAAC,GAACxO,CAAC,CAAC,UAAD,CAAzC;CAAA,cAAsDnT,CAAC,GAACmT,CAAC,CAAC,OAAD,CAAzD;CAAA,cAAmExV,CAAC,GAAC;CAAC6yD,YAAAA,IAAI,EAACpzD,CAAN;CAAQs7D,YAAAA,MAAM,EAAC/2C,CAAf;aAAiBg3C,GAAG,EAACxlD,CAAC,CAAC,OAAD,CAAA;YAA3F;eAAsGiH,CAAC,GAAC,EAAxG;CAAA,cAA2Gld,CAAC,GAAC,IAAI0zB,CAAJ,CAAMxW,CAAN,CAA7G,CAAA;;CAAsH,UAAA,SAAS8D,CAAT,CAAW9gB,CAAX,EAAa4C,CAAb,EAAe;aAAC,IAAIke,CAAC,GAACvgB,CAAC,CAACP,CAAC,GAACA,CAAC,IAAE,MAAN,CAAP;iBAAqB4yD,CAAC,GAAC,EAAvB,CAAA;aAA0B,OAAO9xC,CAAC,IAAE1gB,CAAC,CAAC,YAAD,EAAcJ,CAAd,EAAgB,sBAAhB,CAAJ,EAA4C;eAACgzD,MAAM,EAAC,UAAShzD,CAAT,EAAW;iBAAC,OAAOwzB,CAAC,CAAC4gC,QAAF,CAAWp0D,CAAX,MAAgBA,CAAC,GAAC,IAAIwzB,CAAJ,CAAMxzB,CAAN,CAAlB,CAA4B4yD,EAAAA,CAAC,CAACpsD,IAAF,CAAOxG,CAAP,CAA5B,EAAsCA,CAAC,CAACvB,MAAxC,EAA+C,IAAtD,CAAA;gBAApB;eAAgFy0D,MAAM,EAAC,UAASlzD,CAAT,EAAW;CAAC,gBAAA,IAAIukB,CAAC,GAACiP,CAAC,CAACtnB,MAAF,CAAS0mD,CAAT,CAAN;qBAAkBruC,CAAC,GAAC3hB,CAAC,GAAC,UAAS5C,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAe;CAAC4wB,kBAAAA,CAAC,CAAC4gC,QAAF,CAAW7vC,CAAX,CAAgBA,KAAAA,CAAC,GAAC,IAAIiP,CAAJ,CAAMjP,CAAN,CAAlB,CAA4BiP,EAAAA,CAAC,CAAC4gC,QAAF,CAAWxxD,CAAX,CAAgBA,KAAAA,CAAC,GAAC,IAAI4wB,CAAJ,CAAM5wB,CAAN,CAAlB,CAA5B,EAAwD2hB,CAAC,CAAC9lB,MAAF,GAASue,CAAT,GAAWuH,CAAC,GAACvkB,CAAC,CAACukB,CAAD,CAAd,GAAkBA,CAAC,CAAC9lB,MAAF,GAASue,CAAT,KAAauH,CAAC,GAACiP,CAAC,CAACtnB,MAAF,CAAS,CAACqY,CAAD,EAAGzkB,CAAH,CAAT,EAAekd,CAAf,CAAf,CAA1E,CAAA;;mBAA4G,KAAI,IAAI8D,CAAC,GAAC,IAAI0S,CAAJ,CAAMxW,CAAN,CAAN,EAAe41C,CAAC,GAAC,IAAIp/B,CAAJ,CAAMxW,CAAN,CAAjB,EAA0B5c,CAAC,GAAC,CAAhC,EAAkCA,CAAC,GAAC4c,CAApC,EAAsC5c,CAAC,EAAvC,EAA0C0gB,CAAC,CAAC1gB,CAAD,CAAD,GAAK,EAAGmkB,GAAAA,CAAC,CAACnkB,CAAD,CAAT,EAAawyD,CAAC,CAACxyD,CAAD,CAAD,GAAK,EAAGmkB,GAAAA,CAAC,CAACnkB,CAAD,CAAtB,CAAA;;CAA0B,kBAAA,OAAOwC,CAAC,GAAC5C,CAAC,CAACwzB,CAAC,CAACtnB,MAAF,CAAS,CAAC4U,CAAD,EAAGle,CAAH,CAAT,CAAD,CAAH,EAAqB5C,CAAC,CAACwzB,CAAC,CAACtnB,MAAF,CAAS,CAAC0mD,CAAD,EAAGhwD,CAAH,CAAT,CAAD,CAA7B,CAAA;kBAAhM,CAAgPke,CAAhP,EAAkPle,CAAlP,EAAoP2hB,CAApP,CAAD,GAAwPzD,CAAC,CAACyD,CAAD,CAA9Q,CAAA;CAAkR,gBAAA,OAAOquC,CAAC,GAAC,IAAF,EAAO5yD,CAAC,GAACukB,CAAC,CAAChlB,QAAF,CAAWS,CAAX,CAAD,GAAeukB,CAA9B,CAAA;CAAgC,eAAA;cAAxc,CAAA;CAA0c,WAAA;;CAAA,UAAA,SAASnkB,CAAT,GAAY;CAAC,YAAA,IAAIJ,CAAC,GAAC,EAAGiB,CAAAA,KAAH,CAASrB,IAAT,CAAcsN,SAAd,CAAyB0B,CAAAA,IAAzB,CAA8B,GAA9B,CAAN,CAAA;CAAyC,YAAA,MAAM,IAAItP,KAAJ,CAAU,CAACU,CAAD,EAAG,yBAAH,EAA6B,iDAA7B,CAAgF4O,CAAAA,IAAhF,CAAqF,IAArF,CAAV,CAAN,CAAA;CAA4G,WAAA;;WAAA9O,CAAC,CAACgY,IAAF,CAAO,CAAP,CAAA,EAAUugD,CAAC,CAACvF,UAAF,GAAa,UAAS9yD,CAAT,EAAW;aAAC,OAAO8gB,CAAC,CAAC9gB,CAAD,CAAR,CAAA;CAAY,WAA/C,EAAgDq4D,CAAC,CAACmD,UAAF,GAAa16C,CAA7D,EAA+Du3C,CAAC,CAACoD,WAAF,GAAc,UAASz7D,CAAT,EAAWukB,CAAX,EAAa;CAAC,YAAA,IAAG,CAACA,CAAD,IAAI,CAACA,CAAC,CAAC3kB,IAAV,EAAe,OAAO,IAAI4zB,CAAJ,CAAM5wB,CAAC,CAAC5C,CAAD,CAAP,CAAP,CAAA;;aAAmB,IAAG;CAACukB,cAAAA,CAAC,CAAC3kB,IAAF,CAAO,IAAP,EAAY,KAAK,CAAjB,EAAmB,IAAI4zB,CAAJ,CAAM5wB,CAAC,CAAC5C,CAAD,CAAP,CAAnB,CAAA,CAAA;cAAJ,CAAoC,OAAMA,CAAN,EAAQ;eAACukB,CAAC,CAACvkB,CAAD,CAAD,CAAA;CAAK,aAAA;YAA/K,CAAA;;CAAiL,UAAA,IAAI4yD,CAAJ;eAAM3yD,CAAC,GAAC,CAAC,mBAAD,EAAqB,cAArB,EAAoC,gBAApC,EAAqD,gBAArD,EAAsE,kBAAtE,EAAyF,YAAzF,EAAsG,cAAtG,EAAqH,qBAArH,EAA2I,QAA3I,CAAR;CAAA,cAA6J8Z,CAAC,GAAC,UAAS/Z,CAAT,EAAW;CAACq4D,YAAAA,CAAC,CAACr4D,CAAD,CAAD,GAAK,YAAU;CAACI,cAAAA,CAAC,CAAC,QAAD,EAAUJ,CAAV,EAAY,wBAAZ,CAAD,CAAA;cAAhB,CAAA;YAA3K,CAAA;;CAAoO,UAAA,KAAI4yD,CAAJ,IAAS3yD,CAAT,EAAW8Z,CAAC,CAAC9Z,CAAC,CAAC2yD,CAAD,CAAF,CAAD,CAAA;UAAxsC,CAAmtChzD,IAAntC,CAAwtC,IAAxtC,EAA6tCmW,CAAC,CAAC,QAAD,CAA9tC,EAAyuC,WAAa,IAAA,OAAOshD,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAAzyC,EAA4yCoV,CAAC,CAAC,QAAD,CAAD,CAAYuhD,MAAxzC,EAA+zCpqD,SAAS,CAAC,CAAD,CAAx0C,EAA40CA,SAAS,CAAC,CAAD,CAAr1C,EAAy1CA,SAAS,CAAC,CAAD,CAAl2C,EAAs2CA,SAAS,CAAC,CAAD,CAA/2C,EAAm3C,uEAAn3C,EAA27C,8DAA37C,CAAD,CAAA;CAA4/C,OAA7gD,EAA8gD;CAAC,QAAA,OAAA,EAAQ,CAAT;CAAW,QAAA,OAAA,EAAQ,CAAnB;CAAqB,QAAA,OAAA,EAAQ,CAA7B;CAA+B,QAAA,UAAA,EAAW,CAA1C;CAA4Ci3C,QAAAA,MAAM,EAAC,CAAnD;CAAqDqT,QAAAA,MAAM,EAAC,EAAA;CAA5D,OAA9gD,CAA3ztB;CAA04wB,MAAA,CAAA,EAAE,CAAC,UAAS/nB,CAAT,EAAWlvC,CAAX,EAAaP,CAAb,EAAe;CAAC,QAAA,CAAC,UAASA,CAAT,EAAW8gB,CAAX,EAAa8xC,CAAb,EAAexyD,CAAf,EAAiBozB,CAAjB,EAAmB1zB,CAAnB,EAAqBG,CAArB,EAAuBoY,CAAvB,EAAyB5Q,CAAzB,EAA2B;CAAC,UAAA,IAAI8c,CAAC,GAACkrB,CAAC,CAAC,WAAD,CAAP,CAAA;;CAAqB,UAAA,SAAS7sC,CAAT,CAAW5C,CAAX,EAAaukB,CAAb,EAAe;aAACvkB,CAAC,CAACukB,CAAC,IAAE,CAAJ,CAAD,IAAS,GAAKA,IAAAA,CAAC,GAAC,EAAhB,EAAmBvkB,CAAC,CAAC,EAAIukB,IAAAA,CAAC,GAAC,EAAF,KAAO,CAAP,IAAU,CAAd,CAAD,CAAD,GAAoBA,CAAvC,CAAA;;CAAyC,YAAA,KAAI,IAAI3hB,CAAC,GAAC,UAAN,EAAiBke,CAAC,GAAC,CAAC,SAApB,EAA8B8xC,CAAC,GAAC,CAAC,UAAjC,EAA4CxyD,CAAC,GAAC,SAA9C,EAAwDozB,CAAC,GAAC,CAA9D,EAAgEA,CAAC,GAACxzB,CAAC,CAACvB,MAApE,EAA2E+0B,CAAC,IAAE,EAA9E,EAAiF;eAAC,IAAIxW,CAAC,GAACpa,CAAN;mBAAQ9C,CAAC,GAACghB,CAAV;mBAAY7gB,CAAC,GAAC2yD,CAAd;mBAAgBv6C,CAAC,GAACjY,CAAlB;mBAAoBwC,CAAC,GAACtC,CAAC,CAACsC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,SAAnB,CAAvB;mBAAqDpzB,CAAC,GAACE,CAAC,CAACF,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAxD;mBAAuFo/B,CAAC,GAACtyD,CAAC,CAACsyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,SAAnB,CAA1F;mBAAwH1S,CAAC,GAACxgB,CAAC,CAACwgB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAA3H,CAAA;CAA2J5wB,cAAAA,CAAC,GAACtC,CAAC,CAACsC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,SAAnB,CAAH,EAAiCpzB,CAAC,GAACE,CAAC,CAACF,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,UAAnB,CAApC,EAAmEo/B,CAAC,GAACtyD,CAAC,CAACsyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAAtE,EAAsG1S,CAAC,GAACxgB,CAAC,CAACwgB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,QAApB,CAAzG,EAAuI5wB,CAAC,GAACtC,CAAC,CAACsC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,UAAlB,CAA1I,EAAwKpzB,CAAC,GAACE,CAAC,CAACF,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAA3K,EAA2Mo/B,CAAC,GAACtyD,CAAC,CAACsyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,KAArB,CAA9M,EAA0O1S,CAAC,GAACxgB,CAAC,CAACwgB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAA7O,EAA8Q5wB,CAAC,GAACtC,CAAC,CAACsC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,UAAnB,CAAjR,EAAgTpzB,CAAC,GAACE,CAAC,CAACF,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,QAArB,CAAnT,EAAkVo/B,CAAC,GAACtyD,CAAC,CAACsyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAArV,EAAsX5wB,CAAC,GAAC7C,CAAC,CAAC6C,CAAD,EAAGke,CAAC,GAACxgB,CAAC,CAACwgB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,UAApB,CAAN,EAAsCo/B,CAAtC,EAAwCxyD,CAAxC,EAA0CJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAA3C,EAAiD,CAAjD,EAAmD,CAAC,SAApD,CAAzX,EAAwbpzB,CAAC,GAACL,CAAC,CAACK,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,UAAnB,CAA3b,EAA0do/B,CAAC,GAAC7yD,CAAC,CAAC6yD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,SAApB,CAA7d,EAA4f1S,CAAC,GAAC/gB,CAAC,CAAC+gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAA/f,EAA8hB5wB,CAAC,GAAC7C,CAAC,CAAC6C,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,SAAnB,CAAjiB,EAA+jBpzB,CAAC,GAACL,CAAC,CAACK,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,QAAnB,CAAlkB,EAA+lBo/B,CAAC,GAAC7yD,CAAC,CAAC6yD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,SAArB,CAAlmB,EAAkoB1S,CAAC,GAAC/gB,CAAC,CAAC+gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAroB,EAAoqB5wB,CAAC,GAAC7C,CAAC,CAAC6C,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,SAAlB,CAAvqB,EAAosBpzB,CAAC,GAACL,CAAC,CAACK,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,CAAC,UAApB,CAAvsB,EAAuuBo/B,CAAC,GAAC7yD,CAAC,CAAC6yD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAA1uB,EAAywB1S,CAAC,GAAC/gB,CAAC,CAAC+gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,UAAnB,CAA5wB,EAA2yB5wB,CAAC,GAAC7C,CAAC,CAAC6C,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,CAAC,UAApB,CAA9yB,EAA80BpzB,CAAC,GAACL,CAAC,CAACK,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,QAAnB,CAAj1B,EAA82Bo/B,CAAC,GAAC7yD,CAAC,CAAC6yD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,UAAnB,CAAj3B,EAAg5B5wB,CAAC,GAACzC,CAAC,CAACyC,CAAD,EAAGke,CAAC,GAAC/gB,CAAC,CAAC+gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAAN,EAAuCo/B,CAAvC,EAAyCxyD,CAAzC,EAA2CJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAA5C,EAAkD,CAAlD,EAAoD,CAAC,MAArD,CAAn5B,EAAg9BpzB,CAAC,GAACD,CAAC,CAACC,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAAn9B,EAAm/Bo/B,CAAC,GAACzyD,CAAC,CAACyyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,UAApB,CAAt/B,EAAshC1S,CAAC,GAAC3gB,CAAC,CAAC2gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,QAArB,CAAzhC,EAAwjC5wB,CAAC,GAACzC,CAAC,CAACyC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,UAAnB,CAA3jC,EAA0lCpzB,CAAC,GAACD,CAAC,CAACC,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,UAAnB,CAA7lC,EAA4nCo/B,CAAC,GAACzyD,CAAC,CAACyyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAA/nC,EAA8pC1S,CAAC,GAAC3gB,CAAC,CAAC2gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAAjqC,EAAksC5wB,CAAC,GAACzC,CAAC,CAACyC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,SAAnB,CAArsC,EAAmuCpzB,CAAC,GAACD,CAAC,CAACC,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAtuC,EAAqwCo/B,CAAC,GAACzyD,CAAC,CAACyyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAxwC,EAAuyC1S,CAAC,GAAC3gB,CAAC,CAAC2gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,QAAnB,CAA1yC,EAAu0C5wB,CAAC,GAACzC,CAAC,CAACyC,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,SAAnB,CAA10C,EAAw2CpzB,CAAC,GAACD,CAAC,CAACC,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,SAArB,CAA32C,EAA24Co/B,CAAC,GAACzyD,CAAC,CAACyyD,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,SAApB,CAA94C,EAA66C5wB,CAAC,GAACqX,CAAC,CAACrX,CAAD,EAAGke,CAAC,GAAC3gB,CAAC,CAAC2gB,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAN,EAAqCo/B,CAArC,EAAuCxyD,CAAvC,EAAyCJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAA1C,EAAgD,CAAhD,EAAkD,CAAC,SAAnD,CAAh7C,EAA8+CpzB,CAAC,GAAC6Z,CAAC,CAAC7Z,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,UAAnB,CAAj/C,EAAghDo/B,CAAC,GAAC34C,CAAC,CAAC24C,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAAnhD,EAAojD1S,CAAC,GAAC7G,CAAC,CAAC6G,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,QAApB,CAAvjD,EAAqlD5wB,CAAC,GAACqX,CAAC,CAACrX,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,CAAjB,EAAmB,UAAnB,CAAxlD,EAAunDpzB,CAAC,GAAC6Z,CAAC,CAAC7Z,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAA1nD,EAA0pDo/B,CAAC,GAAC34C,CAAC,CAAC24C,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,OAArB,CAA7pD,EAA2rD1S,CAAC,GAAC7G,CAAC,CAAC6G,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAA9rD,EAA8tD5wB,CAAC,GAACqX,CAAC,CAACrX,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,UAAlB,CAAjuD,EAA+vDpzB,CAAC,GAAC6Z,CAAC,CAAC7Z,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,QAArB,CAAlwD,EAAiyDo/B,CAAC,GAAC34C,CAAC,CAAC24C,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,UAApB,CAApyD,EAAo0D1S,CAAC,GAAC7G,CAAC,CAAC6G,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,UAApB,CAAv0D,EAAu2D5wB,CAAC,GAACqX,CAAC,CAACrX,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,EAASJ,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,CAAhB,EAAkB,CAAC,SAAnB,CAA12D,EAAw4DpzB,CAAC,GAAC6Z,CAAC,CAAC7Z,CAAD,EAAGwC,CAAH,EAAKke,CAAL,EAAO8xC,CAAP,EAAS5yD,CAAC,CAACwzB,CAAC,GAAC,EAAH,CAAV,EAAiB,EAAjB,EAAoB,CAAC,UAArB,CAA34D,EAA46Do/B,CAAC,GAAC34C,CAAC,CAAC24C,CAAD,EAAGxyD,CAAH,EAAKwC,CAAL,EAAOke,CAAP,EAAS9gB,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,SAAnB,CAA/6D,EAA68D1S,CAAC,GAAC7G,CAAC,CAAC6G,CAAD,EAAG8xC,CAAH,EAAKxyD,CAAL,EAAOwC,CAAP,EAAS5C,CAAC,CAACwzB,CAAC,GAAC,CAAH,CAAV,EAAgB,EAAhB,EAAmB,CAAC,SAApB,CAAh9D,EAA++D5wB,CAAC,GAAC1C,CAAC,CAAC0C,CAAD,EAAGoa,CAAH,CAAl/D,EAAw/D8D,CAAC,GAAC5gB,CAAC,CAAC4gB,CAAD,EAAGhhB,CAAH,CAA3/D,EAAigE8yD,CAAC,GAAC1yD,CAAC,CAAC0yD,CAAD,EAAG3yD,CAAH,CAApgE,EAA0gEG,CAAC,GAACF,CAAC,CAACE,CAAD,EAAGiY,CAAH,CAA7gE,CAAA;CAAmhE,aAAA;;aAAA,OAAOxQ,KAAK,CAACjF,CAAD,EAAGke,CAAH,EAAK8xC,CAAL,EAAOxyD,CAAP,CAAZ,CAAA;CAAsB,WAAA;;CAAA,UAAA,SAAS4c,CAAT,CAAWhd,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuB;CAAC,YAAA,OAAOF,CAAC,CAAC,CAACqkB,CAAC,GAACrkB,CAAC,CAACA,CAAC,CAACqkB,CAAD,EAAGvkB,CAAH,CAAF,EAAQE,CAAC,CAAC4gB,CAAD,EAAG1gB,CAAH,CAAT,CAAJ,KAAsBwyD,CAAtB,GAAwBruC,CAAC,KAAG,EAAA,GAAGquC,CAAhC,EAAkChwD,CAAlC,CAAR,CAAA;CAA6C,WAAA;;CAAA,UAAA,SAAStC,CAAT,CAAWN,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuBozB,CAAvB,EAAyB;aAAC,OAAOxW,CAAC,CAACuH,CAAC,GAAC3hB,CAAF,GAAI,CAAC2hB,CAAD,GAAGzD,CAAR,EAAU9gB,CAAV,EAAYukB,CAAZ,EAAcquC,CAAd,EAAgBxyD,CAAhB,EAAkBozB,CAAlB,CAAR,CAAA;CAA6B,WAAA;;CAAA,UAAA,SAASzzB,CAAT,CAAWC,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuBozB,CAAvB,EAAyB;aAAC,OAAOxW,CAAC,CAACuH,CAAC,GAACzD,CAAF,GAAIle,CAAC,GAAC,CAACke,CAAR,EAAU9gB,CAAV,EAAYukB,CAAZ,EAAcquC,CAAd,EAAgBxyD,CAAhB,EAAkBozB,CAAlB,CAAR,CAAA;CAA6B,WAAA;;CAAA,UAAA,SAASrzB,CAAT,CAAWH,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuBozB,CAAvB,EAAyB;CAAC,YAAA,OAAOxW,CAAC,CAACuH,CAAC,GAAC3hB,CAAF,GAAIke,CAAL,EAAO9gB,CAAP,EAASukB,CAAT,EAAWquC,CAAX,EAAaxyD,CAAb,EAAeozB,CAAf,CAAR,CAAA;CAA0B,WAAA;;CAAA,UAAA,SAASvZ,CAAT,CAAWja,CAAX,EAAaukB,CAAb,EAAe3hB,CAAf,EAAiBke,CAAjB,EAAmB8xC,CAAnB,EAAqBxyD,CAArB,EAAuBozB,CAAvB,EAAyB;CAAC,YAAA,OAAOxW,CAAC,CAACpa,CAAC,IAAE2hB,CAAC,GAAC,CAACzD,CAAL,CAAF,EAAU9gB,CAAV,EAAYukB,CAAZ,EAAcquC,CAAd,EAAgBxyD,CAAhB,EAAkBozB,CAAlB,CAAR,CAAA;CAA6B,WAAA;;CAAA,UAAA,SAAStzB,CAAT,CAAWF,CAAX,EAAaukB,CAAb,EAAe;aAAC,IAAI3hB,CAAC,GAAC,CAAC,KAAA,GAAM5C,CAAP,KAAW,KAAA,GAAMukB,CAAjB,CAAN,CAAA;CAA0B,YAAA,OAAM,CAACvkB,CAAC,IAAE,EAAJ,KAASukB,CAAC,IAAE,EAAZ,CAAiB3hB,IAAAA,CAAC,IAAE,EAApB,CAAA,IAAyB,EAAzB,GAA4B,QAAMA,CAAxC,CAAA;CAA0C,WAAA;;CAAArC,UAAAA,CAAC,CAACG,OAAF,GAAU,UAASV,CAAT,EAAW;aAAC,OAAOukB,CAAC,CAAC82C,IAAF,CAAOr7D,CAAP,EAAS4C,CAAT,EAAW,EAAX,CAAP,CAAA;YAAtB,CAAA;UAAlvF,CAAgyFhD,IAAhyF,CAAqyF,IAAryF,EAA0yF6vC,CAAC,CAAC,QAAD,CAA3yF,EAAszF,WAAa,IAAA,OAAO4nB,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAAt3F,EAAy3F8uC,CAAC,CAAC,QAAD,CAAD,CAAY6nB,MAAr4F,EAA44FpqD,SAAS,CAAC,CAAD,CAAr5F,EAAy5FA,SAAS,CAAC,CAAD,CAAl6F,EAAs6FA,SAAS,CAAC,CAAD,CAA/6F,EAAm7FA,SAAS,CAAC,CAAD,CAA57F,EAAg8F,qEAAh8F,EAAsgG,8DAAtgG,CAAD,CAAA;CAAukG,OAAxlG,EAAylG;CAAC,QAAA,WAAA,EAAY,CAAb;CAAei3C,QAAAA,MAAM,EAAC,CAAtB;CAAwBqT,QAAAA,MAAM,EAAC,EAAA;CAA/B,OAAzlG,CAA54wB;CAAyg3B,MAAA,CAAA,EAAE,CAAC,UAASx3D,CAAT,EAAWqY,CAAX,EAAakM,CAAb,EAAe;CAAC,QAAA,CAAC,UAASvkB,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB8xC,CAAjB,EAAmBxyD,CAAnB,EAAqBozB,CAArB,EAAuBxW,CAAvB,EAAyB/c,CAAzB,EAA2B;;CAAOoY,UAAAA,CAAC,CAAC3X,OAAF,GAAa,UAASV,CAAT,EAAW;aAAC,KAAI,IAAIukB,CAAJ,EAAM3hB,CAAC,GAAC,IAAIiF,KAAJ,CAAU7H,CAAV,CAAR,EAAqB8gB,CAAC,GAAC,CAA3B,EAA6BA,CAAC,GAAC9gB,CAA/B,EAAiC8gB,CAAC,EAAlC,EAAqC,CAAI,KAAA,CAAA,GAAEA,CAAN,CAAWyD,KAAAA,CAAC,GAAC,UAAWnlB,GAAAA,IAAI,CAAC4Y,MAAL,EAAxB,CAAuCpV,EAAAA,CAAC,CAACke,CAAD,CAAD,GAAKyD,CAAC,MAAI,CAAC,CAAA,GAAEzD,CAAH,KAAO,CAAX,CAAD,GAAe,GAA3D,CAAA;;CAA+D,YAAA,OAAOle,CAAP,CAAA;YAA7H,CAAA;UAAlC,CAA0KhD,IAA1K,CAA+K,IAA/K,EAAoLI,CAAC,CAAC,QAAD,CAArL,EAAgM,WAAa,IAAA,OAAOq3D,IAApB,GAAyBA,IAAzB,GAA8B,WAAA,IAAa,OAAO12D,MAApB,GAA2BA,MAA3B,GAAkC,EAAhQ,EAAmQX,CAAC,CAAC,QAAD,CAAD,CAAYs3D,MAA/Q,EAAsRpqD,SAAS,CAAC,CAAD,CAA/R,EAAmSA,SAAS,CAAC,CAAD,CAA5S,EAAgTA,SAAS,CAAC,CAAD,CAAzT,EAA6TA,SAAS,CAAC,CAAD,CAAtU,EAA0U,qEAA1U,EAAgZ,8DAAhZ,CAAD,CAAA;CAAid,OAAle,EAAme;CAACi3C,QAAAA,MAAM,EAAC,CAAR;CAAUqT,QAAAA,MAAM,EAAC,EAAA;CAAjB,OAAne,CAA3g3B;CAAog4B,MAAA,CAAA,EAAE,CAAC,UAASl3D,CAAT,EAAWP,CAAX,EAAaC,CAAb,EAAe;CAAC,QAAA,CAAC,UAASA,CAAT,EAAWukB,CAAX,EAAa3hB,CAAb,EAAeke,CAAf,EAAiB8xC,CAAjB,EAAmB51C,CAAnB,EAAqBld,CAArB,EAAuBG,CAAvB,EAAyBoY,CA