insync-stage-handler 3.1.2 → 3.1.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":"library.js","sources":["../src/util/fp.js","../src/detectVersion.js","../src/ValidationError.js","../src/util/validate.js","../src/validators/v1.js","../src/validators/v2.js","../src/validators/v3.js","../src/validators/index.js","../src/validate.js","../src/versions.js","../src/upgraders/v1-to-v2.js","../src/consolidators/v2.js","../src/consolidators/v3.js","../src/consolidators/index.js","../src/consolidate.js","../src/upgraders/v2-to-v3.js","../src/upgraders/index.js","../src/upgrade.js","../src/timezone-data.js","../src/fixDates.js","../src/steps.js","../src/handler.js","../src/options.js","../src/settingsUpgrader/v2-to-v3.js","../src/settingsUpgrader/index.js","../src/settingsHandler.js","../src/index.js"],"sourcesContent":["import {\n flip,\n map,\n curry,\n path,\n pathOr,\n prop,\n converge,\n pipe,\n compose,\n indexBy,\n} from \"ramda\";\n\nexport const lookup = flip(prop);\nexport const lookupPath = flip(path);\nexport const lookupAll = curry((from, ids) => map(lookup(from), ids));\n\nexport const lookupPathAll = curry((from, p, ids) =>\n map(compose(path(p), lookup(from)), ids)\n);\n\nexport const indexById = indexBy(prop(\"id\"));\n\nexport const listEntities = curry((entitiesContainerPath, from) =>\n pipe(\n converge(lookupAll, [\n pathOr([], [...entitiesContainerPath, \"byId\"]),\n pathOr([], [...entitiesContainerPath, \"ids\"]),\n ])\n )(from)\n);\n","import { prop, pipe, defaultTo } from \"ramda\";\n\n/**\n * Return the version of a stage object.\n * @param {Object} stage The stage for which to return the version.\n */\nexport default pipe(prop(\"version\"), defaultTo(1));\n","import { pipe, map, prepend, append, flatten, join, of } from \"ramda\";\n\nclass ValidationError extends Error {\n setErrors(errors) {\n this.errors = errors;\n }\n}\n\nconst formatErrorMessage = (errors) => {\n const header = \"Validation errors occurred: \\n\";\n\n return pipe(\n map(({ dataPath, message }) => `path: \"${dataPath}\", message: ${message}`),\n map(of),\n map(pipe(prepend(\" - \"), append(\"\\n\"))),\n flatten,\n prepend(header),\n join(\"\")\n )(errors);\n};\n\nexport default (errors) => {\n const err = new ValidationError(formatErrorMessage(errors));\n err.setErrors(errors);\n\n return err;\n};\n","import Ajv from \"ajv\";\nimport createValidationError from \"../ValidationError\";\n\nconst ajv = new Ajv({ $data: true, allErrors: true, logger: false });\nrequire(\"ajv-keywords\")(ajv, \"formatMinimum\");\n/**\n * Creates a JSON schema validator.\n * @param {Object} obj Object containing json schema rules.\n */\nexport const createAJVValidator = (schema) => {\n const validator = ajv.compile(schema);\n\n return (stage) => {\n const result = validator(stage);\n\n const { errors } = validator;\n\n return {\n valid: result,\n stage,\n error: errors ? createValidationError(errors) : undefined,\n };\n };\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.1.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.2.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.3.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import v1 from \"./v1\";\nimport v2 from \"./v2\";\nimport v3 from \"./v3\";\n\nconst map = Object.freeze({\n \"1\": v1,\n \"2\": v2,\n \"3\": v3,\n});\n\nexport default map;\n","import { applyTo, pipe, defaultTo } from \"ramda\";\nimport { lookup } from \"./util/fp\";\nimport detectVersion from \"./detectVersion\";\nimport validators from \"./validators\";\n\n/**\n * Parses validation specific options from global options.\n * @param {obj} options\n */\nexport const optionsParser = ({ validationVersion = undefined }) => ({\n version: validationVersion,\n});\n\n/**\n * Validates a stage\n * @param {Object} stage\n * @param {number} version\n */\n\nexport default (stage, options = {}) => {\n const { version = undefined } = options;\n return pipe(\n defaultTo(detectVersion(stage)),\n lookup(validators),\n applyTo(stage)\n )(version);\n};\n","export default Object.freeze([1, 2, 3]);\n","/**\n * v1-to-v2.js\n * Upgrader for version 1 stage files to version 2.\n * Removes timelines axes with resources. And adds the zoomSteps for the dataviewer.\n */\nimport {\n pipe,\n dissocPath,\n assoc,\n filter,\n propSatisfies,\n startsWith,\n map,\n replace,\n prop,\n converge,\n pair,\n reduce,\n assocPath,\n} from \"ramda\";\n\nimport { listEntities } from \"../util/fp\";\n\nconst outletsView = listEntities([\"data\", \"entities\", \"outlets\"]);\n\n// This adds the zoomsteps on dataviwer based on \"visible\" prop on the associated outlet.\nconst addDataViewerZoomSteps = (stage) =>\n pipe(\n outletsView,\n // The association to a dataviewer is defined in the outlet id (dataviewer/<DATAVIEWER ID>),\n // This only takes outlets associated with a dataviewer.\n filter(propSatisfies(startsWith(\"dataviewer/\"), \"id\")),\n map(\n // This pairs the path to the associated dataviewer to its required zoomSteps.\n converge(pair, [\n pipe(prop(\"id\"), replace(\"dataviewer/\", \"\"), (id) => [\n \"data\",\n \"entities\",\n \"dataViewers\",\n \"byId\",\n id,\n \"zoomSteps\",\n ]),\n pipe(prop(\"visible\"), (visible) => [visible]),\n ])\n ),\n // Set the \"zoomSteps\" prop of the dataviewer to the visibility of the outlet.\n reduce((acc, [path, zoomSteps]) => assocPath(path, zoomSteps, acc), stage)\n )(stage);\n\nexport default pipe(\n // Sets the version prop to \"2\"\n assoc(\"version\", 2),\n // Remove the association to resources from the timline axes.\n // In version 2 the tracks for files on the timeline are handled by the v2 consolidation strategy.\n dissocPath([\"timeline\", \"entities\", \"axes\", \"byId\", \"video\", \"resources\"]),\n dissocPath([\n \"timeline\",\n \"entities\",\n \"axes\",\n \"byId\",\n \"high-speed\",\n \"resources\",\n ]),\n // Adds the zoomsteps to the dataviewers.\n addDataViewerZoomSteps\n);\n","import * as R from \"ramda\";\n\nimport { parseISO, formatWithOptions } from \"date-fns/fp\";\n\nimport { lookupPathAll, lookupAll, indexById } from \"../util/fp\";\n\nconst NEW_TEST_REGEX = /^([0-9]{5})_(.+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)$/;\n\nconst fsPath = require(\"path\");\n\nconst match = R.curry((regex, st) => st.match(regex));\nconst mapWithIndex = R.addIndex(R.map);\n\nconst axesSettings = [\n {\n id: \"video\",\n color: \"#41b51b\",\n },\n {\n id: \"high-speed\",\n color: \"#3318cc\",\n },\n {\n id: \"comment\",\n color: \"red\",\n },\n];\n\nconst tracksIdsPath = [\"timeline\", \"entities\", \"tracks\", \"ids\"];\nconst tracksByIdPath = [\"timeline\", \"entities\", \"tracks\", \"byId\"];\nconst axesIdsPath = [\"timeline\", \"entities\", \"axes\", \"ids\"];\nconst axesByIdPath = [\"timeline\", \"entities\", \"axes\", \"byId\"];\n\nconst resourcesIdsView = R.path([\"resources\", \"entities\", \"resources\", \"ids\"]);\nconst resourcesByIdView = R.path([\n \"resources\",\n \"entities\",\n \"resources\",\n \"byId\",\n]);\nconst filesIdsView = R.path([\"files\", \"entities\", \"files\", \"ids\"]);\nconst filesByIdView = R.path([\"files\", \"entities\", \"files\", \"byId\"]);\nconst commentsByIdView = R.path([\"timeline\", \"entities\", \"comments\", \"byId\"]);\nconst tracksIdsLens = R.lensPath(tracksIdsPath);\nconst tracksByIdLens = R.lensPath(tracksByIdPath);\nconst axesIdsLens = R.lensPath(axesIdsPath);\nconst axesByIdLens = R.lensPath(axesByIdPath);\n\nconst filesView = R.pipe(filesByIdView, R.values);\n\nconst commentsView = R.pipe(commentsByIdView, R.values);\n\nconst highSpeedsFilesView = (stage) => {\n const filesById = filesByIdView(stage);\n const resourcesById = resourcesByIdView(stage);\n return R.pipe(\n // Iterate R.over the resource ids\n resourcesIdsView,\n // Filter out all the ids that don't start with high-speed.\n R.filter(R.startsWith(\"high-speed:\")),\n // Map the remaining resource ids to the files ids in the respective resource object.\n lookupPathAll(resourcesById, [\"files\"]),\n // Flatten the ids so we get a single array containing all the files ids referred\n // to across all high-speed resources.\n R.flatten,\n // Map the file ids to file objects.\n lookupAll(filesById)\n )(stage);\n};\n\nconst videosFilesView = (stage) => {\n const filesIds = filesIdsView(stage);\n const filesById = filesByIdView(stage);\n const highSpeedFiles = highSpeedsFilesView(stage);\n\n return R.pipe(\n R.without(R.pluck(\"id\", highSpeedFiles)),\n lookupAll(filesById),\n R.filter(R.propEq(\"type\", \"video\"))\n )(filesIds);\n};\n\nexport const upsertAxes = (axes) =>\n R.curry(\n R.pipe(\n R.unless(R.path(axesIdsPath), R.assocPath(axesIdsPath, [])),\n R.unless(R.path(axesByIdPath), R.assocPath(axesIdsPath, {})),\n R.over(axesIdsLens, R.union(R.pluck(\"id\", axes))),\n R.over(axesByIdLens, R.merge(indexById(axes)))\n )\n );\n\nexport const createTrackFromEntity = R.curry((axis, entity) => {\n const { start, end, type, id } = entity;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n axisRef: axis,\n ref: id,\n };\n});\n\nexport const mapEntitiesToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromEntity(axis), entitiesSelector(stage))\n);\n\nconst mapCommentsToTracks = R.pipe(\n mapEntitiesToTracks(commentsView, \"comment\"),\n R.map(R.mergeLeft({ type: \"comment\", label: \"comment\" }))\n);\n\nconst formatTestNo = (input) => {\n const [\n // eslint-disable-next-line no-unused-vars\n m,\n project,\n facility,\n program,\n category,\n test,\n experiment,\n measurement,\n ] = input.match(NEW_TEST_REGEX);\n\n return `${project}_${program.padStart(2, \"0\")}${facility}_${category.padStart(\n 2,\n \"0\"\n )}_${test.padStart(3, \"0\")}_${experiment.padStart(\n 3,\n \"0\"\n )}_${measurement.padStart(2, \"0\")}`;\n};\n\nconst extractTestNumberFromMetadata = R.pipe(\n R.path([\"metadata\", \"location\", \"$id\"]),\n R.when(R.test(NEW_TEST_REGEX), formatTestNo)\n);\n\nconst extractTestNumberFromFileName = R.compose(\n R.head,\n R.defaultTo([undefined]),\n R.either(\n match(/[0-9]{5}_[0-9]{2}[a-zA-Z]+_[0-9]{2}_[0-9]{3}_[0-9]{3}_[0-9]{2}/),\n match(/[A-Za-z]+[0-9]{5}_[0-9]+_[0-9]+_[0-9]+/)\n ),\n R.prop(\"path\")\n);\n\nconst extractTestNumber = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.prop(track.ref),\n R.either(extractTestNumberFromMetadata, extractTestNumberFromFileName)\n )(stage);\n\nconst formatter = formatWithOptions({ awareOfUnicodeTokens: true });\n\nconst extractRecordingChannel = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"metadata\", \"recChannel\"]))(stage);\n\nconst createHighSpeedTracksLabels = (stage) => (tracks) =>\n mapWithIndex((hs, index) => {\n const recordingChannel = extractRecordingChannel(stage, hs);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `HS ${no}`, hs);\n }, tracks);\n\nconst createVideoTracksLabels = (stage) => (tracks) =>\n mapWithIndex((vid, index) => {\n const recordingChannel = extractRecordingChannel(stage, vid);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `VID ${no}`, vid);\n }, tracks);\n\nconst extractFormat = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"path\"]), (p) => fsPath.extname(p))(\n stage\n );\n\nconst extractSecondFractions = (isoStr) =>\n R.pipe(\n match(/[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]+)/),\n R.ifElse(R.isNil, R.always(\"000\"), R.nth(1))\n )(isoStr);\n\nconst extractDate = (stage, track) => {\n return R.pipe(\n filesByIdView,\n R.path([track.ref, \"start\"]),\n parseISO,\n formatter(\"dd-MM-yyyy\")\n )(stage);\n};\n\nconst createTime = R.converge(R.pipe(R.pair, R.join(\".\")), [\n R.pipe(parseISO, formatter(\"HH:mm:ss\")),\n extractSecondFractions,\n]);\n\nconst extractStart = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"start\"]), createTime)(stage);\n\nconst extractEnd = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"end\"]), createTime)(stage);\n\nconst createVideoMetadata = R.curry((type, stage, track) => ({\n ...track,\n metadata: track.metadata || [\n [{ label: \"Test\", value: extractTestNumber(stage, track) }],\n [\n { label: \"Type\", value: type },\n {\n label: \"Recording channel\",\n value: extractRecordingChannel(stage, track),\n },\n { label: \"Format\", value: extractFormat(stage, track) },\n ],\n [\n { label: \"Date\", value: extractDate(stage, track) },\n { label: \"Start\", value: extractStart(stage, track) },\n { label: \"End\", value: extractEnd(stage, track) },\n ],\n ],\n}));\n\nconst createHighSpeedsMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"high-speed\", stage), tracks)\n);\nconst createVideosMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"video\", stage), tracks)\n);\n\nconst createTracks = (stage) =>\n R.converge((...args) => R.flatten(args), [\n R.pipe(\n mapEntitiesToTracks(highSpeedsFilesView, \"high-speed\"),\n createHighSpeedTracksLabels(stage),\n createHighSpeedsMetadata(stage)\n ),\n R.pipe(\n mapEntitiesToTracks(videosFilesView, \"video\"),\n createVideoTracksLabels(stage),\n createVideosMetadata(stage)\n ),\n mapCommentsToTracks,\n ])(stage);\n\nconst upsertTracks = (tracks) =>\n R.curry(\n R.pipe(\n R.unless(R.path(tracksIdsPath), R.assocPath(tracksIdsPath, [])),\n R.unless(R.path(tracksByIdPath), R.assocPath(tracksByIdPath, {})),\n R.over(tracksIdsLens, R.union(R.pluck(\"id\", tracks))),\n R.over(tracksByIdLens, R.merge(indexById(tracks)))\n )\n );\n\nconst earliestTime = (stage) =>\n R.pipe(\n filesView,\n R.map(R.prop(\"start\")),\n R.map(Date.parse),\n R.apply(Math.min),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst latestTime = (stage) =>\n R.pipe(\n filesView,\n R.map(R.prop(\"end\")),\n R.map(Date.parse),\n R.apply(Math.max),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst setTimeLineStartEnd = (stage) =>\n R.pipe(\n R.assocPath([\"timeline\", \"start\"], earliestTime(stage)),\n R.assocPath([\"timeline\", \"end\"], latestTime(stage))\n )(stage);\n\nconst setCommentAxis = R.assocPath([\"timeline\", \"commentAxis\"], \"comment\");\n\nconst consolidateTimeline = (stage) => {\n return R.pipe(\n upsertAxes(axesSettings),\n upsertTracks(createTracks(stage)),\n setTimeLineStartEnd,\n setCommentAxis\n )(stage);\n};\n\nconst consolidate = (stage) => {\n return consolidateTimeline(stage);\n};\n\nexport default consolidate;\n","import { pipe, tap } from \"ramda\";\nimport * as R from \"ramda\";\n\nimport { parseISO, formatWithOptions } from \"date-fns/fp\";\n\nimport { lookupPathAll, lookupAll, indexById } from \"../util/fp\";\n\nconst NEW_TEST_REGEX = /^([0-9]{5})_(.+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)$/;\n\nconst fsPath = require(\"path\");\n\nconst match = R.curry((regex, st) => st.match(regex));\nconst mapWithIndex = R.addIndex(R.map);\n\nconst axesSettings = [\n {\n id: \"video\",\n color: \"#41b51b\",\n },\n {\n id: \"high-speed\",\n color: \"#3318cc\",\n },\n {\n id: \"comment\",\n color: \"red\",\n },\n];\n\nconst tracksIdsPath = [\"timeline\", \"entities\", \"tracks\", \"ids\"];\nconst tracksByIdPath = [\"timeline\", \"entities\", \"tracks\", \"byId\"];\nconst axesIdsPath = [\"timeline\", \"entities\", \"axes\", \"ids\"];\nconst axesByIdPath = [\"timeline\", \"entities\", \"axes\", \"byId\"];\n\nconst resourcesIdsView = R.path([\"resources\", \"entities\", \"resources\", \"ids\"]);\nconst resourcesByIdView = R.path([\n \"resources\",\n \"entities\",\n \"resources\",\n \"byId\",\n]);\nconst filesIdsView = R.path([\"files\", \"entities\", \"files\", \"ids\"]);\nconst filesByIdView = R.path([\"files\", \"entities\", \"files\", \"byId\"]);\nconst timingByIdView = R.path([\"timing\", \"entities\", \"timing\", \"byId\"]);\nconst commentsByIdView = R.path([\"timeline\", \"entities\", \"comments\", \"byId\"]);\nconst tracksIdsLens = R.lensPath(tracksIdsPath);\nconst tracksByIdLens = R.lensPath(tracksByIdPath);\nconst axesIdsLens = R.lensPath(axesIdsPath);\nconst axesByIdLens = R.lensPath(axesByIdPath);\n\nconst timingsView = R.pipe(timingByIdView, R.values);\nconst commentsView = R.pipe(commentsByIdView, R.values);\n\nconst highSpeedsFilesView = (stage) => {\n const filesById = filesByIdView(stage);\n const resourcesById = resourcesByIdView(stage);\n return R.pipe(\n // Iterate R.over the resource ids\n resourcesIdsView,\n // Filter out all the ids that don't start with high-speed.\n R.filter(R.startsWith(\"high-speed:\")),\n // Map the remaining resource ids to the files ids in the respective resource object.\n lookupPathAll(resourcesById, [\"props\", \"files\"]),\n // Flatten the ids so we get a single array containing all the files ids referred\n // to across all high-speed resources.\n R.flatten,\n // Map the file ids to file objects.\n lookupAll(filesById)\n )(stage);\n};\n\nconst highSpeedsTimingsView = (stage) => {\n const timings = timingsView(stage);\n return R.pipe(\n highSpeedsFilesView,\n // Map the file ids to file objects.\n (files) =>\n files.map((file) => timings.find((timing) => timing.ref.id === file.id))\n )(stage);\n};\n\nconst videosFilesView = (stage) => {\n const filesIds = filesIdsView(stage);\n const filesById = filesByIdView(stage);\n const highSpeedFiles = highSpeedsFilesView(stage);\n\n return R.pipe(\n R.without(R.pluck(\"id\", highSpeedFiles)),\n lookupAll(filesById),\n R.filter(R.propEq(\"type\", \"video\"))\n )(filesIds);\n};\n\nconst videoTimingsView = (stage) => {\n const timings = timingsView(stage);\n return R.pipe(videosFilesView, (files) =>\n files.map((file) => timings.find((timing) => timing.ref.id === file.id))\n )(stage);\n};\n\nexport const upsertAxes = (axes) =>\n R.curry(\n R.pipe(\n R.unless(R.path(axesIdsPath), R.assocPath(axesIdsPath, [])),\n R.unless(R.path(axesByIdPath), R.assocPath(axesIdsPath, {})),\n R.over(axesIdsLens, R.union(R.pluck(\"id\", axes))),\n R.over(axesByIdLens, R.merge(indexById(axes)))\n )\n );\n\nexport const createTrackFromEntity = R.curry((axis, entity) => {\n const { start, end, type, id } = entity;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n group: axis,\n ref: {\n id,\n type,\n },\n timeline: \"1\",\n };\n});\n\nexport const mapEntitiesToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromEntity(axis), entitiesSelector(stage))\n);\n\nexport const createTrackFromTiming = R.curry((axis, timing) => {\n const { start, end, ref } = timing;\n const { id, type } = ref;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n group: axis,\n ref: {\n id,\n type,\n },\n timeline: \"1\",\n };\n});\n\nexport const mapTimingsToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromTiming(axis), entitiesSelector(stage))\n);\nconst mapCommentsToTracks = R.pipe(\n mapEntitiesToTracks(commentsView, \"comment\"),\n R.map(R.mergeLeft({ type: \"comment\", label: \"comment\" }))\n);\n\nconst formatTestNo = (input) => {\n const [\n // eslint-disable-next-line no-unused-vars\n m,\n project,\n facility,\n program,\n category,\n test,\n experiment,\n measurement,\n ] = input.match(NEW_TEST_REGEX);\n\n return `${project}_${program.padStart(2, \"0\")}${facility}_${category.padStart(\n 2,\n \"0\"\n )}_${test.padStart(3, \"0\")}_${experiment.padStart(\n 3,\n \"0\"\n )}_${measurement.padStart(2, \"0\")}`;\n};\n\nconst extractTestNumberFromMetadata = R.pipe(\n R.path([\"metadata\", \"location\", \"$id\"]),\n R.when(R.test(NEW_TEST_REGEX), formatTestNo)\n);\n\nconst extractTestNumberFromFileName = R.compose(\n R.head,\n R.defaultTo([undefined]),\n R.either(\n match(/[0-9]{5}_[0-9]{2}[a-zA-Z]+_[0-9]{2}_[0-9]{3}_[0-9]{3}_[0-9]{2}/),\n match(/[A-Za-z]+[0-9]{5}_[0-9]+_[0-9]+_[0-9]+/)\n ),\n R.prop(\"path\")\n);\n\nconst extractTestNumber = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.prop(track.ref.id),\n R.either(extractTestNumberFromMetadata, extractTestNumberFromFileName)\n )(stage);\n\nconst formatter = formatWithOptions({ awareOfUnicodeTokens: true });\n\nconst extractRecordingChannel = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.path([track.ref.id, \"metadata\", \"recChannel\"])\n )(stage);\n\nconst createHighSpeedTracksLabels = (stage) => (tracks) =>\n mapWithIndex((hs, index) => {\n const recordingChannel = extractRecordingChannel(stage, hs);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `HS ${no}`, hs);\n }, tracks);\n\nconst createVideoTracksLabels = (stage) => (tracks) =>\n mapWithIndex((vid, index) => {\n const recordingChannel = extractRecordingChannel(stage, vid);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `VID ${no}`, vid);\n }, tracks);\n\nconst extractFormat = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref.id, \"path\"]), (p) =>\n fsPath.extname(p)\n )(stage);\n\nconst extractSecondFractions = (isoStr) =>\n R.pipe(\n match(/[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]+)/),\n R.ifElse(R.isNil, R.always(\"000\"), R.nth(1))\n )(isoStr);\n\nconst extractDateFromTrack = R.pipe(\n R.prop(\"start\"),\n parseISO,\n formatter(\"dd-MM-yyyy\")\n);\nconst createTime = R.converge(R.pipe(R.pair, R.join(\".\")), [\n R.pipe(parseISO, formatter(\"HH:mm:ss\")),\n extractSecondFractions,\n]);\n\nconst extractStartFromTrack = R.pipe(R.prop(\"start\"), createTime);\n\nconst extractEndFromTrack = R.pipe(R.prop(\"end\"), createTime);\n\nconst createVideoMetadata = R.curry((type, stage, track) => ({\n ...track,\n metadata: [\n [{ label: \"Test\", value: extractTestNumber(stage, track) }],\n [\n { label: \"Type\", value: type },\n {\n label: \"Recording channel\",\n value: extractRecordingChannel(stage, track),\n },\n { label: \"Format\", value: extractFormat(stage, track) },\n ],\n [\n { label: \"Date\", value: extractDateFromTrack(track) },\n { label: \"Start\", value: extractStartFromTrack(track) },\n { label: \"End\", value: extractEndFromTrack(track) },\n ],\n ],\n}));\n\nconst createHighSpeedsMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"high-speed\", stage), tracks)\n);\nconst createVideosMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"video\", stage), tracks)\n);\n\nconst createTracks = (stage) =>\n R.converge((...args) => R.flatten(args), [\n R.pipe(\n mapTimingsToTracks(highSpeedsTimingsView, \"high-speed\"),\n createHighSpeedTracksLabels(stage),\n createHighSpeedsMetadata(stage)\n ),\n R.pipe(\n mapTimingsToTracks(videoTimingsView, \"video\"),\n createVideoTracksLabels(stage),\n createVideosMetadata(stage)\n ),\n mapCommentsToTracks,\n ])(stage);\n\nconst upsertTracks = (tracks) => (stage) => {\n const indexedById = indexById(tracks);\n return R.pipe(\n R.unless(R.path(tracksIdsPath), R.assocPath(tracksIdsPath, [])),\n R.unless(R.path(tracksByIdPath), R.assocPath(tracksByIdPath, {})),\n R.over(tracksIdsLens, R.union(R.pluck(\"id\", tracks))),\n R.over(tracksByIdLens, R.mergeLeft(indexedById))\n )(stage);\n};\n\nconst earliestTime = (stage) =>\n R.pipe(\n timingsView,\n R.map(R.prop(\"start\")),\n R.map(Date.parse),\n R.apply(Math.min),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst latestTime = (stage) =>\n R.pipe(\n timingsView,\n R.map(R.prop(\"end\")),\n R.map(Date.parse),\n R.apply(Math.max),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst setTimeLineStartEnd = (stage) =>\n R.pipe(\n R.assocPath([\"timeline\", \"start\"], earliestTime(stage)),\n R.assocPath([\"timeline\", \"end\"], latestTime(stage))\n )(stage);\n\nconst setCommentAxis = R.assocPath([\"timeline\", \"commentAxis\"], \"comment\");\n\nconst consolidateTimeline = (stage) => {\n return R.pipe(\n upsertAxes(axesSettings),\n upsertTracks(createTracks(stage)),\n setTimeLineStartEnd,\n setCommentAxis\n )(stage);\n};\n\nexport default pipe(\n tap((s) => {\n console.log(\"consolidating v3 stage!\", s);\n }),\n consolidateTimeline\n);\n","import v2 from \"./v2\";\nimport v3 from \"./v3\";\n\nexport default Object.freeze({\n 2: v2,\n 3: v3,\n});\n","import { always, propOr } from \"ramda\";\n\nimport _consolidators from \"./consolidators\";\nimport detectVersion from \"./detectVersion\";\n\nexport const _consolidate = (consolidators) => (stage) => {\n const version = detectVersion(stage);\n const consolidator = propOr(always(stage), version, consolidators);\n try {\n return { stage: consolidator(stage) };\n } catch (error) {\n return { error };\n }\n};\n\nexport default _consolidate(_consolidators);\n","import * as R from \"ramda\";\nimport consolidate from \"../consolidate\";\n\nconst upgradeResources = R.over(\n R.lensPath([\"resources\", \"entities\", \"resources\", \"byId\"]),\n R.map(({ files, ...resource }) => ({\n ...resource,\n props: {\n files,\n },\n }))\n);\nconst createTimingSlice = R.pipe(\n R.assocPath([\"timing\", \"entities\", \"timing\"], {\n ids: [],\n byId: {},\n }),\n R.assocPath([\"timing\", \"entities\", \"offset\"], {\n ids: [],\n byId: {},\n })\n);\n\nconst createFilesTimings = (s) => {\n const timings = R.pipe(\n R.path([\"files\", \"entities\", \"files\"]),\n R.over(\n R.lensProp(\"byId\"),\n R.map(\n R.pipe(R.pick([\"id\", \"start\", \"end\"]), (timing) =>\n R.assoc(\"ref\", { id: timing.id, type: \"file\" }, timing)\n )\n )\n )\n )(s);\n\n return R.pipe(\n R.over(\n R.lensPath([\"files\", \"entities\", \"files\", \"byId\"]),\n R.map(R.omit([\"start\", \"end\"]))\n ),\n R.over(\n R.lensPath([\"timing\", \"entities\", \"timing\"]),\n R.mergeDeepRight(timings)\n ),\n R.over(R.lensPath([\"timing\", \"entities\", \"timing\"]), (entities) =>\n R.assoc(\"ids\", R.keys(entities.byId), entities)\n )\n )(s);\n};\n\nconst createComments = R.unless(\n R.pipe(R.path([\"timeline\", \"entities\", \"comments\"]), R.complement(R.isNil)),\n R.assocPath([\"timeline\", \"entities\", \"comments\"], { ids: [], byId: {} })\n);\n\nconst createCommentsTimings = (s) => {\n const timings = R.pipe(\n R.path([\"timeline\", \"entities\", \"comments\"]),\n R.over(\n R.lensProp(\"byId\"),\n R.map(\n R.pipe(R.pick([\"id\", \"start\", \"end\"]), (timing) =>\n R.assoc(\"ref\", { id: timing.id, type: \"comment\" }, timing)\n )\n )\n )\n )(s);\n\n return R.pipe(\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"comments\", \"byId\"]),\n R.map(R.omit([\"start\", \"end\"]))\n ),\n R.over(\n R.lensPath([\"timing\", \"entities\", \"timing\"]),\n R.mergeDeepRight(timings)\n ),\n R.over(R.lensPath([\"timing\", \"entities\", \"timing\"]), (entities) =>\n R.assoc(\"ids\", R.keys(entities.byId), entities)\n )\n )(s);\n};\n\nconst removeOutlets = (s) => {\n const outlets = R.path([\"data\", \"entities\", \"outlets\"], s);\n\n if (outlets) {\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"outlets\"]),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ outletId, ...dataViewer }) => {\n const outlet = R.path([\"byId\", outletId], outlets) || { streams: [] };\n return {\n ...dataViewer,\n streams: outlet.streams,\n };\n })\n )\n )(s);\n }\n return s;\n};\n\nconst createSliceEntities = (entityName) => (slice) => {\n const result = R.pipe(\n R.unless(R.has(\"entities\"), R.assoc(\"entities\", {})),\n R.unless(\n R.hasPath([\"entities\", entityName]),\n R.assocPath([\"entities\", entityName], {\n ids: [],\n byId: {},\n })\n )\n )(slice);\n\n return result;\n};\n\nconst createTimelineSlice = (s) => {\n return R.pipe(\n R.over(\n R.lensProp(\"timeline\"),\n R.pipe(\n createSliceEntities(\"axes\"),\n createSliceEntities(\"groups\"),\n createSliceEntities(\"timeline\"),\n createSliceEntities(\"tracks\")\n )\n )\n )(s);\n};\n\nconst createTimelineGroups = (s) => {\n const groups = R.pipe(\n R.path([\"timeline\", \"entities\", \"axes\"]),\n R.over(R.lensProp(\"byId\"), R.map(R.dissoc(\"resources\")))\n )(s);\n\n return R.pipe(\n R.dissocPath([\"timeline\", \"entities\", \"axes\"]),\n R.assocPath([\"timeline\", \"entities\", \"groups\"], groups)\n )(s);\n};\n\nconst createTimeline = (s) =>\n R.pipe(\n R.assocPath([\"timeline\", \"entities\", \"timeline\", \"byId\", \"1\"], {\n id: \"1\",\n groupOrder: [\"video\", \"high-speed\", \"comment\"],\n actions: {\n copyLink: true,\n addComment: true,\n },\n start: R.path([\"timeline\", \"start\"], s),\n end: R.path([\"timeline\", \"end\"], s),\n }),\n R.dissocPath([\"timeline\", \"start\"]),\n R.dissocPath([\"timeline\", \"end\"]),\n R.assocPath([\"timeline\", \"entities\", \"timeline\", \"ids\"], [\"1\"]),\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"tracks\", \"byId\"]),\n R.map(R.pipe(R.assoc(\"timeline\", \"1\")))\n ),\n R.assocPath([\"timeline\", \"masterTimeline\"], \"1\")\n )(s);\n\nconst fixTracks = (s) =>\n R.pipe(\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"tracks\", \"byId\"]),\n R.map(({ axisRef, type, ref, start, end, ...track }) => ({\n ...track,\n group: axisRef,\n ref: {\n type: type === \"video\" || type === \"image\" ? \"file\" : type,\n id: ref,\n },\n editable: type === \"comment\",\n timeline: \"1\",\n }))\n )\n )(s);\n\nconst dataStreamsToMeasurements = (s) => {\n const streamsSlice = R.path([\"data\", \"entities\", \"dataStreams\"], s);\n\n if (!R.isEmpty(streamsSlice) && !R.isNil(streamsSlice)) {\n const measurementsSlice = R.pipe(\n R.over(\n R.lensProp(\"byId\"),\n R.pipe(\n R.map((measurement) => ({\n ...measurement,\n legacy: true,\n name: measurement.id,\n }))\n )\n )\n )(streamsSlice);\n\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"dataStreams\"]),\n R.assocPath([\"data\", \"entities\", \"measurements\"], measurementsSlice),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ streams = [], ...dataViewer }) => ({\n measurements: streams,\n ...dataViewer,\n }))\n )\n )(s);\n }\n return s;\n};\n\nconst translateComponent = (component) => {\n switch (component) {\n case \"DataViewerComponent\":\n return \"DataViewerPanel\";\n case \"VideoComponent\":\n return \"VideoPanel\";\n case \"PlaylistComponent\":\n return \"PlaylistPanel\";\n default:\n return component;\n }\n};\n\nconst fixPanels = (s) => {\n if (R.hasPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"], s)) {\n return R.pipe(\n R.over(\n R.lensPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"]),\n R.unless(\n R.isNil,\n R.map(\n R.when(\n R.has(\"component\"),\n R.over(R.lensProp(\"component\"), translateComponent)\n )\n )\n )\n )\n )(s);\n }\n return s;\n};\n\nconst scaleZoomSteps = (stage) => {\n const { measurementScale } = stage.data;\n return R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.unless(\n R.isNil,\n R.mapObjIndexed(({ zoomSteps = [], ...rest }) => ({\n ...rest,\n zoomSteps: rest.zoomStepsIsScaled\n ? zoomSteps\n : zoomSteps.map((step) => step * Math.sqrt(measurementScale)),\n }))\n )\n )(stage);\n};\n\nconst updateVersion = R.assoc(\"version\", 3);\n\nexport default R.pipe(\n R.tap((stage) => {\n console.log(\"upgrading \", stage, \" from 2 to 3\");\n }),\n consolidate,\n R.unless(\n R.prop(\"error\"),\n R.pipe(\n R.prop(\"stage\"),\n removeOutlets,\n scaleZoomSteps,\n dataStreamsToMeasurements,\n createTimingSlice,\n createTimelineSlice,\n createFilesTimings,\n createComments,\n createCommentsTimings,\n createTimelineGroups,\n createTimeline,\n fixTracks,\n updateVersion,\n fixPanels,\n upgradeResources\n )\n )\n);\n","import v1ToV2 from \"./v1-to-v2\";\nimport v2ToV3 from \"./v2-to-v3\";\n\nexport default () => [\n [2, v1ToV2],\n [3, v2ToV3],\n];\n","import {\n filter,\n pipe,\n map,\n applyTo,\n apply,\n gte,\n last,\n nth,\n defaultTo,\n prepend,\n always,\n} from \"ramda\";\n\nimport versions from \"./versions\";\nimport detectVersion from \"./detectVersion\";\nimport upgraders from \"./upgraders\";\n\nconst resolveFrom = (stage) => detectVersion(stage);\n\nconst resolveTo = (to) => defaultTo(last(versions))(to);\n\nconst versionsCorrect = (from, to) => gte(to, from);\n\nconst upgradePipe = (from, to, stage) =>\n pipe(\n filter(([v]) => v > from && v <= to),\n map(nth(1)),\n prepend(always(stage)),\n apply(pipe),\n applyTo(stage)\n )(upgraders());\n\nexport const optionsParser = ({\n upgradeFrom: from = undefined,\n upgradeTo: to = undefined,\n}) => ({\n from,\n to,\n});\n\nexport default (stage, options = {}) => {\n const { to = undefined } = options;\n const resolvedTo = resolveTo(to);\n const resolvedFrom = resolveFrom(stage);\n\n let upgraded = stage;\n let error;\n console.log(`upgrading from ${resolvedFrom} to ${resolvedTo}.`);\n if (versionsCorrect(resolvedFrom, resolvedTo)) {\n upgraded = upgradePipe(resolvedFrom, resolvedTo, stage);\n } else {\n error = new Error(\n `Incorrect version: from: ${resolvedFrom} > to: ${resolvedTo}`\n );\n }\n\n return {\n stage: upgraded,\n error,\n };\n};\n","export default {\n version: \"2018g\",\n zones: [\n \"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|01010101010101010101010101010101010101010101232323454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|16e5\",\n \"Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|79e3\",\n ],\n links: [\"Europe/Prague|Europe/Bratislava\"],\n};\n","import * as R from \"ramda\";\n\nimport timezoneData from \"./timezone-data\";\n\nconst {\n findTimeZone,\n setTimeZone,\n populateTimeZones,\n} = require(\"timezone-support/dist/lookup-convert\");\nconst { formatZonedTime } = require(\"timezone-support/dist/parse-format\");\n\npopulateTimeZones(timezoneData);\nconst dateWithoutTimeZoneExp = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})((\\.)([0-9]{0,}))?$/;\nconst dateWithWrongSeconds = /^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:)([0-9]{3,})((\\.[0-9]+)?((Z|(\\+|-)([0-9]{2}:[0-9]{2}|[0-9]+))))$/;\n\nconst amsterdam = findTimeZone(\"Europe/Amsterdam\");\n\nconst fixDateWithoutTimezone = (d) => {\n const matches = dateWithoutTimeZoneExp.exec(d);\n\n if (matches) {\n const timeObj = {\n year: matches[1],\n month: matches[2],\n day: matches[3],\n hours: matches[4],\n minutes: matches[5],\n seconds: matches[6],\n };\n\n const withTimezone = setTimeZone(timeObj, amsterdam);\n const formattedDate = formatZonedTime(withTimezone, \"YYYY-M-D\");\n const formattedTime = formatZonedTime(withTimezone, \"H:m:ss\");\n const milliseconds = matches[7];\n const formattedTimezone = formatZonedTime(withTimezone, \"Z\");\n return `${formattedDate}T${formattedTime}${\n milliseconds || \"\"\n }${formattedTimezone}`;\n }\n\n return d;\n};\n\nconst fixDateWithWrongSeconds = (d) => {\n const matches = dateWithWrongSeconds.exec(d);\n\n if (matches) {\n const [, rest, seconds, timezone] = matches;\n const newDate = `${rest}${seconds.substring(\n seconds.length - 2\n )}${timezone}`;\n return newDate;\n }\n\n return d;\n};\n\nconst isIncorrectTime = (input) =>\n R.both(\n R.is(String),\n R.pipe(\n R.anyPass([R.test(dateWithoutTimeZoneExp), R.test(dateWithWrongSeconds)])\n )\n )(input);\n\nconst fixDates = (obj) =>\n R.pipe(\n R.map(\n R.ifElse(\n isIncorrectTime,\n R.pipe(\n R.tap((x) => `${x} is incorrect date`),\n fixDateWithoutTimezone,\n fixDateWithWrongSeconds\n ),\n R.when(R.is(Object), (c) => fixDates(c))\n )\n )\n )(obj);\n\nexport default fixDates;\n","import validate, { optionsParser as validateOptionsParser } from \"./validate\";\nimport upgrade, { optionsParser as upgradeOptionsParser } from \"./upgrade\";\nimport fixDates from \"./fixDates\";\nimport consolidate from \"./consolidate\";\n\nconst fixDatesWithOptions = (options, stage) => ({\n stage: fixDates(stage),\n});\n\nconst validateWithOptions = (options, stage) => {\n const validated = validate(stage, validateOptionsParser(options));\n return validated;\n};\n\nconst upgradeWithOptions = (options, stage) =>\n upgrade(stage, upgradeOptionsParser(options));\nconst consolidateWithOptions = (options, stage) => consolidate(stage);\n\nexport default () => [\n fixDatesWithOptions,\n validateWithOptions,\n consolidateWithOptions,\n upgradeWithOptions,\n];\n","import {\n pipe,\n map,\n apply,\n applyTo,\n curry,\n defaultTo,\n unless,\n prop,\n prepend,\n always,\n nAry,\n} from \"ramda\";\n\nconst hasError = prop(\"error\");\n\nconst doStep = curry((options, step, response) => {\n const normalizedStep = curry(nAry(2, step));\n\n return pipe(\n defaultTo({}),\n unless(hasError, pipe(prop(\"stage\"), normalizedStep(options)))\n )(response);\n});\n\nconst handler = curry((steps, options, stage) =>\n pipe(\n defaultTo([]),\n map(doStep(options)), // Map all the steps to a doStep wrapper so they can be piped.\n prepend(always({ stage })),\n apply(pipe), // Create a pipe of all the steps.\n applyTo(stage) // Pipe the stage through the steps.\n )(steps)\n);\n\nexport default (steps, options) => handler(steps, options);\n","export default () =>\n Object.freeze({\n upgradeFrom: undefined,\n upgradeTo: undefined,\n validateVersion: undefined,\n });\n","import * as R from \"ramda\";\n\nconst removeOutlets = (s) => {\n const outlets = R.path([\"data\", \"entities\", \"outlets\"], s);\n\n if (outlets) {\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"outlets\"]),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ outletId, ...dataViewer }) => {\n const outlet = R.path([\"byId\", outletId], outlets) || { streams: [] };\n return {\n ...dataViewer,\n streams: outlet.streams,\n };\n })\n )\n )(s);\n }\n return s;\n};\n\nconst dataStreamsToMeasurements = (s) => {\n const streamsSlice = R.path([\"data\", \"entities\", \"dataStreams\"], s);\n\n if (!R.isEmpty(streamsSlice) && !R.isNil(streamsSlice)) {\n const measurementsSlice = R.pipe(\n R.over(\n R.lensProp(\"byId\"),\n R.pipe(\n R.map((measurement) => ({\n ...measurement,\n legacy: true,\n name: measurement.id,\n }))\n )\n )\n )(streamsSlice);\n\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"dataStreams\"]),\n R.assocPath([\"data\", \"entities\", \"measurements\"], measurementsSlice),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ streams = [], ...dataViewer }) => ({\n measurements: streams,\n ...dataViewer,\n }))\n )\n )(s);\n }\n return s;\n};\n\nconst translateComponent = (component) => {\n switch (component) {\n case \"DataViewerComponent\":\n return \"DataViewerPanel\";\n case \"VideoComponent\":\n return \"VideoPanel\";\n case \"PlaylistComponent\":\n return \"PlaylistPanel\";\n default:\n return component;\n }\n};\n\nconst fixPanels = (s) => {\n if (R.hasPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"], s)) {\n return R.pipe(\n R.over(\n R.lensPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"]),\n R.unless(\n R.isNil,\n R.map(\n R.when(\n R.has(\"component\"),\n R.over(R.lensProp(\"component\"), translateComponent)\n )\n )\n )\n )\n )(s);\n }\n return s;\n};\n\nconst scaleZoomSteps = (stage) => (settings) => {\n const { measurementScale } = stage.data;\n\n return R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.unless(\n R.isNil,\n R.mapObjIndexed(({ zoomSteps = [], ...rest }) => ({\n ...rest,\n zoomSteps: rest.zoomStepsIsScaled\n ? zoomSteps\n : zoomSteps.map((step) => step * Math.sqrt(measurementScale)),\n }))\n )\n )(settings);\n};\n\nconst removeTimeline = R.dissoc(\"timeline\");\n\nconst updateVersion = R.assoc(\"version\", 3);\n\nexport default R.curry((stage, settings) => {\n return R.pipe(\n R.tap((s) => {\n console.log(\"upgrading settings\", s, \" from 2 to 3\");\n }),\n R.pipe(\n removeOutlets,\n dataStreamsToMeasurements,\n updateVersion,\n scaleZoomSteps(stage),\n fixPanels,\n removeTimeline\n )\n )(settings);\n});\n","import * as R from \"ramda\";\nimport v2ToV3 from \"./v2-to-v3\";\n\nexport default R.curry((stage, settings) => {\n return R.pipe(R.unless(R.propEq(\"version\", 3), v2ToV3(stage)))(settings);\n});\n","import * as R from \"ramda\";\nimport settingsUpgrader from \"./settingsUpgrader\";\n\nconst settingsCleaner = R.pipe(R.dissocPath([\"timer\", \"wantedTime\"]));\n\nexport default (stage, settings) =>\n R.pipe(settingsUpgrader(stage), settingsCleaner)(settings);\n","import steps from \"./steps\";\nimport handlerFactory from \"./handler\";\nimport defaultOptions from \"./options\";\nimport settingsHandler from \"./settingsHandler\";\nimport pkg from \"../package.json\";\n\nconsole.log(\"inSync StageHandler version\", pkg.version);\n\nexport const createStageSettingsHandler = () => settingsHandler;\n\nexport const createStageHandler = (options = defaultOptions()) =>\n handlerFactory(steps(), options);\n"],"names":["lookup","flip","prop","lookupPath","path","lookupAll","curry","from","ids","map","lookupPathAll","p","compose","indexById","indexBy","listEntities","entitiesContainerPath","pipe","converge","pathOr","defaultTo","ValidationError","Error","setErrors","errors","formatErrorMessage","header","dataPath","message","of","prepend","append","flatten","join","err","ajv","Ajv","$data","allErrors","logger","require","createAJVValidator","schema","validator","compile","stage","result","valid","error","createValidationError","undefined","jsonSchemaValidator","Object","freeze","v1","v2","v3","optionsParser","validationVersion","version","options","detectVersion","validators","applyTo","outletsView","addDataViewerZoomSteps","filter","propSatisfies","startsWith","pair","replace","id","visible","reduce","acc","zoomSteps","assocPath","assoc","dissocPath","NEW_TEST_REGEX","fsPath","match","R","regex","st","mapWithIndex","axesSettings","color","tracksIdsPath","tracksByIdPath","axesIdsPath","axesByIdPath","resourcesIdsView","resourcesByIdView","filesIdsView","filesByIdView","commentsByIdView","tracksIdsLens","tracksByIdLens","axesIdsLens","axesByIdLens","filesView","commentsView","highSpeedsFilesView","filesById","resourcesById","videosFilesView","filesIds","highSpeedFiles","upsertAxes","axes","createTrackFromEntity","axis","entity","start","end","type","axisRef","ref","mapEntitiesToTracks","entitiesSelector","mapCommentsToTracks","label","formatTestNo","input","m","project","facility","program","category","test","experiment","measurement","padStart","extractTestNumberFromMetadata","extractTestNumberFromFileName","extractTestNumber","track","formatter","formatWithOptions","awareOfUnicodeTokens","extractRecordingChannel","createHighSpeedTracksLabels","tracks","hs","index","recordingChannel","no","createVideoTracksLabels","vid","extractFormat","extname","extractSecondFractions","isoStr","extractDate","parseISO","createTime","extractStart","extractEnd","createVideoMetadata","metadata","value","createHighSpeedsMetadata","createVideosMetadata","createTracks","args","upsertTracks","earliestTime","Date","parse","Math","min","t","d","toISOString","latestTime","max","setTimeLineStartEnd","setCommentAxis","consolidateTimeline","consolidate","timingByIdView","timingsView","highSpeedsTimingsView","timings","files","file","find","timing","videoTimingsView","group","timeline","createTrackFromTiming","mapTimingsToTracks","extractDateFromTrack","extractStartFromTrack","extractEndFromTrack","indexedById","tap","s","console","log","_consolidate","consolidators","consolidator","propOr","always","_consolidators","upgradeResources","resource","props","createTimingSlice","byId","createFilesTimings","entities","createComments","createCommentsTimings","removeOutlets","outlets","outletId","dataViewer","outlet","streams","createSliceEntities","entityName","slice","createTimelineSlice","createTimelineGroups","groups","createTimeline","groupOrder","actions","copyLink","addComment","fixTracks","editable","dataStreamsToMeasurements","streamsSlice","measurementsSlice","legacy","name","measurements","translateComponent","component","fixPanels","scaleZoomSteps","measurementScale","data","rest","zoomStepsIsScaled","step","sqrt","updateVersion","v1ToV2","v2ToV3","resolveFrom","resolveTo","to","last","versions","versionsCorrect","gte","upgradePipe","v","nth","apply","upgraders","upgradeFrom","upgradeTo","resolvedTo","resolvedFrom","upgraded","zones","links","findTimeZone","setTimeZone","populateTimeZones","formatZonedTime","timezoneData","dateWithoutTimeZoneExp","dateWithWrongSeconds","amsterdam","fixDateWithoutTimezone","matches","exec","timeObj","year","month","day","hours","minutes","seconds","withTimezone","formattedDate","formattedTime","milliseconds","formattedTimezone","fixDateWithWrongSeconds","timezone","newDate","substring","length","isIncorrectTime","String","fixDates","obj","x","c","fixDatesWithOptions","validateWithOptions","validated","validate","validateOptionsParser","upgradeWithOptions","upgrade","upgradeOptionsParser","consolidateWithOptions","hasError","doStep","response","normalizedStep","nAry","unless","handler","steps","validateVersion","settings","removeTimeline","settingsCleaner","settingsUpgrader","pkg","createStageSettingsHandler","settingsHandler","createStageHandler","defaultOptions","handlerFactory"],"mappings":";;;;;;;;;;AAaO,MAAMA,MAAM,GAAGC,MAAI,CAACC,MAAD,CAAnB;AACA,MAAMC,UAAU,GAAGF,MAAI,CAACG,MAAD,CAAvB;AACA,MAAMC,SAAS,GAAGC,OAAK,CAAC,CAACC,IAAD,EAAOC,GAAP,KAAeC,KAAG,CAACT,MAAM,CAACO,IAAD,CAAP,EAAeC,GAAf,CAAnB,CAAvB;AAEA,MAAME,aAAa,GAAGJ,OAAK,CAAC,CAACC,IAAD,EAAOI,CAAP,EAAUH,GAAV,KACjCC,KAAG,CAACG,SAAO,CAACR,MAAI,CAACO,CAAD,CAAL,EAAUX,MAAM,CAACO,IAAD,CAAhB,CAAR,EAAiCC,GAAjC,CAD6B,CAA3B;AAIA,MAAMK,SAAS,GAAGC,SAAO,CAACZ,MAAI,CAAC,IAAD,CAAL,CAAzB;AAEA,MAAMa,YAAY,GAAGT,OAAK,CAAC,CAACU,qBAAD,EAAwBT,IAAxB,KAChCU,MAAI,CACFC,UAAQ,CAACb,SAAD,EAAY,CAClBc,QAAM,CAAC,EAAD,EAAK,CAAC,GAAGH,qBAAJ,EAA2B,MAA3B,CAAL,CADY,EAElBG,QAAM,CAAC,EAAD,EAAK,CAAC,GAAGH,qBAAJ,EAA2B,KAA3B,CAAL,CAFY,CAAZ,CADN,CAAJ,CAKET,IALF,CAD+B,CAA1B;;ACrBP;;;;;AAIA,oBAAeU,MAAI,CAACf,MAAI,CAAC,SAAD,CAAL,EAAkBkB,WAAS,CAAC,CAAD,CAA3B,CAAnB;;ACJA,MAAMC,eAAN,SAA8BC,KAA9B,CAAoC;AAClCC,EAAAA,SAAS,CAACC,MAAD,EAAS;AAChB,SAAKA,MAAL,GAAcA,MAAd;AACD;;AAHiC;;AAMpC,MAAMC,kBAAkB,GAAID,MAAD,IAAY;AACrC,QAAME,MAAM,GAAG,gCAAf;AAEA,SAAOT,MAAI,CACTR,KAAG,CAAC,CAAC;AAAEkB,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAD,KAA4B,UAASD,QAAS,gBAAeC,OAAQ,EAAtE,CADM,EAETnB,KAAG,CAACoB,IAAD,CAFM,EAGTpB,KAAG,CAACQ,MAAI,CAACa,SAAO,CAAC,MAAD,CAAR,EAAkBC,QAAM,CAAC,IAAD,CAAxB,CAAL,CAHM,EAITC,SAJS,EAKTF,SAAO,CAACJ,MAAD,CALE,EAMTO,MAAI,CAAC,EAAD,CANK,CAAJ,CAOLT,MAPK,CAAP;AAQD,CAXD;;AAaA,6BAAgBA,MAAD,IAAY;AACzB,QAAMU,GAAG,GAAG,IAAIb,eAAJ,CAAoBI,kBAAkB,CAACD,MAAD,CAAtC,CAAZ;AACAU,EAAAA,GAAG,CAACX,SAAJ,CAAcC,MAAd;AAEA,SAAOU,GAAP;AACD,CALD;;AClBA,MAAMC,GAAG,GAAG,IAAIC,GAAJ,CAAQ;AAAEC,EAAAA,KAAK,EAAE,IAAT;AAAeC,EAAAA,SAAS,EAAE,IAA1B;AAAgCC,EAAAA,MAAM,EAAE;AAAxC,CAAR,CAAZ;;AACAC,OAAO,CAAC,cAAD,CAAP,CAAwBL,GAAxB,EAA6B,eAA7B;AACA;;;;;;AAIO,MAAMM,kBAAkB,GAAIC,MAAD,IAAY;AAC5C,QAAMC,SAAS,GAAGR,GAAG,CAACS,OAAJ,CAAYF,MAAZ,CAAlB;AAEA,SAAQG,KAAD,IAAW;AAChB,UAAMC,MAAM,GAAGH,SAAS,CAACE,KAAD,CAAxB;AAEA,UAAM;AAAErB,MAAAA;AAAF,QAAamB,SAAnB;AAEA,WAAO;AACLI,MAAAA,KAAK,EAAED,MADF;AAELD,MAAAA,KAFK;AAGLG,MAAAA,KAAK,EAAExB,MAAM,GAAGyB,qBAAqB,CAACzB,MAAD,CAAxB,GAAmC0B;AAH3C,KAAP;AAKD,GAVD;AAWD,CAdM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNP,MAAMC,mBAAmB,GAAGV,kBAAkB,CAACC,MAAD,CAA9C;AAEA,UAAgBG,KAAD,IAAW;AACxB,SAAOM,mBAAmB,CAACN,KAAD,CAA1B;AACD,CAFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA,MAAMM,qBAAmB,GAAGV,kBAAkB,CAACC,QAAD,CAA9C;AAEA,UAAgBG,KAAD,IAAW;AACxB,SAAOM,qBAAmB,CAACN,KAAD,CAA1B;AACD,CAFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA,MAAMM,qBAAmB,GAAGV,kBAAkB,CAACC,QAAD,CAA9C;AAEA,UAAgBG,KAAD,IAAW;AACxB,SAAOM,qBAAmB,CAACN,KAAD,CAA1B;AACD,CAFD;;ACDA,MAAMpC,GAAG,GAAG2C,MAAM,CAACC,MAAP,CAAc;AACxB,OAAKC,EADmB;AAExB,OAAKC,EAFmB;AAGxB,OAAKC;AAHmB,CAAd,CAAZ;;ACCA;;;;;AAIO,MAAMC,aAAa,GAAG,CAAC;AAAEC,EAAAA,iBAAiB,GAAGR;AAAtB,CAAD,MAAwC;AACnES,EAAAA,OAAO,EAAED;AAD0D,CAAxC,CAAtB;AAIP;;;;;;AAMA,gBAAe,CAACb,KAAD,EAAQe,OAAO,GAAG,EAAlB,KAAyB;AACtC,QAAM;AAAED,IAAAA,OAAO,GAAGT;AAAZ,MAA0BU,OAAhC;AACA,SAAO3C,MAAI,CACTG,WAAS,CAACyC,aAAa,CAAChB,KAAD,CAAd,CADA,EAET7C,MAAM,CAAC8D,GAAD,CAFG,EAGTC,SAAO,CAAClB,KAAD,CAHE,CAAJ,CAILc,OAJK,CAAP;AAKD,CAPD;;ACnBA,eAAeP,MAAM,CAACC,MAAP,CAAc,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAd,CAAf;;ACAA;;;;;AAuBA,MAAMW,WAAW,GAAGjD,YAAY,CAAC,CAAC,MAAD,EAAS,UAAT,EAAqB,SAArB,CAAD,CAAhC;;AAGA,MAAMkD,sBAAsB,GAAIpB,KAAD,IAC7B5B,MAAI,CACF+C,WADE;AAGF;AACAE,QAAM,CAACC,eAAa,CAACC,YAAU,CAAC,aAAD,CAAX,EAA4B,IAA5B,CAAd,CAJJ,EAKF3D,KAAG;AAEDS,UAAQ,CAACmD,MAAD,EAAO,CACbpD,MAAI,CAACf,MAAI,CAAC,IAAD,CAAL,EAAaoE,SAAO,CAAC,aAAD,EAAgB,EAAhB,CAApB,EAA0CC,EAAD,IAAQ,CACnD,MADmD,EAEnD,UAFmD,EAGnD,aAHmD,EAInD,MAJmD,EAKnDA,EALmD,EAMnD,WANmD,CAAjD,CADS,EASbtD,MAAI,CAACf,MAAI,CAAC,SAAD,CAAL,EAAmBsE,OAAD,IAAa,CAACA,OAAD,CAA/B,CATS,CAAP,CAFP,CALD;AAoBFC,QAAM,CAAC,CAACC,GAAD,EAAM,CAACtE,IAAD,EAAOuE,SAAP,CAAN,KAA4BC,WAAS,CAACxE,IAAD,EAAOuE,SAAP,EAAkBD,GAAlB,CAAtC,EAA8D7B,KAA9D,CApBJ,CAAJ,CAqBEA,KArBF,CADF;;AAwBA,aAAe5B,MAAI;AAEjB4D,OAAK,CAAC,SAAD,EAAY,CAAZ,CAFY;AAIjB;AACAC,YAAU,CAAC,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,MAAjC,EAAyC,OAAzC,EAAkD,WAAlD,CAAD,CALO,EAMjBA,YAAU,CAAC,CACT,UADS,EAET,UAFS,EAGT,MAHS,EAIT,MAJS,EAKT,YALS,EAMT,WANS,CAAD,CANO;AAejBb,sBAfiB,CAAnB;;AC5CA,MAAMc,cAAc,GAAG,gEAAvB;;AAEA,MAAMC,MAAM,GAAGxC,OAAO,CAAC,MAAD,CAAtB;;AAEA,MAAMyC,KAAK,GAAGC,OAAA,CAAQ,CAACC,KAAD,EAAQC,EAAR,KAAeA,EAAE,CAACH,KAAH,CAASE,KAAT,CAAvB,CAAd;AACA,MAAME,YAAY,GAAGH,UAAA,CAAWA,KAAX,CAArB;AAEA,MAAMI,YAAY,GAAG,CACnB;AACEf,EAAAA,EAAE,EAAE,OADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CADmB,EAKnB;AACEhB,EAAAA,EAAE,EAAE,YADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CALmB,EASnB;AACEhB,EAAAA,EAAE,EAAE,SADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CATmB,CAArB;AAeA,MAAMC,aAAa,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,KAAnC,CAAtB;AACA,MAAMC,cAAc,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,MAAnC,CAAvB;AACA,MAAMC,WAAW,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,KAAjC,CAApB;AACA,MAAMC,YAAY,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,MAAjC,CAArB;AAEA,MAAMC,gBAAgB,GAAGV,MAAA,CAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,WAA1B,EAAuC,KAAvC,CAAP,CAAzB;AACA,MAAMW,iBAAiB,GAAGX,MAAA,CAAO,CAC/B,WAD+B,EAE/B,UAF+B,EAG/B,WAH+B,EAI/B,MAJ+B,CAAP,CAA1B;AAMA,MAAMY,YAAY,GAAGZ,MAAA,CAAO,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,EAA+B,KAA/B,CAAP,CAArB;AACA,MAAMa,aAAa,GAAGb,MAAA,CAAO,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,EAA+B,MAA/B,CAAP,CAAtB;AACA,MAAMc,gBAAgB,GAAGd,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,EAAqC,MAArC,CAAP,CAAzB;AACA,MAAMe,aAAa,GAAGf,UAAA,CAAWM,aAAX,CAAtB;AACA,MAAMU,cAAc,GAAGhB,UAAA,CAAWO,cAAX,CAAvB;AACA,MAAMU,WAAW,GAAGjB,UAAA,CAAWQ,WAAX,CAApB;AACA,MAAMU,YAAY,GAAGlB,UAAA,CAAWS,YAAX,CAArB;AAEA,MAAMU,SAAS,GAAGnB,MAAA,CAAOa,aAAP,EAAsBb,QAAtB,CAAlB;AAEA,MAAMoB,YAAY,GAAGpB,MAAA,CAAOc,gBAAP,EAAyBd,QAAzB,CAArB;;AAEA,MAAMqB,mBAAmB,GAAI1D,KAAD,IAAW;AACrC,QAAM2D,SAAS,GAAGT,aAAa,CAAClD,KAAD,CAA/B;AACA,QAAM4D,aAAa,GAAGZ,iBAAiB,CAAChD,KAAD,CAAvC;AACA,SAAOqC,MAAA;AAELU,EAAAA,gBAFK;AAILV,EAAAA,QAAA,CAASA,YAAA,CAAa,aAAb,CAAT,CAJK;AAMLxE,EAAAA,aAAa,CAAC+F,aAAD,EAAgB,CAAC,OAAD,CAAhB,CANR;AAQL;AACAvB,EAAAA,SATK;AAWL7E,EAAAA,SAAS,CAACmG,SAAD,CAXJ,EAYL3D,KAZK,CAAP;AAaD,CAhBD;;AAkBA,MAAM6D,eAAe,GAAI7D,KAAD,IAAW;AACjC,QAAM8D,QAAQ,GAAGb,YAAY,CAACjD,KAAD,CAA7B;AACA,QAAM2D,SAAS,GAAGT,aAAa,CAAClD,KAAD,CAA/B;AACA,QAAM+D,cAAc,GAAGL,mBAAmB,CAAC1D,KAAD,CAA1C;AAEA,SAAOqC,MAAA,CACLA,SAAA,CAAUA,OAAA,CAAQ,IAAR,EAAc0B,cAAd,CAAV,CADK,EAELvG,SAAS,CAACmG,SAAD,CAFJ,EAGLtB,QAAA,CAASA,QAAA,CAAS,MAAT,EAAiB,OAAjB,CAAT,CAHK,EAILyB,QAJK,CAAP;AAKD,CAVD;;AAYO,MAAME,UAAU,GAAIC,IAAD,IACxB5B,OAAA,CACEA,MAAA,CACEA,QAAA,CAASA,MAAA,CAAOQ,WAAP,CAAT,EAA8BR,WAAA,CAAYQ,WAAZ,EAAyB,EAAzB,CAA9B,CADF,EAEER,QAAA,CAASA,MAAA,CAAOS,YAAP,CAAT,EAA+BT,WAAA,CAAYQ,WAAZ,EAAyB,EAAzB,CAA/B,CAFF,EAGER,MAAA,CAAOiB,WAAP,EAAoBjB,OAAA,CAAQA,OAAA,CAAQ,IAAR,EAAc4B,IAAd,CAAR,CAApB,CAHF,EAIE5B,MAAA,CAAOkB,YAAP,EAAqBlB,OAAA,CAAQrE,SAAS,CAACiG,IAAD,CAAjB,CAArB,CAJF,CADF,CADK;AAUA,MAAMC,qBAAqB,GAAG7B,OAAA,CAAQ,CAAC8B,IAAD,EAAOC,MAAP,KAAkB;AAC7D,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,GAAT;AAAcC,IAAAA,IAAd;AAAoB7C,IAAAA;AAApB,MAA2B0C,MAAjC;AACA,SAAO;AACL1C,IAAAA,EAAE,EAAG,SAAQA,EAAG,EADX;AAEL2C,IAAAA,KAFK;AAGLC,IAAAA,GAHK;AAILC,IAAAA,IAJK;AAKLC,IAAAA,OAAO,EAAEL,IALJ;AAMLM,IAAAA,GAAG,EAAE/C;AANA,GAAP;AAQD,CAVoC,CAA9B;AAYA,MAAMgD,mBAAmB,GAAGrC,OAAA,CAAQ,CAACsC,gBAAD,EAAmBR,IAAnB,EAAyBnE,KAAzB,KACzCqC,KAAA,CAAM6B,qBAAqB,CAACC,IAAD,CAA3B,EAAmCQ,gBAAgB,CAAC3E,KAAD,CAAnD,CADiC,CAA5B;AAIP,MAAM4E,mBAAmB,GAAGvC,MAAA,CAC1BqC,mBAAmB,CAACjB,YAAD,EAAe,SAAf,CADO,EAE1BpB,KAAA,CAAMA,WAAA,CAAY;AAAEkC,EAAAA,IAAI,EAAE,SAAR;AAAmBM,EAAAA,KAAK,EAAE;AAA1B,CAAZ,CAAN,CAF0B,CAA5B;;AAKA,MAAMC,YAAY,GAAIC,KAAD,IAAW;AAC9B,QAAM;AAEJC,EAAAA,CAFI,EAGJC,OAHI,EAIJC,QAJI,EAKJC,OALI,EAMJC,QANI,EAOJC,IAPI,EAQJC,UARI,EASJC,WATI,IAUFR,KAAK,CAAC3C,KAAN,CAAYF,cAAZ,CAVJ;AAYA,SAAQ,GAAE+C,OAAQ,IAAGE,OAAO,CAACK,QAAR,CAAiB,CAAjB,EAAoB,GAApB,CAAyB,GAAEN,QAAS,IAAGE,QAAQ,CAACI,QAAT,CAC1D,CAD0D,EAE1D,GAF0D,CAG1D,IAAGH,IAAI,CAACG,QAAL,CAAc,CAAd,EAAiB,GAAjB,CAAsB,IAAGF,UAAU,CAACE,QAAX,CAC5B,CAD4B,EAE5B,GAF4B,CAG5B,IAAGD,WAAW,CAACC,QAAZ,CAAqB,CAArB,EAAwB,GAAxB,CAA6B,EANlC;AAOD,CApBD;;AAsBA,MAAMC,6BAA6B,GAAGpD,MAAA,CACpCA,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,KAAzB,CAAP,CADoC,EAEpCA,MAAA,CAAOA,MAAA,CAAOH,cAAP,CAAP,EAA+B4C,YAA/B,CAFoC,CAAtC;AAKA,MAAMY,6BAA6B,GAAGrD,SAAA,CACpCA,MADoC,EAEpCA,WAAA,CAAY,CAAChC,SAAD,CAAZ,CAFoC,EAGpCgC,QAAA,CACED,KAAK,CAAC,gEAAD,CADP,EAEEA,KAAK,CAAC,wCAAD,CAFP,CAHoC,EAOpCC,MAAA,CAAO,MAAP,CAPoC,CAAtC;;AAUA,MAAMsD,iBAAiB,GAAG,CAAC3F,KAAD,EAAQ4F,KAAR,KACxBvD,MAAA,CACEa,aADF,EAEEb,MAAA,CAAOuD,KAAK,CAACnB,GAAb,CAFF,EAGEpC,QAAA,CAASoD,6BAAT,EAAwCC,6BAAxC,CAHF,EAIE1F,KAJF,CADF;;AAOA,MAAM6F,SAAS,GAAGC,oBAAiB,CAAC;AAAEC,EAAAA,oBAAoB,EAAE;AAAxB,CAAD,CAAnC;;AAEA,MAAMC,uBAAuB,GAAG,CAAChG,KAAD,EAAQ4F,KAAR,KAC9BvD,MAAA,CAAOa,aAAP,EAAsBb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAP,EAAY,UAAZ,EAAwB,YAAxB,CAAP,CAAtB,EAAqEzE,KAArE,CADF;;AAGA,MAAMiG,2BAA2B,GAAIjG,KAAD,IAAYkG,MAAD,IAC7C1D,YAAY,CAAC,CAAC2D,EAAD,EAAKC,KAAL,KAAe;AAC1B,QAAMC,gBAAgB,GAAGL,uBAAuB,CAAChG,KAAD,EAAQmG,EAAR,CAAhD;AACA,QAAMG,EAAE,GAAGD,gBAAgB,IAAID,KAAK,GAAG,CAAvC;AACA,SAAO/D,OAAA,CAAQ,OAAR,EAAkB,MAAKiE,EAAG,EAA1B,EAA6BH,EAA7B,CAAP;AACD,CAJW,EAITD,MAJS,CADd;;AAOA,MAAMK,uBAAuB,GAAIvG,KAAD,IAAYkG,MAAD,IACzC1D,YAAY,CAAC,CAACgE,GAAD,EAAMJ,KAAN,KAAgB;AAC3B,QAAMC,gBAAgB,GAAGL,uBAAuB,CAAChG,KAAD,EAAQwG,GAAR,CAAhD;AACA,QAAMF,EAAE,GAAGD,gBAAgB,IAAID,KAAK,GAAG,CAAvC;AACA,SAAO/D,OAAA,CAAQ,OAAR,EAAkB,OAAMiE,EAAG,EAA3B,EAA8BE,GAA9B,CAAP;AACD,CAJW,EAITN,MAJS,CADd;;AAOA,MAAMO,aAAa,GAAG,CAACzG,KAAD,EAAQ4F,KAAR,KACpBvD,MAAA,CAAOa,aAAP,EAAsBb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAP,EAAY,MAAZ,CAAP,CAAtB,EAAoD3G,CAAD,IAAOqE,MAAM,CAACuE,OAAP,CAAe5I,CAAf,CAA1D,EACEkC,KADF,CADF;;AAKA,MAAM2G,sBAAsB,GAAIC,MAAD,IAC7BvE,MAAA,CACED,KAAK,CAAC,qCAAD,CADP,EAEEC,QAAA,CAASA,OAAT,EAAkBA,QAAA,CAAS,KAAT,CAAlB,EAAmCA,KAAA,CAAM,CAAN,CAAnC,CAFF,EAGEuE,MAHF,CADF;;AAMA,MAAMC,WAAW,GAAG,CAAC7G,KAAD,EAAQ4F,KAAR,KAAkB;AACpC,SAAOvD,MAAA,CACLa,aADK,EAELb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAP,EAAY,OAAZ,CAAP,CAFK,EAGLqC,WAHK,EAILjB,SAAS,CAAC,YAAD,CAJJ,EAKL7F,KALK,CAAP;AAMD,CAPD;;AASA,MAAM+G,UAAU,GAAG1E,UAAA,CAAWA,MAAA,CAAOA,MAAP,EAAeA,MAAA,CAAO,GAAP,CAAf,CAAX,EAAwC,CACzDA,MAAA,CAAOyE,WAAP,EAAiBjB,SAAS,CAAC,UAAD,CAA1B,CADyD,EAEzDc,sBAFyD,CAAxC,CAAnB;;AAKA,MAAMK,YAAY,GAAG,CAAChH,KAAD,EAAQ4F,KAAR,KACnBvD,MAAA,CAAOa,aAAP,EAAsBb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAP,EAAY,OAAZ,CAAP,CAAtB,EAAoDsC,UAApD,EAAgE/G,KAAhE,CADF;;AAGA,MAAMiH,UAAU,GAAG,CAACjH,KAAD,EAAQ4F,KAAR,KACjBvD,MAAA,CAAOa,aAAP,EAAsBb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAP,EAAY,KAAZ,CAAP,CAAtB,EAAkDsC,UAAlD,EAA8D/G,KAA9D,CADF;;AAGA,MAAMkH,mBAAmB,GAAG7E,OAAA,CAAQ,CAACkC,IAAD,EAAOvE,KAAP,EAAc4F,KAAd,MAAyB,EAC3D,GAAGA,KADwD;AAE3DuB,EAAAA,QAAQ,EAAEvB,KAAK,CAACuB,QAAN,IAAkB,CAC1B,CAAC;AAAEtC,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAEzB,iBAAiB,CAAC3F,KAAD,EAAQ4F,KAAR;AAAzC,GAAD,CAD0B,EAE1B,CACE;AAAEf,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAE7C;AAAxB,GADF,EAEE;AACEM,IAAAA,KAAK,EAAE,mBADT;AAEEuC,IAAAA,KAAK,EAAEpB,uBAAuB,CAAChG,KAAD,EAAQ4F,KAAR;AAFhC,GAFF,EAME;AAAEf,IAAAA,KAAK,EAAE,QAAT;AAAmBuC,IAAAA,KAAK,EAAEX,aAAa,CAACzG,KAAD,EAAQ4F,KAAR;AAAvC,GANF,CAF0B,EAU1B,CACE;AAAEf,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAEP,WAAW,CAAC7G,KAAD,EAAQ4F,KAAR;AAAnC,GADF,EAEE;AAAEf,IAAAA,KAAK,EAAE,OAAT;AAAkBuC,IAAAA,KAAK,EAAEJ,YAAY,CAAChH,KAAD,EAAQ4F,KAAR;AAArC,GAFF,EAGE;AAAEf,IAAAA,KAAK,EAAE,KAAT;AAAgBuC,IAAAA,KAAK,EAAEH,UAAU,CAACjH,KAAD,EAAQ4F,KAAR;AAAjC,GAHF,CAV0B;AAF+B,CAAzB,CAAR,CAA5B;AAoBA,MAAMyB,wBAAwB,GAAGhF,OAAA,CAAQ,CAACrC,KAAD,EAAQkG,MAAR,KACvC7D,KAAA,CAAM6E,mBAAmB,CAAC,YAAD,EAAelH,KAAf,CAAzB,EAAgDkG,MAAhD,CAD+B,CAAjC;AAGA,MAAMoB,oBAAoB,GAAGjF,OAAA,CAAQ,CAACrC,KAAD,EAAQkG,MAAR,KACnC7D,KAAA,CAAM6E,mBAAmB,CAAC,OAAD,EAAUlH,KAAV,CAAzB,EAA2CkG,MAA3C,CAD2B,CAA7B;;AAIA,MAAMqB,YAAY,GAAIvH,KAAD,IACnBqC,UAAA,CAAW,CAAC,GAAGmF,IAAJ,KAAanF,SAAA,CAAUmF,IAAV,CAAxB,EAAyC,CACvCnF,MAAA,CACEqC,mBAAmB,CAAChB,mBAAD,EAAsB,YAAtB,CADrB,EAEEuC,2BAA2B,CAACjG,KAAD,CAF7B,EAGEqH,wBAAwB,CAACrH,KAAD,CAH1B,CADuC,EAMvCqC,MAAA,CACEqC,mBAAmB,CAACb,eAAD,EAAkB,OAAlB,CADrB,EAEE0C,uBAAuB,CAACvG,KAAD,CAFzB,EAGEsH,oBAAoB,CAACtH,KAAD,CAHtB,CANuC,EAWvC4E,mBAXuC,CAAzC,EAYG5E,KAZH,CADF;;AAeA,MAAMyH,YAAY,GAAIvB,MAAD,IACnB7D,OAAA,CACEA,MAAA,CACEA,QAAA,CAASA,MAAA,CAAOM,aAAP,CAAT,EAAgCN,WAAA,CAAYM,aAAZ,EAA2B,EAA3B,CAAhC,CADF,EAEEN,QAAA,CAASA,MAAA,CAAOO,cAAP,CAAT,EAAiCP,WAAA,CAAYO,cAAZ,EAA4B,EAA5B,CAAjC,CAFF,EAGEP,MAAA,CAAOe,aAAP,EAAsBf,OAAA,CAAQA,OAAA,CAAQ,IAAR,EAAc6D,MAAd,CAAR,CAAtB,CAHF,EAIE7D,MAAA,CAAOgB,cAAP,EAAuBhB,OAAA,CAAQrE,SAAS,CAACkI,MAAD,CAAjB,CAAvB,CAJF,CADF,CADF;;AAUA,MAAMwB,YAAY,GAAI1H,KAAD,IACnBqC,MAAA,CACEmB,SADF,EAEEnB,KAAA,CAAMA,MAAA,CAAO,OAAP,CAAN,CAFF,EAGEA,KAAA,CAAMsF,IAAI,CAACC,KAAX,CAHF,EAIEvF,OAAA,CAAQwF,IAAI,CAACC,GAAb,CAJF,EAKGC,CAAD,IAAO,IAAIJ,IAAJ,CAASI,CAAT,CALT,EAMGC,CAAD,IAAOA,CAAC,CAACC,WAAF,EANT,EAOEjI,KAPF,CADF;;AAUA,MAAMkI,UAAU,GAAIlI,KAAD,IACjBqC,MAAA,CACEmB,SADF,EAEEnB,KAAA,CAAMA,MAAA,CAAO,KAAP,CAAN,CAFF,EAGEA,KAAA,CAAMsF,IAAI,CAACC,KAAX,CAHF,EAIEvF,OAAA,CAAQwF,IAAI,CAACM,GAAb,CAJF,EAKGJ,CAAD,IAAO,IAAIJ,IAAJ,CAASI,CAAT,CALT,EAMGC,CAAD,IAAOA,CAAC,CAACC,WAAF,EANT,EAOEjI,KAPF,CADF;;AAUA,MAAMoI,mBAAmB,GAAIpI,KAAD,IAC1BqC,MAAA,CACEA,WAAA,CAAY,CAAC,UAAD,EAAa,OAAb,CAAZ,EAAmCqF,YAAY,CAAC1H,KAAD,CAA/C,CADF,EAEEqC,WAAA,CAAY,CAAC,UAAD,EAAa,KAAb,CAAZ,EAAiC6F,UAAU,CAAClI,KAAD,CAA3C,CAFF,EAGEA,KAHF,CADF;;AAMA,MAAMqI,cAAc,GAAGhG,WAAA,CAAY,CAAC,UAAD,EAAa,aAAb,CAAZ,EAAyC,SAAzC,CAAvB;;AAEA,MAAMiG,mBAAmB,GAAItI,KAAD,IAAW;AACrC,SAAOqC,MAAA,CACL2B,UAAU,CAACvB,YAAD,CADL,EAELgF,YAAY,CAACF,YAAY,CAACvH,KAAD,CAAb,CAFP,EAGLoI,mBAHK,EAILC,cAJK,EAKLrI,KALK,CAAP;AAMD,CAPD;;AASA,MAAMuI,WAAW,GAAIvI,KAAD,IAAW;AAC7B,SAAOsI,mBAAmB,CAACtI,KAAD,CAA1B;AACD,CAFD;;ACjSA,MAAMkC,gBAAc,GAAG,gEAAvB;;AAEA,MAAMC,QAAM,GAAGxC,OAAO,CAAC,MAAD,CAAtB;;AAEA,MAAMyC,OAAK,GAAGC,OAAA,CAAQ,CAACC,KAAD,EAAQC,EAAR,KAAeA,EAAE,CAACH,KAAH,CAASE,KAAT,CAAvB,CAAd;AACA,MAAME,cAAY,GAAGH,UAAA,CAAWA,KAAX,CAArB;AAEA,MAAMI,cAAY,GAAG,CACnB;AACEf,EAAAA,EAAE,EAAE,OADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CADmB,EAKnB;AACEhB,EAAAA,EAAE,EAAE,YADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CALmB,EASnB;AACEhB,EAAAA,EAAE,EAAE,SADN;AAEEgB,EAAAA,KAAK,EAAE;AAFT,CATmB,CAArB;AAeA,MAAMC,eAAa,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,KAAnC,CAAtB;AACA,MAAMC,gBAAc,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,MAAnC,CAAvB;AACA,MAAMC,aAAW,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,KAAjC,CAApB;AACA,MAAMC,cAAY,GAAG,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,MAAjC,CAArB;AAEA,MAAMC,kBAAgB,GAAGV,MAAA,CAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,WAA1B,EAAuC,KAAvC,CAAP,CAAzB;AACA,MAAMW,mBAAiB,GAAGX,MAAA,CAAO,CAC/B,WAD+B,EAE/B,UAF+B,EAG/B,WAH+B,EAI/B,MAJ+B,CAAP,CAA1B;AAMA,MAAMY,cAAY,GAAGZ,MAAA,CAAO,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,EAA+B,KAA/B,CAAP,CAArB;AACA,MAAMa,eAAa,GAAGb,MAAA,CAAO,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,EAA+B,MAA/B,CAAP,CAAtB;AACA,MAAMmG,cAAc,GAAGnG,MAAA,CAAO,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,EAAiC,MAAjC,CAAP,CAAvB;AACA,MAAMc,kBAAgB,GAAGd,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,EAAqC,MAArC,CAAP,CAAzB;AACA,MAAMe,eAAa,GAAGf,UAAA,CAAWM,eAAX,CAAtB;AACA,MAAMU,gBAAc,GAAGhB,UAAA,CAAWO,gBAAX,CAAvB;AACA,MAAMU,aAAW,GAAGjB,UAAA,CAAWQ,aAAX,CAApB;AACA,MAAMU,cAAY,GAAGlB,UAAA,CAAWS,cAAX,CAArB;AAEA,MAAM2F,WAAW,GAAGpG,MAAA,CAAOmG,cAAP,EAAuBnG,QAAvB,CAApB;AACA,MAAMoB,cAAY,GAAGpB,MAAA,CAAOc,kBAAP,EAAyBd,QAAzB,CAArB;;AAEA,MAAMqB,qBAAmB,GAAI1D,KAAD,IAAW;AACrC,QAAM2D,SAAS,GAAGT,eAAa,CAAClD,KAAD,CAA/B;AACA,QAAM4D,aAAa,GAAGZ,mBAAiB,CAAChD,KAAD,CAAvC;AACA,SAAOqC,MAAA;AAELU,EAAAA,kBAFK;AAILV,EAAAA,QAAA,CAASA,YAAA,CAAa,aAAb,CAAT,CAJK;AAMLxE,EAAAA,aAAa,CAAC+F,aAAD,EAAgB,CAAC,OAAD,EAAU,OAAV,CAAhB,CANR;AAQL;AACAvB,EAAAA,SATK;AAWL7E,EAAAA,SAAS,CAACmG,SAAD,CAXJ,EAYL3D,KAZK,CAAP;AAaD,CAhBD;;AAkBA,MAAM0I,qBAAqB,GAAI1I,KAAD,IAAW;AACvC,QAAM2I,OAAO,GAAGF,WAAW,CAACzI,KAAD,CAA3B;AACA,SAAOqC,MAAA,CACLqB,qBADK;AAGJkF,EAAAA,KAAD,IACEA,KAAK,CAAChL,GAAN,CAAWiL,IAAD,IAAUF,OAAO,CAACG,IAAR,CAAcC,MAAD,IAAYA,MAAM,CAACtE,GAAP,CAAW/C,EAAX,KAAkBmH,IAAI,CAACnH,EAAhD,CAApB,CAJG,EAKL1B,KALK,CAAP;AAMD,CARD;;AAUA,MAAM6D,iBAAe,GAAI7D,KAAD,IAAW;AACjC,QAAM8D,QAAQ,GAAGb,cAAY,CAACjD,KAAD,CAA7B;AACA,QAAM2D,SAAS,GAAGT,eAAa,CAAClD,KAAD,CAA/B;AACA,QAAM+D,cAAc,GAAGL,qBAAmB,CAAC1D,KAAD,CAA1C;AAEA,SAAOqC,MAAA,CACLA,SAAA,CAAUA,OAAA,CAAQ,IAAR,EAAc0B,cAAd,CAAV,CADK,EAELvG,SAAS,CAACmG,SAAD,CAFJ,EAGLtB,QAAA,CAASA,QAAA,CAAS,MAAT,EAAiB,OAAjB,CAAT,CAHK,EAILyB,QAJK,CAAP;AAKD,CAVD;;AAYA,MAAMkF,gBAAgB,GAAIhJ,KAAD,IAAW;AAClC,QAAM2I,OAAO,GAAGF,WAAW,CAACzI,KAAD,CAA3B;AACA,SAAOqC,MAAA,CAAOwB,iBAAP,EAAyB+E,KAAD,IAC7BA,KAAK,CAAChL,GAAN,CAAWiL,IAAD,IAAUF,OAAO,CAACG,IAAR,CAAcC,MAAD,IAAYA,MAAM,CAACtE,GAAP,CAAW/C,EAAX,KAAkBmH,IAAI,CAACnH,EAAhD,CAApB,CADK,EAEL1B,KAFK,CAAP;AAGD,CALD;;AAOO,MAAMgE,YAAU,GAAIC,IAAD,IACxB5B,OAAA,CACEA,MAAA,CACEA,QAAA,CAASA,MAAA,CAAOQ,aAAP,CAAT,EAA8BR,WAAA,CAAYQ,aAAZ,EAAyB,EAAzB,CAA9B,CADF,EAEER,QAAA,CAASA,MAAA,CAAOS,cAAP,CAAT,EAA+BT,WAAA,CAAYQ,aAAZ,EAAyB,EAAzB,CAA/B,CAFF,EAGER,MAAA,CAAOiB,aAAP,EAAoBjB,OAAA,CAAQA,OAAA,CAAQ,IAAR,EAAc4B,IAAd,CAAR,CAApB,CAHF,EAIE5B,MAAA,CAAOkB,cAAP,EAAqBlB,OAAA,CAAQrE,SAAS,CAACiG,IAAD,CAAjB,CAArB,CAJF,CADF,CADK;AAUA,MAAMC,uBAAqB,GAAG7B,OAAA,CAAQ,CAAC8B,IAAD,EAAOC,MAAP,KAAkB;AAC7D,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,GAAT;AAAcC,IAAAA,IAAd;AAAoB7C,IAAAA;AAApB,MAA2B0C,MAAjC;AACA,SAAO;AACL1C,IAAAA,EAAE,EAAG,SAAQA,EAAG,EADX;AAEL2C,IAAAA,KAFK;AAGLC,IAAAA,GAHK;AAILC,IAAAA,IAJK;AAKL0E,IAAAA,KAAK,EAAE9E,IALF;AAMLM,IAAAA,GAAG,EAAE;AACH/C,MAAAA,EADG;AAEH6C,MAAAA;AAFG,KANA;AAUL2E,IAAAA,QAAQ,EAAE;AAVL,GAAP;AAYD,CAdoC,CAA9B;AAgBA,MAAMxE,qBAAmB,GAAGrC,OAAA,CAAQ,CAACsC,gBAAD,EAAmBR,IAAnB,EAAyBnE,KAAzB,KACzCqC,KAAA,CAAM6B,uBAAqB,CAACC,IAAD,CAA3B,EAAmCQ,gBAAgB,CAAC3E,KAAD,CAAnD,CADiC,CAA5B;AAIA,MAAMmJ,qBAAqB,GAAG9G,OAAA,CAAQ,CAAC8B,IAAD,EAAO4E,MAAP,KAAkB;AAC7D,QAAM;AAAE1E,IAAAA,KAAF;AAASC,IAAAA,GAAT;AAAcG,IAAAA;AAAd,MAAsBsE,MAA5B;AACA,QAAM;AAAErH,IAAAA,EAAF;AAAM6C,IAAAA;AAAN,MAAeE,GAArB;AACA,SAAO;AACL/C,IAAAA,EAAE,EAAG,SAAQA,EAAG,EADX;AAEL2C,IAAAA,KAFK;AAGLC,IAAAA,GAHK;AAILC,IAAAA,IAJK;AAKL0E,IAAAA,KAAK,EAAE9E,IALF;AAMLM,IAAAA,GAAG,EAAE;AACH/C,MAAAA,EADG;AAEH6C,MAAAA;AAFG,KANA;AAUL2E,IAAAA,QAAQ,EAAE;AAVL,GAAP;AAYD,CAfoC,CAA9B;AAiBA,MAAME,kBAAkB,GAAG/G,OAAA,CAAQ,CAACsC,gBAAD,EAAmBR,IAAnB,EAAyBnE,KAAzB,KACxCqC,KAAA,CAAM8G,qBAAqB,CAAChF,IAAD,CAA3B,EAAmCQ,gBAAgB,CAAC3E,KAAD,CAAnD,CADgC,CAA3B;AAGP,MAAM4E,qBAAmB,GAAGvC,MAAA,CAC1BqC,qBAAmB,CAACjB,cAAD,EAAe,SAAf,CADO,EAE1BpB,KAAA,CAAMA,WAAA,CAAY;AAAEkC,EAAAA,IAAI,EAAE,SAAR;AAAmBM,EAAAA,KAAK,EAAE;AAA1B,CAAZ,CAAN,CAF0B,CAA5B;;AAKA,MAAMC,cAAY,GAAIC,KAAD,IAAW;AAC9B,QAAM;AAEJC,EAAAA,CAFI,EAGJC,OAHI,EAIJC,QAJI,EAKJC,OALI,EAMJC,QANI,EAOJC,IAPI,EAQJC,UARI,EASJC,WATI,IAUFR,KAAK,CAAC3C,KAAN,CAAYF,gBAAZ,CAVJ;AAYA,SAAQ,GAAE+C,OAAQ,IAAGE,OAAO,CAACK,QAAR,CAAiB,CAAjB,EAAoB,GAApB,CAAyB,GAAEN,QAAS,IAAGE,QAAQ,CAACI,QAAT,CAC1D,CAD0D,EAE1D,GAF0D,CAG1D,IAAGH,IAAI,CAACG,QAAL,CAAc,CAAd,EAAiB,GAAjB,CAAsB,IAAGF,UAAU,CAACE,QAAX,CAC5B,CAD4B,EAE5B,GAF4B,CAG5B,IAAGD,WAAW,CAACC,QAAZ,CAAqB,CAArB,EAAwB,GAAxB,CAA6B,EANlC;AAOD,CApBD;;AAsBA,MAAMC,+BAA6B,GAAGpD,MAAA,CACpCA,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,KAAzB,CAAP,CADoC,EAEpCA,MAAA,CAAOA,MAAA,CAAOH,gBAAP,CAAP,EAA+B4C,cAA/B,CAFoC,CAAtC;AAKA,MAAMY,+BAA6B,GAAGrD,SAAA,CACpCA,MADoC,EAEpCA,WAAA,CAAY,CAAChC,SAAD,CAAZ,CAFoC,EAGpCgC,QAAA,CACED,OAAK,CAAC,gEAAD,CADP,EAEEA,OAAK,CAAC,wCAAD,CAFP,CAHoC,EAOpCC,MAAA,CAAO,MAAP,CAPoC,CAAtC;;AAUA,MAAMsD,mBAAiB,GAAG,CAAC3F,KAAD,EAAQ4F,KAAR,KACxBvD,MAAA,CACEa,eADF,EAEEb,MAAA,CAAOuD,KAAK,CAACnB,GAAN,CAAU/C,EAAjB,CAFF,EAGEW,QAAA,CAASoD,+BAAT,EAAwCC,+BAAxC,CAHF,EAIE1F,KAJF,CADF;;AAOA,MAAM6F,WAAS,GAAGC,oBAAiB,CAAC;AAAEC,EAAAA,oBAAoB,EAAE;AAAxB,CAAD,CAAnC;;AAEA,MAAMC,yBAAuB,GAAG,CAAChG,KAAD,EAAQ4F,KAAR,KAC9BvD,MAAA,CACEa,eADF,EAEEb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAN,CAAU/C,EAAX,EAAe,UAAf,EAA2B,YAA3B,CAAP,CAFF,EAGE1B,KAHF,CADF;;AAMA,MAAMiG,6BAA2B,GAAIjG,KAAD,IAAYkG,MAAD,IAC7C1D,cAAY,CAAC,CAAC2D,EAAD,EAAKC,KAAL,KAAe;AAC1B,QAAMC,gBAAgB,GAAGL,yBAAuB,CAAChG,KAAD,EAAQmG,EAAR,CAAhD;AACA,QAAMG,EAAE,GAAGD,gBAAgB,IAAID,KAAK,GAAG,CAAvC;AACA,SAAO/D,OAAA,CAAQ,OAAR,EAAkB,MAAKiE,EAAG,EAA1B,EAA6BH,EAA7B,CAAP;AACD,CAJW,EAITD,MAJS,CADd;;AAOA,MAAMK,yBAAuB,GAAIvG,KAAD,IAAYkG,MAAD,IACzC1D,cAAY,CAAC,CAACgE,GAAD,EAAMJ,KAAN,KAAgB;AAC3B,QAAMC,gBAAgB,GAAGL,yBAAuB,CAAChG,KAAD,EAAQwG,GAAR,CAAhD;AACA,QAAMF,EAAE,GAAGD,gBAAgB,IAAID,KAAK,GAAG,CAAvC;AACA,SAAO/D,OAAA,CAAQ,OAAR,EAAkB,OAAMiE,EAAG,EAA3B,EAA8BE,GAA9B,CAAP;AACD,CAJW,EAITN,MAJS,CADd;;AAOA,MAAMO,eAAa,GAAG,CAACzG,KAAD,EAAQ4F,KAAR,KACpBvD,MAAA,CAAOa,eAAP,EAAsBb,MAAA,CAAO,CAACuD,KAAK,CAACnB,GAAN,CAAU/C,EAAX,EAAe,MAAf,CAAP,CAAtB,EAAuD5D,CAAD,IACpDqE,QAAM,CAACuE,OAAP,CAAe5I,CAAf,CADF,EAEEkC,KAFF,CADF;;AAKA,MAAM2G,wBAAsB,GAAIC,MAAD,IAC7BvE,MAAA,CACED,OAAK,CAAC,qCAAD,CADP,EAEEC,QAAA,CAASA,OAAT,EAAkBA,QAAA,CAAS,KAAT,CAAlB,EAAmCA,KAAA,CAAM,CAAN,CAAnC,CAFF,EAGEuE,MAHF,CADF;;AAMA,MAAMyC,oBAAoB,GAAGhH,MAAA,CAC3BA,MAAA,CAAO,OAAP,CAD2B,EAE3ByE,WAF2B,EAG3BjB,WAAS,CAAC,YAAD,CAHkB,CAA7B;AAKA,MAAMkB,YAAU,GAAG1E,UAAA,CAAWA,MAAA,CAAOA,MAAP,EAAeA,MAAA,CAAO,GAAP,CAAf,CAAX,EAAwC,CACzDA,MAAA,CAAOyE,WAAP,EAAiBjB,WAAS,CAAC,UAAD,CAA1B,CADyD,EAEzDc,wBAFyD,CAAxC,CAAnB;AAKA,MAAM2C,qBAAqB,GAAGjH,MAAA,CAAOA,MAAA,CAAO,OAAP,CAAP,EAAwB0E,YAAxB,CAA9B;AAEA,MAAMwC,mBAAmB,GAAGlH,MAAA,CAAOA,MAAA,CAAO,KAAP,CAAP,EAAsB0E,YAAtB,CAA5B;AAEA,MAAMG,qBAAmB,GAAG7E,OAAA,CAAQ,CAACkC,IAAD,EAAOvE,KAAP,EAAc4F,KAAd,MAAyB,EAC3D,GAAGA,KADwD;AAE3DuB,EAAAA,QAAQ,EAAE,CACR,CAAC;AAAEtC,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAEzB,mBAAiB,CAAC3F,KAAD,EAAQ4F,KAAR;AAAzC,GAAD,CADQ,EAER,CACE;AAAEf,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAE7C;AAAxB,GADF,EAEE;AACEM,IAAAA,KAAK,EAAE,mBADT;AAEEuC,IAAAA,KAAK,EAAEpB,yBAAuB,CAAChG,KAAD,EAAQ4F,KAAR;AAFhC,GAFF,EAME;AAAEf,IAAAA,KAAK,EAAE,QAAT;AAAmBuC,IAAAA,KAAK,EAAEX,eAAa,CAACzG,KAAD,EAAQ4F,KAAR;AAAvC,GANF,CAFQ,EAUR,CACE;AAAEf,IAAAA,KAAK,EAAE,MAAT;AAAiBuC,IAAAA,KAAK,EAAEiC,oBAAoB,CAACzD,KAAD;AAA5C,GADF,EAEE;AAAEf,IAAAA,KAAK,EAAE,OAAT;AAAkBuC,IAAAA,KAAK,EAAEkC,qBAAqB,CAAC1D,KAAD;AAA9C,GAFF,EAGE;AAAEf,IAAAA,KAAK,EAAE,KAAT;AAAgBuC,IAAAA,KAAK,EAAEmC,mBAAmB,CAAC3D,KAAD;AAA1C,GAHF,CAVQ;AAFiD,CAAzB,CAAR,CAA5B;AAoBA,MAAMyB,0BAAwB,GAAGhF,OAAA,CAAQ,CAACrC,KAAD,EAAQkG,MAAR,KACvC7D,KAAA,CAAM6E,qBAAmB,CAAC,YAAD,EAAelH,KAAf,CAAzB,EAAgDkG,MAAhD,CAD+B,CAAjC;AAGA,MAAMoB,sBAAoB,GAAGjF,OAAA,CAAQ,CAACrC,KAAD,EAAQkG,MAAR,KACnC7D,KAAA,CAAM6E,qBAAmB,CAAC,OAAD,EAAUlH,KAAV,CAAzB,EAA2CkG,MAA3C,CAD2B,CAA7B;;AAIA,MAAMqB,cAAY,GAAIvH,KAAD,IACnBqC,UAAA,CAAW,CAAC,GAAGmF,IAAJ,KAAanF,SAAA,CAAUmF,IAAV,CAAxB,EAAyC,CACvCnF,MAAA,CACE+G,kBAAkB,CAACV,qBAAD,EAAwB,YAAxB,CADpB,EAEEzC,6BAA2B,CAACjG,KAAD,CAF7B,EAGEqH,0BAAwB,CAACrH,KAAD,CAH1B,CADuC,EAMvCqC,MAAA,CACE+G,kBAAkB,CAACJ,gBAAD,EAAmB,OAAnB,CADpB,EAEEzC,yBAAuB,CAACvG,KAAD,CAFzB,EAGEsH,sBAAoB,CAACtH,KAAD,CAHtB,CANuC,EAWvC4E,qBAXuC,CAAzC,EAYG5E,KAZH,CADF;;AAeA,MAAMyH,cAAY,GAAIvB,MAAD,IAAalG,KAAD,IAAW;AAC1C,QAAMwJ,WAAW,GAAGxL,SAAS,CAACkI,MAAD,CAA7B;AACA,SAAO7D,MAAA,CACLA,QAAA,CAASA,MAAA,CAAOM,eAAP,CAAT,EAAgCN,WAAA,CAAYM,eAAZ,EAA2B,EAA3B,CAAhC,CADK,EAELN,QAAA,CAASA,MAAA,CAAOO,gBAAP,CAAT,EAAiCP,WAAA,CAAYO,gBAAZ,EAA4B,EAA5B,CAAjC,CAFK,EAGLP,MAAA,CAAOe,eAAP,EAAsBf,OAAA,CAAQA,OAAA,CAAQ,IAAR,EAAc6D,MAAd,CAAR,CAAtB,CAHK,EAIL7D,MAAA,CAAOgB,gBAAP,EAAuBhB,WAAA,CAAYmH,WAAZ,CAAvB,CAJK,EAKLxJ,KALK,CAAP;AAMD,CARD;;AAUA,MAAM0H,cAAY,GAAI1H,KAAD,IACnBqC,MAAA,CACEoG,WADF,EAEEpG,KAAA,CAAMA,MAAA,CAAO,OAAP,CAAN,CAFF,EAGEA,KAAA,CAAMsF,IAAI,CAACC,KAAX,CAHF,EAIEvF,OAAA,CAAQwF,IAAI,CAACC,GAAb,CAJF,EAKGC,CAAD,IAAO,IAAIJ,IAAJ,CAASI,CAAT,CALT,EAMGC,CAAD,IAAOA,CAAC,CAACC,WAAF,EANT,EAOEjI,KAPF,CADF;;AAUA,MAAMkI,YAAU,GAAIlI,KAAD,IACjBqC,MAAA,CACEoG,WADF,EAEEpG,KAAA,CAAMA,MAAA,CAAO,KAAP,CAAN,CAFF,EAGEA,KAAA,CAAMsF,IAAI,CAACC,KAAX,CAHF,EAIEvF,OAAA,CAAQwF,IAAI,CAACM,GAAb,CAJF,EAKGJ,CAAD,IAAO,IAAIJ,IAAJ,CAASI,CAAT,CALT,EAMGC,CAAD,IAAOA,CAAC,CAACC,WAAF,EANT,EAOEjI,KAPF,CADF;;AAUA,MAAMoI,qBAAmB,GAAIpI,KAAD,IAC1BqC,MAAA,CACEA,WAAA,CAAY,CAAC,UAAD,EAAa,OAAb,CAAZ,EAAmCqF,cAAY,CAAC1H,KAAD,CAA/C,CADF,EAEEqC,WAAA,CAAY,CAAC,UAAD,EAAa,KAAb,CAAZ,EAAiC6F,YAAU,CAAClI,KAAD,CAA3C,CAFF,EAGEA,KAHF,CADF;;AAMA,MAAMqI,gBAAc,GAAGhG,WAAA,CAAY,CAAC,UAAD,EAAa,aAAb,CAAZ,EAAyC,SAAzC,CAAvB;;AAEA,MAAMiG,qBAAmB,GAAItI,KAAD,IAAW;AACrC,SAAOqC,MAAA,CACL2B,YAAU,CAACvB,cAAD,CADL,EAELgF,cAAY,CAACF,cAAY,CAACvH,KAAD,CAAb,CAFP,EAGLoI,qBAHK,EAILC,gBAJK,EAKLrI,KALK,CAAP;AAMD,CAPD;;AASA,WAAe5B,MAAI,CACjBqL,KAAG,CAAEC,CAAD,IAAO;AACTC,EAAAA,OAAO,CAACC,GAAR,CAAY,yBAAZ,EAAuCF,CAAvC;AACD,CAFE,CADc,EAIjBpB,qBAJiB,CAAnB;;AC5UA,qBAAe/H,MAAM,CAACC,MAAP,CAAc;AAC3B,KAAGE,WADwB;AAE3B,KAAGC;AAFwB,CAAd,CAAf;;ACEO,MAAMkJ,YAAY,GAAIC,aAAD,IAAoB9J,KAAD,IAAW;AACxD,QAAMc,OAAO,GAAGE,aAAa,CAAChB,KAAD,CAA7B;AACA,QAAM+J,YAAY,GAAGC,QAAM,CAACC,QAAM,CAACjK,KAAD,CAAP,EAAgBc,OAAhB,EAAyBgJ,aAAzB,CAA3B;;AACA,MAAI;AACF,WAAO;AAAE9J,MAAAA,KAAK,EAAE+J,YAAY,CAAC/J,KAAD;AAArB,KAAP;AACD,GAFD,CAEE,OAAOG,KAAP,EAAc;AACd,WAAO;AAAEA,MAAAA;AAAF,KAAP;AACD;AACF,CARM;AAUP,oBAAe0J,YAAY,CAACK,cAAD,CAA3B;;ACZA,MAAMC,gBAAgB,GAAG9H,MAAA,CACvBA,UAAA,CAAW,CAAC,WAAD,EAAc,UAAd,EAA0B,WAA1B,EAAuC,MAAvC,CAAX,CADuB,EAEvBA,KAAA,CAAM,CAAC;AAAEuG,EAAAA,KAAF;AAAS,KAAGwB;AAAZ,CAAD,MAA6B,EACjC,GAAGA,QAD8B;AAEjCC,EAAAA,KAAK,EAAE;AACLzB,IAAAA;AADK;AAF0B,CAA7B,CAAN,CAFuB,CAAzB;AASA,MAAM0B,iBAAiB,GAAGjI,MAAA,CACxBA,WAAA,CAAY,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAZ,EAA8C;AAC5C1E,EAAAA,GAAG,EAAE,EADuC;AAE5C4M,EAAAA,IAAI,EAAE;AAFsC,CAA9C,CADwB,EAKxBlI,WAAA,CAAY,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAZ,EAA8C;AAC5C1E,EAAAA,GAAG,EAAE,EADuC;AAE5C4M,EAAAA,IAAI,EAAE;AAFsC,CAA9C,CALwB,CAA1B;;AAWA,MAAMC,kBAAkB,GAAId,CAAD,IAAO;AAChC,QAAMf,OAAO,GAAGtG,MAAA,CACdA,MAAA,CAAO,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,CAAP,CADc,EAEdA,MAAA,CACEA,UAAA,CAAW,MAAX,CADF,EAEEA,KAAA,CACEA,MAAA,CAAOA,MAAA,CAAO,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,CAAP,CAAP,EAAwC0G,MAAD,IACrC1G,OAAA,CAAQ,KAAR,EAAe;AAAEX,IAAAA,EAAE,EAAEqH,MAAM,CAACrH,EAAb;AAAiB6C,IAAAA,IAAI,EAAE;AAAvB,GAAf,EAAgDwE,MAAhD,CADF,CADF,CAFF,CAFc,EAUdW,CAVc,CAAhB;AAYA,SAAOrH,MAAA,CACLA,MAAA,CACEA,UAAA,CAAW,CAAC,OAAD,EAAU,UAAV,EAAsB,OAAtB,EAA+B,MAA/B,CAAX,CADF,EAEEA,KAAA,CAAMA,MAAA,CAAO,CAAC,OAAD,EAAU,KAAV,CAAP,CAAN,CAFF,CADK,EAKLA,MAAA,CACEA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAX,CADF,EAEEA,gBAAA,CAAiBsG,OAAjB,CAFF,CALK,EASLtG,MAAA,CAAOA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAX,CAAP,EAAsDoI,QAAD,IACnDpI,OAAA,CAAQ,KAAR,EAAeA,MAAA,CAAOoI,QAAQ,CAACF,IAAhB,CAAf,EAAsCE,QAAtC,CADF,CATK,EAYLf,CAZK,CAAP;AAaD,CA1BD;;AA4BA,MAAMgB,cAAc,GAAGrI,QAAA,CACrBA,MAAA,CAAOA,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,CAAP,CAAP,EAAqDA,YAAA,CAAaA,OAAb,CAArD,CADqB,EAErBA,WAAA,CAAY,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,CAAZ,EAAkD;AAAE1E,EAAAA,GAAG,EAAE,EAAP;AAAW4M,EAAAA,IAAI,EAAE;AAAjB,CAAlD,CAFqB,CAAvB;;AAKA,MAAMI,qBAAqB,GAAIjB,CAAD,IAAO;AACnC,QAAMf,OAAO,GAAGtG,MAAA,CACdA,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,CAAP,CADc,EAEdA,MAAA,CACEA,UAAA,CAAW,MAAX,CADF,EAEEA,KAAA,CACEA,MAAA,CAAOA,MAAA,CAAO,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,CAAP,CAAP,EAAwC0G,MAAD,IACrC1G,OAAA,CAAQ,KAAR,EAAe;AAAEX,IAAAA,EAAE,EAAEqH,MAAM,CAACrH,EAAb;AAAiB6C,IAAAA,IAAI,EAAE;AAAvB,GAAf,EAAmDwE,MAAnD,CADF,CADF,CAFF,CAFc,EAUdW,CAVc,CAAhB;AAYA,SAAOrH,MAAA,CACLA,MAAA,CACEA,UAAA,CAAW,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,EAAqC,MAArC,CAAX,CADF,EAEEA,KAAA,CAAMA,MAAA,CAAO,CAAC,OAAD,EAAU,KAAV,CAAP,CAAN,CAFF,CADK,EAKLA,MAAA,CACEA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAX,CADF,EAEEA,gBAAA,CAAiBsG,OAAjB,CAFF,CALK,EASLtG,MAAA,CAAOA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,CAAX,CAAP,EAAsDoI,QAAD,IACnDpI,OAAA,CAAQ,KAAR,EAAeA,MAAA,CAAOoI,QAAQ,CAACF,IAAhB,CAAf,EAAsCE,QAAtC,CADF,CATK,EAYLf,CAZK,CAAP;AAaD,CA1BD;;AA4BA,MAAMkB,aAAa,GAAIlB,CAAD,IAAO;AAC3B,QAAMmB,OAAO,GAAGxI,MAAA,CAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,SAArB,CAAP,EAAwCqH,CAAxC,CAAhB;;AAEA,MAAImB,OAAJ,EAAa;AACX,WAAOxI,MAAA,CACLA,YAAA,CAAa,CAAC,MAAD,EAAS,UAAT,EAAqB,SAArB,CAAb,CADK,EAELA,MAAA,CACEA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADF,EAEEA,KAAA,CAAM,CAAC;AAAEyI,MAAAA,QAAF;AAAY,SAAGC;AAAf,KAAD,KAAiC;AACrC,YAAMC,MAAM,GAAG3I,MAAA,CAAO,CAAC,MAAD,EAASyI,QAAT,CAAP,EAA2BD,OAA3B,KAAuC;AAAEI,QAAAA,OAAO,EAAE;AAAX,OAAtD;AACA,aAAO,EACL,GAAGF,UADE;AAELE,QAAAA,OAAO,EAAED,MAAM,CAACC;AAFX,OAAP;AAID,KAND,CAFF,CAFK,EAYLvB,CAZK,CAAP;AAaD;;AACD,SAAOA,CAAP;AACD,CAnBD;;AAqBA,MAAMwB,mBAAmB,GAAIC,UAAD,IAAiBC,KAAD,IAAW;AACrD,QAAMnL,MAAM,GAAGoC,MAAA,CACbA,QAAA,CAASA,KAAA,CAAM,UAAN,CAAT,EAA4BA,OAAA,CAAQ,UAAR,EAAoB,EAApB,CAA5B,CADa,EAEbA,QAAA,CACEA,SAAA,CAAU,CAAC,UAAD,EAAa8I,UAAb,CAAV,CADF,EAEE9I,WAAA,CAAY,CAAC,UAAD,EAAa8I,UAAb,CAAZ,EAAsC;AACpCxN,IAAAA,GAAG,EAAE,EAD+B;AAEpC4M,IAAAA,IAAI,EAAE;AAF8B,GAAtC,CAFF,CAFa,EASba,KATa,CAAf;AAWA,SAAOnL,MAAP;AACD,CAbD;;AAeA,MAAMoL,mBAAmB,GAAI3B,CAAD,IAAO;AACjC,SAAOrH,MAAA,CACLA,MAAA,CACEA,UAAA,CAAW,UAAX,CADF,EAEEA,MAAA,CACE6I,mBAAmB,CAAC,MAAD,CADrB,EAEEA,mBAAmB,CAAC,QAAD,CAFrB,EAGEA,mBAAmB,CAAC,UAAD,CAHrB,EAIEA,mBAAmB,CAAC,QAAD,CAJrB,CAFF,CADK,EAULxB,CAVK,CAAP;AAWD,CAZD;;AAcA,MAAM4B,oBAAoB,GAAI5B,CAAD,IAAO;AAClC,QAAM6B,MAAM,GAAGlJ,MAAA,CACbA,MAAA,CAAO,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,CAAP,CADa,EAEbA,MAAA,CAAOA,UAAA,CAAW,MAAX,CAAP,EAA2BA,KAAA,CAAMA,QAAA,CAAS,WAAT,CAAN,CAA3B,CAFa,EAGbqH,CAHa,CAAf;AAKA,SAAOrH,MAAA,CACLA,YAAA,CAAa,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,CAAb,CADK,EAELA,WAAA,CAAY,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,CAAZ,EAAgDkJ,MAAhD,CAFK,EAGL7B,CAHK,CAAP;AAID,CAVD;;AAYA,MAAM8B,cAAc,GAAI9B,CAAD,IACrBrH,MAAA,CACEA,WAAA,CAAY,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,EAAqC,MAArC,EAA6C,GAA7C,CAAZ,EAA+D;AAC7DX,EAAAA,EAAE,EAAE,GADyD;AAE7D+J,EAAAA,UAAU,EAAE,CAAC,OAAD,EAAU,YAAV,EAAwB,SAAxB,CAFiD;AAG7DC,EAAAA,OAAO,EAAE;AACPC,IAAAA,QAAQ,EAAE,IADH;AAEPC,IAAAA,UAAU,EAAE;AAFL,GAHoD;AAO7DvH,EAAAA,KAAK,EAAEhC,MAAA,CAAO,CAAC,UAAD,EAAa,OAAb,CAAP,EAA8BqH,CAA9B,CAPsD;AAQ7DpF,EAAAA,GAAG,EAAEjC,MAAA,CAAO,CAAC,UAAD,EAAa,KAAb,CAAP,EAA4BqH,CAA5B;AARwD,CAA/D,CADF,EAWErH,YAAA,CAAa,CAAC,UAAD,EAAa,OAAb,CAAb,CAXF,EAYEA,YAAA,CAAa,CAAC,UAAD,EAAa,KAAb,CAAb,CAZF,EAaEA,WAAA,CAAY,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB,EAAqC,KAArC,CAAZ,EAAyD,CAAC,GAAD,CAAzD,CAbF,EAcEA,MAAA,CACEA,UAAA,CAAW,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,MAAnC,CAAX,CADF,EAEEA,KAAA,CAAMA,MAAA,CAAOA,OAAA,CAAQ,UAAR,EAAoB,GAApB,CAAP,CAAN,CAFF,CAdF,EAkBEA,WAAA,CAAY,CAAC,UAAD,EAAa,gBAAb,CAAZ,EAA4C,GAA5C,CAlBF,EAmBEqH,CAnBF,CADF;;AAsBA,MAAMmC,SAAS,GAAInC,CAAD,IAChBrH,MAAA,CACEA,MAAA,CACEA,UAAA,CAAW,CAAC,UAAD,EAAa,UAAb,EAAyB,QAAzB,EAAmC,MAAnC,CAAX,CADF,EAEEA,KAAA,CAAM,CAAC;AAAEmC,EAAAA,OAAF;AAAWD,EAAAA,IAAX;AAAiBE,EAAAA,GAAjB;AAAsBJ,EAAAA,KAAtB;AAA6BC,EAAAA,GAA7B;AAAkC,KAAGsB;AAArC,CAAD,MAAmD,EACvD,GAAGA,KADoD;AAEvDqD,EAAAA,KAAK,EAAEzE,OAFgD;AAGvDC,EAAAA,GAAG,EAAE;AACHF,IAAAA,IAAI,EAAEA,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,OAA7B,GAAuC,MAAvC,GAAgDA,IADnD;AAEH7C,IAAAA,EAAE,EAAE+C;AAFD,GAHkD;AAOvDqH,EAAAA,QAAQ,EAAEvH,IAAI,KAAK,SAPoC;AAQvD2E,EAAAA,QAAQ,EAAE;AAR6C,CAAnD,CAAN,CAFF,CADF,EAcEQ,CAdF,CADF;;AAiBA,MAAMqC,yBAAyB,GAAIrC,CAAD,IAAO;AACvC,QAAMsC,YAAY,GAAG3J,MAAA,CAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAAP,EAA4CqH,CAA5C,CAArB;;AAEA,MAAI,CAACrH,SAAA,CAAU2J,YAAV,CAAD,IAA4B,CAAC3J,OAAA,CAAQ2J,YAAR,CAAjC,EAAwD;AACtD,UAAMC,iBAAiB,GAAG5J,MAAA,CACxBA,MAAA,CACEA,UAAA,CAAW,MAAX,CADF,EAEEA,MAAA,CACEA,KAAA,CAAOkD,WAAD,KAAkB,EACtB,GAAGA,WADmB;AAEtB2G,MAAAA,MAAM,EAAE,IAFc;AAGtBC,MAAAA,IAAI,EAAE5G,WAAW,CAAC7D;AAHI,KAAlB,CAAN,CADF,CAFF,CADwB,EAWxBsK,YAXwB,CAA1B;AAaA,WAAO3J,MAAA,CACLA,YAAA,CAAa,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAAb,CADK,EAELA,WAAA,CAAY,CAAC,MAAD,EAAS,UAAT,EAAqB,cAArB,CAAZ,EAAkD4J,iBAAlD,CAFK,EAGL5J,MAAA,CACEA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADF,EAEEA,KAAA,CAAM,CAAC;AAAE4I,MAAAA,OAAO,GAAG,EAAZ;AAAgB,SAAGF;AAAnB,KAAD,MAAsC;AAC1CqB,MAAAA,YAAY,EAAEnB,OAD4B;AAE1C,SAAGF;AAFuC,KAAtC,CAAN,CAFF,CAHK,EAULrB,CAVK,CAAP;AAWD;;AACD,SAAOA,CAAP;AACD,CA9BD;;AAgCA,MAAM2C,kBAAkB,GAAIC,SAAD,IAAe;AACxC,UAAQA,SAAR;AACE,SAAK,qBAAL;AACE,aAAO,iBAAP;;AACF,SAAK,gBAAL;AACE,aAAO,YAAP;;AACF,SAAK,mBAAL;AACE,aAAO,eAAP;;AACF;AACE,aAAOA,SAAP;AARJ;AAUD,CAXD;;AAaA,MAAMC,SAAS,GAAI7C,CAAD,IAAO;AACvB,MAAIrH,SAAA,CAAU,CAAC,QAAD,EAAW,UAAX,EAAuB,gBAAvB,EAAyC,MAAzC,CAAV,EAA4DqH,CAA5D,CAAJ,EAAoE;AAClE,WAAOrH,MAAA,CACLA,MAAA,CACEA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,gBAAvB,EAAyC,MAAzC,CAAX,CADF,EAEEA,QAAA,CACEA,OADF,EAEEA,KAAA,CACEA,MAAA,CACEA,KAAA,CAAM,WAAN,CADF,EAEEA,MAAA,CAAOA,UAAA,CAAW,WAAX,CAAP,EAAgCgK,kBAAhC,CAFF,CADF,CAFF,CAFF,CADK,EAaL3C,CAbK,CAAP;AAcD;;AACD,SAAOA,CAAP;AACD,CAlBD;;AAoBA,MAAM8C,cAAc,GAAIxM,KAAD,IAAW;AAChC,QAAM;AAAEyM,IAAAA;AAAF,MAAuBzM,KAAK,CAAC0M,IAAnC;AACA,SAAOrK,MAAA,CACLA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADK,EAELA,QAAA,CACEA,OADF,EAEEA,eAAA,CAAgB,CAAC;AAAEP,IAAAA,SAAS,GAAG,EAAd;AAAkB,OAAG6K;AAArB,GAAD,MAAkC,EAChD,GAAGA,IAD6C;AAEhD7K,IAAAA,SAAS,EAAE6K,IAAI,CAACC,iBAAL,GACP9K,SADO,GAEPA,SAAS,CAAClE,GAAV,CAAeiP,IAAD,IAAUA,IAAI,GAAGhF,IAAI,CAACiF,IAAL,CAAUL,gBAAV,CAA/B;AAJ4C,GAAlC,CAAhB,CAFF,CAFK,EAWLzM,KAXK,CAAP;AAYD,CAdD;;AAgBA,MAAM+M,aAAa,GAAG1K,OAAA,CAAQ,SAAR,EAAmB,CAAnB,CAAtB;AAEA,aAAeA,MAAA,CACbA,KAAA,CAAOrC,KAAD,IAAW;AACf2J,EAAAA,OAAO,CAACC,GAAR,CAAY,YAAZ,EAA0B5J,KAA1B,EAAiC,cAAjC;AACD,CAFD,CADa,EAIbuI,aAJa,EAKblG,QAAA,CACEA,MAAA,CAAO,OAAP,CADF,EAEEA,MAAA,CACEA,MAAA,CAAO,OAAP,CADF,EAEEuI,aAFF,EAGE4B,cAHF,EAIET,yBAJF,EAKEzB,iBALF,EAMEe,mBANF,EAOEb,kBAPF,EAQEE,cARF,EASEC,qBATF,EAUEW,oBAVF,EAWEE,cAXF,EAYEK,SAZF,EAaEkB,aAbF,EAcER,SAdF,EAeEpC,gBAfF,CAFF,CALa,CAAf;;ACzQA,iBAAe,MAAM,CACnB,CAAC,CAAD,EAAI6C,MAAJ,CADmB,EAEnB,CAAC,CAAD,EAAIC,MAAJ,CAFmB,CAArB;;ACeA,MAAMC,WAAW,GAAIlN,KAAD,IAAWgB,aAAa,CAAChB,KAAD,CAA5C;;AAEA,MAAMmN,SAAS,GAAIC,EAAD,IAAQ7O,WAAS,CAAC8O,MAAI,CAACC,QAAD,CAAL,CAAT,CAA0BF,EAA1B,CAA1B;;AAEA,MAAMG,eAAe,GAAG,CAAC7P,IAAD,EAAO0P,EAAP,KAAcI,KAAG,CAACJ,EAAD,EAAK1P,IAAL,CAAzC;;AAEA,MAAM+P,WAAW,GAAG,CAAC/P,IAAD,EAAO0P,EAAP,EAAWpN,KAAX,KAClB5B,MAAI,CACFiD,QAAM,CAAC,CAAC,CAACqM,CAAD,CAAD,KAASA,CAAC,GAAGhQ,IAAJ,IAAYgQ,CAAC,IAAIN,EAA3B,CADJ,EAEFxP,KAAG,CAAC+P,KAAG,CAAC,CAAD,CAAJ,CAFD,EAGF1O,SAAO,CAACgL,QAAM,CAACjK,KAAD,CAAP,CAHL,EAIF4N,OAAK,CAACxP,MAAD,CAJH,EAKF8C,SAAO,CAAClB,KAAD,CALL,CAAJ,CAME6N,SAAS,EANX,CADF;;AASO,MAAMjN,eAAa,GAAG,CAAC;AAC5BkN,EAAAA,WAAW,EAAEpQ,IAAI,GAAG2C,SADQ;AAE5B0N,EAAAA,SAAS,EAAEX,EAAE,GAAG/M;AAFY,CAAD,MAGtB;AACL3C,EAAAA,IADK;AAEL0P,EAAAA;AAFK,CAHsB,CAAtB;AAQP,eAAe,CAACpN,KAAD,EAAQe,OAAO,GAAG,EAAlB,KAAyB;AACtC,QAAM;AAAEqM,IAAAA,EAAE,GAAG/M;AAAP,MAAqBU,OAA3B;AACA,QAAMiN,UAAU,GAAGb,SAAS,CAACC,EAAD,CAA5B;AACA,QAAMa,YAAY,GAAGf,WAAW,CAAClN,KAAD,CAAhC;AAEA,MAAIkO,QAAQ,GAAGlO,KAAf;AACA,MAAIG,KAAJ;AACAwJ,EAAAA,OAAO,CAACC,GAAR,CAAa,kBAAiBqE,YAAa,OAAMD,UAAW,GAA5D;;AACA,MAAIT,eAAe,CAACU,YAAD,EAAeD,UAAf,CAAnB,EAA+C;AAC7CE,IAAAA,QAAQ,GAAGT,WAAW,CAACQ,YAAD,EAAeD,UAAf,EAA2BhO,KAA3B,CAAtB;AACD,GAFD,MAEO;AACLG,IAAAA,KAAK,GAAG,IAAI1B,KAAJ,CACL,4BAA2BwP,YAAa,UAASD,UAAW,EADvD,CAAR;AAGD;;AAED,SAAO;AACLhO,IAAAA,KAAK,EAAEkO,QADF;AAEL/N,IAAAA;AAFK,GAAP;AAID,CApBD;;ACzCA,mBAAe;AACbW,EAAAA,OAAO,EAAE,OADI;AAEbqN,EAAAA,KAAK,EAAE,CACL,8vCADK,EAEL,80BAFK,CAFM;AAMbC,EAAAA,KAAK,EAAE,CAAC,iCAAD;AANM,CAAf;;ACIA,MAAM;AACJC,EAAAA,YADI;AAEJC,EAAAA,WAFI;AAGJC,EAAAA;AAHI,IAIF5O,OAAO,CAAC,sCAAD,CAJX;;AAKA,MAAM;AAAE6O,EAAAA;AAAF,IAAsB7O,OAAO,CAAC,oCAAD,CAAnC;;AAEA4O,iBAAiB,CAACE,YAAD,CAAjB;AACA,MAAMC,sBAAsB,GAAG,uFAA/B;AACA,MAAMC,oBAAoB,GAAG,iHAA7B;AAEA,MAAMC,SAAS,GAAGP,YAAY,CAAC,kBAAD,CAA9B;;AAEA,MAAMQ,sBAAsB,GAAI7G,CAAD,IAAO;AACpC,QAAM8G,OAAO,GAAGJ,sBAAsB,CAACK,IAAvB,CAA4B/G,CAA5B,CAAhB;;AAEA,MAAI8G,OAAJ,EAAa;AACX,UAAME,OAAO,GAAG;AACdC,MAAAA,IAAI,EAAEH,OAAO,CAAC,CAAD,CADC;AAEdI,MAAAA,KAAK,EAAEJ,OAAO,CAAC,CAAD,CAFA;AAGdK,MAAAA,GAAG,EAAEL,OAAO,CAAC,CAAD,CAHE;AAIdM,MAAAA,KAAK,EAAEN,OAAO,CAAC,CAAD,CAJA;AAKdO,MAAAA,OAAO,EAAEP,OAAO,CAAC,CAAD,CALF;AAMdQ,MAAAA,OAAO,EAAER,OAAO,CAAC,CAAD;AANF,KAAhB;AASA,UAAMS,YAAY,GAAGjB,WAAW,CAACU,OAAD,EAAUJ,SAAV,CAAhC;AACA,UAAMY,aAAa,GAAGhB,eAAe,CAACe,YAAD,EAAe,UAAf,CAArC;AACA,UAAME,aAAa,GAAGjB,eAAe,CAACe,YAAD,EAAe,QAAf,CAArC;AACA,UAAMG,YAAY,GAAGZ,OAAO,CAAC,CAAD,CAA5B;AACA,UAAMa,iBAAiB,GAAGnB,eAAe,CAACe,YAAD,EAAe,GAAf,CAAzC;AACA,WAAQ,GAAEC,aAAc,IAAGC,aAAc,GACvCC,YAAY,IAAI,EACjB,GAAEC,iBAAkB,EAFrB;AAGD;;AAED,SAAO3H,CAAP;AACD,CAxBD;;AA0BA,MAAM4H,uBAAuB,GAAI5H,CAAD,IAAO;AACrC,QAAM8G,OAAO,GAAGH,oBAAoB,CAACI,IAArB,CAA0B/G,CAA1B,CAAhB;;AAEA,MAAI8G,OAAJ,EAAa;AACX,UAAM,GAAGnC,IAAH,EAAS2C,OAAT,EAAkBO,QAAlB,IAA8Bf,OAApC;AACA,UAAMgB,OAAO,GAAI,GAAEnD,IAAK,GAAE2C,OAAO,CAACS,SAAR,CACxBT,OAAO,CAACU,MAAR,GAAiB,CADO,CAExB,GAAEH,QAAS,EAFb;AAGA,WAAOC,OAAP;AACD;;AAED,SAAO9H,CAAP;AACD,CAZD;;AAcA,MAAMiI,eAAe,GAAIlL,KAAD,IACtB1C,MAAA,CACEA,IAAA,CAAK6N,MAAL,CADF,EAEE7N,MAAA,CACEA,SAAA,CAAU,CAACA,MAAA,CAAOqM,sBAAP,CAAD,EAAiCrM,MAAA,CAAOsM,oBAAP,CAAjC,CAAV,CADF,CAFF,EAKE5J,KALF,CADF;;AAQA,MAAMoL,QAAQ,GAAIC,GAAD,IACf/N,MAAA,CACEA,KAAA,CACEA,QAAA,CACE4N,eADF,EAEE5N,MAAA,CACEA,KAAA,CAAOgO,CAAD,IAAQ,GAAEA,CAAE,oBAAlB,CADF,EAEExB,sBAFF,EAGEe,uBAHF,CAFF,EAOEvN,MAAA,CAAOA,IAAA,CAAK9B,MAAL,CAAP,EAAsB+P,CAAD,IAAOH,QAAQ,CAACG,CAAD,CAApC,CAPF,CADF,CADF,EAYEF,GAZF,CADF;;AC5DA,MAAMG,mBAAmB,GAAG,CAACxP,OAAD,EAAUf,KAAV,MAAqB;AAC/CA,EAAAA,KAAK,EAAEmQ,QAAQ,CAACnQ,KAAD;AADgC,CAArB,CAA5B;;AAIA,MAAMwQ,mBAAmB,GAAG,CAACzP,OAAD,EAAUf,KAAV,KAAoB;AAC9C,QAAMyQ,SAAS,GAAGC,QAAQ,CAAC1Q,KAAD,EAAQ2Q,aAAqB,CAAC5P,OAAD,CAA7B,CAA1B;AACA,SAAO0P,SAAP;AACD,CAHD;;AAKA,MAAMG,kBAAkB,GAAG,CAAC7P,OAAD,EAAUf,KAAV,KACzB6Q,OAAO,CAAC7Q,KAAD,EAAQ8Q,eAAoB,CAAC/P,OAAD,CAA5B,CADT;;AAEA,MAAMgQ,sBAAsB,GAAG,CAAChQ,OAAD,EAAUf,KAAV,KAAoBuI,aAAW,CAACvI,KAAD,CAA9D;;AAEA,aAAe,MAAM,CACnBuQ,mBADmB,EAEnBC,mBAFmB,EAGnBO,sBAHmB,EAInBH,kBAJmB,CAArB;;ACJA,MAAMI,QAAQ,GAAG3T,MAAI,CAAC,OAAD,CAArB;AAEA,MAAM4T,MAAM,GAAGxT,OAAK,CAAC,CAACsD,OAAD,EAAU8L,IAAV,EAAgBqE,QAAhB,KAA6B;AAChD,QAAMC,cAAc,GAAG1T,OAAK,CAAC2T,MAAI,CAAC,CAAD,EAAIvE,IAAJ,CAAL,CAA5B;AAEA,SAAOzO,MAAI,CACTG,WAAS,CAAC,EAAD,CADA,EAET8S,QAAM,CAACL,QAAD,EAAW5S,MAAI,CAACf,MAAI,CAAC,OAAD,CAAL,EAAgB8T,cAAc,CAACpQ,OAAD,CAA9B,CAAf,CAFG,CAAJ,CAGLmQ,QAHK,CAAP;AAID,CAPmB,CAApB;AASA,MAAMI,OAAO,GAAG7T,OAAK,CAAC,CAAC8T,KAAD,EAAQxQ,OAAR,EAAiBf,KAAjB,KACpB5B,MAAI,CACFG,WAAS,CAAC,EAAD,CADP,EAEFX,KAAG,CAACqT,MAAM,CAAClQ,OAAD,CAAP,CAFD;AAGF9B,SAAO,CAACgL,QAAM,CAAC;AAAEjK,EAAAA;AAAF,CAAD,CAAP,CAHL,EAIF4N,OAAK,CAACxP,MAAD,CAJH;AAKF8C,SAAO,CAAClB,KAAD,CALL;AAAA,CAAJ,CAMEuR,KANF,CADmB,CAArB;AAUA,sBAAe,CAACA,KAAD,EAAQxQ,OAAR,KAAoBuQ,OAAO,CAACC,KAAD,EAAQxQ,OAAR,CAA1C;;ACnCA,sBAAe,MACbR,MAAM,CAACC,MAAP,CAAc;AACZsN,EAAAA,WAAW,EAAEzN,SADD;AAEZ0N,EAAAA,SAAS,EAAE1N,SAFC;AAGZmR,EAAAA,eAAe,EAAEnR;AAHL,CAAd,CADF;;ACEA,MAAMuK,eAAa,GAAIlB,CAAD,IAAO;AAC3B,QAAMmB,OAAO,GAAGxI,MAAA,CAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,SAArB,CAAP,EAAwCqH,CAAxC,CAAhB;;AAEA,MAAImB,OAAJ,EAAa;AACX,WAAOxI,MAAA,CACLA,YAAA,CAAa,CAAC,MAAD,EAAS,UAAT,EAAqB,SAArB,CAAb,CADK,EAELA,MAAA,CACEA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADF,EAEEA,KAAA,CAAM,CAAC;AAAEyI,MAAAA,QAAF;AAAY,SAAGC;AAAf,KAAD,KAAiC;AACrC,YAAMC,MAAM,GAAG3I,MAAA,CAAO,CAAC,MAAD,EAASyI,QAAT,CAAP,EAA2BD,OAA3B,KAAuC;AAAEI,QAAAA,OAAO,EAAE;AAAX,OAAtD;AACA,aAAO,EACL,GAAGF,UADE;AAELE,QAAAA,OAAO,EAAED,MAAM,CAACC;AAFX,OAAP;AAID,KAND,CAFF,CAFK,EAYLvB,CAZK,CAAP;AAaD;;AACD,SAAOA,CAAP;AACD,CAnBD;;AAqBA,MAAMqC,2BAAyB,GAAIrC,CAAD,IAAO;AACvC,QAAMsC,YAAY,GAAG3J,MAAA,CAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAAP,EAA4CqH,CAA5C,CAArB;;AAEA,MAAI,CAACrH,SAAA,CAAU2J,YAAV,CAAD,IAA4B,CAAC3J,OAAA,CAAQ2J,YAAR,CAAjC,EAAwD;AACtD,UAAMC,iBAAiB,GAAG5J,MAAA,CACxBA,MAAA,CACEA,UAAA,CAAW,MAAX,CADF,EAEEA,MAAA,CACEA,KAAA,CAAOkD,WAAD,KAAkB,EACtB,GAAGA,WADmB;AAEtB2G,MAAAA,MAAM,EAAE,IAFc;AAGtBC,MAAAA,IAAI,EAAE5G,WAAW,CAAC7D;AAHI,KAAlB,CAAN,CADF,CAFF,CADwB,EAWxBsK,YAXwB,CAA1B;AAaA,WAAO3J,MAAA,CACLA,YAAA,CAAa,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAAb,CADK,EAELA,WAAA,CAAY,CAAC,MAAD,EAAS,UAAT,EAAqB,cAArB,CAAZ,EAAkD4J,iBAAlD,CAFK,EAGL5J,MAAA,CACEA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADF,EAEEA,KAAA,CAAM,CAAC;AAAE4I,MAAAA,OAAO,GAAG,EAAZ;AAAgB,SAAGF;AAAnB,KAAD,MAAsC;AAC1CqB,MAAAA,YAAY,EAAEnB,OAD4B;AAE1C,SAAGF;AAFuC,KAAtC,CAAN,CAFF,CAHK,EAULrB,CAVK,CAAP;AAWD;;AACD,SAAOA,CAAP;AACD,CA9BD;;AAgCA,MAAM2C,oBAAkB,GAAIC,SAAD,IAAe;AACxC,UAAQA,SAAR;AACE,SAAK,qBAAL;AACE,aAAO,iBAAP;;AACF,SAAK,gBAAL;AACE,aAAO,YAAP;;AACF,SAAK,mBAAL;AACE,aAAO,eAAP;;AACF;AACE,aAAOA,SAAP;AARJ;AAUD,CAXD;;AAaA,MAAMC,WAAS,GAAI7C,CAAD,IAAO;AACvB,MAAIrH,SAAA,CAAU,CAAC,QAAD,EAAW,UAAX,EAAuB,gBAAvB,EAAyC,MAAzC,CAAV,EAA4DqH,CAA5D,CAAJ,EAAoE;AAClE,WAAOrH,MAAA,CACLA,MAAA,CACEA,UAAA,CAAW,CAAC,QAAD,EAAW,UAAX,EAAuB,gBAAvB,EAAyC,MAAzC,CAAX,CADF,EAEEA,QAAA,CACEA,OADF,EAEEA,KAAA,CACEA,MAAA,CACEA,KAAA,CAAM,WAAN,CADF,EAEEA,MAAA,CAAOA,UAAA,CAAW,WAAX,CAAP,EAAgCgK,oBAAhC,CAFF,CADF,CAFF,CAFF,CADK,EAaL3C,CAbK,CAAP;AAcD;;AACD,SAAOA,CAAP;AACD,CAlBD;;AAoBA,MAAM8C,gBAAc,GAAIxM,KAAD,IAAYyR,QAAD,IAAc;AAC9C,QAAM;AAAEhF,IAAAA;AAAF,MAAuBzM,KAAK,CAAC0M,IAAnC;AAEA,SAAOrK,MAAA,CACLA,UAAA,CAAW,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,EAAoC,MAApC,CAAX,CADK,EAELA,QAAA,CACEA,OADF,EAEEA,eAAA,CAAgB,CAAC;AAAEP,IAAAA,SAAS,GAAG,EAAd;AAAkB,OAAG6K;AAArB,GAAD,MAAkC,EAChD,GAAGA,IAD6C;AAEhD7K,IAAAA,SAAS,EAAE6K,IAAI,CAACC,iBAAL,GACP9K,SADO,GAEPA,SAAS,CAAClE,GAAV,CAAeiP,IAAD,IAAUA,IAAI,GAAGhF,IAAI,CAACiF,IAAL,CAAUL,gBAAV,CAA/B;AAJ4C,GAAlC,CAAhB,CAFF,CAFK,EAWLgF,QAXK,CAAP;AAYD,CAfD;;AAiBA,MAAMC,cAAc,GAAGrP,QAAA,CAAS,UAAT,CAAvB;AAEA,MAAM0K,eAAa,GAAG1K,OAAA,CAAQ,SAAR,EAAmB,CAAnB,CAAtB;AAEA,eAAeA,OAAA,CAAQ,CAACrC,KAAD,EAAQyR,QAAR,KAAqB;AAC1C,SAAOpP,MAAA,CACLA,KAAA,CAAOqH,CAAD,IAAO;AACXC,IAAAA,OAAO,CAACC,GAAR,CAAY,oBAAZ,EAAkCF,CAAlC,EAAqC,cAArC;AACD,GAFD,CADK,EAILrH,MAAA,CACEuI,eADF,EAEEmB,2BAFF,EAGEgB,eAHF,EAIEP,gBAAc,CAACxM,KAAD,CAJhB,EAKEuM,WALF,EAMEmF,cANF,CAJK,EAYLD,QAZK,CAAP;AAaD,CAdc,CAAf;;AC1GA,uBAAepP,OAAA,CAAQ,CAACrC,KAAD,EAAQyR,QAAR,KAAqB;AAC1C,SAAOpP,MAAA,CAAOA,QAAA,CAASA,QAAA,CAAS,SAAT,EAAoB,CAApB,CAAT,EAAiC4K,QAAM,CAACjN,KAAD,CAAvC,CAAP,EAAwDyR,QAAxD,CAAP;AACD,CAFc,CAAf;;ACAA,MAAME,eAAe,GAAGtP,MAAA,CAAOA,YAAA,CAAa,CAAC,OAAD,EAAU,YAAV,CAAb,CAAP,CAAxB;AAEA,uBAAe,CAACrC,KAAD,EAAQyR,QAAR,KACbpP,MAAA,CAAOuP,gBAAgB,CAAC5R,KAAD,CAAvB,EAAgC2R,eAAhC,EAAiDF,QAAjD,CADF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCA9H,OAAO,CAACC,GAAR,CAAY,6BAAZ,EAA2CiI,GAAG,CAAC/Q,OAA/C;MAEagR,0BAA0B,GAAG,MAAMC;MAEnCC,kBAAkB,GAAG,CAACjR,OAAO,GAAGkR,cAAc,EAAzB,KAChCC,cAAc,CAACX,KAAK,EAAN,EAAUxQ,OAAV;;;;;"}
1
+ {"version":3,"file":"library.js","sources":["../src/util/fp.js","../src/detectVersion.js","../src/ValidationError.js","../src/util/validate.js","../src/validators/v1.js","../src/validators/v2.js","../src/validators/v3.js","../src/validators/live.js","../src/validators/index.js","../src/validate.js","../src/versions.js","../src/upgraders/v1-to-v2.js","../src/consolidators/v2.js","../src/consolidators/v3.js","../src/consolidators/index.js","../src/consolidate.js","../src/upgraders/v2-to-v3.js","../src/upgraders/index.js","../src/upgrade.js","../src/timezone-data.js","../src/fixDates.js","../src/steps.js","../src/handler.js","../src/options.js","../src/settingsUpgrader/v2-to-v3.js","../src/settingsUpgrader/index.js","../src/settingsHandler.js","../src/index.js"],"sourcesContent":["import {\n flip,\n map,\n curry,\n path,\n pathOr,\n prop,\n converge,\n pipe,\n compose,\n indexBy,\n} from \"ramda\";\n\nexport const lookup = flip(prop);\nexport const lookupPath = flip(path);\nexport const lookupAll = curry((from, ids) => map(lookup(from), ids));\n\nexport const lookupPathAll = curry((from, p, ids) =>\n map(compose(path(p), lookup(from)), ids)\n);\n\nexport const indexById = indexBy(prop(\"id\"));\n\nexport const listEntities = curry((entitiesContainerPath, from) =>\n pipe(\n converge(lookupAll, [\n pathOr([], [...entitiesContainerPath, \"byId\"]),\n pathOr([], [...entitiesContainerPath, \"ids\"]),\n ])\n )(from)\n);\n","import { prop, pipe, defaultTo } from \"ramda\";\n\n/**\n * Return the version of a stage object.\n * @param {Object} stage The stage for which to return the version.\n */\nexport default pipe(prop(\"version\"), defaultTo(1));\n","import { pipe, map, prepend, append, flatten, join, of } from \"ramda\";\n\nclass ValidationError extends Error {\n setErrors(errors) {\n this.errors = errors;\n }\n}\n\nconst formatErrorMessage = (errors) => {\n const header = \"Validation errors occurred: \\n\";\n\n return pipe(\n map(({ dataPath, message }) => `path: \"${dataPath}\", message: ${message}`),\n map(of),\n map(pipe(prepend(\" - \"), append(\"\\n\"))),\n flatten,\n prepend(header),\n join(\"\")\n )(errors);\n};\n\nexport default (errors) => {\n const err = new ValidationError(formatErrorMessage(errors));\n err.setErrors(errors);\n\n return err;\n};\n","import Ajv from \"ajv\";\nimport createValidationError from \"../ValidationError\";\n\nconst ajv = new Ajv({ $data: true, allErrors: true, logger: false });\nrequire(\"ajv-keywords\")(ajv, \"formatMinimum\");\n/**\n * Creates a JSON schema validator.\n * @param {Object} obj Object containing json schema rules.\n */\nexport const createAJVValidator = (schema) => {\n const validator = ajv.compile(schema);\n\n return (stage) => {\n const result = validator(stage);\n\n const { errors } = validator;\n\n return {\n valid: result,\n stage,\n error: errors ? createValidationError(errors) : undefined,\n };\n };\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.1.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.2.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.3.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import { createAJVValidator } from \"../util/validate\";\nimport schema from \"../../schemas/stage.live.schema.json\";\n\nconst jsonSchemaValidator = createAJVValidator(schema);\n\nexport default (stage) => {\n return jsonSchemaValidator(stage);\n};\n","import v1 from \"./v1\";\nimport v2 from \"./v2\";\nimport v3 from \"./v3\";\nimport live from \"./live\";\n\nconst map = Object.freeze({\n \"1\": v1,\n \"2\": v2,\n \"3\": v3,\n live,\n});\n\nexport default map;\n","import { applyTo, pipe, defaultTo } from \"ramda\";\nimport { lookup } from \"./util/fp\";\nimport detectVersion from \"./detectVersion\";\nimport validators from \"./validators\";\n\n/**\n * Parses validation specific options from global options.\n * @param {obj} options\n */\nexport const optionsParser = ({ validationVersion = undefined }) => ({\n version: validationVersion,\n});\n\n/**\n * Validates a stage\n * @param {Object} stage\n * @param {number} version\n */\n\nexport default (stage, options = {}) => {\n const { version = undefined } = options;\n return pipe(\n defaultTo(detectVersion(stage)),\n lookup(validators),\n applyTo(stage)\n )(version);\n};\n","export default Object.freeze([1, 2, 3, \"live\"]);\n","/**\n * v1-to-v2.js\n * Upgrader for version 1 stage files to version 2.\n * Removes timelines axes with resources. And adds the zoomSteps for the dataviewer.\n */\nimport {\n pipe,\n dissocPath,\n assoc,\n filter,\n propSatisfies,\n startsWith,\n map,\n replace,\n prop,\n converge,\n pair,\n reduce,\n assocPath,\n} from \"ramda\";\n\nimport { listEntities } from \"../util/fp\";\n\nconst outletsView = listEntities([\"data\", \"entities\", \"outlets\"]);\n\n// This adds the zoomsteps on dataviwer based on \"visible\" prop on the associated outlet.\nconst addDataViewerZoomSteps = (stage) =>\n pipe(\n outletsView,\n // The association to a dataviewer is defined in the outlet id (dataviewer/<DATAVIEWER ID>),\n // This only takes outlets associated with a dataviewer.\n filter(propSatisfies(startsWith(\"dataviewer/\"), \"id\")),\n map(\n // This pairs the path to the associated dataviewer to its required zoomSteps.\n converge(pair, [\n pipe(prop(\"id\"), replace(\"dataviewer/\", \"\"), (id) => [\n \"data\",\n \"entities\",\n \"dataViewers\",\n \"byId\",\n id,\n \"zoomSteps\",\n ]),\n pipe(prop(\"visible\"), (visible) => [visible]),\n ])\n ),\n // Set the \"zoomSteps\" prop of the dataviewer to the visibility of the outlet.\n reduce((acc, [path, zoomSteps]) => assocPath(path, zoomSteps, acc), stage)\n )(stage);\n\nexport default pipe(\n // Sets the version prop to \"2\"\n assoc(\"version\", 2),\n // Remove the association to resources from the timline axes.\n // In version 2 the tracks for files on the timeline are handled by the v2 consolidation strategy.\n dissocPath([\"timeline\", \"entities\", \"axes\", \"byId\", \"video\", \"resources\"]),\n dissocPath([\n \"timeline\",\n \"entities\",\n \"axes\",\n \"byId\",\n \"high-speed\",\n \"resources\",\n ]),\n // Adds the zoomsteps to the dataviewers.\n addDataViewerZoomSteps\n);\n","import * as R from \"ramda\";\n\nimport { parseISO, formatWithOptions } from \"date-fns/fp\";\n\nimport { lookupPathAll, lookupAll, indexById } from \"../util/fp\";\n\nconst NEW_TEST_REGEX = /^([0-9]{5})_(.+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)$/;\n\nconst fsPath = require(\"path\");\n\nconst match = R.curry((regex, st) => st.match(regex));\nconst mapWithIndex = R.addIndex(R.map);\n\nconst axesSettings = [\n {\n id: \"video\",\n color: \"#41b51b\",\n },\n {\n id: \"high-speed\",\n color: \"#3318cc\",\n },\n {\n id: \"comment\",\n color: \"red\",\n },\n];\n\nconst tracksIdsPath = [\"timeline\", \"entities\", \"tracks\", \"ids\"];\nconst tracksByIdPath = [\"timeline\", \"entities\", \"tracks\", \"byId\"];\nconst axesIdsPath = [\"timeline\", \"entities\", \"axes\", \"ids\"];\nconst axesByIdPath = [\"timeline\", \"entities\", \"axes\", \"byId\"];\n\nconst resourcesIdsView = R.path([\"resources\", \"entities\", \"resources\", \"ids\"]);\nconst resourcesByIdView = R.path([\n \"resources\",\n \"entities\",\n \"resources\",\n \"byId\",\n]);\nconst filesIdsView = R.path([\"files\", \"entities\", \"files\", \"ids\"]);\nconst filesByIdView = R.path([\"files\", \"entities\", \"files\", \"byId\"]);\nconst commentsByIdView = R.path([\"timeline\", \"entities\", \"comments\", \"byId\"]);\nconst tracksIdsLens = R.lensPath(tracksIdsPath);\nconst tracksByIdLens = R.lensPath(tracksByIdPath);\nconst axesIdsLens = R.lensPath(axesIdsPath);\nconst axesByIdLens = R.lensPath(axesByIdPath);\n\nconst filesView = R.pipe(filesByIdView, R.values);\n\nconst commentsView = R.pipe(commentsByIdView, R.values);\n\nconst highSpeedsFilesView = (stage) => {\n const filesById = filesByIdView(stage);\n const resourcesById = resourcesByIdView(stage);\n return R.pipe(\n // Iterate R.over the resource ids\n resourcesIdsView,\n // Filter out all the ids that don't start with high-speed.\n R.filter(R.startsWith(\"high-speed:\")),\n // Map the remaining resource ids to the files ids in the respective resource object.\n lookupPathAll(resourcesById, [\"files\"]),\n // Flatten the ids so we get a single array containing all the files ids referred\n // to across all high-speed resources.\n R.flatten,\n // Map the file ids to file objects.\n lookupAll(filesById)\n )(stage);\n};\n\nconst videosFilesView = (stage) => {\n const filesIds = filesIdsView(stage);\n const filesById = filesByIdView(stage);\n const highSpeedFiles = highSpeedsFilesView(stage);\n\n return R.pipe(\n R.without(R.pluck(\"id\", highSpeedFiles)),\n lookupAll(filesById),\n R.filter(R.propEq(\"type\", \"video\"))\n )(filesIds);\n};\n\nexport const upsertAxes = (axes) =>\n R.curry(\n R.pipe(\n R.unless(R.path(axesIdsPath), R.assocPath(axesIdsPath, [])),\n R.unless(R.path(axesByIdPath), R.assocPath(axesIdsPath, {})),\n R.over(axesIdsLens, R.union(R.pluck(\"id\", axes))),\n R.over(axesByIdLens, R.merge(indexById(axes)))\n )\n );\n\nexport const createTrackFromEntity = R.curry((axis, entity) => {\n const { start, end, type, id } = entity;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n axisRef: axis,\n ref: id,\n };\n});\n\nexport const mapEntitiesToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromEntity(axis), entitiesSelector(stage))\n);\n\nconst mapCommentsToTracks = R.pipe(\n mapEntitiesToTracks(commentsView, \"comment\"),\n R.map(R.mergeLeft({ type: \"comment\", label: \"comment\" }))\n);\n\nconst formatTestNo = (input) => {\n const [\n // eslint-disable-next-line no-unused-vars\n m,\n project,\n facility,\n program,\n category,\n test,\n experiment,\n measurement,\n ] = input.match(NEW_TEST_REGEX);\n\n return `${project}_${program.padStart(2, \"0\")}${facility}_${category.padStart(\n 2,\n \"0\"\n )}_${test.padStart(3, \"0\")}_${experiment.padStart(\n 3,\n \"0\"\n )}_${measurement.padStart(2, \"0\")}`;\n};\n\nconst extractTestNumberFromMetadata = R.pipe(\n R.path([\"metadata\", \"location\", \"$id\"]),\n R.when(R.test(NEW_TEST_REGEX), formatTestNo)\n);\n\nconst extractTestNumberFromFileName = R.compose(\n R.head,\n R.defaultTo([undefined]),\n R.either(\n match(/[0-9]{5}_[0-9]{2}[a-zA-Z]+_[0-9]{2}_[0-9]{3}_[0-9]{3}_[0-9]{2}/),\n match(/[A-Za-z]+[0-9]{5}_[0-9]+_[0-9]+_[0-9]+/)\n ),\n R.prop(\"path\")\n);\n\nconst extractTestNumber = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.prop(track.ref),\n R.either(extractTestNumberFromMetadata, extractTestNumberFromFileName)\n )(stage);\n\nconst formatter = formatWithOptions({ awareOfUnicodeTokens: true });\n\nconst extractRecordingChannel = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"metadata\", \"recChannel\"]))(stage);\n\nconst createHighSpeedTracksLabels = (stage) => (tracks) =>\n mapWithIndex((hs, index) => {\n const recordingChannel = extractRecordingChannel(stage, hs);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `HS ${no}`, hs);\n }, tracks);\n\nconst createVideoTracksLabels = (stage) => (tracks) =>\n mapWithIndex((vid, index) => {\n const recordingChannel = extractRecordingChannel(stage, vid);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `VID ${no}`, vid);\n }, tracks);\n\nconst extractFormat = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"path\"]), (p) => fsPath.extname(p))(\n stage\n );\n\nconst extractSecondFractions = (isoStr) =>\n R.pipe(\n match(/[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]+)/),\n R.ifElse(R.isNil, R.always(\"000\"), R.nth(1))\n )(isoStr);\n\nconst extractDate = (stage, track) => {\n return R.pipe(\n filesByIdView,\n R.path([track.ref, \"start\"]),\n parseISO,\n formatter(\"dd-MM-yyyy\")\n )(stage);\n};\n\nconst createTime = R.converge(R.pipe(R.pair, R.join(\".\")), [\n R.pipe(parseISO, formatter(\"HH:mm:ss\")),\n extractSecondFractions,\n]);\n\nconst extractStart = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"start\"]), createTime)(stage);\n\nconst extractEnd = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref, \"end\"]), createTime)(stage);\n\nconst createVideoMetadata = R.curry((type, stage, track) => ({\n ...track,\n metadata: track.metadata || [\n [{ label: \"Test\", value: extractTestNumber(stage, track) }],\n [\n { label: \"Type\", value: type },\n {\n label: \"Recording channel\",\n value: extractRecordingChannel(stage, track),\n },\n { label: \"Format\", value: extractFormat(stage, track) },\n ],\n [\n { label: \"Date\", value: extractDate(stage, track) },\n { label: \"Start\", value: extractStart(stage, track) },\n { label: \"End\", value: extractEnd(stage, track) },\n ],\n ],\n}));\n\nconst createHighSpeedsMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"high-speed\", stage), tracks)\n);\nconst createVideosMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"video\", stage), tracks)\n);\n\nconst createTracks = (stage) =>\n R.converge((...args) => R.flatten(args), [\n R.pipe(\n mapEntitiesToTracks(highSpeedsFilesView, \"high-speed\"),\n createHighSpeedTracksLabels(stage),\n createHighSpeedsMetadata(stage)\n ),\n R.pipe(\n mapEntitiesToTracks(videosFilesView, \"video\"),\n createVideoTracksLabels(stage),\n createVideosMetadata(stage)\n ),\n mapCommentsToTracks,\n ])(stage);\n\nconst upsertTracks = (tracks) =>\n R.curry(\n R.pipe(\n R.unless(R.path(tracksIdsPath), R.assocPath(tracksIdsPath, [])),\n R.unless(R.path(tracksByIdPath), R.assocPath(tracksByIdPath, {})),\n R.over(tracksIdsLens, R.union(R.pluck(\"id\", tracks))),\n R.over(tracksByIdLens, R.merge(indexById(tracks)))\n )\n );\n\nconst earliestTime = (stage) =>\n R.pipe(\n filesView,\n R.map(R.prop(\"start\")),\n R.map(Date.parse),\n R.apply(Math.min),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst latestTime = (stage) =>\n R.pipe(\n filesView,\n R.map(R.prop(\"end\")),\n R.map(Date.parse),\n R.apply(Math.max),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst setTimeLineStartEnd = (stage) =>\n R.pipe(\n R.assocPath([\"timeline\", \"start\"], earliestTime(stage)),\n R.assocPath([\"timeline\", \"end\"], latestTime(stage))\n )(stage);\n\nconst setCommentAxis = R.assocPath([\"timeline\", \"commentAxis\"], \"comment\");\n\nconst consolidateTimeline = (stage) => {\n return R.pipe(\n upsertAxes(axesSettings),\n upsertTracks(createTracks(stage)),\n setTimeLineStartEnd,\n setCommentAxis\n )(stage);\n};\n\nconst consolidate = (stage) => {\n return consolidateTimeline(stage);\n};\n\nexport default consolidate;\n","import { pipe, tap } from \"ramda\";\nimport * as R from \"ramda\";\n\nimport { parseISO, formatWithOptions } from \"date-fns/fp\";\n\nimport { lookupPathAll, lookupAll, indexById } from \"../util/fp\";\n\nconst NEW_TEST_REGEX = /^([0-9]{5})_(.+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)$/;\n\nconst fsPath = require(\"path\");\n\nconst match = R.curry((regex, st) => st.match(regex));\nconst mapWithIndex = R.addIndex(R.map);\n\nconst axesSettings = [\n {\n id: \"video\",\n color: \"#41b51b\",\n },\n {\n id: \"high-speed\",\n color: \"#3318cc\",\n },\n {\n id: \"comment\",\n color: \"red\",\n },\n];\n\nconst tracksIdsPath = [\"timeline\", \"entities\", \"tracks\", \"ids\"];\nconst tracksByIdPath = [\"timeline\", \"entities\", \"tracks\", \"byId\"];\nconst axesIdsPath = [\"timeline\", \"entities\", \"axes\", \"ids\"];\nconst axesByIdPath = [\"timeline\", \"entities\", \"axes\", \"byId\"];\n\nconst resourcesIdsView = R.path([\"resources\", \"entities\", \"resources\", \"ids\"]);\nconst resourcesByIdView = R.path([\n \"resources\",\n \"entities\",\n \"resources\",\n \"byId\",\n]);\nconst filesIdsView = R.path([\"files\", \"entities\", \"files\", \"ids\"]);\nconst filesByIdView = R.path([\"files\", \"entities\", \"files\", \"byId\"]);\nconst timingByIdView = R.path([\"timing\", \"entities\", \"timing\", \"byId\"]);\nconst commentsByIdView = R.path([\"timeline\", \"entities\", \"comments\", \"byId\"]);\nconst tracksIdsLens = R.lensPath(tracksIdsPath);\nconst tracksByIdLens = R.lensPath(tracksByIdPath);\nconst axesIdsLens = R.lensPath(axesIdsPath);\nconst axesByIdLens = R.lensPath(axesByIdPath);\n\nconst timingsView = R.pipe(timingByIdView, R.values);\nconst commentsView = R.pipe(commentsByIdView, R.values);\n\nconst highSpeedsFilesView = (stage) => {\n const filesById = filesByIdView(stage);\n const resourcesById = resourcesByIdView(stage);\n return R.pipe(\n // Iterate R.over the resource ids\n resourcesIdsView,\n // Filter out all the ids that don't start with high-speed.\n R.filter(R.startsWith(\"high-speed:\")),\n // Map the remaining resource ids to the files ids in the respective resource object.\n lookupPathAll(resourcesById, [\"props\", \"files\"]),\n // Flatten the ids so we get a single array containing all the files ids referred\n // to across all high-speed resources.\n R.flatten,\n // Map the file ids to file objects.\n lookupAll(filesById)\n )(stage);\n};\n\nconst highSpeedsTimingsView = (stage) => {\n const timings = timingsView(stage);\n return R.pipe(\n highSpeedsFilesView,\n // Map the file ids to file objects.\n (files) =>\n files.map((file) => timings.find((timing) => timing.ref.id === file.id))\n )(stage);\n};\n\nconst videosFilesView = (stage) => {\n const filesIds = filesIdsView(stage);\n const filesById = filesByIdView(stage);\n const highSpeedFiles = highSpeedsFilesView(stage);\n\n return R.pipe(\n R.without(R.pluck(\"id\", highSpeedFiles)),\n lookupAll(filesById),\n R.filter(R.propEq(\"type\", \"video\"))\n )(filesIds);\n};\n\nconst videoTimingsView = (stage) => {\n const timings = timingsView(stage);\n return R.pipe(videosFilesView, (files) =>\n files.map((file) => timings.find((timing) => timing.ref.id === file.id))\n )(stage);\n};\n\nexport const upsertAxes = (axes) =>\n R.curry(\n R.pipe(\n R.unless(R.path(axesIdsPath), R.assocPath(axesIdsPath, [])),\n R.unless(R.path(axesByIdPath), R.assocPath(axesIdsPath, {})),\n R.over(axesIdsLens, R.union(R.pluck(\"id\", axes))),\n R.over(axesByIdLens, R.merge(indexById(axes)))\n )\n );\n\nexport const createTrackFromEntity = R.curry((axis, entity) => {\n const { start, end, type, id } = entity;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n group: axis,\n ref: {\n id,\n type,\n },\n timeline: \"1\",\n };\n});\n\nexport const mapEntitiesToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromEntity(axis), entitiesSelector(stage))\n);\n\nexport const createTrackFromTiming = R.curry((axis, timing) => {\n const { start, end, ref } = timing;\n const { id, type } = ref;\n return {\n id: `track:${id}`,\n start,\n end,\n type,\n group: axis,\n ref: {\n id,\n type,\n },\n timeline: \"1\",\n };\n});\n\nexport const mapTimingsToTracks = R.curry((entitiesSelector, axis, stage) =>\n R.map(createTrackFromTiming(axis), entitiesSelector(stage))\n);\nconst mapCommentsToTracks = R.pipe(\n mapEntitiesToTracks(commentsView, \"comment\"),\n R.map(R.mergeLeft({ type: \"comment\", label: \"comment\" }))\n);\n\nconst formatTestNo = (input) => {\n const [\n // eslint-disable-next-line no-unused-vars\n m,\n project,\n facility,\n program,\n category,\n test,\n experiment,\n measurement,\n ] = input.match(NEW_TEST_REGEX);\n\n return `${project}_${program.padStart(2, \"0\")}${facility}_${category.padStart(\n 2,\n \"0\"\n )}_${test.padStart(3, \"0\")}_${experiment.padStart(\n 3,\n \"0\"\n )}_${measurement.padStart(2, \"0\")}`;\n};\n\nconst extractTestNumberFromMetadata = R.pipe(\n R.path([\"metadata\", \"location\", \"$id\"]),\n R.when(R.test(NEW_TEST_REGEX), formatTestNo)\n);\n\nconst extractTestNumberFromFileName = R.compose(\n R.head,\n R.defaultTo([undefined]),\n R.either(\n match(/[0-9]{5}_[0-9]{2}[a-zA-Z]+_[0-9]{2}_[0-9]{3}_[0-9]{3}_[0-9]{2}/),\n match(/[A-Za-z]+[0-9]{5}_[0-9]+_[0-9]+_[0-9]+/)\n ),\n R.prop(\"path\")\n);\n\nconst extractTestNumber = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.prop(track.ref.id),\n R.either(extractTestNumberFromMetadata, extractTestNumberFromFileName)\n )(stage);\n\nconst formatter = formatWithOptions({ awareOfUnicodeTokens: true });\n\nconst extractRecordingChannel = (stage, track) =>\n R.pipe(\n filesByIdView,\n R.path([track.ref.id, \"metadata\", \"recChannel\"])\n )(stage);\n\nconst createHighSpeedTracksLabels = (stage) => (tracks) =>\n mapWithIndex((hs, index) => {\n const recordingChannel = extractRecordingChannel(stage, hs);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `HS ${no}`, hs);\n }, tracks);\n\nconst createVideoTracksLabels = (stage) => (tracks) =>\n mapWithIndex((vid, index) => {\n const recordingChannel = extractRecordingChannel(stage, vid);\n const no = recordingChannel || index + 1;\n return R.assoc(\"label\", `VID ${no}`, vid);\n }, tracks);\n\nconst extractFormat = (stage, track) =>\n R.pipe(filesByIdView, R.path([track.ref.id, \"path\"]), (p) =>\n fsPath.extname(p)\n )(stage);\n\nconst extractSecondFractions = (isoStr) =>\n R.pipe(\n match(/[0-9]{2}:[0-9]{2}:[0-9]{2}.([0-9]+)/),\n R.ifElse(R.isNil, R.always(\"000\"), R.nth(1))\n )(isoStr);\n\nconst extractDateFromTrack = R.pipe(\n R.prop(\"start\"),\n parseISO,\n formatter(\"dd-MM-yyyy\")\n);\nconst createTime = R.converge(R.pipe(R.pair, R.join(\".\")), [\n R.pipe(parseISO, formatter(\"HH:mm:ss\")),\n extractSecondFractions,\n]);\n\nconst extractStartFromTrack = R.pipe(R.prop(\"start\"), createTime);\n\nconst extractEndFromTrack = R.pipe(R.prop(\"end\"), createTime);\n\nconst createVideoMetadata = R.curry((type, stage, track) => ({\n ...track,\n metadata: [\n [{ label: \"Test\", value: extractTestNumber(stage, track) }],\n [\n { label: \"Type\", value: type },\n {\n label: \"Recording channel\",\n value: extractRecordingChannel(stage, track),\n },\n { label: \"Format\", value: extractFormat(stage, track) },\n ],\n [\n { label: \"Date\", value: extractDateFromTrack(track) },\n { label: \"Start\", value: extractStartFromTrack(track) },\n { label: \"End\", value: extractEndFromTrack(track) },\n ],\n ],\n}));\n\nconst createHighSpeedsMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"high-speed\", stage), tracks)\n);\nconst createVideosMetadata = R.curry((stage, tracks) =>\n R.map(createVideoMetadata(\"video\", stage), tracks)\n);\n\nconst createTracks = (stage) =>\n R.converge((...args) => R.flatten(args), [\n R.pipe(\n mapTimingsToTracks(highSpeedsTimingsView, \"high-speed\"),\n createHighSpeedTracksLabels(stage),\n createHighSpeedsMetadata(stage)\n ),\n R.pipe(\n mapTimingsToTracks(videoTimingsView, \"video\"),\n createVideoTracksLabels(stage),\n createVideosMetadata(stage)\n ),\n mapCommentsToTracks,\n ])(stage);\n\nconst upsertTracks = (tracks) => (stage) => {\n const indexedById = indexById(tracks);\n return R.pipe(\n R.unless(R.path(tracksIdsPath), R.assocPath(tracksIdsPath, [])),\n R.unless(R.path(tracksByIdPath), R.assocPath(tracksByIdPath, {})),\n R.over(tracksIdsLens, R.union(R.pluck(\"id\", tracks))),\n R.over(tracksByIdLens, R.mergeLeft(indexedById))\n )(stage);\n};\n\nconst earliestTime = (stage) =>\n R.pipe(\n timingsView,\n R.map(R.prop(\"start\")),\n R.map(Date.parse),\n R.apply(Math.min),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst latestTime = (stage) =>\n R.pipe(\n timingsView,\n R.map(R.prop(\"end\")),\n R.map(Date.parse),\n R.apply(Math.max),\n (t) => new Date(t),\n (d) => d.toISOString()\n )(stage);\n\nconst setTimeLineStartEnd = (stage) =>\n R.pipe(\n R.assocPath([\"timeline\", \"start\"], earliestTime(stage)),\n R.assocPath([\"timeline\", \"end\"], latestTime(stage))\n )(stage);\n\nconst setCommentAxis = R.assocPath([\"timeline\", \"commentAxis\"], \"comment\");\n\nconst consolidateTimeline = (stage) => {\n return R.pipe(\n upsertAxes(axesSettings),\n upsertTracks(createTracks(stage)),\n setTimeLineStartEnd,\n setCommentAxis\n )(stage);\n};\n\nexport default pipe(\n tap((s) => {\n console.log(\"consolidating v3 stage!\", s);\n }),\n consolidateTimeline\n);\n","import v2 from \"./v2\";\nimport v3 from \"./v3\";\n\nexport default Object.freeze({\n 2: v2,\n 3: v3,\n});\n","import { always, propOr } from \"ramda\";\n\nimport _consolidators from \"./consolidators\";\nimport detectVersion from \"./detectVersion\";\n\nexport const _consolidate = (consolidators) => (stage) => {\n const version = detectVersion(stage);\n const consolidator = propOr(always(stage), version, consolidators);\n try {\n return { stage: consolidator(stage) };\n } catch (error) {\n return { error };\n }\n};\n\nexport default _consolidate(_consolidators);\n","import * as R from \"ramda\";\nimport consolidate from \"../consolidate\";\n\nconst upgradeResources = R.over(\n R.lensPath([\"resources\", \"entities\", \"resources\", \"byId\"]),\n R.map(({ files, ...resource }) => ({\n ...resource,\n props: {\n files,\n },\n }))\n);\nconst createTimingSlice = R.pipe(\n R.assocPath([\"timing\", \"entities\", \"timing\"], {\n ids: [],\n byId: {},\n }),\n R.assocPath([\"timing\", \"entities\", \"offset\"], {\n ids: [],\n byId: {},\n })\n);\n\nconst createFilesTimings = (s) => {\n const timings = R.pipe(\n R.path([\"files\", \"entities\", \"files\"]),\n R.over(\n R.lensProp(\"byId\"),\n R.map(\n R.pipe(R.pick([\"id\", \"start\", \"end\"]), (timing) =>\n R.assoc(\"ref\", { id: timing.id, type: \"file\" }, timing)\n )\n )\n )\n )(s);\n\n return R.pipe(\n R.over(\n R.lensPath([\"files\", \"entities\", \"files\", \"byId\"]),\n R.map(R.omit([\"start\", \"end\"]))\n ),\n R.over(\n R.lensPath([\"timing\", \"entities\", \"timing\"]),\n R.mergeDeepRight(timings)\n ),\n R.over(R.lensPath([\"timing\", \"entities\", \"timing\"]), (entities) =>\n R.assoc(\"ids\", R.keys(entities.byId), entities)\n )\n )(s);\n};\n\nconst createComments = R.unless(\n R.pipe(R.path([\"timeline\", \"entities\", \"comments\"]), R.complement(R.isNil)),\n R.assocPath([\"timeline\", \"entities\", \"comments\"], { ids: [], byId: {} })\n);\n\nconst createCommentsTimings = (s) => {\n const timings = R.pipe(\n R.path([\"timeline\", \"entities\", \"comments\"]),\n R.over(\n R.lensProp(\"byId\"),\n R.map(\n R.pipe(R.pick([\"id\", \"start\", \"end\"]), (timing) =>\n R.assoc(\"ref\", { id: timing.id, type: \"comment\" }, timing)\n )\n )\n )\n )(s);\n\n return R.pipe(\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"comments\", \"byId\"]),\n R.map(R.omit([\"start\", \"end\"]))\n ),\n R.over(\n R.lensPath([\"timing\", \"entities\", \"timing\"]),\n R.mergeDeepRight(timings)\n ),\n R.over(R.lensPath([\"timing\", \"entities\", \"timing\"]), (entities) =>\n R.assoc(\"ids\", R.keys(entities.byId), entities)\n )\n )(s);\n};\n\nconst removeOutlets = (s) => {\n const outlets = R.path([\"data\", \"entities\", \"outlets\"], s);\n\n if (outlets) {\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"outlets\"]),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ outletId, ...dataViewer }) => {\n const outlet = R.path([\"byId\", outletId], outlets) || { streams: [] };\n return {\n ...dataViewer,\n streams: outlet.streams,\n };\n })\n )\n )(s);\n }\n return s;\n};\n\nconst createSliceEntities = (entityName) => (slice) => {\n const result = R.pipe(\n R.unless(R.has(\"entities\"), R.assoc(\"entities\", {})),\n R.unless(\n R.hasPath([\"entities\", entityName]),\n R.assocPath([\"entities\", entityName], {\n ids: [],\n byId: {},\n })\n )\n )(slice);\n\n return result;\n};\n\nconst createTimelineSlice = (s) => {\n return R.pipe(\n R.over(\n R.lensProp(\"timeline\"),\n R.pipe(\n createSliceEntities(\"axes\"),\n createSliceEntities(\"groups\"),\n createSliceEntities(\"timeline\"),\n createSliceEntities(\"tracks\")\n )\n )\n )(s);\n};\n\nconst createTimelineGroups = (s) => {\n const groups = R.pipe(\n R.path([\"timeline\", \"entities\", \"axes\"]),\n R.over(R.lensProp(\"byId\"), R.map(R.dissoc(\"resources\")))\n )(s);\n\n return R.pipe(\n R.dissocPath([\"timeline\", \"entities\", \"axes\"]),\n R.assocPath([\"timeline\", \"entities\", \"groups\"], groups)\n )(s);\n};\n\nconst createTimeline = (s) =>\n R.pipe(\n R.assocPath([\"timeline\", \"entities\", \"timeline\", \"byId\", \"1\"], {\n id: \"1\",\n groupOrder: [\"video\", \"high-speed\", \"comment\"],\n actions: {\n copyLink: true,\n addComment: true,\n },\n start: R.path([\"timeline\", \"start\"], s),\n end: R.path([\"timeline\", \"end\"], s),\n }),\n R.dissocPath([\"timeline\", \"start\"]),\n R.dissocPath([\"timeline\", \"end\"]),\n R.assocPath([\"timeline\", \"entities\", \"timeline\", \"ids\"], [\"1\"]),\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"tracks\", \"byId\"]),\n R.map(R.pipe(R.assoc(\"timeline\", \"1\")))\n ),\n R.assocPath([\"timeline\", \"masterTimeline\"], \"1\")\n )(s);\n\nconst fixTracks = (s) =>\n R.pipe(\n R.over(\n R.lensPath([\"timeline\", \"entities\", \"tracks\", \"byId\"]),\n R.map(({ axisRef, type, ref, start, end, ...track }) => ({\n ...track,\n group: axisRef,\n ref: {\n type: type === \"video\" || type === \"image\" ? \"file\" : type,\n id: ref,\n },\n editable: type === \"comment\",\n timeline: \"1\",\n }))\n )\n )(s);\n\nconst dataStreamsToMeasurements = (s) => {\n const streamsSlice = R.path([\"data\", \"entities\", \"dataStreams\"], s);\n\n if (!R.isEmpty(streamsSlice) && !R.isNil(streamsSlice)) {\n const measurementsSlice = R.pipe(\n R.over(\n R.lensProp(\"byId\"),\n R.pipe(\n R.map((measurement) => ({\n ...measurement,\n legacy: true,\n name: measurement.id,\n }))\n )\n )\n )(streamsSlice);\n\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"dataStreams\"]),\n R.assocPath([\"data\", \"entities\", \"measurements\"], measurementsSlice),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ streams = [], ...dataViewer }) => ({\n measurements: streams,\n ...dataViewer,\n }))\n )\n )(s);\n }\n return s;\n};\n\nconst translateComponent = (component) => {\n switch (component) {\n case \"DataViewerComponent\":\n return \"DataViewerPanel\";\n case \"VideoComponent\":\n return \"VideoPanel\";\n case \"PlaylistComponent\":\n return \"PlaylistPanel\";\n default:\n return component;\n }\n};\n\nconst fixPanels = (s) => {\n if (R.hasPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"], s)) {\n return R.pipe(\n R.over(\n R.lensPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"]),\n R.unless(\n R.isNil,\n R.map(\n R.when(\n R.has(\"component\"),\n R.over(R.lensProp(\"component\"), translateComponent)\n )\n )\n )\n )\n )(s);\n }\n return s;\n};\n\nconst scaleZoomSteps = (stage) => {\n const { measurementScale } = stage.data;\n return R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.unless(\n R.isNil,\n R.mapObjIndexed(({ zoomSteps = [], ...rest }) => ({\n ...rest,\n zoomSteps: rest.zoomStepsIsScaled\n ? zoomSteps\n : zoomSteps.map((step) => step * Math.sqrt(measurementScale)),\n }))\n )\n )(stage);\n};\n\nconst updateVersion = R.assoc(\"version\", 3);\n\nexport default R.pipe(\n R.tap((stage) => {\n console.log(\"upgrading \", stage, \" from 2 to 3\");\n }),\n consolidate,\n R.unless(\n R.prop(\"error\"),\n R.pipe(\n R.prop(\"stage\"),\n removeOutlets,\n scaleZoomSteps,\n dataStreamsToMeasurements,\n createTimingSlice,\n createTimelineSlice,\n createFilesTimings,\n createComments,\n createCommentsTimings,\n createTimelineGroups,\n createTimeline,\n fixTracks,\n updateVersion,\n fixPanels,\n upgradeResources\n )\n )\n);\n","import v1ToV2 from \"./v1-to-v2\";\nimport v2ToV3 from \"./v2-to-v3\";\n\nexport default () => [\n [2, v1ToV2],\n [3, v2ToV3],\n];\n","import {\n filter,\n pipe,\n map,\n applyTo,\n apply,\n gte,\n last,\n nth,\n defaultTo,\n prepend,\n always,\n} from \"ramda\";\n\nimport versions from \"./versions\";\nimport detectVersion from \"./detectVersion\";\nimport upgraders from \"./upgraders\";\n\nconst resolveFrom = (stage) => detectVersion(stage);\n\nconst resolveTo = (to) => defaultTo(last(versions))(to);\n\nconst versionsCorrect = (from, to) => gte(to, from);\n\nconst upgradePipe = (from, to, stage) =>\n pipe(\n filter(([v]) => v > from && v <= to),\n map(nth(1)),\n prepend(always(stage)),\n apply(pipe),\n applyTo(stage)\n )(upgraders());\n\nexport const optionsParser = ({\n upgradeFrom: from = undefined,\n upgradeTo: to = undefined,\n}) => ({\n from,\n to,\n});\n\nexport default (stage, options = {}) => {\n const { to = undefined } = options;\n const resolvedTo = resolveTo(to);\n const resolvedFrom = resolveFrom(stage);\n\n let upgraded = stage;\n let error;\n console.log(`upgrading from ${resolvedFrom} to ${resolvedTo}.`);\n if (versionsCorrect(resolvedFrom, resolvedTo)) {\n upgraded = upgradePipe(resolvedFrom, resolvedTo, stage);\n } else {\n error = new Error(\n `Incorrect version: from: ${resolvedFrom} > to: ${resolvedTo}`\n );\n }\n\n return {\n stage: upgraded,\n error,\n };\n};\n","export default {\n version: \"2018g\",\n zones: [\n \"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|01010101010101010101010101010101010101010101232323454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|16e5\",\n \"Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|79e3\",\n ],\n links: [\"Europe/Prague|Europe/Bratislava\"],\n};\n","import * as R from \"ramda\";\n\nimport timezoneData from \"./timezone-data\";\n\nconst {\n findTimeZone,\n setTimeZone,\n populateTimeZones,\n} = require(\"timezone-support/dist/lookup-convert\");\nconst { formatZonedTime } = require(\"timezone-support/dist/parse-format\");\n\npopulateTimeZones(timezoneData);\nconst dateWithoutTimeZoneExp = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})((\\.)([0-9]{0,}))?$/;\nconst dateWithWrongSeconds = /^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:)([0-9]{3,})((\\.[0-9]+)?((Z|(\\+|-)([0-9]{2}:[0-9]{2}|[0-9]+))))$/;\n\nconst amsterdam = findTimeZone(\"Europe/Amsterdam\");\n\nconst fixDateWithoutTimezone = (d) => {\n const matches = dateWithoutTimeZoneExp.exec(d);\n\n if (matches) {\n const timeObj = {\n year: matches[1],\n month: matches[2],\n day: matches[3],\n hours: matches[4],\n minutes: matches[5],\n seconds: matches[6],\n };\n\n const withTimezone = setTimeZone(timeObj, amsterdam);\n const formattedDate = formatZonedTime(withTimezone, \"YYYY-M-D\");\n const formattedTime = formatZonedTime(withTimezone, \"H:m:ss\");\n const milliseconds = matches[7];\n const formattedTimezone = formatZonedTime(withTimezone, \"Z\");\n return `${formattedDate}T${formattedTime}${\n milliseconds || \"\"\n }${formattedTimezone}`;\n }\n\n return d;\n};\n\nconst fixDateWithWrongSeconds = (d) => {\n const matches = dateWithWrongSeconds.exec(d);\n\n if (matches) {\n const [, rest, seconds, timezone] = matches;\n const newDate = `${rest}${seconds.substring(\n seconds.length - 2\n )}${timezone}`;\n return newDate;\n }\n\n return d;\n};\n\nconst isIncorrectTime = (input) =>\n R.both(\n R.is(String),\n R.pipe(\n R.anyPass([R.test(dateWithoutTimeZoneExp), R.test(dateWithWrongSeconds)])\n )\n )(input);\n\nconst fixDates = (obj) =>\n R.pipe(\n R.map(\n R.ifElse(\n isIncorrectTime,\n R.pipe(\n R.tap((x) => `${x} is incorrect date`),\n fixDateWithoutTimezone,\n fixDateWithWrongSeconds\n ),\n R.when(R.is(Object), (c) => fixDates(c))\n )\n )\n )(obj);\n\nexport default fixDates;\n","import validate, { optionsParser as validateOptionsParser } from \"./validate\";\nimport upgrade, { optionsParser as upgradeOptionsParser } from \"./upgrade\";\nimport fixDates from \"./fixDates\";\nimport consolidate from \"./consolidate\";\n\nconst fixDatesWithOptions = (options, stage) => ({\n stage: fixDates(stage),\n});\n\nconst validateWithOptions = (options, stage) => {\n const validated = validate(stage, validateOptionsParser(options));\n return validated;\n};\n\nconst upgradeWithOptions = (options, stage) =>\n upgrade(stage, upgradeOptionsParser(options));\nconst consolidateWithOptions = (options, stage) => consolidate(stage);\n\nexport default () => [\n fixDatesWithOptions,\n validateWithOptions,\n consolidateWithOptions,\n upgradeWithOptions,\n];\n","import {\n pipe,\n map,\n apply,\n applyTo,\n curry,\n defaultTo,\n unless,\n prop,\n prepend,\n always,\n nAry,\n} from \"ramda\";\n\nconst hasError = prop(\"error\");\n\nconst doStep = curry((options, step, response) => {\n const normalizedStep = curry(nAry(2, step));\n\n return pipe(\n defaultTo({}),\n unless(hasError, pipe(prop(\"stage\"), normalizedStep(options)))\n )(response);\n});\n\nconst handler = curry((steps, options, stage) =>\n pipe(\n defaultTo([]),\n map(doStep(options)), // Map all the steps to a doStep wrapper so they can be piped.\n prepend(always({ stage })),\n apply(pipe), // Create a pipe of all the steps.\n applyTo(stage) // Pipe the stage through the steps.\n )(steps)\n);\n\nexport default (steps, options) => handler(steps, options);\n","export default () =>\n Object.freeze({\n upgradeFrom: undefined,\n upgradeTo: undefined,\n validateVersion: undefined,\n });\n","import * as R from \"ramda\";\n\nconst removeOutlets = (s) => {\n const outlets = R.path([\"data\", \"entities\", \"outlets\"], s);\n\n if (outlets) {\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"outlets\"]),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ outletId, ...dataViewer }) => {\n const outlet = R.path([\"byId\", outletId], outlets) || { streams: [] };\n return {\n ...dataViewer,\n streams: outlet.streams,\n };\n })\n )\n )(s);\n }\n return s;\n};\n\nconst dataStreamsToMeasurements = (s) => {\n const streamsSlice = R.path([\"data\", \"entities\", \"dataStreams\"], s);\n\n if (!R.isEmpty(streamsSlice) && !R.isNil(streamsSlice)) {\n const measurementsSlice = R.pipe(\n R.over(\n R.lensProp(\"byId\"),\n R.pipe(\n R.map((measurement) => ({\n ...measurement,\n legacy: true,\n name: measurement.id,\n }))\n )\n )\n )(streamsSlice);\n\n return R.pipe(\n R.dissocPath([\"data\", \"entities\", \"dataStreams\"]),\n R.assocPath([\"data\", \"entities\", \"measurements\"], measurementsSlice),\n R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.map(({ streams = [], ...dataViewer }) => ({\n measurements: streams,\n ...dataViewer,\n }))\n )\n )(s);\n }\n return s;\n};\n\nconst translateComponent = (component) => {\n switch (component) {\n case \"DataViewerComponent\":\n return \"DataViewerPanel\";\n case \"VideoComponent\":\n return \"VideoPanel\";\n case \"PlaylistComponent\":\n return \"PlaylistPanel\";\n default:\n return component;\n }\n};\n\nconst fixPanels = (s) => {\n if (R.hasPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"], s)) {\n return R.pipe(\n R.over(\n R.lensPath([\"layout\", \"entities\", \"layoutSections\", \"byId\"]),\n R.unless(\n R.isNil,\n R.map(\n R.when(\n R.has(\"component\"),\n R.over(R.lensProp(\"component\"), translateComponent)\n )\n )\n )\n )\n )(s);\n }\n return s;\n};\n\nconst scaleZoomSteps = (stage) => (settings) => {\n const { measurementScale } = stage.data;\n\n return R.over(\n R.lensPath([\"data\", \"entities\", \"dataViewers\", \"byId\"]),\n R.unless(\n R.isNil,\n R.mapObjIndexed(({ zoomSteps = [], ...rest }) => ({\n ...rest,\n zoomSteps: rest.zoomStepsIsScaled\n ? zoomSteps\n : zoomSteps.map((step) => step * Math.sqrt(measurementScale)),\n }))\n )\n )(settings);\n};\n\nconst removeTimeline = R.dissoc(\"timeline\");\n\nconst updateVersion = R.assoc(\"version\", 3);\n\nexport default R.curry((stage, settings) => {\n return R.pipe(\n R.tap((s) => {\n console.log(\"upgrading settings\", s, \" from 2 to 3\");\n }),\n R.pipe(\n removeOutlets,\n dataStreamsToMeasurements,\n updateVersion,\n scaleZoomSteps(stage),\n fixPanels,\n removeTimeline\n )\n )(settings);\n});\n","import * as R from \"ramda\";\nimport v2ToV3 from \"./v2-to-v3\";\n\nexport default R.curry((stage, settings) => {\n return R.pipe(R.unless(R.propEq(\"version\", 3), v2ToV3(stage)))(settings);\n});\n","import * as R from \"ramda\";\nimport settingsUpgrader from \"./settingsUpgrader\";\n\nconst settingsCleaner = R.pipe(R.dissocPath([\"timer\", \"wantedTime\"]));\n\nexport default (stage, settings) =>\n R.pipe(settingsUpgrader(stage), settingsCleaner)(settings);\n","import steps from \"./steps\";\nimport handlerFactory from \"./handler\";\nimport defaultOptions from \"./options\";\nimport settingsHandler from \"./settingsHandler\";\nimport pkg from \"../package.json\";\n\nconsole.log(\"inSync StageHandler version\", pkg.version);\n\nexport const createStageSettingsHandler = () => settingsHandler;\n\nexport const createStageHandler = (options = defaultOptions()) =>\n handlerFactory(steps(), options);\n"],"names":["lookup","flip","prop","lookupPath","path","lookupAll","curry","from","ids","map","lookupPathAll","p","compose","indexById","indexBy","listEntities","entitiesContainerPath","pipe","converge","pathOr","defaultTo","ValidationError","Error","setErrors","errors","formatErrorMessage","header","dataPath","message","of","prepend","append","flatten","join","err","ajv","Ajv","$data","allErrors","logger","require","createAJVValidator","schema","validator","compile","stage","result","valid","error","createValidationError","undefined","jsonSchemaValidator","Object","freeze","v1","v2","v3","live","optionsParser","validationVersion","version","options","detectVersion","validators","applyTo","outletsView","addDataViewerZoomSteps","filter","propSatisfies","startsWith","pair","replace","id","visible","reduce","acc","zoomSteps","assocPath","assoc","dissocPath","NEW_TEST_REGEX","fsPath","match","R","regex","st","mapWithIndex","axesSettings","color","tracksIdsPath","tracksByIdPath","axesIdsPath","axesByIdPath","resourcesIdsView","resourcesByIdView","filesIdsView","filesByIdView","commentsByIdView","tracksIdsLens","tracksByIdLens","axesIdsLens","axesByIdLens","filesView","commentsView","highSpeedsFilesView","filesById","resourcesById","videosFilesView","filesIds","highSpeedFiles","upsertAxes","axes","createTrackFromEntity","axis","entity","start","end","type","axisRef","ref","mapEntitiesToTracks","entitiesSelector","mapCommentsToTracks","label","formatTestNo","input","m","project","facility","program","category","test","experiment","measurement","padStart","extractTestNumberFromMetadata","extractTestNumberFromFileName","extractTestNumber","track","formatter","formatWithOptions","awareOfUnicodeTokens","extractRecordingChannel","createHighSpeedTracksLabels","tracks","hs","index","recordingChannel","no","createVideoTracksLabels","vid","extractFormat","extname","extractSecondFractions","isoStr","extractDate","parseISO","createTime","extractStart","extractEnd","createVideoMetadata","metadata","value","createHighSpeedsMetadata","createVideosMetadata","createTracks","args","upsertTracks","earliestTime","Date","parse","Math","min","t","d","toISOString","latestTime","max","setTimeLineStartEnd","setCommentAxis","consolidateTimeline","consolidate","timingByIdView","timingsView","highSpeedsTimingsView","timings","files","file","find","timing","videoTimingsView","group","timeline","createTrackFromTiming","mapTimingsToTracks","extractDateFromTrack","extractStartFromTrack","extractEndFromTrack","indexedById","tap","s","console","log","_consolidate","consolidators","consolidator","propOr","always","_consolidators","upgradeResources","resource","props","createTimingSlice","byId","createFilesTimings","entities","createComments","createCommentsTimings","removeOutlets","outlets","outletId","dataViewer","outlet","streams","createSliceEntities","entityName","slice","createTimelineSlice","createTimelineGroups","groups","createTimeline","groupOrder","actions","copyLink","addComment","fixTracks","editable","dataStreamsToMeasurements","streamsSlice","measurementsSlice","legacy","name","measurements","translateComponent","component","fixPanels","scaleZoomSteps","measurementScale","data","rest","zoomStepsIsScaled","step","sqrt","updateVersion","v1ToV2","v2ToV3","resolveFrom","resolveTo","to","last","versions","versionsCorrect","gte","upgradePipe","v","nth","apply","upgraders","upgradeFrom","upgradeTo","resolvedTo","resolvedFrom","upgraded","zones","links","findTimeZone","setTimeZone","populateTimeZones","formatZonedTime","timezoneData","dateWithoutTimeZoneExp","dateWithWrongSeconds","amsterdam","fixDateWithoutTimezone","matches","exec","timeObj","year","month","day","hours","minutes","seconds","withTimezone","formattedDate","formattedTime","milliseconds","formattedTimezone","fixDateWithWrongSeconds","timezone","newDate","substring","length","isIncorrectTime","String","fixDates","obj","x","c","fixDatesWithOptions","validateWithOptions","validated","validate","validateOptionsParser","upgradeWithOptions","upgrade","upgradeOptionsParser","consolidateWithOptions","hasError","doStep","response","normalizedStep","nAry","unless","handler","steps","validateVersion","settings","removeTimeline","settingsCleaner","settingsUpgrader","pkg","createStageSettingsHandler","settingsHandler","createStageHandler","defaultOptions","handlerFactory"],"mappings":"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"}