@cubejs-client/core 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-core.js","sources":["../src/time.js","../src/utils.js","../src/ResultSet.js","../src/SqlQuery.js","../src/Meta.js","../src/ProgressResult.js","../src/HttpTransport.js","../src/RequestError.js","../src/index.js"],"sourcesContent":["import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport duration from 'dayjs/plugin/duration';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport en from 'dayjs/locale/en';\n\ndayjs.extend(quarterOfYear);\ndayjs.extend(duration);\ndayjs.extend(isoWeek);\n\nexport const GRANULARITIES = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity) => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr) {\n const interval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate, interval, origin) {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from, to, granularity) => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n * @protected\n * @param {string} interval\n * @returns {string}\n */\nexport const diffTimeUnitForInterval = (interval) => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1, i2) => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr) => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DEFAULT_GRANULARITY } from './time';\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, filter, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n pluck, mergeAll, flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\n\nconst groupByToPairs = (keyFn) => {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr) => {\n const res = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nclass ResultSet {\n static measureFromAxis(axisValues) {\n return axisValues[axisValues.length - 1];\n }\n\n static timeDimensionMember(td) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n static deserialize(data, options = {}) {\n return new ResultSet(data.loadResponse, options);\n }\n\n constructor(loadResponse, options = {}) {\n this.loadResponse = loadResponse;\n\n if (this.loadResponse.queryType != null) {\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse.pivotQuery = {\n ...loadResponse.query,\n queryType: this.queryType\n };\n this.loadResponses = [loadResponse];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n drillDown(drillDownLocator, pivotConfig) {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { query } = this.loadResponses[0];\n const { xValues = [], yValues = [] } = drillDownLocator;\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values = [];\n normalizedPivotConfig.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName] && measures[measureName].drillMembers || []).length) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n const range = dayRange(value, value).snapTo(granularity);\n const originalTimeDimension = query.timeDimensions.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex, annotations) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || pivotConfig.fillWithValue || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions[0],\n resultIndex, loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n totalRows() {\n return this.loadResponses[0].total;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nclass Meta {\n constructor(metaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n membersForQuery(query, memberType) {\n return unnest(this.cubes.map((c) => c[memberType])).sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members = cube[key];\n\n if (key === 'timeDimensions') {\n members = cube.dimensions.filter((m) => m.type === 'time');\n }\n\n memo[key] = [\n ...memo[key],\n {\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members\n },\n ];\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n }\n );\n }\n\n resolveMember(memberName, memberType) {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member;\n }\n\n defaultTimeDimensionNameFor(memberName) {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n filterOperatorsForMember(memberName, memberType) {\n const member = this.resolveMember(memberName, memberType);\n\n return operators[member.type] || operators.string;\n }\n}\n\nexport default Meta;\n","export default class ProgressResult {\n constructor(progressResponse) {\n this.progressResponse = progressResponse;\n }\n\n stage() {\n return this.progressResponse.stage;\n }\n\n timeElapsed() {\n return this.progressResponse.timeElapsed;\n }\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\n\nclass HttpTransport {\n constructor({ authorization, apiUrl, method, headers = {}, credentials }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n }\n\n request(method, { baseRequestId, ...params }) {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params && Object.keys(params)\n .map(k => ({ [k]: typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k] }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${method}${searchParams.toString().length ? `?${searchParams}` : ''}`;\n\n const requestMethod = this.method || (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${method}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers\n },\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubeApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n this.castNumerics = typeof options.castNumerics === 'boolean' ? options.castNumerics : false;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n const loadImpl = async (response, next) => {\n const requestInstance = await requestPromise;\n\n const subscribeNext = async () => {\n if (options.subscribe && !unsubscribed) {\n if (requestInstance.unsubscribe) {\n return next();\n } else {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n }\n return next();\n }\n return null;\n };\n\n if (options.subscribe && !skipAuthorizationUpdate) {\n await this.updateTransportAuthorization();\n }\n\n skipAuthorizationUpdate = false;\n\n if (response.status === 502) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response, options = {}) {\n if (\n response.results.length\n ) {\n if (options.castNumerics) {\n response.results.forEach((result) => {\n const numericMembers = Object.entries({\n ...result.annotation.measures,\n ...result.annotation.dimensions,\n }).map(([k, v]) => {\n if (v.type === 'number') {\n return k;\n }\n\n return undefined;\n }).filter(Boolean);\n\n result.data = result.data.map((row) => {\n numericMembers.forEach((key) => {\n if (row[key] != null) {\n row[key] = Number(row[key]);\n }\n });\n\n return row;\n });\n });\n }\n\n if (response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n }\n\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubeApi(apiToken, options);\n\nexport { CubeApi, HttpTransport, ResultSet, RequestError, Meta };\nexport * from './utils';\nexport * from './time';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","_objectSpread","en","weekStart","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","dayRange","from","to","value","results","start","end","isBefore","isSame","push","add","endOf","parseSqlInterval","intervalStr","interval","parts","split","i","length","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isAfter","timeSeriesFromCustomInterval","intervalParsed","offset","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","includes","Array","isArray","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","_oldQuery$timeDimensi","_oldQuery$timeDimensi2","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","concat","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref8","_ref9","memberId","currentOrder","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","groupByToPairs","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","xValues","_drillDownLocator$yVa","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","annotation","measureName","_Object$keys","_Object$keys2","drillMembers","_ref5","_member$split","_member$split2","cubeName","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","_ref10","obj","axisValues","axis","resultIndex","measure","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","annotations","timeDimensionMember","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","_ref11","measureValue","fillWithValue","fillMissingDates","rows","byXValues","groupBy","_ref12","xGrouped","yValuesMap","_ref13","_ref14","_ref15","allYValues","measureOnX","_ref16","_ref17","yGrouped","_ref18","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","pivotedRows","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref19","e","a","m","_ref20","_ref21","_ref22","tablePivot","isMeasuresPresent","_ref23","_ref24","_ref25","tableColumns","pluck","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref26","type","_ref27","_ref28","currentItem","children","toColumns","item","path","_ref29","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","mergeAll","uniq","_ref30","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","decompose","_this5","serialize","deserialize","defaultPivotConfig","_query$measures","_query$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","subscribe","callback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","sent","abrupt","stop","RequestError","_Error","_inherits","_super","_createSuper","message","response","status","call","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","t0","t1","t2","_x","_x2","CubeApi","apiToken","transport","pollInterval","castNumerics","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","_callee2","requestInstance","_callee2$","_context2","unsubscribe","loadImpl","_callee5","subscribeNext","continueWait","text","_callee5$","_context5","_callee3","_callee3$","_context3","setTimeout","_callee4","wait","_callee4$","_context4","_x5","parse","progressCallback","_x3","_x4","_unsubscribe","_callee6","_callee6$","_context6","_updateTransportAuthorization","_callee8","_callee8$","_context8","_callee7","token","_callee7$","_context7","finish","_x6","_x7","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","r","load","_this6","dryRun","_this7"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-core.js","sources":["../src/time.js","../src/utils.js","../src/ResultSet.js","../src/SqlQuery.js","../src/Meta.js","../src/ProgressResult.js","../src/HttpTransport.js","../src/RequestError.js","../src/index.js"],"sourcesContent":["import dayjs from 'dayjs';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport duration from 'dayjs/plugin/duration';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport en from 'dayjs/locale/en';\n\ndayjs.extend(quarterOfYear);\ndayjs.extend(duration);\ndayjs.extend(isoWeek);\n\nexport const GRANULARITIES = [\n { name: undefined, title: 'w/o grouping' },\n { name: 'second', title: 'Second' },\n { name: 'minute', title: 'Minute' },\n { name: 'hour', title: 'Hour' },\n { name: 'day', title: 'Day' },\n { name: 'week', title: 'Week' },\n { name: 'month', title: 'Month' },\n { name: 'quarter', title: 'Quarter' },\n { name: 'year', title: 'Year' },\n];\n\nexport const DEFAULT_GRANULARITY = 'day';\n\n// When granularity is week, weekStart Value must be 1. However, since the client can change it globally\n// (https://day.js.org/docs/en/i18n/changing-locale) So the function below has been added.\nexport const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });\n\nexport const TIME_SERIES = {\n day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),\n month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),\n year: (range) => range.snapTo('year').by('y').map(d => d.format('YYYY-01-01T00:00:00.000')),\n hour: (range) => range.by('h').map(d => d.format('YYYY-MM-DDTHH:00:00.000')),\n minute: (range) => range.by('m').map(d => d.format('YYYY-MM-DDTHH:mm:00.000')),\n second: (range) => range.by('s').map(d => d.format('YYYY-MM-DDTHH:mm:ss.000')),\n week: (range) => range.snapTo('week').by('w').map(d => d.startOf('week').format('YYYY-MM-DDT00:00:00.000')),\n quarter: (range) => range.snapTo('quarter').by('quarter').map(d => d.startOf('quarter').format(\n 'YYYY-MM-DDT00:00:00.000'\n )),\n};\n\nexport const isPredefinedGranularity = (granularity) => !!TIME_SERIES[granularity];\n\nexport const DateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/;\nexport const LocalDateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z?$/;\n\nexport const dayRange = (from, to) => ({\n by: (value) => {\n const results = [];\n\n let start = internalDayjs(from);\n const end = internalDayjs(to);\n\n while (start.isBefore(end) || start.isSame(end)) {\n results.push(start);\n start = start.add(1, value);\n }\n\n return results;\n },\n snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),\n start: internalDayjs(from),\n end: internalDayjs(to),\n});\n\n/**\n * Parse PostgreSQL-like interval string into object\n * E.g. '2 years 15 months 100 weeks 99 hours 15 seconds'\n * Negative units are also supported\n * E.g. '-2 months 5 days -10 hours'\n *\n * TODO: It's copy/paste of parseSqlInterval from @cubejs-backend/shared [time.ts]\n * It's not referenced to omit imports of moment.js staff.\n * Probably one day we should choose one implementation and reuse it in other places.\n */\nexport function parseSqlInterval(intervalStr) {\n const interval = {};\n const parts = intervalStr.split(/\\s+/);\n\n for (let i = 0; i < parts.length; i += 2) {\n const value = parseInt(parts[i], 10);\n const unit = parts[i + 1];\n\n // Remove ending 's' (e.g., 'days' -> 'day')\n const singularUnit = unit.endsWith('s') ? unit.slice(0, -1) : unit;\n interval[singularUnit] = value;\n }\n\n return interval;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of addInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function addInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.add(value, key);\n });\n\n return res;\n}\n\n/**\n * Adds interval to provided date.\n * TODO: It's copy/paste of subtractInterval from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n * @param {dayjs} date\n * @param interval\n * @returns {dayjs}\n */\nexport function subtractInterval(date, interval) {\n let res = date.clone();\n\n Object.entries(interval).forEach(([key, value]) => {\n res = res.subtract(value, key);\n });\n\n return res;\n}\n\n/**\n * Returns the closest date prior to date parameter aligned with the origin point\n * TODO: It's copy/paste of alignToOrigin from @cubejs-backend/shared [time.ts]\n * but operates with dayjs instead of moment.js\n */\nfunction alignToOrigin(startDate, interval, origin) {\n let alignedDate = startDate.clone();\n let intervalOp;\n let isIntervalNegative = false;\n\n let offsetDate = addInterval(origin, interval);\n\n // The easiest way to check the interval sign\n if (offsetDate.isBefore(origin)) {\n isIntervalNegative = true;\n }\n\n offsetDate = origin.clone();\n\n if (startDate.isBefore(origin)) {\n intervalOp = isIntervalNegative ? addInterval : subtractInterval;\n\n while (offsetDate.isAfter(startDate)) {\n offsetDate = intervalOp(offsetDate, interval);\n }\n alignedDate = offsetDate;\n } else {\n intervalOp = isIntervalNegative ? subtractInterval : addInterval;\n\n while (offsetDate.isBefore(startDate)) {\n alignedDate = offsetDate.clone();\n offsetDate = intervalOp(offsetDate, interval);\n }\n\n if (offsetDate.isSame(startDate)) {\n alignedDate = offsetDate;\n }\n }\n\n return alignedDate;\n}\n\n/**\n * Returns the time series points for the custom interval\n * TODO: It's almost a copy/paste of timeSeriesFromCustomInterval from\n * @cubejs-backend/shared [time.ts] but operates with dayjs instead of moment.js\n */\nexport const timeSeriesFromCustomInterval = (from, to, granularity) => {\n const intervalParsed = parseSqlInterval(granularity.interval);\n const start = internalDayjs(from);\n const end = internalDayjs(to);\n let origin = granularity.origin ? internalDayjs(granularity.origin) : internalDayjs().startOf('year');\n if (granularity.offset) {\n origin = addInterval(origin, parseSqlInterval(granularity.offset));\n }\n let alignedStart = alignToOrigin(start, intervalParsed, origin);\n\n const dates = [];\n\n while (alignedStart.isBefore(end) || alignedStart.isSame(end)) {\n dates.push(alignedStart.format('YYYY-MM-DDTHH:mm:ss.000'));\n alignedStart = addInterval(alignedStart, intervalParsed);\n }\n\n return dates;\n};\n\n/**\n * Returns the lowest time unit for the interval\n * @protected\n * @param {string} interval\n * @returns {string}\n */\nexport const diffTimeUnitForInterval = (interval) => {\n if (/second/i.test(interval)) {\n return 'second';\n } else if (/minute/i.test(interval)) {\n return 'minute';\n } else if (/hour/i.test(interval)) {\n return 'hour';\n } else if (/day/i.test(interval)) {\n return 'day';\n } else if (/week/i.test(interval)) {\n return 'day';\n } else if (/month/i.test(interval)) {\n return 'month';\n } else if (/quarter/i.test(interval)) {\n return 'month';\n } else /* if (/year/i.test(interval)) */ {\n return 'year';\n }\n};\n\nconst granularityOrder = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nexport const minGranularityForIntervals = (i1, i2) => {\n const g1 = diffTimeUnitForInterval(i1);\n const g2 = diffTimeUnitForInterval(i2);\n const g1pos = granularityOrder.indexOf(g1);\n const g2pos = granularityOrder.indexOf(g2);\n\n if (g1pos > g2pos) {\n return g1;\n }\n\n return g2;\n};\n\nexport const granularityFor = (dateStr) => {\n const dayjsDate = internalDayjs(dateStr);\n const month = dayjsDate.month();\n const date = dayjsDate.date();\n const hours = dayjsDate.hour();\n const minutes = dayjsDate.minute();\n const seconds = dayjsDate.second();\n const milliseconds = dayjsDate.millisecond();\n const weekDay = dayjsDate.isoWeekday();\n\n if (\n month === 0 &&\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'year';\n } else if (\n date === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'month';\n } else if (\n weekDay === 1 &&\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'week';\n } else if (\n hours === 0 &&\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'day';\n } else if (\n minutes === 0 &&\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'hour';\n } else if (\n seconds === 0 &&\n milliseconds === 0\n ) {\n return 'minute';\n } else if (\n milliseconds === 0\n ) {\n return 'second';\n }\n\n return 'second'; // TODO return 'millisecond';\n};\n","import { clone, equals, fromPairs, indexBy, prop, toPairs } from 'ramda';\nimport { DEFAULT_GRANULARITY } from './time';\n\nexport function removeEmptyQueryFields(_query) {\n const query = _query || {};\n\n return fromPairs(\n toPairs(query)\n .map(([key, value]) => {\n if (\n ['measures', 'dimensions', 'segments', 'timeDimensions', 'filters'].includes(key)\n ) {\n if (Array.isArray(value) && value.length === 0) {\n return null;\n }\n }\n\n if (key === 'order' && value) {\n if (Array.isArray(value) && !value.length) {\n return null;\n } else if (!Object.keys(value).length) {\n return null;\n }\n }\n\n return [key, value];\n })\n .filter(Boolean)\n );\n}\n\nexport function validateQuery(_query) {\n const query = _query || {};\n\n return removeEmptyQueryFields({\n ...query,\n filters: (query.filters || []).filter((f) => f.operator),\n timeDimensions: (query.timeDimensions || []).filter(\n (td) => !(!td.dateRange && !td.granularity)\n ),\n });\n}\n\nexport function areQueriesEqual(query1 = {}, query2 = {}) {\n return (\n equals(\n Object.entries((query1 && query1.order) || {}),\n Object.entries((query2 && query2.order) || {})\n ) && equals(query1, query2)\n );\n}\n\nexport function defaultOrder(query) {\n const granularity = (query.timeDimensions || []).find((d) => d.granularity);\n\n if (granularity) {\n return {\n [granularity.dimension]: 'asc',\n };\n } else if (\n (query.measures || []).length > 0 &&\n (query.dimensions || []).length > 0\n ) {\n return {\n [query.measures[0]]: 'desc',\n };\n } else if ((query.dimensions || []).length > 0) {\n return {\n [query.dimensions[0]]: 'asc',\n };\n }\n\n return {};\n}\n\nexport function defaultHeuristics(newState, oldQuery = {}, options) {\n const { query, ...props } = clone(newState);\n const { meta, sessionGranularity } = options;\n const granularity = sessionGranularity || DEFAULT_GRANULARITY;\n\n let state = {\n query,\n ...props,\n };\n\n let newQuery = null;\n if (!areQueriesEqual(query, oldQuery)) {\n newQuery = query;\n }\n\n if (Array.isArray(newQuery) || Array.isArray(oldQuery)) {\n return newState;\n }\n\n if (newQuery) {\n if (\n (oldQuery.timeDimensions || []).length === 1 &&\n (newQuery.timeDimensions || []).length === 1 &&\n newQuery.timeDimensions[0].granularity &&\n oldQuery.timeDimensions[0].granularity !==\n newQuery.timeDimensions[0].granularity\n ) {\n state = {\n ...state,\n sessionGranularity: newQuery.timeDimensions[0].granularity,\n };\n }\n\n if (\n ((oldQuery.measures || []).length === 0 &&\n (newQuery.measures || []).length > 0) ||\n ((oldQuery.measures || []).length === 1 &&\n (newQuery.measures || []).length === 1 &&\n oldQuery.measures[0] !== newQuery.measures[0])\n ) {\n const [td] = newQuery.timeDimensions || [];\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(\n newQuery.measures[0]\n );\n newQuery = {\n ...newQuery,\n timeDimensions: defaultTimeDimension\n ? [\n {\n dimension: defaultTimeDimension,\n granularity: (td && td.granularity) || granularity,\n dateRange: td && td.dateRange,\n },\n ]\n : [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: defaultTimeDimension ? 'line' : 'number',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length === 0 &&\n (newQuery.dimensions || []).length > 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: undefined,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: 'table',\n };\n }\n\n if (\n (oldQuery.dimensions || []).length > 0 &&\n (newQuery.dimensions || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: (newQuery.timeDimensions || []).map((td) => ({\n ...td,\n granularity: td.granularity || granularity,\n })),\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number',\n };\n }\n\n if (\n ((oldQuery.dimensions || []).length > 0 ||\n (oldQuery.measures || []).length > 0) &&\n (newQuery.dimensions || []).length === 0 &&\n (newQuery.measures || []).length === 0\n ) {\n newQuery = {\n ...newQuery,\n timeDimensions: [],\n filters: [],\n };\n\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: newQuery,\n sessionGranularity: null,\n };\n }\n return state;\n }\n\n if (state.chartType) {\n const newChartType = state.chartType;\n if (\n (newChartType === 'line' || newChartType === 'area') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n !oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity }],\n },\n };\n }\n\n if (\n (newChartType === 'pie' ||\n newChartType === 'table' ||\n newChartType === 'number') &&\n (oldQuery.timeDimensions || []).length === 1 &&\n oldQuery.timeDimensions[0].granularity\n ) {\n const [td] = oldQuery.timeDimensions;\n return {\n ...state,\n pivotConfig: null,\n shouldApplyHeuristicOrder: true,\n query: {\n ...oldQuery,\n timeDimensions: [{ ...td, granularity: undefined }],\n },\n };\n }\n }\n\n return state;\n}\n\nexport function isQueryPresent(query) {\n if (!query) {\n return false;\n }\n\n return (Array.isArray(query) ? query : [query]).every(\n (q) => (q.measures && q.measures.length) ||\n (q.dimensions && q.dimensions.length) ||\n (q.timeDimensions && q.timeDimensions.length)\n );\n}\n\nexport function movePivotItem(\n pivotConfig,\n sourceIndex,\n destinationIndex,\n sourceAxis,\n destinationAxis\n) {\n const nextPivotConfig = {\n ...pivotConfig,\n x: [...pivotConfig.x],\n y: [...pivotConfig.y],\n };\n const id = pivotConfig[sourceAxis][sourceIndex];\n const lastIndex = nextPivotConfig[destinationAxis].length - 1;\n\n if (id === 'measures') {\n destinationIndex = lastIndex + 1;\n } else if (\n sourceAxis === destinationAxis &&\n destinationIndex >= lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex - 1;\n } else if (\n sourceAxis !== destinationAxis &&\n destinationIndex > lastIndex &&\n nextPivotConfig[destinationAxis][lastIndex] === 'measures'\n ) {\n destinationIndex = lastIndex;\n }\n\n nextPivotConfig[sourceAxis].splice(sourceIndex, 1);\n nextPivotConfig[destinationAxis].splice(destinationIndex, 0, id);\n\n return nextPivotConfig;\n}\n\nexport function moveItemInArray(list, sourceIndex, destinationIndex) {\n const result = [...list];\n const [removed] = result.splice(sourceIndex, 1);\n result.splice(destinationIndex, 0, removed);\n\n return result;\n}\n\nexport function flattenFilters(filters = []) {\n return filters.reduce((memo, filter) => {\n if (filter.or || filter.and) {\n return [...memo, ...flattenFilters(filter.or || filter.and)];\n }\n\n return [...memo, filter];\n }, []);\n}\n\nexport function getQueryMembers(query = {}) {\n const keys = ['measures', 'dimensions', 'segments'];\n const members = new Set();\n\n keys.forEach((key) => (query[key] || []).forEach((member) => members.add(member)));\n (query.timeDimensions || []).forEach((td) => members.add(td.dimension));\n\n flattenFilters(query.filters).forEach((filter) => members.add(filter.dimension || filter.member));\n\n return [...members];\n}\n\nexport function getOrderMembersFromOrder(orderMembers, order) {\n const ids = new Set();\n const indexedOrderMembers = indexBy(prop('id'), orderMembers);\n const entries = Array.isArray(order) ? order : Object.entries(order || {});\n const nextOrderMembers = [];\n\n entries.forEach(([memberId, currentOrder]) => {\n if (currentOrder !== 'none' && indexedOrderMembers[memberId]) {\n ids.add(memberId);\n nextOrderMembers.push({\n ...indexedOrderMembers[memberId],\n order: currentOrder,\n });\n }\n });\n orderMembers.forEach((member) => {\n if (!ids.has(member.id)) {\n nextOrderMembers.push({\n ...member,\n order: member.order || 'none',\n });\n }\n });\n\n return nextOrderMembers;\n}\n\nexport function aliasSeries(values, index, pivotConfig, duplicateMeasures) {\n const nonNullValues = values.filter((value) => value != null);\n\n if (\n pivotConfig &&\n pivotConfig.aliasSeries &&\n pivotConfig.aliasSeries[index]\n ) {\n return [pivotConfig.aliasSeries[index], ...nonNullValues];\n } else if (duplicateMeasures.has(nonNullValues[0])) {\n return [index, ...nonNullValues];\n }\n\n return nonNullValues;\n}\n","import dayjs from 'dayjs';\nimport {\n groupBy, pipe, fromPairs, uniq, filter, map, dropLast, equals, reduce, minBy, maxBy, clone, mergeDeepLeft,\n pluck, mergeAll, flatten,\n} from 'ramda';\n\nimport { aliasSeries } from './utils';\nimport {\n DateRegex,\n dayRange,\n internalDayjs,\n isPredefinedGranularity,\n LocalDateRegex,\n TIME_SERIES,\n timeSeriesFromCustomInterval\n} from './time';\n\nconst groupByToPairs = (keyFn) => {\n const acc = new Map();\n\n return (data) => {\n data.forEach((row) => {\n const key = keyFn(row);\n\n if (!acc.has(key)) {\n acc.set(key, []);\n }\n\n acc.get(key).push(row);\n });\n\n return Array.from(acc.entries());\n };\n};\n\nconst unnest = (arr) => {\n const res = [];\n arr.forEach((subArr) => {\n subArr.forEach(element => res.push(element));\n });\n\n return res;\n};\n\nexport const QUERY_TYPE = {\n REGULAR_QUERY: 'regularQuery',\n COMPARE_DATE_RANGE_QUERY: 'compareDateRangeQuery',\n BLENDING_QUERY: 'blendingQuery',\n};\n\nclass ResultSet {\n static measureFromAxis(axisValues) {\n return axisValues[axisValues.length - 1];\n }\n\n static timeDimensionMember(td) {\n return `${td.dimension}.${td.granularity}`;\n }\n\n static deserialize(data, options = {}) {\n return new ResultSet(data.loadResponse, options);\n }\n\n constructor(loadResponse, options = {}) {\n this.loadResponse = loadResponse;\n\n if (this.loadResponse.queryType != null) {\n this.queryType = loadResponse.queryType;\n this.loadResponses = loadResponse.results;\n } else {\n this.queryType = QUERY_TYPE.REGULAR_QUERY;\n this.loadResponse.pivotQuery = {\n ...loadResponse.query,\n queryType: this.queryType\n };\n this.loadResponses = [loadResponse];\n }\n\n if (!Object.values(QUERY_TYPE).includes(this.queryType)) {\n throw new Error('Unknown query type');\n }\n\n this.parseDateMeasures = options.parseDateMeasures;\n this.options = options;\n\n this.backwardCompatibleData = [];\n }\n\n drillDown(drillDownLocator, pivotConfig) {\n if (this.queryType === QUERY_TYPE.COMPARE_DATE_RANGE_QUERY) {\n throw new Error('compareDateRange drillDown query is not currently supported');\n }\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n throw new Error('Data blending drillDown query is not currently supported');\n }\n\n const { query } = this.loadResponses[0];\n const { xValues = [], yValues = [] } = drillDownLocator;\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig);\n\n const values = [];\n normalizedPivotConfig.x.forEach((member, currentIndex) => values.push([member, xValues[currentIndex]]));\n normalizedPivotConfig.y.forEach((member, currentIndex) => values.push([member, yValues[currentIndex]]));\n\n const { filters: parentFilters = [], segments = [] } = this.query();\n const { measures } = this.loadResponses[0].annotation;\n let [, measureName] = values.find(([member]) => member === 'measures') || [];\n\n if (measureName === undefined) {\n [measureName] = Object.keys(measures);\n }\n\n if (!(measures[measureName] && measures[measureName].drillMembers || []).length) {\n return null;\n }\n\n const filters = [\n {\n member: measureName,\n operator: 'measureFilter',\n },\n ...parentFilters\n ];\n const timeDimensions = [];\n\n values.filter(([member]) => member !== 'measures')\n .forEach(([member, value]) => {\n const [cubeName, dimension, granularity] = member.split('.');\n\n if (granularity !== undefined) {\n const range = dayRange(value, value).snapTo(granularity);\n const originalTimeDimension = query.timeDimensions.find((td) => td.dimension);\n\n let dateRange = [\n range.start,\n range.end\n ];\n\n if (originalTimeDimension?.dateRange) {\n const [originalStart, originalEnd] = originalTimeDimension.dateRange;\n\n dateRange = [\n dayjs(originalStart) > range.start ? dayjs(originalStart) : range.start,\n dayjs(originalEnd) < range.end ? dayjs(originalEnd) : range.end,\n ];\n }\n\n timeDimensions.push({\n dimension: [cubeName, dimension].join('.'),\n dateRange: dateRange.map((dt) => dt.format('YYYY-MM-DDTHH:mm:ss.SSS')),\n });\n } else if (value == null) {\n filters.push({\n member,\n operator: 'notSet',\n });\n } else {\n filters.push({\n member,\n operator: 'equals',\n values: [value.toString()],\n });\n }\n });\n\n if (\n timeDimensions.length === 0 &&\n query.timeDimensions.length > 0 &&\n query.timeDimensions[0].granularity == null\n ) {\n timeDimensions.push(query.timeDimensions[0]);\n }\n\n return {\n ...measures[measureName].drillMembersGrouped,\n filters,\n ...(segments.length > 0 ? { segments } : {}),\n timeDimensions,\n segments,\n timezone: query.timezone\n };\n }\n\n series(pivotConfig) {\n return this.seriesNames(pivotConfig).map(({ title, shortTitle, key }) => ({\n title,\n shortTitle,\n key,\n series: this.chartPivot(pivotConfig).map(({ x, ...obj }) => ({ value: obj[key], x }))\n }));\n }\n\n axisValues(axis, resultIndex = 0) {\n const { query } = this.loadResponses[resultIndex];\n\n return row => {\n const value = (measure) => axis.filter(d => d !== 'measures')\n .map(d => (row[d] != null ? row[d] : null)).concat(measure ? [measure] : []);\n\n if (axis.find(d => d === 'measures') && (query.measures || []).length) {\n return query.measures.map(value);\n }\n\n return [value()];\n };\n }\n\n axisValuesString(axisValues, delimiter) {\n const formatValue = (v) => {\n if (v == null) {\n return '∅';\n } else if (v === '') {\n return '[Empty string]';\n } else {\n return v;\n }\n };\n return axisValues.map(formatValue).join(delimiter || ', ');\n }\n\n static getNormalizedPivotConfig(query = {}, pivotConfig = null) {\n const defaultPivotConfig = {\n x: [],\n y: [],\n fillMissingDates: true,\n joinDateRange: false\n };\n\n const {\n measures = [],\n dimensions = []\n } = query;\n\n const timeDimensions = (query.timeDimensions || []).filter(td => !!td.granularity);\n\n pivotConfig = pivotConfig || (timeDimensions.length ? {\n x: timeDimensions.map(td => ResultSet.timeDimensionMember(td)),\n y: dimensions\n } : {\n x: dimensions,\n y: []\n });\n\n pivotConfig = mergeDeepLeft(pivotConfig, defaultPivotConfig);\n\n const substituteTimeDimensionMembers = axis => axis.map(\n subDim => (\n (\n timeDimensions.find(td => td.dimension === subDim) &&\n !dimensions.find(d => d === subDim)\n ) ?\n ResultSet.timeDimensionMember(query.timeDimensions.find(td => td.dimension === subDim)) :\n subDim\n )\n );\n\n pivotConfig.x = substituteTimeDimensionMembers(pivotConfig.x);\n pivotConfig.y = substituteTimeDimensionMembers(pivotConfig.y);\n\n const allIncludedDimensions = pivotConfig.x.concat(pivotConfig.y);\n const allDimensions = timeDimensions.map(td => ResultSet.timeDimensionMember(td)).concat(dimensions);\n\n const dimensionFilter = (key) => allDimensions.includes(key) || key === 'measures';\n\n pivotConfig.x = pivotConfig.x.concat(\n allDimensions.filter(d => !allIncludedDimensions.includes(d) && d !== 'compareDateRange')\n )\n .filter(dimensionFilter);\n pivotConfig.y = pivotConfig.y.filter(dimensionFilter);\n\n if (!pivotConfig.x.concat(pivotConfig.y).find(d => d === 'measures')) {\n pivotConfig.y.push('measures');\n }\n\n if (dimensions.includes('compareDateRange') && !pivotConfig.y.concat(pivotConfig.x).includes('compareDateRange')) {\n pivotConfig.y.unshift('compareDateRange');\n }\n\n if (!measures.length) {\n pivotConfig.x = pivotConfig.x.filter(d => d !== 'measures');\n pivotConfig.y = pivotConfig.y.filter(d => d !== 'measures');\n }\n\n return pivotConfig;\n }\n\n normalizePivotConfig(pivotConfig) {\n return ResultSet.getNormalizedPivotConfig(this.loadResponse.pivotQuery, pivotConfig);\n }\n\n timeSeries(timeDimension, resultIndex, annotations) {\n if (!timeDimension.granularity) {\n return null;\n }\n\n let { dateRange } = timeDimension;\n\n if (!dateRange) {\n const member = ResultSet.timeDimensionMember(timeDimension);\n const dates = pipe(\n map(row => row[member] && internalDayjs(row[member])),\n filter(Boolean)\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n dateRange = dates.length && [\n reduce(minBy(d => d.toDate()), dates[0], dates),\n reduce(maxBy(d => d.toDate()), dates[0], dates)\n ] || null;\n }\n\n if (!dateRange) {\n return null;\n }\n\n const padToDay = timeDimension.dateRange ?\n timeDimension.dateRange.find(d => d.match(DateRegex)) :\n !['hour', 'minute', 'second'].includes(timeDimension.granularity);\n\n const [start, end] = dateRange;\n const range = dayRange(start, end);\n\n if (isPredefinedGranularity(timeDimension.granularity)) {\n return TIME_SERIES[timeDimension.granularity](\n padToDay ? range.snapTo('d') : range\n );\n }\n\n if (!annotations[`${timeDimension.dimension}.${timeDimension.granularity}`]) {\n throw new Error(`Granularity \"${timeDimension.granularity}\" not found in time dimension \"${timeDimension.dimension}\"`);\n }\n\n return timeSeriesFromCustomInterval(\n start, end, annotations[`${timeDimension.dimension}.${timeDimension.granularity}`].granularity\n );\n }\n\n pivot(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const { pivotQuery: query } = this.loadResponse;\n\n const pivotImpl = (resultIndex = 0) => {\n let groupByXAxis = groupByToPairs(({ xValues }) => this.axisValuesString(xValues));\n\n const measureValue = (row, measure) => row[measure] || pivotConfig.fillWithValue || 0;\n\n if (\n pivotConfig.fillMissingDates &&\n pivotConfig.x.length === 1 &&\n (equals(\n pivotConfig.x,\n (query.timeDimensions || [])\n .filter(td => Boolean(td.granularity))\n .map(td => ResultSet.timeDimensionMember(td))\n ))\n ) {\n const series = this.loadResponses.map(\n (loadResponse) => this.timeSeries(\n loadResponse.query.timeDimensions[0],\n resultIndex, loadResponse.annotation.timeDimensions\n )\n );\n\n if (series[0]) {\n groupByXAxis = (rows) => {\n const byXValues = groupBy(\n ({ xValues }) => xValues[0],\n rows\n );\n return series[resultIndex].map(d => [d, byXValues[d] || [{ xValues: [d], row: {} }]]);\n };\n }\n }\n\n const xGrouped = pipe(\n map(row => this.axisValues(pivotConfig.x, resultIndex)(row).map(xValues => ({ xValues, row }))),\n unnest,\n groupByXAxis\n )(this.timeDimensionBackwardCompatibleData(resultIndex));\n\n const yValuesMap = {};\n xGrouped.forEach(([, rows]) => {\n rows.forEach(({ row }) => {\n this.axisValues(pivotConfig.y, resultIndex)(row).forEach((values) => {\n if (Object.keys(row).length > 0) {\n yValuesMap[values.join()] = values;\n }\n });\n });\n });\n const allYValues = Object.values(yValuesMap);\n\n const measureOnX = Boolean(pivotConfig.x.find(d => d === 'measures'));\n\n return xGrouped.map(([, rows]) => {\n const { xValues } = rows[0];\n const yGrouped = {};\n\n rows.forEach(({ row }) => {\n const arr = this.axisValues(pivotConfig.y, resultIndex)(row).map(yValues => ({ yValues, row }));\n arr.forEach((res) => {\n yGrouped[this.axisValuesString(res.yValues)] = res;\n });\n });\n\n return {\n xValues,\n yValuesArray: unnest(allYValues.map(yValues => {\n const measure = measureOnX ?\n ResultSet.measureFromAxis(xValues) :\n ResultSet.measureFromAxis(yValues);\n\n return [[yValues, measureValue((yGrouped[this.axisValuesString(yValues)] ||\n ({ row: {} })).row, measure)]];\n }))\n };\n });\n };\n\n const pivots = this.loadResponses.length > 1\n ? this.loadResponses.map((_, index) => pivotImpl(index))\n : [];\n\n return pivots.length\n ? this.mergePivots(pivots, pivotConfig.joinDateRange)\n : pivotImpl();\n }\n\n mergePivots(pivots, joinDateRange) {\n const minLengthPivot = pivots.reduce(\n (memo, current) => (memo != null && current.length >= memo.length ? memo : current), null\n );\n\n return minLengthPivot.map((_, index) => {\n const xValues = joinDateRange\n ? [pivots.map((pivot) => pivot[index] && pivot[index].xValues || []).join(', ')]\n : minLengthPivot[index].xValues;\n\n return {\n xValues,\n yValuesArray: unnest(pivots.map((pivot) => pivot[index].yValuesArray))\n };\n });\n }\n\n pivotedRows(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n chartPivot(pivotConfig) {\n const validate = (value) => {\n if (this.parseDateMeasures && LocalDateRegex.test(value)) {\n return new Date(value);\n } else if (!Number.isNaN(Number.parseFloat(value))) {\n return Number.parseFloat(value);\n }\n\n return value;\n };\n\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return this.pivot(pivotConfig).map(({ xValues, yValuesArray }) => {\n const yValuesMap = {};\n\n yValuesArray\n .forEach(([yValues, m], i) => {\n yValuesMap[this.axisValuesString(aliasSeries(yValues, i, pivotConfig, duplicateMeasures), ',')] = m && validate(m);\n });\n\n return ({\n x: this.axisValuesString(xValues, ','),\n xValues,\n ...yValuesMap\n });\n });\n }\n\n tablePivot(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const isMeasuresPresent = normalizedPivotConfig.x.concat(normalizedPivotConfig.y).includes('measures');\n\n return this.pivot(normalizedPivotConfig).map(({ xValues, yValuesArray }) => fromPairs(\n normalizedPivotConfig.x\n .map((key, index) => [key, xValues[index]])\n .concat(\n isMeasuresPresent ? yValuesArray.map(([yValues, measure]) => [\n yValues.length ? yValues.join() : 'value',\n measure\n ]) : []\n )\n ));\n }\n\n tableColumns(pivotConfig) {\n const normalizedPivotConfig = this.normalizePivotConfig(pivotConfig || {});\n const annotations = pipe(\n pluck('annotation'),\n reduce(mergeDeepLeft(), {})\n )(this.loadResponses);\n const flatMeta = Object.values(annotations).reduce((a, b) => ({ ...a, ...b }), {});\n const schema = {};\n\n const extractFields = (key) => {\n const { title, shortTitle, type, format, meta } = flatMeta[key] || {};\n\n return {\n key,\n title,\n shortTitle,\n type,\n format,\n meta\n };\n };\n\n const pivot = this.pivot(normalizedPivotConfig);\n\n (pivot[0] && pivot[0].yValuesArray || []).forEach(([yValues]) => {\n if (yValues.length > 0) {\n let currentItem = schema;\n\n yValues.forEach((value, index) => {\n currentItem[`_${value}`] = {\n key: value,\n memberId: normalizedPivotConfig.y[index] === 'measures'\n ? value\n : normalizedPivotConfig.y[index],\n children: (currentItem[`_${value}`] && currentItem[`_${value}`].children) || {}\n };\n\n currentItem = currentItem[`_${value}`].children;\n });\n }\n });\n\n const toColumns = (item = {}, path = []) => {\n if (Object.keys(item).length === 0) {\n return [];\n }\n\n return Object.values(item).map(({ key, ...currentItem }) => {\n const children = toColumns(currentItem.children, [\n ...path,\n key\n ]);\n\n const { title, shortTitle, ...fields } = extractFields(currentItem.memberId);\n\n const dimensionValue = key !== currentItem.memberId || title == null ? key : '';\n\n if (!children.length) {\n return {\n ...fields,\n key,\n dataIndex: [...path, key].join(),\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n };\n }\n\n return {\n ...fields,\n key,\n title: [title, dimensionValue].join(' ').trim(),\n shortTitle: dimensionValue || shortTitle,\n children,\n };\n });\n };\n\n let otherColumns = [];\n\n if (!pivot.length && normalizedPivotConfig.y.includes('measures')) {\n otherColumns = (this.loadResponses[0].query.measures || []).map(\n (key) => ({ ...extractFields(key), dataIndex: key })\n );\n }\n\n // Syntatic column to display the measure value\n if (!normalizedPivotConfig.y.length && normalizedPivotConfig.x.includes('measures')) {\n otherColumns.push({\n key: 'value',\n dataIndex: 'value',\n title: 'Value',\n shortTitle: 'Value',\n type: 'string',\n });\n }\n\n return normalizedPivotConfig.x\n .map((key) => {\n if (key === 'measures') {\n return {\n key: 'measures',\n dataIndex: 'measures',\n title: 'Measures',\n shortTitle: 'Measures',\n type: 'string',\n };\n }\n\n return ({ ...extractFields(key), dataIndex: key });\n })\n .concat(toColumns(schema))\n .concat(otherColumns);\n }\n\n totalRow(pivotConfig) {\n return this.chartPivot(pivotConfig)[0];\n }\n\n categories(pivotConfig) { // TODO\n return this.chartPivot(pivotConfig);\n }\n\n seriesNames(pivotConfig) {\n pivotConfig = this.normalizePivotConfig(pivotConfig);\n const measures = pipe(\n pluck('annotation'),\n pluck('measures'),\n mergeAll\n )(this.loadResponses);\n\n const seriesNames = unnest(this.loadResponses.map((_, index) => pipe(\n map(this.axisValues(pivotConfig.y, index)),\n unnest,\n uniq\n )(\n this.timeDimensionBackwardCompatibleData(index)\n )));\n const duplicateMeasures = new Set();\n if (this.queryType === QUERY_TYPE.BLENDING_QUERY) {\n const allMeasures = flatten(this.loadResponses.map(({ query }) => query.measures));\n allMeasures.filter((e, i, a) => a.indexOf(e) !== i).forEach(m => duplicateMeasures.add(m));\n }\n\n return seriesNames.map((axisValues, i) => {\n const aliasedAxis = aliasSeries(axisValues, i, pivotConfig, duplicateMeasures);\n return {\n title: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].title\n ) :\n aliasedAxis, ', '\n ),\n shortTitle: this.axisValuesString(\n pivotConfig.y.find(d => d === 'measures') ?\n dropLast(1, aliasedAxis).concat(\n measures[\n ResultSet.measureFromAxis(axisValues)\n ].shortTitle\n ) :\n aliasedAxis, ', '\n ),\n key: this.axisValuesString(aliasedAxis, ','),\n yValues: axisValues\n };\n });\n }\n\n query() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].query;\n }\n\n pivotQuery() {\n return this.loadResponse.pivotQuery || null;\n }\n\n totalRows() {\n return this.loadResponses[0].total;\n }\n\n rawData() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].data;\n }\n\n annotation() {\n if (this.queryType !== QUERY_TYPE.REGULAR_QUERY) {\n throw new Error(`Method is not supported for a '${this.queryType}' query type. Please use decompose`);\n }\n\n return this.loadResponses[0].annotation;\n }\n\n timeDimensionBackwardCompatibleData(resultIndex) {\n if (resultIndex === undefined) {\n throw new Error('resultIndex is required');\n }\n\n if (!this.backwardCompatibleData[resultIndex]) {\n const { data, query } = this.loadResponses[resultIndex];\n const timeDimensions = (query.timeDimensions || []).filter(td => Boolean(td.granularity));\n\n this.backwardCompatibleData[resultIndex] = data.map(row => (\n {\n ...row,\n ...(\n fromPairs(Object.keys(row)\n .filter(\n field => timeDimensions.find(d => d.dimension === field) &&\n !row[ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field))]\n ).map(field => (\n [ResultSet.timeDimensionMember(timeDimensions.find(d => d.dimension === field)), row[field]]\n )))\n )\n }\n ));\n }\n\n return this.backwardCompatibleData[resultIndex];\n }\n\n decompose() {\n return this.loadResponses.map((result) => new ResultSet({\n queryType: QUERY_TYPE.REGULAR_QUERY,\n pivotQuery: {\n ...result.query,\n queryType: QUERY_TYPE.REGULAR_QUERY,\n },\n results: [result]\n }, this.options));\n }\n\n serialize() {\n return {\n loadResponse: clone(this.loadResponse)\n };\n }\n}\n\nexport default ResultSet;\n","export default class SqlQuery {\n constructor(sqlQuery) {\n this.sqlQuery = sqlQuery;\n }\n\n rawQuery() {\n return this.sqlQuery.sql;\n }\n\n sql() {\n return this.rawQuery().sql[0];\n }\n}\n","/**\n * @module @cubejs-client/core\n */\n\nimport { unnest, fromPairs } from 'ramda';\n\nconst memberMap = (memberArray) => fromPairs(memberArray.map((m) => [m.name, m]));\n\nconst operators = {\n string: [\n { name: 'contains', title: 'contains' },\n { name: 'notContains', title: 'does not contain' },\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'startsWith', title: 'starts with' },\n { name: 'notStartsWith', title: 'does not start with' },\n { name: 'endsWith', title: 'ends with' },\n { name: 'notEndsWith', title: 'does not end with' },\n ],\n number: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'set', title: 'is set' },\n { name: 'notSet', title: 'is not set' },\n { name: 'gt', title: '>' },\n { name: 'gte', title: '>=' },\n { name: 'lt', title: '<' },\n { name: 'lte', title: '<=' },\n ],\n time: [\n { name: 'equals', title: 'equals' },\n { name: 'notEquals', title: 'does not equal' },\n { name: 'inDateRange', title: 'in date range' },\n { name: 'notInDateRange', title: 'not in date range' },\n { name: 'afterDate', title: 'after date' },\n { name: 'afterOrOnDate', title: 'after or on date' },\n { name: 'beforeDate', title: 'before date' },\n { name: 'beforeOrOnDate', title: 'before or on date' },\n ],\n};\n\n/**\n * Contains information about available cubes and it's members.\n */\nclass Meta {\n constructor(metaResponse) {\n this.meta = metaResponse;\n const { cubes } = this.meta;\n this.cubes = cubes;\n this.cubesMap = fromPairs(\n cubes.map((c) => [\n c.name,\n {\n measures: memberMap(c.measures),\n dimensions: memberMap(c.dimensions),\n segments: memberMap(c.segments),\n },\n ])\n );\n }\n\n membersForQuery(query, memberType) {\n return unnest(this.cubes.map((c) => c[memberType])).sort((a, b) => (a.title > b.title ? 1 : -1));\n }\n\n membersGroupedByCube() {\n const memberKeys = ['measures', 'dimensions', 'segments', 'timeDimensions'];\n\n return this.cubes.reduce(\n (memo, cube) => {\n memberKeys.forEach((key) => {\n let members = cube[key];\n\n if (key === 'timeDimensions') {\n members = cube.dimensions.filter((m) => m.type === 'time');\n }\n\n memo[key] = [\n ...memo[key],\n {\n cubeName: cube.name,\n cubeTitle: cube.title,\n type: cube.type,\n public: cube.public,\n members\n },\n ];\n });\n\n return memo;\n },\n {\n measures: [],\n dimensions: [],\n segments: [],\n timeDimensions: [],\n }\n );\n }\n\n resolveMember(memberName, memberType) {\n const [cube] = memberName.split('.');\n\n if (!this.cubesMap[cube]) {\n return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };\n }\n\n const memberTypes = Array.isArray(memberType) ? memberType : [memberType];\n const member = memberTypes\n .map((type) => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])\n .find((m) => m);\n\n if (!member) {\n return {\n title: memberName,\n error: `Path not found '${memberName}'`,\n };\n }\n\n return member;\n }\n\n defaultTimeDimensionNameFor(memberName) {\n const [cube] = memberName.split('.');\n if (!this.cubesMap[cube]) {\n return null;\n }\n return Object.keys(this.cubesMap[cube].dimensions || {}).find(\n (d) => this.cubesMap[cube].dimensions[d].type === 'time'\n );\n }\n\n filterOperatorsForMember(memberName, memberType) {\n const member = this.resolveMember(memberName, memberType);\n\n return operators[member.type] || operators.string;\n }\n}\n\nexport default Meta;\n","export default class ProgressResult {\n constructor(progressResponse) {\n this.progressResponse = progressResponse;\n }\n\n stage() {\n return this.progressResponse.stage;\n }\n\n timeElapsed() {\n return this.progressResponse.timeElapsed;\n }\n}\n","import fetch from 'cross-fetch';\nimport 'url-search-params-polyfill';\n\nclass HttpTransport {\n constructor({ authorization, apiUrl, method, headers = {}, credentials, fetchTimeout }) {\n this.authorization = authorization;\n this.apiUrl = apiUrl;\n this.method = method;\n this.headers = headers;\n this.credentials = credentials;\n this.fetchTimeout = fetchTimeout;\n }\n\n request(method, { baseRequestId, ...params }) {\n let spanCounter = 1;\n const searchParams = new URLSearchParams(\n params && Object.keys(params)\n .map(k => ({ [k]: typeof params[k] === 'object' ? JSON.stringify(params[k]) : params[k] }))\n .reduce((a, b) => ({ ...a, ...b }), {})\n );\n\n let url = `${this.apiUrl}/${method}${searchParams.toString().length ? `?${searchParams}` : ''}`;\n\n const requestMethod = this.method || (url.length < 2000 ? 'GET' : 'POST');\n if (requestMethod === 'POST') {\n url = `${this.apiUrl}/${method}`;\n this.headers['Content-Type'] = 'application/json';\n }\n\n // Currently, all methods make GET requests. If a method makes a request with a body payload,\n // remember to add {'Content-Type': 'application/json'} to the header.\n const runRequest = () => fetch(url, {\n method: requestMethod,\n headers: {\n Authorization: this.authorization,\n 'x-request-id': baseRequestId && `${baseRequestId}-span-${spanCounter++}`,\n ...this.headers\n },\n credentials: this.credentials,\n body: requestMethod === 'POST' ? JSON.stringify(params) : null,\n signal: this.fetchTimeout ? AbortSignal.timeout(this.fetchTimeout) : undefined,\n });\n\n return {\n /* eslint no-unsafe-finally: off */\n async subscribe(callback) {\n let result = {\n error: 'network Error' // add default error message\n };\n try {\n result = await runRequest();\n } finally {\n return callback(result, () => this.subscribe(callback));\n }\n }\n };\n }\n}\n\nexport default HttpTransport;\n","export default class RequestError extends Error {\n constructor(message, response, status) {\n super(message);\n this.response = response;\n this.status = status;\n }\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport ResultSet from './ResultSet';\nimport SqlQuery from './SqlQuery';\nimport Meta from './Meta';\nimport ProgressResult from './ProgressResult';\nimport HttpTransport from './HttpTransport';\nimport RequestError from './RequestError';\n\nlet mutexCounter = 0;\n\nconst MUTEX_ERROR = 'Mutex has been changed';\n\n/**\n * Query result dataset formats enum.\n */\nconst ResultType = {\n DEFAULT: 'default',\n COMPACT: 'compact'\n};\n\nfunction mutexPromise(promise) {\n return new Promise(async (resolve, reject) => {\n try {\n resolve(await promise);\n } catch (error) {\n if (error !== MUTEX_ERROR) {\n reject(error);\n }\n }\n });\n}\n\nclass CubeApi {\n constructor(apiToken, options) {\n if (apiToken !== null && !Array.isArray(apiToken) && typeof apiToken === 'object') {\n options = apiToken;\n apiToken = undefined;\n }\n options = options || {};\n\n if (!options.transport && !options.apiUrl) {\n throw new Error('The `apiUrl` option is required');\n }\n\n this.apiToken = apiToken;\n this.apiUrl = options.apiUrl;\n this.method = options.method;\n this.headers = options.headers || {};\n this.credentials = options.credentials;\n this.transport = options.transport || new HttpTransport({\n authorization: typeof apiToken === 'function' ? undefined : apiToken,\n apiUrl: this.apiUrl,\n method: this.method,\n headers: this.headers,\n credentials: this.credentials\n });\n this.pollInterval = options.pollInterval || 5;\n this.parseDateMeasures = options.parseDateMeasures;\n this.castNumerics = typeof options.castNumerics === 'boolean' ? options.castNumerics : false;\n this.networkErrorRetries = options.networkErrorRetries || 0;\n\n this.updateAuthorizationPromise = null;\n }\n\n request(method, params) {\n return this.transport.request(method, {\n baseRequestId: uuidv4(),\n ...params\n });\n }\n\n loadMethod(request, toResult, options, callback) {\n const mutexValue = ++mutexCounter;\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = undefined;\n }\n\n options = options || {};\n\n const mutexKey = options.mutexKey || 'default';\n if (options.mutexObj) {\n options.mutexObj[mutexKey] = mutexValue;\n }\n\n const requestPromise = this\n .updateTransportAuthorization()\n .then(() => request());\n\n let skipAuthorizationUpdate = true;\n let unsubscribed = false;\n\n const checkMutex = async () => {\n const requestInstance = await requestPromise;\n\n if (\n options.mutexObj &&\n options.mutexObj[mutexKey] !== mutexValue\n ) {\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n throw MUTEX_ERROR;\n }\n };\n\n let networkRetries = this.networkErrorRetries;\n\n const loadImpl = async (response, next) => {\n const requestInstance = await requestPromise;\n\n const subscribeNext = async () => {\n if (options.subscribe && !unsubscribed) {\n if (requestInstance.unsubscribe) {\n return next();\n } else {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n return next();\n }\n }\n return null;\n };\n\n const continueWait = async (wait) => {\n if (!unsubscribed) {\n if (wait) {\n await new Promise(resolve => setTimeout(() => resolve(), this.pollInterval * 1000));\n }\n return next();\n }\n return null;\n };\n\n if (options.subscribe && !skipAuthorizationUpdate) {\n await this.updateTransportAuthorization();\n }\n\n skipAuthorizationUpdate = false;\n\n if (response.status === 502 ||\n response.error &&\n response.error.toLowerCase() === 'network error' &&\n --networkRetries >= 0\n ) {\n await checkMutex();\n return continueWait(true);\n }\n\n let body = {};\n let text = '';\n try {\n text = await response.text();\n body = JSON.parse(text);\n } catch (_) {\n body.error = text;\n }\n\n if (body.error === 'Continue wait') {\n await checkMutex();\n if (options.progressCallback) {\n options.progressCallback(new ProgressResult(body));\n }\n return continueWait();\n }\n\n if (response.status !== 200) {\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n\n const error = new RequestError(body.error, body, response.status); // TODO error class\n if (callback) {\n callback(error);\n } else {\n throw error;\n }\n\n return subscribeNext();\n }\n await checkMutex();\n if (!options.subscribe && requestInstance.unsubscribe) {\n await requestInstance.unsubscribe();\n }\n const result = toResult(body);\n if (callback) {\n callback(null, result);\n } else {\n return result;\n }\n\n return subscribeNext();\n };\n\n const promise = requestPromise.then(requestInstance => mutexPromise(requestInstance.subscribe(loadImpl)));\n\n if (callback) {\n return {\n unsubscribe: async () => {\n const requestInstance = await requestPromise;\n\n unsubscribed = true;\n if (requestInstance.unsubscribe) {\n return requestInstance.unsubscribe();\n }\n return null;\n }\n };\n } else {\n return promise;\n }\n }\n\n async updateTransportAuthorization() {\n if (this.updateAuthorizationPromise) {\n await this.updateAuthorizationPromise;\n return;\n }\n\n if (typeof this.apiToken === 'function') {\n this.updateAuthorizationPromise = new Promise(async (resolve, reject) => {\n try {\n const token = await this.apiToken();\n if (this.transport.authorization !== token) {\n this.transport.authorization = token;\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n this.updateAuthorizationPromise = null;\n }\n });\n\n await this.updateAuthorizationPromise;\n }\n }\n\n /**\n * Add system properties to a query object.\n * @param {Query} query\n * @param {string} responseFormat\n * @returns {void}\n * @private\n */\n patchQueryInternal(query, responseFormat) {\n if (\n responseFormat === ResultType.COMPACT &&\n query.responseFormat !== ResultType.COMPACT\n ) {\n return {\n ...query,\n responseFormat: ResultType.COMPACT,\n };\n } else {\n return query;\n }\n }\n\n /**\n * Process result fetched from the gateway#load method according\n * to the network protocol.\n * @param {*} response\n * @returns ResultSet\n * @private\n */\n loadResponseInternal(response, options = {}) {\n if (\n response.results.length\n ) {\n if (options.castNumerics) {\n response.results.forEach((result) => {\n const numericMembers = Object.entries({\n ...result.annotation.measures,\n ...result.annotation.dimensions,\n }).map(([k, v]) => {\n if (v.type === 'number') {\n return k;\n }\n\n return undefined;\n }).filter(Boolean);\n\n result.data = result.data.map((row) => {\n numericMembers.forEach((key) => {\n if (row[key] != null) {\n row[key] = Number(row[key]);\n }\n });\n\n return row;\n });\n });\n }\n\n if (response.results[0].query.responseFormat &&\n response.results[0].query.responseFormat === ResultType.COMPACT) {\n response.results.forEach((result, j) => {\n const data = [];\n result.data.dataset.forEach((r) => {\n const row = {};\n result.data.members.forEach((m, i) => {\n row[m] = r[i];\n });\n data.push(row);\n });\n response.results[j].data = data;\n });\n }\n }\n\n return new ResultSet(response, {\n parseDateMeasures: this.parseDateMeasures\n });\n }\n\n load(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('load', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n options,\n callback\n );\n }\n\n subscribe(query, options, callback, responseFormat = ResultType.DEFAULT) {\n options = {\n castNumerics: this.castNumerics,\n ...options\n };\n\n if (responseFormat === ResultType.COMPACT) {\n if (Array.isArray(query)) {\n query = query.map((q) => this.patchQueryInternal(q, ResultType.COMPACT));\n } else {\n query = this.patchQueryInternal(query, ResultType.COMPACT);\n }\n }\n return this.loadMethod(\n () => this.request('subscribe', {\n query,\n queryType: 'multi',\n }),\n (response) => this.loadResponseInternal(response, options),\n { ...options, subscribe: true },\n callback\n );\n }\n\n sql(query, options, callback) {\n return this.loadMethod(\n () => this.request('sql', { query }),\n (response) => (Array.isArray(response) ? response.map((body) => new SqlQuery(body)) : new SqlQuery(response)),\n options,\n callback\n );\n }\n\n meta(options, callback) {\n return this.loadMethod(\n () => this.request('meta'),\n (body) => new Meta(body),\n options,\n callback\n );\n }\n\n dryRun(query, options, callback) {\n return this.loadMethod(\n () => this.request('dry-run', { query }),\n (response) => response,\n options,\n callback\n );\n }\n}\n\nexport default (apiToken, options) => new CubeApi(apiToken, options);\n\nexport { CubeApi, HttpTransport, ResultSet, RequestError, Meta };\nexport * from './utils';\nexport * from './time';\n"],"names":["dayjs","extend","quarterOfYear","duration","isoWeek","GRANULARITIES","name","undefined","title","DEFAULT_GRANULARITY","internalDayjs","apply","arguments","locale","_objectSpread","en","weekStart","TIME_SERIES","day","range","by","map","d","format","month","snapTo","year","hour","minute","second","week","startOf","quarter","isPredefinedGranularity","granularity","DateRegex","LocalDateRegex","dayRange","from","to","value","results","start","end","isBefore","isSame","push","add","endOf","parseSqlInterval","intervalStr","interval","parts","split","i","length","parseInt","unit","singularUnit","endsWith","slice","addInterval","date","res","clone","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","subtractInterval","_ref3","_ref4","subtract","alignToOrigin","startDate","origin","alignedDate","intervalOp","isIntervalNegative","offsetDate","isAfter","timeSeriesFromCustomInterval","intervalParsed","offset","alignedStart","dates","diffTimeUnitForInterval","test","granularityOrder","minGranularityForIntervals","i1","i2","g1","g2","g1pos","indexOf","g2pos","granularityFor","dateStr","dayjsDate","hours","minutes","seconds","milliseconds","millisecond","weekDay","isoWeekday","removeEmptyQueryFields","_query","query","fromPairs","toPairs","includes","Array","isArray","keys","filter","Boolean","validateQuery","filters","f","operator","timeDimensions","td","dateRange","areQueriesEqual","query1","query2","equals","order","defaultOrder","find","_defineProperty","dimension","measures","dimensions","defaultHeuristics","newState","oldQuery","options","_clone","props","_objectWithoutProperties","_excluded","meta","sessionGranularity","state","newQuery","_ref6","_ref7","defaultTimeDimension","defaultTimeDimensionNameFor","pivotConfig","shouldApplyHeuristicOrder","chartType","newChartType","_oldQuery$timeDimensi","_oldQuery$timeDimensi2","isQueryPresent","every","q","movePivotItem","sourceIndex","destinationIndex","sourceAxis","destinationAxis","nextPivotConfig","x","_toConsumableArray","y","id","lastIndex","splice","moveItemInArray","list","result","_result$splice","_result$splice2","removed","flattenFilters","reduce","memo","or","and","concat","getQueryMembers","members","Set","member","getOrderMembersFromOrder","orderMembers","ids","indexedOrderMembers","indexBy","prop","nextOrderMembers","_ref8","_ref9","memberId","currentOrder","has","aliasSeries","values","index","duplicateMeasures","nonNullValues","groupByToPairs","keyFn","acc","Map","data","row","set","get","unnest","arr","subArr","element","QUERY_TYPE","REGULAR_QUERY","COMPARE_DATE_RANGE_QUERY","BLENDING_QUERY","ResultSet","loadResponse","_classCallCheck","queryType","loadResponses","pivotQuery","Error","parseDateMeasures","backwardCompatibleData","_createClass","drillDown","drillDownLocator","_drillDownLocator$xVa","xValues","_drillDownLocator$yVa","yValues","normalizedPivotConfig","normalizePivotConfig","currentIndex","_this$query","_this$query$filters","parentFilters","_this$query$segments","segments","annotation","measureName","_Object$keys","_Object$keys2","drillMembers","_ref5","_member$split","_member$split2","cubeName","originalTimeDimension","_originalTimeDimensio","originalStart","originalEnd","join","dt","toString","drillMembersGrouped","timezone","series","_this","seriesNames","shortTitle","chartPivot","_ref10","obj","axisValues","axis","resultIndex","measure","axisValuesString","delimiter","formatValue","v","getNormalizedPivotConfig","timeSeries","timeDimension","annotations","timeDimensionMember","pipe","timeDimensionBackwardCompatibleData","minBy","toDate","maxBy","padToDay","match","_dateRange","_dateRange2","pivot","_this2","pivotImpl","groupByXAxis","_ref11","measureValue","fillWithValue","fillMissingDates","rows","byXValues","groupBy","_ref12","xGrouped","yValuesMap","_ref13","_ref14","_ref15","allYValues","measureOnX","_ref16","_ref17","yGrouped","_ref18","yValuesArray","measureFromAxis","pivots","_","mergePivots","joinDateRange","minLengthPivot","current","pivotedRows","_this3","validate","Date","Number","isNaN","parseFloat","allMeasures","flatten","_ref19","e","a","m","_ref20","_ref21","_ref22","tablePivot","isMeasuresPresent","_ref23","_ref24","_ref25","tableColumns","pluck","mergeDeepLeft","flatMeta","b","schema","extractFields","_ref26","type","_ref27","_ref28","currentItem","children","toColumns","item","path","_ref29","_excluded2","_extractFields","fields","_excluded3","dimensionValue","dataIndex","trim","otherColumns","totalRow","categories","_this4","mergeAll","uniq","_ref30","aliasedAxis","dropLast","totalRows","total","rawData","_this$loadResponses$r","field","decompose","_this5","serialize","deserialize","defaultPivotConfig","_query$measures","_query$dimensions","substituteTimeDimensionMembers","subDim","allIncludedDimensions","allDimensions","dimensionFilter","unshift","SqlQuery","sqlQuery","rawQuery","sql","memberMap","memberArray","operators","string","number","time","Meta","metaResponse","cubes","cubesMap","c","membersForQuery","memberType","sort","membersGroupedByCube","memberKeys","cube","cubeTitle","resolveMember","memberName","_memberName$split","_memberName$split2","error","memberTypes","_memberName$split3","_memberName$split4","filterOperatorsForMember","ProgressResult","progressResponse","stage","timeElapsed","HttpTransport","authorization","apiUrl","method","_ref$headers","headers","credentials","fetchTimeout","request","baseRequestId","params","spanCounter","searchParams","URLSearchParams","k","_typeof","JSON","stringify","url","requestMethod","runRequest","fetch","Authorization","body","signal","AbortSignal","timeout","subscribe","callback","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","sent","abrupt","stop","RequestError","_Error","_inherits","_super","_createSuper","message","response","status","call","_wrapNativeSuper","mutexCounter","MUTEX_ERROR","ResultType","DEFAULT","COMPACT","mutexPromise","promise","Promise","resolve","reject","t0","t1","t2","_x","_x2","CubeApi","apiToken","transport","pollInterval","castNumerics","networkErrorRetries","updateAuthorizationPromise","uuidv4","loadMethod","toResult","mutexValue","mutexKey","mutexObj","requestPromise","updateTransportAuthorization","then","skipAuthorizationUpdate","unsubscribed","checkMutex","_callee2","requestInstance","_callee2$","_context2","unsubscribe","networkRetries","loadImpl","_callee5","subscribeNext","continueWait","text","_callee5$","_context5","_callee3","_callee3$","_context3","setTimeout","_callee4","wait","_callee4$","_context4","_x5","toLowerCase","parse","progressCallback","_x3","_x4","_unsubscribe","_callee6","_callee6$","_context6","_updateTransportAuthorization","_callee8","_callee8$","_context8","_callee7","token","_callee7$","_context7","finish","_x6","_x7","patchQueryInternal","responseFormat","loadResponseInternal","numericMembers","j","dataset","r","load","_this6","dryRun","_this7"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMAA,yBAAK,CAACC,MAAM,CAACC,iCAAa,CAAC;AAC3BF,yBAAK,CAACC,MAAM,CAACE,4BAAQ,CAAC;AACtBH,yBAAK,CAACC,MAAM,CAACG,2BAAO,CAAC;IAERC,aAAa,GAAG,CAC3B;EAAEC,IAAI,EAAEC,SAAS;EAAEC,KAAK,EAAE;AAAe,CAAC,EAC1C;EAAEF,IAAI,EAAE,QAAQ;EAAEE,KAAK,EAAE;AAAS,CAAC,EACnC;EAAEF,IAAI,EAAE,QAAQ;EAAEE,KAAK,EAAE;AAAS,CAAC,EACnC;EAAEF,IAAI,EAAE,MAAM;EAAEE,KAAK,EAAE;AAAO,CAAC,EAC/B;EAAEF,IAAI,EAAE,KAAK;EAAEE,KAAK,EAAE;AAAM,CAAC,EAC7B;EAAEF,IAAI,EAAE,MAAM;EAAEE,KAAK,EAAE;AAAO,CAAC,EAC/B;EAAEF,IAAI,EAAE,OAAO;EAAEE,KAAK,EAAE;AAAQ,CAAC,EACjC;EAAEF,IAAI,EAAE,SAAS;EAAEE,KAAK,EAAE;AAAU,CAAC,EACrC;EAAEF,IAAI,EAAE,MAAM;EAAEE,KAAK,EAAE;AAAO,CAAC;IAGpBC,mBAAmB,GAAG;;AAEnC;AACA;IACaC,aAAa,GAAG,SAAhBA,aAAaA;EAAA,OAAgBV,yBAAK,CAAAW,KAAA,SAAAC,SAAQ,CAAC,CAACC,MAAM,CAAAC,eAAA,CAAAA,eAAA,KAAMC,sBAAE;IAAEC,SAAS,EAAE;IAAG,CAAC;AAAA;IAE3EC,WAAW,GAAG;EACzBC,GAAG,EAAE,SAAAA,IAACC,KAAK;IAAA,OAAKA,KAAK,CAACC,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC3EC,KAAK,EAAE,SAAAA,MAACL,KAAK;IAAA,OAAKA,KAAK,CAACM,MAAM,CAAC,OAAO,CAAC,CAACL,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC7FG,IAAI,EAAE,SAAAA,KAACP,KAAK;IAAA,OAAKA,KAAK,CAACM,MAAM,CAAC,MAAM,CAAC,CAACL,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC3FI,IAAI,EAAE,SAAAA,KAACR,KAAK;IAAA,OAAKA,KAAK,CAACC,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC5EK,MAAM,EAAE,SAAAA,OAACT,KAAK;IAAA,OAAKA,KAAK,CAACC,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC9EM,MAAM,EAAE,SAAAA,OAACV,KAAK;IAAA,OAAKA,KAAK,CAACC,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC9EO,IAAI,EAAE,SAAAA,KAACX,KAAK;IAAA,OAAKA,KAAK,CAACM,MAAM,CAAC,MAAM,CAAC,CAACL,EAAE,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACS,OAAO,CAAC,MAAM,CAAC,CAACR,MAAM,CAAC,yBAAyB,CAAC;MAAC;;EAC3GS,OAAO,EAAE,SAAAA,QAACb,KAAK;IAAA,OAAKA,KAAK,CAACM,MAAM,CAAC,SAAS,CAAC,CAACL,EAAE,CAAC,SAAS,CAAC,CAACC,GAAG,CAAC,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACS,OAAO,CAAC,SAAS,CAAC,CAACR,MAAM,CAC5F,yBACF,CAAC;MAAC;;AACJ;IAEaU,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,WAAW;EAAA,OAAK,CAAC,CAACjB,WAAW,CAACiB,WAAW,CAAC;AAAA;IAErEC,SAAS,GAAG;IACZC,cAAc,GAAG;IAEjBC,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,IAAI,EAAEC,EAAE;EAAA,OAAM;IACrCnB,EAAE,EAAE,SAAAA,GAACoB,KAAK,EAAK;MACb,IAAMC,OAAO,GAAG,EAAE;MAElB,IAAIC,KAAK,GAAGhC,aAAa,CAAC4B,IAAI,CAAC;MAC/B,IAAMK,GAAG,GAAGjC,aAAa,CAAC6B,EAAE,CAAC;MAE7B,OAAOG,KAAK,CAACE,QAAQ,CAACD,GAAG,CAAC,IAAID,KAAK,CAACG,MAAM,CAACF,GAAG,CAAC,EAAE;QAC/CF,OAAO,CAACK,IAAI,CAACJ,KAAK,CAAC;QACnBA,KAAK,GAAGA,KAAK,CAACK,GAAG,CAAC,CAAC,EAAEP,KAAK,CAAC;;MAG7B,OAAOC,OAAO;KACf;IACDhB,MAAM,EAAE,SAAAA,OAACe,KAAK;MAAA,OAAKH,QAAQ,CAAC3B,aAAa,CAAC4B,IAAI,CAAC,CAACP,OAAO,CAACS,KAAK,CAAC,EAAE9B,aAAa,CAAC6B,EAAE,CAAC,CAACS,KAAK,CAACR,KAAK,CAAC,CAAC;;IAC/FE,KAAK,EAAEhC,aAAa,CAAC4B,IAAI,CAAC;IAC1BK,GAAG,EAAEjC,aAAa,CAAC6B,EAAE;GACtB;AAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,gBAAgBA,CAACC,WAAW,EAAE;EAC5C,IAAMC,QAAQ,GAAG,EAAE;EACnB,IAAMC,KAAK,GAAGF,WAAW,CAACG,KAAK,CAAC,KAAK,CAAC;EAEtC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACxC,IAAMd,KAAK,GAAGgB,QAAQ,CAACJ,KAAK,CAACE,CAAC,CAAC,EAAE,EAAE,CAAC;IACpC,IAAMG,IAAI,GAAGL,KAAK,CAACE,CAAC,GAAG,CAAC,CAAC;;;IAGzB,IAAMI,YAAY,GAAGD,IAAI,CAACE,QAAQ,CAAC,GAAG,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGH,IAAI;IAClEN,QAAQ,CAACO,YAAY,CAAC,GAAGlB,KAAK;;EAGhC,OAAOW,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,WAAWA,CAACC,IAAI,EAAEX,QAAQ,EAAE;EAC1C,IAAIY,GAAG,GAAGD,IAAI,CAACE,KAAK,EAAE;EAEtBC,MAAM,CAACC,OAAO,CAACf,QAAQ,CAAC,CAACgB,OAAO,CAAC,UAAAC,IAAA,EAAkB;IAAA,IAAAC,KAAA,GAAAC,kCAAA,CAAAF,IAAA;MAAhBG,GAAG,GAAAF,KAAA;MAAE7B,KAAK,GAAA6B,KAAA;IAC3CN,GAAG,GAAGA,GAAG,CAAChB,GAAG,CAACP,KAAK,EAAE+B,GAAG,CAAC;GAC1B,CAAC;EAEF,OAAOR,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,gBAAgBA,CAACV,IAAI,EAAEX,QAAQ,EAAE;EAC/C,IAAIY,GAAG,GAAGD,IAAI,CAACE,KAAK,EAAE;EAEtBC,MAAM,CAACC,OAAO,CAACf,QAAQ,CAAC,CAACgB,OAAO,CAAC,UAAAM,KAAA,EAAkB;IAAA,IAAAC,KAAA,GAAAJ,kCAAA,CAAAG,KAAA;MAAhBF,GAAG,GAAAG,KAAA;MAAElC,KAAK,GAAAkC,KAAA;IAC3CX,GAAG,GAAGA,GAAG,CAACY,QAAQ,CAACnC,KAAK,EAAE+B,GAAG,CAAC;GAC/B,CAAC;EAEF,OAAOR,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASa,aAAaA,CAACC,SAAS,EAAE1B,QAAQ,EAAE2B,MAAM,EAAE;EAClD,IAAIC,WAAW,GAAGF,SAAS,CAACb,KAAK,EAAE;EACnC,IAAIgB,UAAU;EACd,IAAIC,kBAAkB,GAAG,KAAK;EAE9B,IAAIC,UAAU,GAAGrB,WAAW,CAACiB,MAAM,EAAE3B,QAAQ,CAAC;;;EAG9C,IAAI+B,UAAU,CAACtC,QAAQ,CAACkC,MAAM,CAAC,EAAE;IAC/BG,kBAAkB,GAAG,IAAI;;EAG3BC,UAAU,GAAGJ,MAAM,CAACd,KAAK,EAAE;EAE3B,IAAIa,SAAS,CAACjC,QAAQ,CAACkC,MAAM,CAAC,EAAE;IAC9BE,UAAU,GAAGC,kBAAkB,GAAGpB,WAAW,GAAGW,gBAAgB;IAEhE,OAAOU,UAAU,CAACC,OAAO,CAACN,SAAS,CAAC,EAAE;MACpCK,UAAU,GAAGF,UAAU,CAACE,UAAU,EAAE/B,QAAQ,CAAC;;IAE/C4B,WAAW,GAAGG,UAAU;GACzB,MAAM;IACLF,UAAU,GAAGC,kBAAkB,GAAGT,gBAAgB,GAAGX,WAAW;IAEhE,OAAOqB,UAAU,CAACtC,QAAQ,CAACiC,SAAS,CAAC,EAAE;MACrCE,WAAW,GAAGG,UAAU,CAAClB,KAAK,EAAE;MAChCkB,UAAU,GAAGF,UAAU,CAACE,UAAU,EAAE/B,QAAQ,CAAC;;IAG/C,IAAI+B,UAAU,CAACrC,MAAM,CAACgC,SAAS,CAAC,EAAE;MAChCE,WAAW,GAAGG,UAAU;;;EAI5B,OAAOH,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;IACaK,4BAA4B,GAAG,SAA/BA,4BAA4BA,CAAI9C,IAAI,EAAEC,EAAE,EAAEL,WAAW,EAAK;EACrE,IAAMmD,cAAc,GAAGpC,gBAAgB,CAACf,WAAW,CAACiB,QAAQ,CAAC;EAC7D,IAAMT,KAAK,GAAGhC,aAAa,CAAC4B,IAAI,CAAC;EACjC,IAAMK,GAAG,GAAGjC,aAAa,CAAC6B,EAAE,CAAC;EAC7B,IAAIuC,MAAM,GAAG5C,WAAW,CAAC4C,MAAM,GAAGpE,aAAa,CAACwB,WAAW,CAAC4C,MAAM,CAAC,GAAGpE,aAAa,EAAE,CAACqB,OAAO,CAAC,MAAM,CAAC;EACrG,IAAIG,WAAW,CAACoD,MAAM,EAAE;IACtBR,MAAM,GAAGjB,WAAW,CAACiB,MAAM,EAAE7B,gBAAgB,CAACf,WAAW,CAACoD,MAAM,CAAC,CAAC;;EAEpE,IAAIC,YAAY,GAAGX,aAAa,CAAClC,KAAK,EAAE2C,cAAc,EAAEP,MAAM,CAAC;EAE/D,IAAMU,KAAK,GAAG,EAAE;EAEhB,OAAOD,YAAY,CAAC3C,QAAQ,CAACD,GAAG,CAAC,IAAI4C,YAAY,CAAC1C,MAAM,CAACF,GAAG,CAAC,EAAE;IAC7D6C,KAAK,CAAC1C,IAAI,CAACyC,YAAY,CAAChE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC1DgE,YAAY,GAAG1B,WAAW,CAAC0B,YAAY,EAAEF,cAAc,CAAC;;EAG1D,OAAOG,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;IACaC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAItC,QAAQ,EAAK;EACnD,IAAI,SAAS,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IAC5B,OAAO,QAAQ;GAChB,MAAM,IAAI,SAAS,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IACnC,OAAO,QAAQ;GAChB,MAAM,IAAI,OAAO,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IACjC,OAAO,MAAM;GACd,MAAM,IAAI,MAAM,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IAChC,OAAO,KAAK;GACb,MAAM,IAAI,OAAO,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IACjC,OAAO,KAAK;GACb,MAAM,IAAI,QAAQ,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IAClC,OAAO,OAAO;GACf,MAAM,IAAI,UAAU,CAACuC,IAAI,CAACvC,QAAQ,CAAC,EAAE;IACpC,OAAO,OAAO;GACf,uCAAwC;MACvC,OAAO,MAAM;;AAEjB;AAEA,IAAMwC,gBAAgB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAEnFC,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAIC,EAAE,EAAEC,EAAE,EAAK;EACpD,IAAMC,EAAE,GAAGN,uBAAuB,CAACI,EAAE,CAAC;EACtC,IAAMG,EAAE,GAAGP,uBAAuB,CAACK,EAAE,CAAC;EACtC,IAAMG,KAAK,GAAGN,gBAAgB,CAACO,OAAO,CAACH,EAAE,CAAC;EAC1C,IAAMI,KAAK,GAAGR,gBAAgB,CAACO,OAAO,CAACF,EAAE,CAAC;EAE1C,IAAIC,KAAK,GAAGE,KAAK,EAAE;IACjB,OAAOJ,EAAE;;EAGX,OAAOC,EAAE;AACX;IAEaI,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,OAAO,EAAK;EACzC,IAAMC,SAAS,GAAG5F,aAAa,CAAC2F,OAAO,CAAC;EACxC,IAAM7E,KAAK,GAAG8E,SAAS,CAAC9E,KAAK,EAAE;EAC/B,IAAMsC,IAAI,GAAGwC,SAAS,CAACxC,IAAI,EAAE;EAC7B,IAAMyC,KAAK,GAAGD,SAAS,CAAC3E,IAAI,EAAE;EAC9B,IAAM6E,OAAO,GAAGF,SAAS,CAAC1E,MAAM,EAAE;EAClC,IAAM6E,OAAO,GAAGH,SAAS,CAACzE,MAAM,EAAE;EAClC,IAAM6E,YAAY,GAAGJ,SAAS,CAACK,WAAW,EAAE;EAC5C,IAAMC,OAAO,GAAGN,SAAS,CAACO,UAAU,EAAE;EAEtC,IACErF,KAAK,KAAK,CAAC,IACXsC,IAAI,KAAK,CAAC,IACVyC,KAAK,KAAK,CAAC,IACXC,OAAO,KAAK,CAAC,IACbC,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,MAAM;GACd,MAAM,IACL5C,IAAI,KAAK,CAAC,IACVyC,KAAK,KAAK,CAAC,IACXC,OAAO,KAAK,CAAC,IACbC,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,OAAO;GACf,MAAM,IACLE,OAAO,KAAK,CAAC,IACbL,KAAK,KAAK,CAAC,IACXC,OAAO,KAAK,CAAC,IACbC,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,MAAM;GACd,MAAM,IACLH,KAAK,KAAK,CAAC,IACXC,OAAO,KAAK,CAAC,IACbC,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,KAAK;GACb,MAAM,IACLF,OAAO,KAAK,CAAC,IACbC,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,MAAM;GACd,MAAM,IACLD,OAAO,KAAK,CAAC,IACbC,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,QAAQ;GAChB,MAAM,IACLA,YAAY,KAAK,CAAC,EAClB;IACA,OAAO,QAAQ;;EAGjB,OAAO,QAAQ,CAAC;AAClB;;;;;ACpSO,SAASI,sBAAsBA,CAACC,MAAM,EAAE;EAC7C,IAAMC,KAAK,GAAGD,MAAM,IAAI,EAAE;EAE1B,OAAOE,eAAS,CACdC,aAAO,CAACF,KAAK,CAAC,CACX3F,GAAG,CAAC,UAAA+C,IAAA,EAAkB;IAAA,IAAAC,KAAA,GAAAC,kCAAA,CAAAF,IAAA;MAAhBG,GAAG,GAAAF,KAAA;MAAE7B,KAAK,GAAA6B,KAAA;IACf,IACE,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC8C,QAAQ,CAAC5C,GAAG,CAAC,EACjF;MACA,IAAI6C,KAAK,CAACC,OAAO,CAAC7E,KAAK,CAAC,IAAIA,KAAK,CAACe,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI;;;IAIf,IAAIgB,GAAG,KAAK,OAAO,IAAI/B,KAAK,EAAE;MAC5B,IAAI4E,KAAK,CAACC,OAAO,CAAC7E,KAAK,CAAC,IAAI,CAACA,KAAK,CAACe,MAAM,EAAE;QACzC,OAAO,IAAI;OACZ,MAAM,IAAI,CAACU,MAAM,CAACqD,IAAI,CAAC9E,KAAK,CAAC,CAACe,MAAM,EAAE;QACrC,OAAO,IAAI;;;IAIf,OAAO,CAACgB,GAAG,EAAE/B,KAAK,CAAC;GACpB,CAAC,CACD+E,MAAM,CAACC,OAAO,CACnB,CAAC;AACH;AAEO,SAASC,aAAaA,CAACV,MAAM,EAAE;EACpC,IAAMC,KAAK,GAAGD,MAAM,IAAI,EAAE;EAE1B,OAAOD,sBAAsB,CAAAhG,eAAA,CAAAA,eAAA,KACxBkG,KAAK;IACRU,OAAO,EAAE,CAACV,KAAK,CAACU,OAAO,IAAI,EAAE,EAAEH,MAAM,CAAC,UAACI,CAAC;MAAA,OAAKA,CAAC,CAACC,QAAQ;MAAC;IACxDC,cAAc,EAAE,CAACb,KAAK,CAACa,cAAc,IAAI,EAAE,EAAEN,MAAM,CACjD,UAACO,EAAE;MAAA,OAAK,EAAE,CAACA,EAAE,CAACC,SAAS,IAAI,CAACD,EAAE,CAAC5F,WAAW,CAAC;KAC7C;IACD,CAAC;AACJ;AAEO,SAAS8F,eAAeA,GAA2B;EAAA,IAA1BC,MAAM,GAAArH,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;EAAA,IAAEsH,MAAM,GAAAtH,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;EACtD,OACEuH,YAAM,CACJlE,MAAM,CAACC,OAAO,CAAE+D,MAAM,IAAIA,MAAM,CAACG,KAAK,IAAK,EAAE,CAAC,EAC9CnE,MAAM,CAACC,OAAO,CAAEgE,MAAM,IAAIA,MAAM,CAACE,KAAK,IAAK,EAAE,CAC/C,CAAC,IAAID,YAAM,CAACF,MAAM,EAAEC,MAAM,CAAC;AAE/B;AAEO,SAASG,YAAYA,CAACrB,KAAK,EAAE;EAClC,IAAM9E,WAAW,GAAG,CAAC8E,KAAK,CAACa,cAAc,IAAI,EAAE,EAAES,IAAI,CAAC,UAAChH,CAAC;IAAA,OAAKA,CAAC,CAACY,WAAW;IAAC;EAE3E,IAAIA,WAAW,EAAE;IACf,OAAAqG,mCAAA,KACGrG,WAAW,CAACsG,SAAS,EAAG,KAAK;GAEjC,MAAM,IACL,CAACxB,KAAK,CAACyB,QAAQ,IAAI,EAAE,EAAElF,MAAM,GAAG,CAAC,IACjC,CAACyD,KAAK,CAAC0B,UAAU,IAAI,EAAE,EAAEnF,MAAM,GAAG,CAAC,EACnC;IACA,OAAAgF,mCAAA,KACGvB,KAAK,CAACyB,QAAQ,CAAC,CAAC,CAAC,EAAG,MAAM;GAE9B,MAAM,IAAI,CAACzB,KAAK,CAAC0B,UAAU,IAAI,EAAE,EAAEnF,MAAM,GAAG,CAAC,EAAE;IAC9C,OAAAgF,mCAAA,KACGvB,KAAK,CAAC0B,UAAU,CAAC,CAAC,CAAC,EAAG,KAAK;;EAIhC,OAAO,EAAE;AACX;AAEO,SAASC,iBAAiBA,CAACC,QAAQ,EAA0B;EAAA,IAAxBC,QAAQ,GAAAjI,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;EAAA,IAAEkI,OAAO,GAAAlI,SAAA,CAAA2C,MAAA,OAAA3C,SAAA,MAAAL,SAAA;EAChE,IAAAwI,MAAA,GAA4B/E,WAAK,CAAC4E,QAAQ,CAAC;IAAnC5B,KAAK,GAAA+B,MAAA,CAAL/B,KAAK;IAAKgC,KAAK,GAAAC,4CAAA,CAAAF,MAAA,EAAAG,WAAA;EACvB,IAAQC,IAAI,GAAyBL,OAAO,CAApCK,IAAI;IAAEC,kBAAkB,GAAKN,OAAO,CAA9BM,kBAAkB;EAChC,IAAMlH,WAAW,GAAGkH,kBAAkB,IAAI3I,mBAAmB;EAE7D,IAAI4I,KAAK,GAAAvI,eAAA;IACPkG,KAAK,EAALA;KACGgC,KAAK,CACT;EAED,IAAIM,QAAQ,GAAG,IAAI;EACnB,IAAI,CAACtB,eAAe,CAAChB,KAAK,EAAE6B,QAAQ,CAAC,EAAE;IACrCS,QAAQ,GAAGtC,KAAK;;EAGlB,IAAII,KAAK,CAACC,OAAO,CAACiC,QAAQ,CAAC,IAAIlC,KAAK,CAACC,OAAO,CAACwB,QAAQ,CAAC,EAAE;IACtD,OAAOD,QAAQ;;EAGjB,IAAIU,QAAQ,EAAE;IACZ,IACE,CAACT,QAAQ,CAAChB,cAAc,IAAI,EAAE,EAAEtE,MAAM,KAAK,CAAC,IAC5C,CAAC+F,QAAQ,CAACzB,cAAc,IAAI,EAAE,EAAEtE,MAAM,KAAK,CAAC,IAC5C+F,QAAQ,CAACzB,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,IACtC2G,QAAQ,CAAChB,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,KACpCoH,QAAQ,CAACzB,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,EACxC;MACAmH,KAAK,GAAAvI,eAAA,CAAAA,eAAA,KACAuI,KAAK;QACRD,kBAAkB,EAAEE,QAAQ,CAACzB,cAAc,CAAC,CAAC,CAAC,CAAC3F;QAChD;;IAGH,IACG,CAAC2G,QAAQ,CAACJ,QAAQ,IAAI,EAAE,EAAElF,MAAM,KAAK,CAAC,IACrC,CAAC+F,QAAQ,CAACb,QAAQ,IAAI,EAAE,EAAElF,MAAM,GAAG,CAAC,IACrC,CAACsF,QAAQ,CAACJ,QAAQ,IAAI,EAAE,EAAElF,MAAM,KAAK,CAAC,IACrC,CAAC+F,QAAQ,CAACb,QAAQ,IAAI,EAAE,EAAElF,MAAM,KAAK,CAAC,IACtCsF,QAAQ,CAACJ,QAAQ,CAAC,CAAC,CAAC,KAAKa,QAAQ,CAACb,QAAQ,CAAC,CAAC,CAAE,EAChD;MACA,IAAAc,KAAA,GAAaD,QAAQ,CAACzB,cAAc,IAAI,EAAE;QAAA2B,KAAA,GAAAlF,kCAAA,CAAAiF,KAAA;QAAnCzB,EAAE,GAAA0B,KAAA;MACT,IAAMC,oBAAoB,GAAGN,IAAI,CAACO,2BAA2B,CAC3DJ,QAAQ,CAACb,QAAQ,CAAC,CAAC,CACrB,CAAC;MACDa,QAAQ,GAAAxI,eAAA,CAAAA,eAAA,KACHwI,QAAQ;QACXzB,cAAc,EAAE4B,oBAAoB,GAChC,CACA;UACEjB,SAAS,EAAEiB,oBAAoB;UAC/BvH,WAAW,EAAG4F,EAAE,IAAIA,EAAE,CAAC5F,WAAW,IAAKA,WAAW;UAClD6F,SAAS,EAAED,EAAE,IAAIA,EAAE,CAACC;SACrB,CACF,GACC;QACL;MAED,OAAAjH,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjBC,yBAAyB,EAAE,IAAI;QAC/B5C,KAAK,EAAEsC,QAAQ;QACfO,SAAS,EAAEJ,oBAAoB,GAAG,MAAM,GAAG;;;IAI/C,IACE,CAACZ,QAAQ,CAACH,UAAU,IAAI,EAAE,EAAEnF,MAAM,KAAK,CAAC,IACxC,CAAC+F,QAAQ,CAACZ,UAAU,IAAI,EAAE,EAAEnF,MAAM,GAAG,CAAC,EACtC;MACA+F,QAAQ,GAAAxI,eAAA,CAAAA,eAAA,KACHwI,QAAQ;QACXzB,cAAc,EAAE,CAACyB,QAAQ,CAACzB,cAAc,IAAI,EAAE,EAAExG,GAAG,CAAC,UAACyG,EAAE;UAAA,OAAAhH,eAAA,CAAAA,eAAA,KAClDgH,EAAE;YACL5F,WAAW,EAAE3B;;SACb;QACH;MAED,OAAAO,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjBC,yBAAyB,EAAE,IAAI;QAC/B5C,KAAK,EAAEsC,QAAQ;QACfO,SAAS,EAAE;;;IAIf,IACE,CAAChB,QAAQ,CAACH,UAAU,IAAI,EAAE,EAAEnF,MAAM,GAAG,CAAC,IACtC,CAAC+F,QAAQ,CAACZ,UAAU,IAAI,EAAE,EAAEnF,MAAM,KAAK,CAAC,EACxC;MACA+F,QAAQ,GAAAxI,eAAA,CAAAA,eAAA,KACHwI,QAAQ;QACXzB,cAAc,EAAE,CAACyB,QAAQ,CAACzB,cAAc,IAAI,EAAE,EAAExG,GAAG,CAAC,UAACyG,EAAE;UAAA,OAAAhH,eAAA,CAAAA,eAAA,KAClDgH,EAAE;YACL5F,WAAW,EAAE4F,EAAE,CAAC5F,WAAW,IAAIA;;SAC/B;QACH;MAED,OAAApB,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjBC,yBAAyB,EAAE,IAAI;QAC/B5C,KAAK,EAAEsC,QAAQ;QACfO,SAAS,EAAE,CAACP,QAAQ,CAACzB,cAAc,IAAI,EAAE,EAAEtE,MAAM,GAAG,MAAM,GAAG;;;IAIjE,IACE,CAAC,CAACsF,QAAQ,CAACH,UAAU,IAAI,EAAE,EAAEnF,MAAM,GAAG,CAAC,IACrC,CAACsF,QAAQ,CAACJ,QAAQ,IAAI,EAAE,EAAElF,MAAM,GAAG,CAAC,KACtC,CAAC+F,QAAQ,CAACZ,UAAU,IAAI,EAAE,EAAEnF,MAAM,KAAK,CAAC,IACxC,CAAC+F,QAAQ,CAACb,QAAQ,IAAI,EAAE,EAAElF,MAAM,KAAK,CAAC,EACtC;MACA+F,QAAQ,GAAAxI,eAAA,CAAAA,eAAA,KACHwI,QAAQ;QACXzB,cAAc,EAAE,EAAE;QAClBH,OAAO,EAAE;QACV;MAED,OAAA5G,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjBC,yBAAyB,EAAE,IAAI;QAC/B5C,KAAK,EAAEsC,QAAQ;QACfF,kBAAkB,EAAE;;;IAGxB,OAAOC,KAAK;;EAGd,IAAIA,KAAK,CAACQ,SAAS,EAAE;IACnB,IAAMC,YAAY,GAAGT,KAAK,CAACQ,SAAS;IACpC,IACE,CAACC,YAAY,KAAK,MAAM,IAAIA,YAAY,KAAK,MAAM,KACnD,CAACjB,QAAQ,CAAChB,cAAc,IAAI,EAAE,EAAEtE,MAAM,KAAK,CAAC,IAC5C,CAACsF,QAAQ,CAAChB,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,EACvC;MACA,IAAA6H,qBAAA,GAAAzF,kCAAA,CAAauE,QAAQ,CAAChB,cAAc;QAA7BC,GAAE,GAAAiC,qBAAA;MACT,OAAAjJ,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjB3C,KAAK,EAAAlG,eAAA,CAAAA,eAAA,KACA+H,QAAQ;UACXhB,cAAc,EAAE,CAAA/G,eAAA,CAAAA,eAAA,KAAMgH,GAAE;YAAE5F,WAAW,EAAXA;;;;;IAKhC,IACE,CAAC4H,YAAY,KAAK,KAAK,IACrBA,YAAY,KAAK,OAAO,IACxBA,YAAY,KAAK,QAAQ,KAC3B,CAACjB,QAAQ,CAAChB,cAAc,IAAI,EAAE,EAAEtE,MAAM,KAAK,CAAC,IAC5CsF,QAAQ,CAAChB,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,EACtC;MACA,IAAA8H,sBAAA,GAAA1F,kCAAA,CAAauE,QAAQ,CAAChB,cAAc;QAA7BC,IAAE,GAAAkC,sBAAA;MACT,OAAAlJ,eAAA,CAAAA,eAAA,KACKuI,KAAK;QACRM,WAAW,EAAE,IAAI;QACjBC,yBAAyB,EAAE,IAAI;QAC/B5C,KAAK,EAAAlG,eAAA,CAAAA,eAAA,KACA+H,QAAQ;UACXhB,cAAc,EAAE,CAAA/G,eAAA,CAAAA,eAAA,KAAMgH,IAAE;YAAE5F,WAAW,EAAE3B;;;;;;EAM/C,OAAO8I,KAAK;AACd;AAEO,SAASY,cAAcA,CAACjD,KAAK,EAAE;EACpC,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,KAAK;;EAGd,OAAO,CAACI,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC,EAAEkD,KAAK,CACnD,UAACC,CAAC;IAAA,OAAMA,CAAC,CAAC1B,QAAQ,IAAI0B,CAAC,CAAC1B,QAAQ,CAAClF,MAAM,IACpC4G,CAAC,CAACzB,UAAU,IAAIyB,CAAC,CAACzB,UAAU,CAACnF,MAAO,IACpC4G,CAAC,CAACtC,cAAc,IAAIsC,CAAC,CAACtC,cAAc,CAACtE,MAAO;GACjD,CAAC;AACH;AAEO,SAAS6G,aAAaA,CAC3BT,WAAW,EACXU,WAAW,EACXC,gBAAgB,EAChBC,UAAU,EACVC,eAAe,EACf;EACA,IAAMC,eAAe,GAAA3J,eAAA,CAAAA,eAAA,KAChB6I,WAAW;IACde,CAAC,EAAAC,sCAAA,CAAMhB,WAAW,CAACe,CAAC,CAAC;IACrBE,CAAC,EAAAD,sCAAA,CAAMhB,WAAW,CAACiB,CAAC;IACrB;EACD,IAAMC,EAAE,GAAGlB,WAAW,CAACY,UAAU,CAAC,CAACF,WAAW,CAAC;EAC/C,IAAMS,SAAS,GAAGL,eAAe,CAACD,eAAe,CAAC,CAACjH,MAAM,GAAG,CAAC;EAE7D,IAAIsH,EAAE,KAAK,UAAU,EAAE;IACrBP,gBAAgB,GAAGQ,SAAS,GAAG,CAAC;GACjC,MAAM,IACLP,UAAU,KAAKC,eAAe,IAC9BF,gBAAgB,IAAIQ,SAAS,IAC7BL,eAAe,CAACD,eAAe,CAAC,CAACM,SAAS,CAAC,KAAK,UAAU,EAC1D;IACAR,gBAAgB,GAAGQ,SAAS,GAAG,CAAC;GACjC,MAAM,IACLP,UAAU,KAAKC,eAAe,IAC9BF,gBAAgB,GAAGQ,SAAS,IAC5BL,eAAe,CAACD,eAAe,CAAC,CAACM,SAAS,CAAC,KAAK,UAAU,EAC1D;IACAR,gBAAgB,GAAGQ,SAAS;;EAG9BL,eAAe,CAACF,UAAU,CAAC,CAACQ,MAAM,CAACV,WAAW,EAAE,CAAC,CAAC;EAClDI,eAAe,CAACD,eAAe,CAAC,CAACO,MAAM,CAACT,gBAAgB,EAAE,CAAC,EAAEO,EAAE,CAAC;EAEhE,OAAOJ,eAAe;AACxB;AAEO,SAASO,eAAeA,CAACC,IAAI,EAAEZ,WAAW,EAAEC,gBAAgB,EAAE;EACnE,IAAMY,MAAM,GAAAP,sCAAA,CAAOM,IAAI,CAAC;EACxB,IAAAE,cAAA,GAAkBD,MAAM,CAACH,MAAM,CAACV,WAAW,EAAE,CAAC,CAAC;IAAAe,eAAA,GAAA9G,kCAAA,CAAA6G,cAAA;IAAxCE,OAAO,GAAAD,eAAA;EACdF,MAAM,CAACH,MAAM,CAACT,gBAAgB,EAAE,CAAC,EAAEe,OAAO,CAAC;EAE3C,OAAOH,MAAM;AACf;AAEO,SAASI,cAAcA,GAAe;EAAA,IAAd5D,OAAO,GAAA9G,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;EACzC,OAAO8G,OAAO,CAAC6D,MAAM,CAAC,UAACC,IAAI,EAAEjE,MAAM,EAAK;IACtC,IAAIA,MAAM,CAACkE,EAAE,IAAIlE,MAAM,CAACmE,GAAG,EAAE;MAC3B,UAAAC,MAAA,CAAAhB,sCAAA,CAAWa,IAAI,GAAAb,sCAAA,CAAKW,cAAc,CAAC/D,MAAM,CAACkE,EAAE,IAAIlE,MAAM,CAACmE,GAAG,CAAC;;IAG7D,UAAAC,MAAA,CAAAhB,sCAAA,CAAWa,IAAI,IAAEjE,MAAM;GACxB,EAAE,EAAE,CAAC;AACR;AAEO,SAASqE,eAAeA,GAAa;EAAA,IAAZ5E,KAAK,GAAApG,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;EACxC,IAAM0G,IAAI,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC;EACnD,IAAMuE,OAAO,GAAG,IAAIC,GAAG,EAAE;EAEzBxE,IAAI,CAACnD,OAAO,CAAC,UAACI,GAAG;IAAA,OAAK,CAACyC,KAAK,CAACzC,GAAG,CAAC,IAAI,EAAE,EAAEJ,OAAO,CAAC,UAAC4H,MAAM;MAAA,OAAKF,OAAO,CAAC9I,GAAG,CAACgJ,MAAM,CAAC;MAAC;IAAC;EAClF,CAAC/E,KAAK,CAACa,cAAc,IAAI,EAAE,EAAE1D,OAAO,CAAC,UAAC2D,EAAE;IAAA,OAAK+D,OAAO,CAAC9I,GAAG,CAAC+E,EAAE,CAACU,SAAS,CAAC;IAAC;EAEvE8C,cAAc,CAACtE,KAAK,CAACU,OAAO,CAAC,CAACvD,OAAO,CAAC,UAACoD,MAAM;IAAA,OAAKsE,OAAO,CAAC9I,GAAG,CAACwE,MAAM,CAACiB,SAAS,IAAIjB,MAAM,CAACwE,MAAM,CAAC;IAAC;EAEjG,OAAApB,sCAAA,CAAWkB,OAAO;AACpB;AAEO,SAASG,wBAAwBA,CAACC,YAAY,EAAE7D,KAAK,EAAE;EAC5D,IAAM8D,GAAG,GAAG,IAAIJ,GAAG,EAAE;EACrB,IAAMK,mBAAmB,GAAGC,aAAO,CAACC,UAAI,CAAC,IAAI,CAAC,EAAEJ,YAAY,CAAC;EAC7D,IAAM/H,OAAO,GAAGkD,KAAK,CAACC,OAAO,CAACe,KAAK,CAAC,GAAGA,KAAK,GAAGnE,MAAM,CAACC,OAAO,CAACkE,KAAK,IAAI,EAAE,CAAC;EAC1E,IAAMkE,gBAAgB,GAAG,EAAE;EAE3BpI,OAAO,CAACC,OAAO,CAAC,UAAAoI,KAAA,EAA8B;IAAA,IAAAC,KAAA,GAAAlI,kCAAA,CAAAiI,KAAA;MAA5BE,QAAQ,GAAAD,KAAA;MAAEE,YAAY,GAAAF,KAAA;IACtC,IAAIE,YAAY,KAAK,MAAM,IAAIP,mBAAmB,CAACM,QAAQ,CAAC,EAAE;MAC5DP,GAAG,CAACnJ,GAAG,CAAC0J,QAAQ,CAAC;MACjBH,gBAAgB,CAACxJ,IAAI,CAAAhC,eAAA,CAAAA,eAAA,KAChBqL,mBAAmB,CAACM,QAAQ,CAAC;QAChCrE,KAAK,EAAEsE;QACR,CAAC;;GAEL,CAAC;EACFT,YAAY,CAAC9H,OAAO,CAAC,UAAC4H,MAAM,EAAK;IAC/B,IAAI,CAACG,GAAG,CAACS,GAAG,CAACZ,MAAM,CAAClB,EAAE,CAAC,EAAE;MACvByB,gBAAgB,CAACxJ,IAAI,CAAAhC,eAAA,CAAAA,eAAA,KAChBiL,MAAM;QACT3D,KAAK,EAAE2D,MAAM,CAAC3D,KAAK,IAAI;QACxB,CAAC;;GAEL,CAAC;EAEF,OAAOkE,gBAAgB;AACzB;AAEO,SAASM,WAAWA,CAACC,MAAM,EAAEC,KAAK,EAAEnD,WAAW,EAAEoD,iBAAiB,EAAE;EACzE,IAAMC,aAAa,GAAGH,MAAM,CAACtF,MAAM,CAAC,UAAC/E,KAAK;IAAA,OAAKA,KAAK,IAAI,IAAI;IAAC;EAE7D,IACEmH,WAAW,IACXA,WAAW,CAACiD,WAAW,IACvBjD,WAAW,CAACiD,WAAW,CAACE,KAAK,CAAC,EAC9B;IACA,QAAQnD,WAAW,CAACiD,WAAW,CAACE,KAAK,CAAC,EAAAnB,MAAA,CAAAhB,sCAAA,CAAKqC,aAAa;GACzD,MAAM,IAAID,iBAAiB,CAACJ,GAAG,CAACK,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;IAClD,QAAQF,KAAK,EAAAnB,MAAA,CAAAhB,sCAAA,CAAKqC,aAAa;;EAGjC,OAAOA,aAAa;AACtB;;;;;;;AC9VA,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAK,EAAK;EAChC,IAAMC,GAAG,GAAG,IAAIC,GAAG,EAAE;EAErB,OAAO,UAACC,IAAI,EAAK;IACfA,IAAI,CAAClJ,OAAO,CAAC,UAACmJ,GAAG,EAAK;MACpB,IAAM/I,GAAG,GAAG2I,KAAK,CAACI,GAAG,CAAC;MAEtB,IAAI,CAACH,GAAG,CAACR,GAAG,CAACpI,GAAG,CAAC,EAAE;QACjB4I,GAAG,CAACI,GAAG,CAAChJ,GAAG,EAAE,EAAE,CAAC;;MAGlB4I,GAAG,CAACK,GAAG,CAACjJ,GAAG,CAAC,CAACzB,IAAI,CAACwK,GAAG,CAAC;KACvB,CAAC;IAEF,OAAOlG,KAAK,CAAC9E,IAAI,CAAC6K,GAAG,CAACjJ,OAAO,EAAE,CAAC;GACjC;AACH,CAAC;AAED,IAAMuJ,MAAM,GAAG,SAATA,MAAMA,CAAIC,GAAG,EAAK;EACtB,IAAM3J,GAAG,GAAG,EAAE;EACd2J,GAAG,CAACvJ,OAAO,CAAC,UAACwJ,MAAM,EAAK;IACtBA,MAAM,CAACxJ,OAAO,CAAC,UAAAyJ,OAAO;MAAA,OAAI7J,GAAG,CAACjB,IAAI,CAAC8K,OAAO,CAAC;MAAC;GAC7C,CAAC;EAEF,OAAO7J,GAAG;AACZ,CAAC;AAEM,IAAM8J,UAAU,GAAG;EACxBC,aAAa,EAAE,cAAc;EAC7BC,wBAAwB,EAAE,uBAAuB;EACjDC,cAAc,EAAE;AAClB,CAAC;IAEKC,SAAS;EAab,SAAAA,UAAYC,YAAY,EAAgB;IAAA,IAAdpF,OAAO,GAAAlI,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;IAAAuN,mCAAA,OAAAF,SAAA;IACpC,IAAI,CAACC,YAAY,GAAGA,YAAY;IAEhC,IAAI,IAAI,CAACA,YAAY,CAACE,SAAS,IAAI,IAAI,EAAE;MACvC,IAAI,CAACA,SAAS,GAAGF,YAAY,CAACE,SAAS;MACvC,IAAI,CAACC,aAAa,GAAGH,YAAY,CAACzL,OAAO;KAC1C,MAAM;MACL,IAAI,CAAC2L,SAAS,GAAGP,UAAU,CAACC,aAAa;MACzC,IAAI,CAACI,YAAY,CAACI,UAAU,GAAAxN,eAAA,CAAAA,eAAA,KACvBoN,YAAY,CAAClH,KAAK;QACrBoH,SAAS,EAAE,IAAI,CAACA;QACjB;MACD,IAAI,CAACC,aAAa,GAAG,CAACH,YAAY,CAAC;;IAGrC,IAAI,CAACjK,MAAM,CAAC4I,MAAM,CAACgB,UAAU,CAAC,CAAC1G,QAAQ,CAAC,IAAI,CAACiH,SAAS,CAAC,EAAE;MACvD,MAAM,IAAIG,KAAK,CAAC,oBAAoB,CAAC;;IAGvC,IAAI,CAACC,iBAAiB,GAAG1F,OAAO,CAAC0F,iBAAiB;IAClD,IAAI,CAAC1F,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAAC2F,sBAAsB,GAAG,EAAE;;EACjCC,gCAAA,CAAAT,SAAA;IAAA1J,GAAA;IAAA/B,KAAA,EAED,SAAAmM,UAAUC,gBAAgB,EAAEjF,WAAW,EAAE;MACvC,IAAI,IAAI,CAACyE,SAAS,KAAKP,UAAU,CAACE,wBAAwB,EAAE;QAC1D,MAAM,IAAIQ,KAAK,CAAC,6DAA6D,CAAC;;MAEhF,IAAI,IAAI,CAACH,SAAS,KAAKP,UAAU,CAACG,cAAc,EAAE;QAChD,MAAM,IAAIO,KAAK,CAAC,0DAA0D,CAAC;;MAG7E,IAAQvH,KAAK,GAAK,IAAI,CAACqH,aAAa,CAAC,CAAC,CAAC,CAA/BrH,KAAK;MACb,IAAA6H,qBAAA,GAAuCD,gBAAgB,CAA/CE,OAAO;QAAPA,OAAO,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;QAAAE,qBAAA,GAAmBH,gBAAgB,CAAjCI,OAAO;QAAPA,OAAO,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;MAClC,IAAME,qBAAqB,GAAG,IAAI,CAACC,oBAAoB,CAACvF,WAAW,CAAC;MAEpE,IAAMkD,MAAM,GAAG,EAAE;MACjBoC,qBAAqB,CAACvE,CAAC,CAACvG,OAAO,CAAC,UAAC4H,MAAM,EAAEoD,YAAY;QAAA,OAAKtC,MAAM,CAAC/J,IAAI,CAAC,CAACiJ,MAAM,EAAE+C,OAAO,CAACK,YAAY,CAAC,CAAC,CAAC;QAAC;MACvGF,qBAAqB,CAACrE,CAAC,CAACzG,OAAO,CAAC,UAAC4H,MAAM,EAAEoD,YAAY;QAAA,OAAKtC,MAAM,CAAC/J,IAAI,CAAC,CAACiJ,MAAM,EAAEiD,OAAO,CAACG,YAAY,CAAC,CAAC,CAAC;QAAC;MAEvG,IAAAC,WAAA,GAAuD,IAAI,CAACpI,KAAK,EAAE;QAAAqI,mBAAA,GAAAD,WAAA,CAA3D1H,OAAO;QAAE4H,aAAa,GAAAD,mBAAA,cAAG,EAAE,GAAAA,mBAAA;QAAAE,oBAAA,GAAAH,WAAA,CAAEI,QAAQ;QAARA,QAAQ,GAAAD,oBAAA,cAAG,EAAE,GAAAA,oBAAA;MAClD,IAAQ9G,QAAQ,GAAK,IAAI,CAAC4F,aAAa,CAAC,CAAC,CAAC,CAACoB,UAAU,CAA7ChH,QAAQ;MAChB,IAAArE,IAAA,GAAsByI,MAAM,CAACvE,IAAI,CAAC,UAAA7D,KAAA;UAAA,IAAAC,KAAA,GAAAJ,kCAAA,CAAAG,KAAA;YAAEsH,MAAM,GAAArH,KAAA;UAAA,OAAMqH,MAAM,KAAK,UAAU;UAAC,IAAI,EAAE;QAAA1H,KAAA,GAAAC,kCAAA,CAAAF,IAAA;QAArEsL,WAAW,GAAArL,KAAA;MAElB,IAAIqL,WAAW,KAAKnP,SAAS,EAAE;QAAA,IAAAoP,YAAA,GACb1L,MAAM,CAACqD,IAAI,CAACmB,QAAQ,CAAC;QAAA,IAAAmH,aAAA,GAAAtL,kCAAA,CAAAqL,YAAA;QAApCD,WAAW,GAAAE,aAAA;;MAGd,IAAI,CAAC,CAACnH,QAAQ,CAACiH,WAAW,CAAC,IAAIjH,QAAQ,CAACiH,WAAW,CAAC,CAACG,YAAY,IAAI,EAAE,EAAEtM,MAAM,EAAE;QAC/E,OAAO,IAAI;;MAGb,IAAMmE,OAAO,IACX;QACEqE,MAAM,EAAE2D,WAAW;QACnB9H,QAAQ,EAAE;OACX,EAAA+D,MAAA,CAAAhB,sCAAA,CACE2E,aAAa,EACjB;MACD,IAAMzH,cAAc,GAAG,EAAE;MAEzBgF,MAAM,CAACtF,MAAM,CAAC,UAAAuI,KAAA;QAAA,IAAAvG,KAAA,GAAAjF,kCAAA,CAAAwL,KAAA;UAAE/D,MAAM,GAAAxC,KAAA;QAAA,OAAMwC,MAAM,KAAK,UAAU;QAAC,CAC/C5H,OAAO,CAAC,UAAAqF,KAAA,EAAqB;QAAA,IAAA+C,KAAA,GAAAjI,kCAAA,CAAAkF,KAAA;UAAnBuC,MAAM,GAAAQ,KAAA;UAAE/J,KAAK,GAAA+J,KAAA;QACtB,IAAAwD,aAAA,GAA2ChE,MAAM,CAAC1I,KAAK,CAAC,GAAG,CAAC;UAAA2M,cAAA,GAAA1L,kCAAA,CAAAyL,aAAA;UAArDE,QAAQ,GAAAD,cAAA;UAAExH,SAAS,GAAAwH,cAAA;UAAE9N,WAAW,GAAA8N,cAAA;QAEvC,IAAI9N,WAAW,KAAK3B,SAAS,EAAE;UAC7B,IAAMY,KAAK,GAAGkB,QAAQ,CAACG,KAAK,EAAEA,KAAK,CAAC,CAACf,MAAM,CAACS,WAAW,CAAC;UACxD,IAAMgO,qBAAqB,GAAGlJ,KAAK,CAACa,cAAc,CAACS,IAAI,CAAC,UAACR,EAAE;YAAA,OAAKA,EAAE,CAACU,SAAS;YAAC;UAE7E,IAAIT,SAAS,GAAG,CACd5G,KAAK,CAACuB,KAAK,EACXvB,KAAK,CAACwB,GAAG,CACV;UAED,IAAIuN,qBAAqB,aAArBA,qBAAqB,eAArBA,qBAAqB,CAAEnI,SAAS,EAAE;YACpC,IAAAoI,qBAAA,GAAA7L,kCAAA,CAAqC4L,qBAAqB,CAACnI,SAAS;cAA7DqI,aAAa,GAAAD,qBAAA;cAAEE,WAAW,GAAAF,qBAAA;YAEjCpI,SAAS,GAAG,CACV/H,yBAAK,CAACoQ,aAAa,CAAC,GAAGjP,KAAK,CAACuB,KAAK,GAAG1C,yBAAK,CAACoQ,aAAa,CAAC,GAAGjP,KAAK,CAACuB,KAAK,EACvE1C,yBAAK,CAACqQ,WAAW,CAAC,GAAGlP,KAAK,CAACwB,GAAG,GAAG3C,yBAAK,CAACqQ,WAAW,CAAC,GAAGlP,KAAK,CAACwB,GAAG,CAChE;;UAGHkF,cAAc,CAAC/E,IAAI,CAAC;YAClB0F,SAAS,EAAE,CAACyH,QAAQ,EAAEzH,SAAS,CAAC,CAAC8H,IAAI,CAAC,GAAG,CAAC;YAC1CvI,SAAS,EAAEA,SAAS,CAAC1G,GAAG,CAAC,UAACkP,EAAE;cAAA,OAAKA,EAAE,CAAChP,MAAM,CAAC,yBAAyB,CAAC;;WACtE,CAAC;SACH,MAAM,IAAIiB,KAAK,IAAI,IAAI,EAAE;UACxBkF,OAAO,CAAC5E,IAAI,CAAC;YACXiJ,MAAM,EAANA,MAAM;YACNnE,QAAQ,EAAE;WACX,CAAC;SACH,MAAM;UACLF,OAAO,CAAC5E,IAAI,CAAC;YACXiJ,MAAM,EAANA,MAAM;YACNnE,QAAQ,EAAE,QAAQ;YAClBiF,MAAM,EAAE,CAACrK,KAAK,CAACgO,QAAQ,EAAE;WAC1B,CAAC;;OAEL,CAAC;MAEJ,IACE3I,cAAc,CAACtE,MAAM,KAAK,CAAC,IAC3ByD,KAAK,CAACa,cAAc,CAACtE,MAAM,GAAG,CAAC,IAC/ByD,KAAK,CAACa,cAAc,CAAC,CAAC,CAAC,CAAC3F,WAAW,IAAI,IAAI,EAC3C;QACA2F,cAAc,CAAC/E,IAAI,CAACkE,KAAK,CAACa,cAAc,CAAC,CAAC,CAAC,CAAC;;MAG9C,OAAA/G,eAAA,CAAAA,eAAA,CAAAA,eAAA,KACK2H,QAAQ,CAACiH,WAAW,CAAC,CAACe,mBAAmB;QAC5C/I,OAAO,EAAPA;SACI8H,QAAQ,CAACjM,MAAM,GAAG,CAAC,GAAG;QAAEiM,QAAQ,EAARA;OAAU,GAAG,EAAE;QAC3C3H,cAAc,EAAdA,cAAc;QACd2H,QAAQ,EAARA,QAAQ;QACRkB,QAAQ,EAAE1J,KAAK,CAAC0J;;;;IAEnBnM,GAAA;IAAA/B,KAAA,EAED,SAAAmO,OAAOhH,WAAW,EAAE;MAAA,IAAAiH,KAAA;MAClB,OAAO,IAAI,CAACC,WAAW,CAAClH,WAAW,CAAC,CAACtI,GAAG,CAAC,UAAAmL,KAAA;QAAA,IAAGhM,KAAK,GAAAgM,KAAA,CAALhM,KAAK;UAAEsQ,UAAU,GAAAtE,KAAA,CAAVsE,UAAU;UAAEvM,GAAG,GAAAiI,KAAA,CAAHjI,GAAG;QAAA,OAAQ;UACxE/D,KAAK,EAALA,KAAK;UACLsQ,UAAU,EAAVA,UAAU;UACVvM,GAAG,EAAHA,GAAG;UACHoM,MAAM,EAAEC,KAAI,CAACG,UAAU,CAACpH,WAAW,CAAC,CAACtI,GAAG,CAAC,UAAA2P,MAAA;YAAA,IAAGtG,CAAC,GAAAsG,MAAA,CAADtG,CAAC;cAAKuG,GAAG,GAAAhI,4CAAA,CAAA+H,MAAA,EAAA9H,WAAA;YAAA,OAAQ;cAAE1G,KAAK,EAAEyO,GAAG,CAAC1M,GAAG,CAAC;cAAEmG,CAAC,EAADA;aAAG;WAAC;SACrF;OAAC,CAAC;;;IACJnG,GAAA;IAAA/B,KAAA,EAED,SAAA0O,WAAWC,IAAI,EAAmB;MAAA,IAAjBC,WAAW,GAAAxQ,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,CAAC;MAC9B,IAAQoG,KAAK,GAAK,IAAI,CAACqH,aAAa,CAAC+C,WAAW,CAAC,CAAzCpK,KAAK;MAEb,OAAO,UAAAsG,GAAG,EAAI;QACZ,IAAM9K,KAAK,GAAG,SAARA,KAAKA,CAAI6O,OAAO;UAAA,OAAKF,IAAI,CAAC5J,MAAM,CAAC,UAAAjG,CAAC;YAAA,OAAIA,CAAC,KAAK,UAAU;YAAC,CAC1DD,GAAG,CAAC,UAAAC,CAAC;YAAA,OAAKgM,GAAG,CAAChM,CAAC,CAAC,IAAI,IAAI,GAAGgM,GAAG,CAAChM,CAAC,CAAC,GAAG,IAAI;WAAC,CAAC,CAACqK,MAAM,CAAC0F,OAAO,GAAG,CAACA,OAAO,CAAC,GAAG,EAAE,CAAC;;QAE9E,IAAIF,IAAI,CAAC7I,IAAI,CAAC,UAAAhH,CAAC;UAAA,OAAIA,CAAC,KAAK,UAAU;UAAC,IAAI,CAAC0F,KAAK,CAACyB,QAAQ,IAAI,EAAE,EAAElF,MAAM,EAAE;UACrE,OAAOyD,KAAK,CAACyB,QAAQ,CAACpH,GAAG,CAACmB,KAAK,CAAC;;QAGlC,OAAO,CAACA,KAAK,EAAE,CAAC;OACjB;;;IACF+B,GAAA;IAAA/B,KAAA,EAED,SAAA8O,iBAAiBJ,UAAU,EAAEK,SAAS,EAAE;MACtC,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,CAAC,EAAK;QACzB,IAAIA,CAAC,IAAI,IAAI,EAAE;UACb,OAAO,GAAG;SACX,MAAM,IAAIA,CAAC,KAAK,EAAE,EAAE;UACnB,OAAO,gBAAgB;SACxB,MAAM;UACL,OAAOA,CAAC;;OAEX;MACD,OAAOP,UAAU,CAAC7P,GAAG,CAACmQ,WAAW,CAAC,CAAClB,IAAI,CAACiB,SAAS,IAAI,IAAI,CAAC;;;IAC3DhN,GAAA;IAAA/B,KAAA,EAoED,SAAA0M,qBAAqBvF,WAAW,EAAE;MAChC,OAAOsE,SAAS,CAACyD,wBAAwB,CAAC,IAAI,CAACxD,YAAY,CAACI,UAAU,EAAE3E,WAAW,CAAC;;;IACrFpF,GAAA;IAAA/B,KAAA,EAED,SAAAmP,WAAWC,aAAa,EAAER,WAAW,EAAES,WAAW,EAAE;MAClD,IAAI,CAACD,aAAa,CAAC1P,WAAW,EAAE;QAC9B,OAAO,IAAI;;MAGb,IAAM6F,SAAS,GAAK6J,aAAa,CAA3B7J,SAAS;MAEf,IAAI,CAACA,SAAS,EAAE;QACd,IAAMgE,MAAM,GAAGkC,SAAS,CAAC6D,mBAAmB,CAACF,aAAa,CAAC;QAC3D,IAAMpM,KAAK,GAAGuM,UAAI,CAChB1Q,SAAG,CAAC,UAAAiM,GAAG;UAAA,OAAIA,GAAG,CAACvB,MAAM,CAAC,IAAIrL,aAAa,CAAC4M,GAAG,CAACvB,MAAM,CAAC,CAAC;UAAC,EACrDxE,YAAM,CAACC,OAAO,CAChB,CAAC,CAAC,IAAI,CAACwK,mCAAmC,CAACZ,WAAW,CAAC,CAAC;QAExDrJ,SAAS,GAAGvC,KAAK,CAACjC,MAAM,IAAI,CAC1BgI,YAAM,CAAC0G,WAAK,CAAC,UAAA3Q,CAAC;UAAA,OAAIA,CAAC,CAAC4Q,MAAM,EAAE;UAAC,EAAE1M,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,EAC/C+F,YAAM,CAAC4G,WAAK,CAAC,UAAA7Q,CAAC;UAAA,OAAIA,CAAC,CAAC4Q,MAAM,EAAE;UAAC,EAAE1M,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAChD,IAAI,IAAI;;MAGX,IAAI,CAACuC,SAAS,EAAE;QACd,OAAO,IAAI;;MAGb,IAAMqK,QAAQ,GAAGR,aAAa,CAAC7J,SAAS,GACtC6J,aAAa,CAAC7J,SAAS,CAACO,IAAI,CAAC,UAAAhH,CAAC;QAAA,OAAIA,CAAC,CAAC+Q,KAAK,CAAClQ,SAAS,CAAC;QAAC,GACrD,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAACgF,QAAQ,CAACyK,aAAa,CAAC1P,WAAW,CAAC;MAEnE,IAAAoQ,UAAA,GAAqBvK,SAAS;QAAAwK,WAAA,GAAAjO,kCAAA,CAAAgO,UAAA;QAAvB5P,KAAK,GAAA6P,WAAA;QAAE5P,GAAG,GAAA4P,WAAA;MACjB,IAAMpR,KAAK,GAAGkB,QAAQ,CAACK,KAAK,EAAEC,GAAG,CAAC;MAElC,IAAIV,uBAAuB,CAAC2P,aAAa,CAAC1P,WAAW,CAAC,EAAE;QACtD,OAAOjB,WAAW,CAAC2Q,aAAa,CAAC1P,WAAW,CAAC,CAC3CkQ,QAAQ,GAAGjR,KAAK,CAACM,MAAM,CAAC,GAAG,CAAC,GAAGN,KACjC,CAAC;;MAGH,IAAI,CAAC0Q,WAAW,IAAAlG,MAAA,CAAIiG,aAAa,CAACpJ,SAAS,OAAAmD,MAAA,CAAIiG,aAAa,CAAC1P,WAAW,EAAG,EAAE;QAC3E,MAAM,IAAIqM,KAAK,kBAAA5C,MAAA,CAAiBiG,aAAa,CAAC1P,WAAW,uCAAAyJ,MAAA,CAAkCiG,aAAa,CAACpJ,SAAS,OAAG,CAAC;;MAGxH,OAAOpD,4BAA4B,CACjC1C,KAAK,EAAEC,GAAG,EAAEkP,WAAW,IAAAlG,MAAA,CAAIiG,aAAa,CAACpJ,SAAS,OAAAmD,MAAA,CAAIiG,aAAa,CAAC1P,WAAW,EAAG,CAACA,WACrF,CAAC;;;IACFqC,GAAA;IAAA/B,KAAA,EAED,SAAAgQ,MAAM7I,WAAW,EAAE;MAAA,IAAA8I,MAAA;MACjB9I,WAAW,GAAG,IAAI,CAACuF,oBAAoB,CAACvF,WAAW,CAAC;MACpD,IAAoB3C,KAAK,GAAK,IAAI,CAACkH,YAAY,CAAvCI,UAAU;MAElB,IAAMoE,SAAS,GAAG,SAAZA,SAASA,GAAwB;QAAA,IAApBtB,WAAW,GAAAxQ,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,CAAC;QAChC,IAAI+R,YAAY,GAAG1F,cAAc,CAAC,UAAA2F,MAAA;UAAA,IAAG9D,OAAO,GAAA8D,MAAA,CAAP9D,OAAO;UAAA,OAAO2D,MAAI,CAACnB,gBAAgB,CAACxC,OAAO,CAAC;UAAC;QAElF,IAAM+D,YAAY,GAAG,SAAfA,YAAYA,CAAIvF,GAAG,EAAE+D,OAAO;UAAA,OAAK/D,GAAG,CAAC+D,OAAO,CAAC,IAAI1H,WAAW,CAACmJ,aAAa,IAAI,CAAC;;QAErF,IACEnJ,WAAW,CAACoJ,gBAAgB,IAC5BpJ,WAAW,CAACe,CAAC,CAACnH,MAAM,KAAK,CAAC,IACzB4E,YAAM,CACLwB,WAAW,CAACe,CAAC,EACb,CAAC1D,KAAK,CAACa,cAAc,IAAI,EAAE,EACxBN,MAAM,CAAC,UAAAO,EAAE;UAAA,OAAIN,OAAO,CAACM,EAAE,CAAC5F,WAAW,CAAC;UAAC,CACrCb,GAAG,CAAC,UAAAyG,EAAE;UAAA,OAAImG,SAAS,CAAC6D,mBAAmB,CAAChK,EAAE,CAAC;UAChD,CAAE,EACF;UACA,IAAM6I,MAAM,GAAG8B,MAAI,CAACpE,aAAa,CAAChN,GAAG,CACnC,UAAC6M,YAAY;YAAA,OAAKuE,MAAI,CAACd,UAAU,CAC/BzD,YAAY,CAAClH,KAAK,CAACa,cAAc,CAAC,CAAC,CAAC,EACpCuJ,WAAW,EAAElD,YAAY,CAACuB,UAAU,CAAC5H,cACvC,CAAC;WACH,CAAC;UAED,IAAI8I,MAAM,CAAC,CAAC,CAAC,EAAE;YACbgC,YAAY,GAAG,SAAAA,aAACK,IAAI,EAAK;cACvB,IAAMC,SAAS,GAAGC,aAAO,CACvB,UAAAC,MAAA;gBAAA,IAAGrE,OAAO,GAAAqE,MAAA,CAAPrE,OAAO;gBAAA,OAAOA,OAAO,CAAC,CAAC,CAAC;iBAC3BkE,IACF,CAAC;cACD,OAAOrC,MAAM,CAACS,WAAW,CAAC,CAAC/P,GAAG,CAAC,UAAAC,CAAC;gBAAA,OAAI,CAACA,CAAC,EAAE2R,SAAS,CAAC3R,CAAC,CAAC,IAAI,CAAC;kBAAEwN,OAAO,EAAE,CAACxN,CAAC,CAAC;kBAAEgM,GAAG,EAAE;iBAAI,CAAC,CAAC;gBAAC;aACtF;;;QAIL,IAAM8F,QAAQ,GAAGrB,UAAI,CACnB1Q,SAAG,CAAC,UAAAiM,GAAG;UAAA,OAAImF,MAAI,CAACvB,UAAU,CAACvH,WAAW,CAACe,CAAC,EAAE0G,WAAW,CAAC,CAAC9D,GAAG,CAAC,CAACjM,GAAG,CAAC,UAAAyN,OAAO;YAAA,OAAK;cAAEA,OAAO,EAAPA,OAAO;cAAExB,GAAG,EAAHA;aAAK;WAAC,CAAC;UAAC,EAC/FG,MAAM,EACNkF,YACF,CAAC,CAACF,MAAI,CAACT,mCAAmC,CAACZ,WAAW,CAAC,CAAC;QAExD,IAAMiC,UAAU,GAAG,EAAE;QACrBD,QAAQ,CAACjP,OAAO,CAAC,UAAAmP,MAAA,EAAc;UAAA,IAAAC,MAAA,GAAAjP,kCAAA,CAAAgP,MAAA;YAAVN,IAAI,GAAAO,MAAA;UACvBP,IAAI,CAAC7O,OAAO,CAAC,UAAAqP,MAAA,EAAa;YAAA,IAAVlG,GAAG,GAAAkG,MAAA,CAAHlG,GAAG;YACjBmF,MAAI,CAACvB,UAAU,CAACvH,WAAW,CAACiB,CAAC,EAAEwG,WAAW,CAAC,CAAC9D,GAAG,CAAC,CAACnJ,OAAO,CAAC,UAAC0I,MAAM,EAAK;cACnE,IAAI5I,MAAM,CAACqD,IAAI,CAACgG,GAAG,CAAC,CAAC/J,MAAM,GAAG,CAAC,EAAE;gBAC/B8P,UAAU,CAACxG,MAAM,CAACyD,IAAI,EAAE,CAAC,GAAGzD,MAAM;;aAErC,CAAC;WACH,CAAC;SACH,CAAC;QACF,IAAM4G,UAAU,GAAGxP,MAAM,CAAC4I,MAAM,CAACwG,UAAU,CAAC;QAE5C,IAAMK,UAAU,GAAGlM,OAAO,CAACmC,WAAW,CAACe,CAAC,CAACpC,IAAI,CAAC,UAAAhH,CAAC;UAAA,OAAIA,CAAC,KAAK,UAAU;UAAC,CAAC;QAErE,OAAO8R,QAAQ,CAAC/R,GAAG,CAAC,UAAAsS,MAAA,EAAc;UAAA,IAAAC,MAAA,GAAAtP,kCAAA,CAAAqP,MAAA;YAAVX,IAAI,GAAAY,MAAA;UAC1B,IAAQ9E,OAAO,GAAKkE,IAAI,CAAC,CAAC,CAAC,CAAnBlE,OAAO;UACf,IAAM+E,QAAQ,GAAG,EAAE;UAEnBb,IAAI,CAAC7O,OAAO,CAAC,UAAA2P,MAAA,EAAa;YAAA,IAAVxG,GAAG,GAAAwG,MAAA,CAAHxG,GAAG;YACjB,IAAMI,GAAG,GAAG+E,MAAI,CAACvB,UAAU,CAACvH,WAAW,CAACiB,CAAC,EAAEwG,WAAW,CAAC,CAAC9D,GAAG,CAAC,CAACjM,GAAG,CAAC,UAAA2N,OAAO;cAAA,OAAK;gBAAEA,OAAO,EAAPA,OAAO;gBAAE1B,GAAG,EAAHA;eAAK;aAAC,CAAC;YAC/FI,GAAG,CAACvJ,OAAO,CAAC,UAACJ,GAAG,EAAK;cACnB8P,QAAQ,CAACpB,MAAI,CAACnB,gBAAgB,CAACvN,GAAG,CAACiL,OAAO,CAAC,CAAC,GAAGjL,GAAG;aACnD,CAAC;WACH,CAAC;UAEF,OAAO;YACL+K,OAAO,EAAPA,OAAO;YACPiF,YAAY,EAAEtG,MAAM,CAACgG,UAAU,CAACpS,GAAG,CAAC,UAAA2N,OAAO,EAAI;cAC7C,IAAMqC,OAAO,GAAGqC,UAAU,GACxBzF,SAAS,CAAC+F,eAAe,CAAClF,OAAO,CAAC,GAClCb,SAAS,CAAC+F,eAAe,CAAChF,OAAO,CAAC;cAEpC,OAAO,CAAC,CAACA,OAAO,EAAE6D,YAAY,CAAC,CAACgB,QAAQ,CAACpB,MAAI,CAACnB,gBAAgB,CAACtC,OAAO,CAAC,CAAC,IACrE;gBAAE1B,GAAG,EAAE;eAAK,EAAEA,GAAG,EAAE+D,OAAO,CAAC,CAAC,CAAC;aACjC,CAAC;WACH;SACF,CAAC;OACH;MAED,IAAM4C,MAAM,GAAG,IAAI,CAAC5F,aAAa,CAAC9K,MAAM,GAAG,CAAC,GACxC,IAAI,CAAC8K,aAAa,CAAChN,GAAG,CAAC,UAAC6S,CAAC,EAAEpH,KAAK;QAAA,OAAK4F,SAAS,CAAC5F,KAAK,CAAC;QAAC,GACtD,EAAE;MAEN,OAAOmH,MAAM,CAAC1Q,MAAM,GAChB,IAAI,CAAC4Q,WAAW,CAACF,MAAM,EAAEtK,WAAW,CAACyK,aAAa,CAAC,GACnD1B,SAAS,EAAE;;;IAChBnO,GAAA;IAAA/B,KAAA,EAED,SAAA2R,YAAYF,MAAM,EAAEG,aAAa,EAAE;MACjC,IAAMC,cAAc,GAAGJ,MAAM,CAAC1I,MAAM,CAClC,UAACC,IAAI,EAAE8I,OAAO;QAAA,OAAM9I,IAAI,IAAI,IAAI,IAAI8I,OAAO,CAAC/Q,MAAM,IAAIiI,IAAI,CAACjI,MAAM,GAAGiI,IAAI,GAAG8I,OAAO;OAAC,EAAE,IACvF,CAAC;MAED,OAAOD,cAAc,CAAChT,GAAG,CAAC,UAAC6S,CAAC,EAAEpH,KAAK,EAAK;QACtC,IAAMgC,OAAO,GAAGsF,aAAa,GACzB,CAACH,MAAM,CAAC5S,GAAG,CAAC,UAACmR,KAAK;UAAA,OAAKA,KAAK,CAAC1F,KAAK,CAAC,IAAI0F,KAAK,CAAC1F,KAAK,CAAC,CAACgC,OAAO,IAAI,EAAE;UAAC,CAACwB,IAAI,CAAC,IAAI,CAAC,CAAC,GAC9E+D,cAAc,CAACvH,KAAK,CAAC,CAACgC,OAAO;QAEjC,OAAO;UACLA,OAAO,EAAPA,OAAO;UACPiF,YAAY,EAAEtG,MAAM,CAACwG,MAAM,CAAC5S,GAAG,CAAC,UAACmR,KAAK;YAAA,OAAKA,KAAK,CAAC1F,KAAK,CAAC,CAACiH,YAAY;YAAC;SACtE;OACF,CAAC;;;IACHxP,GAAA;IAAA/B,KAAA,EAED,SAAA+R,YAAY5K,WAAW,EAAE;;MACvB,OAAO,IAAI,CAACoH,UAAU,CAACpH,WAAW,CAAC;;;IACpCpF,GAAA;IAAA/B,KAAA,EAED,SAAAuO,WAAWpH,WAAW,EAAE;MAAA,IAAA6K,MAAA;MACtB,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAIjS,KAAK,EAAK;QAC1B,IAAIgS,MAAI,CAAChG,iBAAiB,IAAIpM,cAAc,CAACsD,IAAI,CAAClD,KAAK,CAAC,EAAE;UACxD,OAAO,IAAIkS,IAAI,CAAClS,KAAK,CAAC;SACvB,MAAM,IAAI,CAACmS,MAAM,CAACC,KAAK,CAACD,MAAM,CAACE,UAAU,CAACrS,KAAK,CAAC,CAAC,EAAE;UAClD,OAAOmS,MAAM,CAACE,UAAU,CAACrS,KAAK,CAAC;;QAGjC,OAAOA,KAAK;OACb;MAED,IAAMuK,iBAAiB,GAAG,IAAIjB,GAAG,EAAE;MACnC,IAAI,IAAI,CAACsC,SAAS,KAAKP,UAAU,CAACG,cAAc,EAAE;QAChD,IAAM8G,WAAW,GAAGC,aAAO,CAAC,IAAI,CAAC1G,aAAa,CAAChN,GAAG,CAAC,UAAA2T,MAAA;UAAA,IAAGhO,KAAK,GAAAgO,MAAA,CAALhO,KAAK;UAAA,OAAOA,KAAK,CAACyB,QAAQ;UAAC,CAAC;QAClFqM,WAAW,CAACvN,MAAM,CAAC,UAAC0N,CAAC,EAAE3R,CAAC,EAAE4R,CAAC;UAAA,OAAKA,CAAC,CAAChP,OAAO,CAAC+O,CAAC,CAAC,KAAK3R,CAAC;UAAC,CAACa,OAAO,CAAC,UAAAgR,CAAC;UAAA,OAAIpI,iBAAiB,CAAChK,GAAG,CAACoS,CAAC,CAAC;UAAC;;MAG5F,OAAO,IAAI,CAAC3C,KAAK,CAAC7I,WAAW,CAAC,CAACtI,GAAG,CAAC,UAAA+T,MAAA,EAA+B;QAAA,IAA5BtG,OAAO,GAAAsG,MAAA,CAAPtG,OAAO;UAAEiF,YAAY,GAAAqB,MAAA,CAAZrB,YAAY;QACzD,IAAMV,UAAU,GAAG,EAAE;QAErBU,YAAY,CACT5P,OAAO,CAAC,UAAAkR,MAAA,EAAe/R,CAAC,EAAK;UAAA,IAAAgS,MAAA,GAAAhR,kCAAA,CAAA+Q,MAAA;YAAnBrG,OAAO,GAAAsG,MAAA;YAAEH,CAAC,GAAAG,MAAA;UACnBjC,UAAU,CAACmB,MAAI,CAAClD,gBAAgB,CAAC1E,WAAW,CAACoC,OAAO,EAAE1L,CAAC,EAAEqG,WAAW,EAAEoD,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAGoI,CAAC,IAAIV,QAAQ,CAACU,CAAC,CAAC;SACnH,CAAC;QAEJ,OAAArU,eAAA;UACE4J,CAAC,EAAE8J,MAAI,CAAClD,gBAAgB,CAACxC,OAAO,EAAE,GAAG,CAAC;UACtCA,OAAO,EAAPA;WACGuE,UAAU;OAEhB,CAAC;;;IACH9O,GAAA;IAAA/B,KAAA,EAED,SAAA+S,WAAW5L,WAAW,EAAE;MACtB,IAAMsF,qBAAqB,GAAG,IAAI,CAACC,oBAAoB,CAACvF,WAAW,IAAI,EAAE,CAAC;MAC1E,IAAM6L,iBAAiB,GAAGvG,qBAAqB,CAACvE,CAAC,CAACiB,MAAM,CAACsD,qBAAqB,CAACrE,CAAC,CAAC,CAACzD,QAAQ,CAAC,UAAU,CAAC;MAEtG,OAAO,IAAI,CAACqL,KAAK,CAACvD,qBAAqB,CAAC,CAAC5N,GAAG,CAAC,UAAAoU,MAAA;QAAA,IAAG3G,OAAO,GAAA2G,MAAA,CAAP3G,OAAO;UAAEiF,YAAY,GAAA0B,MAAA,CAAZ1B,YAAY;QAAA,OAAO9M,eAAS,CACnFgI,qBAAqB,CAACvE,CAAC,CACpBrJ,GAAG,CAAC,UAACkD,GAAG,EAAEuI,KAAK;UAAA,OAAK,CAACvI,GAAG,EAAEuK,OAAO,CAAChC,KAAK,CAAC,CAAC;UAAC,CAC1CnB,MAAM,CACL6J,iBAAiB,GAAGzB,YAAY,CAAC1S,GAAG,CAAC,UAAAqU,MAAA;UAAA,IAAAC,MAAA,GAAArR,kCAAA,CAAAoR,MAAA;YAAE1G,OAAO,GAAA2G,MAAA;YAAEtE,OAAO,GAAAsE,MAAA;UAAA,OAAM,CAC3D3G,OAAO,CAACzL,MAAM,GAAGyL,OAAO,CAACsB,IAAI,EAAE,GAAG,OAAO,EACzCe,OAAO,CACR;UAAC,GAAG,EACP,CACJ,CAAC;QAAC;;;IACH9M,GAAA;IAAA/B,KAAA,EAED,SAAAoT,aAAajM,WAAW,EAAE;MACxB,IAAMsF,qBAAqB,GAAG,IAAI,CAACC,oBAAoB,CAACvF,WAAW,IAAI,EAAE,CAAC;MAC1E,IAAMkI,WAAW,GAAGE,UAAI,CACtB8D,WAAK,CAAC,YAAY,CAAC,EACnBtK,YAAM,CAACuK,mBAAa,EAAE,EAAE,EAAE,CAC5B,CAAC,CAAC,IAAI,CAACzH,aAAa,CAAC;MACrB,IAAM0H,QAAQ,GAAG9R,MAAM,CAAC4I,MAAM,CAACgF,WAAW,CAAC,CAACtG,MAAM,CAAC,UAAC2J,CAAC,EAAEc,CAAC;QAAA,OAAAlV,eAAA,CAAAA,eAAA,KAAWoU,CAAC,GAAKc,CAAC;OAAG,EAAE,EAAE,CAAC;MAClF,IAAMC,MAAM,GAAG,EAAE;MAEjB,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAI3R,GAAG,EAAK;QAC7B,IAAA4R,MAAA,GAAkDJ,QAAQ,CAACxR,GAAG,CAAC,IAAI,EAAE;UAA7D/D,KAAK,GAAA2V,MAAA,CAAL3V,KAAK;UAAEsQ,UAAU,GAAAqF,MAAA,CAAVrF,UAAU;UAAEsF,IAAI,GAAAD,MAAA,CAAJC,IAAI;UAAE7U,MAAM,GAAA4U,MAAA,CAAN5U,MAAM;UAAE4H,IAAI,GAAAgN,MAAA,CAAJhN,IAAI;QAE7C,OAAO;UACL5E,GAAG,EAAHA,GAAG;UACH/D,KAAK,EAALA,KAAK;UACLsQ,UAAU,EAAVA,UAAU;UACVsF,IAAI,EAAJA,IAAI;UACJ7U,MAAM,EAANA,MAAM;UACN4H,IAAI,EAAJA;SACD;OACF;MAED,IAAMqJ,KAAK,GAAG,IAAI,CAACA,KAAK,CAACvD,qBAAqB,CAAC;MAE/C,CAACuD,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACuB,YAAY,IAAI,EAAE,EAAE5P,OAAO,CAAC,UAAAkS,MAAA,EAAe;QAAA,IAAAC,MAAA,GAAAhS,kCAAA,CAAA+R,MAAA;UAAbrH,OAAO,GAAAsH,MAAA;QACzD,IAAItH,OAAO,CAACzL,MAAM,GAAG,CAAC,EAAE;UACtB,IAAIgT,WAAW,GAAGN,MAAM;UAExBjH,OAAO,CAAC7K,OAAO,CAAC,UAAC3B,KAAK,EAAEsK,KAAK,EAAK;YAChCyJ,WAAW,KAAA5K,MAAA,CAAKnJ,KAAK,EAAG,GAAG;cACzB+B,GAAG,EAAE/B,KAAK;cACViK,QAAQ,EAAEwC,qBAAqB,CAACrE,CAAC,CAACkC,KAAK,CAAC,KAAK,UAAU,GACnDtK,KAAK,GACLyM,qBAAqB,CAACrE,CAAC,CAACkC,KAAK,CAAC;cAClC0J,QAAQ,EAAGD,WAAW,KAAA5K,MAAA,CAAKnJ,KAAK,EAAG,IAAI+T,WAAW,KAAA5K,MAAA,CAAKnJ,KAAK,EAAG,CAACgU,QAAQ,IAAK;aAC9E;YAEDD,WAAW,GAAGA,WAAW,KAAA5K,MAAA,CAAKnJ,KAAK,EAAG,CAACgU,QAAQ;WAChD,CAAC;;OAEL,CAAC;MAEF,IAAMC,SAAS,GAAG,SAAZA,SAASA,GAA6B;QAAA,IAAzBC,IAAI,GAAA9V,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;QAAA,IAAE+V,IAAI,GAAA/V,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;QACrC,IAAIqD,MAAM,CAACqD,IAAI,CAACoP,IAAI,CAAC,CAACnT,MAAM,KAAK,CAAC,EAAE;UAClC,OAAO,EAAE;;QAGX,OAAOU,MAAM,CAAC4I,MAAM,CAAC6J,IAAI,CAAC,CAACrV,GAAG,CAAC,UAAAuV,MAAA,EAA6B;UAAA,IAA1BrS,GAAG,GAAAqS,MAAA,CAAHrS,GAAG;YAAKgS,WAAW,GAAAtN,4CAAA,CAAA2N,MAAA,EAAAC,UAAA;UACnD,IAAML,QAAQ,GAAGC,SAAS,CAACF,WAAW,CAACC,QAAQ,KAAA7K,MAAA,CAAAhB,sCAAA,CAC1CgM,IAAI,IACPpS,GAAG,EACJ,CAAC;UAEF,IAAAuS,cAAA,GAAyCZ,aAAa,CAACK,WAAW,CAAC9J,QAAQ,CAAC;YAApEjM,KAAK,GAAAsW,cAAA,CAALtW,KAAK;YAAEsQ,UAAU,GAAAgG,cAAA,CAAVhG,UAAU;YAAKiG,MAAM,GAAA9N,4CAAA,CAAA6N,cAAA,EAAAE,UAAA;UAEpC,IAAMC,cAAc,GAAG1S,GAAG,KAAKgS,WAAW,CAAC9J,QAAQ,IAAIjM,KAAK,IAAI,IAAI,GAAG+D,GAAG,GAAG,EAAE;UAE/E,IAAI,CAACiS,QAAQ,CAACjT,MAAM,EAAE;YACpB,OAAAzC,eAAA,CAAAA,eAAA,KACKiW,MAAM;cACTxS,GAAG,EAAHA,GAAG;cACH2S,SAAS,EAAE,GAAAvL,MAAA,CAAAhB,sCAAA,CAAIgM,IAAI,IAAEpS,GAAG,GAAE+L,IAAI,EAAE;cAChC9P,KAAK,EAAE,CAACA,KAAK,EAAEyW,cAAc,CAAC,CAAC3G,IAAI,CAAC,GAAG,CAAC,CAAC6G,IAAI,EAAE;cAC/CrG,UAAU,EAAEmG,cAAc,IAAInG;;;UAIlC,OAAAhQ,eAAA,CAAAA,eAAA,KACKiW,MAAM;YACTxS,GAAG,EAAHA,GAAG;YACH/D,KAAK,EAAE,CAACA,KAAK,EAAEyW,cAAc,CAAC,CAAC3G,IAAI,CAAC,GAAG,CAAC,CAAC6G,IAAI,EAAE;YAC/CrG,UAAU,EAAEmG,cAAc,IAAInG,UAAU;YACxC0F,QAAQ,EAARA;;SAEH,CAAC;OACH;MAED,IAAIY,YAAY,GAAG,EAAE;MAErB,IAAI,CAAC5E,KAAK,CAACjP,MAAM,IAAI0L,qBAAqB,CAACrE,CAAC,CAACzD,QAAQ,CAAC,UAAU,CAAC,EAAE;QACjEiQ,YAAY,GAAG,CAAC,IAAI,CAAC/I,aAAa,CAAC,CAAC,CAAC,CAACrH,KAAK,CAACyB,QAAQ,IAAI,EAAE,EAAEpH,GAAG,CAC7D,UAACkD,GAAG;UAAA,OAAAzD,eAAA,CAAAA,eAAA,KAAWoV,aAAa,CAAC3R,GAAG,CAAC;YAAE2S,SAAS,EAAE3S;;SAChD,CAAC;;;;MAIH,IAAI,CAAC0K,qBAAqB,CAACrE,CAAC,CAACrH,MAAM,IAAI0L,qBAAqB,CAACvE,CAAC,CAACvD,QAAQ,CAAC,UAAU,CAAC,EAAE;QACnFiQ,YAAY,CAACtU,IAAI,CAAC;UAChByB,GAAG,EAAE,OAAO;UACZ2S,SAAS,EAAE,OAAO;UAClB1W,KAAK,EAAE,OAAO;UACdsQ,UAAU,EAAE,OAAO;UACnBsF,IAAI,EAAE;SACP,CAAC;;MAGJ,OAAOnH,qBAAqB,CAACvE,CAAC,CAC3BrJ,GAAG,CAAC,UAACkD,GAAG,EAAK;QACZ,IAAIA,GAAG,KAAK,UAAU,EAAE;UACtB,OAAO;YACLA,GAAG,EAAE,UAAU;YACf2S,SAAS,EAAE,UAAU;YACrB1W,KAAK,EAAE,UAAU;YACjBsQ,UAAU,EAAE,UAAU;YACtBsF,IAAI,EAAE;WACP;;QAGH,OAAAtV,eAAA,CAAAA,eAAA,KAAaoV,aAAa,CAAC3R,GAAG,CAAC;UAAE2S,SAAS,EAAE3S;;OAC7C,CAAC,CACDoH,MAAM,CAAC8K,SAAS,CAACR,MAAM,CAAC,CAAC,CACzBtK,MAAM,CAACyL,YAAY,CAAC;;;IACxB7S,GAAA;IAAA/B,KAAA,EAED,SAAA6U,SAAS1N,WAAW,EAAE;MACpB,OAAO,IAAI,CAACoH,UAAU,CAACpH,WAAW,CAAC,CAAC,CAAC,CAAC;;;IACvCpF,GAAA;IAAA/B,KAAA,EAED,SAAA8U,WAAW3N,WAAW,EAAE;;MACtB,OAAO,IAAI,CAACoH,UAAU,CAACpH,WAAW,CAAC;;;IACpCpF,GAAA;IAAA/B,KAAA,EAED,SAAAqO,YAAYlH,WAAW,EAAE;MAAA,IAAA4N,MAAA;MACvB5N,WAAW,GAAG,IAAI,CAACuF,oBAAoB,CAACvF,WAAW,CAAC;MACpD,IAAMlB,QAAQ,GAAGsJ,UAAI,CACnB8D,WAAK,CAAC,YAAY,CAAC,EACnBA,WAAK,CAAC,UAAU,CAAC,EACjB2B,cACF,CAAC,CAAC,IAAI,CAACnJ,aAAa,CAAC;MAErB,IAAMwC,WAAW,GAAGpD,MAAM,CAAC,IAAI,CAACY,aAAa,CAAChN,GAAG,CAAC,UAAC6S,CAAC,EAAEpH,KAAK;QAAA,OAAKiF,UAAI,CAClE1Q,SAAG,CAACkW,MAAI,CAACrG,UAAU,CAACvH,WAAW,CAACiB,CAAC,EAAEkC,KAAK,CAAC,CAAC,EAC1CW,MAAM,EACNgK,UACF,CAAC,CACCF,MAAI,CAACvF,mCAAmC,CAAClF,KAAK,CAChD,CAAC;QAAC,CAAC;MACH,IAAMC,iBAAiB,GAAG,IAAIjB,GAAG,EAAE;MACnC,IAAI,IAAI,CAACsC,SAAS,KAAKP,UAAU,CAACG,cAAc,EAAE;QAChD,IAAM8G,WAAW,GAAGC,aAAO,CAAC,IAAI,CAAC1G,aAAa,CAAChN,GAAG,CAAC,UAAAqW,MAAA;UAAA,IAAG1Q,KAAK,GAAA0Q,MAAA,CAAL1Q,KAAK;UAAA,OAAOA,KAAK,CAACyB,QAAQ;UAAC,CAAC;QAClFqM,WAAW,CAACvN,MAAM,CAAC,UAAC0N,CAAC,EAAE3R,CAAC,EAAE4R,CAAC;UAAA,OAAKA,CAAC,CAAChP,OAAO,CAAC+O,CAAC,CAAC,KAAK3R,CAAC;UAAC,CAACa,OAAO,CAAC,UAAAgR,CAAC;UAAA,OAAIpI,iBAAiB,CAAChK,GAAG,CAACoS,CAAC,CAAC;UAAC;;MAG5F,OAAOtE,WAAW,CAACxP,GAAG,CAAC,UAAC6P,UAAU,EAAE5N,CAAC,EAAK;QACxC,IAAMqU,WAAW,GAAG/K,WAAW,CAACsE,UAAU,EAAE5N,CAAC,EAAEqG,WAAW,EAAEoD,iBAAiB,CAAC;QAC9E,OAAO;UACLvM,KAAK,EAAE+W,MAAI,CAACjG,gBAAgB,CAC1B3H,WAAW,CAACiB,CAAC,CAACtC,IAAI,CAAC,UAAAhH,CAAC;YAAA,OAAIA,CAAC,KAAK,UAAU;YAAC,GACvCsW,cAAQ,CAAC,CAAC,EAAED,WAAW,CAAC,CAAChM,MAAM,CAC7BlD,QAAQ,CACNwF,SAAS,CAAC+F,eAAe,CAAC9C,UAAU,CAAC,CACtC,CAAC1Q,KACJ,CAAC,GACDmX,WAAW,EAAE,IACjB,CAAC;UACD7G,UAAU,EAAEyG,MAAI,CAACjG,gBAAgB,CAC/B3H,WAAW,CAACiB,CAAC,CAACtC,IAAI,CAAC,UAAAhH,CAAC;YAAA,OAAIA,CAAC,KAAK,UAAU;YAAC,GACvCsW,cAAQ,CAAC,CAAC,EAAED,WAAW,CAAC,CAAChM,MAAM,CAC7BlD,QAAQ,CACNwF,SAAS,CAAC+F,eAAe,CAAC9C,UAAU,CAAC,CACtC,CAACJ,UACJ,CAAC,GACD6G,WAAW,EAAE,IACjB,CAAC;UACDpT,GAAG,EAAEgT,MAAI,CAACjG,gBAAgB,CAACqG,WAAW,EAAE,GAAG,CAAC;UAC5C3I,OAAO,EAAEkC;SACV;OACF,CAAC;;;IACH3M,GAAA;IAAA/B,KAAA,EAED,SAAAwE,QAAQ;MACN,IAAI,IAAI,CAACoH,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;QAC/C,MAAM,IAAIS,KAAK,mCAAA5C,MAAA,CAAmC,IAAI,CAACyC,SAAS,uCAAoC,CAAC;;MAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAACrH,KAAK;;;IACnCzC,GAAA;IAAA/B,KAAA,EAED,SAAA8L,aAAa;MACX,OAAO,IAAI,CAACJ,YAAY,CAACI,UAAU,IAAI,IAAI;;;IAC5C/J,GAAA;IAAA/B,KAAA,EAED,SAAAqV,YAAY;MACV,OAAO,IAAI,CAACxJ,aAAa,CAAC,CAAC,CAAC,CAACyJ,KAAK;;;IACnCvT,GAAA;IAAA/B,KAAA,EAED,SAAAuV,UAAU;MACR,IAAI,IAAI,CAAC3J,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;QAC/C,MAAM,IAAIS,KAAK,mCAAA5C,MAAA,CAAmC,IAAI,CAACyC,SAAS,uCAAoC,CAAC;;MAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAAChB,IAAI;;;IAClC9I,GAAA;IAAA/B,KAAA,EAED,SAAAiN,aAAa;MACX,IAAI,IAAI,CAACrB,SAAS,KAAKP,UAAU,CAACC,aAAa,EAAE;QAC/C,MAAM,IAAIS,KAAK,mCAAA5C,MAAA,CAAmC,IAAI,CAACyC,SAAS,uCAAoC,CAAC;;MAGvG,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC,CAAC,CAACoB,UAAU;;;IACxClL,GAAA;IAAA/B,KAAA,EAED,SAAAwP,oCAAoCZ,WAAW,EAAE;MAC/C,IAAIA,WAAW,KAAK7Q,SAAS,EAAE;QAC7B,MAAM,IAAIgO,KAAK,CAAC,yBAAyB,CAAC;;MAG5C,IAAI,CAAC,IAAI,CAACE,sBAAsB,CAAC2C,WAAW,CAAC,EAAE;QAC7C,IAAA4G,qBAAA,GAAwB,IAAI,CAAC3J,aAAa,CAAC+C,WAAW,CAAC;UAA/C/D,IAAI,GAAA2K,qBAAA,CAAJ3K,IAAI;UAAErG,KAAK,GAAAgR,qBAAA,CAALhR,KAAK;QACnB,IAAMa,cAAc,GAAG,CAACb,KAAK,CAACa,cAAc,IAAI,EAAE,EAAEN,MAAM,CAAC,UAAAO,EAAE;UAAA,OAAIN,OAAO,CAACM,EAAE,CAAC5F,WAAW,CAAC;UAAC;QAEzF,IAAI,CAACuM,sBAAsB,CAAC2C,WAAW,CAAC,GAAG/D,IAAI,CAAChM,GAAG,CAAC,UAAAiM,GAAG;UAAA,OAAAxM,eAAA,CAAAA,eAAA,KAEhDwM,GAAG,GAEJrG,eAAS,CAAChD,MAAM,CAACqD,IAAI,CAACgG,GAAG,CAAC,CACvB/F,MAAM,CACL,UAAA0Q,KAAK;YAAA,OAAIpQ,cAAc,CAACS,IAAI,CAAC,UAAAhH,CAAC;cAAA,OAAIA,CAAC,CAACkH,SAAS,KAAKyP,KAAK;cAAC,IACtD,CAAC3K,GAAG,CAACW,SAAS,CAAC6D,mBAAmB,CAACjK,cAAc,CAACS,IAAI,CAAC,UAAAhH,CAAC;cAAA,OAAIA,CAAC,CAACkH,SAAS,KAAKyP,KAAK;cAAC,CAAC,CAAC;WACxF,CAAC,CAAC5W,GAAG,CAAC,UAAA4W,KAAK;YAAA,OACT,CAAChK,SAAS,CAAC6D,mBAAmB,CAACjK,cAAc,CAACS,IAAI,CAAC,UAAAhH,CAAC;cAAA,OAAIA,CAAC,CAACkH,SAAS,KAAKyP,KAAK;cAAC,CAAC,EAAE3K,GAAG,CAAC2K,KAAK,CAAC,CAAC;WAC7F,CAAC,CAAC;SAGV,CAAC;;MAGJ,OAAO,IAAI,CAACxJ,sBAAsB,CAAC2C,WAAW,CAAC;;;IAChD7M,GAAA;IAAA/B,KAAA,EAED,SAAA0V,YAAY;MAAA,IAAAC,MAAA;MACV,OAAO,IAAI,CAAC9J,aAAa,CAAChN,GAAG,CAAC,UAAC6J,MAAM;QAAA,OAAK,IAAI+C,SAAS,CAAC;UACtDG,SAAS,EAAEP,UAAU,CAACC,aAAa;UACnCQ,UAAU,EAAAxN,eAAA,CAAAA,eAAA,KACLoK,MAAM,CAAClE,KAAK;YACfoH,SAAS,EAAEP,UAAU,CAACC;YACvB;UACDrL,OAAO,EAAE,CAACyI,MAAM;SACjB,EAAEiN,MAAI,CAACrP,OAAO,CAAC;QAAC;;;IAClBvE,GAAA;IAAA/B,KAAA,EAED,SAAA4V,YAAY;MACV,OAAO;QACLlK,YAAY,EAAElK,WAAK,CAAC,IAAI,CAACkK,YAAY;OACtC;;;IACF3J,GAAA;IAAA/B,KAAA,EAnrBD,SAAAwR,gBAAuB9C,UAAU,EAAE;MACjC,OAAOA,UAAU,CAACA,UAAU,CAAC3N,MAAM,GAAG,CAAC,CAAC;;;IACzCgB,GAAA;IAAA/B,KAAA,EAED,SAAAsP,oBAA2BhK,EAAE,EAAE;MAC7B,UAAA6D,MAAA,CAAU7D,EAAE,CAACU,SAAS,OAAAmD,MAAA,CAAI7D,EAAE,CAAC5F,WAAW;;;IACzCqC,GAAA;IAAA/B,KAAA,EAED,SAAA6V,YAAmBhL,IAAI,EAAgB;MAAA,IAAdvE,OAAO,GAAAlI,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;MACnC,OAAO,IAAIqN,SAAS,CAACZ,IAAI,CAACa,YAAY,EAAEpF,OAAO,CAAC;;;IACjDvE,GAAA;IAAA/B,KAAA,EA+JD,SAAAkP,2BAAgE;MAAA,IAAhC1K,KAAK,GAAApG,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;MAAA,IAAE+I,WAAW,GAAA/I,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,IAAI;MAC5D,IAAM0X,kBAAkB,GAAG;QACzB5N,CAAC,EAAE,EAAE;QACLE,CAAC,EAAE,EAAE;QACLmI,gBAAgB,EAAE,IAAI;QACtBqB,aAAa,EAAE;OAChB;MAED,IAAAmE,eAAA,GAGIvR,KAAK,CAFPyB,QAAQ;QAARA,QAAQ,GAAA8P,eAAA,cAAG,EAAE,GAAAA,eAAA;QAAAC,iBAAA,GAEXxR,KAAK,CADP0B,UAAU;QAAVA,UAAU,GAAA8P,iBAAA,cAAG,EAAE,GAAAA,iBAAA;MAGjB,IAAM3Q,cAAc,GAAG,CAACb,KAAK,CAACa,cAAc,IAAI,EAAE,EAAEN,MAAM,CAAC,UAAAO,EAAE;QAAA,OAAI,CAAC,CAACA,EAAE,CAAC5F,WAAW;QAAC;MAElFyH,WAAW,GAAGA,WAAW,KAAK9B,cAAc,CAACtE,MAAM,GAAG;QACpDmH,CAAC,EAAE7C,cAAc,CAACxG,GAAG,CAAC,UAAAyG,EAAE;UAAA,OAAImG,SAAS,CAAC6D,mBAAmB,CAAChK,EAAE,CAAC;UAAC;QAC9D8C,CAAC,EAAElC;OACJ,GAAG;QACFgC,CAAC,EAAEhC,UAAU;QACbkC,CAAC,EAAE;OACJ,CAAC;MAEFjB,WAAW,GAAGmM,mBAAa,CAACnM,WAAW,EAAE2O,kBAAkB,CAAC;MAE5D,IAAMG,8BAA8B,GAAG,SAAjCA,8BAA8BA,CAAGtH,IAAI;QAAA,OAAIA,IAAI,CAAC9P,GAAG,CACrD,UAAAqX,MAAM;UAAA,OAEF7Q,cAAc,CAACS,IAAI,CAAC,UAAAR,EAAE;YAAA,OAAIA,EAAE,CAACU,SAAS,KAAKkQ,MAAM;YAAC,IAClD,CAAChQ,UAAU,CAACJ,IAAI,CAAC,UAAAhH,CAAC;YAAA,OAAIA,CAAC,KAAKoX,MAAM;YAAC,GAEnCzK,SAAS,CAAC6D,mBAAmB,CAAC9K,KAAK,CAACa,cAAc,CAACS,IAAI,CAAC,UAAAR,EAAE;YAAA,OAAIA,EAAE,CAACU,SAAS,KAAKkQ,MAAM;YAAC,CAAC,GACvFA,MAAM;SAEZ,CAAC;;MAED/O,WAAW,CAACe,CAAC,GAAG+N,8BAA8B,CAAC9O,WAAW,CAACe,CAAC,CAAC;MAC7Df,WAAW,CAACiB,CAAC,GAAG6N,8BAA8B,CAAC9O,WAAW,CAACiB,CAAC,CAAC;MAE7D,IAAM+N,qBAAqB,GAAGhP,WAAW,CAACe,CAAC,CAACiB,MAAM,CAAChC,WAAW,CAACiB,CAAC,CAAC;MACjE,IAAMgO,aAAa,GAAG/Q,cAAc,CAACxG,GAAG,CAAC,UAAAyG,EAAE;QAAA,OAAImG,SAAS,CAAC6D,mBAAmB,CAAChK,EAAE,CAAC;QAAC,CAAC6D,MAAM,CAACjD,UAAU,CAAC;MAEpG,IAAMmQ,eAAe,GAAG,SAAlBA,eAAeA,CAAItU,GAAG;QAAA,OAAKqU,aAAa,CAACzR,QAAQ,CAAC5C,GAAG,CAAC,IAAIA,GAAG,KAAK,UAAU;;MAElFoF,WAAW,CAACe,CAAC,GAAGf,WAAW,CAACe,CAAC,CAACiB,MAAM,CAClCiN,aAAa,CAACrR,MAAM,CAAC,UAAAjG,CAAC;QAAA,OAAI,CAACqX,qBAAqB,CAACxR,QAAQ,CAAC7F,CAAC,CAAC,IAAIA,CAAC,KAAK,kBAAkB;QAC1F,CAAC,CACEiG,MAAM,CAACsR,eAAe,CAAC;MAC1BlP,WAAW,CAACiB,CAAC,GAAGjB,WAAW,CAACiB,CAAC,CAACrD,MAAM,CAACsR,eAAe,CAAC;MAErD,IAAI,CAAClP,WAAW,CAACe,CAAC,CAACiB,MAAM,CAAChC,WAAW,CAACiB,CAAC,CAAC,CAACtC,IAAI,CAAC,UAAAhH,CAAC;QAAA,OAAIA,CAAC,KAAK,UAAU;QAAC,EAAE;QACpEqI,WAAW,CAACiB,CAAC,CAAC9H,IAAI,CAAC,UAAU,CAAC;;MAGhC,IAAI4F,UAAU,CAACvB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAACwC,WAAW,CAACiB,CAAC,CAACe,MAAM,CAAChC,WAAW,CAACe,CAAC,CAAC,CAACvD,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAChHwC,WAAW,CAACiB,CAAC,CAACkO,OAAO,CAAC,kBAAkB,CAAC;;MAG3C,IAAI,CAACrQ,QAAQ,CAAClF,MAAM,EAAE;QACpBoG,WAAW,CAACe,CAAC,GAAGf,WAAW,CAACe,CAAC,CAACnD,MAAM,CAAC,UAAAjG,CAAC;UAAA,OAAIA,CAAC,KAAK,UAAU;UAAC;QAC3DqI,WAAW,CAACiB,CAAC,GAAGjB,WAAW,CAACiB,CAAC,CAACrD,MAAM,CAAC,UAAAjG,CAAC;UAAA,OAAIA,CAAC,KAAK,UAAU;UAAC;;MAG7D,OAAOqI,WAAW;;;EACnB,OAAAsE,SAAA;AAAA;;IC5RkB8K,QAAQ;EAC3B,SAAAA,SAAYC,QAAQ,EAAE;IAAA7K,mCAAA,OAAA4K,QAAA;IACpB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;;EACzBtK,gCAAA,CAAAqK,QAAA;IAAAxU,GAAA;IAAA/B,KAAA,EAED,SAAAyW,WAAW;MACT,OAAO,IAAI,CAACD,QAAQ,CAACE,GAAG;;;IACzB3U,GAAA;IAAA/B,KAAA,EAED,SAAA0W,MAAM;MACJ,OAAO,IAAI,CAACD,QAAQ,EAAE,CAACC,GAAG,CAAC,CAAC,CAAC;;;EAC9B,OAAAH,QAAA;AAAA;;ACLH,IAAMI,SAAS,GAAG,SAAZA,SAASA,CAAIC,WAAW;EAAA,OAAKnS,eAAS,CAACmS,WAAW,CAAC/X,GAAG,CAAC,UAAC8T,CAAC;IAAA,OAAK,CAACA,CAAC,CAAC7U,IAAI,EAAE6U,CAAC,CAAC;IAAC,CAAC;AAAA;AAEjF,IAAMkE,SAAS,GAAG;EAChBC,MAAM,EAAE,CACN;IAAEhZ,IAAI,EAAE,UAAU;IAAEE,KAAK,EAAE;GAAY,EACvC;IAAEF,IAAI,EAAE,aAAa;IAAEE,KAAK,EAAE;GAAoB,EAClD;IAAEF,IAAI,EAAE,QAAQ;IAAEE,KAAK,EAAE;GAAU,EACnC;IAAEF,IAAI,EAAE,WAAW;IAAEE,KAAK,EAAE;GAAkB,EAC9C;IAAEF,IAAI,EAAE,KAAK;IAAEE,KAAK,EAAE;GAAU,EAChC;IAAEF,IAAI,EAAE,QAAQ;IAAEE,KAAK,EAAE;GAAc,EACvC;IAAEF,IAAI,EAAE,YAAY;IAAEE,KAAK,EAAE;GAAe,EAC5C;IAAEF,IAAI,EAAE,eAAe;IAAEE,KAAK,EAAE;GAAuB,EACvD;IAAEF,IAAI,EAAE,UAAU;IAAEE,KAAK,EAAE;GAAa,EACxC;IAAEF,IAAI,EAAE,aAAa;IAAEE,KAAK,EAAE;GAAqB,CACpD;EACD+Y,MAAM,EAAE,CACN;IAAEjZ,IAAI,EAAE,QAAQ;IAAEE,KAAK,EAAE;GAAU,EACnC;IAAEF,IAAI,EAAE,WAAW;IAAEE,KAAK,EAAE;GAAkB,EAC9C;IAAEF,IAAI,EAAE,KAAK;IAAEE,KAAK,EAAE;GAAU,EAChC;IAAEF,IAAI,EAAE,QAAQ;IAAEE,KAAK,EAAE;GAAc,EACvC;IAAEF,IAAI,EAAE,IAAI;IAAEE,KAAK,EAAE;GAAK,EAC1B;IAAEF,IAAI,EAAE,KAAK;IAAEE,KAAK,EAAE;GAAM,EAC5B;IAAEF,IAAI,EAAE,IAAI;IAAEE,KAAK,EAAE;GAAK,EAC1B;IAAEF,IAAI,EAAE,KAAK;IAAEE,KAAK,EAAE;GAAM,CAC7B;EACDgZ,IAAI,EAAE,CACJ;IAAElZ,IAAI,EAAE,QAAQ;IAAEE,KAAK,EAAE;GAAU,EACnC;IAAEF,IAAI,EAAE,WAAW;IAAEE,KAAK,EAAE;GAAkB,EAC9C;IAAEF,IAAI,EAAE,aAAa;IAAEE,KAAK,EAAE;GAAiB,EAC/C;IAAEF,IAAI,EAAE,gBAAgB;IAAEE,KAAK,EAAE;GAAqB,EACtD;IAAEF,IAAI,EAAE,WAAW;IAAEE,KAAK,EAAE;GAAc,EAC1C;IAAEF,IAAI,EAAE,eAAe;IAAEE,KAAK,EAAE;GAAoB,EACpD;IAAEF,IAAI,EAAE,YAAY;IAAEE,KAAK,EAAE;GAAe,EAC5C;IAAEF,IAAI,EAAE,gBAAgB;IAAEE,KAAK,EAAE;GAAqB;AAE1D,CAAC;;AAED;AACA;AACA;IACMiZ,IAAI;EACR,SAAAA,KAAYC,YAAY,EAAE;IAAAvL,mCAAA,OAAAsL,IAAA;IACxB,IAAI,CAACtQ,IAAI,GAAGuQ,YAAY;IACxB,IAAQC,KAAK,GAAK,IAAI,CAACxQ,IAAI,CAAnBwQ,KAAK;IACb,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,QAAQ,GAAG3S,eAAS,CACvB0S,KAAK,CAACtY,GAAG,CAAC,UAACwY,CAAC;MAAA,OAAK,CACfA,CAAC,CAACvZ,IAAI,EACN;QACEmI,QAAQ,EAAE0Q,SAAS,CAACU,CAAC,CAACpR,QAAQ,CAAC;QAC/BC,UAAU,EAAEyQ,SAAS,CAACU,CAAC,CAACnR,UAAU,CAAC;QACnC8G,QAAQ,EAAE2J,SAAS,CAACU,CAAC,CAACrK,QAAQ;OAC/B,CACF;MACH,CAAC;;EACFd,gCAAA,CAAA+K,IAAA;IAAAlV,GAAA;IAAA/B,KAAA,EAED,SAAAsX,gBAAgB9S,KAAK,EAAE+S,UAAU,EAAE;MACjC,OAAOtM,YAAM,CAAC,IAAI,CAACkM,KAAK,CAACtY,GAAG,CAAC,UAACwY,CAAC;QAAA,OAAKA,CAAC,CAACE,UAAU,CAAC;QAAC,CAAC,CAACC,IAAI,CAAC,UAAC9E,CAAC,EAAEc,CAAC;QAAA,OAAMd,CAAC,CAAC1U,KAAK,GAAGwV,CAAC,CAACxV,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;OAAC,CAAC;;;IACjG+D,GAAA;IAAA/B,KAAA,EAED,SAAAyX,uBAAuB;MACrB,IAAMC,UAAU,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC;MAE3E,OAAO,IAAI,CAACP,KAAK,CAACpO,MAAM,CACtB,UAACC,IAAI,EAAE2O,IAAI,EAAK;QACdD,UAAU,CAAC/V,OAAO,CAAC,UAACI,GAAG,EAAK;UAC1B,IAAIsH,OAAO,GAAGsO,IAAI,CAAC5V,GAAG,CAAC;UAEvB,IAAIA,GAAG,KAAK,gBAAgB,EAAE;YAC5BsH,OAAO,GAAGsO,IAAI,CAACzR,UAAU,CAACnB,MAAM,CAAC,UAAC4N,CAAC;cAAA,OAAKA,CAAC,CAACiB,IAAI,KAAK,MAAM;cAAC;;UAG5D5K,IAAI,CAACjH,GAAG,CAAC,MAAAoH,MAAA,CAAAhB,sCAAA,CACJa,IAAI,CAACjH,GAAG,CAAC,IACZ;YACE0L,QAAQ,EAAEkK,IAAI,CAAC7Z,IAAI;YACnB8Z,SAAS,EAAED,IAAI,CAAC3Z,KAAK;YACrB4V,IAAI,EAAE+D,IAAI,CAAC/D,IAAI;YACf,UAAQ+D,IAAI,UAAO;YACnBtO,OAAO,EAAPA;WACD,EACF;SACF,CAAC;QAEF,OAAOL,IAAI;OACZ,EACD;QACE/C,QAAQ,EAAE,EAAE;QACZC,UAAU,EAAE,EAAE;QACd8G,QAAQ,EAAE,EAAE;QACZ3H,cAAc,EAAE;OAEpB,CAAC;;;IACFtD,GAAA;IAAA/B,KAAA,EAED,SAAA6X,cAAcC,UAAU,EAAEP,UAAU,EAAE;MAAA,IAAAnJ,KAAA;MACpC,IAAA2J,iBAAA,GAAeD,UAAU,CAACjX,KAAK,CAAC,GAAG,CAAC;QAAAmX,kBAAA,GAAAlW,kCAAA,CAAAiW,iBAAA;QAA7BJ,IAAI,GAAAK,kBAAA;MAEX,IAAI,CAAC,IAAI,CAACZ,QAAQ,CAACO,IAAI,CAAC,EAAE;QACxB,OAAO;UAAE3Z,KAAK,EAAE8Z,UAAU;UAAEG,KAAK,oBAAA9O,MAAA,CAAoBwO,IAAI,iBAAAxO,MAAA,CAAc2O,UAAU;SAAK;;MAGxF,IAAMI,WAAW,GAAGtT,KAAK,CAACC,OAAO,CAAC0S,UAAU,CAAC,GAAGA,UAAU,GAAG,CAACA,UAAU,CAAC;MACzE,IAAMhO,MAAM,GAAG2O,WAAW,CACvBrZ,GAAG,CAAC,UAAC+U,IAAI;QAAA,OAAKxF,KAAI,CAACgJ,QAAQ,CAACO,IAAI,CAAC,CAAC/D,IAAI,CAAC,IAAIxF,KAAI,CAACgJ,QAAQ,CAACO,IAAI,CAAC,CAAC/D,IAAI,CAAC,CAACkE,UAAU,CAAC;QAAC,CACjFhS,IAAI,CAAC,UAAC6M,CAAC;QAAA,OAAKA,CAAC;QAAC;MAEjB,IAAI,CAACpJ,MAAM,EAAE;QACX,OAAO;UACLvL,KAAK,EAAE8Z,UAAU;UACjBG,KAAK,qBAAA9O,MAAA,CAAqB2O,UAAU;SACrC;;MAGH,OAAOvO,MAAM;;;IACdxH,GAAA;IAAA/B,KAAA,EAED,SAAAkH,4BAA4B4Q,UAAU,EAAE;MAAA,IAAA7H,MAAA;MACtC,IAAAkI,kBAAA,GAAeL,UAAU,CAACjX,KAAK,CAAC,GAAG,CAAC;QAAAuX,kBAAA,GAAAtW,kCAAA,CAAAqW,kBAAA;QAA7BR,IAAI,GAAAS,kBAAA;MACX,IAAI,CAAC,IAAI,CAAChB,QAAQ,CAACO,IAAI,CAAC,EAAE;QACxB,OAAO,IAAI;;MAEb,OAAOlW,MAAM,CAACqD,IAAI,CAAC,IAAI,CAACsS,QAAQ,CAACO,IAAI,CAAC,CAACzR,UAAU,IAAI,EAAE,CAAC,CAACJ,IAAI,CAC3D,UAAChH,CAAC;QAAA,OAAKmR,MAAI,CAACmH,QAAQ,CAACO,IAAI,CAAC,CAACzR,UAAU,CAACpH,CAAC,CAAC,CAAC8U,IAAI,KAAK,MAAM;OAC1D,CAAC;;;IACF7R,GAAA;IAAA/B,KAAA,EAED,SAAAqY,yBAAyBP,UAAU,EAAEP,UAAU,EAAE;MAC/C,IAAMhO,MAAM,GAAG,IAAI,CAACsO,aAAa,CAACC,UAAU,EAAEP,UAAU,CAAC;MAEzD,OAAOV,SAAS,CAACtN,MAAM,CAACqK,IAAI,CAAC,IAAIiD,SAAS,CAACC,MAAM;;;EAClD,OAAAG,IAAA;AAAA;;IC1IkBqB,cAAc;EACjC,SAAAA,eAAYC,gBAAgB,EAAE;IAAA5M,mCAAA,OAAA2M,cAAA;IAC5B,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;;EACzCrM,gCAAA,CAAAoM,cAAA;IAAAvW,GAAA;IAAA/B,KAAA,EAED,SAAAwY,QAAQ;MACN,OAAO,IAAI,CAACD,gBAAgB,CAACC,KAAK;;;IACnCzW,GAAA;IAAA/B,KAAA,EAED,SAAAyY,cAAc;MACZ,OAAO,IAAI,CAACF,gBAAgB,CAACE,WAAW;;;EACzC,OAAAH,cAAA;AAAA;;;;;ICRGI,aAAa;EACjB,SAAAA,cAAA9W,IAAA,EAAwF;IAAA,IAA1E+W,aAAa,GAAA/W,IAAA,CAAb+W,aAAa;MAAEC,MAAM,GAAAhX,IAAA,CAANgX,MAAM;MAAEC,MAAM,GAAAjX,IAAA,CAANiX,MAAM;MAAAC,YAAA,GAAAlX,IAAA,CAAEmX,OAAO;MAAPA,OAAO,GAAAD,YAAA,cAAG,EAAE,GAAAA,YAAA;MAAEE,WAAW,GAAApX,IAAA,CAAXoX,WAAW;MAAEC,YAAY,GAAArX,IAAA,CAAZqX,YAAY;IAAAtN,mCAAA,OAAA+M,aAAA;IAClF,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,YAAY,GAAGA,YAAY;;EACjC/M,gCAAA,CAAAwM,aAAA;IAAA3W,GAAA;IAAA/B,KAAA,EAED,SAAAkZ,QAAQL,MAAM,EAAAhX,KAAA,EAAgC;MAAA,IAAAuM,KAAA;MAAA,IAA5B+K,aAAa,GAAAtX,KAAA,CAAbsX,aAAa;QAAKC,MAAM,GAAA3S,4CAAA,CAAA5E,KAAA,EAAA6E,SAAA;MACxC,IAAI2S,WAAW,GAAG,CAAC;MACnB,IAAMC,YAAY,GAAG,IAAIC,eAAe,CACtCH,MAAM,IAAI3X,MAAM,CAACqD,IAAI,CAACsU,MAAM,CAAC,CAC1Bva,GAAG,CAAC,UAAA2a,CAAC;QAAA,OAAAzT,mCAAA,KAAQyT,CAAC,EAAGC,2BAAA,CAAOL,MAAM,CAACI,CAAC,CAAC,MAAK,QAAQ,GAAGE,IAAI,CAACC,SAAS,CAACP,MAAM,CAACI,CAAC,CAAC,CAAC,GAAGJ,MAAM,CAACI,CAAC,CAAC;OAAG,CAAC,CAC1FzQ,MAAM,CAAC,UAAC2J,CAAC,EAAEc,CAAC;QAAA,OAAAlV,eAAA,CAAAA,eAAA,KAAWoU,CAAC,GAAKc,CAAC;OAAG,EAAE,EAAE,CAC1C,CAAC;MAED,IAAIoG,GAAG,MAAAzQ,MAAA,CAAM,IAAI,CAACyP,MAAM,OAAAzP,MAAA,CAAI0P,MAAM,EAAA1P,MAAA,CAAGmQ,YAAY,CAACtL,QAAQ,EAAE,CAACjN,MAAM,OAAAoI,MAAA,CAAOmQ,YAAY,IAAK,EAAE,CAAE;MAE/F,IAAMO,aAAa,GAAG,IAAI,CAAChB,MAAM,KAAKe,GAAG,CAAC7Y,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;MACzE,IAAI8Y,aAAa,KAAK,MAAM,EAAE;QAC5BD,GAAG,MAAAzQ,MAAA,CAAM,IAAI,CAACyP,MAAM,OAAAzP,MAAA,CAAI0P,MAAM,CAAE;QAChC,IAAI,CAACE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;;;;;MAKnD,IAAMe,UAAU,GAAG,SAAbA,UAAUA;QAAA,OAASC,yBAAK,CAACH,GAAG,EAAE;UAClCf,MAAM,EAAEgB,aAAa;UACrBd,OAAO,EAAAza,eAAA;YACL0b,aAAa,EAAE5L,KAAI,CAACuK,aAAa;YACjC,cAAc,EAAEQ,aAAa,OAAAhQ,MAAA,CAAOgQ,aAAa,YAAAhQ,MAAA,CAASkQ,WAAW,EAAE;aACpEjL,KAAI,CAAC2K,OAAO,CAChB;UACDC,WAAW,EAAE5K,KAAI,CAAC4K,WAAW;UAC7BiB,IAAI,EAAEJ,aAAa,KAAK,MAAM,GAAGH,IAAI,CAACC,SAAS,CAACP,MAAM,CAAC,GAAG,IAAI;UAC9Dc,MAAM,EAAE9L,KAAI,CAAC6K,YAAY,GAAGkB,WAAW,CAACC,OAAO,CAAChM,KAAI,CAAC6K,YAAY,CAAC,GAAGlb;SACtE,CAAC;;MAEF,OAAO;2CAECsc,SAAS,WAAAA,UAACC,QAAQ,EAAE;UAAA,IAAArK,MAAA;UAAA,OAAAsK,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,UAAAC;YAAA,IAAAhS,MAAA;YAAA,OAAA8R,uCAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;cAAA;gBAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;kBAAA;oBACpBrS,MAAM,GAAG;sBACXuP,KAAK,EAAE,eAAe;qBACvB;oBAAA4C,QAAA,CAAAC,IAAA;oBAAAD,QAAA,CAAAE,IAAA;oBAAA,OAEgBjB,UAAU,EAAE;kBAAA;oBAA3BpR,MAAM,GAAAmS,QAAA,CAAAG,IAAA;kBAAA;oBAAAH,QAAA,CAAAC,IAAA;oBAAA,OAAAD,QAAA,CAAAI,MAAA,WAECX,QAAQ,CAAC5R,MAAM,EAAE;sBAAA,OAAMuH,MAAI,CAACoK,SAAS,CAACC,QAAQ,CAAC;sBAAC;kBAAA;kBAAA;oBAAA,OAAAO,QAAA,CAAAK,IAAA;;;eAAAR,OAAA;;;OAG5D;;;EACF,OAAAhC,aAAA;AAAA;;;;ICxDkByC,YAAY,0BAAAC,MAAA;EAAAC,6BAAA,CAAAF,YAAA,EAAAC,MAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,YAAA;EAC/B,SAAAA,aAAYK,OAAO,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IAAA,IAAAtN,KAAA;IAAAzC,mCAAA,OAAAwP,YAAA;IACrC/M,KAAA,GAAAkN,MAAA,CAAAK,IAAA,OAAMH,OAAO;IACbpN,KAAA,CAAKqN,QAAQ,GAAGA,QAAQ;IACxBrN,KAAA,CAAKsN,MAAM,GAAGA,MAAM;IAAC,OAAAtN,KAAA;;EACtB,OAAAlC,gCAAA,CAAAiP,YAAA;AAAA,gBAAAS,oCAAA,CALuC7P,KAAK;;;;ACQ/C,IAAI8P,YAAY,GAAG,CAAC;AAEpB,IAAMC,WAAW,GAAG,wBAAwB;;AAE5C;AACA;AACA;AACA,IAAMC,UAAU,GAAG;EACjBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAAC;AAED,SAASC,YAAYA,CAACC,OAAO,EAAE;EAC7B,OAAO,IAAIC,OAAO;IAAA,IAAAxa,IAAA,GAAA2Y,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAC,SAAAC,QAAO2B,OAAO,EAAEC,MAAM;MAAA,OAAA9B,uCAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA;UAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAA0B,EAAA,GAErCF,OAAO;cAAAxB,QAAA,CAAAE,IAAA;cAAA,OAAOoB,OAAO;YAAA;cAAAtB,QAAA,CAAA2B,EAAA,GAAA3B,QAAA,CAAAG,IAAA;cAAA,IAAAH,QAAA,CAAA0B,EAAA,EAAA1B,QAAA,CAAA2B,EAAA;cAAA3B,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAA4B,EAAA,GAAA5B,QAAA;cAErB,IAAIA,QAAA,CAAA4B,EAAA,KAAUX,WAAW,EAAE;gBACzBQ,MAAM,CAAAzB,QAAA,CAAA4B,EAAM,CAAC;;YACd;YAAA;cAAA,OAAA5B,QAAA,CAAAK,IAAA;;;SAAAR,OAAA;KAEJ;IAAA,iBAAAgC,EAAA,EAAAC,GAAA;MAAA,OAAA/a,IAAA,CAAAzD,KAAA,OAAAC,SAAA;;MAAC;AACJ;IAEMwe,OAAO;EACX,SAAAA,QAAYC,QAAQ,EAAEvW,OAAO,EAAE;IAAAqF,mCAAA,OAAAiR,OAAA;IAC7B,IAAIC,QAAQ,KAAK,IAAI,IAAI,CAACjY,KAAK,CAACC,OAAO,CAACgY,QAAQ,CAAC,IAAIpD,2BAAA,CAAOoD,QAAQ,MAAK,QAAQ,EAAE;MACjFvW,OAAO,GAAGuW,QAAQ;MAClBA,QAAQ,GAAG9e,SAAS;;IAEtBuI,OAAO,GAAGA,OAAO,IAAI,EAAE;IAEvB,IAAI,CAACA,OAAO,CAACwW,SAAS,IAAI,CAACxW,OAAO,CAACsS,MAAM,EAAE;MACzC,MAAM,IAAI7M,KAAK,CAAC,iCAAiC,CAAC;;IAGpD,IAAI,CAAC8Q,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACjE,MAAM,GAAGtS,OAAO,CAACsS,MAAM;IAC5B,IAAI,CAACC,MAAM,GAAGvS,OAAO,CAACuS,MAAM;IAC5B,IAAI,CAACE,OAAO,GAAGzS,OAAO,CAACyS,OAAO,IAAI,EAAE;IACpC,IAAI,CAACC,WAAW,GAAG1S,OAAO,CAAC0S,WAAW;IACtC,IAAI,CAAC8D,SAAS,GAAGxW,OAAO,CAACwW,SAAS,IAAI,IAAIpE,aAAa,CAAC;MACtDC,aAAa,EAAE,OAAOkE,QAAQ,KAAK,UAAU,GAAG9e,SAAS,GAAG8e,QAAQ;MACpEjE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBE,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,WAAW,EAAE,IAAI,CAACA;KACnB,CAAC;IACF,IAAI,CAAC+D,YAAY,GAAGzW,OAAO,CAACyW,YAAY,IAAI,CAAC;IAC7C,IAAI,CAAC/Q,iBAAiB,GAAG1F,OAAO,CAAC0F,iBAAiB;IAClD,IAAI,CAACgR,YAAY,GAAG,OAAO1W,OAAO,CAAC0W,YAAY,KAAK,SAAS,GAAG1W,OAAO,CAAC0W,YAAY,GAAG,KAAK;IAC5F,IAAI,CAACC,mBAAmB,GAAG3W,OAAO,CAAC2W,mBAAmB,IAAI,CAAC;IAE3D,IAAI,CAACC,0BAA0B,GAAG,IAAI;;EACvChR,gCAAA,CAAA0Q,OAAA;IAAA7a,GAAA;IAAA/B,KAAA,EAED,SAAAkZ,QAAQL,MAAM,EAAEO,MAAM,EAAE;MACtB,OAAO,IAAI,CAAC0D,SAAS,CAAC5D,OAAO,CAACL,MAAM,EAAAva,aAAA;QAClC6a,aAAa,EAAEgE,OAAM;SAClB/D,MAAM,CACV,CAAC;;;IACHrX,GAAA;IAAA/B,KAAA,EAED,SAAAod,WAAWlE,OAAO,EAAEmE,QAAQ,EAAE/W,OAAO,EAAEgU,QAAQ,EAAE;MAAA,IAAAlM,KAAA;MAC/C,IAAMkP,UAAU,GAAG,EAAEzB,YAAY;MACjC,IAAI,OAAOvV,OAAO,KAAK,UAAU,IAAI,CAACgU,QAAQ,EAAE;QAC9CA,QAAQ,GAAGhU,OAAO;QAClBA,OAAO,GAAGvI,SAAS;;MAGrBuI,OAAO,GAAGA,OAAO,IAAI,EAAE;MAEvB,IAAMiX,QAAQ,GAAGjX,OAAO,CAACiX,QAAQ,IAAI,SAAS;MAC9C,IAAIjX,OAAO,CAACkX,QAAQ,EAAE;QACpBlX,OAAO,CAACkX,QAAQ,CAACD,QAAQ,CAAC,GAAGD,UAAU;;MAGzC,IAAMG,cAAc,GAAG,IAAI,CACxBC,4BAA4B,EAAE,CAC9BC,IAAI,CAAC;QAAA,OAAMzE,OAAO,EAAE;QAAC;MAExB,IAAI0E,uBAAuB,GAAG,IAAI;MAClC,IAAIC,YAAY,GAAG,KAAK;MAExB,IAAMC,UAAU;QAAA,IAAAjc,KAAA,GAAA0Y,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAG,SAAAsD;UAAA,IAAAC,eAAA;UAAA,OAAAxD,uCAAA,CAAAG,IAAA,UAAAsD,UAAAC,SAAA;YAAA;cAAA,QAAAA,SAAA,CAAApD,IAAA,GAAAoD,SAAA,CAAAnD,IAAA;gBAAA;kBAAAmD,SAAA,CAAAnD,IAAA;kBAAA,OACa0C,cAAc;gBAAA;kBAAtCO,eAAe,GAAAE,SAAA,CAAAlD,IAAA;kBAAA,MAGnB1U,OAAO,CAACkX,QAAQ,IAChBlX,OAAO,CAACkX,QAAQ,CAACD,QAAQ,CAAC,KAAKD,UAAU;oBAAAY,SAAA,CAAAnD,IAAA;oBAAA;;kBAEzC8C,YAAY,GAAG,IAAI;kBAAC,KAChBG,eAAe,CAACG,WAAW;oBAAAD,SAAA,CAAAnD,IAAA;oBAAA;;kBAAAmD,SAAA,CAAAnD,IAAA;kBAAA,OACvBiD,eAAe,CAACG,WAAW,EAAE;gBAAA;kBAAA,MAE/BrC,WAAW;gBAAA;gBAAA;kBAAA,OAAAoC,SAAA,CAAAhD,IAAA;;;aAAA6C,QAAA;SAEpB;QAAA,gBAbKD,UAAUA;UAAA,OAAAjc,KAAA,CAAA1D,KAAA,OAAAC,SAAA;;SAaf;MAED,IAAIggB,cAAc,GAAG,IAAI,CAACnB,mBAAmB;MAE7C,IAAMoB,QAAQ;QAAA,IAAApc,KAAA,GAAAsY,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAG,SAAA6D,SAAO7C,QAAQ,EAAEV,IAAI;UAAA,IAAAiD,eAAA,EAAAO,aAAA,EAAAC,YAAA,EAAAvE,IAAA,EAAAwE,IAAA,EAAAxG,KAAA,EAAAvP,MAAA;UAAA,OAAA8R,uCAAA,CAAAG,IAAA,UAAA+D,UAAAC,SAAA;YAAA;cAAA,QAAAA,SAAA,CAAA7D,IAAA,GAAA6D,SAAA,CAAA5D,IAAA;gBAAA;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OACN0C,cAAc;gBAAA;kBAAtCO,eAAe,GAAAW,SAAA,CAAA3D,IAAA;kBAEfuD,aAAa;oBAAA,IAAArc,KAAA,GAAAqY,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAG,SAAAmE;sBAAA,OAAApE,uCAAA,CAAAG,IAAA,UAAAkE,UAAAC,SAAA;wBAAA;0BAAA,QAAAA,SAAA,CAAAhE,IAAA,GAAAgE,SAAA,CAAA/D,IAAA;4BAAA;8BAAA,MAChBzU,OAAO,CAAC+T,SAAS,IAAI,CAACwD,YAAY;gCAAAiB,SAAA,CAAA/D,IAAA;gCAAA;;8BAAA,KAChCiD,eAAe,CAACG,WAAW;gCAAAW,SAAA,CAAA/D,IAAA;gCAAA;;8BAAA,OAAA+D,SAAA,CAAA7D,MAAA,WACtBF,IAAI,EAAE;4BAAA;8BAAA+D,SAAA,CAAA/D,IAAA;8BAAA,OAEP,IAAIqB,OAAO,CAAC,UAAAC,OAAO;gCAAA,OAAI0C,UAAU,CAAC;kCAAA,OAAM1C,OAAO,EAAE;mCAAEjO,KAAI,CAAC2O,YAAY,GAAG,IAAI,CAAC;gCAAC;4BAAA;8BAAA,OAAA+B,SAAA,CAAA7D,MAAA,WAC5EF,IAAI,EAAE;4BAAA;8BAAA,OAAA+D,SAAA,CAAA7D,MAAA,WAGV,IAAI;4BAAA;4BAAA;8BAAA,OAAA6D,SAAA,CAAA5D,IAAA;;;yBAAA0D,QAAA;qBACZ;oBAAA,gBAVKL,aAAaA;sBAAA,OAAArc,KAAA,CAAA/D,KAAA,OAAAC,SAAA;;;kBAYbogB,YAAY;oBAAA,IAAAlR,KAAA,GAAAiN,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAG,SAAAuE,SAAOC,IAAI;sBAAA,OAAAzE,uCAAA,CAAAG,IAAA,UAAAuE,UAAAC,SAAA;wBAAA;0BAAA,QAAAA,SAAA,CAAArE,IAAA,GAAAqE,SAAA,CAAApE,IAAA;4BAAA;8BAAA,IACzB8C,YAAY;gCAAAsB,SAAA,CAAApE,IAAA;gCAAA;;8BAAA,KACXkE,IAAI;gCAAAE,SAAA,CAAApE,IAAA;gCAAA;;8BAAAoE,SAAA,CAAApE,IAAA;8BAAA,OACA,IAAIqB,OAAO,CAAC,UAAAC,OAAO;gCAAA,OAAI0C,UAAU,CAAC;kCAAA,OAAM1C,OAAO,EAAE;mCAAEjO,KAAI,CAAC2O,YAAY,GAAG,IAAI,CAAC;gCAAC;4BAAA;8BAAA,OAAAoC,SAAA,CAAAlE,MAAA,WAE9EF,IAAI,EAAE;4BAAA;8BAAA,OAAAoE,SAAA,CAAAlE,MAAA,WAER,IAAI;4BAAA;4BAAA;8BAAA,OAAAkE,SAAA,CAAAjE,IAAA;;;yBAAA8D,QAAA;qBACZ;oBAAA,gBARKR,YAAYA,CAAAY,GAAA;sBAAA,OAAA9R,KAAA,CAAAnP,KAAA,OAAAC,SAAA;;;kBAAA,MAUdkI,OAAO,CAAC+T,SAAS,IAAI,CAACuD,uBAAuB;oBAAAe,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OACzC3M,KAAI,CAACsP,4BAA4B,EAAE;gBAAA;kBAG3CE,uBAAuB,GAAG,KAAK;kBAAC,MAE5BnC,QAAQ,CAACC,MAAM,KAAK,GAAG,IACzBD,QAAQ,CAACxD,KAAK,IACdwD,QAAQ,CAACxD,KAAK,CAACoH,WAAW,EAAE,KAAK,eAAe,IAChD,EAAEjB,cAAc,IAAI,CAAC;oBAAAO,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OAEf+C,UAAU,EAAE;gBAAA;kBAAA,OAAAa,SAAA,CAAA1D,MAAA,WACXuD,YAAY,CAAC,IAAI,CAAC;gBAAA;kBAGvBvE,IAAI,GAAG,EAAE;kBACTwE,IAAI,GAAG,EAAE;kBAAAE,SAAA,CAAA7D,IAAA;kBAAA6D,SAAA,CAAA5D,IAAA;kBAAA,OAEEU,QAAQ,CAACgD,IAAI,EAAE;gBAAA;kBAA5BA,IAAI,GAAAE,SAAA,CAAA3D,IAAA;kBACJf,IAAI,GAAGP,IAAI,CAAC4F,KAAK,CAACb,IAAI,CAAC;kBAACE,SAAA,CAAA5D,IAAA;kBAAA;gBAAA;kBAAA4D,SAAA,CAAA7D,IAAA;kBAAA6D,SAAA,CAAApC,EAAA,GAAAoC,SAAA;kBAExB1E,IAAI,CAAChC,KAAK,GAAGwG,IAAI;gBAAC;kBAAA,MAGhBxE,IAAI,CAAChC,KAAK,KAAK,eAAe;oBAAA0G,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OAC1B+C,UAAU,EAAE;gBAAA;kBAClB,IAAIxX,OAAO,CAACiZ,gBAAgB,EAAE;oBAC5BjZ,OAAO,CAACiZ,gBAAgB,CAAC,IAAIjH,cAAc,CAAC2B,IAAI,CAAC,CAAC;;kBACnD,OAAA0E,SAAA,CAAA1D,MAAA,WACMuD,YAAY,EAAE;gBAAA;kBAAA,MAGnB/C,QAAQ,CAACC,MAAM,KAAK,GAAG;oBAAAiD,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OACnB+C,UAAU,EAAE;gBAAA;kBAAA,MACd,CAACxX,OAAO,CAAC+T,SAAS,IAAI2D,eAAe,CAACG,WAAW;oBAAAQ,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OAC7CiD,eAAe,CAACG,WAAW,EAAE;gBAAA;kBAG/BlG,KAAK,GAAG,IAAIkD,YAAY,CAAClB,IAAI,CAAChC,KAAK,EAAEgC,IAAI,EAAEwB,QAAQ,CAACC,MAAM,CAAC;kBAAE,KAC/DpB,QAAQ;oBAAAqE,SAAA,CAAA5D,IAAA;oBAAA;;kBACVT,QAAQ,CAACrC,KAAK,CAAC;kBAAC0G,SAAA,CAAA5D,IAAA;kBAAA;gBAAA;kBAAA,MAEV9C,KAAK;gBAAA;kBAAA,OAAA0G,SAAA,CAAA1D,MAAA,WAGNsD,aAAa,EAAE;gBAAA;kBAAAI,SAAA,CAAA5D,IAAA;kBAAA,OAElB+C,UAAU,EAAE;gBAAA;kBAAA,MACd,CAACxX,OAAO,CAAC+T,SAAS,IAAI2D,eAAe,CAACG,WAAW;oBAAAQ,SAAA,CAAA5D,IAAA;oBAAA;;kBAAA4D,SAAA,CAAA5D,IAAA;kBAAA,OAC7CiD,eAAe,CAACG,WAAW,EAAE;gBAAA;kBAE/BzV,MAAM,GAAG2U,QAAQ,CAACpD,IAAI,CAAC;kBAAA,KACzBK,QAAQ;oBAAAqE,SAAA,CAAA5D,IAAA;oBAAA;;kBACVT,QAAQ,CAAC,IAAI,EAAE5R,MAAM,CAAC;kBAACiW,SAAA,CAAA5D,IAAA;kBAAA;gBAAA;kBAAA,OAAA4D,SAAA,CAAA1D,MAAA,WAEhBvS,MAAM;gBAAA;kBAAA,OAAAiW,SAAA,CAAA1D,MAAA,WAGRsD,aAAa,EAAE;gBAAA;gBAAA;kBAAA,OAAAI,SAAA,CAAAzD,IAAA;;;aAAAoD,QAAA;SACvB;QAAA,gBApFKD,QAAQA,CAAAmB,GAAA,EAAAC,GAAA;UAAA,OAAAxd,KAAA,CAAA9D,KAAA,OAAAC,SAAA;;SAoFb;MAED,IAAM+d,OAAO,GAAGsB,cAAc,CAACE,IAAI,CAAC,UAAAK,eAAe;QAAA,OAAI9B,YAAY,CAAC8B,eAAe,CAAC3D,SAAS,CAACgE,QAAQ,CAAC,CAAC;QAAC;MAEzG,IAAI/D,QAAQ,EAAE;QACZ,OAAO;UACL6D,WAAW;YAAA,IAAAuB,YAAA,GAAAnF,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAE,SAAAkF;cAAA,IAAA3B,eAAA;cAAA,OAAAxD,uCAAA,CAAAG,IAAA,UAAAiF,UAAAC,SAAA;gBAAA;kBAAA,QAAAA,SAAA,CAAA/E,IAAA,GAAA+E,SAAA,CAAA9E,IAAA;oBAAA;sBAAA8E,SAAA,CAAA9E,IAAA;sBAAA,OACmB0C,cAAc;oBAAA;sBAAtCO,eAAe,GAAA6B,SAAA,CAAA7E,IAAA;sBAErB6C,YAAY,GAAG,IAAI;sBAAC,KAChBG,eAAe,CAACG,WAAW;wBAAA0B,SAAA,CAAA9E,IAAA;wBAAA;;sBAAA,OAAA8E,SAAA,CAAA5E,MAAA,WACtB+C,eAAe,CAACG,WAAW,EAAE;oBAAA;sBAAA,OAAA0B,SAAA,CAAA5E,MAAA,WAE/B,IAAI;oBAAA;oBAAA;sBAAA,OAAA4E,SAAA,CAAA3E,IAAA;;;iBAAAyE,QAAA;aACZ;YAAA,SAAAxB;cAAA,OAAAuB,YAAA,CAAAvhB,KAAA,OAAAC,SAAA;;YAAA,OAAA+f,WAAA;;SACF;OACF,MAAM;QACL,OAAOhC,OAAO;;;;IAEjBpa,GAAA;IAAA/B,KAAA;MAAA,IAAA8f,6BAAA,GAAAvF,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAsF;QAAA,IAAA9P,MAAA;QAAA,OAAAuK,uCAAA,CAAAG,IAAA,UAAAqF,UAAAC,SAAA;UAAA;YAAA,QAAAA,SAAA,CAAAnF,IAAA,GAAAmF,SAAA,CAAAlF,IAAA;cAAA;gBAAA,KACM,IAAI,CAACmC,0BAA0B;kBAAA+C,SAAA,CAAAlF,IAAA;kBAAA;;gBAAAkF,SAAA,CAAAlF,IAAA;gBAAA,OAC3B,IAAI,CAACmC,0BAA0B;cAAA;gBAAA,OAAA+C,SAAA,CAAAhF,MAAA;cAAA;gBAAA,MAInC,OAAO,IAAI,CAAC4B,QAAQ,KAAK,UAAU;kBAAAoD,SAAA,CAAAlF,IAAA;kBAAA;;gBACrC,IAAI,CAACmC,0BAA0B,GAAG,IAAId,OAAO;kBAAA,IAAArV,KAAA,GAAAwT,qCAAA,eAAAC,uCAAA,CAAAC,IAAA,CAAC,SAAAyF,SAAO7D,OAAO,EAAEC,MAAM;oBAAA,IAAA6D,KAAA;oBAAA,OAAA3F,uCAAA,CAAAG,IAAA,UAAAyF,UAAAC,SAAA;sBAAA;wBAAA,QAAAA,SAAA,CAAAvF,IAAA,GAAAuF,SAAA,CAAAtF,IAAA;0BAAA;4BAAAsF,SAAA,CAAAvF,IAAA;4BAAAuF,SAAA,CAAAtF,IAAA;4BAAA,OAE5C9K,MAAI,CAAC4M,QAAQ,EAAE;0BAAA;4BAA7BsD,KAAK,GAAAE,SAAA,CAAArF,IAAA;4BACX,IAAI/K,MAAI,CAAC6M,SAAS,CAACnE,aAAa,KAAKwH,KAAK,EAAE;8BAC1ClQ,MAAI,CAAC6M,SAAS,CAACnE,aAAa,GAAGwH,KAAK;;4BAEtC9D,OAAO,EAAE;4BAACgE,SAAA,CAAAtF,IAAA;4BAAA;0BAAA;4BAAAsF,SAAA,CAAAvF,IAAA;4BAAAuF,SAAA,CAAA9D,EAAA,GAAA8D,SAAA;4BAEV/D,MAAM,CAAA+D,SAAA,CAAA9D,EAAM,CAAC;0BAAC;4BAAA8D,SAAA,CAAAvF,IAAA;4BAEd7K,MAAI,CAACiN,0BAA0B,GAAG,IAAI;4BAAC,OAAAmD,SAAA,CAAAC,MAAA;0BAAA;0BAAA;4BAAA,OAAAD,SAAA,CAAAnF,IAAA;;;uBAAAgF,QAAA;mBAE1C;kBAAA,iBAAAK,GAAA,EAAAC,GAAA;oBAAA,OAAAzZ,KAAA,CAAA5I,KAAA,OAAAC,SAAA;;oBAAC;gBAAC6hB,SAAA,CAAAlF,IAAA;gBAAA,OAEG,IAAI,CAACmC,0BAA0B;cAAA;cAAA;gBAAA,OAAA+C,SAAA,CAAA/E,IAAA;;;WAAA6E,QAAA;OAExC;MAAA,SAAArC;QAAA,OAAAoC,6BAAA,CAAA3hB,KAAA,OAAAC,SAAA;;MAAA,OAAAsf,4BAAA;;;AAGH;AACA;AACA;AACA;AACA;AACA;;IANE3b,GAAA;IAAA/B,KAAA,EAOA,SAAAygB,mBAAmBjc,KAAK,EAAEkc,cAAc,EAAE;MACxC,IACEA,cAAc,KAAK3E,UAAU,CAACE,OAAO,IACrCzX,KAAK,CAACkc,cAAc,KAAK3E,UAAU,CAACE,OAAO,EAC3C;QACA,OAAA3d,aAAA,CAAAA,aAAA,KACKkG,KAAK;UACRkc,cAAc,EAAE3E,UAAU,CAACE;;OAE9B,MAAM;QACL,OAAOzX,KAAK;;;;;AAKlB;AACA;AACA;AACA;AACA;AACA;;IANEzC,GAAA;IAAA/B,KAAA,EAOA,SAAA2gB,qBAAqBlF,QAAQ,EAAgB;MAAA,IAAdnV,OAAO,GAAAlI,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG,EAAE;MACzC,IACEqd,QAAQ,CAACxb,OAAO,CAACc,MAAM,EACvB;QACA,IAAIuF,OAAO,CAAC0W,YAAY,EAAE;UACxBvB,QAAQ,CAACxb,OAAO,CAAC0B,OAAO,CAAC,UAAC+G,MAAM,EAAK;YACnC,IAAMkY,cAAc,GAAGnf,MAAM,CAACC,OAAO,CAAApD,aAAA,CAAAA,aAAA,KAChCoK,MAAM,CAACuE,UAAU,CAAChH,QAAQ,GAC1ByC,MAAM,CAACuE,UAAU,CAAC/G,UAAU,CAChC,CAAC,CAACrH,GAAG,CAAC,UAAAmI,KAAA,EAAY;cAAA,IAAA+C,KAAA,GAAAjI,kCAAA,CAAAkF,KAAA;gBAAVwS,CAAC,GAAAzP,KAAA;gBAAEkF,CAAC,GAAAlF,KAAA;cACX,IAAIkF,CAAC,CAAC2E,IAAI,KAAK,QAAQ,EAAE;gBACvB,OAAO4F,CAAC;;cAGV,OAAOzb,SAAS;aACjB,CAAC,CAACgH,MAAM,CAACC,OAAO,CAAC;YAElB0D,MAAM,CAACmC,IAAI,GAAGnC,MAAM,CAACmC,IAAI,CAAChM,GAAG,CAAC,UAACiM,GAAG,EAAK;cACrC8V,cAAc,CAACjf,OAAO,CAAC,UAACI,GAAG,EAAK;gBAC9B,IAAI+I,GAAG,CAAC/I,GAAG,CAAC,IAAI,IAAI,EAAE;kBACpB+I,GAAG,CAAC/I,GAAG,CAAC,GAAGoQ,MAAM,CAACrH,GAAG,CAAC/I,GAAG,CAAC,CAAC;;eAE9B,CAAC;cAEF,OAAO+I,GAAG;aACX,CAAC;WACH,CAAC;;QAGJ,IAAI2Q,QAAQ,CAACxb,OAAO,CAAC,CAAC,CAAC,CAACuE,KAAK,CAACkc,cAAc,IAC1CjF,QAAQ,CAACxb,OAAO,CAAC,CAAC,CAAC,CAACuE,KAAK,CAACkc,cAAc,KAAK3E,UAAU,CAACE,OAAO,EAAE;UACjER,QAAQ,CAACxb,OAAO,CAAC0B,OAAO,CAAC,UAAC+G,MAAM,EAAEmY,CAAC,EAAK;YACtC,IAAMhW,IAAI,GAAG,EAAE;YACfnC,MAAM,CAACmC,IAAI,CAACiW,OAAO,CAACnf,OAAO,CAAC,UAACof,CAAC,EAAK;cACjC,IAAMjW,GAAG,GAAG,EAAE;cACdpC,MAAM,CAACmC,IAAI,CAACxB,OAAO,CAAC1H,OAAO,CAAC,UAACgR,CAAC,EAAE7R,CAAC,EAAK;gBACpCgK,GAAG,CAAC6H,CAAC,CAAC,GAAGoO,CAAC,CAACjgB,CAAC,CAAC;eACd,CAAC;cACF+J,IAAI,CAACvK,IAAI,CAACwK,GAAG,CAAC;aACf,CAAC;YACF2Q,QAAQ,CAACxb,OAAO,CAAC4gB,CAAC,CAAC,CAAChW,IAAI,GAAGA,IAAI;WAChC,CAAC;;;MAIN,OAAO,IAAIY,SAAS,CAACgQ,QAAQ,EAAE;QAC7BzP,iBAAiB,EAAE,IAAI,CAACA;OACzB,CAAC;;;IACHjK,GAAA;IAAA/B,KAAA,EAED,SAAAghB,KAAKxc,KAAK,EAAE8B,OAAO,EAAEgU,QAAQ,EAAuC;MAAA,IAAAtI,MAAA;MAAA,IAArC0O,cAAc,GAAAtiB,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG2d,UAAU,CAACC,OAAO;MAChE1V,OAAO,GAAAhI,aAAA;QACL0e,YAAY,EAAE,IAAI,CAACA;SAChB1W,OAAO,CACX;MAED,IAAIoa,cAAc,KAAK3E,UAAU,CAACE,OAAO,EAAE;QACzC,IAAIrX,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;UACxBA,KAAK,GAAGA,KAAK,CAAC3F,GAAG,CAAC,UAAC8I,CAAC;YAAA,OAAKqK,MAAI,CAACyO,kBAAkB,CAAC9Y,CAAC,EAAEoU,UAAU,CAACE,OAAO,CAAC;YAAC;SACzE,MAAM;UACLzX,KAAK,GAAG,IAAI,CAACic,kBAAkB,CAACjc,KAAK,EAAEuX,UAAU,CAACE,OAAO,CAAC;;;MAG9D,OAAO,IAAI,CAACmB,UAAU,CACpB;QAAA,OAAMpL,MAAI,CAACkH,OAAO,CAAC,MAAM,EAAE;UACzB1U,KAAK,EAALA,KAAK;UACLoH,SAAS,EAAE;SACZ,CAAC;SACF,UAAC6P,QAAQ;QAAA,OAAKzJ,MAAI,CAAC2O,oBAAoB,CAAClF,QAAQ,EAAEnV,OAAO,CAAC;SAC1DA,OAAO,EACPgU,QACF,CAAC;;;IACFvY,GAAA;IAAA/B,KAAA,EAED,SAAAqa,UAAU7V,KAAK,EAAE8B,OAAO,EAAEgU,QAAQ,EAAuC;MAAA,IAAAvF,MAAA;MAAA,IAArC2L,cAAc,GAAAtiB,SAAA,CAAA2C,MAAA,QAAA3C,SAAA,QAAAL,SAAA,GAAAK,SAAA,MAAG2d,UAAU,CAACC,OAAO;MACrE1V,OAAO,GAAAhI,aAAA;QACL0e,YAAY,EAAE,IAAI,CAACA;SAChB1W,OAAO,CACX;MAED,IAAIoa,cAAc,KAAK3E,UAAU,CAACE,OAAO,EAAE;QACzC,IAAIrX,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;UACxBA,KAAK,GAAGA,KAAK,CAAC3F,GAAG,CAAC,UAAC8I,CAAC;YAAA,OAAKoN,MAAI,CAAC0L,kBAAkB,CAAC9Y,CAAC,EAAEoU,UAAU,CAACE,OAAO,CAAC;YAAC;SACzE,MAAM;UACLzX,KAAK,GAAG,IAAI,CAACic,kBAAkB,CAACjc,KAAK,EAAEuX,UAAU,CAACE,OAAO,CAAC;;;MAG9D,OAAO,IAAI,CAACmB,UAAU,CACpB;QAAA,OAAMrI,MAAI,CAACmE,OAAO,CAAC,WAAW,EAAE;UAC9B1U,KAAK,EAALA,KAAK;UACLoH,SAAS,EAAE;SACZ,CAAC;SACF,UAAC6P,QAAQ;QAAA,OAAK1G,MAAI,CAAC4L,oBAAoB,CAAClF,QAAQ,EAAEnV,OAAO,CAAC;SAAAhI,aAAA,CAAAA,aAAA,KACrDgI,OAAO;QAAE+T,SAAS,EAAE;UACzBC,QACF,CAAC;;;IACFvY,GAAA;IAAA/B,KAAA,EAED,SAAA0W,IAAIlS,KAAK,EAAE8B,OAAO,EAAEgU,QAAQ,EAAE;MAAA,IAAA3E,MAAA;MAC5B,OAAO,IAAI,CAACyH,UAAU,CACpB;QAAA,OAAMzH,MAAI,CAACuD,OAAO,CAAC,KAAK,EAAE;UAAE1U,KAAK,EAALA;SAAO,CAAC;SACpC,UAACiX,QAAQ;QAAA,OAAM7W,KAAK,CAACC,OAAO,CAAC4W,QAAQ,CAAC,GAAGA,QAAQ,CAAC5c,GAAG,CAAC,UAACob,IAAI;UAAA,OAAK,IAAI1D,QAAQ,CAAC0D,IAAI,CAAC;UAAC,GAAG,IAAI1D,QAAQ,CAACkF,QAAQ,CAAC;OAAC,EAC7GnV,OAAO,EACPgU,QACF,CAAC;;;IACFvY,GAAA;IAAA/B,KAAA,EAED,SAAA2G,KAAKL,OAAO,EAAEgU,QAAQ,EAAE;MAAA,IAAA2G,MAAA;MACtB,OAAO,IAAI,CAAC7D,UAAU,CACpB;QAAA,OAAM6D,MAAI,CAAC/H,OAAO,CAAC,MAAM,CAAC;SAC1B,UAACe,IAAI;QAAA,OAAK,IAAIhD,IAAI,CAACgD,IAAI,CAAC;SACxB3T,OAAO,EACPgU,QACF,CAAC;;;IACFvY,GAAA;IAAA/B,KAAA,EAED,SAAAkhB,OAAO1c,KAAK,EAAE8B,OAAO,EAAEgU,QAAQ,EAAE;MAAA,IAAA6G,MAAA;MAC/B,OAAO,IAAI,CAAC/D,UAAU,CACpB;QAAA,OAAM+D,MAAI,CAACjI,OAAO,CAAC,SAAS,EAAE;UAAE1U,KAAK,EAALA;SAAO,CAAC;SACxC,UAACiX,QAAQ;QAAA,OAAKA,QAAQ;SACtBnV,OAAO,EACPgU,QACF,CAAC;;;EACF,OAAAsC,OAAA;AAAA;AAGH,aAAe,UAACC,QAAQ,EAAEvW,OAAO;EAAA,OAAK,IAAIsW,OAAO,CAACC,QAAQ,EAAEvW,OAAO,CAAC;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}