{"version":3,"file":"reactNativeViewConfig.js","names":[],"sources":["esm/reactNativeViewConfig.js"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { basename, join } from \"node:path\";\nimport { parseSync } from \"oxc-parser\";\nconst SELF_URL = typeof __filename !== \"undefined\" ? __filename : import.meta.url;\nconst COLOR_ATTRIBUTE = \"require('react-native/Libraries/Components/View/ReactNativeStyleAttributes').colorAttribute\";\nconst COLOR_ARRAY_ATTRIBUTE = \"{\\n      process: (req => 'default' in req ? req.default : req)(require('react-native/Libraries/StyleSheet/processColorArray'))\\n    }\";\nconst IMAGE_ATTRIBUTE = \"{\\n      process: (req => 'default' in req ? req.default : req)(require('react-native/Libraries/Image/resolveAssetSource'))\\n    }\";\nconst POINT_ATTRIBUTE = \"{\\n      diff: (req => 'default' in req ? req.default : req)(require('react-native/Libraries/Utilities/differ/pointsDiffer'))\\n    }\";\nconst EDGE_INSETS_ATTRIBUTE = \"{\\n      diff: (req => 'default' in req ? req.default : req)(require('react-native/Libraries/Utilities/differ/insetsDiffer'))\\n    }\";\nconst IMPORT_REGISTRY = \"const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\";\nconst IMPORT_IGNORE = \"const {ConditionallyIgnoredEventHandlers} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\";\nconst IMPORT_DISPATCH = 'const {dispatchCommand} = require(\"react-native/Libraries/ReactNative/RendererProxy\");';\nconst IMPORT_UIMANAGER = 'const {UIManager} = require(\"react-native\")';\nlet hermesParser = void 0;\nfunction getHermesParser(projectRoot) {\n  if (hermesParser === void 0) {\n    try {\n      const req = projectRoot ? createRequire(join(projectRoot, \"package.json\")) : createRequire(SELF_URL);\n      hermesParser = req(\"hermes-parser\");\n    } catch {\n      try {\n        hermesParser = createRequire(SELF_URL)(\"hermes-parser\");\n      } catch {\n        hermesParser = null;\n      }\n    }\n  }\n  return hermesParser;\n}\nfunction readType(node) {\n  if (!node) return { name: \"\", args: [] };\n  switch (node.type) {\n    // flow\n    case \"NullableTypeAnnotation\":\n    case \"TypeAnnotation\":\n      return readType(node.typeAnnotation);\n    case \"GenericTypeAnnotation\":\n      return {\n        name: readTypeName(node.id),\n        args: (node.typeParameters?.params ?? []).map(readType)\n      };\n    case \"ObjectTypeAnnotation\":\n      return { name: \"__object\", args: [] };\n    case \"StringTypeAnnotation\":\n      return { name: \"string\", args: [] };\n    case \"BooleanTypeAnnotation\":\n      return { name: \"boolean\", args: [] };\n    case \"NumberTypeAnnotation\":\n      return { name: \"number\", args: [] };\n    case \"UnionTypeAnnotation\":\n      return readUnion(node);\n    case \"FunctionTypeAnnotation\":\n      return { name: \"__function\", args: [] };\n    // typescript\n    case \"TSTypeAnnotation\":\n      return readType(node.typeAnnotation);\n    case \"TSTypeReference\":\n      return {\n        name: readTypeName(node.typeName),\n        args: (node.typeArguments ?? node.typeParameters)?.params?.map(readType) ?? []\n      };\n    case \"TSTypeLiteral\":\n      return { name: \"__object\", args: [] };\n    case \"TSStringKeyword\":\n      return { name: \"string\", args: [] };\n    case \"TSBooleanKeyword\":\n      return { name: \"boolean\", args: [] };\n    case \"TSNumberKeyword\":\n      return { name: \"number\", args: [] };\n    case \"TSUnionType\":\n      return readUnion(node);\n    case \"TSFunctionType\":\n      return { name: \"__function\", args: [] };\n    case \"TSArrayType\":\n      return { name: \"Array\", args: [readType(node.elementType)] };\n  }\n  return { name: \"__unknown\", args: [] };\n}\nconst NULLISH_TYPES = /* @__PURE__ */ new Set([\n  \"TSUndefinedKeyword\",\n  \"TSNullKeyword\",\n  \"TSVoidKeyword\",\n  \"NullLiteralTypeAnnotation\",\n  \"VoidTypeAnnotation\"\n]);\nfunction readUnion(node) {\n  const real = (node.types ?? []).filter((t) => !NULLISH_TYPES.has(t.type));\n  if (real.length === 1) return readType(real[0]);\n  return { name: \"__union\", args: [] };\n}\nfunction readTypeName(id) {\n  if (!id) return \"\";\n  if (id.type === \"Identifier\") return id.name;\n  if (id.type === \"QualifiedTypeIdentifier\") return readTypeName(id.id);\n  if (id.type === \"TSQualifiedName\") return readTypeName(id.right);\n  return \"\";\n}\nconst READONLY_ARRAYS = /* @__PURE__ */ new Set([\"ReadonlyArray\", \"$ReadOnlyArray\", \"Array\"]);\nconst TRANSPARENT = /* @__PURE__ */ new Set([\"WithDefault\", \"UnsafeMixed\", \"Readonly\", \"$ReadOnly\"]);\nfunction unwrap(type) {\n  let cur = type;\n  while (TRANSPARENT.has(cur.name) && cur.args.length > 0) {\n    cur = cur.args[0];\n  }\n  return cur;\n}\nfunction attributeValue(type) {\n  const t = unwrap(type);\n  switch (t.name) {\n    case \"ColorValue\":\n    case \"ProcessedColorValue\":\n      return COLOR_ATTRIBUTE;\n    case \"ImageSource\":\n      return IMAGE_ATTRIBUTE;\n    case \"PointValue\":\n      return POINT_ATTRIBUTE;\n    case \"EdgeInsetsValue\":\n      return EDGE_INSETS_ATTRIBUTE;\n  }\n  if (READONLY_ARRAYS.has(t.name) && t.args.length === 1) {\n    const el = unwrap(t.args[0]);\n    if (el.name === \"ColorValue\" || el.name === \"ProcessedColorValue\") {\n      return COLOR_ARRAY_ATTRIBUTE;\n    }\n  }\n  return \"true\";\n}\nfunction eventOf(name, type) {\n  const t = unwrap(type);\n  if (t.name !== \"DirectEventHandler\" && t.name !== \"BubblingEventHandler\") return null;\n  const override = t.args[1]?.name;\n  return {\n    name,\n    bubbling: t.name === \"BubblingEventHandler\",\n    topName: normalizeInputEventName(\n      override && override !== \"__unknown\" ? override : name\n    )\n  };\n}\nfunction normalizeInputEventName(name) {\n  if (name.startsWith(\"on\")) return name.replace(/^on/, \"top\");\n  if (!name.startsWith(\"top\")) return `top${name[0].toUpperCase()}${name.slice(1)}`;\n  return name;\n}\nfunction collectDeclarations(body) {\n  const out = /* @__PURE__ */ new Map();\n  for (const raw of body) {\n    const node = raw?.type === \"ExportNamedDeclaration\" ? raw.declaration : raw;\n    if (!node) continue;\n    switch (node.type) {\n      case \"TSTypeAliasDeclaration\":\n      case \"TypeAlias\":\n      case \"TSInterfaceDeclaration\":\n      case \"InterfaceDeclaration\":\n        if (node.id?.name) out.set(node.id.name, node);\n        break;\n    }\n  }\n  return out;\n}\nfunction flattenMembers(typeName, decls, seen = /* @__PURE__ */ new Set()) {\n  if (typeName === \"ViewProps\" || seen.has(typeName)) return [];\n  seen.add(typeName);\n  const decl = decls.get(typeName);\n  if (!decl) return [];\n  const out = [];\n  const heritage = decl.extends ?? decl.heritage ?? [];\n  for (const h of heritage) {\n    const name = readTypeName(h.id ?? h.expression ?? h.typeName);\n    if (name) out.push(...flattenMembers(name, decls, seen));\n  }\n  const bodyNode = decl.body ?? // interface\n  decl.right ?? // type alias\n  decl.typeAnnotation;\n  out.push(...readObjectMembers(bodyNode, decls, seen));\n  return out;\n}\nfunction readObjectMembers(node, decls, seen) {\n  if (!node) return [];\n  if (node.type === \"TSTypeReference\" || node.type === \"GenericTypeAnnotation\") {\n    const name = readTypeName(node.typeName ?? node.id);\n    const args = (node.typeArguments ?? node.typeParameters)?.params ?? [];\n    if (TRANSPARENT.has(name) && args.length) {\n      return readObjectMembers(args[0], decls, seen);\n    }\n    return flattenMembers(name, decls, seen);\n  }\n  if (node.type === \"TSIntersectionType\" || node.type === \"IntersectionTypeAnnotation\") {\n    const out2 = [];\n    for (const t of node.types ?? []) out2.push(...readObjectMembers(t, decls, seen));\n    return out2;\n  }\n  const members = node.members ?? node.body ?? node.properties ?? [];\n  const out = [];\n  for (const m of members) {\n    switch (m.type) {\n      case \"TSPropertySignature\":\n      case \"ObjectTypeProperty\": {\n        const name = m.key?.name ?? m.key?.value;\n        if (!name) break;\n        out.push({ name, type: readType(m.typeAnnotation ?? m.value) });\n        break;\n      }\n      // flow's `...OtherProps` inside an object type\n      case \"ObjectTypeSpreadProperty\": {\n        const name = readTypeName(m.argument?.id ?? m.argument);\n        if (name) out.push(...flattenMembers(name, decls, seen));\n        break;\n      }\n    }\n  }\n  return out;\n}\nfunction findComponentCall(body) {\n  for (const node of body) {\n    if (node.type !== \"ExportDefaultDeclaration\") continue;\n    let expr = node.declaration;\n    while (expr) {\n      if (expr.type === \"CallExpression\") break;\n      expr = expr.expression ?? (expr.type === \"SequenceExpression\" ? expr.expressions[expr.expressions.length - 1] : null);\n    }\n    if (expr?.type === \"CallExpression\" && expr.callee?.name === \"codegenNativeComponent\") {\n      return expr;\n    }\n  }\n  return null;\n}\nfunction findCommandsCall(body) {\n  for (const raw of body) {\n    const node = raw?.type === \"ExportNamedDeclaration\" ? raw.declaration : raw;\n    const decl = node?.declarations?.[0];\n    let init = decl?.init;\n    while (init && init.type !== \"CallExpression\") init = init.expression;\n    if (init?.type === \"CallExpression\" && init.callee?.name === \"codegenNativeCommands\") {\n      return init;\n    }\n  }\n  return null;\n}\nfunction readStringOption(objectExpression, key) {\n  for (const p of objectExpression?.properties ?? []) {\n    if ((p.key?.name ?? p.key?.value) === key && typeof p.value?.value === \"string\") {\n      return p.value.value;\n    }\n  }\n  return null;\n}\nfunction readCommands(call, decls) {\n  const typeName = readTypeName(\n    (call.typeArguments ?? call.typeParameters)?.params?.[0]?.typeName ?? (call.typeArguments ?? call.typeParameters)?.params?.[0]?.id\n  );\n  const supported = [];\n  for (const p of call.arguments?.[0]?.properties ?? []) {\n    if ((p.key?.name ?? p.key?.value) !== \"supportedCommands\") continue;\n    for (const el of p.value?.elements ?? []) {\n      if (typeof el?.value === \"string\") supported.push(el.value);\n    }\n  }\n  if (!supported.length) return [];\n  const decl = decls.get(typeName);\n  const byName = /* @__PURE__ */ new Map();\n  const commandMembers = decl?.body?.body ?? decl?.body?.members ?? decl?.body?.properties ?? [];\n  for (const m of commandMembers) {\n    const name = m.key?.name ?? m.key?.value;\n    if (!name) continue;\n    const fn = m.type === \"TSMethodSignature\" ? m : m.typeAnnotation?.typeAnnotation ?? m.value ?? m.typeAnnotation;\n    const params = (fn?.params ?? fn?.parameters ?? []).slice(1);\n    byName.set(\n      name,\n      params.map((p, i) => p.name?.name ?? p.name ?? `arg${i}`)\n    );\n  }\n  return supported.map((name) => ({ name, params: byName.get(name) ?? [] }));\n}\nfunction indent(text, spaces) {\n  const pad = \" \".repeat(spaces);\n  return text.split(\"\\n\").map((line, i) => i === 0 || line === \"\" ? line : pad + line).join(\"\\n\");\n}\nfunction printViewConfig(componentName, attributes, events) {\n  const lines = [`  uiViewClassName: ${JSON.stringify(componentName)}`];\n  const bubbling = events.filter((e) => e.bubbling);\n  if (bubbling.length) {\n    lines.push(\n      `  bubblingEventTypes: {\n${bubbling.map(\n        (e) => `    ${e.topName}: {\n      phasedRegistrationNames: {\n        captured: ${JSON.stringify(\n          `${e.name}Capture`\n        )},\n        bubbled: ${JSON.stringify(e.name)}\n      }\n    }`\n      ).join(\",\\n\")}\n  }`\n    );\n  }\n  const direct = events.filter((e) => !e.bubbling);\n  if (direct.length) {\n    lines.push(\n      `  directEventTypes: {\n${direct.map(\n        (e) => `    ${e.topName}: {\n      registrationName: ${JSON.stringify(e.name)}\n    }`\n      ).join(\",\\n\")}\n  }`\n    );\n  }\n  const attrLines = attributes.map((a) => `    ${a.name}: ${indent(a.value, 4)}`);\n  if (events.length) {\n    attrLines.push(\n      `    ...ConditionallyIgnoredEventHandlers({\n${events.map((e) => `      ${e.name}: true`).join(\",\\n\")}\n    })`\n    );\n  }\n  lines.push(\n    attrLines.length ? `  validAttributes: {\n${attrLines.join(\",\\n\")}\n  }` : \"  validAttributes: {}\"\n  );\n  return `{\n${lines.join(\",\\n\")}\n}`;\n}\nfunction printCommands(commands) {\n  return `export const Commands = {\n${commands.map(\n    (c) => `  ${c.name}(ref${c.params.map((p) => `, ${p}`).join(\"\")}) {\n    dispatchCommand(ref, ${JSON.stringify(\n      c.name\n    )}, [${c.params.join(\", \")}]);\n  }`\n  ).join(\",\\n\")}\n};`;\n}\nconst FILE_HEADER = `/**\n * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).\n *\n * Do not edit this file as changes may cause incorrect behavior and will be lost\n * once the code is regenerated.\n *\n * @flow\n *\n * @generated by codegen project: GenerateViewConfigJs.js\n */\n\n'use strict';\n`;\nfunction parseSpec(code, filename, projectRoot) {\n  const isTS = /\\.[cm]?tsx?$/.test(filename);\n  if (isTS) {\n    const result = parseSync(filename, code, {\n      lang: filename.endsWith(\"x\") ? \"tsx\" : \"ts\"\n    });\n    if (result.errors?.length) return null;\n    return result.program;\n  }\n  const hermes = getHermesParser(projectRoot);\n  if (!hermes) return null;\n  try {\n    return hermes.parse(code, {\n      babel: false,\n      flow: \"all\",\n      sourceFilename: filename\n    });\n  } catch {\n    return null;\n  }\n}\nfunction generateViewConfig(program) {\n  const body = program?.body;\n  if (!body) return null;\n  const call = findComponentCall(body);\n  if (!call) return null;\n  const componentNameArg = call.arguments?.[0];\n  if (typeof componentNameArg?.value !== \"string\") return null;\n  const componentName = componentNameArg.value;\n  const options = call.arguments?.[1];\n  const paperComponentName = readStringOption(options, \"paperComponentName\");\n  const paperComponentNameDeprecated = readStringOption(\n    options,\n    \"paperComponentNameDeprecated\"\n  );\n  const propsTypeName = readTypeName(\n    (call.typeArguments ?? call.typeParameters)?.params?.[0]?.typeName ?? (call.typeArguments ?? call.typeParameters)?.params?.[0]?.id\n  );\n  if (!propsTypeName) return null;\n  const decls = collectDeclarations(body);\n  const members = flattenMembers(propsTypeName, decls);\n  const attributes = [];\n  const events = [];\n  for (const m of members) {\n    const event = eventOf(m.name, m.type);\n    if (event) {\n      events.push(event);\n      continue;\n    }\n    attributes.push({ name: m.name, value: attributeValue(m.type) });\n  }\n  const commandsCall = findCommandsCall(body);\n  const commands = commandsCall ? readCommands(commandsCall, decls) : [];\n  const imports = /* @__PURE__ */ new Set([IMPORT_REGISTRY]);\n  if (events.length) imports.add(IMPORT_IGNORE);\n  if (commands.length) imports.add(IMPORT_DISPATCH);\n  if (paperComponentNameDeprecated) imports.add(IMPORT_UIMANAGER);\n  const nativeName = paperComponentName ?? componentName;\n  const parts = [`let nativeComponentName = '${nativeName}';`];\n  if (paperComponentNameDeprecated) {\n    parts.push(\n      `if (UIManager.hasViewManagerConfig('${componentName}')) {\n  nativeComponentName = '${componentName}';\n} else if (UIManager.hasViewManagerConfig('${paperComponentNameDeprecated}')) {\n  nativeComponentName = '${paperComponentNameDeprecated}';\n} else {\n  throw new Error('Failed to find native component for either \"${componentName}\" or \"${paperComponentNameDeprecated}\"');\n}`\n    );\n  }\n  parts.push(\n    `export const __INTERNAL_VIEW_CONFIG = ${printViewConfig(nativeName, attributes, events)};`\n  );\n  parts.push(\n    \"export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);\"\n  );\n  if (commands.length) parts.push(printCommands(commands));\n  return { imports: [...imports].sort(), body: parts.join(\"\\n\") };\n}\nfunction renderViewConfigModule(result) {\n  return `\n${FILE_HEADER}\n${result.imports.join(\"\\n\")}\n\n${result.body}\n`;\n}\nfunction getLibraryName(filename) {\n  const base = basename(filename);\n  const replaced = base.replace(/NativeComponent\\.[cm]?[jt]sx?$/, \"\");\n  return replaced === base ? base.replace(/\\.[cm]?[jt]sx?$/, \"\") : replaced;\n}\nexport {\n  generateViewConfig,\n  getLibraryName,\n  parseSpec,\n  renderViewConfigModule\n};\n//# sourceMappingURL=reactNativeViewConfig.js.map\n"],"mappings":";;;;;AAGA,MAAM,WAAW,OAAO,eAAe,cAAc,aAAa,YAAY;AAC9E,MAAM,kBAAkB;AACxB,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB;AACxB,MAAM,kBAAkB;AACxB,MAAM,wBAAwB;AAC9B,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,kBAAkB;AACxB,MAAM,mBAAmB;AACzB,IAAI,eAAe,KAAK;AACxB,SAAS,gBAAgB,aAAa;CACpC,IAAI,iBAAiB,KAAK,GAAG;EAC3B,IAAI;GACF,MAAM,MAAM,cAAc,cAAc,KAAK,aAAa,cAAc,CAAC,IAAI,cAAc,QAAQ;GACnG,eAAe,IAAI,eAAe;EACpC,QAAQ;GACN,IAAI;IACF,eAAe,cAAc,QAAQ,CAAC,CAAC,eAAe;GACxD,QAAQ;IACN,eAAe;GACjB;EACF;CACF;CACA,OAAO;AACT;AACA,SAAS,SAAS,MAAM;CACtB,IAAI,CAAC,MAAM,OAAO;EAAE,MAAM;EAAI,MAAM,CAAC;CAAE;CACvC,QAAQ,KAAK,MAAb;EAEE,KAAK;EACL,KAAK,kBACH,OAAO,SAAS,KAAK,cAAc;EACrC,KAAK,yBACH,OAAO;GACL,MAAM,aAAa,KAAK,EAAE;GAC1B,OAAO,KAAK,gBAAgB,UAAU,CAAC,EAAC,CAAE,IAAI,QAAQ;EACxD;EACF,KAAK,wBACH,OAAO;GAAE,MAAM;GAAY,MAAM,CAAC;EAAE;EACtC,KAAK,wBACH,OAAO;GAAE,MAAM;GAAU,MAAM,CAAC;EAAE;EACpC,KAAK,yBACH,OAAO;GAAE,MAAM;GAAW,MAAM,CAAC;EAAE;EACrC,KAAK,wBACH,OAAO;GAAE,MAAM;GAAU,MAAM,CAAC;EAAE;EACpC,KAAK,uBACH,OAAO,UAAU,IAAI;EACvB,KAAK,0BACH,OAAO;GAAE,MAAM;GAAc,MAAM,CAAC;EAAE;EAExC,KAAK,oBACH,OAAO,SAAS,KAAK,cAAc;EACrC,KAAK,mBACH,OAAO;GACL,MAAM,aAAa,KAAK,QAAQ;GAChC,OAAO,KAAK,iBAAiB,KAAK,eAAc,EAAG,QAAQ,IAAI,QAAQ,KAAK,CAAC;EAC/E;EACF,KAAK,iBACH,OAAO;GAAE,MAAM;GAAY,MAAM,CAAC;EAAE;EACtC,KAAK,mBACH,OAAO;GAAE,MAAM;GAAU,MAAM,CAAC;EAAE;EACpC,KAAK,oBACH,OAAO;GAAE,MAAM;GAAW,MAAM,CAAC;EAAE;EACrC,KAAK,mBACH,OAAO;GAAE,MAAM;GAAU,MAAM,CAAC;EAAE;EACpC,KAAK,eACH,OAAO,UAAU,IAAI;EACvB,KAAK,kBACH,OAAO;GAAE,MAAM;GAAc,MAAM,CAAC;EAAE;EACxC,KAAK,eACH,OAAO;GAAE,MAAM;GAAS,MAAM,CAAC,SAAS,KAAK,WAAW,CAAC;EAAE;CAC/D;CACA,OAAO;EAAE,MAAM;EAAa,MAAM,CAAC;CAAE;AACvC;AACA,MAAM,gCAAgC,IAAI,IAAI;CAC5C;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,SAAS,UAAU,MAAM;CACvB,MAAM,QAAQ,KAAK,SAAS,CAAC,EAAC,CAAE,QAAQ,MAAM,CAAC,cAAc,IAAI,EAAE,IAAI,CAAC;CACxE,IAAI,KAAK,WAAW,GAAG,OAAO,SAAS,KAAK,EAAE;CAC9C,OAAO;EAAE,MAAM;EAAW,MAAM,CAAC;CAAE;AACrC;AACA,SAAS,aAAa,IAAI;CACxB,IAAI,CAAC,IAAI,OAAO;CAChB,IAAI,GAAG,SAAS,cAAc,OAAO,GAAG;CACxC,IAAI,GAAG,SAAS,2BAA2B,OAAO,aAAa,GAAG,EAAE;CACpE,IAAI,GAAG,SAAS,mBAAmB,OAAO,aAAa,GAAG,KAAK;CAC/D,OAAO;AACT;AACA,MAAM,kCAAkC,IAAI,IAAI;CAAC;CAAiB;CAAkB;AAAO,CAAC;AAC5F,MAAM,8BAA8B,IAAI,IAAI;CAAC;CAAe;CAAe;CAAY;AAAW,CAAC;AACnG,SAAS,OAAO,MAAM;CACpB,IAAI,MAAM;CACV,OAAO,YAAY,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,SAAS,GAAG;EACvD,MAAM,IAAI,KAAK;CACjB;CACA,OAAO;AACT;AACA,SAAS,eAAe,MAAM;CAC5B,MAAM,IAAI,OAAO,IAAI;CACrB,QAAQ,EAAE,MAAV;EACE,KAAK;EACL,KAAK,uBACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,KAAK,mBACH,OAAO;CACX;CACA,IAAI,gBAAgB,IAAI,EAAE,IAAI,KAAK,EAAE,KAAK,WAAW,GAAG;EACtD,MAAM,KAAK,OAAO,EAAE,KAAK,EAAE;EAC3B,IAAI,GAAG,SAAS,gBAAgB,GAAG,SAAS,uBAAuB;GACjE,OAAO;EACT;CACF;CACA,OAAO;AACT;AACA,SAAS,QAAQ,MAAM,MAAM;CAC3B,MAAM,IAAI,OAAO,IAAI;CACrB,IAAI,EAAE,SAAS,wBAAwB,EAAE,SAAS,wBAAwB,OAAO;CACjF,MAAM,WAAW,EAAE,KAAK,EAAE,EAAE;CAC5B,OAAO;EACL;EACA,UAAU,EAAE,SAAS;EACrB,SAAS,wBACP,YAAY,aAAa,cAAc,WAAW,IACpD;CACF;AACF;AACA,SAAS,wBAAwB,MAAM;CACrC,IAAI,KAAK,WAAW,IAAI,GAAG,OAAO,KAAK,QAAQ,OAAO,KAAK;CAC3D,IAAI,CAAC,KAAK,WAAW,KAAK,GAAG,OAAO,MAAM,KAAK,EAAE,CAAC,YAAY,IAAI,KAAK,MAAM,CAAC;CAC9E,OAAO;AACT;AACA,SAAS,oBAAoB,MAAM;CACjC,MAAM,sBAAsB,IAAI,IAAI;CACpC,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,OAAO,KAAK,SAAS,2BAA2B,IAAI,cAAc;EACxE,IAAI,CAAC,MAAM;EACX,QAAQ,KAAK,MAAb;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;IACH,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK,GAAG,MAAM,IAAI;IAC7C;EACJ;CACF;CACA,OAAO;AACT;AACA,SAAS,eAAe,UAAU,OAAO,uBAAuB,IAAI,IAAI,GAAG;CACzE,IAAI,aAAa,eAAe,KAAK,IAAI,QAAQ,GAAG,OAAO,CAAC;CAC5D,KAAK,IAAI,QAAQ;CACjB,MAAM,OAAO,MAAM,IAAI,QAAQ;CAC/B,IAAI,CAAC,MAAM,OAAO,CAAC;CACnB,MAAM,MAAM,CAAC;CACb,MAAM,WAAW,KAAK,WAAW,KAAK,YAAY,CAAC;CACnD,KAAK,MAAM,KAAK,UAAU;EACxB,MAAM,OAAO,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ;EAC5D,IAAI,MAAM,IAAI,KAAK,GAAG,eAAe,MAAM,OAAO,IAAI,CAAC;CACzD;CACA,MAAM,WAAW,KAAK,QACtB,KAAK,SACL,KAAK;CACL,IAAI,KAAK,GAAG,kBAAkB,UAAU,OAAO,IAAI,CAAC;CACpD,OAAO;AACT;AACA,SAAS,kBAAkB,MAAM,OAAO,MAAM;CAC5C,IAAI,CAAC,MAAM,OAAO,CAAC;CACnB,IAAI,KAAK,SAAS,qBAAqB,KAAK,SAAS,yBAAyB;EAC5E,MAAM,OAAO,aAAa,KAAK,YAAY,KAAK,EAAE;EAClD,MAAM,QAAQ,KAAK,iBAAiB,KAAK,eAAc,EAAG,UAAU,CAAC;EACrE,IAAI,YAAY,IAAI,IAAI,KAAK,KAAK,QAAQ;GACxC,OAAO,kBAAkB,KAAK,IAAI,OAAO,IAAI;EAC/C;EACA,OAAO,eAAe,MAAM,OAAO,IAAI;CACzC;CACA,IAAI,KAAK,SAAS,wBAAwB,KAAK,SAAS,8BAA8B;EACpF,MAAM,OAAO,CAAC;EACd,KAAK,MAAM,KAAK,KAAK,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG,kBAAkB,GAAG,OAAO,IAAI,CAAC;EAChF,OAAO;CACT;CACA,MAAM,UAAU,KAAK,WAAW,KAAK,QAAQ,KAAK,cAAc,CAAC;CACjE,MAAM,MAAM,CAAC;CACb,KAAK,MAAM,KAAK,SAAS;EACvB,QAAQ,EAAE,MAAV;GACE,KAAK;GACL,KAAK,sBAAsB;IACzB,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK;IACnC,IAAI,CAAC,MAAM;IACX,IAAI,KAAK;KAAE;KAAM,MAAM,SAAS,EAAE,kBAAkB,EAAE,KAAK;IAAE,CAAC;IAC9D;GACF;GAEA,KAAK,4BAA4B;IAC/B,MAAM,OAAO,aAAa,EAAE,UAAU,MAAM,EAAE,QAAQ;IACtD,IAAI,MAAM,IAAI,KAAK,GAAG,eAAe,MAAM,OAAO,IAAI,CAAC;IACvD;GACF;EACF;CACF;CACA,OAAO;AACT;AACA,SAAS,kBAAkB,MAAM;CAC/B,KAAK,MAAM,QAAQ,MAAM;EACvB,IAAI,KAAK,SAAS,4BAA4B;EAC9C,IAAI,OAAO,KAAK;EAChB,OAAO,MAAM;GACX,IAAI,KAAK,SAAS,kBAAkB;GACpC,OAAO,KAAK,eAAe,KAAK,SAAS,uBAAuB,KAAK,YAAY,KAAK,YAAY,SAAS,KAAK;EAClH;EACA,IAAI,MAAM,SAAS,oBAAoB,KAAK,QAAQ,SAAS,0BAA0B;GACrF,OAAO;EACT;CACF;CACA,OAAO;AACT;AACA,SAAS,iBAAiB,MAAM;CAC9B,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,OAAO,KAAK,SAAS,2BAA2B,IAAI,cAAc;EACxE,MAAM,OAAO,MAAM,eAAe;EAClC,IAAI,OAAO,MAAM;EACjB,OAAO,QAAQ,KAAK,SAAS,kBAAkB,OAAO,KAAK;EAC3D,IAAI,MAAM,SAAS,oBAAoB,KAAK,QAAQ,SAAS,yBAAyB;GACpF,OAAO;EACT;CACF;CACA,OAAO;AACT;AACA,SAAS,iBAAiB,kBAAkB,KAAK;CAC/C,KAAK,MAAM,KAAK,kBAAkB,cAAc,CAAC,GAAG;EAClD,KAAK,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,OAAO,OAAO,EAAE,OAAO,UAAU,UAAU;GAC/E,OAAO,EAAE,MAAM;EACjB;CACF;CACA,OAAO;AACT;AACA,SAAS,aAAa,MAAM,OAAO;CACjC,MAAM,WAAW,cACd,KAAK,iBAAiB,KAAK,eAAc,EAAG,SAAS,EAAE,EAAE,aAAa,KAAK,iBAAiB,KAAK,eAAc,EAAG,SAAS,EAAE,EAAE,EAClI;CACA,MAAM,YAAY,CAAC;CACnB,KAAK,MAAM,KAAK,KAAK,YAAY,EAAE,EAAE,cAAc,CAAC,GAAG;EACrD,KAAK,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,qBAAqB;EAC3D,KAAK,MAAM,MAAM,EAAE,OAAO,YAAY,CAAC,GAAG;GACxC,IAAI,OAAO,IAAI,UAAU,UAAU,UAAU,KAAK,GAAG,KAAK;EAC5D;CACF;CACA,IAAI,CAAC,UAAU,QAAQ,OAAO,CAAC;CAC/B,MAAM,OAAO,MAAM,IAAI,QAAQ;CAC/B,MAAM,yBAAyB,IAAI,IAAI;CACvC,MAAM,iBAAiB,MAAM,MAAM,QAAQ,MAAM,MAAM,WAAW,MAAM,MAAM,cAAc,CAAC;CAC7F,KAAK,MAAM,KAAK,gBAAgB;EAC9B,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK;EACnC,IAAI,CAAC,MAAM;EACX,MAAM,KAAK,EAAE,SAAS,sBAAsB,IAAI,EAAE,gBAAgB,kBAAkB,EAAE,SAAS,EAAE;EACjG,MAAM,UAAU,IAAI,UAAU,IAAI,cAAc,CAAC,EAAC,CAAE,MAAM,CAAC;EAC3D,OAAO,IACL,MACA,OAAO,KAAK,GAAG,MAAM,EAAE,MAAM,QAAQ,EAAE,QAAQ,MAAM,GAAG,CAC1D;CACF;CACA,OAAO,UAAU,KAAK,UAAU;EAAE;EAAM,QAAQ,OAAO,IAAI,IAAI,KAAK,CAAC;CAAE,EAAE;AAC3E;AACA,SAAS,OAAO,MAAM,QAAQ;CAC5B,MAAM,MAAM,IAAI,OAAO,MAAM;CAC7B,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,MAAM,KAAK,SAAS,KAAK,OAAO,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI;AAChG;AACA,SAAS,gBAAgB,eAAe,YAAY,QAAQ;CAC1D,MAAM,QAAQ,CAAC,sBAAsB,KAAK,UAAU,aAAa,GAAG;CACpE,MAAM,WAAW,OAAO,QAAQ,MAAM,EAAE,QAAQ;CAChD,IAAI,SAAS,QAAQ;EACnB,MAAM,KACJ;EACJ,SAAS,KACF,MAAM,OAAO,EAAE,QAAQ;;oBAEZ,KAAK,UACf,GAAG,EAAE,KAAK,QACZ,EAAE;mBACS,KAAK,UAAU,EAAE,IAAI,EAAE;;MAGpC,CAAC,CAAC,KAAK,KAAK,EAAE;IAEhB;CACF;CACA,MAAM,SAAS,OAAO,QAAQ,MAAM,CAAC,EAAE,QAAQ;CAC/C,IAAI,OAAO,QAAQ;EACjB,MAAM,KACJ;EACJ,OAAO,KACA,MAAM,OAAO,EAAE,QAAQ;0BACN,KAAK,UAAU,EAAE,IAAI,EAAE;MAE3C,CAAC,CAAC,KAAK,KAAK,EAAE;IAEhB;CACF;CACA,MAAM,YAAY,WAAW,KAAK,MAAM,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,OAAO,CAAC,GAAG;CAC9E,IAAI,OAAO,QAAQ;EACjB,UAAU,KACR;EACJ,OAAO,KAAK,MAAM,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE;OAErD;CACF;CACA,MAAM,KACJ,UAAU,SAAS;EACrB,UAAU,KAAK,KAAK,EAAE;OACjB,uBACL;CACA,OAAO;EACP,MAAM,KAAK,KAAK,EAAE;;AAEpB;AACA,SAAS,cAAc,UAAU;CAC/B,OAAO;EACP,SAAS,KACN,MAAM,KAAK,EAAE,KAAK,MAAM,EAAE,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;2BACzC,KAAK,UAC1B,EAAE,IACJ,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,EAAE;IAE7B,CAAC,CAAC,KAAK,KAAK,EAAE;;AAEhB;AACA,MAAM,cAAc;;;;;;;;;;;;;AAapB,SAAS,UAAU,MAAM,UAAU,aAAa;CAC9C,MAAM,OAAO,eAAe,KAAK,QAAQ;CACzC,IAAI,MAAM;EACR,MAAM,SAAS,UAAU,UAAU,MAAM,EACvC,MAAM,SAAS,SAAS,GAAG,IAAI,QAAQ,KACzC,CAAC;EACD,IAAI,OAAO,QAAQ,QAAQ,OAAO;EAClC,OAAO,OAAO;CAChB;CACA,MAAM,SAAS,gBAAgB,WAAW;CAC1C,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI;EACF,OAAO,OAAO,MAAM,MAAM;GACxB,OAAO;GACP,MAAM;GACN,gBAAgB;EAClB,CAAC;CACH,QAAQ;EACN,OAAO;CACT;AACF;AACA,SAAS,mBAAmB,SAAS;CACnC,MAAM,OAAO,SAAS;CACtB,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,OAAO,kBAAkB,IAAI;CACnC,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,mBAAmB,KAAK,YAAY;CAC1C,IAAI,OAAO,kBAAkB,UAAU,UAAU,OAAO;CACxD,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,UAAU,KAAK,YAAY;CACjC,MAAM,qBAAqB,iBAAiB,SAAS,oBAAoB;CACzE,MAAM,+BAA+B,iBACnC,SACA,8BACF;CACA,MAAM,gBAAgB,cACnB,KAAK,iBAAiB,KAAK,eAAc,EAAG,SAAS,EAAE,EAAE,aAAa,KAAK,iBAAiB,KAAK,eAAc,EAAG,SAAS,EAAE,EAAE,EAClI;CACA,IAAI,CAAC,eAAe,OAAO;CAC3B,MAAM,QAAQ,oBAAoB,IAAI;CACtC,MAAM,UAAU,eAAe,eAAe,KAAK;CACnD,MAAM,aAAa,CAAC;CACpB,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,KAAK,SAAS;EACvB,MAAM,QAAQ,QAAQ,EAAE,MAAM,EAAE,IAAI;EACpC,IAAI,OAAO;GACT,OAAO,KAAK,KAAK;GACjB;EACF;EACA,WAAW,KAAK;GAAE,MAAM,EAAE;GAAM,OAAO,eAAe,EAAE,IAAI;EAAE,CAAC;CACjE;CACA,MAAM,eAAe,iBAAiB,IAAI;CAC1C,MAAM,WAAW,eAAe,aAAa,cAAc,KAAK,IAAI,CAAC;CACrE,MAAM,0BAA0B,IAAI,IAAI,CAAC,eAAe,CAAC;CACzD,IAAI,OAAO,QAAQ,QAAQ,IAAI,aAAa;CAC5C,IAAI,SAAS,QAAQ,QAAQ,IAAI,eAAe;CAChD,IAAI,8BAA8B,QAAQ,IAAI,gBAAgB;CAC9D,MAAM,aAAa,sBAAsB;CACzC,MAAM,QAAQ,CAAC,8BAA8B,WAAW,GAAG;CAC3D,IAAI,8BAA8B;EAChC,MAAM,KACJ,uCAAuC,cAAc;2BAChC,cAAc;6CACI,6BAA6B;2BAC/C,6BAA6B;;iEAES,cAAc,QAAQ,6BAA6B;EAEhH;CACF;CACA,MAAM,KACJ,yCAAyC,gBAAgB,YAAY,YAAY,MAAM,EAAE,EAC3F;CACA,MAAM,KACJ,gGACF;CACA,IAAI,SAAS,QAAQ,MAAM,KAAK,cAAc,QAAQ,CAAC;CACvD,OAAO;EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK;EAAG,MAAM,MAAM,KAAK,IAAI;CAAE;AAChE;AACA,SAAS,uBAAuB,QAAQ;CACtC,OAAO;EACP,YAAY;EACZ,OAAO,QAAQ,KAAK,IAAI,EAAE;;EAE1B,OAAO,KAAK;;AAEd;AACA,SAAS,eAAe,UAAU;CAChC,MAAM,OAAO,SAAS,QAAQ;CAC9B,MAAM,WAAW,KAAK,QAAQ,kCAAkC,EAAE;CAClE,OAAO,aAAa,OAAO,KAAK,QAAQ,mBAAmB,EAAE,IAAI;AACnE"}