{"version":3,"file":"requireJsdoc.cjs","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","e","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getMethodOnInterface","interfaceName","methodName","scope","scp","identifiers","name","variables","identifier","interfaceDeclaration","parent","bodyItem","body","methodSig","key","upper","isExemptedImplementer","node","sourceCode","settings","implments","implements","impl","expression","interfaceMethodNode","getScope","comment","getJSDocComment","getOption","baseObject","option","options","getOptions","undefined","baseObj","prop","Object","keys","opt","_default","exports","create","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","some","ctxt","count","underMinLine","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser.js';\nimport {\n  getSettings,\n} from '../iterateJsdoc.js';\nimport {\n  enforcedContexts,\n  exemptSpeciaMethods,\n  getContextObject,\n  getFunctionParameterNames,\n  getIndent,\n  hasReturnValue,\n  isConstructor,\n} from '../jsdocUtils.js';\nimport {\n  getDecorator,\n  getJSDocComment,\n  getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n *   ancestorsOnly: boolean,\n *   esm: boolean,\n *   initModuleExports: boolean,\n *   initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/**\n * @typedef {import('eslint').Rule.Node|\n *   import('@typescript-eslint/types').TSESTree.Node} ESLintOrTSNode\n */\n\n/** @type {import('json-schema').JSONSchema4} */\nconst OPTIONS_SCHEMA = {\n  additionalProperties: false,\n  properties: {\n    checkConstructors: {\n      default: true,\n      type: 'boolean',\n    },\n    checkGetters: {\n      anyOf: [\n        {\n          type: 'boolean',\n        },\n        {\n          enum: [\n            'no-setter',\n          ],\n          type: 'string',\n        },\n      ],\n      default: true,\n    },\n    checkSetters: {\n      anyOf: [\n        {\n          type: 'boolean',\n        },\n        {\n          enum: [\n            'no-getter',\n          ],\n          type: 'string',\n        },\n      ],\n      default: true,\n    },\n    contexts: {\n      items: {\n        anyOf: [\n          {\n            type: 'string',\n          },\n          {\n            additionalProperties: false,\n            properties: {\n              context: {\n                type: 'string',\n              },\n              inlineCommentBlock: {\n                type: 'boolean',\n              },\n              minLineCount: {\n                type: 'integer',\n              },\n            },\n            type: 'object',\n          },\n        ],\n      },\n      type: 'array',\n    },\n    enableFixer: {\n      default: true,\n      type: 'boolean',\n    },\n    exemptEmptyConstructors: {\n      default: false,\n      type: 'boolean',\n    },\n    exemptEmptyFunctions: {\n      default: false,\n      type: 'boolean',\n    },\n    fixerMessage: {\n      default: '',\n      type: 'string',\n    },\n    minLineCount: {\n      type: 'integer',\n    },\n    publicOnly: {\n      oneOf: [\n        {\n          default: false,\n          type: 'boolean',\n        },\n        {\n          additionalProperties: false,\n          default: {},\n          properties: {\n            ancestorsOnly: {\n              type: 'boolean',\n            },\n            cjs: {\n              type: 'boolean',\n            },\n            esm: {\n              type: 'boolean',\n            },\n            window: {\n              type: 'boolean',\n            },\n          },\n          type: 'object',\n        },\n      ],\n    },\n    require: {\n      additionalProperties: false,\n      default: {},\n      properties: {\n        ArrowFunctionExpression: {\n          default: false,\n          type: 'boolean',\n        },\n        ClassDeclaration: {\n          default: false,\n          type: 'boolean',\n        },\n        ClassExpression: {\n          default: false,\n          type: 'boolean',\n        },\n        FunctionDeclaration: {\n          default: true,\n          type: 'boolean',\n        },\n        FunctionExpression: {\n          default: false,\n          type: 'boolean',\n        },\n        MethodDefinition: {\n          default: false,\n          type: 'boolean',\n        },\n      },\n      type: 'object',\n    },\n  },\n  type: 'object',\n};\n\n/**\n * @param {string} interfaceName\n * @param {string} methodName\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {import('@typescript-eslint/types').TSESTree.TSMethodSignature|null}\n */\nconst getMethodOnInterface = (interfaceName, methodName, scope) => {\n  let scp = scope;\n  while (scp) {\n    for (const {\n      identifiers,\n      name,\n    } of scp.variables) {\n      if (interfaceName !== name) {\n        continue;\n      }\n\n      for (const identifier of identifiers) {\n        const interfaceDeclaration = /** @type {import('@typescript-eslint/types').TSESTree.Identifier & {parent: import('@typescript-eslint/types').TSESTree.TSInterfaceDeclaration}} */ (\n          identifier\n        ).parent;\n        /* c8 ignore next 3 -- TS */\n        if (interfaceDeclaration.type !== 'TSInterfaceDeclaration') {\n          continue;\n        }\n\n        for (const bodyItem of interfaceDeclaration.body.body) {\n          const methodSig = /** @type {import('@typescript-eslint/types').TSESTree.TSMethodSignature} */ (\n            bodyItem\n          );\n          if (methodName === /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n            methodSig.key\n          ).name) {\n            return methodSig;\n          }\n        }\n      }\n    }\n\n    scp = scp.upper;\n  }\n\n  return null;\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n */\nconst isExemptedImplementer = (node, sourceCode, context, settings) => {\n  if (node.type === 'FunctionExpression' &&\n    node.parent.type === 'MethodDefinition' &&\n    node.parent.parent.type === 'ClassBody' &&\n    node.parent.parent.parent.type === 'ClassDeclaration' &&\n    'implements' in node.parent.parent.parent\n  ) {\n    const implments = /** @type {import('@typescript-eslint/types').TSESTree.TSClassImplements[]} */ (\n      node.parent.parent.parent.implements\n    );\n\n    const {\n      name: methodName,\n    } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n      node.parent.key\n    );\n\n    for (const impl of implments) {\n      const {\n        name: interfaceName,\n      } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n        impl.expression\n      );\n\n      const interfaceMethodNode = getMethodOnInterface(interfaceName, methodName, node && (\n        (sourceCode.getScope &&\n        /* c8 ignore next 2 */\n        sourceCode.getScope(node)) ||\n        context.getScope()\n      ));\n      if (interfaceMethodNode) {\n        // @ts-expect-error Ok\n        const comment = getJSDocComment(sourceCode, interfaceMethodNode, settings);\n        if (comment) {\n          return true;\n        }\n      }\n    }\n  }\n\n  return false;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\n */\nconst getOption = (context, baseObject, option, key) => {\n  if (context.options[0] && option in context.options[0] &&\n    // Todo: boolean shouldn't be returning property, but\n    //   tests currently require\n    (typeof context.options[0][option] === 'boolean' ||\n    key in context.options[0][option])\n  ) {\n    return context.options[0][option][key];\n  }\n\n  return /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n    baseObject.properties\n  )[key].default;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n *   contexts: (string|{\n *     context: string,\n *     inlineCommentBlock: boolean,\n *     minLineCount: import('../iterateJsdoc.js').Integer\n *   })[],\n *   enableFixer: boolean,\n *   exemptEmptyConstructors: boolean,\n *   exemptEmptyFunctions: boolean,\n *   fixerMessage: string,\n *   minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n *   publicOnly: boolean|{[key: string]: boolean|undefined}\n *   require: {[key: string]: boolean|undefined}\n * }}\n */\nconst getOptions = (context, settings) => {\n  const {\n    contexts = settings.contexts || [],\n    enableFixer = true,\n    exemptEmptyConstructors = true,\n    exemptEmptyFunctions = false,\n    fixerMessage = '',\n    minLineCount = undefined,\n    publicOnly,\n  } = context.options[0] || {};\n\n  return {\n    contexts,\n    enableFixer,\n    exemptEmptyConstructors,\n    exemptEmptyFunctions,\n    fixerMessage,\n    minLineCount,\n    publicOnly: ((baseObj) => {\n      if (!publicOnly) {\n        return false;\n      }\n\n      /** @type {{[key: string]: boolean|undefined}} */\n      const properties = {};\n      for (const prop of Object.keys(\n        /** @type {import('json-schema').JSONSchema4Object} */ (\n        /** @type {import('json-schema').JSONSchema4Object} */ (\n            baseObj\n          ).properties),\n      )) {\n        const opt = getOption(\n          context,\n          /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n          'publicOnly',\n          prop,\n        );\n\n        properties[prop] = opt;\n      }\n\n      return properties;\n    })(\n      /** @type {import('json-schema').JSONSchema4Object} */\n      (\n        /** @type {import('json-schema').JSONSchema4Object} */\n        (\n          /** @type {import('json-schema').JSONSchema4Object} */\n          (\n            OPTIONS_SCHEMA.properties\n          ).publicOnly\n        ).oneOf\n      )[1],\n    ),\n    require: ((baseObj) => {\n      /** @type {{[key: string]: boolean|undefined}} */\n      const properties = {};\n      for (const prop of Object.keys(\n        /** @type {import('json-schema').JSONSchema4Object} */ (\n        /** @type {import('json-schema').JSONSchema4Object} */ (\n            baseObj\n          ).properties),\n      )) {\n        const opt = getOption(\n          context,\n          /** @type {import('json-schema').JSONSchema4Object} */\n          (baseObj),\n          'require',\n          prop,\n        );\n        properties[prop] = opt;\n      }\n\n      return properties;\n    })(\n      /** @type {import('json-schema').JSONSchema4Object} */\n      (OPTIONS_SCHEMA.properties).require,\n    ),\n  };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n  create (context) {\n    /* c8 ignore next -- Fallback to deprecated method */\n    const {\n      sourceCode = context.getSourceCode(),\n    } = context;\n    const settings = getSettings(context);\n    if (!settings) {\n      return {};\n    }\n\n    const opts = getOptions(context, settings);\n\n    const {\n      contexts,\n      enableFixer,\n      exemptEmptyConstructors,\n      exemptEmptyFunctions,\n      fixerMessage,\n      minLineCount,\n      require: requireOption,\n    } = opts;\n\n    const publicOnly =\n\n      /**\n       * @type {{\n       *   [key: string]: boolean | undefined;\n       * }}\n       */ (\n        opts.publicOnly\n      );\n\n    /**\n     * @type {import('../iterateJsdoc.js').CheckJsdoc}\n     */\n    const checkJsDoc = (info, _handler, node) => {\n      if (\n        // Optimize\n        minLineCount !== undefined || contexts.some((ctxt) => {\n          if (typeof ctxt === 'string') {\n            return false;\n          }\n\n          const {\n            minLineCount: count,\n          } = ctxt;\n          return count !== undefined;\n        })\n      ) {\n        /**\n         * @param {undefined|import('../iterateJsdoc.js').Integer} count\n         */\n        const underMinLine = (count) => {\n          return count !== undefined && count >\n            (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n        };\n\n        if (underMinLine(minLineCount)) {\n          return;\n        }\n\n        const {\n          minLineCount: contextMinLineCount,\n        } =\n          /**\n           * @type {{\n           *   context: string;\n           *   inlineCommentBlock: boolean;\n           *   minLineCount: number;\n           * }}\n           */ (contexts.find((ctxt) => {\n            if (typeof ctxt === 'string') {\n              return false;\n            }\n\n            const {\n              context: ctx,\n            } = ctxt;\n            return ctx === (info.selector || node.type);\n          })) || {};\n        if (underMinLine(contextMinLineCount)) {\n          return;\n        }\n      }\n\n      const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n      if (jsDocNode) {\n        return;\n      }\n\n      // For those who have options configured against ANY constructors (or\n      //  setters or getters) being reported\n      if (exemptSpeciaMethods(\n        {\n          description: '',\n          inlineTags: [],\n          problems: [],\n          source: [],\n          tags: [],\n        },\n        node,\n        context,\n        [\n          OPTIONS_SCHEMA,\n        ],\n      )) {\n        return;\n      }\n\n      if (\n        // Avoid reporting param-less, return-less functions (when\n        //  `exemptEmptyFunctions` option is set)\n        exemptEmptyFunctions && info.isFunctionContext ||\n\n        // Avoid reporting  param-less, return-less constructor methods (when\n        //  `exemptEmptyConstructors` option is set)\n        exemptEmptyConstructors && isConstructor(node)\n      ) {\n        const functionParameterNames = getFunctionParameterNames(node);\n        if (!functionParameterNames.length && !hasReturnValue(node)) {\n          return;\n        }\n      }\n\n      if (isExemptedImplementer(node, sourceCode, context, settings)) {\n        return;\n      }\n\n      const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n        // Default to one line break if the `minLines`/`maxLines` settings allow\n        const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n        /** @type {ESLintOrTSNode|import('@typescript-eslint/types').TSESTree.Decorator} */\n        let baseNode = getReducedASTNode(node, sourceCode);\n\n        const decorator = getDecorator(\n          /** @type {import('eslint').Rule.Node} */\n          (baseNode),\n        );\n        if (decorator) {\n          baseNode = decorator;\n        }\n\n        const indent = getIndent({\n          text: sourceCode.getText(\n            /** @type {import('eslint').Rule.Node} */ (baseNode),\n            /** @type {import('eslint').AST.SourceLocation} */\n            (\n              /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n            ).start.column,\n          ),\n        });\n\n        const {\n          inlineCommentBlock,\n        } =\n          /**\n           * @type {{\n           *     context: string,\n           *     inlineCommentBlock: boolean,\n           *     minLineCount: import('../iterateJsdoc.js').Integer\n           *   }}\n           */ (contexts.find((contxt) => {\n            if (typeof contxt === 'string') {\n              return false;\n            }\n\n            const {\n              context: ctxt,\n            } = contxt;\n            return ctxt === node.type;\n          })) || {};\n        const insertion = (inlineCommentBlock ?\n          `/** ${fixerMessage}` :\n          `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n            `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n        return fixer.insertTextBefore(\n          /** @type {import('eslint').Rule.Node} */\n          (baseNode),\n          insertion,\n        );\n      };\n\n      const report = () => {\n        const {\n          start,\n        } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n        const loc = {\n          end: {\n            column: 0,\n            line: start.line + 1,\n          },\n          start,\n        };\n        context.report({\n          fix: enableFixer ? fix : null,\n          loc,\n          messageId: 'missingJsDoc',\n          node,\n        });\n      };\n\n      if (publicOnly) {\n        /** @type {RequireJsdocOpts} */\n        const opt = {\n          ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n          esm: Boolean(publicOnly?.esm ?? true),\n          initModuleExports: Boolean(publicOnly?.cjs ?? true),\n          initWindow: Boolean(publicOnly?.window ?? false),\n        };\n        const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n        if (exported) {\n          report();\n        }\n      } else {\n        report();\n      }\n    };\n\n    /**\n     * @param {string} prop\n     * @returns {boolean}\n     */\n    const hasOption = (prop) => {\n      return requireOption[prop] || contexts.some((ctxt) => {\n        return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n      });\n    };\n\n    return {\n      ...getContextObject(\n        enforcedContexts(context, [], settings),\n        checkJsDoc,\n      ),\n      ArrowFunctionExpression (node) {\n        if (!hasOption('ArrowFunctionExpression')) {\n          return;\n        }\n\n        if (\n          [\n            'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n          ].includes(node.parent.type) ||\n          [\n            'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n          ].includes(node.parent.type) &&\n            node ===\n              /**\n               * @type {import('@typescript-eslint/types').TSESTree.Property|\n               *   import('@typescript-eslint/types').TSESTree.PropertyDefinition\n               * }\n               */\n              (node.parent).value\n        ) {\n          checkJsDoc({\n            isFunctionContext: true,\n          }, null, node);\n        }\n      },\n\n      ClassDeclaration (node) {\n        if (!hasOption('ClassDeclaration')) {\n          return;\n        }\n\n        checkJsDoc({\n          isFunctionContext: false,\n        }, null, node);\n      },\n\n      ClassExpression (node) {\n        if (!hasOption('ClassExpression')) {\n          return;\n        }\n\n        checkJsDoc({\n          isFunctionContext: false,\n        }, null, node);\n      },\n\n      FunctionDeclaration (node) {\n        if (!hasOption('FunctionDeclaration')) {\n          return;\n        }\n\n        checkJsDoc({\n          isFunctionContext: true,\n        }, null, node);\n      },\n\n      FunctionExpression (node) {\n        if (!hasOption('FunctionExpression')) {\n          return;\n        }\n\n        if (\n          [\n            'AssignmentExpression', 'ExportDefaultDeclaration', 'VariableDeclarator',\n          ].includes(node.parent.type) ||\n          [\n            'ClassProperty', 'ObjectProperty', 'Property', 'PropertyDefinition',\n          ].includes(node.parent.type) &&\n            node ===\n              /**\n               * @type {import('@typescript-eslint/types').TSESTree.Property|\n               *   import('@typescript-eslint/types').TSESTree.PropertyDefinition\n               * }\n               */\n              (node.parent).value\n        ) {\n          checkJsDoc({\n            isFunctionContext: true,\n          }, null, node);\n        }\n      },\n\n      MethodDefinition (node) {\n        if (!hasOption('MethodDefinition')) {\n          return;\n        }\n\n        checkJsDoc({\n          isFunctionContext: true,\n          selector: 'MethodDefinition',\n        }, null, /** @type {import('eslint').Rule.Node} */ (node.value));\n      },\n    };\n  },\n  meta: {\n    docs: {\n      category: 'Stylistic Issues',\n      description: 'Require JSDoc comments',\n      recommended: true,\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\n    },\n\n    fixable: 'code',\n\n    messages: {\n      missingJsDoc: 'Missing JSDoc comment.',\n    },\n\n    schema: [\n      OPTIONS_SCHEMA,\n    ],\n\n    type: 'suggestion',\n  },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AASA,IAAAG,aAAA,GAAAH,OAAA;AAI8B,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAMG,cAAc,GAAG;EACrBC,oBAAoB,EAAE,KAAK;EAC3BC,UAAU,EAAE;IACVC,iBAAiB,EAAE;MACjBJ,OAAO,EAAE,IAAI;MACbK,IAAI,EAAE;IACR,CAAC;IACDC,YAAY,EAAE;MACZC,KAAK,EAAE,CACL;QACEF,IAAI,EAAE;MACR,CAAC,EACD;QACEG,IAAI,EAAE,CACJ,WAAW,CACZ;QACDH,IAAI,EAAE;MACR,CAAC,CACF;MACDL,OAAO,EAAE;IACX,CAAC;IACDS,YAAY,EAAE;MACZF,KAAK,EAAE,CACL;QACEF,IAAI,EAAE;MACR,CAAC,EACD;QACEG,IAAI,EAAE,CACJ,WAAW,CACZ;QACDH,IAAI,EAAE;MACR,CAAC,CACF;MACDL,OAAO,EAAE;IACX,CAAC;IACDU,QAAQ,EAAE;MACRC,KAAK,EAAE;QACLJ,KAAK,EAAE,CACL;UACEF,IAAI,EAAE;QACR,CAAC,EACD;UACEH,oBAAoB,EAAE,KAAK;UAC3BC,UAAU,EAAE;YACVS,OAAO,EAAE;cACPP,IAAI,EAAE;YACR,CAAC;YACDQ,kBAAkB,EAAE;cAClBR,IAAI,EAAE;YACR,CAAC;YACDS,YAAY,EAAE;cACZT,IAAI,EAAE;YACR;UACF,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;MAEL,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IACDU,WAAW,EAAE;MACXf,OAAO,EAAE,IAAI;MACbK,IAAI,EAAE;IACR,CAAC;IACDW,uBAAuB,EAAE;MACvBhB,OAAO,EAAE,KAAK;MACdK,IAAI,EAAE;IACR,CAAC;IACDY,oBAAoB,EAAE;MACpBjB,OAAO,EAAE,KAAK;MACdK,IAAI,EAAE;IACR,CAAC;IACDa,YAAY,EAAE;MACZlB,OAAO,EAAE,EAAE;MACXK,IAAI,EAAE;IACR,CAAC;IACDS,YAAY,EAAE;MACZT,IAAI,EAAE;IACR,CAAC;IACDc,UAAU,EAAE;MACVC,KAAK,EAAE,CACL;QACEpB,OAAO,EAAE,KAAK;QACdK,IAAI,EAAE;MACR,CAAC,EACD;QACEH,oBAAoB,EAAE,KAAK;QAC3BF,OAAO,EAAE,CAAC,CAAC;QACXG,UAAU,EAAE;UACVkB,aAAa,EAAE;YACbhB,IAAI,EAAE;UACR,CAAC;UACDiB,GAAG,EAAE;YACHjB,IAAI,EAAE;UACR,CAAC;UACDkB,GAAG,EAAE;YACHlB,IAAI,EAAE;UACR,CAAC;UACDmB,MAAM,EAAE;YACNnB,IAAI,EAAE;UACR;QACF,CAAC;QACDA,IAAI,EAAE;MACR,CAAC;IAEL,CAAC;IACDX,OAAO,EAAE;MACPQ,oBAAoB,EAAE,KAAK;MAC3BF,OAAO,EAAE,CAAC,CAAC;MACXG,UAAU,EAAE;QACVsB,uBAAuB,EAAE;UACvBzB,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDqB,gBAAgB,EAAE;UAChB1B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDsB,eAAe,EAAE;UACf3B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDuB,mBAAmB,EAAE;UACnB5B,OAAO,EAAE,IAAI;UACbK,IAAI,EAAE;QACR,CAAC;QACDwB,kBAAkB,EAAE;UAClB7B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR,CAAC;QACDyB,gBAAgB,EAAE;UAChB9B,OAAO,EAAE,KAAK;UACdK,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR;EACF,CAAC;EACDA,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,oBAAoB,GAAGA,CAACC,aAAa,EAAEC,UAAU,EAAEC,KAAK,KAAK;EACjE,IAAIC,GAAG,GAAGD,KAAK;EACf,OAAOC,GAAG,EAAE;IACV,KAAK,MAAM;MACTC,WAAW;MACXC;IACF,CAAC,IAAIF,GAAG,CAACG,SAAS,EAAE;MAClB,IAAIN,aAAa,KAAKK,IAAI,EAAE;QAC1B;MACF;MAEA,KAAK,MAAME,UAAU,IAAIH,WAAW,EAAE;QACpC,MAAMI,oBAAoB,GAAG,oJAC3BD,UAAU,CACVE,MAAM;QACR;QACA,IAAID,oBAAoB,CAACnC,IAAI,KAAK,wBAAwB,EAAE;UAC1D;QACF;QAEA,KAAK,MAAMqC,QAAQ,IAAIF,oBAAoB,CAACG,IAAI,CAACA,IAAI,EAAE;UACrD,MAAMC,SAAS,GAAG;UAChBF,QACD;UACD,IAAIT,UAAU,KAAK,qEACjBW,SAAS,CAACC,GAAG,CACbR,IAAI,EAAE;YACN,OAAOO,SAAS;UAClB;QACF;MACF;IACF;IAEAT,GAAG,GAAGA,GAAG,CAACW,KAAK;EACjB;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAGA,CAACC,IAAI,EAAEC,UAAU,EAAErC,OAAO,EAAEsC,QAAQ,KAAK;EACrE,IAAIF,IAAI,CAAC3C,IAAI,KAAK,oBAAoB,IACpC2C,IAAI,CAACP,MAAM,CAACpC,IAAI,KAAK,kBAAkB,IACvC2C,IAAI,CAACP,MAAM,CAACA,MAAM,CAACpC,IAAI,KAAK,WAAW,IACvC2C,IAAI,CAACP,MAAM,CAACA,MAAM,CAACA,MAAM,CAACpC,IAAI,KAAK,kBAAkB,IACrD,YAAY,IAAI2C,IAAI,CAACP,MAAM,CAACA,MAAM,CAACA,MAAM,EACzC;IACA,MAAMU,SAAS,GAAG;IAChBH,IAAI,CAACP,MAAM,CAACA,MAAM,CAACA,MAAM,CAACW,UAC3B;IAED,MAAM;MACJf,IAAI,EAAEJ;IACR,CAAC,GAAG;IACFe,IAAI,CAACP,MAAM,CAACI,GACb;IAED,KAAK,MAAMQ,IAAI,IAAIF,SAAS,EAAE;MAC5B,MAAM;QACJd,IAAI,EAAEL;MACR,CAAC,GAAG;MACFqB,IAAI,CAACC,UACN;MAED,MAAMC,mBAAmB,GAAGxB,oBAAoB,CAACC,aAAa,EAAEC,UAAU,EAAEe,IAAI,KAC7EC,UAAU,CAACO,QAAQ,IACpB;MACAP,UAAU,CAACO,QAAQ,CAACR,IAAI,CAAC,IACzBpC,OAAO,CAAC4C,QAAQ,CAAC,CAAC,CACnB,CAAC;MACF,IAAID,mBAAmB,EAAE;QACvB;QACA,MAAME,OAAO,GAAG,IAAAC,6BAAe,EAACT,UAAU,EAAEM,mBAAmB,EAAEL,QAAQ,CAAC;QAC1E,IAAIO,OAAO,EAAE;UACX,OAAO,IAAI;QACb;MACF;IACF;EACF;EAEA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,SAAS,GAAGA,CAAC/C,OAAO,EAAEgD,UAAU,EAAEC,MAAM,EAAEhB,GAAG,KAAK;EACtD,IAAIjC,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC,IAAID,MAAM,IAAIjD,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC;EACpD;EACA;EACC,OAAOlD,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC,CAACD,MAAM,CAAC,KAAK,SAAS,IAChDhB,GAAG,IAAIjC,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC,CAACD,MAAM,CAAC,CAAC,EAClC;IACA,OAAOjD,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC,CAACD,MAAM,CAAC,CAAChB,GAAG,CAAC;EACxC;EAEA,OAAO,6DACLe,UAAU,CAACzD,UAAU,CACrB0C,GAAG,CAAC,CAAC7C,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM+D,UAAU,GAAGA,CAACnD,OAAO,EAAEsC,QAAQ,KAAK;EACxC,MAAM;IACJxC,QAAQ,GAAGwC,QAAQ,CAACxC,QAAQ,IAAI,EAAE;IAClCK,WAAW,GAAG,IAAI;IAClBC,uBAAuB,GAAG,IAAI;IAC9BC,oBAAoB,GAAG,KAAK;IAC5BC,YAAY,GAAG,EAAE;IACjBJ,YAAY,GAAGkD,SAAS;IACxB7C;EACF,CAAC,GAAGP,OAAO,CAACkD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,OAAO;IACLpD,QAAQ;IACRK,WAAW;IACXC,uBAAuB;IACvBC,oBAAoB;IACpBC,YAAY;IACZJ,YAAY;IACZK,UAAU,EAAE,CAAE8C,OAAO,IAAK;MACxB,IAAI,CAAC9C,UAAU,EAAE;QACf,OAAO,KAAK;MACd;;MAEA;MACA,MAAMhB,UAAU,GAAG,CAAC,CAAC;MACrB,KAAK,MAAM+D,IAAI,IAAIC,MAAM,CAACC,IAAI,CAC5B;MACA,sDACIH,OAAO,CACP9D,UACN,CAAC,EAAE;QACD,MAAMkE,GAAG,GAAGV,SAAS,CACnB/C,OAAO,EACP,sDAAwDqD,OAAO,EAC/D,YAAY,EACZC,IACF,CAAC;QAED/D,UAAU,CAAC+D,IAAI,CAAC,GAAGG,GAAG;MACxB;MAEA,OAAOlE,UAAU;IACnB,CAAC,EACC;IACA,CACE;IACA,CACE;IAEEF,cAAc,CAACE,UAAU,CACzBgB,UAAU,EACZC,KAAK,EACP,CAAC,CACL,CAAC;IACD1B,OAAO,EAAE,CAAEuE,OAAO,IAAK;MACrB;MACA,MAAM9D,UAAU,GAAG,CAAC,CAAC;MACrB,KAAK,MAAM+D,IAAI,IAAIC,MAAM,CAACC,IAAI,CAC5B;MACA,sDACIH,OAAO,CACP9D,UACN,CAAC,EAAE;QACD,MAAMkE,GAAG,GAAGV,SAAS,CACnB/C,OAAO,EACP;QACCqD,OAAO,EACR,SAAS,EACTC,IACF,CAAC;QACD/D,UAAU,CAAC+D,IAAI,CAAC,GAAGG,GAAG;MACxB;MAEA,OAAOlE,UAAU;IACnB,CAAC,EACC;IACCF,cAAc,CAACE,UAAU,CAAET,OAC9B;EACF,CAAC;AACH,CAAC;;AAED;AAAA,IAAA4E,QAAA,GAAAC,OAAA,CAAAvE,OAAA,GACe;EACbwE,MAAMA,CAAE5D,OAAO,EAAE;IACf;IACA,MAAM;MACJqC,UAAU,GAAGrC,OAAO,CAAC6D,aAAa,CAAC;IACrC,CAAC,GAAG7D,OAAO;IACX,MAAMsC,QAAQ,GAAG,IAAAwB,yBAAW,EAAC9D,OAAO,CAAC;IACrC,IAAI,CAACsC,QAAQ,EAAE;MACb,OAAO,CAAC,CAAC;IACX;IAEA,MAAMyB,IAAI,GAAGZ,UAAU,CAACnD,OAAO,EAAEsC,QAAQ,CAAC;IAE1C,MAAM;MACJxC,QAAQ;MACRK,WAAW;MACXC,uBAAuB;MACvBC,oBAAoB;MACpBC,YAAY;MACZJ,YAAY;MACZpB,OAAO,EAAEkF;IACX,CAAC,GAAGD,IAAI;IAER,MAAMxD,UAAU;IAEd;AACN;AACA;AACA;AACA;IACQwD,IAAI,CAACxD,UACN;;IAEH;AACJ;AACA;IACI,MAAM0D,UAAU,GAAGA,CAACC,IAAI,EAAEC,QAAQ,EAAE/B,IAAI,KAAK;MAC3C;MACE;MACAlC,YAAY,KAAKkD,SAAS,IAAItD,QAAQ,CAACsE,IAAI,CAAEC,IAAI,IAAK;QACpD,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;UAC5B,OAAO,KAAK;QACd;QAEA,MAAM;UACJnE,YAAY,EAAEoE;QAChB,CAAC,GAAGD,IAAI;QACR,OAAOC,KAAK,KAAKlB,SAAS;MAC5B,CAAC,CAAC,EACF;QACA;AACR;AACA;QACQ,MAAMmB,YAAY,GAAID,KAAK,IAAK;UAC9B,OAAOA,KAAK,KAAKlB,SAAS,IAAIkB,KAAK,GACjC,CAACjC,UAAU,CAACmC,OAAO,CAACpC,IAAI,CAAC,CAACqC,KAAK,CAAC,MAAM,CAAC,EAAEC,MAAM,IAAI,CAAC,IAAI,CAAC;QAC7D,CAAC;QAED,IAAIH,YAAY,CAACrE,YAAY,CAAC,EAAE;UAC9B;QACF;QAEA,MAAM;UACJA,YAAY,EAAEyE;QAChB,CAAC;QACC;AACV;AACA;AACA;AACA;AACA;AACA;QAAe7E,QAAQ,CAAC8E,IAAI,CAAEP,IAAI,IAAK;UAC3B,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,KAAK;UACd;UAEA,MAAM;YACJrE,OAAO,EAAE6E;UACX,CAAC,GAAGR,IAAI;UACR,OAAOQ,GAAG,MAAMX,IAAI,CAACY,QAAQ,IAAI1C,IAAI,CAAC3C,IAAI,CAAC;QAC7C,CAAC,CAAC,IAAK,CAAC,CAAC;QACX,IAAI8E,YAAY,CAACI,mBAAmB,CAAC,EAAE;UACrC;QACF;MACF;MAEA,MAAMI,SAAS,GAAG,IAAAjC,6BAAe,EAACT,UAAU,EAAED,IAAI,EAAEE,QAAQ,CAAC;MAE7D,IAAIyC,SAAS,EAAE;QACb;MACF;;MAEA;MACA;MACA,IAAI,IAAAC,+BAAmB,EACrB;QACEC,WAAW,EAAE,EAAE;QACfC,UAAU,EAAE,EAAE;QACdC,QAAQ,EAAE,EAAE;QACZC,MAAM,EAAE,EAAE;QACVC,IAAI,EAAE;MACR,CAAC,EACDjD,IAAI,EACJpC,OAAO,EACP,CACEX,cAAc,CAElB,CAAC,EAAE;QACD;MACF;MAEA;MACE;MACA;MACAgB,oBAAoB,IAAI6D,IAAI,CAACoB,iBAAiB;MAE9C;MACA;MACAlF,uBAAuB,IAAI,IAAAmF,yBAAa,EAACnD,IAAI,CAAC,EAC9C;QACA,MAAMoD,sBAAsB,GAAG,IAAAC,qCAAyB,EAACrD,IAAI,CAAC;QAC9D,IAAI,CAACoD,sBAAsB,CAACd,MAAM,IAAI,CAAC,IAAAgB,0BAAc,EAACtD,IAAI,CAAC,EAAE;UAC3D;QACF;MACF;MAEA,IAAID,qBAAqB,CAACC,IAAI,EAAEC,UAAU,EAAErC,OAAO,EAAEsC,QAAQ,CAAC,EAAE;QAC9D;MACF;MAEA,MAAMqD,GAAG,GAAG,gDAAkDC,KAAK,IAAK;QACtE;QACA,MAAMC,KAAK,GAAGvD,QAAQ,CAACwD,QAAQ,KAAK,CAAC,IAAIxD,QAAQ,CAACyD,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAGzD,QAAQ,CAACwD,QAAQ;QACvF;QACA,IAAIE,QAAQ,GAAG,IAAAC,+BAAiB,EAAC7D,IAAI,EAAEC,UAAU,CAAC;QAElD,MAAM6D,SAAS,GAAG,IAAAC,0BAAY,EAC5B;QACCH,QACH,CAAC;QACD,IAAIE,SAAS,EAAE;UACbF,QAAQ,GAAGE,SAAS;QACtB;QAEA,MAAME,MAAM,GAAG,IAAAC,qBAAS,EAAC;UACvBC,IAAI,EAAEjE,UAAU,CAACmC,OAAO,CACtB,yCAA2CwB,QAAQ,EACnD;UACA,CACE,yCAA2CA,QAAQ,CAAEO,GAAG,EACxDC,KAAK,CAACC,MACV;QACF,CAAC,CAAC;QAEF,MAAM;UACJxG;QACF,CAAC;QACC;AACV;AACA;AACA;AACA;AACA;AACA;QAAeH,QAAQ,CAAC8E,IAAI,CAAE8B,MAAM,IAAK;UAC7B,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,KAAK;UACd;UAEA,MAAM;YACJ1G,OAAO,EAAEqE;UACX,CAAC,GAAGqC,MAAM;UACV,OAAOrC,IAAI,KAAKjC,IAAI,CAAC3C,IAAI;QAC3B,CAAC,CAAC,IAAK,CAAC,CAAC;QACX,MAAMkH,SAAS,GAAG,CAAC1G,kBAAkB,GACnC,OAAOK,YAAY,EAAE,GACrB,QAAQ8F,MAAM,IAAI9F,YAAY,KAAK8F,MAAM,EAAE,IACzC,KAAK,IAAI,CAACQ,MAAM,CAACf,KAAK,CAAC,GAAGO,MAAM,CAACS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAEnD,OAAOjB,KAAK,CAACkB,gBAAgB,CAC3B;QACCd,QAAQ,EACTW,SACF,CAAC;MACH,CAAC;MAED,MAAMI,MAAM,GAAGA,CAAA,KAAM;QACnB,MAAM;UACJP;QACF,CAAC,GAAG,kDAAoDpE,IAAI,CAACmE,GAAI;QACjE,MAAMA,GAAG,GAAG;UACVS,GAAG,EAAE;YACHP,MAAM,EAAE,CAAC;YACTQ,IAAI,EAAET,KAAK,CAACS,IAAI,GAAG;UACrB,CAAC;UACDT;QACF,CAAC;QACDxG,OAAO,CAAC+G,MAAM,CAAC;UACbpB,GAAG,EAAExF,WAAW,GAAGwF,GAAG,GAAG,IAAI;UAC7BY,GAAG;UACHW,SAAS,EAAE,cAAc;UACzB9E;QACF,CAAC,CAAC;MACJ,CAAC;MAED,IAAI7B,UAAU,EAAE;QACd;QACA,MAAMkD,GAAG,GAAG;UACVhD,aAAa,EAAE0G,OAAO,CAAC5G,UAAU,EAAEE,aAAa,IAAI,KAAK,CAAC;UAC1DE,GAAG,EAAEwG,OAAO,CAAC5G,UAAU,EAAEI,GAAG,IAAI,IAAI,CAAC;UACrCyG,iBAAiB,EAAED,OAAO,CAAC5G,UAAU,EAAEG,GAAG,IAAI,IAAI,CAAC;UACnD2G,UAAU,EAAEF,OAAO,CAAC5G,UAAU,EAAEK,MAAM,IAAI,KAAK;QACjD,CAAC;QACD,MAAM0G,QAAQ,GAAGC,qBAAY,CAACC,mBAAmB,CAACpF,IAAI,EAAEC,UAAU,EAAEoB,GAAG,EAAEnB,QAAQ,CAAC;QAElF,IAAIgF,QAAQ,EAAE;UACZP,MAAM,CAAC,CAAC;QACV;MACF,CAAC,MAAM;QACLA,MAAM,CAAC,CAAC;MACV;IACF,CAAC;;IAED;AACJ;AACA;AACA;IACI,MAAMU,SAAS,GAAInE,IAAI,IAAK;MAC1B,OAAOU,aAAa,CAACV,IAAI,CAAC,IAAIxD,QAAQ,CAACsE,IAAI,CAAEC,IAAI,IAAK;QACpD,OAAO,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,CAACrE,OAAO,KAAKsD,IAAI,GAAGe,IAAI,KAAKf,IAAI;MACzE,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;MACL,GAAG,IAAAoE,4BAAgB,EACjB,IAAAC,4BAAgB,EAAC3H,OAAO,EAAE,EAAE,EAAEsC,QAAQ,CAAC,EACvC2B,UACF,CAAC;MACDpD,uBAAuBA,CAAEuB,IAAI,EAAE;QAC7B,IAAI,CAACqF,SAAS,CAAC,yBAAyB,CAAC,EAAE;UACzC;QACF;QAEA,IACE,CACE,sBAAsB,EAAE,0BAA0B,EAAE,oBAAoB,CACzE,CAACG,QAAQ,CAACxF,IAAI,CAACP,MAAM,CAACpC,IAAI,CAAC,IAC5B,CACE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,oBAAoB,CACpE,CAACmI,QAAQ,CAACxF,IAAI,CAACP,MAAM,CAACpC,IAAI,CAAC,IAC1B2C,IAAI;QACF;AACd;AACA;AACA;AACA;QACeA,IAAI,CAACP,MAAM,CAAEgG,KAAK,EACvB;UACA5D,UAAU,CAAC;YACTqB,iBAAiB,EAAE;UACrB,CAAC,EAAE,IAAI,EAAElD,IAAI,CAAC;QAChB;MACF,CAAC;MAEDtB,gBAAgBA,CAAEsB,IAAI,EAAE;QACtB,IAAI,CAACqF,SAAS,CAAC,kBAAkB,CAAC,EAAE;UAClC;QACF;QAEAxD,UAAU,CAAC;UACTqB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAElD,IAAI,CAAC;MAChB,CAAC;MAEDrB,eAAeA,CAAEqB,IAAI,EAAE;QACrB,IAAI,CAACqF,SAAS,CAAC,iBAAiB,CAAC,EAAE;UACjC;QACF;QAEAxD,UAAU,CAAC;UACTqB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAElD,IAAI,CAAC;MAChB,CAAC;MAEDpB,mBAAmBA,CAAEoB,IAAI,EAAE;QACzB,IAAI,CAACqF,SAAS,CAAC,qBAAqB,CAAC,EAAE;UACrC;QACF;QAEAxD,UAAU,CAAC;UACTqB,iBAAiB,EAAE;QACrB,CAAC,EAAE,IAAI,EAAElD,IAAI,CAAC;MAChB,CAAC;MAEDnB,kBAAkBA,CAAEmB,IAAI,EAAE;QACxB,IAAI,CAACqF,SAAS,CAAC,oBAAoB,CAAC,EAAE;UACpC;QACF;QAEA,IACE,CACE,sBAAsB,EAAE,0BAA0B,EAAE,oBAAoB,CACzE,CAACG,QAAQ,CAACxF,IAAI,CAACP,MAAM,CAACpC,IAAI,CAAC,IAC5B,CACE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,oBAAoB,CACpE,CAACmI,QAAQ,CAACxF,IAAI,CAACP,MAAM,CAACpC,IAAI,CAAC,IAC1B2C,IAAI;QACF;AACd;AACA;AACA;AACA;QACeA,IAAI,CAACP,MAAM,CAAEgG,KAAK,EACvB;UACA5D,UAAU,CAAC;YACTqB,iBAAiB,EAAE;UACrB,CAAC,EAAE,IAAI,EAAElD,IAAI,CAAC;QAChB;MACF,CAAC;MAEDlB,gBAAgBA,CAAEkB,IAAI,EAAE;QACtB,IAAI,CAACqF,SAAS,CAAC,kBAAkB,CAAC,EAAE;UAClC;QACF;QAEAxD,UAAU,CAAC;UACTqB,iBAAiB,EAAE,IAAI;UACvBR,QAAQ,EAAE;QACZ,CAAC,EAAE,IAAI,EAAE,yCAA2C1C,IAAI,CAACyF,KAAM,CAAC;MAClE;IACF,CAAC;EACH,CAAC;EACDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,QAAQ,EAAE,kBAAkB;MAC5B/C,WAAW,EAAE,wBAAwB;MACrCgD,WAAW,EAAE,IAAI;MACjBC,GAAG,EAAE;IACP,CAAC;IAEDC,OAAO,EAAE,MAAM;IAEfC,QAAQ,EAAE;MACRC,YAAY,EAAE;IAChB,CAAC;IAEDC,MAAM,EAAE,CACNjJ,cAAc,CACf;IAEDI,IAAI,EAAE;EACR;AACF,CAAC;AAAA8I,MAAA,CAAA5E,OAAA,GAAAA,OAAA,CAAAvE,OAAA","ignoreList":[]}