@stencil/core 2.8.1 → 2.11.0-0

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.
Files changed (72) hide show
  1. package/cli/index.cjs +239 -209
  2. package/cli/index.js +239 -209
  3. package/cli/package.json +1 -1
  4. package/compiler/lib.dom.d.ts +263 -648
  5. package/compiler/lib.dom.iterable.d.ts +1 -5
  6. package/compiler/lib.es2015.core.d.ts +2 -2
  7. package/compiler/lib.es2015.iterable.d.ts +1 -1
  8. package/compiler/lib.es2015.symbol.wellknown.d.ts +10 -10
  9. package/compiler/lib.es2018.asynciterable.d.ts +1 -1
  10. package/compiler/lib.es2020.bigint.d.ts +1 -1
  11. package/compiler/lib.es2020.intl.d.ts +6 -7
  12. package/compiler/lib.es2020.symbol.wellknown.d.ts +1 -1
  13. package/compiler/lib.es2021.d.ts +24 -0
  14. package/compiler/lib.es2021.full.d.ts +25 -0
  15. package/compiler/lib.es2021.promise.d.ts +43 -0
  16. package/compiler/lib.es2021.string.d.ts +35 -0
  17. package/compiler/lib.es2021.weakref.d.ts +75 -0
  18. package/compiler/lib.es5.d.ts +9 -9
  19. package/compiler/lib.esnext.d.ts +1 -4
  20. package/compiler/lib.esnext.promise.d.ts +26 -26
  21. package/compiler/lib.esnext.string.d.ts +18 -18
  22. package/compiler/lib.esnext.weakref.d.ts +58 -58
  23. package/compiler/lib.webworker.d.ts +98 -153
  24. package/compiler/lib.webworker.iterable.d.ts +1 -1
  25. package/compiler/package.json +1 -1
  26. package/compiler/stencil.js +1244 -456
  27. package/compiler/stencil.min.js +2 -2
  28. package/dependencies.json +6 -1
  29. package/dev-server/client/index.js +1 -1
  30. package/dev-server/client/package.json +1 -1
  31. package/dev-server/connector.html +2 -2
  32. package/dev-server/index.js +1 -1
  33. package/dev-server/package.json +1 -1
  34. package/dev-server/server-process.js +2 -2
  35. package/internal/app-data/package.json +1 -1
  36. package/internal/client/css-shim.js +1 -1
  37. package/internal/client/dom.js +1 -1
  38. package/internal/client/index.js +119 -102
  39. package/internal/client/package.json +1 -1
  40. package/internal/client/patch-browser.js +1 -1
  41. package/internal/client/patch-esm.js +1 -1
  42. package/internal/client/shadow-css.js +9 -10
  43. package/internal/hydrate/index.js +44 -40
  44. package/internal/hydrate/package.json +1 -1
  45. package/internal/hydrate/shadow-css.js +59 -62
  46. package/internal/index.js +1 -0
  47. package/internal/package.json +1 -1
  48. package/internal/stencil-private.d.ts +125 -5
  49. package/internal/stencil-public-compiler.d.ts +15 -2
  50. package/internal/testing/index.js +54 -47
  51. package/internal/testing/package.json +1 -1
  52. package/internal/testing/shadow-css.js +54 -57
  53. package/mock-doc/index.cjs +4 -1
  54. package/mock-doc/index.d.ts +7 -6
  55. package/mock-doc/index.js +4 -1
  56. package/mock-doc/package.json +1 -1
  57. package/package.json +16 -6
  58. package/readme.md +2 -2
  59. package/screenshot/index.js +1 -1
  60. package/screenshot/package.json +1 -1
  61. package/sys/node/index.js +4435 -425
  62. package/sys/node/package.json +1 -1
  63. package/sys/node/worker.js +1 -1
  64. package/testing/index.js +23 -18
  65. package/testing/mocks.d.ts +1 -5
  66. package/testing/package.json +1 -1
  67. package/testing/testing-sys.d.ts +6 -1
  68. package/bin/cli.ts +0 -20
  69. package/screenshot/index.js.map +0 -1
  70. package/sys/deno/index.js +0 -1791
  71. package/sys/deno/node-compat.js +0 -2654
  72. package/sys/deno/worker.js +0 -44
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/sys/node",
3
- "version": "2.8.1",
3
+ "version": "2.11.0-0",
4
4
  "description": "Stencil Node System.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil Node System Worker v2.8.1 | MIT Licensed | https://stenciljs.com
2
+ Stencil Node System Worker v2.11.0-0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  function _interopNamespace(e) {
5
5
  if (e && e.__esModule) return e;
package/testing/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Stencil Testing v2.8.1 | MIT Licensed | https://stenciljs.com
2
+ Stencil Testing v2.11.0-0 | MIT Licensed | https://stenciljs.com
3
3
  */
4
4
  function _lazyRequire(e) {
5
5
  return new Proxy({}, {
@@ -397,7 +397,8 @@ function mockConfig(e) {
397
397
  extras: {},
398
398
  nodeResolve: {
399
399
  customResolveOptions: {}
400
- }
400
+ },
401
+ sourceMap: !0
401
402
  };
402
403
  }
403
404
 
@@ -1697,16 +1698,17 @@ class BuildContext {
1697
1698
  constructor(e, t) {
1698
1699
  this.buildId = -1, this.buildMessages = [], this.buildResults = null, this.bundleBuildCount = 0,
1699
1700
  this.collections = [], this.completedTasks = [], this.components = [], this.componentGraph = new Map,
1700
- this.data = {}, this.diagnostics = [], this.dirsAdded = [], this.dirsDeleted = [],
1701
- this.entryModules = [], this.filesAdded = [], this.filesChanged = [], this.filesDeleted = [],
1702
- this.filesUpdated = [], this.filesWritten = [], this.globalStyle = void 0, this.hasConfigChanges = !1,
1703
- this.hasFinished = !1, this.hasHtmlChanges = !1, this.hasPrintedResults = !1, this.hasServiceWorkerChanges = !1,
1704
- this.hasScriptChanges = !0, this.hasStyleChanges = !0, this.hydrateAppFilePath = null,
1705
- this.indexBuildCount = 0, this.indexDoc = void 0, this.isRebuild = !1, this.moduleFiles = [],
1706
- this.outputs = [], this.packageJson = {}, this.packageJsonFilePath = null, this.pendingCopyTasks = [],
1707
- this.requiresFullBuild = !0, this.scriptsAdded = [], this.scriptsDeleted = [], this.startTime = Date.now(),
1708
- this.styleBuildCount = 0, this.stylesPromise = null, this.stylesUpdated = [], this.timeSpan = null,
1709
- this.transpileBuildCount = 0, this.config = e, this.compilerCtx = t, this.buildId = ++this.compilerCtx.activeBuildId,
1701
+ this.data = {}, this.buildStats = void 0, this.diagnostics = [], this.dirsAdded = [],
1702
+ this.dirsDeleted = [], this.entryModules = [], this.filesAdded = [], this.filesChanged = [],
1703
+ this.filesDeleted = [], this.filesUpdated = [], this.filesWritten = [], this.globalStyle = void 0,
1704
+ this.hasConfigChanges = !1, this.hasFinished = !1, this.hasHtmlChanges = !1, this.hasPrintedResults = !1,
1705
+ this.hasServiceWorkerChanges = !1, this.hasScriptChanges = !0, this.hasStyleChanges = !0,
1706
+ this.hydrateAppFilePath = null, this.indexBuildCount = 0, this.indexDoc = void 0,
1707
+ this.isRebuild = !1, this.moduleFiles = [], this.outputs = [], this.packageJson = {},
1708
+ this.packageJsonFilePath = null, this.pendingCopyTasks = [], this.requiresFullBuild = !0,
1709
+ this.scriptsAdded = [], this.scriptsDeleted = [], this.startTime = Date.now(), this.styleBuildCount = 0,
1710
+ this.stylesPromise = null, this.stylesUpdated = [], this.timeSpan = null, this.transpileBuildCount = 0,
1711
+ this.config = e, this.compilerCtx = t, this.buildId = ++this.compilerCtx.activeBuildId,
1710
1712
  this.debug = e.logger.debug.bind(e.logger);
1711
1713
  }
1712
1714
  start() {
@@ -2056,13 +2058,13 @@ const MAX_FAILED = 100, ONE_DAY = 864e5, ONE_WEEK = 7 * ONE_DAY, EXP_STORAGE_KEY
2056
2058
  posix: null
2057
2059
  }).posix = posix, pathBrowserify = posix;
2058
2060
 
2059
- const IS_DENO_ENV = "undefined" != typeof Deno, IS_NODE_ENV = !(IS_DENO_ENV || "undefined" == typeof global || "function" != typeof require || !global.process || "string" != typeof __filename || global.origin && "string" == typeof global.origin);
2061
+ const IS_NODE_ENV = !("undefined" == typeof global || "function" != typeof require || !global.process || "string" != typeof __filename || global.origin && "string" == typeof global.origin);
2060
2062
 
2061
- IS_NODE_ENV ? process.platform : IS_DENO_ENV && Deno.build.os;
2063
+ IS_NODE_ENV && process.platform;
2062
2064
 
2063
2065
  const IS_BROWSER_ENV = "undefined" != typeof location && "undefined" != typeof navigator && "undefined" != typeof XMLHttpRequest, IS_WEB_WORKER_ENV = IS_BROWSER_ENV && "undefined" != typeof self && "function" == typeof self.importScripts, HAS_WEB_WORKER = IS_BROWSER_ENV && "function" == typeof Worker, IS_FETCH_ENV = "function" == typeof fetch;
2064
2066
 
2065
- IS_NODE_ENV && require, IS_NODE_ENV ? process.cwd : IS_DENO_ENV && Deno.cwd;
2067
+ IS_NODE_ENV && require, IS_NODE_ENV && process.cwd;
2066
2068
 
2067
2069
  const YELLOW = "#f39c12", RED = "#c0392b", BLUE = "#3498db", COMMON_DIR_MODULE_EXTS = [ ".tsx", ".ts", ".mjs", ".js", ".jsx", ".json", ".md" ], COMMON_DIR_FILENAMES = [ "package.json", "index.js", "index.mjs" ], getCommonDirName = (e, t) => e + "/" + t, isCommonDirModuleFile = e => COMMON_DIR_MODULE_EXTS.some((t => e.endsWith(t))), shouldFetchModule = e => IS_FETCH_ENV && IS_BROWSER_ENV && isNodeModulePath(e), isNodeModulePath = e => normalizePath(e).split("/").includes("node_modules"), getPackageDirPath = (e, t) => {
2068
2070
  const r = normalizePath(e).split("/"), s = (e => {
@@ -2856,7 +2858,7 @@ const createSystem = e => {
2856
2858
  u("/");
2857
2859
  const S = {
2858
2860
  name: "in-memory",
2859
- version: "2.8.1",
2861
+ version: "2.11.0-0",
2860
2862
  events: o,
2861
2863
  access: async e => c(e),
2862
2864
  accessSync: c,
@@ -3139,7 +3141,7 @@ const createSystem = e => {
3139
3141
  const r = e;
3140
3142
  return (...e) => (t++, r.apply(r, e));
3141
3143
  };
3142
- return r.access = s(r.access), r.accessSync = s(r.accessSync), r.homeDir = s(r.homeDir),
3144
+ if (r.access = s(r.access), r.accessSync = s(r.accessSync), r.homeDir = s(r.homeDir),
3143
3145
  r.readFile = s(r.readFile), r.readFileSync = s(r.readFileSync), r.readDir = s(r.readDir),
3144
3146
  r.readDirSync = s(r.readDirSync), r.stat = s(r.stat), r.statSync = s(r.statSync),
3145
3147
  r.copyFile = n(r.copyFile), r.createDir = n(r.createDir), r.createDirSync = n(r.createDirSync),
@@ -3157,7 +3159,10 @@ const createSystem = e => {
3157
3159
  t = e;
3158
3160
  }
3159
3161
  }
3160
- });
3162
+ }), !function i(e) {
3163
+ return "diskReads" in e && "diskWrites" in e;
3164
+ }(r)) throw new Error("could not generate TestingSystem");
3165
+ return r;
3161
3166
  };
3162
3167
 
3163
3168
  class TestingLogger {
@@ -5,10 +5,6 @@ export declare function mockCompilerCtx(config?: Config): CompilerCtx;
5
5
  export declare function mockBuildCtx(config?: Config, compilerCtx?: CompilerCtx): BuildCtx;
6
6
  export declare function mockCache(config?: Config, compilerCtx?: CompilerCtx): Cache;
7
7
  export declare function mockLogger(): TestingLogger;
8
- export interface TestingSystem extends CompilerSystem {
9
- diskReads: number;
10
- diskWrites: number;
11
- }
12
- export declare function mockStencilSystem(): TestingSystem;
8
+ export declare function mockStencilSystem(): CompilerSystem;
13
9
  export declare function mockDocument(html?: string): Document;
14
10
  export declare function mockWindow(html?: string): Window;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/core/testing",
3
- "version": "2.8.1",
3
+ "version": "2.11.0-0",
4
4
  "description": "Stencil testing suite.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -1 +1,6 @@
1
- export declare const createTestingSystem: () => any;
1
+ import type { CompilerSystem } from '@stencil/core/internal';
2
+ export interface TestingSystem extends CompilerSystem {
3
+ diskReads: number;
4
+ diskWrites: number;
5
+ }
6
+ export declare const createTestingSystem: () => TestingSystem;
package/bin/cli.ts DELETED
@@ -1,20 +0,0 @@
1
- // deno install -n stencil --allow-read --allow-write --allow-net -f ./bin/cli.ts
2
-
3
- import { run } from '../cli/index.js';
4
- import { createDenoLogger, createDenoSys } from '../sys/deno/index.js';
5
-
6
- if (import.meta.main) {
7
- try {
8
- const denoLogger = createDenoLogger({ Deno });
9
- const denoSys = createDenoSys({ Deno });
10
-
11
- await run({
12
- args: Deno.args,
13
- logger: denoLogger,
14
- sys: denoSys,
15
- });
16
- } catch (e) {
17
- console.error('uncaught error', e);
18
- Deno.exit(1);
19
- }
20
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../build/screenshot/screenshot-fs.js","../build/screenshot/connector-base.js","../build/utils/normalize-path.js","../build/screenshot/connector-local.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nexport async function writeScreenshotImage(imagePath, screenshotBuf) {\n const imageExists = await fileExists(imagePath);\n if (!imageExists) {\n await writeFile(imagePath, screenshotBuf);\n }\n}\nexport async function writeScreenshotData(dataDir, screenshotData) {\n const filePath = getDataFilePath(dataDir, screenshotData.id);\n const content = JSON.stringify(screenshotData, null, 2);\n await writeFile(filePath, content);\n}\nexport async function readScreenshotData(dataDir, screenshotId) {\n let rtn = null;\n try {\n const dataFilePath = getDataFilePath(dataDir, screenshotId);\n const dataContent = await readFile(dataFilePath);\n rtn = JSON.parse(dataContent);\n }\n catch (e) { }\n return rtn;\n}\nfunction getDataFilePath(dataDir, screenshotId) {\n const fileName = `${screenshotId}.json`;\n return path.join(dataDir, fileName);\n}\nexport function fileExists(filePath) {\n return new Promise((resolve) => {\n fs.access(filePath, (err) => resolve(!err));\n });\n}\nexport function readFile(filePath) {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, 'utf-8', (err, data) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n });\n });\n}\nexport function readFileBuffer(filePath) {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, (err, data) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n });\n });\n}\nexport function writeFile(filePath, data) {\n return new Promise((resolve, reject) => {\n fs.writeFile(filePath, data, (err) => {\n if (err) {\n reject(err);\n }\n else {\n resolve();\n }\n });\n });\n}\nexport function mkDir(filePath) {\n return new Promise((resolve) => {\n fs.mkdir(filePath, () => {\n resolve();\n });\n });\n}\nexport function rmDir(filePath) {\n return new Promise((resolve) => {\n fs.rmdir(filePath, () => {\n resolve();\n });\n });\n}\nexport async function emptyDir(dir) {\n const files = await readDir(dir);\n const promises = files.map(async (fileName) => {\n const filePath = path.join(dir, fileName);\n const isDirFile = await isFile(filePath);\n if (isDirFile) {\n await unlink(filePath);\n }\n });\n await Promise.all(promises);\n}\nexport async function readDir(dir) {\n return new Promise((resolve) => {\n fs.readdir(dir, (err, files) => {\n if (err) {\n resolve([]);\n }\n else {\n resolve(files);\n }\n });\n });\n}\nexport async function isFile(itemPath) {\n return new Promise((resolve) => {\n fs.stat(itemPath, (err, stat) => {\n if (err) {\n resolve(false);\n }\n else {\n resolve(stat.isFile());\n }\n });\n });\n}\nexport async function unlink(filePath) {\n return new Promise((resolve) => {\n fs.unlink(filePath, () => {\n resolve();\n });\n });\n}\n","import { emptyDir, fileExists, mkDir, readDir, readFile, readFileBuffer, rmDir, writeFile } from './screenshot-fs';\nimport { join } from 'path';\nimport { tmpdir } from 'os';\nexport class ScreenshotConnector {\n constructor() {\n this.screenshotDirName = 'screenshot';\n this.imagesDirName = 'images';\n this.buildsDirName = 'builds';\n this.masterBuildFileName = 'master.json';\n this.screenshotCacheFileName = 'screenshot-cache.json';\n }\n async initBuild(opts) {\n this.logger = opts.logger;\n this.buildId = opts.buildId;\n this.buildMessage = opts.buildMessage || '';\n this.buildAuthor = opts.buildAuthor;\n this.buildUrl = opts.buildUrl;\n this.previewUrl = opts.previewUrl;\n (this.buildTimestamp = typeof opts.buildTimestamp === 'number' ? opts.buildTimestamp : Date.now()),\n (this.cacheDir = opts.cacheDir);\n this.packageDir = opts.packageDir;\n this.rootDir = opts.rootDir;\n this.appNamespace = opts.appNamespace;\n this.waitBeforeScreenshot = opts.waitBeforeScreenshot;\n this.pixelmatchModulePath = opts.pixelmatchModulePath;\n if (!opts.logger) {\n throw new Error(`logger option required`);\n }\n if (typeof opts.buildId !== 'string') {\n throw new Error(`buildId option required`);\n }\n if (typeof opts.cacheDir !== 'string') {\n throw new Error(`cacheDir option required`);\n }\n if (typeof opts.packageDir !== 'string') {\n throw new Error(`packageDir option required`);\n }\n if (typeof opts.rootDir !== 'string') {\n throw new Error(`rootDir option required`);\n }\n this.updateMaster = !!opts.updateMaster;\n this.allowableMismatchedPixels = opts.allowableMismatchedPixels;\n this.allowableMismatchedRatio = opts.allowableMismatchedRatio;\n this.pixelmatchThreshold = opts.pixelmatchThreshold;\n this.logger.debug(`screenshot build: ${this.buildId}, ${this.buildMessage}, updateMaster: ${this.updateMaster}`);\n this.logger.debug(`screenshot, allowableMismatchedPixels: ${this.allowableMismatchedPixels}, allowableMismatchedRatio: ${this.allowableMismatchedRatio}, pixelmatchThreshold: ${this.pixelmatchThreshold}`);\n if (typeof opts.screenshotDirName === 'string') {\n this.screenshotDirName = opts.screenshotDirName;\n }\n if (typeof opts.imagesDirName === 'string') {\n this.imagesDirName = opts.imagesDirName;\n }\n if (typeof opts.buildsDirName === 'string') {\n this.buildsDirName = opts.buildsDirName;\n }\n this.screenshotDir = join(this.rootDir, this.screenshotDirName);\n this.imagesDir = join(this.screenshotDir, this.imagesDirName);\n this.buildsDir = join(this.screenshotDir, this.buildsDirName);\n this.masterBuildFilePath = join(this.buildsDir, this.masterBuildFileName);\n this.screenshotCacheFilePath = join(this.cacheDir, this.screenshotCacheFileName);\n this.currentBuildDir = join(tmpdir(), 'screenshot-build-' + this.buildId);\n this.logger.debug(`screenshotDirPath: ${this.screenshotDir}`);\n this.logger.debug(`imagesDirPath: ${this.imagesDir}`);\n this.logger.debug(`buildsDirPath: ${this.buildsDir}`);\n this.logger.debug(`currentBuildDir: ${this.currentBuildDir}`);\n this.logger.debug(`cacheDir: ${this.cacheDir}`);\n await mkDir(this.screenshotDir);\n await Promise.all([\n mkDir(this.imagesDir),\n mkDir(this.buildsDir),\n mkDir(this.currentBuildDir),\n mkDir(this.cacheDir),\n ]);\n }\n async pullMasterBuild() {\n /**/\n }\n async getMasterBuild() {\n let masterBuild = null;\n try {\n masterBuild = JSON.parse(await readFile(this.masterBuildFilePath));\n }\n catch (e) { }\n return masterBuild;\n }\n async completeBuild(masterBuild) {\n const filePaths = (await readDir(this.currentBuildDir))\n .map((f) => join(this.currentBuildDir, f))\n .filter((f) => f.endsWith('.json'));\n const screenshots = await Promise.all(filePaths.map(async (f) => JSON.parse(await readFile(f))));\n this.sortScreenshots(screenshots);\n if (!masterBuild) {\n masterBuild = {\n id: this.buildId,\n message: this.buildMessage,\n author: this.buildAuthor,\n url: this.buildUrl,\n previewUrl: this.previewUrl,\n appNamespace: this.appNamespace,\n timestamp: this.buildTimestamp,\n screenshots: screenshots,\n };\n }\n const results = {\n appNamespace: this.appNamespace,\n masterBuild: masterBuild,\n currentBuild: {\n id: this.buildId,\n message: this.buildMessage,\n author: this.buildAuthor,\n url: this.buildUrl,\n previewUrl: this.previewUrl,\n appNamespace: this.appNamespace,\n timestamp: this.buildTimestamp,\n screenshots: screenshots,\n },\n compare: {\n id: `${masterBuild.id}-${this.buildId}`,\n a: {\n id: masterBuild.id,\n message: masterBuild.message,\n author: masterBuild.author,\n url: masterBuild.url,\n previewUrl: masterBuild.previewUrl,\n },\n b: {\n id: this.buildId,\n message: this.buildMessage,\n author: this.buildAuthor,\n url: this.buildUrl,\n previewUrl: this.previewUrl,\n },\n url: null,\n appNamespace: this.appNamespace,\n timestamp: this.buildTimestamp,\n diffs: [],\n },\n };\n results.currentBuild.screenshots.forEach((screenshot) => {\n screenshot.diff.device = screenshot.diff.device || screenshot.diff.userAgent;\n results.compare.diffs.push(screenshot.diff);\n delete screenshot.diff;\n });\n this.sortCompares(results.compare.diffs);\n await emptyDir(this.currentBuildDir);\n await rmDir(this.currentBuildDir);\n return results;\n }\n async publishBuild(results) {\n return results;\n }\n async generateJsonpDataUris(build) {\n if (build && Array.isArray(build.screenshots)) {\n for (let i = 0; i < build.screenshots.length; i++) {\n const screenshot = build.screenshots[i];\n const jsonpFileName = `screenshot_${screenshot.image}.js`;\n const jsonFilePath = join(this.cacheDir, jsonpFileName);\n const jsonpExists = await fileExists(jsonFilePath);\n if (!jsonpExists) {\n const imageFilePath = join(this.imagesDir, screenshot.image);\n const imageBuf = await readFileBuffer(imageFilePath);\n const jsonpContent = `loadScreenshot(\"${screenshot.image}\",\"data:image/png;base64,${imageBuf.toString('base64')}\");`;\n await writeFile(jsonFilePath, jsonpContent);\n }\n }\n }\n }\n async getScreenshotCache() {\n return null;\n }\n async updateScreenshotCache(screenshotCache, buildResults) {\n screenshotCache = screenshotCache || {};\n screenshotCache.timestamp = this.buildTimestamp;\n screenshotCache.lastBuildId = this.buildId;\n screenshotCache.size = 0;\n screenshotCache.items = screenshotCache.items || [];\n if (buildResults && buildResults.compare && Array.isArray(buildResults.compare.diffs)) {\n buildResults.compare.diffs.forEach((diff) => {\n if (typeof diff.cacheKey !== 'string') {\n return;\n }\n if (diff.imageA === diff.imageB) {\n // no need to cache identical matches\n return;\n }\n const existingItem = screenshotCache.items.find((i) => i.key === diff.cacheKey);\n if (existingItem) {\n // already have this cached, but update its timestamp\n existingItem.ts = this.buildTimestamp;\n }\n else {\n // add this item to the cache\n screenshotCache.items.push({\n key: diff.cacheKey,\n ts: this.buildTimestamp,\n mp: diff.mismatchedPixels,\n });\n }\n });\n }\n // sort so the newest items are on top\n screenshotCache.items.sort((a, b) => {\n if (a.ts > b.ts)\n return -1;\n if (a.ts < b.ts)\n return 1;\n if (a.mp > b.mp)\n return -1;\n if (a.mp < b.mp)\n return 1;\n return 0;\n });\n // keep only the most recent items\n screenshotCache.items = screenshotCache.items.slice(0, 1000);\n screenshotCache.size = screenshotCache.items.length;\n return screenshotCache;\n }\n toJson(masterBuild, screenshotCache) {\n const masterScreenshots = {};\n if (masterBuild && Array.isArray(masterBuild.screenshots)) {\n masterBuild.screenshots.forEach((masterScreenshot) => {\n masterScreenshots[masterScreenshot.id] = masterScreenshot.image;\n });\n }\n const mismatchCache = {};\n if (screenshotCache && Array.isArray(screenshotCache.items)) {\n screenshotCache.items.forEach((cacheItem) => {\n mismatchCache[cacheItem.key] = cacheItem.mp;\n });\n }\n const screenshotBuild = {\n buildId: this.buildId,\n rootDir: this.rootDir,\n screenshotDir: this.screenshotDir,\n imagesDir: this.imagesDir,\n buildsDir: this.buildsDir,\n masterScreenshots: masterScreenshots,\n cache: mismatchCache,\n currentBuildDir: this.currentBuildDir,\n updateMaster: this.updateMaster,\n allowableMismatchedPixels: this.allowableMismatchedPixels,\n allowableMismatchedRatio: this.allowableMismatchedRatio,\n pixelmatchThreshold: this.pixelmatchThreshold,\n timeoutBeforeScreenshot: this.waitBeforeScreenshot,\n pixelmatchModulePath: this.pixelmatchModulePath,\n };\n return JSON.stringify(screenshotBuild);\n }\n sortScreenshots(screenshots) {\n return screenshots.sort((a, b) => {\n if (a.desc && b.desc) {\n if (a.desc.toLowerCase() < b.desc.toLowerCase())\n return -1;\n if (a.desc.toLowerCase() > b.desc.toLowerCase())\n return 1;\n }\n if (a.device && b.device) {\n if (a.device.toLowerCase() < b.device.toLowerCase())\n return -1;\n if (a.device.toLowerCase() > b.device.toLowerCase())\n return 1;\n }\n if (a.userAgent && b.userAgent) {\n if (a.userAgent.toLowerCase() < b.userAgent.toLowerCase())\n return -1;\n if (a.userAgent.toLowerCase() > b.userAgent.toLowerCase())\n return 1;\n }\n if (a.width < b.width)\n return -1;\n if (a.width > b.width)\n return 1;\n if (a.height < b.height)\n return -1;\n if (a.height > b.height)\n return 1;\n if (a.id < b.id)\n return -1;\n if (a.id > b.id)\n return 1;\n return 0;\n });\n }\n sortCompares(compares) {\n return compares.sort((a, b) => {\n if (a.allowableMismatchedPixels > b.allowableMismatchedPixels)\n return -1;\n if (a.allowableMismatchedPixels < b.allowableMismatchedPixels)\n return 1;\n if (a.allowableMismatchedRatio > b.allowableMismatchedRatio)\n return -1;\n if (a.allowableMismatchedRatio < b.allowableMismatchedRatio)\n return 1;\n if (a.desc && b.desc) {\n if (a.desc.toLowerCase() < b.desc.toLowerCase())\n return -1;\n if (a.desc.toLowerCase() > b.desc.toLowerCase())\n return 1;\n }\n if (a.device && b.device) {\n if (a.device.toLowerCase() < b.device.toLowerCase())\n return -1;\n if (a.device.toLowerCase() > b.device.toLowerCase())\n return 1;\n }\n if (a.userAgent && b.userAgent) {\n if (a.userAgent.toLowerCase() < b.userAgent.toLowerCase())\n return -1;\n if (a.userAgent.toLowerCase() > b.userAgent.toLowerCase())\n return 1;\n }\n if (a.width < b.width)\n return -1;\n if (a.width > b.width)\n return 1;\n if (a.height < b.height)\n return -1;\n if (a.height > b.height)\n return 1;\n if (a.id < b.id)\n return -1;\n if (a.id > b.id)\n return 1;\n return 0;\n });\n }\n}\n","/**\n * Convert Windows backslash paths to slash paths: foo\\\\bar ➔ foo/bar\n * Forward-slash paths can be used in Windows as long as they're not\n * extended-length paths and don't contain any non-ascii characters.\n * This was created since the path methods in Node.js outputs \\\\ paths on Windows.\n */\nexport const normalizePath = (path) => {\n if (typeof path !== 'string') {\n throw new Error(`invalid path to normalize`);\n }\n path = normalizeSlashes(path.trim());\n const components = pathComponents(path, getRootLength(path));\n const reducedComponents = reducePathComponents(components);\n const rootPart = reducedComponents[0];\n const secondPart = reducedComponents[1];\n const normalized = rootPart + reducedComponents.slice(1).join('/');\n if (normalized === '') {\n return '.';\n }\n if (rootPart === '' &&\n secondPart &&\n path.includes('/') &&\n !secondPart.startsWith('.') &&\n !secondPart.startsWith('@')) {\n return './' + normalized;\n }\n return normalized;\n};\nconst normalizeSlashes = (path) => path.replace(backslashRegExp, '/');\nconst altDirectorySeparator = '\\\\';\nconst urlSchemeSeparator = '://';\nconst backslashRegExp = /\\\\/g;\nconst reducePathComponents = (components) => {\n if (!Array.isArray(components) || components.length === 0) {\n return [];\n }\n const reduced = [components[0]];\n for (let i = 1; i < components.length; i++) {\n const component = components[i];\n if (!component)\n continue;\n if (component === '.')\n continue;\n if (component === '..') {\n if (reduced.length > 1) {\n if (reduced[reduced.length - 1] !== '..') {\n reduced.pop();\n continue;\n }\n }\n else if (reduced[0])\n continue;\n }\n reduced.push(component);\n }\n return reduced;\n};\nconst getRootLength = (path) => {\n const rootLength = getEncodedRootLength(path);\n return rootLength < 0 ? ~rootLength : rootLength;\n};\nconst getEncodedRootLength = (path) => {\n if (!path)\n return 0;\n const ch0 = path.charCodeAt(0);\n // POSIX or UNC\n if (ch0 === 47 /* slash */ || ch0 === 92 /* backslash */) {\n if (path.charCodeAt(1) !== ch0)\n return 1; // POSIX: \"/\" (or non-normalized \"\\\")\n const p1 = path.indexOf(ch0 === 47 /* slash */ ? '/' : altDirectorySeparator, 2);\n if (p1 < 0)\n return path.length; // UNC: \"//server\" or \"\\\\server\"\n return p1 + 1; // UNC: \"//server/\" or \"\\\\server\\\"\n }\n // DOS\n if (isVolumeCharacter(ch0) && path.charCodeAt(1) === 58 /* colon */) {\n const ch2 = path.charCodeAt(2);\n if (ch2 === 47 /* slash */ || ch2 === 92 /* backslash */)\n return 3; // DOS: \"c:/\" or \"c:\\\"\n if (path.length === 2)\n return 2; // DOS: \"c:\" (but not \"c:d\")\n }\n // URL\n const schemeEnd = path.indexOf(urlSchemeSeparator);\n if (schemeEnd !== -1) {\n const authorityStart = schemeEnd + urlSchemeSeparator.length;\n const authorityEnd = path.indexOf('/', authorityStart);\n if (authorityEnd !== -1) {\n // URL: \"file:///\", \"file://server/\", \"file://server/path\"\n // For local \"file\" URLs, include the leading DOS volume (if present).\n // Per https://www.ietf.org/rfc/rfc1738.txt, a host of \"\" or \"localhost\" is a\n // special case interpreted as \"the machine from which the URL is being interpreted\".\n const scheme = path.slice(0, schemeEnd);\n const authority = path.slice(authorityStart, authorityEnd);\n if (scheme === 'file' &&\n (authority === '' || authority === 'localhost') &&\n isVolumeCharacter(path.charCodeAt(authorityEnd + 1))) {\n const volumeSeparatorEnd = getFileUrlVolumeSeparatorEnd(path, authorityEnd + 2);\n if (volumeSeparatorEnd !== -1) {\n if (path.charCodeAt(volumeSeparatorEnd) === 47 /* slash */) {\n // URL: \"file:///c:/\", \"file://localhost/c:/\", \"file:///c%3a/\", \"file://localhost/c%3a/\"\n return ~(volumeSeparatorEnd + 1);\n }\n if (volumeSeparatorEnd === path.length) {\n // URL: \"file:///c:\", \"file://localhost/c:\", \"file:///c$3a\", \"file://localhost/c%3a\"\n // but not \"file:///c:d\" or \"file:///c%3ad\"\n return ~volumeSeparatorEnd;\n }\n }\n }\n return ~(authorityEnd + 1); // URL: \"file://server/\", \"http://server/\"\n }\n return ~path.length; // URL: \"file://server\", \"http://server\"\n }\n // relative\n return 0;\n};\nconst isVolumeCharacter = (charCode) => (charCode >= 97 /* a */ && charCode <= 122 /* z */) ||\n (charCode >= 65 /* A */ && charCode <= 90 /* Z */);\nconst getFileUrlVolumeSeparatorEnd = (url, start) => {\n const ch0 = url.charCodeAt(start);\n if (ch0 === 58 /* colon */)\n return start + 1;\n if (ch0 === 37 /* percent */ && url.charCodeAt(start + 1) === 51 /* _3 */) {\n const ch2 = url.charCodeAt(start + 2);\n if (ch2 === 97 /* a */ || ch2 === 65 /* A */)\n return start + 3;\n }\n return -1;\n};\nconst pathComponents = (path, rootLength) => {\n const root = path.substring(0, rootLength);\n const rest = path.substring(rootLength).split('/');\n const restLen = rest.length;\n if (restLen > 0 && !rest[restLen - 1]) {\n rest.pop();\n }\n return [root, ...rest];\n};\n/**\n * Same as normalizePath(), expect it'll also strip any querystrings\n * from the path name. So /dir/file.css?tag=cmp-a becomes /dir/file.css\n */\nexport const normalizeFsPath = (p) => normalizePath(p.split('?')[0].replace(/\\0/g, ''));\nexport const normalizeFsPathQuery = (importPath) => {\n const pathParts = importPath.split('?');\n const filePath = normalizePath(pathParts[0]);\n const ext = filePath.split('.').pop().toLowerCase();\n const params = pathParts.length > 1 ? new URLSearchParams(pathParts[1]) : null;\n const format = params ? params.get('format') : null;\n return {\n filePath,\n ext,\n params,\n format,\n };\n};\n","import { fileExists, readFile, writeFile } from './screenshot-fs';\nimport { join, relative } from 'path';\nimport { normalizePath } from '@utils';\nimport { ScreenshotConnector } from './connector-base';\nexport class ScreenshotLocalConnector extends ScreenshotConnector {\n async publishBuild(results) {\n if (this.updateMaster || !results.masterBuild) {\n results.masterBuild = {\n id: 'master',\n message: 'Master',\n appNamespace: this.appNamespace,\n timestamp: Date.now(),\n screenshots: [],\n };\n }\n results.currentBuild.screenshots.forEach((currentScreenshot) => {\n const masterHasScreenshot = results.masterBuild.screenshots.some((masterScreenshot) => {\n return currentScreenshot.id === masterScreenshot.id;\n });\n if (!masterHasScreenshot) {\n results.masterBuild.screenshots.push(Object.assign({}, currentScreenshot));\n }\n });\n this.sortScreenshots(results.masterBuild.screenshots);\n await writeFile(this.masterBuildFilePath, JSON.stringify(results.masterBuild, null, 2));\n await this.generateJsonpDataUris(results.currentBuild);\n const compareAppSourceDir = join(this.packageDir, 'screenshot', 'compare');\n const appSrcUrl = normalizePath(relative(this.screenshotDir, compareAppSourceDir));\n const imagesUrl = normalizePath(relative(this.screenshotDir, this.imagesDir));\n const jsonpUrl = normalizePath(relative(this.screenshotDir, this.cacheDir));\n const compareAppHtml = createLocalCompareApp(this.appNamespace, appSrcUrl, imagesUrl, jsonpUrl, results.masterBuild, results.currentBuild);\n const compareAppFileName = 'compare.html';\n const compareAppFilePath = join(this.screenshotDir, compareAppFileName);\n await writeFile(compareAppFilePath, compareAppHtml);\n const gitIgnorePath = join(this.screenshotDir, '.gitignore');\n const gitIgnoreExists = await fileExists(gitIgnorePath);\n if (!gitIgnoreExists) {\n const content = [this.imagesDirName, this.buildsDirName, compareAppFileName];\n await writeFile(gitIgnorePath, content.join('\\n'));\n }\n const url = new URL(`file://${compareAppFilePath}`);\n results.compare.url = url.href;\n return results;\n }\n async getScreenshotCache() {\n let screenshotCache = null;\n try {\n screenshotCache = JSON.parse(await readFile(this.screenshotCacheFilePath));\n }\n catch (e) { }\n return screenshotCache;\n }\n async updateScreenshotCache(cache, buildResults) {\n cache = await super.updateScreenshotCache(cache, buildResults);\n await writeFile(this.screenshotCacheFilePath, JSON.stringify(cache, null, 2));\n return cache;\n }\n}\nfunction createLocalCompareApp(namespace, appSrcUrl, imagesUrl, jsonpUrl, a, b) {\n return `<!doctype html>\n<html dir=\"ltr\" lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <title>Local ${namespace || ''} - Stencil Screenshot Visual Diff</title>\n <meta name=\"viewport\" content=\"viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n <meta http-equiv=\"x-ua-compatible\" content=\"IE=Edge\">\n <link href=\"${appSrcUrl}/build/app.css\" rel=\"stylesheet\">\n <script type=\"module\" src=\"${appSrcUrl}/build/app.esm.js\"></script>\n <script nomodule src=\"${appSrcUrl}/build/app.js\"></script> \n <link rel=\"icon\" type=\"image/x-icon\" href=\"${appSrcUrl}/assets/favicon.ico\">\n</head>\n<body>\n <script>\n (function() {\n var app = document.createElement('screenshot-compare');\n app.appSrcUrl = '${appSrcUrl}';\n app.imagesUrl = '${imagesUrl}/';\n app.jsonpUrl = '${jsonpUrl}/';\n app.a = ${JSON.stringify(a)};\n app.b = ${JSON.stringify(b)};\n document.body.appendChild(app);\n })();\n </script>\n</body>\n</html>`;\n}\n"],"names":["fs","path","join","tmpdir","relative"],"mappings":";;;;;;;;;;;AA2BO,SAAS,UAAU,CAAC,QAAQ,EAAE;AACrC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQA,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,QAAQ,CAAC,QAAQ,EAAE;AACnC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQA,sBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AACtD,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,cAAc,CAAC,QAAQ,EAAE;AACzC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQA,sBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;AAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQA,sBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK;AAC9C,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,KAAK,CAAC,QAAQ,EAAE;AAChC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQA,sBAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM;AACjC,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,KAAK,CAAC,QAAQ,EAAE;AAChC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQA,sBAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM;AACjC,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,eAAe,QAAQ,CAAC,GAAG,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAK;AACnD,QAAQ,MAAM,QAAQ,GAAGC,wBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAQ,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjD,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AACM,eAAe,OAAO,CAAC,GAAG,EAAE;AACnC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQD,sBAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACxC,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,eAAe,MAAM,CAAC,QAAQ,EAAE;AACvC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQA,sBAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AACzC,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC;AACM,eAAe,MAAM,CAAC,QAAQ,EAAE;AACvC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,QAAQA,sBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM;AAClC,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP;;ACxHO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;AAC9C,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AACtC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;AACjD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;AAC/D,KAAK;AACL,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;AACzG,aAAa,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC/C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACjD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC9C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACxE,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACtE,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC5D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzH,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,uCAAuC,EAAE,IAAI,CAAC,yBAAyB,CAAC,4BAA4B,EAAE,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACpN,QAAQ,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,EAAE;AACxD,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACpD,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACpD,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,GAAGE,SAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,SAAS,GAAGA,SAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,SAAS,GAAGA,SAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,mBAAmB,GAAGA,SAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,uBAAuB,GAAGA,SAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,eAAe,GAAGA,SAAI,CAACC,SAAM,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC;AAC1B,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,YAAY,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;AACvC,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,eAAe,GAAG;AAC5B;AACA,KAAK;AACL,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI;AACZ,YAAY,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,aAAa,CAAC,WAAW,EAAE;AACrC,QAAQ,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAC9D,aAAa,GAAG,CAAC,CAAC,CAAC,KAAKD,SAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACtD,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,QAAQ,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,WAAW,GAAG;AAC1B,gBAAgB,EAAE,EAAE,IAAI,CAAC,OAAO;AAChC,gBAAgB,OAAO,EAAE,IAAI,CAAC,YAAY;AAC1C,gBAAgB,MAAM,EAAE,IAAI,CAAC,WAAW;AACxC,gBAAgB,GAAG,EAAE,IAAI,CAAC,QAAQ;AAClC,gBAAgB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3C,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,gBAAgB,SAAS,EAAE,IAAI,CAAC,cAAc;AAC9C,gBAAgB,WAAW,EAAE,WAAW;AACxC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;AAC3C,YAAY,WAAW,EAAE,WAAW;AACpC,YAAY,YAAY,EAAE;AAC1B,gBAAgB,EAAE,EAAE,IAAI,CAAC,OAAO;AAChC,gBAAgB,OAAO,EAAE,IAAI,CAAC,YAAY;AAC1C,gBAAgB,MAAM,EAAE,IAAI,CAAC,WAAW;AACxC,gBAAgB,GAAG,EAAE,IAAI,CAAC,QAAQ;AAClC,gBAAgB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3C,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,gBAAgB,SAAS,EAAE,IAAI,CAAC,cAAc;AAC9C,gBAAgB,WAAW,EAAE,WAAW;AACxC,aAAa;AACb,YAAY,OAAO,EAAE;AACrB,gBAAgB,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,gBAAgB,CAAC,EAAE;AACnB,oBAAoB,EAAE,EAAE,WAAW,CAAC,EAAE;AACtC,oBAAoB,OAAO,EAAE,WAAW,CAAC,OAAO;AAChD,oBAAoB,MAAM,EAAE,WAAW,CAAC,MAAM;AAC9C,oBAAoB,GAAG,EAAE,WAAW,CAAC,GAAG;AACxC,oBAAoB,UAAU,EAAE,WAAW,CAAC,UAAU;AACtD,iBAAiB;AACjB,gBAAgB,CAAC,EAAE;AACnB,oBAAoB,EAAE,EAAE,IAAI,CAAC,OAAO;AACpC,oBAAoB,OAAO,EAAE,IAAI,CAAC,YAAY;AAC9C,oBAAoB,MAAM,EAAE,IAAI,CAAC,WAAW;AAC5C,oBAAoB,GAAG,EAAE,IAAI,CAAC,QAAQ;AACtC,oBAAoB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC/C,iBAAiB;AACjB,gBAAgB,GAAG,EAAE,IAAI;AACzB,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,gBAAgB,SAAS,EAAE,IAAI,CAAC,cAAc;AAC9C,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACjE,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACzF,YAAY,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxD,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7C,QAAQ,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,qBAAqB,CAAC,KAAK,EAAE;AACvC,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACvD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/D,gBAAgB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxD,gBAAgB,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1E,gBAAgB,MAAM,YAAY,GAAGA,SAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxE,gBAAgB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;AACnE,gBAAgB,IAAI,CAAC,WAAW,EAAE;AAClC,oBAAoB,MAAM,aAAa,GAAGA,SAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACjF,oBAAoB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;AACzE,oBAAoB,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACzI,oBAAoB,MAAM,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAChE,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE;AAC/D,QAAQ,eAAe,GAAG,eAAe,IAAI,EAAE,CAAC;AAChD,QAAQ,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,QAAQ,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACnD,QAAQ,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;AACjC,QAAQ,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5D,QAAQ,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/F,YAAY,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACzD,gBAAgB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACvD,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACjD;AACA,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChG,gBAAgB,IAAI,YAAY,EAAE;AAClC;AACA,oBAAoB,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1D,iBAAiB;AACjB,qBAAqB;AACrB;AACA,oBAAoB,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/C,wBAAwB,GAAG,EAAE,IAAI,CAAC,QAAQ;AAC1C,wBAAwB,EAAE,EAAE,IAAI,CAAC,cAAc;AAC/C,wBAAwB,EAAE,EAAE,IAAI,CAAC,gBAAgB;AACjD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT;AACA,QAAQ,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC7C,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,QAAQ,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5D,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE;AACzC,QAAQ,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACrC,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;AACnE,YAAY,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB,KAAK;AAClE,gBAAgB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAChF,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,EAAE,CAAC;AACjC,QAAQ,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACrE,YAAY,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACzD,gBAAgB,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AAC5D,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,MAAM,eAAe,GAAG;AAChC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;AACjC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;AACjC,YAAY,aAAa,EAAE,IAAI,CAAC,aAAa;AAC7C,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;AACrC,YAAY,iBAAiB,EAAE,iBAAiB;AAChD,YAAY,KAAK,EAAE,aAAa;AAChC,YAAY,eAAe,EAAE,IAAI,CAAC,eAAe;AACjD,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;AAC3C,YAAY,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;AACrE,YAAY,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;AACnE,YAAY,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AACzD,YAAY,uBAAuB,EAAE,IAAI,CAAC,oBAAoB;AAC9D,YAAY,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;AAC3D,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,eAAe,CAAC,WAAW,EAAE;AACjC,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1C,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAClC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/D,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/D,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;AACtC,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;AACnE,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;AACnE,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE;AAC5C,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;AACzE,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;AACzE,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjC,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjC,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACnC,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACnC,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACvC,YAAY,IAAI,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC,yBAAyB;AACzE,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC,yBAAyB;AACzE,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,wBAAwB;AACvE,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,wBAAwB;AACvE,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAClC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/D,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/D,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;AACtC,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;AACnE,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;AACnE,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE;AAC5C,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;AACzE,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;AACzE,oBAAoB,OAAO,CAAC,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjC,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACjC,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACnC,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACnC,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,OAAO,CAAC,CAAC;AACzB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;ACtUA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAa,GAAG,CAAC,IAAI,KAAK;AACvC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,IAAI,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,IAAI,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC/D,IAAI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,IAAI,IAAI,UAAU,KAAK,EAAE,EAAE;AAC3B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,EAAE;AACvB,QAAQ,UAAU;AAClB,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1B,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;AACnC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,QAAQ,OAAO,IAAI,GAAG,UAAU,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACtE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,oBAAoB,GAAG,CAAC,UAAU,KAAK;AAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY,SAAS;AACrB,QAAQ,IAAI,SAAS,KAAK,GAAG;AAC7B,YAAY,SAAS;AACrB,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;AAChC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AAC1D,oBAAoB,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,oBAAoB,SAAS;AAC7B,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,OAAO,CAAC,CAAC,CAAC;AAC/B,gBAAgB,SAAS;AACzB,SAAS;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,IAAI,KAAK;AAChC,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,OAAO,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AACrD,CAAC,CAAC;AACF,MAAM,oBAAoB,GAAG,CAAC,IAAI,KAAK;AACvC,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ,OAAO,CAAC,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,kBAAkB;AAC9D,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG;AACtC,YAAY,OAAO,CAAC,CAAC;AACrB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,eAAe,GAAG,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;AACzF,QAAQ,IAAI,EAAE,GAAG,CAAC;AAClB,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC;AAC/B,QAAQ,OAAO,EAAE,GAAG,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc;AACzE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE;AAChD,YAAY,OAAO,CAAC,CAAC;AACrB,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC7B,YAAY,OAAO,CAAC,CAAC;AACrB,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACvD,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAC1B,QAAQ,MAAM,cAAc,GAAG,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACrE,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AAC/D,QAAQ,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACjC;AACA;AACA;AACA;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACpD,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACvE,YAAY,IAAI,MAAM,KAAK,MAAM;AACjC,iBAAiB,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,WAAW,CAAC;AAC/D,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAgB,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AAChG,gBAAgB,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AAC/C,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,EAAE,cAAc;AAChF;AACA,wBAAwB,OAAO,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC;AACzD,qBAAqB;AACrB,oBAAoB,IAAI,kBAAkB,KAAK,IAAI,CAAC,MAAM,EAAE;AAC5D;AACA;AACA,wBAAwB,OAAO,CAAC,kBAAkB,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,KAAK,CAAC,QAAQ,IAAI,EAAE,YAAY,QAAQ,IAAI,GAAG;AAClF,KAAK,QAAQ,IAAI,EAAE,YAAY,QAAQ,IAAI,EAAE,SAAS,CAAC;AACvD,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACrD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,GAAG,KAAK,EAAE;AAClB,QAAQ,OAAO,KAAK,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,GAAG,KAAK,EAAE,kBAAkB,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW;AAC/E,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE;AAC5C,YAAY,OAAO,KAAK,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,CAAC,CAAC;AACF,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK;AAC7C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC3B,CAAC;;ACtIM,MAAM,wBAAwB,SAAS,mBAAmB,CAAC;AAClE,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACvD,YAAY,OAAO,CAAC,WAAW,GAAG;AAClC,gBAAgB,EAAE,EAAE,QAAQ;AAC5B,gBAAgB,OAAO,EAAE,QAAQ;AACjC,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/C,gBAAgB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrC,gBAAgB,WAAW,EAAE,EAAE;AAC/B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,iBAAiB,KAAK;AACxE,YAAY,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAK;AACnG,gBAAgB,OAAO,iBAAiB,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC;AACpE,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,gBAAgB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC3F,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC9D,QAAQ,MAAM,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChG,QAAQ,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/D,QAAQ,MAAM,mBAAmB,GAAGA,SAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACnF,QAAQ,MAAM,SAAS,GAAG,aAAa,CAACE,aAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC3F,QAAQ,MAAM,SAAS,GAAG,aAAa,CAACA,aAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACtF,QAAQ,MAAM,QAAQ,GAAG,aAAa,CAACA,aAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpF,QAAQ,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACnJ,QAAQ,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAClD,QAAQ,MAAM,kBAAkB,GAAGF,SAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAChF,QAAQ,MAAM,SAAS,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;AAC5D,QAAQ,MAAM,aAAa,GAAGA,SAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACrE,QAAQ,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACzF,YAAY,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;AACvC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,IAAI,eAAe,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI;AACZ,YAAY,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvF,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE;AACrD,QAAQ,KAAK,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACvE,QAAQ,MAAM,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC;AACD,SAAS,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;AAChF,IAAI,OAAO,CAAC;AACZ;AACA;AACA;AACA,eAAe,EAAE,SAAS,IAAI,EAAE,CAAC;AACjC;AACA;AACA,cAAc,EAAE,SAAS,CAAC;AAC1B,6BAA6B,EAAE,SAAS,CAAC;AACzC,wBAAwB,EAAE,SAAS,CAAC;AACpC,6CAA6C,EAAE,SAAS,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE,SAAS,CAAC;AACnC,uBAAuB,EAAE,SAAS,CAAC;AACnC,sBAAsB,EAAE,QAAQ,CAAC;AACjC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA,OAAO,CAAC,CAAC;AACT;;;;;"}