{"version":3,"file":"node-BianNuTG.mjs","names":["defaultColors","colors","defaultColors","colors","defaultColors","colors"],"sources":["../src/core/shared.ts","../src/core/create-logger-factory.ts","../src/utils/create-auto-logger-factory.ts","../src/utils/serialize-json.ts","../src/utils/printf.ts","../src/utils/read-arguments.ts","../src/http/utils.ts","../../../node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js","../../../node_modules/slice-ansi/node_modules/ansi-styles/index.js","../../../node_modules/slice-ansi/index.js","../../../node_modules/cli-truncate/node_modules/ansi-regex/index.js","../../../node_modules/cli-truncate/node_modules/strip-ansi/index.js","../../../node_modules/get-east-asian-width/lookup.js","../../../node_modules/get-east-asian-width/index.js","../../../node_modules/cli-truncate/node_modules/emoji-regex/index.js","../../../node_modules/cli-truncate/node_modules/string-width/index.js","../../../node_modules/cli-truncate/index.js","../src/node/shared.ts","../src/node/error/source-map.ts","../src/node/error/print-code-frame.ts","../src/node/error/serialize-error.ts","../src/node/error/stack-trace.ts","../src/node/error/print-pretty-error.ts","../src/node/serializers.ts","../src/node/json.ts","../src/node/pretty.ts","../src/node/index.ts"],"sourcesContent":["import type { LoggerLevelsConfig, LoggerParamsWithLevels } from './types';\n\nexport type DefaultLoggerLevel = keyof DefaultLoggerLevelsConfig;\nexport type DefaultLoggerLevelsConfig = typeof DEFAULT_LOGGER_LEVELS;\n\nexport const LOGGER_SILENT_LEVEL = 'silent' as const;\nexport const DEFAULT_LOGGER_LEVELS = {\n  error: 10,\n  warn: 20,\n  info: 30,\n  done: 40,\n  debug: 50,\n\n  success: 'done' as const,\n  verbose: 'debug' as const,\n  [LOGGER_SILENT_LEVEL]: Infinity\n} satisfies Readonly<LoggerLevelsConfig<string>>;\n\nexport const DEFAULT_LOGGER_PARAMS = {\n  levels: DEFAULT_LOGGER_LEVELS,\n  level: 'done',\n  name: '',\n  transform: [],\n  target: [],\n  meta: {}\n} satisfies Readonly<LoggerParamsWithLevels<typeof DEFAULT_LOGGER_LEVELS>>;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { is, isEmpty, isTruthy, isTypeOfFunction, isTypeOfString, keys, toArray } from '@neodx/std';\nimport type { LogArguments } from '../utils';\nimport { LOGGER_SILENT_LEVEL } from './shared';\nimport type {\n  BaseLevelsConfig,\n  CreateLogger,\n  GetLevelNames,\n  LogChunk,\n  Logger,\n  LoggerLevelsConfig,\n  LoggerMethods,\n  LoggerParamsWithLevels,\n  LoggerTransformer\n} from './types';\n\nexport interface CreateLoggerFactoryParams<Levels extends LoggerLevelsConfig<string>> {\n  defaultParams: LoggerParamsWithLevels<Levels>;\n  readArguments(args: unknown[]): LogArguments;\n  /**\n   * Formats a message template with replaces.\n   * @default Our lightweight implementation with %s, %d, %i, %f, %j/%o/%O (same output as %j) support\n   * @example (template, replaces) => util.format(template, ...replaces) // Node.js util.format\n   */\n  formatMessage(template: string, replaces: unknown[]): string;\n}\n\nexport function createLoggerFactory<LevelsConfig extends LoggerLevelsConfig<string>>({\n  defaultParams,\n  formatMessage,\n  readArguments\n}: CreateLoggerFactoryParams<LevelsConfig>): CreateLogger<GetLevelNames<LevelsConfig>> {\n  function createLogger(userParams: any): Logger<any> {\n    const params = { ...defaultParams, ...userParams } as Required<\n      LoggerParamsWithLevels<LevelsConfig>\n    >;\n    const { meta, target, level: rootLevel, name = '', levels } = params;\n    const transform = toArray(params.transform) as unknown as LoggerTransformer<\n      GetLevelNames<LevelsConfig>\n    >[];\n    const targets = toArray(target)\n      .filter(isTruthy)\n      .map(target => (isTypeOfFunction(target) ? { target } : target))\n      .map(({ target, level }) => ({\n        level: level && getOriginalLevelName(level, levels),\n        target: toArray(target).filter(isTruthy)\n      }))\n      .filter(it => !isEmpty(it.target) && !isSilent(it.level));\n\n    const log = (levelOrAlias: GetLevelNames<LevelsConfig>, ...args: unknown[]) => {\n      const level = getOriginalLevelName(levelOrAlias, levels);\n\n      if (isSilent(rootLevel) || (rootLevel && levels[level]! > levels[rootLevel]!)) return;\n      const [[unknownMsgTemplate = '', ...msgArgs], additionalFields, error] = readArguments(args);\n      const msgTemplate = String(unknownMsgTemplate);\n      const chunk = transform.reduce<LogChunk<GetLevelNames<LevelsConfig>>>(\n        (chunk, transformer) => transformer(chunk),\n        {\n          name,\n          level,\n          error,\n          meta: {\n            ...meta,\n            ...additionalFields\n          },\n          date: new Date(),\n          msgArgs,\n          msgTemplate,\n          msg: isEmpty(msgArgs) ? msgTemplate : formatMessage(msgTemplate, msgArgs),\n          __: {\n            originalLevel: levelOrAlias,\n            levels: levels as LoggerLevelsConfig<GetLevelNames<LevelsConfig>>\n          }\n        }\n      );\n\n      for (const handle of targets) {\n        if (handle.level && levels[handle.level]! > levels[level]!) continue;\n        handle.target.forEach(fn => fn(chunk as any));\n      }\n    };\n\n    const methods = Object.fromEntries(\n      keys(levels).map(level => [level, log.bind(null, level)])\n    ) as LoggerMethods<GetLevelNames<LevelsConfig>>;\n\n    return {\n      ...methods,\n      get meta() {\n        return { ...params.meta };\n      },\n      fork: (params: any) => createLogger({ ...userParams, ...params }),\n      child: (childName: string, params: any) =>\n        createLogger({\n          ...userParams,\n          ...params,\n          name: name ? `${name}:${childName}` : childName\n        })\n    } as Logger<GetLevelNames<LevelsConfig>>;\n  }\n\n  return createLogger;\n}\n\nconst isSilent = is(LOGGER_SILENT_LEVEL);\nconst getOriginalLevelName = <Config extends BaseLevelsConfig>(\n  level: GetLevelNames<Config>,\n  levels: Config\n): GetLevelNames<Config> => {\n  const value = levels[level] as GetLevelNames<Config> | number;\n\n  return isTypeOfString(value) ? getOriginalLevelName(value, levels) : level;\n};\n","import { isTypeOfString } from '@neodx/std';\nimport type { CreateLogger, Logger, LoggerParams } from '../core/types.ts';\n\nexport const createLoggerAutoFactory =\n  (factory: CreateLogger<any>) =>\n  <const Level extends string>(\n    log: AutoLoggerInput<Level>,\n    defaultParams?: Partial<LoggerParams<Level>>\n  ): Logger<Level> => {\n    const params = isTypeOfString(log) ? { level: log } : log;\n\n    return 'level' in params\n      ? factory({ ...defaultParams, ...params } as Partial<LoggerParams<Level>>)\n      : params;\n  };\n\nexport type AutoLoggerInput<Level extends string> =\n  | Level\n  | (Partial<LoggerParams<Level>> & Pick<LoggerParams<Level>, 'level'>)\n  | 'silent'\n  | Logger<Level>;\n","/**\n * Safe version of JSON.stringify, prevents circular refs\n * @example serializeJSON({ record: { value: 1, name: 'age' }, valid: false })\n */\nexport const serializeJSON = (value: unknown, space?: string | number) =>\n  JSON.stringify(value, createJSONReplacer(), space);\n\nexport const cycleRef = (tokens: string[] = []) =>\n  `[Circular${tokens.length > 0 ? ' ' + tokens.join('.') : ''}]`;\n\nfunction createJSONReplacer() {\n  const stack: unknown[] = [];\n  const keys: string[] = [];\n\n  const getCircularKey = (index: number) => cycleRef(index > 0 ? keys.slice(0, index) : []);\n\n  return function replacer(this: unknown, key: string, value: unknown) {\n    if (stack.length === 0) {\n      stack.push(value);\n\n      return value;\n    }\n\n    const thisIndex = stack.indexOf(this);\n    const thisInStack = thisIndex >= 0;\n\n    if (thisInStack) {\n      stack.splice(thisIndex + 1);\n      keys.splice(thisIndex, Infinity, key);\n    } else {\n      stack.push(this);\n      keys.push(key);\n    }\n\n    if (stack.includes(value)) {\n      return getCircularKey(stack.indexOf(value));\n    }\n\n    return value;\n  };\n}\n","import { hasOwn } from '@neodx/std';\nimport { serializeJSON } from './serialize-json';\n\n/**\n * Tiny implementation of printf function.\n * Supports only \"%s\" (string) and \"%d\" (number).\n * @see https://github.com/floatdrop/pff\n * @example printf('%s in %ds.', ['Done', 12]) => \"Done on 12s.\"\n */\nexport function printf(template: string, replaces: unknown[]) {\n  const currentReplaces = Array.from(replaces);\n  const [leading, ...parts] = template.split('%');\n  const result = parts.reduce(\n    (acc, part) => {\n      const tokenName = part[0]!;\n      const format = hasOwn(tokenFormatters, tokenName) ? tokenFormatters[tokenName] : null;\n\n      acc.push(format ? format(currentReplaces.shift()) : '%');\n      acc.push(format ? part.slice(tokenName.length) : part);\n      return acc;\n    },\n    [leading] as unknown[]\n  );\n\n  return result.join('');\n}\n\nconst tokenFormatters = {\n  s: (value: unknown) => String(value),\n  d: (value: unknown) => Math.floor(Number(value)),\n  i: (value: unknown) => Number.parseInt(String(value), 10),\n  f: (value: unknown) => Number.parseFloat(String(value)),\n  o: serializeJSON,\n  O: serializeJSON,\n  j: serializeJSON\n};\n","import { type AnyRecord, isEmpty, isError, isObjectLike } from '@neodx/std';\n\nexport type LogArguments = [messageFragments: unknown[], meta: AnyRecord, error?: Error];\n\n/**\n * Reads arguments array and extract fields, error and message arguments.\n * @return [messageFragments, fields, error]\n *\n * Strings\n * @example readArguments('hello') -> [ ['hello'], {} ]\n * @example readArguments('hello %s', 'world') -> [ ['hello %s', 'world'], {} ]\n * @example readArguments('hello %s %d %j', 'world', 1, { id: 2 }) -> [ ['hello %s %d %j', 'world', 1, { id: 2 }], {} ]\n *\n * Additional fields\n * @example readArguments({ id: 2 }) -> [ [], { id: 2 } ]\n * @example readArguments({ id: 2 }, 'hello') -> [ ['hello'], { id: 2 } ]\n * @example readArguments({ id: 2 }, 'hello %s', 'world') -> [ ['hello %s', 'world'], { id: 2 } ]\n *\n * Errors\n * @example readArguments(myError) -> [ ['my error'], {}, myError ]\n * @example readArguments({ err: myError }) -> [ ['my error'], {}, myError ]\n * @example readArguments({ err: myError, id: 2 }) -> [ ['my error'], { id: 2 }, myError ]\n * @example readArguments({ err: myError, id: 2 }, 'hello') -> [ ['hello'], { id: 2 }, myError ]\n * @example readArguments({ err: myError, id: 2 }, 'hello %s', 'world') -> [ ['hello %s', 'world'], { id: 2 }, myError ]\n */\nexport function readArguments(args: unknown[]): LogArguments {\n  const [firstArg, ...otherArgs] = args;\n\n  if (isError(firstArg)) {\n    return [isEmpty(otherArgs) ? [firstArg.message] : otherArgs, {}, firstArg];\n  }\n\n  if (isObjectLike(firstArg)) {\n    if ('err' in firstArg && isError(firstArg.err)) {\n      const { err, ...fields } = firstArg;\n\n      return [isEmpty(otherArgs) ? [err.message] : otherArgs, fields, err];\n    }\n\n    return [otherArgs, firstArg as any];\n  }\n\n  return [args, {}];\n}\n","import { IncomingMessage, OutgoingMessage } from 'http';\nimport type { Colors } from '@neodx/colors';\nimport { truncateString } from '@neodx/std';\n\nexport const formatOutgoingMessageStatus = (res: OutgoingMessage) => {\n  if (!res.headersSent) return 'unknown status';\n  const { statusCode, statusMessage } = res as any;\n\n  return `${statusCode} ${statusMessage}`;\n};\n\nexport const formatIncomingMessage = (req: IncomingMessage, colors: Colors, delimiter = ' ') =>\n  `${colors.bold(req.method?.toUpperCase() ?? 'GET')}${delimiter}${colors.underline(\n    colors.gray(truncateString(getIncomingMessageUrl(req).split('?')?.shift() ?? '', 50))\n  )}`;\n\nexport const formatResponseTime = (time: number) => {\n  const showSeconds = time >= 100;\n  const timeValue = showSeconds ? time / 1000 : time;\n\n  return timeValue\n    .toLocaleString('en', {\n      style: 'unit',\n      unit: showSeconds ? 'second' : 'millisecond',\n      unitDisplay: 'narrow',\n      maximumFractionDigits: 1\n    })\n    .padEnd(4);\n};\n\nexport function serializeHttpRequest(req: IncomingMessage) {\n  const { id, info, query, method, params, headers, [HTTP_LOG_RAW_SYMBOL]: raw } = req as any;\n  const connection = info || req.socket;\n\n  return {\n    id: typeof id === 'function' ? id() : (id ?? info?.id),\n    url: getIncomingMessageUrl(req),\n    query,\n    params,\n    method,\n    headers,\n    remotePort: connection?.remotePort,\n    remoteAddress: connection?.remoteAddress,\n    [HTTP_LOG_RAW_SYMBOL]: raw || req\n  };\n}\n\nexport function serializeHttpResponse(res: OutgoingMessage) {\n  return {\n    statusCode: res.headersSent ? (res as any).statusCode : null,\n    headers: res.getHeaders(),\n    [HTTP_LOG_RAW_SYMBOL]: res\n  };\n}\n\nexport const getIncomingMessageUrl = ({ originalUrl, path, url }: any) =>\n  originalUrl || (typeof path === 'string' ? path : (url?.path ?? url));\n\nexport const createRequestIdGenerator = () => {\n  let currentRequestId = 0;\n\n  return function generateRequestId() {\n    currentRequestId = currentRequestId >= maxInt ? 0 : currentRequestId + 1;\n\n    return currentRequestId;\n  };\n};\n\nexport const HTTP_LOG_START_TIME_SYMBOL = Symbol('HTTP_LOG_START_TIME');\nexport const HTTP_LOG_RAW_SYMBOL = Symbol('raw');\n\nconst maxInt = 2147483647;\n","/* eslint-disable yoda */\n\nexport default function isFullwidthCodePoint(codePoint) {\n\tif (!Number.isInteger(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// https://unicode.org/Public/UNIDATA/EastAsianWidth.txt\n\treturn codePoint >= 0x1100 && (\n\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t// Hangul Jamo Extended-A\n\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t// Hangul Syllables\n\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t// CJK Compatibility Ideographs\n\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t// Vertical Forms\n\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t// Halfwidth and Fullwidth Forms\n\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t// Kana Supplement\n\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t// Enclosed Ideographic Supplement\n\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t);\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import isFullwidthCodePoint from 'is-fullwidth-code-point';\nimport ansiStyles from 'ansi-styles';\n\nconst astralRegex = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/;\n\nconst ESCAPES = [\n\t'\\u001B',\n\t'\\u009B'\n];\n\nconst wrapAnsi = code => `${ESCAPES[0]}[${code}m`;\n\nconst checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {\n\tlet output = [];\n\tansiCodes = [...ansiCodes];\n\n\tfor (let ansiCode of ansiCodes) {\n\t\tconst ansiCodeOrigin = ansiCode;\n\t\tif (ansiCode.includes(';')) {\n\t\t\tansiCode = ansiCode.split(';')[0][0] + '0';\n\t\t}\n\n\t\tconst item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));\n\t\tif (item) {\n\t\t\tconst indexEscape = ansiCodes.indexOf(item.toString());\n\t\t\tif (indexEscape === -1) {\n\t\t\t\toutput.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));\n\t\t\t} else {\n\t\t\t\tansiCodes.splice(indexEscape, 1);\n\t\t\t}\n\t\t} else if (isEscapes) {\n\t\t\toutput.push(wrapAnsi(0));\n\t\t\tbreak;\n\t\t} else {\n\t\t\toutput.push(wrapAnsi(ansiCodeOrigin));\n\t\t}\n\t}\n\n\tif (isEscapes) {\n\t\toutput = output.filter((element, index) => output.indexOf(element) === index);\n\n\t\tif (endAnsiCode !== undefined) {\n\t\t\tconst fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));\n\t\t\t// TODO: Remove the use of `.reduce` here.\n\t\t\t// eslint-disable-next-line unicorn/no-array-reduce\n\t\t\toutput = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);\n\t\t}\n\t}\n\n\treturn output.join('');\n};\n\nexport default function sliceAnsi(string, begin, end) {\n\tconst characters = [...string];\n\tconst ansiCodes = [];\n\n\tlet stringEnd = typeof end === 'number' ? end : characters.length;\n\tlet isInsideEscape = false;\n\tlet ansiCode;\n\tlet visible = 0;\n\tlet output = '';\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tlet leftEscape = false;\n\n\t\tif (ESCAPES.includes(character)) {\n\t\t\tconst code = /\\d[^m]*/.exec(string.slice(index, index + 18));\n\t\t\tansiCode = code && code.length > 0 ? code[0] : undefined;\n\n\t\t\tif (visible < stringEnd) {\n\t\t\t\tisInsideEscape = true;\n\n\t\t\t\tif (ansiCode !== undefined) {\n\t\t\t\t\tansiCodes.push(ansiCode);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tleftEscape = true;\n\t\t}\n\n\t\tif (!isInsideEscape && !leftEscape) {\n\t\t\tvisible++;\n\t\t}\n\n\t\tif (!astralRegex.test(character) && isFullwidthCodePoint(character.codePointAt())) {\n\t\t\tvisible++;\n\n\t\t\tif (typeof end !== 'number') {\n\t\t\t\tstringEnd++;\n\t\t\t}\n\t\t}\n\n\t\tif (visible > begin && visible <= stringEnd) {\n\t\t\toutput += character;\n\t\t} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {\n\t\t\toutput = checkAnsi(ansiCodes);\n\t\t} else if (visible >= stringEnd) {\n\t\t\toutput += checkAnsi(ansiCodes, true, ansiCode);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t    '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E3\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0x4DBF\n\t\t|| x >= 0x4E00 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18D00 && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA88\n\t\t|| x >= 0x1FA90 && x <= 0x1FABD\n\t\t|| x >= 0x1FABF && x <= 0x1FAC5\n\t\t|| x >= 0x1FACE && x <= 0x1FADB\n\t\t|| x >= 0x1FAE0 && x <= 0x1FAE8\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// For Prettier. This doesn't count \"ambiguous\" characters or check for valid input.\n// https://github.com/sindresorhus/get-east-asian-width/pull/6\nexport const _isNarrowWidth = codePoint => !(isFullWidth(codePoint) || isWide(codePoint));\n","module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x3_00 && codePoint <= 0x3_6F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","import sliceAnsi from 'slice-ansi';\nimport stringWidth from 'string-width';\n\nfunction getIndexOfNearestSpace(string, wantedIndex, shouldSearchRight) {\n\tif (string.charAt(wantedIndex) === ' ') {\n\t\treturn wantedIndex;\n\t}\n\n\tconst direction = shouldSearchRight ? 1 : -1;\n\n\tfor (let index = 0; index <= 3; index++) {\n\t\tconst finalIndex = wantedIndex + (index * direction);\n\t\tif (string.charAt(finalIndex) === ' ') {\n\t\t\treturn finalIndex;\n\t\t}\n\t}\n\n\treturn wantedIndex;\n}\n\nexport default function cliTruncate(text, columns, options = {}) {\n\tconst {\n\t\tposition = 'end',\n\t\tspace = false,\n\t\tpreferTruncationOnSpace = false,\n\t} = options;\n\n\tlet {truncationCharacter = '…'} = options;\n\n\tif (typeof text !== 'string') {\n\t\tthrow new TypeError(`Expected \\`input\\` to be a string, got ${typeof text}`);\n\t}\n\n\tif (typeof columns !== 'number') {\n\t\tthrow new TypeError(`Expected \\`columns\\` to be a number, got ${typeof columns}`);\n\t}\n\n\tif (columns < 1) {\n\t\treturn '';\n\t}\n\n\tif (columns === 1) {\n\t\treturn truncationCharacter;\n\t}\n\n\tconst length = stringWidth(text);\n\n\tif (length <= columns) {\n\t\treturn text;\n\t}\n\n\tif (position === 'start') {\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst nearestSpace = getIndexOfNearestSpace(text, length - columns + 1, true);\n\t\t\treturn truncationCharacter + sliceAnsi(text, nearestSpace, length).trim();\n\t\t}\n\n\t\tif (space === true) {\n\t\t\ttruncationCharacter += ' ';\n\t\t}\n\n\t\treturn truncationCharacter + sliceAnsi(text, length - columns + stringWidth(truncationCharacter), length);\n\t}\n\n\tif (position === 'middle') {\n\t\tif (space === true) {\n\t\t\ttruncationCharacter = ` ${truncationCharacter} `;\n\t\t}\n\n\t\tconst half = Math.floor(columns / 2);\n\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst spaceNearFirstBreakPoint = getIndexOfNearestSpace(text, half);\n\t\t\tconst spaceNearSecondBreakPoint = getIndexOfNearestSpace(text, length - (columns - half) + 1, true);\n\t\t\treturn sliceAnsi(text, 0, spaceNearFirstBreakPoint) + truncationCharacter + sliceAnsi(text, spaceNearSecondBreakPoint, length).trim();\n\t\t}\n\n\t\treturn (\n\t\t\tsliceAnsi(text, 0, half)\n\t\t\t\t+ truncationCharacter\n\t\t\t\t+ sliceAnsi(text, length - (columns - half) + stringWidth(truncationCharacter), length)\n\t\t);\n\t}\n\n\tif (position === 'end') {\n\t\tif (preferTruncationOnSpace) {\n\t\t\tconst nearestSpace = getIndexOfNearestSpace(text, columns - 1);\n\t\t\treturn sliceAnsi(text, 0, nearestSpace) + truncationCharacter;\n\t\t}\n\n\t\tif (space === true) {\n\t\t\ttruncationCharacter = ` ${truncationCharacter}`;\n\t\t}\n\n\t\treturn sliceAnsi(text, 0, columns - stringWidth(truncationCharacter)) + truncationCharacter;\n\t}\n\n\tthrow new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${position}`);\n}\n","export const cliSymbols = {\n  arrowUp: '↑',\n  arrowRight: '→',\n  arrowBottom: '↓',\n  enter: '↳',\n  cross: '×',\n  longDash: '─',\n  longArrowRight: '⇢',\n  more: '…',\n  pointer: '❯',\n  pointerSmall: '›',\n  pointerSmallDouble: '»'\n};\n\nexport const cliColumns = process.stdout.columns || 80;\n","import { fromLength, sum } from '@neodx/std';\n\n// eslint-disable-next-line @typescript-eslint/prefer-includes\nexport const getNewLineLength = (source: string): number => (/\\r\\n/.test(source) ? 2 : 1);\n\nexport function getPointerOffset(source: string, lineNumber: number, columnNumber: number): number {\n  const lines = source.split(newlineRe);\n\n  if (lineNumber > lines.length) {\n    return source.length;\n  }\n  const newLineLength = getNewLineLength(source);\n\n  return sum(fromLength(lineNumber - 1, no => lines[no]!.length + newLineLength)) + columnNumber;\n}\n\nexport const newlineRe = /\\r?\\n/;\n","import { type Colors, colors as defaultColors } from '@neodx/colors';\nimport { sum } from '@neodx/std';\nimport cliTruncate from 'cli-truncate';\nimport { cliColumns } from '../shared';\nimport { getNewLineLength, getPointerOffset, newlineRe } from './source-map';\n\nexport interface PrintCodeFrameOptions {\n  colors?: Colors;\n  source: string;\n  indent?: number;\n  lineNumber: number;\n  columnNumber: number;\n  overscan?: number;\n}\n\nexport function printCodeFrame({\n  colors = defaultColors,\n  indent = 0,\n  columnNumber,\n  lineNumber,\n  source,\n  overscan = 2\n}: PrintCodeFrameOptions): string {\n  const newLineLength = getNewLineLength(source);\n  const pointerOffset = getPointerOffset(source, lineNumber, columnNumber);\n\n  const lines = source.split(newlineRe);\n  const lineOffset = sum(lines.slice(0, lineNumber).map(line => line.length + newLineLength));\n  const startIndex = Math.max(0, lineNumber - 1 - overscan);\n  const printedLines = lines.slice(startIndex, lineNumber + overscan);\n\n  if (printedLines.length === 0 || printedLines.some(isMinifiedCodeLike)) return '';\n\n  const printUnderline = (line: string, offset: number) =>\n    fillSpace(offset) + colors.red('^'.repeat(Math.max(1, line.length - offset)));\n  const printLineNo = (no = '') => colors.gray(`${no.padStart(3, ' ')}| `);\n\n  return printedLines\n    .flatMap((line, index) => {\n      const lineNo = startIndex + index + 1;\n      const isCurrentLine = lineNo === lineNumber;\n      const color = isCurrentLine ? colors.yellowBright : colors.yellow;\n\n      return [\n        cliTruncate(\n          printLineNo(String(lineNo)) + color(line.replace(/\\t/g, ' ')),\n          cliColumns - indent\n        ),\n        isCurrentLine &&\n          printLineNo() + printUnderline(line, pointerOffset - (lineOffset - line.length))\n      ];\n    })\n    .filter(Boolean)\n    .map(line => (indent ? fillSpace(indent) + line : line))\n    .join('\\n');\n}\n\n// to long, maybe it's a minified file, skip for codeframe\nconst isMinifiedCodeLike = (code: string) => code.length > 240;\nconst fillSpace = (length: number) => ' '.repeat(Math.max(length, 0));\n","import { isEmptyObject, omit } from '@neodx/std';\n\n/**\n * Serialize an error into a plain object that can be serialized into JSON then.\n */\nexport function serializeError(error: unknown) {\n  if (!(error instanceof Error)) return error;\n  const result: Record<string, unknown> = {\n    name: error.name,\n    stack: error.stack,\n    message: error.message,\n    ...(getErrorCustomProperties(error) ?? {})\n  };\n\n  if (error.cause instanceof Error) {\n    result.cause = serializeError(error.cause);\n  }\n\n  return result;\n}\n\nexport function getErrorCustomProperties(error: Error) {\n  const errorProperties = omit(Object.fromEntries(Object.entries(error)), builtInErrorProps);\n\n  return isEmptyObject(errorProperties) ? null : errorProperties;\n}\n\nconst builtInErrorProps = ['stack', 'cause', 'name', 'message'];\n","import { toInt } from '@neodx/std';\nimport { resolve } from 'pathe';\n\nexport interface ParsedStack {\n  file: string;\n  line: number;\n  method: string;\n  column: number;\n}\n\nexport const parseStackTraces = (\n  originalTrace: string,\n  filter: (trace: ParsedStack) => boolean = notInternals\n) =>\n  originalTrace\n    .split('\\n')\n    .map(parseSingleStack)\n    .filter((stack): stack is ParsedStack => stack !== null && filter(stack));\n\n// Based on https://github.com/stacktracejs/error-stack-parser\n// Credit to stacktracejs\nexport function parseSingleStack(raw: string): ParsedStack | null {\n  let line = raw.trim();\n\n  if (line.includes('(eval ')) {\n    line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n  }\n\n  let sanitizedLine = line\n    .replace(/^\\s+/, '')\n    .replace(/\\(eval code/g, '(')\n    .replace(/^.*?\\s+/, '');\n\n  // capture and preserve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n  // case it has spaces in it, as the string is split on \\s+ later on\n  const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n  if (location) {\n    // remove the parenthesized location from the line, if it was matched\n    sanitizedLine = sanitizedLine.replace(location[0], '');\n  }\n\n  // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n  // because this line doesn't have function name\n  const [url, lineNumber, columnNumber] = parseTraceLocation(\n    location ? location[1]! : sanitizedLine\n  );\n  let method = (location && sanitizedLine) || '';\n  let file = url && ['eval', '<anonymous>'].includes(url) ? undefined : url;\n\n  if (!file || !lineNumber || !columnNumber) return null;\n  if (method.startsWith('async ')) method = method.slice(6);\n  if (file.startsWith('file://')) file = file.slice(7);\n\n  return {\n    // normalize Windows path (\\ -> /)\n    file: resolve(file),\n    line: toInt(lineNumber),\n    column: toInt(columnNumber),\n    method\n  };\n}\n\nexport type TraceLocation = [url: string, line?: string, column?: string];\n\nexport function parseTraceLocation(urlLike: string): TraceLocation {\n  // Fail-fast but return locations like \"(native)\"\n  if (!urlLike.includes(':')) return [urlLike];\n\n  return (\n    (LOCATIONS_RE.exec(urlLike.replace(/^\\(|\\)$/g, ''))?.slice(1, 4) as TraceLocation) ?? [urlLike]\n  );\n}\n\nconst LOCATIONS_RE = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\nconst notInternals = (stack: ParsedStack) => !stack.file.match('node:internal');\n","import type { Colors } from '@neodx/colors';\nimport { colors as defaultColors } from '@neodx/colors';\nimport { isPrimitive, pick, toArray, True } from '@neodx/std';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { relative } from 'pathe';\nimport { serializeJSON } from '../../utils';\nimport { cliSymbols } from '../shared';\nimport { printCodeFrame } from './print-code-frame';\nimport { getErrorCustomProperties } from './serialize-error';\nimport { newlineRe } from './source-map';\nimport { type ParsedStack, parseStackTraces } from './stack-trace';\n\nexport interface PrintPrettyErrorOptions {\n  cwd?: string;\n  indent?: number;\n  colors?: Colors;\n  fullStack?: boolean;\n  codeFrame?: boolean | 'auto' | GetHighlightStacks;\n  stringify?: (value: unknown) => string;\n  filterStack?: (stack: ParsedStack) => boolean;\n}\n\nexport type GetHighlightStacks = (stacks: ParsedStack[]) => ParsedStack | ParsedStack[];\n\nexport function printPrettyError(originalError: unknown, options: PrintPrettyErrorOptions = {}) {\n  const {\n    cwd = process.cwd(),\n    indent = 0,\n    codeFrame = true,\n    fullStack = false,\n    stringify = value => serializeJSON(value, 2),\n    filterStack,\n    colors = defaultColors\n  } = options;\n  const getHighlightedStacks = codeFrame ? toCodeFrameCondition(codeFrame) : null;\n  const error = toError(originalError);\n\n  const stacks = parseStackTraces(error.stack || '', fullStack ? True : filterStack);\n  const errorProperties = getErrorCustomProperties(error);\n  const highlightedStacks = toArray(getHighlightedStacks?.(stacks) ?? []);\n  const prefix = (value = indent) => (value ? ' '.repeat(value) : '');\n\n  const messageParts = stacks.flatMap(stack => {\n    const { file, column, line, method } = stack;\n    const highlighted = highlightedStacks.includes(stack);\n    const color = highlighted ? colors.cyan : colors.gray;\n    const path = relative(cwd, file);\n\n    return [\n      color(\n        `${prefix()} ${colors.dim(\n          highlighted ? cliSymbols.pointerSmallDouble : cliSymbols.pointerSmall\n        )} ${[method, `${prefix()}${path}:${colors.dim(`${line}:${column}`)}`]\n          .filter(Boolean)\n          .join(' ')}`\n      ),\n      highlighted &&\n        colors.yellow(\n          printCodeFrame({\n            lineNumber: line,\n            columnNumber: column,\n            source: readFileSync(file, 'utf-8'),\n            indent: indent + 3,\n            colors\n          })\n        )\n    ];\n  });\n\n  if (errorProperties) {\n    messageParts.push(\n      `${prefix()}${colors.red(`${cliSymbols.longArrowRight} serialized error properties:`)}`,\n      `${colors.gray(\n        stringify(errorProperties)\n          .split(newlineRe)\n          .map(line => `${prefix()}${line}`)\n          .slice(1, -1)\n          .join('\\n')\n      )}`\n    );\n  }\n\n  if (error.cause && typeof error.cause === 'object' && 'name' in error.cause) {\n    error.cause.name = `${cliSymbols.enter} caused by ${error.cause.name}`;\n\n    messageParts.push(\n      ' ',\n      printPrettyError(error.cause, {\n        ...options,\n        indent: indent + 2,\n        codeFrame: false\n      })\n    );\n  }\n\n  return [\n    colors.red(`${prefix()}${colors.bold(error.name || 'Unknown Error')}: ${error.message}`),\n    ...messageParts\n  ]\n    .filter(Boolean)\n    .join('\\n');\n}\n\nconst toCodeFrameCondition = (codeFrame: true | 'auto' | GetHighlightStacks): GetHighlightStacks =>\n  typeof codeFrame === 'function'\n    ? codeFrame\n    : stacks => stacks.find(stack => existsSync(stack.file))!;\n\nconst toError = (error?: unknown) => {\n  if (!error) {\n    return pick(new Error('unknown error'), ['message', 'stack']) as Error;\n  }\n  if (isPrimitive(error)) {\n    const stack = String(error);\n\n    return {\n      message: stack.split(/\\n/g)[0],\n      stack\n    } as Error;\n  }\n  return error as Error;\n};\n","import { hasOwn } from '@neodx/std';\nimport type { LoggerBaseMeta } from '../core/types';\nimport { serializeHttpRequest, serializeHttpResponse } from '../http/utils';\nimport { serializeError } from './error';\n\nexport { serializeJSON } from '../utils/serialize-json';\nexport { serializeError, serializeHttpRequest, serializeHttpResponse };\n\nexport type LogSerializers = Record<string, LogSerializer>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type LogSerializer = (value: any) => any;\n\n// TODO(#168) A top-level public serializers API is deferred. `serializeMeta`/`DEFAULT_SERIALIZERS`\n// are internal to the node targets today; a first-class public contract is tracked in #168\n// (supersedes the stale Linear SEC-42 link).\nexport function serializeMeta(meta: LoggerBaseMeta, serializers?: LogSerializers) {\n  if (!serializers) return meta;\n  const result = {} as LoggerBaseMeta;\n\n  for (const [key, value] of Object.entries(meta)) {\n    result[key] = hasOwn(serializers, key) ? serializers[key]!(value) : value;\n  }\n  return result;\n}\n\nexport const DEFAULT_SERIALIZERS: LogSerializers = {\n  req: serializeHttpRequest,\n  res: serializeHttpResponse,\n  err: serializeError\n};\n","import { createWriteStream, type PathLike } from 'node:fs';\nimport type { Writable } from 'node:stream';\nimport type { LogChunk } from '../core/types';\nimport {\n  DEFAULT_SERIALIZERS,\n  type LogSerializers,\n  serializeError,\n  serializeJSON,\n  serializeMeta\n} from './serializers';\n\nexport interface JsonTargetParams {\n  target?: Writable | ((...args: unknown[]) => void);\n  dateKey?: string;\n  errorKey?: string;\n  messageKey?: string;\n  serializers?: LogSerializers;\n  levelValueKey?: string;\n}\n\nexport function file(filename: PathLike, options?: Omit<JsonTargetParams, 'target'>) {\n  return json({\n    target: createWriteStream(filename),\n    ...options\n  });\n}\n\nexport function json({\n  target = process.stdout,\n  dateKey = 'time',\n  errorKey = 'err',\n  messageKey = 'msg',\n  serializers = DEFAULT_SERIALIZERS,\n  levelValueKey = 'level'\n}: JsonTargetParams = {}) {\n  const write = 'writable' in target ? target.write.bind(target) : target;\n\n  return function handleLog({\n    msg,\n    error,\n    meta,\n    level,\n    name,\n    date,\n    __: { levels }\n  }: LogChunk<string>) {\n    const info = Object.assign(\n      {\n        [levelValueKey]: levels[level],\n        [dateKey]: date.getTime(),\n        [errorKey]: error && serializeError(error),\n        [messageKey]: msg\n      },\n      name && { name },\n      serializeMeta(meta, serializers)\n    );\n\n    write(serializeJSON(info) + '\\n');\n  };\n}\n","import { type ColorName, type Colors, colors as defaultColors } from '@neodx/colors';\nimport {\n  type Falsy,\n  hasOwn,\n  identity,\n  isEmpty,\n  isObject,\n  keys,\n  memoizeWeak,\n  omit,\n  values\n} from '@neodx/std';\nimport type { DefaultLoggerLevel } from '../core/shared';\nimport type { LogChunk } from '../core/types';\nimport { printPrettyError, type PrintPrettyErrorOptions } from './error';\nimport type { LogSerializers } from './serializers';\nimport { DEFAULT_SERIALIZERS, serializeJSON, serializeMeta } from './serializers';\nimport { cliSymbols } from './shared';\n\nexport interface PrettyTargetParams<Level extends string> {\n  /**\n   * Default handler for log messages without errors.\n   */\n  log?(...args: unknown[]): void;\n\n  /**\n   * Default handler for log messages with errors (e.g. `logger.error(new Error(), 'message')`).\n   */\n  logError?(...args: unknown[]): void;\n  /**\n   * Custom implementation of colors from `@neodx/colors` or other libraries with same contracts.\n   * @example `createColors(false, false)` - disable colors completely\n   */\n  colors?: Colors;\n  // Possible feature for future versions\n  // underline?: boolean;\n  /**\n   * Display milliseconds in log message (e.g. `12:34:56.789`).\n   * Works only if `displayTime` is `true`.\n   */\n  displayMs?: boolean;\n  serializers?: LogSerializers;\n  /**\n   * Display time in a log message\n   */\n  displayTime?: boolean;\n  /**\n   * Display log level in log message.\n   */\n  displayLevel?: boolean;\n\n  prettyErrors?: boolean | Partial<PrintPrettyErrorOptions>;\n\n  levelColors?: Partial<Record<Level, ColorName>> | null;\n  levelBadges?: Partial<Record<Level, string>> | null;\n}\n\n/**\n * Creates a pretty log handler for development mode in node.\n */\nexport function pretty<const Level extends string>({\n  // eslint-disable-next-line no-console\n  log = console.log,\n  logError = console.error,\n  colors = defaultColors,\n  displayMs = false,\n  serializers = DEFAULT_SERIALIZERS,\n  displayTime = true,\n  displayLevel = true,\n  prettyErrors = true,\n  levelColors = defaultLevelColors as any,\n  levelBadges = defaultLevelBadges as any\n}: PrettyTargetParams<Level> = {}) {\n  const getLevelSetting = <T>(\n    settings: Partial<Record<Level, T>> | null | false,\n    level: Level\n  ): T | null => (settings && hasOwn(settings, level) ? settings[level]! : null);\n  const maxBadgesLength = levelBadges\n    ? Math.max(...values(levelBadges).map(b => String(b).length))\n    : 0;\n  const prettyErrorCustomOptions: PrintPrettyErrorOptions = {\n    colors,\n    ...(isObject(prettyErrors) ? prettyErrors : {})\n  };\n\n  return function prettyHandler(chunk: LogChunk<Level>) {\n    const {\n      name,\n      date,\n      msg,\n      meta,\n      error,\n      level: resolvedLevel,\n      __: { levels, originalLevel: level }\n    } = chunk;\n\n    // In `prettyErrors` mode, we will display error in a more readable way\n    const possibleLabelFromError = prettyErrors ? null : error?.name;\n    const userDefinedMessage = prettyErrors && msg === error?.message ? null : msg;\n\n    const maxLevelLength = getMaxObjectKeysLength(levels);\n    const label = (possibleLabelFromError ?? level.toLowerCase()).padEnd(1);\n    const badge = getLevelSetting(levelBadges, level);\n    const levelColorName =\n      getLevelSetting(levelColors, level) ?? getLevelSetting(levelColors, resolvedLevel);\n    const levelColorFn = levelColorName ? colors[levelColorName] : identity;\n\n    const visibleMeta = omit(meta, ['pid', 'hostname']);\n\n    const fullLabel = mergeString([badge?.padEnd(maxBadgesLength), label]);\n    const firstPart = mergeString([\n      name && colors.gray(`[${name.split(':').join(nameDelimiter)}]`),\n      displayLevel && levelColorFn(fullLabel.padEnd(maxLevelLength + maxBadgesLength))\n    ]);\n\n    const haveVisibleMeta = !isEmpty(keys(visibleMeta));\n    const formatter = displayMs ? withMs : withoutMs;\n    const formatted = mergeString([\n      displayTime && colors.gray(formatter.format(date)),\n      firstPart,\n      userDefinedMessage,\n      haveVisibleMeta && serializeJSON(serializeMeta(visibleMeta, serializers), 2)\n    ]);\n\n    if (error) {\n      const [_, ...stackBody] = error.stack?.toString().split('\\n') ?? [];\n\n      if (prettyErrors) {\n        const shouldPrintErrorInAdditionalLine = userDefinedMessage || haveVisibleMeta;\n        const postfix = error instanceof Error ? '\\n' : '';\n\n        if (shouldPrintErrorInAdditionalLine) {\n          logError(formatted, '\\n', printPrettyError(error, prettyErrorCustomOptions), postfix);\n        } else {\n          logError(formatted, printPrettyError(error, prettyErrorCustomOptions), postfix);\n        }\n      } else {\n        logError(formatted, colors.gray(stackBody.map(line => line.replace(/^/, '\\n')).join('')));\n      }\n    } else {\n      log(formatted);\n    }\n  };\n}\n\nconst mergeString = (parts: Array<string | Falsy>): string => parts.filter(Boolean).join(' ');\nconst getMaxObjectKeysLength = memoizeWeak((levels: object) =>\n  Math.max(...Object.keys(levels).map(level => level.length))\n);\n\nconst nameDelimiter = ` ${cliSymbols.pointerSmall} `;\nconst defaultLevelBadges = {\n  info: '◌',\n  done: '✔',\n  warn: '⚠',\n  error: '✘',\n  debug: '⚙'\n} as Partial<Record<DefaultLoggerLevel, string>>;\n\nconst defaultLevelColors = {\n  info: 'cyanBright',\n  warn: 'yellowBright',\n  done: 'greenBright',\n  debug: 'blueBright',\n  error: 'red',\n  verbose: 'bold'\n} as Partial<Record<DefaultLoggerLevel, ColorName>>;\n\npretty.defaultBadges = defaultLevelBadges;\npretty.defaultColors = defaultLevelColors;\n\nconst formatOptions: Intl.DateTimeFormatOptions = {\n  hour: 'numeric',\n  minute: 'numeric',\n  second: 'numeric',\n  hour12: false\n};\n\nconst withMs = new Intl.DateTimeFormat('en-US', {\n  ...formatOptions,\n  fractionalSecondDigits: 3\n});\nconst withoutMs = new Intl.DateTimeFormat('en-US', {\n  ...formatOptions\n});\n","import { hostname } from 'node:os';\nimport { createLoggerFactory, type CreateLoggerFactoryParams } from '../core/create-logger-factory';\nimport {\n  DEFAULT_LOGGER_LEVELS,\n  DEFAULT_LOGGER_PARAMS,\n  type DefaultLoggerLevel,\n  LOGGER_SILENT_LEVEL\n} from '../core/shared';\nimport { printf, readArguments } from '../utils';\nimport { createLoggerAutoFactory } from '../utils/create-auto-logger-factory.ts';\nimport { file, json } from './json';\nimport { pretty } from './pretty';\n\nexport {\n  printCodeFrame,\n  type PrintCodeFrameOptions,\n  printPrettyError,\n  type PrintPrettyErrorOptions\n} from './error';\nexport type { JsonTargetParams } from './json';\nexport type { PrettyTargetParams } from './pretty';\n\nexport {\n  createLoggerFactory,\n  type CreateLoggerFactoryParams,\n  DEFAULT_LOGGER_LEVELS,\n  DEFAULT_LOGGER_PARAMS,\n  type DefaultLoggerLevel,\n  file,\n  json,\n  LOGGER_SILENT_LEVEL,\n  pretty\n};\n\nexport const NODE_LOGGER_SYSTEM_INFO = { pid: process.pid, hostname: hostname() };\n\nexport const createLogger = createLoggerFactory({\n  defaultParams: {\n    ...DEFAULT_LOGGER_PARAMS,\n    meta: NODE_LOGGER_SYSTEM_INFO,\n    target: process.env.NODE_ENV === 'production' ? json() : pretty()\n  },\n  formatMessage: printf,\n  readArguments\n});\nexport const createAutoLogger = createLoggerAutoFactory(createLogger);\n"],"x_google_ignoreList":[7,8,9,10,11,12,13,14,15,16],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAa,sBAAsB;AACnC,MAAa,wBAAwB;CACnC,OAAO;CACP,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;CAEP,SAAS;CACT,SAAS;EACR,sBAAsB;AACzB;AAEA,MAAa,wBAAwB;CACnC,QAAQ;CACR,OAAO;CACP,MAAM;CACN,WAAW,CAAC;CACZ,QAAQ,CAAC;CACT,MAAM,CAAC;AACT;;;ACEA,SAAgB,oBAAqE,EACnF,eACA,eACA,iBACqF;CACrF,SAAS,aAAa,YAA8B;EAClD,MAAM,SAAS;GAAE,GAAG;GAAe,GAAG;EAAW;EAGjD,MAAM,EAAE,MAAM,QAAQ,OAAO,WAAW,OAAO,IAAI,WAAW;EAC9D,MAAM,YAAY,QAAQ,OAAO,SAAS;EAG1C,MAAM,UAAU,QAAQ,MAAM,CAAC,CAC5B,OAAO,QAAQ,CAAC,CAChB,KAAI,WAAW,iBAAiB,MAAM,IAAI,EAAE,OAAO,IAAI,MAAO,CAAC,CAC/D,KAAK,EAAE,QAAQ,aAAa;GAC3B,OAAO,SAAS,qBAAqB,OAAO,MAAM;GAClD,QAAQ,QAAQ,MAAM,CAAC,CAAC,OAAO,QAAQ;EACzC,EAAE,CAAC,CACF,QAAO,OAAM,CAAC,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAE1D,MAAM,OAAO,cAA2C,GAAG,SAAoB;GAC7E,MAAM,QAAQ,qBAAqB,cAAc,MAAM;GAEvD,IAAI,SAAS,SAAS,KAAM,aAAa,OAAO,SAAU,OAAO,YAAc;GAC/E,MAAM,CAAC,CAAC,qBAAqB,IAAI,GAAG,UAAU,kBAAkB,SAAS,cAAc,IAAI;GAC3F,MAAM,cAAc,OAAO,kBAAkB;GAC7C,MAAM,QAAQ,UAAU,QACrB,OAAO,gBAAgB,YAAY,KAAK,GACzC;IACE;IACA;IACA;IACA,MAAM;KACJ,GAAG;KACH,GAAG;IACL;IACA,sBAAM,IAAI,KAAK;IACf;IACA;IACA,KAAK,QAAQ,OAAO,IAAI,cAAc,cAAc,aAAa,OAAO;IACxE,IAAI;KACF,eAAe;KACP;IACV;GACF,CACF;GAEA,KAAK,MAAM,UAAU,SAAS;IAC5B,IAAI,OAAO,SAAS,OAAO,OAAO,SAAU,OAAO,QAAS;IAC5D,OAAO,OAAO,SAAQ,OAAM,GAAG,KAAY,CAAC;GAC9C;EACF;EAMA,OAAO;GACL,GALc,OAAO,YACrB,KAAK,MAAM,CAAC,CAAC,KAAI,UAAS,CAAC,OAAO,IAAI,KAAK,MAAM,KAAK,CAAC,CAAC,CAI/C;GACT,IAAI,OAAO;IACT,OAAO,EAAE,GAAG,OAAO,KAAK;GAC1B;GACA,OAAO,WAAgB,aAAa;IAAE,GAAG;IAAY,GAAG;GAAO,CAAC;GAChE,QAAQ,WAAmB,WACzB,aAAa;IACX,GAAG;IACH,GAAG;IACH,MAAM,OAAO,GAAG,KAAK,GAAG,cAAc;GACxC,CAAC;EACL;CACF;CAEA,OAAO;AACT;AAEA,MAAM,WAAW,GAAG,mBAAmB;AACvC,MAAM,wBACJ,OACA,WAC0B;CAC1B,MAAM,QAAQ,OAAO;CAErB,OAAO,eAAe,KAAK,IAAI,qBAAqB,OAAO,MAAM,IAAI;AACvE;;;AC7GA,MAAa,2BACV,aAEC,KACA,kBACkB;CAClB,MAAM,SAAS,eAAe,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI;CAEtD,OAAO,WAAW,SACd,QAAQ;EAAE,GAAG;EAAe,GAAG;CAAO,CAAiC,IACvE;AACN;;;;;;;ACVF,MAAa,iBAAiB,OAAgB,UAC5C,KAAK,UAAU,OAAO,mBAAmB,GAAG,KAAK;AAEnD,MAAa,YAAY,SAAmB,CAAC,MAC3C,YAAY,OAAO,SAAS,IAAI,MAAM,OAAO,KAAK,GAAG,IAAI,GAAG;AAE9D,SAAS,qBAAqB;CAC5B,MAAM,QAAmB,CAAC;CAC1B,MAAM,OAAiB,CAAC;CAExB,MAAM,kBAAkB,UAAkB,SAAS,QAAQ,IAAI,KAAK,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC;CAExF,OAAO,SAAS,SAAwB,KAAa,OAAgB;EACnE,IAAI,MAAM,WAAW,GAAG;GACtB,MAAM,KAAK,KAAK;GAEhB,OAAO;EACT;EAEA,MAAM,YAAY,MAAM,QAAQ,IAAI;EAGpC,IAFoB,aAAa,GAEhB;GACf,MAAM,OAAO,YAAY,CAAC;GAC1B,KAAK,OAAO,WAAW,UAAU,GAAG;EACtC,OAAO;GACL,MAAM,KAAK,IAAI;GACf,KAAK,KAAK,GAAG;EACf;EAEA,IAAI,MAAM,SAAS,KAAK,GACtB,OAAO,eAAe,MAAM,QAAQ,KAAK,CAAC;EAG5C,OAAO;CACT;AACF;;;;;;;;;AC/BA,SAAgB,OAAO,UAAkB,UAAqB;CAC5D,MAAM,kBAAkB,MAAM,KAAK,QAAQ;CAC3C,MAAM,CAAC,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;CAa9C,OAZe,MAAM,QAClB,KAAK,SAAS;EACb,MAAM,YAAY,KAAK;EACvB,MAAM,SAAS,OAAO,iBAAiB,SAAS,IAAI,gBAAgB,aAAa;EAEjF,IAAI,KAAK,SAAS,OAAO,gBAAgB,MAAM,CAAC,IAAI,GAAG;EACvD,IAAI,KAAK,SAAS,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI;EACrD,OAAO;CACT,GACA,CAAC,OAAO,CAGE,CAAC,CAAC,KAAK,EAAE;AACvB;AAEA,MAAM,kBAAkB;CACtB,IAAI,UAAmB,OAAO,KAAK;CACnC,IAAI,UAAmB,KAAK,MAAM,OAAO,KAAK,CAAC;CAC/C,IAAI,UAAmB,OAAO,SAAS,OAAO,KAAK,GAAG,EAAE;CACxD,IAAI,UAAmB,OAAO,WAAW,OAAO,KAAK,CAAC;CACtD,GAAG;CACH,GAAG;CACH,GAAG;AACL;;;;;;;;;;;;;;;;;;;;;;;;ACVA,SAAgB,cAAc,MAA+B;CAC3D,MAAM,CAAC,UAAU,GAAG,aAAa;CAEjC,IAAI,QAAQ,QAAQ,GAClB,OAAO;EAAC,QAAQ,SAAS,IAAI,CAAC,SAAS,OAAO,IAAI;EAAW,CAAC;EAAG;CAAQ;CAG3E,IAAI,aAAa,QAAQ,GAAG;EAC1B,IAAI,SAAS,YAAY,QAAQ,SAAS,GAAG,GAAG;GAC9C,MAAM,EAAE,KAAK,GAAG,WAAW;GAE3B,OAAO;IAAC,QAAQ,SAAS,IAAI,CAAC,IAAI,OAAO,IAAI;IAAW;IAAQ;GAAG;EACrE;EAEA,OAAO,CAAC,WAAW,QAAe;CACpC;CAEA,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB;;;ACvCA,MAAa,+BAA+B,QAAyB;CACnE,IAAI,CAAC,IAAI,aAAa,OAAO;CAC7B,MAAM,EAAE,YAAY,kBAAkB;CAEtC,OAAO,GAAG,WAAW,GAAG;AAC1B;AAEA,MAAa,yBAAyB,KAAsB,QAAgB,YAAY,QACtF,GAAG,OAAO,KAAK,IAAI,QAAQ,YAAY,KAAK,KAAK,IAAI,YAAY,OAAO,UACtE,OAAO,KAAK,eAAe,sBAAsB,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC,CACtF;AAEF,MAAa,sBAAsB,SAAiB;CAClD,MAAM,cAAc,QAAQ;CAG5B,QAFkB,cAAc,OAAO,MAAO,KAAA,CAG3C,eAAe,MAAM;EACpB,OAAO;EACP,MAAM,cAAc,WAAW;EAC/B,aAAa;EACb,uBAAuB;CACzB,CAAC,CAAC,CACD,OAAO,CAAC;AACb;AAEA,SAAgB,qBAAqB,KAAsB;CACzD,MAAM,EAAE,IAAI,MAAM,OAAO,QAAQ,QAAQ,UAAU,sBAAsB,QAAQ;CACjF,MAAM,aAAa,QAAQ,IAAI;CAE/B,OAAO;EACL,IAAI,OAAO,OAAO,aAAa,GAAG,IAAK,MAAM,MAAM;EACnD,KAAK,sBAAsB,GAAG;EAC9B;EACA;EACA;EACA;EACA,YAAY,YAAY;EACxB,eAAe,YAAY;GAC1B,sBAAsB,OAAO;CAChC;AACF;AAEA,SAAgB,sBAAsB,KAAsB;CAC1D,OAAO;EACL,YAAY,IAAI,cAAe,IAAY,aAAa;EACxD,SAAS,IAAI,WAAW;GACvB,sBAAsB;CACzB;AACF;AAEA,MAAa,yBAAyB,EAAE,aAAa,MAAM,UACzD,gBAAgB,OAAO,SAAS,WAAW,OAAQ,KAAK,QAAQ;AAElE,MAAa,iCAAiC;CAC5C,IAAI,mBAAmB;CAEvB,OAAO,SAAS,oBAAoB;EAClC,mBAAmB,oBAAoB,SAAS,IAAI,mBAAmB;EAEvE,OAAO;CACT;AACF;AAEA,MAAa,6BAA6B,OAAO,qBAAqB;AACtE,MAAa,sBAAsB,OAAO,KAAK;AAE/C,MAAM,SAAS;;;ACrEf,SAAwB,qBAAqB,WAAW;CACvD,IAAI,CAAC,OAAO,UAAU,SAAS,GAC9B,OAAO;CAKR,OAAO,aAAa,SACnB,aAAa,QACb,cAAc,QACd,cAAc,QAEb,SAAU,aAAa,aAAa,SAAU,cAAc,SAE5D,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SAEpC,SAAU,aAAa,aAAa,SACpC,SAAU,aAAa,aAAa,SAEpC,UAAW,aAAa,aAAa,UAErC,UAAW,aAAa,aAAa,UAErC,UAAW,aAAa,aAAa;AAExC;;;ACvCA,MAAM,yBAAyB;AAE/B,MAAM,cAAc,SAAS,OAAM,SAAQ,UAAU,OAAO,OAAO;AAEnE,MAAM,eAAe,SAAS,OAAM,SAAQ,UAAU,KAAK,OAAO,KAAK,KAAK;AAE5E,MAAM,eAAe,SAAS,OAAO,KAAK,OAAO,SAAS,UAAU,KAAK,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK;AAE1G,MAAM,SAAS;CACd,UAAU;EACT,OAAO,CAAC,GAAG,CAAC;EAEZ,MAAM,CAAC,GAAG,EAAE;EACZ,KAAK,CAAC,GAAG,EAAE;EACX,QAAQ,CAAC,GAAG,EAAE;EACd,WAAW,CAAC,GAAG,EAAE;EACjB,UAAU,CAAC,IAAI,EAAE;EACjB,SAAS,CAAC,GAAG,EAAE;EACf,QAAQ,CAAC,GAAG,EAAE;EACd,eAAe,CAAC,GAAG,EAAE;CACtB;CACA,OAAO;EACN,OAAO,CAAC,IAAI,EAAE;EACd,KAAK,CAAC,IAAI,EAAE;EACZ,OAAO,CAAC,IAAI,EAAE;EACd,QAAQ,CAAC,IAAI,EAAE;EACf,MAAM,CAAC,IAAI,EAAE;EACb,SAAS,CAAC,IAAI,EAAE;EAChB,MAAM,CAAC,IAAI,EAAE;EACb,OAAO,CAAC,IAAI,EAAE;EAGd,aAAa,CAAC,IAAI,EAAE;EACpB,MAAM,CAAC,IAAI,EAAE;EACb,MAAM,CAAC,IAAI,EAAE;EACb,WAAW,CAAC,IAAI,EAAE;EAClB,aAAa,CAAC,IAAI,EAAE;EACpB,cAAc,CAAC,IAAI,EAAE;EACrB,YAAY,CAAC,IAAI,EAAE;EACnB,eAAe,CAAC,IAAI,EAAE;EACtB,YAAY,CAAC,IAAI,EAAE;EACnB,aAAa,CAAC,IAAI,EAAE;CACrB;CACA,SAAS;EACR,SAAS,CAAC,IAAI,EAAE;EAChB,OAAO,CAAC,IAAI,EAAE;EACd,SAAS,CAAC,IAAI,EAAE;EAChB,UAAU,CAAC,IAAI,EAAE;EACjB,QAAQ,CAAC,IAAI,EAAE;EACf,WAAW,CAAC,IAAI,EAAE;EAClB,QAAQ,CAAC,IAAI,EAAE;EACf,SAAS,CAAC,IAAI,EAAE;EAGhB,eAAe,CAAC,KAAK,EAAE;EACvB,QAAQ,CAAC,KAAK,EAAE;EAChB,QAAQ,CAAC,KAAK,EAAE;EAChB,aAAa,CAAC,KAAK,EAAE;EACrB,eAAe,CAAC,KAAK,EAAE;EACvB,gBAAgB,CAAC,KAAK,EAAE;EACxB,cAAc,CAAC,KAAK,EAAE;EACtB,iBAAiB,CAAC,KAAK,EAAE;EACzB,cAAc,CAAC,KAAK,EAAE;EACtB,eAAe,CAAC,KAAK,EAAE;CACxB;AACD;AAE6B,OAAO,KAAK,OAAO,QAAQ;AACxD,MAAa,uBAAuB,OAAO,KAAK,OAAO,KAAK;AAC5D,MAAa,uBAAuB,OAAO,KAAK,OAAO,OAAO;AACpC,CAAC,GAAG,sBAAsB,GAAG,oBAAoB;AAE3E,SAAS,iBAAiB;CACzB,MAAM,wBAAQ,IAAI,IAAI;CAEtB,KAAK,MAAM,CAAC,WAAW,UAAU,OAAO,QAAQ,MAAM,GAAG;EACxD,KAAK,MAAM,CAAC,WAAW,UAAU,OAAO,QAAQ,KAAK,GAAG;GACvD,OAAO,aAAa;IACnB,MAAM,UAAU,MAAM,GAAG;IACzB,OAAO,UAAU,MAAM,GAAG;GAC3B;GAEA,MAAM,aAAa,OAAO;GAE1B,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;EAC7B;EAEA,OAAO,eAAe,QAAQ,WAAW;GACxC,OAAO;GACP,YAAY;EACb,CAAC;CACF;CAEA,OAAO,eAAe,QAAQ,SAAS;EACtC,OAAO;EACP,YAAY;CACb,CAAC;CAED,OAAO,MAAM,QAAQ;CACrB,OAAO,QAAQ,QAAQ;CAEvB,OAAO,MAAM,OAAO,WAAW;CAC/B,OAAO,MAAM,UAAU,YAAY;CACnC,OAAO,MAAM,UAAU,YAAY;CACnC,OAAO,QAAQ,OAAO,WAAW,sBAAsB;CACvD,OAAO,QAAQ,UAAU,YAAY,sBAAsB;CAC3D,OAAO,QAAQ,UAAU,YAAY,sBAAsB;CAG3D,OAAO,iBAAiB,QAAQ;EAC/B,cAAc;GACb,QAAQ,KAAK,OAAO,SAAS;IAG5B,IAAI,QAAQ,SAAS,UAAU,MAAM;KACpC,IAAI,MAAM,GACT,OAAO;KAGR,IAAI,MAAM,KACT,OAAO;KAGR,OAAO,KAAK,OAAQ,MAAM,KAAK,MAAO,EAAE,IAAI;IAC7C;IAEA,OAAO,KACH,KAAK,KAAK,MAAM,MAAM,MAAM,CAAC,IAC7B,IAAI,KAAK,MAAM,QAAQ,MAAM,CAAC,IAC/B,KAAK,MAAM,OAAO,MAAM,CAAC;GAC7B;GACA,YAAY;EACb;EACA,UAAU;GACT,QAAO,QAAO;IACb,MAAM,UAAU,yBAAyB,KAAK,IAAI,SAAS,EAAE,CAAC;IAC9D,IAAI,CAAC,SACJ,OAAO;KAAC;KAAG;KAAG;IAAC;IAGhB,IAAI,CAAC,eAAe;IAEpB,IAAI,YAAY,WAAW,GAC1B,cAAc,CAAC,GAAG,WAAW,CAAC,CAAC,KAAI,cAAa,YAAY,SAAS,CAAC,CAAC,KAAK,EAAE;IAG/E,MAAM,UAAU,OAAO,SAAS,aAAa,EAAE;IAE/C,OAAO;KAEL,WAAW,KAAM;KACjB,WAAW,IAAK;KACjB,UAAU;IAEX;GACD;GACA,YAAY;EACb;EACA,cAAc;GACb,QAAO,QAAO,OAAO,aAAa,GAAG,OAAO,SAAS,GAAG,CAAC;GACzD,YAAY;EACb;EACA,eAAe;GACd,QAAO,SAAQ;IACd,IAAI,OAAO,GACV,OAAO,KAAK;IAGb,IAAI,OAAO,IACV,OAAO,MAAM,OAAO;IAGrB,IAAI;IACJ,IAAI;IACJ,IAAI;IAEJ,IAAI,QAAQ,KAAK;KAChB,QAAS,OAAO,OAAO,KAAM,KAAK;KAClC,QAAQ;KACR,OAAO;IACR,OAAO;KACN,QAAQ;KAER,MAAM,YAAY,OAAO;KAEzB,MAAM,KAAK,MAAM,OAAO,EAAE,IAAI;KAC9B,QAAQ,KAAK,MAAM,YAAY,CAAC,IAAI;KACpC,OAAQ,YAAY,IAAK;IAC1B;IAEA,MAAM,QAAQ,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI;IAE3C,IAAI,UAAU,GACb,OAAO;IAIR,IAAI,SAAS,MAAO,KAAK,MAAM,IAAI,KAAK,IAAM,KAAK,MAAM,KAAK,KAAK,IAAK,KAAK,MAAM,GAAG;IAEtF,IAAI,UAAU,GACb,UAAU;IAGX,OAAO;GACR;GACA,YAAY;EACb;EACA,WAAW;GACV,QAAQ,KAAK,OAAO,SAAS,OAAO,cAAc,OAAO,aAAa,KAAK,OAAO,IAAI,CAAC;GACvF,YAAY;EACb;EACA,WAAW;GACV,QAAO,QAAO,OAAO,cAAc,OAAO,aAAa,GAAG,CAAC;GAC3D,YAAY;EACb;CACD,CAAC;CAED,OAAO;AACR;AAEA,MAAM,aAAa,eAAe;;;ACzNlC,MAAM,cAAc;AAEpB,MAAM,UAAU,CACf,QACA,GACD;AAEA,MAAM,YAAW,SAAQ,GAAG,QAAQ,GAAG,GAAG,KAAK;AAE/C,MAAM,aAAa,WAAW,WAAW,gBAAgB;CACxD,IAAI,SAAS,CAAC;CACd,YAAY,CAAC,GAAG,SAAS;CAEzB,KAAK,IAAI,YAAY,WAAW;EAC/B,MAAM,iBAAiB;EACvB,IAAI,SAAS,SAAS,GAAG,GACxB,WAAW,SAAS,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;EAGxC,MAAM,OAAO,WAAW,MAAM,IAAI,OAAO,SAAS,UAAU,EAAE,CAAC;EAC/D,IAAI,MAAM;GACT,MAAM,cAAc,UAAU,QAAQ,KAAK,SAAS,CAAC;GACrD,IAAI,gBAAgB,IACnB,OAAO,KAAK,SAAS,YAAY,OAAO,cAAc,CAAC;QAEvD,UAAU,OAAO,aAAa,CAAC;EAEjC,OAAO,IAAI,WAAW;GACrB,OAAO,KAAK,SAAS,CAAC,CAAC;GACvB;EACD,OACC,OAAO,KAAK,SAAS,cAAc,CAAC;CAEtC;CAEA,IAAI,WAAW;EACd,SAAS,OAAO,QAAQ,SAAS,UAAU,OAAO,QAAQ,OAAO,MAAM,KAAK;EAE5E,IAAI,gBAAgB,KAAA,GAAW;GAC9B,MAAM,iBAAiB,SAAS,WAAW,MAAM,IAAI,OAAO,SAAS,aAAa,EAAE,CAAC,CAAC;GAGtF,SAAS,OAAO,QAAQ,SAAS,SAAS,SAAS,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,GAAG,SAAS,IAAI,GAAG,CAAC,CAAC;EAChH;CACD;CAEA,OAAO,OAAO,KAAK,EAAE;AACtB;AAEA,SAAwB,UAAU,QAAQ,OAAO,KAAK;CACrD,MAAM,aAAa,CAAC,GAAG,MAAM;CAC7B,MAAM,YAAY,CAAC;CAEnB,IAAI,YAAY,OAAO,QAAQ,WAAW,MAAM,WAAW;CAC3D,IAAI,iBAAiB;CACrB,IAAI;CACJ,IAAI,UAAU;CACd,IAAI,SAAS;CAEb,KAAK,MAAM,CAAC,OAAO,cAAc,WAAW,QAAQ,GAAG;EACtD,IAAI,aAAa;EAEjB,IAAI,QAAQ,SAAS,SAAS,GAAG;GAChC,MAAM,OAAO,UAAU,KAAK,OAAO,MAAM,OAAO,QAAQ,EAAE,CAAC;GAC3D,WAAW,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,KAAA;GAE/C,IAAI,UAAU,WAAW;IACxB,iBAAiB;IAEjB,IAAI,aAAa,KAAA,GAChB,UAAU,KAAK,QAAQ;GAEzB;EACD,OAAO,IAAI,kBAAkB,cAAc,KAAK;GAC/C,iBAAiB;GACjB,aAAa;EACd;EAEA,IAAI,CAAC,kBAAkB,CAAC,YACvB;EAGD,IAAI,CAAC,YAAY,KAAK,SAAS,KAAK,qBAAqB,UAAU,YAAY,CAAC,GAAG;GAClF;GAEA,IAAI,OAAO,QAAQ,UAClB;EAEF;EAEA,IAAI,UAAU,SAAS,WAAW,WACjC,UAAU;OACJ,IAAI,YAAY,SAAS,CAAC,kBAAkB,aAAa,KAAA,GAC/D,SAAS,UAAU,SAAS;OACtB,IAAI,WAAW,WAAW;GAChC,UAAU,UAAU,WAAW,MAAM,QAAQ;GAC7C;EACD;CACD;CAEA,OAAO;AACR;;;ACxGA,SAAwB,UAAU,EAAC,YAAY,UAAS,CAAC,GAAG;CAC3D,MAAM,UAAU,CACZ,gIACH,0DACD,CAAC,CAAC,KAAK,GAAG;CAEV,OAAO,IAAI,OAAO,SAAS,YAAY,KAAA,IAAY,GAAG;AACvD;;;ACLA,MAAM,QAAQ,UAAU;AAExB,SAAwB,UAAU,QAAQ;CACzC,IAAI,OAAO,WAAW,UACrB,MAAM,IAAI,UAAU,gCAAgC,OAAO,OAAO,GAAG;CAMtE,OAAO,OAAO,QAAQ,OAAO,EAAE;AAChC;;;ACXA,SAAS,YAAY,GAAG;CACvB,OAAO,MAAM,OACT,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,MAAM,QACN,KAAK,QAAS,KAAK,QACnB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAC3B;AAEA,SAAS,YAAY,GAAG;CACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AACzB;AAEA,SAAS,OAAO,GAAG;CAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,MAAM,SACN,MAAM,SACN,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK;AAC1B;;;ACvWA,SAAS,SAAS,WAAW;CAC5B,IAAI,CAAC,OAAO,cAAc,SAAS,GAClC,MAAM,IAAI,UAAU,gCAAgC,OAAO,UAAU,IAAI;AAE3E;AAQA,SAAgB,eAAe,WAAW,EAAC,kBAAkB,UAAS,CAAC,GAAG;CACzE,SAAS,SAAS;CAElB,IACC,YAAY,SAAS,KAClB,OAAO,SAAS,KACf,mBAAmB,YAAY,SAAS,GAE5C,OAAO;CAGR,OAAO;AACR;;;;CC1BA,OAAO,gBAAgB;EAEtB,OAAO;CACR;;ACCA,MAAM,YAAY,IAAI,KAAK,UAAU;AAErC,SAAwB,YAAY,QAAQ,UAAU,CAAC,GAAG;CACzD,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GACnD,OAAO;CAGR,MAAM,EACL,oBAAoB,MACpB,uBAAuB,UACpB;CAEJ,IAAI,CAAC,sBACJ,SAAS,UAAU,MAAM;CAG1B,IAAI,OAAO,WAAW,GACrB,OAAO;CAGR,IAAI,QAAQ;CACZ,MAAM,wBAAwB,EAAC,iBAAiB,CAAC,kBAAiB;CAElE,KAAK,MAAM,EAAC,SAAS,eAAc,UAAU,QAAQ,MAAM,GAAG;EAC7D,MAAM,YAAY,UAAU,YAAY,CAAC;EAGzC,IAAI,aAAa,MAAS,aAAa,OAAQ,aAAa,KAC3D;EAID,IAAI,aAAa,OAAU,aAAa,KACvC;EAGD,KAAA,GAAA,mBAAA,QAAA,CAAe,CAAC,CAAC,KAAK,SAAS,GAAG;GACjC,SAAS;GACT;EACD;EAEA,SAAS,eAAe,WAAW,qBAAqB;CACzD;CAEA,OAAO;AACR;;;AC9CA,SAAS,uBAAuB,QAAQ,aAAa,mBAAmB;CACvE,IAAI,OAAO,OAAO,WAAW,MAAM,KAClC,OAAO;CAGR,MAAM,YAAY,oBAAoB,IAAI;CAE1C,KAAK,IAAI,QAAQ,GAAG,SAAS,GAAG,SAAS;EACxC,MAAM,aAAa,cAAe,QAAQ;EAC1C,IAAI,OAAO,OAAO,UAAU,MAAM,KACjC,OAAO;CAET;CAEA,OAAO;AACR;AAEA,SAAwB,YAAY,MAAM,SAAS,UAAU,CAAC,GAAG;CAChE,MAAM,EACL,WAAW,OACX,QAAQ,OACR,0BAA0B,UACvB;CAEJ,IAAI,EAAC,sBAAsB,QAAO;CAElC,IAAI,OAAO,SAAS,UACnB,MAAM,IAAI,UAAU,0CAA0C,OAAO,MAAM;CAG5E,IAAI,OAAO,YAAY,UACtB,MAAM,IAAI,UAAU,4CAA4C,OAAO,SAAS;CAGjF,IAAI,UAAU,GACb,OAAO;CAGR,IAAI,YAAY,GACf,OAAO;CAGR,MAAM,SAAS,YAAY,IAAI;CAE/B,IAAI,UAAU,SACb,OAAO;CAGR,IAAI,aAAa,SAAS;EACzB,IAAI,yBAAyB;GAC5B,MAAM,eAAe,uBAAuB,MAAM,SAAS,UAAU,GAAG,IAAI;GAC5E,OAAO,sBAAsB,UAAU,MAAM,cAAc,MAAM,CAAC,CAAC,KAAK;EACzE;EAEA,IAAI,UAAU,MACb,uBAAuB;EAGxB,OAAO,sBAAsB,UAAU,MAAM,SAAS,UAAU,YAAY,mBAAmB,GAAG,MAAM;CACzG;CAEA,IAAI,aAAa,UAAU;EAC1B,IAAI,UAAU,MACb,sBAAsB,IAAI,oBAAoB;EAG/C,MAAM,OAAO,KAAK,MAAM,UAAU,CAAC;EAEnC,IAAI,yBAAyB;GAC5B,MAAM,2BAA2B,uBAAuB,MAAM,IAAI;GAClE,MAAM,4BAA4B,uBAAuB,MAAM,UAAU,UAAU,QAAQ,GAAG,IAAI;GAClG,OAAO,UAAU,MAAM,GAAG,wBAAwB,IAAI,sBAAsB,UAAU,MAAM,2BAA2B,MAAM,CAAC,CAAC,KAAK;EACrI;EAEA,OACC,UAAU,MAAM,GAAG,IAAI,IACpB,sBACA,UAAU,MAAM,UAAU,UAAU,QAAQ,YAAY,mBAAmB,GAAG,MAAM;CAEzF;CAEA,IAAI,aAAa,OAAO;EACvB,IAAI,yBAEH,OAAO,UAAU,MAAM,GADF,uBAAuB,MAAM,UAAU,CACvB,CAAC,IAAI;EAG3C,IAAI,UAAU,MACb,sBAAsB,IAAI;EAG3B,OAAO,UAAU,MAAM,GAAG,UAAU,YAAY,mBAAmB,CAAC,IAAI;CACzE;CAEA,MAAM,IAAI,MAAM,oFAAoF,UAAU;AAC/G;;;AClGA,MAAa,aAAa;CACxB,SAAS;CACT,YAAY;CACZ,aAAa;CACb,OAAO;CACP,OAAO;CACP,UAAU;CACV,gBAAgB;CAChB,MAAM;CACN,SAAS;CACT,cAAc;CACd,oBAAoB;AACtB;AAEA,MAAa,aAAa,QAAQ,OAAO,WAAW;;;ACXpD,MAAa,oBAAoB,WAA4B,OAAO,KAAK,MAAM,IAAI,IAAI;AAEvF,SAAgB,iBAAiB,QAAgB,YAAoB,cAA8B;CACjG,MAAM,QAAQ,OAAO,MAAM,SAAS;CAEpC,IAAI,aAAa,MAAM,QACrB,OAAO,OAAO;CAEhB,MAAM,gBAAgB,iBAAiB,MAAM;CAE7C,OAAO,IAAI,WAAW,aAAa,IAAG,OAAM,MAAM,GAAG,CAAE,SAAS,aAAa,CAAC,IAAI;AACpF;AAEA,MAAa,YAAY;;;ACDzB,SAAgB,eAAe,EAC7B,QAAA,WAASA,QACT,SAAS,GACT,cACA,YACA,QACA,WAAW,KACqB;CAChC,MAAM,gBAAgB,iBAAiB,MAAM;CAC7C,MAAM,gBAAgB,iBAAiB,QAAQ,YAAY,YAAY;CAEvE,MAAM,QAAQ,OAAO,MAAM,SAAS;CACpC,MAAM,aAAa,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,KAAI,SAAQ,KAAK,SAAS,aAAa,CAAC;CAC1F,MAAM,aAAa,KAAK,IAAI,GAAG,aAAa,IAAI,QAAQ;CACxD,MAAM,eAAe,MAAM,MAAM,YAAY,aAAa,QAAQ;CAElE,IAAI,aAAa,WAAW,KAAK,aAAa,KAAK,kBAAkB,GAAG,OAAO;CAE/E,MAAM,kBAAkB,MAAc,WACpC,UAAU,MAAM,IAAIC,SAAO,IAAI,IAAI,OAAO,KAAK,IAAI,GAAG,KAAK,SAAS,MAAM,CAAC,CAAC;CAC9E,MAAM,eAAe,KAAK,OAAOA,SAAO,KAAK,GAAG,GAAG,SAAS,GAAG,GAAG,EAAE,GAAG;CAEvE,OAAO,aACJ,SAAS,MAAM,UAAU;EACxB,MAAM,SAAS,aAAa,QAAQ;EACpC,MAAM,gBAAgB,WAAW;EACjC,MAAM,QAAQ,gBAAgBA,SAAO,eAAeA,SAAO;EAE3D,OAAO,CACL,YACE,YAAY,OAAO,MAAM,CAAC,IAAI,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC,GAC5D,aAAa,MACf,GACA,iBACE,YAAY,IAAI,eAAe,MAAM,iBAAiB,aAAa,KAAK,OAAO,CACnF;CACF,CAAC,CAAC,CACD,OAAO,OAAO,CAAC,CACf,KAAI,SAAS,SAAS,UAAU,MAAM,IAAI,OAAO,IAAK,CAAC,CACvD,KAAK,IAAI;AACd;AAGA,MAAM,sBAAsB,SAAiB,KAAK,SAAS;AAC3D,MAAM,aAAa,WAAmB,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC;;;;;;ACtDpE,SAAgB,eAAe,OAAgB;CAC7C,IAAI,EAAE,iBAAiB,QAAQ,OAAO;CACtC,MAAM,SAAkC;EACtC,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,SAAS,MAAM;EACf,GAAI,yBAAyB,KAAK,KAAK,CAAC;CAC1C;CAEA,IAAI,MAAM,iBAAiB,OACzB,OAAO,QAAQ,eAAe,MAAM,KAAK;CAG3C,OAAO;AACT;AAEA,SAAgB,yBAAyB,OAAc;CACrD,MAAM,kBAAkB,KAAK,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,GAAG,iBAAiB;CAEzF,OAAO,cAAc,eAAe,IAAI,OAAO;AACjD;AAEA,MAAM,oBAAoB;CAAC;CAAS;CAAS;CAAQ;AAAS;;;ACjB9D,MAAa,oBACX,eACA,SAA0C,iBAE1C,cACG,MAAM,IAAI,CAAC,CACX,IAAI,gBAAgB,CAAC,CACrB,QAAQ,UAAgC,UAAU,QAAQ,OAAO,KAAK,CAAC;AAI5E,SAAgB,iBAAiB,KAAiC;CAChE,IAAI,OAAO,IAAI,KAAK;CAEpB,IAAI,KAAK,SAAS,QAAQ,GACxB,OAAO,KAAK,QAAQ,cAAc,MAAM,CAAC,CAAC,QAAQ,8BAA8B,EAAE;CAGpF,IAAI,gBAAgB,KACjB,QAAQ,QAAQ,EAAE,CAAC,CACnB,QAAQ,gBAAgB,GAAG,CAAC,CAC5B,QAAQ,WAAW,EAAE;CAIxB,MAAM,WAAW,cAAc,MAAM,YAAY;CAEjD,IAAI,UAEF,gBAAgB,cAAc,QAAQ,SAAS,IAAI,EAAE;CAKvD,MAAM,CAAC,KAAK,YAAY,gBAAgB,mBACtC,WAAW,SAAS,KAAM,aAC5B;CACA,IAAI,SAAU,YAAY,iBAAkB;CAC5C,IAAI,OAAO,OAAO,CAAC,QAAQ,aAAa,CAAC,CAAC,SAAS,GAAG,IAAI,KAAA,IAAY;CAEtE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,OAAO;CAClD,IAAI,OAAO,WAAW,QAAQ,GAAG,SAAS,OAAO,MAAM,CAAC;CACxD,IAAI,KAAK,WAAW,SAAS,GAAG,OAAO,KAAK,MAAM,CAAC;CAEnD,OAAO;EAEL,MAAM,QAAQ,IAAI;EAClB,MAAM,MAAM,UAAU;EACtB,QAAQ,MAAM,YAAY;EAC1B;CACF;AACF;AAIA,SAAgB,mBAAmB,SAAgC;CAEjE,IAAI,CAAC,QAAQ,SAAS,GAAG,GAAG,OAAO,CAAC,OAAO;CAE3C,OACG,aAAa,KAAK,QAAQ,QAAQ,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAuB,CAAC,OAAO;AAElG;AAEA,MAAM,eAAe;AACrB,MAAM,gBAAgB,UAAuB,CAAC,MAAM,KAAK,MAAM,eAAe;;;ACnD9E,SAAgB,iBAAiB,eAAwB,UAAmC,CAAC,GAAG;CAC9F,MAAM,EACJ,MAAM,QAAQ,IAAI,GAClB,SAAS,GACT,YAAY,MACZ,YAAY,OACZ,aAAY,UAAS,cAAc,OAAO,CAAC,GAC3C,aACA,QAAA,WAASC,WACP;CACJ,MAAM,uBAAuB,YAAY,qBAAqB,SAAS,IAAI;CAC3E,MAAM,QAAQ,QAAQ,aAAa;CAEnC,MAAM,SAAS,iBAAiB,MAAM,SAAS,IAAI,YAAY,OAAO,WAAW;CACjF,MAAM,kBAAkB,yBAAyB,KAAK;CACtD,MAAM,oBAAoB,QAAQ,uBAAuB,MAAM,KAAK,CAAC,CAAC;CACtE,MAAM,UAAU,QAAQ,WAAY,QAAQ,IAAI,OAAO,KAAK,IAAI;CAEhE,MAAM,eAAe,OAAO,SAAQ,UAAS;EAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,WAAW;EACvC,MAAM,cAAc,kBAAkB,SAAS,KAAK;EACpD,MAAM,QAAQ,cAAcC,SAAO,OAAOA,SAAO;EACjD,MAAM,OAAO,SAAS,KAAK,IAAI;EAE/B,OAAO,CACL,MACE,GAAG,OAAO,EAAE,GAAGA,SAAO,IACpB,cAAc,WAAW,qBAAqB,WAAW,YAC3D,EAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,IAAI,KAAK,GAAGA,SAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CACnE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,GACb,GACA,eACEA,SAAO,OACL,eAAe;GACb,YAAY;GACZ,cAAc;GACd,QAAQ,aAAa,MAAM,OAAO;GAClC,QAAQ,SAAS;GACjB,QAAA;EACF,CAAC,CACH,CACJ;CACF,CAAC;CAED,IAAI,iBACF,aAAa,KACX,GAAG,OAAO,IAAIA,SAAO,IAAI,GAAG,WAAW,eAAe,8BAA8B,KACpF,GAAGA,SAAO,KACR,UAAU,eAAe,CAAC,CACvB,MAAM,SAAS,CAAC,CAChB,KAAI,SAAQ,GAAG,OAAO,IAAI,MAAM,CAAC,CACjC,MAAM,GAAG,EAAE,CAAC,CACZ,KAAK,IAAI,CACd,GACF;CAGF,IAAI,MAAM,SAAS,OAAO,MAAM,UAAU,YAAY,UAAU,MAAM,OAAO;EAC3E,MAAM,MAAM,OAAO,GAAG,WAAW,MAAM,aAAa,MAAM,MAAM;EAEhE,aAAa,KACX,KACA,iBAAiB,MAAM,OAAO;GAC5B,GAAG;GACH,QAAQ,SAAS;GACjB,WAAW;EACb,CAAC,CACH;CACF;CAEA,OAAO,CACLA,SAAO,IAAI,GAAG,OAAO,IAAIA,SAAO,KAAK,MAAM,QAAQ,eAAe,EAAE,IAAI,MAAM,SAAS,GACvF,GAAG,YACL,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,IAAI;AACd;AAEA,MAAM,wBAAwB,cAC5B,OAAO,cAAc,aACjB,aACA,WAAU,OAAO,MAAK,UAAS,WAAW,MAAM,IAAI,CAAC;AAE3D,MAAM,WAAW,UAAoB;CACnC,IAAI,CAAC,OACH,OAAO,qBAAK,IAAI,MAAM,eAAe,GAAG,CAAC,WAAW,OAAO,CAAC;CAE9D,IAAI,YAAY,KAAK,GAAG;EACtB,MAAM,QAAQ,OAAO,KAAK;EAE1B,OAAO;GACL,SAAS,MAAM,MAAM,KAAK,CAAC,CAAC;GAC5B;EACF;CACF;CACA,OAAO;AACT;;;AC1GA,SAAgB,cAAc,MAAsB,aAA8B;CAChF,IAAI,CAAC,aAAa,OAAO;CACzB,MAAM,SAAS,CAAC;CAEhB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAC5C,OAAO,OAAO,OAAO,aAAa,GAAG,IAAI,YAAY,IAAI,CAAE,KAAK,IAAI;CAEtE,OAAO;AACT;AAEA,MAAa,sBAAsC;CACjD,KAAK;CACL,KAAK;CACL,KAAK;AACP;;;ACTA,SAAgB,KAAK,UAAoB,SAA4C;CACnF,OAAO,KAAK;EACV,QAAQ,kBAAkB,QAAQ;EAClC,GAAG;CACL,CAAC;AACH;AAEA,SAAgB,KAAK,EACnB,SAAS,QAAQ,QACjB,UAAU,QACV,WAAW,OACX,aAAa,OACb,cAAc,qBACd,gBAAgB,YACI,CAAC,GAAG;CACxB,MAAM,QAAQ,cAAc,SAAS,OAAO,MAAM,KAAK,MAAM,IAAI;CAEjE,OAAO,SAAS,UAAU,EACxB,KACA,OACA,MACA,OACA,MACA,MACA,IAAI,EAAE,YACa;EACnB,MAAM,OAAO,OAAO,OAClB;IACG,gBAAgB,OAAO;IACvB,UAAU,KAAK,QAAQ;IACvB,WAAW,SAAS,eAAe,KAAK;IACxC,aAAa;EAChB,GACA,QAAQ,EAAE,KAAK,GACf,cAAc,MAAM,WAAW,CACjC;EAEA,MAAM,cAAc,IAAI,IAAI,IAAI;CAClC;AACF;;;;;;ACCA,SAAgB,OAAmC,EAEjD,MAAM,QAAQ,KACd,WAAW,QAAQ,OACnB,QAAA,WAASC,QACT,YAAY,OACZ,cAAc,qBACd,cAAc,MACd,eAAe,MACf,eAAe,MACf,cAAc,oBACd,cAAc,uBACe,CAAC,GAAG;CACjC,MAAM,mBACJ,UACA,UACc,YAAY,OAAO,UAAU,KAAK,IAAI,SAAS,SAAU;CACzE,MAAM,kBAAkB,cACpB,KAAK,IAAI,GAAG,OAAO,WAAW,CAAC,CAAC,KAAI,MAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAC1D;CACJ,MAAM,2BAAoD;EACxD,QAAA;EACA,GAAI,SAAS,YAAY,IAAI,eAAe,CAAC;CAC/C;CAEA,OAAO,SAAS,cAAc,OAAwB;EACpD,MAAM,EACJ,MACA,MACA,KACA,MACA,OACA,OAAO,eACP,IAAI,EAAE,QAAQ,eAAe,YAC3B;EAGJ,MAAM,yBAAyB,eAAe,OAAO,OAAO;EAC5D,MAAM,qBAAqB,gBAAgB,QAAQ,OAAO,UAAU,OAAO;EAE3E,MAAM,iBAAiB,uBAAuB,MAAM;EACpD,MAAM,SAAS,0BAA0B,MAAM,YAAY,EAAA,CAAG,OAAO,CAAC;EACtE,MAAM,QAAQ,gBAAgB,aAAa,KAAK;EAChD,MAAM,iBACJ,gBAAgB,aAAa,KAAK,KAAK,gBAAgB,aAAa,aAAa;EACnF,MAAM,eAAe,iBAAiBC,SAAO,kBAAkB;EAE/D,MAAM,cAAc,KAAK,MAAM,CAAC,OAAO,UAAU,CAAC;EAElD,MAAM,YAAY,YAAY,CAAC,OAAO,OAAO,eAAe,GAAG,KAAK,CAAC;EACrE,MAAM,YAAY,YAAY,CAC5B,QAAQA,SAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,aAAa,EAAE,EAAE,GAC9D,gBAAgB,aAAa,UAAU,OAAO,iBAAiB,eAAe,CAAC,CACjF,CAAC;EAED,MAAM,kBAAkB,CAAC,QAAQ,KAAK,WAAW,CAAC;EAClD,MAAM,YAAY,YAAY,SAAS;EACvC,MAAM,YAAY,YAAY;GAC5B,eAAeA,SAAO,KAAK,UAAU,OAAO,IAAI,CAAC;GACjD;GACA;GACA,mBAAmB,cAAc,cAAc,aAAa,WAAW,GAAG,CAAC;EAC7E,CAAC;EAED,IAAI,OAAO;GACT,MAAM,CAAC,GAAG,GAAG,aAAa,MAAM,OAAO,SAAS,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;GAElE,IAAI,cAAc;IAChB,MAAM,mCAAmC,sBAAsB;IAC/D,MAAM,UAAU,iBAAiB,QAAQ,OAAO;IAEhD,IAAI,kCACF,SAAS,WAAW,MAAM,iBAAiB,OAAO,wBAAwB,GAAG,OAAO;SAEpF,SAAS,WAAW,iBAAiB,OAAO,wBAAwB,GAAG,OAAO;GAElF,OACE,SAAS,WAAWA,SAAO,KAAK,UAAU,KAAI,SAAQ,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EAE5F,OACE,IAAI,SAAS;CAEjB;AACF;AAEA,MAAM,eAAe,UAAyC,MAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5F,MAAM,yBAAyB,aAAa,WAC1C,KAAK,IAAI,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,KAAI,UAAS,MAAM,MAAM,CAAC,CAC5D;AAEA,MAAM,gBAAgB,IAAI,WAAW,aAAa;AAClD,MAAM,qBAAqB;CACzB,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAEA,MAAM,qBAAqB;CACzB,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;CACP,SAAS;AACX;AAEA,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AAEvB,MAAM,gBAA4C;CAChD,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,QAAQ;AACV;AAEA,MAAM,SAAS,IAAI,KAAK,eAAe,SAAS;CAC9C,GAAG;CACH,wBAAwB;AAC1B,CAAC;AACD,MAAM,YAAY,IAAI,KAAK,eAAe,SAAS,EACjD,GAAG,cACL,CAAC;;;ACtJD,MAAa,0BAA0B;CAAE,KAAK,QAAQ;CAAK,UAAU,SAAS;AAAE;AAEhF,MAAa,eAAe,oBAAoB;CAC9C,eAAe;EACb,GAAG;EACH,MAAM;EACN,QAAQ,QAAQ,IAAI,aAAa,eAAe,KAAK,IAAI,OAAO;CAClE;CACA,eAAe;CACf;AACF,CAAC;AACD,MAAa,mBAAmB,wBAAwB,YAAY"}