{"version":3,"sources":["../../../src/build/collect-build-traces.ts"],"sourcesContent":["// Import cpu-profile to start profiling early if enabled\nimport '../server/lib/cpu-profile'\nimport { Span } from '../trace'\nimport type { NextConfigComplete } from '../server/config-shared'\n\nimport {\n  TRACE_IGNORES,\n  type BuildTraceContext,\n  getFilesMapFromReasons,\n} from './webpack/plugins/next-trace-entrypoints-plugin'\n\nimport path from 'path'\nimport { resolveCacheHandlerPathToFilesystem } from '../lib/format-dynamic-import-path'\nimport fs from 'fs/promises'\nimport { nonNullable } from '../lib/non-nullable'\nimport * as ciEnvironment from '../server/ci-info'\nimport debugOriginal from 'next/dist/compiled/debug'\nimport picomatch from 'next/dist/compiled/picomatch'\nimport { defaultOverrides } from '../server/require-hook'\nimport { nodeFileTrace } from 'next/dist/compiled/@vercel/nft'\nimport { normalizePagePath } from '../shared/lib/page-path/normalize-page-path'\nimport { normalizeAppPath } from '../shared/lib/router/utils/app-paths'\nimport isError from '../lib/is-error'\nimport type { NodeFileTraceReasons } from '@vercel/nft'\nimport type { RoutesUsingEdgeRuntime } from './utils'\n\nconst debug = debugOriginal('next:build:build-traces')\n\nexport const makeIgnoreFn = (root: string, ignores: string[]) => {\n  // pre compile the ignore globs\n  const isMatch = picomatch(ignores, {\n    contains: true,\n    dot: true,\n  })\n\n  return (pathname: string) => {\n    if (path.isAbsolute(pathname) && !pathname.startsWith(root)) {\n      return true\n    }\n\n    return isMatch(pathname)\n  }\n}\n\nfunction shouldIgnore(\n  file: string,\n  serverIgnoreFn: (file: string) => boolean,\n  reasons: NodeFileTraceReasons,\n  cachedIgnoreFiles: Map<string, boolean>,\n  children: Set<string> = new Set()\n) {\n  if (cachedIgnoreFiles.has(file)) {\n    return cachedIgnoreFiles.get(file)\n  }\n\n  if (serverIgnoreFn(file)) {\n    cachedIgnoreFiles.set(file, true)\n    return true\n  }\n  children.add(file)\n\n  const reason = reasons.get(file)\n  if (!reason || reason.parents.size === 0 || reason.type.includes('initial')) {\n    cachedIgnoreFiles.set(file, false)\n    return false\n  }\n\n  // if all parents are ignored the child file\n  // should be ignored as well\n  let allParentsIgnored = true\n\n  for (const parent of reason.parents.values()) {\n    if (!children.has(parent)) {\n      children.add(parent)\n      if (\n        !shouldIgnore(\n          parent,\n          serverIgnoreFn,\n          reasons,\n          cachedIgnoreFiles,\n          children\n        )\n      ) {\n        allParentsIgnored = false\n        break\n      }\n    }\n  }\n\n  cachedIgnoreFiles.set(file, allParentsIgnored)\n  return allParentsIgnored\n}\n\nexport async function collectBuildTraces({\n  dir,\n  config,\n  distDir,\n  edgeRuntimeRoutes,\n  staticPages,\n  nextBuildSpan = new Span({ name: 'build' }),\n  buildTraceContext,\n  outputFileTracingRoot,\n}: {\n  dir: string\n  distDir: string\n  staticPages: string[]\n  outputFileTracingRoot: string\n  // pageInfos is serialized when this function runs in a worker.\n  edgeRuntimeRoutes: RoutesUsingEdgeRuntime\n  nextBuildSpan?: Span\n  config: NextConfigComplete\n  buildTraceContext?: BuildTraceContext\n}) {\n  const startTime = Date.now()\n  debug('starting build traces')\n\n  const { outputFileTracingIncludes = {}, outputFileTracingExcludes = {} } =\n    config\n  const excludeGlobKeys = Object.keys(outputFileTracingExcludes)\n  const includeGlobKeys = Object.keys(outputFileTracingIncludes)\n\n  await nextBuildSpan\n    .traceChild('node-file-trace-build', {\n      isTurbotrace: 'false', // TODO(arlyon): remove this\n    })\n    .traceAsyncFn(async () => {\n      const nextServerTraceOutput = path.join(\n        distDir,\n        'next-server.js.nft.json'\n      )\n      const nextMinimalTraceOutput = path.join(\n        distDir,\n        'next-minimal-server.js.nft.json'\n      )\n      const root = outputFileTracingRoot\n\n      // Under standalone mode, we need to trace the extra IPC server and\n      // worker files.\n      const isStandalone = config.output === 'standalone'\n      const sharedEntriesSet = Object.keys(defaultOverrides).map((value) =>\n        require.resolve(value, {\n          paths: [require.resolve('next/dist/server/require-hook')],\n        })\n      )\n\n      const { cacheHandler, cacheHandlers } = config\n\n      // ensure we trace any dependencies needed for custom\n      // incremental cache handler\n      if (cacheHandler) {\n        const resolvedPath = resolveCacheHandlerPathToFilesystem(cacheHandler)\n        sharedEntriesSet.push(\n          require.resolve(\n            path.isAbsolute(resolvedPath)\n              ? resolvedPath\n              : path.join(dir, resolvedPath)\n          )\n        )\n      }\n\n      // Under standalone mode, we need to ensure that the cache entry debug\n      // handler is traced so it can be copied. This is only used for testing,\n      // and is not used in production.\n      if (\n        process.env.__NEXT_TEST_MODE &&\n        process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n      ) {\n        sharedEntriesSet.push(\n          require.resolve(\n            path.isAbsolute(process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS)\n              ? process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n              : path.join(\n                  dir,\n                  process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n                )\n          )\n        )\n      }\n\n      if (cacheHandlers) {\n        for (const handlerPath of Object.values(cacheHandlers)) {\n          if (handlerPath) {\n            const resolvedPath =\n              resolveCacheHandlerPathToFilesystem(handlerPath)\n            sharedEntriesSet.push(\n              require.resolve(\n                path.isAbsolute(resolvedPath)\n                  ? resolvedPath\n                  : path.join(dir, resolvedPath)\n              )\n            )\n          }\n        }\n      }\n\n      const serverEntries = [\n        ...sharedEntriesSet,\n        ...(isStandalone\n          ? [\n              require.resolve('next/dist/server/lib/start-server'),\n              require.resolve('next/dist/server/next'),\n              require.resolve('next/dist/server/require-hook'),\n            ]\n          : []),\n        require.resolve('next/dist/server/next-server'),\n      ].filter(Boolean) as string[]\n\n      const minimalServerEntries = [\n        ...sharedEntriesSet,\n        require.resolve('next/dist/compiled/next-server/server.runtime.prod'),\n      ].filter(Boolean)\n\n      const additionalIgnores = new Set<string>()\n\n      for (const glob of excludeGlobKeys) {\n        if (picomatch(glob)('next-server')) {\n          outputFileTracingExcludes[glob].forEach((exclude) => {\n            additionalIgnores.add(exclude)\n          })\n        }\n      }\n\n      const sharedIgnores = [\n        '**/next/dist/compiled/next-server/**/*.dev.js',\n        ...(isStandalone ? [] : ['**/next/dist/compiled/jest-worker/**/*']),\n        '**/next/dist/compiled/webpack/*',\n        '**/node_modules/webpack5/**/*',\n        '**/next/dist/server/lib/route-resolver*',\n        // The testmode interceptors bundle reads its HTTP parser WASM with a\n        // dynamic path, making nft trace the bundle's whole directory. Test\n        // proxying is not supported in standalone output, so keep the parser\n        // asset (and the license file picked up by the directory glob) out of\n        // production traces.\n        '**/next/dist/compiled/@mswjs/interceptors/ClientRequest/LICENSE',\n        '**/next/dist/compiled/@mswjs/interceptors/ClientRequest/llhttp/**/*',\n        'next/dist/compiled/semver/semver/**/*.js',\n\n        ...(ciEnvironment.hasNextSupport\n          ? [\n              // only ignore image-optimizer code when\n              // this is being handled outside of next-server\n              '**/next/dist/server/image-optimizer.js',\n            ]\n          : []),\n\n        ...(isStandalone ? [] : TRACE_IGNORES),\n        ...additionalIgnores,\n      ]\n\n      const sharedIgnoresFn = makeIgnoreFn(root, sharedIgnores)\n\n      const serverIgnores = [\n        ...sharedIgnores,\n        '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js',\n        '**/*.d.ts',\n        '**/*.map',\n        '**/next/dist/pages/**/*',\n        ...(ciEnvironment.hasNextSupport\n          ? ['**/node_modules/sharp/**/*', '**/@img/sharp-libvips*/**/*']\n          : []),\n      ].filter(nonNullable)\n      const serverIgnoreFn = makeIgnoreFn(root, serverIgnores)\n\n      const minimalServerIgnores = [\n        ...serverIgnores,\n        '**/next/dist/compiled/edge-runtime/**/*',\n        '**/next/dist/server/web/sandbox/**/*',\n        '**/next/dist/server/post-process.js',\n      ]\n      const minimalServerIgnoreFn = makeIgnoreFn(root, minimalServerIgnores)\n\n      const routesIgnores = [\n        ...sharedIgnores,\n        // server chunks are provided via next-trace-entrypoints-plugin plugin\n        // as otherwise all chunks are traced here and included for all pages\n        // whether they are needed or not\n        '**/.next/server/chunks/**',\n        '**/next/dist/server/post-process.js',\n      ].filter(nonNullable)\n\n      const routeIgnoreFn = makeIgnoreFn(root, routesIgnores)\n\n      const serverTracedFiles = new Set<string>()\n      const minimalServerTracedFiles = new Set<string>()\n\n      function addToTracedFiles(base: string, file: string, dest: Set<string>) {\n        dest.add(\n          path.relative(distDir, path.join(base, file)).replace(/\\\\/g, '/')\n        )\n      }\n\n      if (isStandalone) {\n        addToTracedFiles(\n          '',\n          require.resolve('next/dist/compiled/jest-worker/processChild'),\n          serverTracedFiles\n        )\n        addToTracedFiles(\n          '',\n          require.resolve('next/dist/compiled/jest-worker/threadChild'),\n          serverTracedFiles\n        )\n      }\n\n      {\n        const chunksToTrace: string[] = [\n          ...(buildTraceContext?.chunksTrace?.action.input || []),\n          ...serverEntries,\n          ...minimalServerEntries,\n        ]\n        const result = await nodeFileTrace(chunksToTrace, {\n          base: outputFileTracingRoot,\n          processCwd: dir,\n          mixedModules: true,\n          moduleSyncCatchall: true,\n          async readFile(p) {\n            try {\n              return await fs.readFile(p, 'utf8')\n            } catch (e) {\n              if (isError(e) && (e.code === 'ENOENT' || e.code === 'EISDIR')) {\n                // since tracing runs in parallel with static generation server\n                // files might be removed from that step so tolerate ENOENT\n                // errors gracefully\n                return ''\n              }\n              throw e\n            }\n          },\n          async readlink(p) {\n            try {\n              return await fs.readlink(p)\n            } catch (e) {\n              if (\n                isError(e) &&\n                (e.code === 'EINVAL' ||\n                  e.code === 'ENOENT' ||\n                  e.code === 'UNKNOWN')\n              ) {\n                return null\n              }\n              throw e\n            }\n          },\n          async stat(p) {\n            try {\n              return await fs.stat(p)\n            } catch (e) {\n              if (isError(e) && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) {\n                return null\n              }\n              throw e\n            }\n          },\n          // handle shared ignores at top-level as it\n          // avoids over-tracing when we don't need to\n          // and speeds up total trace time\n          ignore(p) {\n            if (sharedIgnoresFn(p)) {\n              return true\n            }\n\n            // if a chunk is attempting to be traced that isn't\n            // in our initial list we need to ignore it to prevent\n            // over tracing as webpack needs to be the source of\n            // truth for which chunks should be included for each entry\n            if (\n              p.includes('.next/server/chunks') &&\n              !chunksToTrace.includes(path.join(outputFileTracingRoot, p))\n            ) {\n              return true\n            }\n            return false\n          },\n        })\n        const reasons = result.reasons\n        const fileList = result.fileList\n        for (const file of result.esmFileList) {\n          fileList.add(file)\n        }\n\n        const parentFilesMap = getFilesMapFromReasons(fileList, reasons)\n        const cachedLookupIgnore = new Map<string, boolean>()\n        const cachedLookupIgnoreMinimal = new Map<string, boolean>()\n\n        for (const [entries, tracedFiles] of [\n          [serverEntries, serverTracedFiles],\n          [minimalServerEntries, minimalServerTracedFiles],\n        ] as Array<[string[], Set<string>]>) {\n          for (const file of entries) {\n            const curFiles = [\n              ...(parentFilesMap\n                .get(path.relative(outputFileTracingRoot, file))\n                ?.keys() || []),\n            ]\n            tracedFiles.add(path.relative(distDir, file).replace(/\\\\/g, '/'))\n\n            for (const curFile of curFiles || []) {\n              const filePath = path.join(outputFileTracingRoot, curFile)\n\n              if (\n                !shouldIgnore(\n                  curFile,\n                  tracedFiles === minimalServerTracedFiles\n                    ? minimalServerIgnoreFn\n                    : serverIgnoreFn,\n                  reasons,\n                  tracedFiles === minimalServerTracedFiles\n                    ? cachedLookupIgnoreMinimal\n                    : cachedLookupIgnore\n                )\n              ) {\n                tracedFiles.add(\n                  path.relative(distDir, filePath).replace(/\\\\/g, '/')\n                )\n              }\n            }\n          }\n        }\n\n        const { entryNameFilesMap } = buildTraceContext?.chunksTrace || {}\n\n        const cachedLookupIgnoreRoutes = new Map<string, boolean>()\n\n        await Promise.all(\n          [\n            ...(entryNameFilesMap\n              ? Object.entries(entryNameFilesMap)\n              : new Map()),\n          ].map(async ([entryName, entryNameFiles]) => {\n            const isApp = entryName.startsWith('app/')\n            const isPages = entryName.startsWith('pages/')\n            let route = entryName\n            if (isApp) {\n              route = normalizeAppPath(route.substring('app'.length))\n            }\n            if (isPages) {\n              route = normalizePagePath(route.substring('pages'.length))\n            }\n\n            // we don't need to trace for automatically statically optimized\n            // pages as they don't have server bundles, note there is\n            // the caveat with flying shuttle mode as it needs this for\n            // detecting changed entries\n            if (staticPages.includes(route)) {\n              return\n            }\n            const entryOutputPath = path.join(\n              distDir,\n              'server',\n              `${entryName}.js`\n            )\n            const traceOutputPath = `${entryOutputPath}.nft.json`\n            const existingTrace = JSON.parse(\n              await fs.readFile(traceOutputPath, 'utf8')\n            ) as {\n              version: number\n              files: string[]\n              fileHashes: Record<string, string>\n            }\n            const traceOutputDir = path.dirname(traceOutputPath)\n            const curTracedFiles = new Set<string>()\n\n            for (const file of [...entryNameFiles, entryOutputPath]) {\n              const curFiles = [\n                ...(parentFilesMap\n                  .get(path.relative(outputFileTracingRoot, file))\n                  ?.keys() || []),\n              ]\n              for (const curFile of curFiles || []) {\n                if (\n                  !shouldIgnore(\n                    curFile,\n                    routeIgnoreFn,\n                    reasons,\n                    cachedLookupIgnoreRoutes\n                  )\n                ) {\n                  const filePath = path.join(outputFileTracingRoot, curFile)\n                  const outputFile = path\n                    .relative(traceOutputDir, filePath)\n                    .replace(/\\\\/g, '/')\n                  curTracedFiles.add(outputFile)\n                }\n              }\n            }\n\n            for (const file of existingTrace.files || []) {\n              curTracedFiles.add(file)\n            }\n\n            await fs.writeFile(\n              traceOutputPath,\n              JSON.stringify({\n                ...existingTrace,\n                files: [...curTracedFiles].sort(),\n              })\n            )\n          })\n        )\n      }\n\n      const moduleTypes = ['app-page', 'pages']\n\n      for (const type of moduleTypes) {\n        const modulePath = require.resolve(\n          `next/dist/server/route-modules/${type}/module.compiled`\n        )\n        const relativeModulePath = path.relative(root, modulePath)\n\n        const contextDir = path.join(\n          path.dirname(modulePath),\n          'vendored',\n          'contexts'\n        )\n\n        for (const item of await fs.readdir(contextDir)) {\n          const itemPath = path.relative(root, path.join(contextDir, item))\n          if (!serverIgnoreFn(itemPath)) {\n            addToTracedFiles(root, itemPath, serverTracedFiles)\n            addToTracedFiles(root, itemPath, minimalServerTracedFiles)\n          }\n        }\n        addToTracedFiles(root, relativeModulePath, serverTracedFiles)\n        addToTracedFiles(root, relativeModulePath, minimalServerTracedFiles)\n      }\n\n      const serverTracedFilesSorted = Array.from(serverTracedFiles)\n      serverTracedFilesSorted.sort()\n      const minimalServerTracedFilesSorted = Array.from(\n        minimalServerTracedFiles\n      )\n      minimalServerTracedFilesSorted.sort()\n\n      await Promise.all([\n        fs.writeFile(\n          nextServerTraceOutput,\n          JSON.stringify({\n            version: 1,\n            files: serverTracedFilesSorted,\n          } as {\n            version: number\n            files: string[]\n          })\n        ),\n        fs.writeFile(\n          nextMinimalTraceOutput,\n          JSON.stringify({\n            version: 1,\n            files: minimalServerTracedFilesSorted,\n          } as {\n            version: number\n            files: string[]\n          })\n        ),\n      ])\n    })\n\n  // apply outputFileTracingIncludes/outputFileTracingExcludes after runTurbotrace\n  const includeExcludeSpan = nextBuildSpan.traceChild('apply-include-excludes')\n  await includeExcludeSpan.traceAsyncFn(async () => {\n    const globOrig =\n      require('next/dist/compiled/glob') as typeof import('next/dist/compiled/glob')\n    const glob = (pattern: string): Promise<string[]> => {\n      return new Promise((resolve, reject) => {\n        globOrig(\n          pattern,\n          { cwd: dir, nodir: true, dot: true },\n          (err, files) => {\n            if (err) {\n              return reject(err)\n            }\n            resolve(files)\n          }\n        )\n      })\n    }\n\n    const { entryNameFilesMap } = buildTraceContext?.chunksTrace || {}\n\n    await Promise.all(\n      [\n        ...(entryNameFilesMap ? Object.entries(entryNameFilesMap) : new Map()),\n      ].map(async ([entryName]) => {\n        const isApp = entryName.startsWith('app/')\n        const isPages = entryName.startsWith('pages/')\n        let route = entryName\n        if (isApp) {\n          route = normalizeAppPath(entryName)\n        }\n        if (isPages) {\n          route = normalizePagePath(entryName)\n        }\n\n        if (staticPages.includes(route)) {\n          return\n        }\n\n        // edge routes have no trace files\n        if (edgeRuntimeRoutes.hasOwnProperty(route)) {\n          return\n        }\n\n        const combinedIncludes = new Set<string>()\n        const combinedExcludes = new Set<string>()\n        for (const curGlob of includeGlobKeys) {\n          const isMatch = picomatch(curGlob, { dot: true, contains: true })\n          if (isMatch(route)) {\n            for (const include of outputFileTracingIncludes[curGlob]) {\n              combinedIncludes.add(include.replace(/\\\\/g, '/'))\n            }\n          }\n        }\n\n        for (const curGlob of excludeGlobKeys) {\n          const isMatch = picomatch(curGlob, { dot: true, contains: true })\n          if (isMatch(route)) {\n            for (const exclude of outputFileTracingExcludes[curGlob]) {\n              combinedExcludes.add(exclude)\n            }\n          }\n        }\n\n        if (!combinedIncludes?.size && !combinedExcludes?.size) {\n          return\n        }\n\n        const traceFile = path.join(\n          distDir,\n          `server`,\n          `${entryName}.js.nft.json`\n        )\n        const pageDir = path.dirname(traceFile)\n        const traceContent = JSON.parse(await fs.readFile(traceFile, 'utf8'))\n        const includes: string[] = []\n        const resolvedTraceIncludes = new Map<string, string[]>()\n\n        if (combinedIncludes?.size) {\n          await Promise.all(\n            [...combinedIncludes].map(async (includeGlob) => {\n              const results = await glob(includeGlob)\n              const resolvedInclude = resolvedTraceIncludes.get(\n                includeGlob\n              ) || [\n                ...results.map((file) => {\n                  return path.relative(pageDir, path.join(dir, file))\n                }),\n              ]\n              includes.push(...resolvedInclude)\n              resolvedTraceIncludes.set(includeGlob, resolvedInclude)\n            })\n          )\n        }\n        const combined = new Set([...traceContent.files, ...includes])\n\n        if (combinedExcludes?.size) {\n          const resolvedGlobs = [...combinedExcludes].map((exclude) =>\n            path.join(dir, exclude)\n          )\n\n          // pre compile before forEach\n          const isMatch = picomatch(resolvedGlobs, {\n            dot: true,\n            contains: true,\n          })\n\n          combined.forEach((file) => {\n            if (isMatch(path.join(pageDir, file))) {\n              combined.delete(file)\n            }\n          })\n        }\n\n        // overwrite trace file with custom includes/excludes\n        await fs.writeFile(\n          traceFile,\n          JSON.stringify({\n            version: traceContent.version,\n            files: [...combined],\n          })\n        )\n      })\n    )\n  })\n\n  debug(`finished build tracing ${Date.now() - startTime}ms`)\n}\n"],"names":["Span","TRACE_IGNORES","getFilesMapFromReasons","path","resolveCacheHandlerPathToFilesystem","fs","nonNullable","ciEnvironment","debugOriginal","picomatch","defaultOverrides","nodeFileTrace","normalizePagePath","normalizeAppPath","isError","debug","makeIgnoreFn","root","ignores","isMatch","contains","dot","pathname","isAbsolute","startsWith","shouldIgnore","file","serverIgnoreFn","reasons","cachedIgnoreFiles","children","Set","has","get","set","add","reason","parents","size","type","includes","allParentsIgnored","parent","values","collectBuildTraces","dir","config","distDir","edgeRuntimeRoutes","staticPages","nextBuildSpan","name","buildTraceContext","outputFileTracingRoot","startTime","Date","now","outputFileTracingIncludes","outputFileTracingExcludes","excludeGlobKeys","Object","keys","includeGlobKeys","traceChild","isTurbotrace","traceAsyncFn","nextServerTraceOutput","join","nextMinimalTraceOutput","isStandalone","output","sharedEntriesSet","map","value","require","resolve","paths","cacheHandler","cacheHandlers","resolvedPath","push","process","env","__NEXT_TEST_MODE","NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS","handlerPath","serverEntries","filter","Boolean","minimalServerEntries","additionalIgnores","glob","forEach","exclude","sharedIgnores","hasNextSupport","sharedIgnoresFn","serverIgnores","minimalServerIgnores","minimalServerIgnoreFn","routesIgnores","routeIgnoreFn","serverTracedFiles","minimalServerTracedFiles","addToTracedFiles","base","dest","relative","replace","chunksToTrace","chunksTrace","action","input","result","processCwd","mixedModules","moduleSyncCatchall","readFile","p","e","code","readlink","stat","ignore","fileList","esmFileList","parentFilesMap","cachedLookupIgnore","Map","cachedLookupIgnoreMinimal","entries","tracedFiles","curFiles","curFile","filePath","entryNameFilesMap","cachedLookupIgnoreRoutes","Promise","all","entryName","entryNameFiles","isApp","isPages","route","substring","length","entryOutputPath","traceOutputPath","existingTrace","JSON","parse","traceOutputDir","dirname","curTracedFiles","outputFile","files","writeFile","stringify","sort","moduleTypes","modulePath","relativeModulePath","contextDir","item","readdir","itemPath","serverTracedFilesSorted","Array","from","minimalServerTracedFilesSorted","version","includeExcludeSpan","globOrig","pattern","reject","cwd","nodir","err","hasOwnProperty","combinedIncludes","combinedExcludes","curGlob","include","traceFile","pageDir","traceContent","resolvedTraceIncludes","includeGlob","results","resolvedInclude","combined","resolvedGlobs","delete"],"mappings":"AAAA,yDAAyD;AACzD,OAAO,4BAA2B;AAClC,SAASA,IAAI,QAAQ,WAAU;AAG/B,SACEC,aAAa,EAEbC,sBAAsB,QACjB,kDAAiD;AAExD,OAAOC,UAAU,OAAM;AACvB,SAASC,mCAAmC,QAAQ,oCAAmC;AACvF,OAAOC,QAAQ,cAAa;AAC5B,SAASC,WAAW,QAAQ,sBAAqB;AACjD,YAAYC,mBAAmB,oBAAmB;AAClD,OAAOC,mBAAmB,2BAA0B;AACpD,OAAOC,eAAe,+BAA8B;AACpD,SAASC,gBAAgB,QAAQ,yBAAwB;AACzD,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,iBAAiB,QAAQ,8CAA6C;AAC/E,SAASC,gBAAgB,QAAQ,uCAAsC;AACvE,OAAOC,aAAa,kBAAiB;AAIrC,MAAMC,QAAQP,cAAc;AAE5B,OAAO,MAAMQ,eAAe,CAACC,MAAcC;IACzC,+BAA+B;IAC/B,MAAMC,UAAUV,UAAUS,SAAS;QACjCE,UAAU;QACVC,KAAK;IACP;IAEA,OAAO,CAACC;QACN,IAAInB,KAAKoB,UAAU,CAACD,aAAa,CAACA,SAASE,UAAU,CAACP,OAAO;YAC3D,OAAO;QACT;QAEA,OAAOE,QAAQG;IACjB;AACF,EAAC;AAED,SAASG,aACPC,IAAY,EACZC,cAAyC,EACzCC,OAA6B,EAC7BC,iBAAuC,EACvCC,WAAwB,IAAIC,KAAK;IAEjC,IAAIF,kBAAkBG,GAAG,CAACN,OAAO;QAC/B,OAAOG,kBAAkBI,GAAG,CAACP;IAC/B;IAEA,IAAIC,eAAeD,OAAO;QACxBG,kBAAkBK,GAAG,CAACR,MAAM;QAC5B,OAAO;IACT;IACAI,SAASK,GAAG,CAACT;IAEb,MAAMU,SAASR,QAAQK,GAAG,CAACP;IAC3B,IAAI,CAACU,UAAUA,OAAOC,OAAO,CAACC,IAAI,KAAK,KAAKF,OAAOG,IAAI,CAACC,QAAQ,CAAC,YAAY;QAC3EX,kBAAkBK,GAAG,CAACR,MAAM;QAC5B,OAAO;IACT;IAEA,4CAA4C;IAC5C,4BAA4B;IAC5B,IAAIe,oBAAoB;IAExB,KAAK,MAAMC,UAAUN,OAAOC,OAAO,CAACM,MAAM,GAAI;QAC5C,IAAI,CAACb,SAASE,GAAG,CAACU,SAAS;YACzBZ,SAASK,GAAG,CAACO;YACb,IACE,CAACjB,aACCiB,QACAf,gBACAC,SACAC,mBACAC,WAEF;gBACAW,oBAAoB;gBACpB;YACF;QACF;IACF;IAEAZ,kBAAkBK,GAAG,CAACR,MAAMe;IAC5B,OAAOA;AACT;AAEA,OAAO,eAAeG,mBAAmB,EACvCC,GAAG,EACHC,MAAM,EACNC,OAAO,EACPC,iBAAiB,EACjBC,WAAW,EACXC,gBAAgB,IAAIlD,KAAK;IAAEmD,MAAM;AAAQ,EAAE,EAC3CC,iBAAiB,EACjBC,qBAAqB,EAWtB;IACC,MAAMC,YAAYC,KAAKC,GAAG;IAC1BzC,MAAM;IAEN,MAAM,EAAE0C,4BAA4B,CAAC,CAAC,EAAEC,4BAA4B,CAAC,CAAC,EAAE,GACtEZ;IACF,MAAMa,kBAAkBC,OAAOC,IAAI,CAACH;IACpC,MAAMI,kBAAkBF,OAAOC,IAAI,CAACJ;IAEpC,MAAMP,cACHa,UAAU,CAAC,yBAAyB;QACnCC,cAAc;IAChB,GACCC,YAAY,CAAC;QACZ,MAAMC,wBAAwB/D,KAAKgE,IAAI,CACrCpB,SACA;QAEF,MAAMqB,yBAAyBjE,KAAKgE,IAAI,CACtCpB,SACA;QAEF,MAAM9B,OAAOoC;QAEb,mEAAmE;QACnE,gBAAgB;QAChB,MAAMgB,eAAevB,OAAOwB,MAAM,KAAK;QACvC,MAAMC,mBAAmBX,OAAOC,IAAI,CAACnD,kBAAkB8D,GAAG,CAAC,CAACC,QAC1DC,QAAQC,OAAO,CAACF,OAAO;gBACrBG,OAAO;oBAACF,QAAQC,OAAO,CAAC;iBAAiC;YAC3D;QAGF,MAAM,EAAEE,YAAY,EAAEC,aAAa,EAAE,GAAGhC;QAExC,qDAAqD;QACrD,4BAA4B;QAC5B,IAAI+B,cAAc;YAChB,MAAME,eAAe3E,oCAAoCyE;YACzDN,iBAAiBS,IAAI,CACnBN,QAAQC,OAAO,CACbxE,KAAKoB,UAAU,CAACwD,gBACZA,eACA5E,KAAKgE,IAAI,CAACtB,KAAKkC;QAGzB;QAEA,sEAAsE;QACtE,wEAAwE;QACxE,iCAAiC;QACjC,IACEE,QAAQC,GAAG,CAACC,gBAAgB,IAC5BF,QAAQC,GAAG,CAACE,uCAAuC,EACnD;YACAb,iBAAiBS,IAAI,CACnBN,QAAQC,OAAO,CACbxE,KAAKoB,UAAU,CAAC0D,QAAQC,GAAG,CAACE,uCAAuC,IAC/DH,QAAQC,GAAG,CAACE,uCAAuC,GACnDjF,KAAKgE,IAAI,CACPtB,KACAoC,QAAQC,GAAG,CAACE,uCAAuC;QAI/D;QAEA,IAAIN,eAAe;YACjB,KAAK,MAAMO,eAAezB,OAAOjB,MAAM,CAACmC,eAAgB;gBACtD,IAAIO,aAAa;oBACf,MAAMN,eACJ3E,oCAAoCiF;oBACtCd,iBAAiBS,IAAI,CACnBN,QAAQC,OAAO,CACbxE,KAAKoB,UAAU,CAACwD,gBACZA,eACA5E,KAAKgE,IAAI,CAACtB,KAAKkC;gBAGzB;YACF;QACF;QAEA,MAAMO,gBAAgB;eACjBf;eACCF,eACA;gBACEK,QAAQC,OAAO,CAAC;gBAChBD,QAAQC,OAAO,CAAC;gBAChBD,QAAQC,OAAO,CAAC;aACjB,GACD,EAAE;YACND,QAAQC,OAAO,CAAC;SACjB,CAACY,MAAM,CAACC;QAET,MAAMC,uBAAuB;eACxBlB;YACHG,QAAQC,OAAO,CAAC;SACjB,CAACY,MAAM,CAACC;QAET,MAAME,oBAAoB,IAAI3D;QAE9B,KAAK,MAAM4D,QAAQhC,gBAAiB;YAClC,IAAIlD,UAAUkF,MAAM,gBAAgB;gBAClCjC,yBAAyB,CAACiC,KAAK,CAACC,OAAO,CAAC,CAACC;oBACvCH,kBAAkBvD,GAAG,CAAC0D;gBACxB;YACF;QACF;QAEA,MAAMC,gBAAgB;YACpB;eACIzB,eAAe,EAAE,GAAG;gBAAC;aAAyC;YAClE;YACA;YACA;YACA,qEAAqE;YACrE,oEAAoE;YACpE,qEAAqE;YACrE,sEAAsE;YACtE,qBAAqB;YACrB;YACA;YACA;eAEI9D,cAAcwF,cAAc,GAC5B;gBACE,wCAAwC;gBACxC,+CAA+C;gBAC/C;aACD,GACD,EAAE;eAEF1B,eAAe,EAAE,GAAGpE;eACrByF;SACJ;QAED,MAAMM,kBAAkBhF,aAAaC,MAAM6E;QAE3C,MAAMG,gBAAgB;eACjBH;YACH;YACA;YACA;YACA;eACIvF,cAAcwF,cAAc,GAC5B;gBAAC;gBAA8B;aAA8B,GAC7D,EAAE;SACP,CAACR,MAAM,CAACjF;QACT,MAAMqB,iBAAiBX,aAAaC,MAAMgF;QAE1C,MAAMC,uBAAuB;eACxBD;YACH;YACA;YACA;SACD;QACD,MAAME,wBAAwBnF,aAAaC,MAAMiF;QAEjD,MAAME,gBAAgB;eACjBN;YACH,sEAAsE;YACtE,qEAAqE;YACrE,iCAAiC;YACjC;YACA;SACD,CAACP,MAAM,CAACjF;QAET,MAAM+F,gBAAgBrF,aAAaC,MAAMmF;QAEzC,MAAME,oBAAoB,IAAIvE;QAC9B,MAAMwE,2BAA2B,IAAIxE;QAErC,SAASyE,iBAAiBC,IAAY,EAAE/E,IAAY,EAAEgF,IAAiB;YACrEA,KAAKvE,GAAG,CACNhC,KAAKwG,QAAQ,CAAC5D,SAAS5C,KAAKgE,IAAI,CAACsC,MAAM/E,OAAOkF,OAAO,CAAC,OAAO;QAEjE;QAEA,IAAIvC,cAAc;YAChBmC,iBACE,IACA9B,QAAQC,OAAO,CAAC,gDAChB2B;YAEFE,iBACE,IACA9B,QAAQC,OAAO,CAAC,+CAChB2B;QAEJ;QAEA;gBAEQlD;YADN,MAAMyD,gBAA0B;mBAC1BzD,CAAAA,sCAAAA,iCAAAA,kBAAmB0D,WAAW,qBAA9B1D,+BAAgC2D,MAAM,CAACC,KAAK,KAAI,EAAE;mBACnD1B;mBACAG;aACJ;YACD,MAAMwB,SAAS,MAAMtG,cAAckG,eAAe;gBAChDJ,MAAMpD;gBACN6D,YAAYrE;gBACZsE,cAAc;gBACdC,oBAAoB;gBACpB,MAAMC,UAASC,CAAC;oBACd,IAAI;wBACF,OAAO,MAAMjH,GAAGgH,QAAQ,CAACC,GAAG;oBAC9B,EAAE,OAAOC,GAAG;wBACV,IAAIzG,QAAQyG,MAAOA,CAAAA,EAAEC,IAAI,KAAK,YAAYD,EAAEC,IAAI,KAAK,QAAO,GAAI;4BAC9D,+DAA+D;4BAC/D,2DAA2D;4BAC3D,oBAAoB;4BACpB,OAAO;wBACT;wBACA,MAAMD;oBACR;gBACF;gBACA,MAAME,UAASH,CAAC;oBACd,IAAI;wBACF,OAAO,MAAMjH,GAAGoH,QAAQ,CAACH;oBAC3B,EAAE,OAAOC,GAAG;wBACV,IACEzG,QAAQyG,MACPA,CAAAA,EAAEC,IAAI,KAAK,YACVD,EAAEC,IAAI,KAAK,YACXD,EAAEC,IAAI,KAAK,SAAQ,GACrB;4BACA,OAAO;wBACT;wBACA,MAAMD;oBACR;gBACF;gBACA,MAAMG,MAAKJ,CAAC;oBACV,IAAI;wBACF,OAAO,MAAMjH,GAAGqH,IAAI,CAACJ;oBACvB,EAAE,OAAOC,GAAG;wBACV,IAAIzG,QAAQyG,MAAOA,CAAAA,EAAEC,IAAI,KAAK,YAAYD,EAAEC,IAAI,KAAK,SAAQ,GAAI;4BAC/D,OAAO;wBACT;wBACA,MAAMD;oBACR;gBACF;gBACA,2CAA2C;gBAC3C,4CAA4C;gBAC5C,iCAAiC;gBACjCI,QAAOL,CAAC;oBACN,IAAItB,gBAAgBsB,IAAI;wBACtB,OAAO;oBACT;oBAEA,mDAAmD;oBACnD,sDAAsD;oBACtD,oDAAoD;oBACpD,2DAA2D;oBAC3D,IACEA,EAAE9E,QAAQ,CAAC,0BACX,CAACqE,cAAcrE,QAAQ,CAACrC,KAAKgE,IAAI,CAACd,uBAAuBiE,KACzD;wBACA,OAAO;oBACT;oBACA,OAAO;gBACT;YACF;YACA,MAAM1F,UAAUqF,OAAOrF,OAAO;YAC9B,MAAMgG,WAAWX,OAAOW,QAAQ;YAChC,KAAK,MAAMlG,QAAQuF,OAAOY,WAAW,CAAE;gBACrCD,SAASzF,GAAG,CAACT;YACf;YAEA,MAAMoG,iBAAiB5H,uBAAuB0H,UAAUhG;YACxD,MAAMmG,qBAAqB,IAAIC;YAC/B,MAAMC,4BAA4B,IAAID;YAEtC,KAAK,MAAM,CAACE,SAASC,YAAY,IAAI;gBACnC;oBAAC7C;oBAAegB;iBAAkB;gBAClC;oBAACb;oBAAsBc;iBAAyB;aACjD,CAAoC;gBACnC,KAAK,MAAM7E,QAAQwG,QAAS;wBAEpBJ;oBADN,MAAMM,WAAW;2BACXN,EAAAA,sBAAAA,eACD7F,GAAG,CAAC9B,KAAKwG,QAAQ,CAACtD,uBAAuB3B,2BADxCoG,oBAEAjE,IAAI,OAAM,EAAE;qBACjB;oBACDsE,YAAYhG,GAAG,CAAChC,KAAKwG,QAAQ,CAAC5D,SAASrB,MAAMkF,OAAO,CAAC,OAAO;oBAE5D,KAAK,MAAMyB,WAAWD,YAAY,EAAE,CAAE;wBACpC,MAAME,WAAWnI,KAAKgE,IAAI,CAACd,uBAAuBgF;wBAElD,IACE,CAAC5G,aACC4G,SACAF,gBAAgB5B,2BACZJ,wBACAxE,gBACJC,SACAuG,gBAAgB5B,2BACZ0B,4BACAF,qBAEN;4BACAI,YAAYhG,GAAG,CACbhC,KAAKwG,QAAQ,CAAC5D,SAASuF,UAAU1B,OAAO,CAAC,OAAO;wBAEpD;oBACF;gBACF;YACF;YAEA,MAAM,EAAE2B,iBAAiB,EAAE,GAAGnF,CAAAA,qCAAAA,kBAAmB0D,WAAW,KAAI,CAAC;YAEjE,MAAM0B,2BAA2B,IAAIR;YAErC,MAAMS,QAAQC,GAAG,CACf;mBACMH,oBACA3E,OAAOsE,OAAO,CAACK,qBACf,IAAIP;aACT,CAACxD,GAAG,CAAC,OAAO,CAACmE,WAAWC,eAAe;gBACtC,MAAMC,QAAQF,UAAUnH,UAAU,CAAC;gBACnC,MAAMsH,UAAUH,UAAUnH,UAAU,CAAC;gBACrC,IAAIuH,QAAQJ;gBACZ,IAAIE,OAAO;oBACTE,QAAQlI,iBAAiBkI,MAAMC,SAAS,CAAC,MAAMC,MAAM;gBACvD;gBACA,IAAIH,SAAS;oBACXC,QAAQnI,kBAAkBmI,MAAMC,SAAS,CAAC,QAAQC,MAAM;gBAC1D;gBAEA,gEAAgE;gBAChE,yDAAyD;gBACzD,2DAA2D;gBAC3D,4BAA4B;gBAC5B,IAAIhG,YAAYT,QAAQ,CAACuG,QAAQ;oBAC/B;gBACF;gBACA,MAAMG,kBAAkB/I,KAAKgE,IAAI,CAC/BpB,SACA,UACA,GAAG4F,UAAU,GAAG,CAAC;gBAEnB,MAAMQ,kBAAkB,GAAGD,gBAAgB,SAAS,CAAC;gBACrD,MAAME,gBAAgBC,KAAKC,KAAK,CAC9B,MAAMjJ,GAAGgH,QAAQ,CAAC8B,iBAAiB;gBAMrC,MAAMI,iBAAiBpJ,KAAKqJ,OAAO,CAACL;gBACpC,MAAMM,iBAAiB,IAAI1H;gBAE3B,KAAK,MAAML,QAAQ;uBAAIkH;oBAAgBM;iBAAgB,CAAE;wBAEjDpB;oBADN,MAAMM,WAAW;2BACXN,EAAAA,sBAAAA,eACD7F,GAAG,CAAC9B,KAAKwG,QAAQ,CAACtD,uBAAuB3B,2BADxCoG,oBAEAjE,IAAI,OAAM,EAAE;qBACjB;oBACD,KAAK,MAAMwE,WAAWD,YAAY,EAAE,CAAE;wBACpC,IACE,CAAC3G,aACC4G,SACAhC,eACAzE,SACA4G,2BAEF;4BACA,MAAMF,WAAWnI,KAAKgE,IAAI,CAACd,uBAAuBgF;4BAClD,MAAMqB,aAAavJ,KAChBwG,QAAQ,CAAC4C,gBAAgBjB,UACzB1B,OAAO,CAAC,OAAO;4BAClB6C,eAAetH,GAAG,CAACuH;wBACrB;oBACF;gBACF;gBAEA,KAAK,MAAMhI,QAAQ0H,cAAcO,KAAK,IAAI,EAAE,CAAE;oBAC5CF,eAAetH,GAAG,CAACT;gBACrB;gBAEA,MAAMrB,GAAGuJ,SAAS,CAChBT,iBACAE,KAAKQ,SAAS,CAAC;oBACb,GAAGT,aAAa;oBAChBO,OAAO;2BAAIF;qBAAe,CAACK,IAAI;gBACjC;YAEJ;QAEJ;QAEA,MAAMC,cAAc;YAAC;YAAY;SAAQ;QAEzC,KAAK,MAAMxH,QAAQwH,YAAa;YAC9B,MAAMC,aAAatF,QAAQC,OAAO,CAChC,CAAC,+BAA+B,EAAEpC,KAAK,gBAAgB,CAAC;YAE1D,MAAM0H,qBAAqB9J,KAAKwG,QAAQ,CAAC1F,MAAM+I;YAE/C,MAAME,aAAa/J,KAAKgE,IAAI,CAC1BhE,KAAKqJ,OAAO,CAACQ,aACb,YACA;YAGF,KAAK,MAAMG,QAAQ,CAAA,MAAM9J,GAAG+J,OAAO,CAACF,WAAU,EAAG;gBAC/C,MAAMG,WAAWlK,KAAKwG,QAAQ,CAAC1F,MAAMd,KAAKgE,IAAI,CAAC+F,YAAYC;gBAC3D,IAAI,CAACxI,eAAe0I,WAAW;oBAC7B7D,iBAAiBvF,MAAMoJ,UAAU/D;oBACjCE,iBAAiBvF,MAAMoJ,UAAU9D;gBACnC;YACF;YACAC,iBAAiBvF,MAAMgJ,oBAAoB3D;YAC3CE,iBAAiBvF,MAAMgJ,oBAAoB1D;QAC7C;QAEA,MAAM+D,0BAA0BC,MAAMC,IAAI,CAAClE;QAC3CgE,wBAAwBR,IAAI;QAC5B,MAAMW,iCAAiCF,MAAMC,IAAI,CAC/CjE;QAEFkE,+BAA+BX,IAAI;QAEnC,MAAMrB,QAAQC,GAAG,CAAC;YAChBrI,GAAGuJ,SAAS,CACV1F,uBACAmF,KAAKQ,SAAS,CAAC;gBACba,SAAS;gBACTf,OAAOW;YACT;YAKFjK,GAAGuJ,SAAS,CACVxF,wBACAiF,KAAKQ,SAAS,CAAC;gBACba,SAAS;gBACTf,OAAOc;YACT;SAKH;IACH;IAEF,gFAAgF;IAChF,MAAME,qBAAqBzH,cAAca,UAAU,CAAC;IACpD,MAAM4G,mBAAmB1G,YAAY,CAAC;QACpC,MAAM2G,WACJlG,QAAQ;QACV,MAAMiB,OAAO,CAACkF;YACZ,OAAO,IAAIpC,QAAQ,CAAC9D,SAASmG;gBAC3BF,SACEC,SACA;oBAAEE,KAAKlI;oBAAKmI,OAAO;oBAAM3J,KAAK;gBAAK,GACnC,CAAC4J,KAAKtB;oBACJ,IAAIsB,KAAK;wBACP,OAAOH,OAAOG;oBAChB;oBACAtG,QAAQgF;gBACV;YAEJ;QACF;QAEA,MAAM,EAAEpB,iBAAiB,EAAE,GAAGnF,CAAAA,qCAAAA,kBAAmB0D,WAAW,KAAI,CAAC;QAEjE,MAAM2B,QAAQC,GAAG,CACf;eACMH,oBAAoB3E,OAAOsE,OAAO,CAACK,qBAAqB,IAAIP;SACjE,CAACxD,GAAG,CAAC,OAAO,CAACmE,UAAU;YACtB,MAAME,QAAQF,UAAUnH,UAAU,CAAC;YACnC,MAAMsH,UAAUH,UAAUnH,UAAU,CAAC;YACrC,IAAIuH,QAAQJ;YACZ,IAAIE,OAAO;gBACTE,QAAQlI,iBAAiB8H;YAC3B;YACA,IAAIG,SAAS;gBACXC,QAAQnI,kBAAkB+H;YAC5B;YAEA,IAAI1F,YAAYT,QAAQ,CAACuG,QAAQ;gBAC/B;YACF;YAEA,kCAAkC;YAClC,IAAI/F,kBAAkBkI,cAAc,CAACnC,QAAQ;gBAC3C;YACF;YAEA,MAAMoC,mBAAmB,IAAIpJ;YAC7B,MAAMqJ,mBAAmB,IAAIrJ;YAC7B,KAAK,MAAMsJ,WAAWvH,gBAAiB;gBACrC,MAAM3C,UAAUV,UAAU4K,SAAS;oBAAEhK,KAAK;oBAAMD,UAAU;gBAAK;gBAC/D,IAAID,QAAQ4H,QAAQ;oBAClB,KAAK,MAAMuC,WAAW7H,yBAAyB,CAAC4H,QAAQ,CAAE;wBACxDF,iBAAiBhJ,GAAG,CAACmJ,QAAQ1E,OAAO,CAAC,OAAO;oBAC9C;gBACF;YACF;YAEA,KAAK,MAAMyE,WAAW1H,gBAAiB;gBACrC,MAAMxC,UAAUV,UAAU4K,SAAS;oBAAEhK,KAAK;oBAAMD,UAAU;gBAAK;gBAC/D,IAAID,QAAQ4H,QAAQ;oBAClB,KAAK,MAAMlD,WAAWnC,yBAAyB,CAAC2H,QAAQ,CAAE;wBACxDD,iBAAiBjJ,GAAG,CAAC0D;oBACvB;gBACF;YACF;YAEA,IAAI,EAACsF,oCAAAA,iBAAkB7I,IAAI,KAAI,EAAC8I,oCAAAA,iBAAkB9I,IAAI,GAAE;gBACtD;YACF;YAEA,MAAMiJ,YAAYpL,KAAKgE,IAAI,CACzBpB,SACA,CAAC,MAAM,CAAC,EACR,GAAG4F,UAAU,YAAY,CAAC;YAE5B,MAAM6C,UAAUrL,KAAKqJ,OAAO,CAAC+B;YAC7B,MAAME,eAAepC,KAAKC,KAAK,CAAC,MAAMjJ,GAAGgH,QAAQ,CAACkE,WAAW;YAC7D,MAAM/I,WAAqB,EAAE;YAC7B,MAAMkJ,wBAAwB,IAAI1D;YAElC,IAAImD,oCAAAA,iBAAkB7I,IAAI,EAAE;gBAC1B,MAAMmG,QAAQC,GAAG,CACf;uBAAIyC;iBAAiB,CAAC3G,GAAG,CAAC,OAAOmH;oBAC/B,MAAMC,UAAU,MAAMjG,KAAKgG;oBAC3B,MAAME,kBAAkBH,sBAAsBzJ,GAAG,CAC/C0J,gBACG;2BACAC,QAAQpH,GAAG,CAAC,CAAC9C;4BACd,OAAOvB,KAAKwG,QAAQ,CAAC6E,SAASrL,KAAKgE,IAAI,CAACtB,KAAKnB;wBAC/C;qBACD;oBACDc,SAASwC,IAAI,IAAI6G;oBACjBH,sBAAsBxJ,GAAG,CAACyJ,aAAaE;gBACzC;YAEJ;YACA,MAAMC,WAAW,IAAI/J,IAAI;mBAAI0J,aAAa9B,KAAK;mBAAKnH;aAAS;YAE7D,IAAI4I,oCAAAA,iBAAkB9I,IAAI,EAAE;gBAC1B,MAAMyJ,gBAAgB;uBAAIX;iBAAiB,CAAC5G,GAAG,CAAC,CAACqB,UAC/C1F,KAAKgE,IAAI,CAACtB,KAAKgD;gBAGjB,6BAA6B;gBAC7B,MAAM1E,UAAUV,UAAUsL,eAAe;oBACvC1K,KAAK;oBACLD,UAAU;gBACZ;gBAEA0K,SAASlG,OAAO,CAAC,CAAClE;oBAChB,IAAIP,QAAQhB,KAAKgE,IAAI,CAACqH,SAAS9J,QAAQ;wBACrCoK,SAASE,MAAM,CAACtK;oBAClB;gBACF;YACF;YAEA,qDAAqD;YACrD,MAAMrB,GAAGuJ,SAAS,CAChB2B,WACAlC,KAAKQ,SAAS,CAAC;gBACba,SAASe,aAAaf,OAAO;gBAC7Bf,OAAO;uBAAImC;iBAAS;YACtB;QAEJ;IAEJ;IAEA/K,MAAM,CAAC,uBAAuB,EAAEwC,KAAKC,GAAG,KAAKF,UAAU,EAAE,CAAC;AAC5D","ignoreList":[0]}