chromadb 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/index.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/urn-uuid.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/urn.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/mailto.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/wss.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/ws.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/https.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/http.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/uri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/node_modules/punycode/punycode.es6.js","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/regexps-iri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/regexps-uri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/util.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/ajv.ts","../../chromadb-core/package.json","../../chromadb-core/src/generated/runtime.ts","../../chromadb-core/src/generated/api.ts","../../chromadb-core/src/generated/models.ts","../../chromadb-core/src/generated/configuration.ts","../../chromadb-core/src/Errors.ts","../../chromadb-core/src/Collection.ts","../../chromadb-core/src/utils.ts","../../chromadb-core/src/auth.ts","../../chromadb-core/src/ChromaFetch.ts","../../chromadb-core/src/AdminClient.ts","../../../../../schemas/embedding_functions/amazon_bedrock.json","../../../../../schemas/embedding_functions/base_schema.json","../../../../../schemas/embedding_functions/chroma_langchain.json","../../../../../schemas/embedding_functions/cohere.json","../../../../../schemas/embedding_functions/default.json","../../../../../schemas/embedding_functions/google_generative_ai.json","../../../../../schemas/embedding_functions/google_palm.json","../../../../../schemas/embedding_functions/google_vertex.json","../../../../../schemas/embedding_functions/huggingface.json","../../../../../schemas/embedding_functions/huggingface_server.json","../../../../../schemas/embedding_functions/instructor.json","../../../../../schemas/embedding_functions/jina.json","../../../../../schemas/embedding_functions/ollama.json","../../../../../schemas/embedding_functions/onnx_mini_lm_l6_v2.json","../../../../../schemas/embedding_functions/open_clip.json","../../../../../schemas/embedding_functions/openai.json","../../../../../schemas/embedding_functions/roboflow.json","../../../../../schemas/embedding_functions/sentence_transformer.json","../../../../../schemas/embedding_functions/text2vec.json","../../../../../schemas/embedding_functions/transformers.json","../../../../../schemas/embedding_functions/voyageai.json","../../chromadb-core/src/schemas/schemaUtils.ts","../../chromadb-core/src/embeddings/DefaultEmbeddingFunction.ts","../../chromadb-core/src/ChromaClient.ts","../../chromadb-core/src/CloudClient.ts","../../chromadb-core/src/embeddings/CohereEmbeddingFunction.ts","../../chromadb-core/src/embeddings/GoogleGeminiEmbeddingFunction.ts","../../chromadb-core/src/embeddings/HuggingFaceEmbeddingServerFunction.ts","../../chromadb-core/src/embeddings/JinaEmbeddingFunction.ts","../../chromadb-core/src/embeddings/OllamaEmbeddingFunction.ts","../../chromadb-core/src/embeddings/OpenAIEmbeddingFunction.ts","../../chromadb-core/src/embeddings/TransformersEmbeddingFunction.ts","../../chromadb-core/src/embeddings/VoyageAIEmbeddingFunction.ts","../../chromadb-core/src/types.ts"],"sourcesContent":["export abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponents} from \"uri-js\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponents): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport * as URI from \"uri-js\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URI.URIComponents,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import * as uri from \"uri-js\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","{\n \"name\": \"@internal/chromadb-core\",\n \"version\": \"2.2.0\",\n \"private\": true,\n \"description\": \"Core functionality for ChromaDB JavaScript client\",\n \"license\": \"Apache-2.0\",\n \"type\": \"module\",\n \"main\": \"dist/cjs/chromadb-core.cjs\",\n \"types\": \"dist/chromadb-core.d.ts\",\n \"module\": \"dist/chromadb-core.legacy-esm.js\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/chromadb-core.d.ts\",\n \"default\": \"./dist/chromadb-core.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/cjs/chromadb-core.d.cts\",\n \"default\": \"./dist/cjs/chromadb-core.cjs\"\n }\n }\n },\n \"files\": [\n \"src\",\n \"dist\"\n ],\n \"scripts\": {\n \"test\": \"jest --runInBand\",\n \"test:functional\": \"jest --runInBand --testPathIgnorePatterns=test/auth.*.test.ts\",\n \"test:update\": \"jest --runInBand --updateSnapshot\",\n \"prebuild\": \"rimraf dist\",\n \"build\": \"NODE_OPTIONS=--enable-source-maps tsup\",\n \"watch\": \"NODE_OPTIONS=--enable-source-maps tsup --watch\"\n },\n \"dependencies\": {\n \"ajv\": \"^8.12.0\",\n \"cliui\": \"^8.0.1\",\n \"isomorphic-fetch\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"@jest/globals\": \"^29.7.0\",\n \"@jest/types\": \"^29.6.3\",\n \"@types/jest\": \"^29.5.0\",\n \"@types/node\": \"^20.8.10\",\n \"bcrypt\": \"^5.1.1\",\n \"jest\": \"^29.5.0\",\n \"prettier\": \"2.8.7\",\n \"rimraf\": \"^5.0.0\",\n \"ts-jest\": \"^29.1.0\",\n \"ts-node\": \"^10.9.1\",\n \"tsup\": \"^7.2.0\",\n \"typescript\": \"^5.0.4\"\n }\n}\n","import 'isomorphic-fetch';\n/* eslint-disable */\n// tslint:disable\n/**\n * Chroma\n * \n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport const defaultFetch = fetch;\nimport { Configuration } from \"./configuration\";\n\nexport const BASE_PATH = \"\";\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n\tcsv: \",\",\n\tssv: \" \",\n\ttsv: \"\\t\",\n\tpipes: \"|\",\n};\n\n/**\n *\n * @export\n * @type FetchAPI\n */\nexport type FetchAPI = typeof defaultFetch;\n\n/**\n * \n * @export\n * @interface FetchArgs\n */\nexport interface FetchArgs {\n\turl: string;\n\toptions: RequestInit;\n}\n\n/**\n * \n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n\tprotected configuration?: Configuration;\n\n\tconstructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected fetch: FetchAPI = defaultFetch) {\n\t\tif (configuration) {\n\t\t\tthis.configuration = configuration;\n\t\t\tthis.basePath = configuration.basePath || this.basePath;\n\t\t}\n\t}\n};\n\n/**\n * \n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n\tconstructor(public field: string, msg?: string) {\n\t\tsuper(msg);\n\t\tObject.setPrototypeOf(this, RequiredError.prototype);\n\t\tthis.name = \"RequiredError\";\n\t}\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * Chroma\n *\n *\n * OpenAPI spec version: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nimport { Configuration } from \"./configuration\";\nimport { BASE_PATH, COLLECTION_FORMATS, FetchAPI, FetchArgs, BaseAPI, RequiredError, defaultFetch } from \"./runtime\";\nimport { Api } from \"./models\";\n\nexport type FactoryFunction<T> = (configuration?: Configuration, basePath?: string, fetch?: FetchAPI) => T;\n\n/**\n * ApiApi - fetch parameter creator\n * @export\n */\nexport const ApiApiFetchParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * @summary Add V1\n * @param {string} collectionId\n * @param {Api.AddV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n addV1V1(collectionId: string, request: Api.AddV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling addV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling addV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/add`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Add\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.AddV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n addV2(tenant: string, databaseName: string, collectionId: string, request: Api.AddV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling addV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling addV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling addV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling addV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/add`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Count Collections V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollectionsV1V1(tenant: string | undefined, database: string | undefined, options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/count_collections`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n if (database !== undefined) {\n localVarQueryParameter.append('database', String(database));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Count Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollectionsV2(tenant: string, databaseName: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling countCollectionsV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling countCollectionsV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections_count`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Count V1\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countV1V1(collectionId: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling countV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/count`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Count\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countV2(tenant: string, databaseName: string, collectionId: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling countV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling countV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling countV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/count`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Collection V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {Api.CreateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollectionV1V1(tenant: string | undefined, database: string | undefined, request: Api.CreateCollectionV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createCollectionV1V1.');\n }\n let localVarPath = `/api/v1/collections`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n if (database !== undefined) {\n localVarQueryParameter.append('database', String(database));\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.CreateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollectionV2(tenant: string, databaseName: string, request: Api.CreateCollectionV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling createCollectionV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling createCollectionV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createCollectionV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Database V1\n * @param {string} [tenant]\n * @param {Api.CreateDatabaseV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabaseV1V1(tenant: string | undefined, request: Api.CreateDatabaseV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createDatabaseV1V1.');\n }\n let localVarPath = `/api/v1/databases`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Database\n * @param {string} tenant\n * @param {Api.CreateDatabaseV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabaseV2(tenant: string, request: Api.CreateDatabaseV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling createDatabaseV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createDatabaseV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases`\n .replace('{tenant}', encodeURIComponent(String(tenant)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Tenant V1\n * @param {Api.CreateTenantV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenantV1V1(request: Api.CreateTenantV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createTenantV1V1.');\n }\n let localVarPath = `/api/v1/tenants`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Create Tenant\n * @param {Api.CreateTenantV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenantV2(request: Api.CreateTenantV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling createTenantV2.');\n }\n let localVarPath = `/api/v2/tenants`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Delete Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionName' is not null or undefined\n if (collectionName === null || collectionName === undefined) {\n throw new RequiredError('collectionName', 'Required parameter collectionName was null or undefined when calling deleteCollectionV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_name}`\n .replace('{collection_name}', encodeURIComponent(String(collectionName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n if (database !== undefined) {\n localVarQueryParameter.append('database', String(database));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Delete Collection\n * @param {string} collectionName\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollectionV2(collectionName: string, tenant: string, databaseName: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionName' is not null or undefined\n if (collectionName === null || collectionName === undefined) {\n throw new RequiredError('collectionName', 'Required parameter collectionName was null or undefined when calling deleteCollectionV2.');\n }\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling deleteCollectionV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling deleteCollectionV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_name}`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_name}', encodeURIComponent(String(collectionName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Delete Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteDatabaseV2(databaseName: string, tenant: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling deleteDatabaseV2.');\n }\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling deleteDatabaseV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'DELETE' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Delete V1\n * @param {string} collectionId\n * @param {Api.DeleteV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteV1V1(collectionId: string, request: Api.DeleteV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling deleteV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling deleteV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/delete`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Delete\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.DeleteV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteV2(collectionId: string, tenant: string, databaseName: string, request: Api.DeleteV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling deleteV2.');\n }\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling deleteV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling deleteV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling deleteV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/delete`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionName' is not null or undefined\n if (collectionName === null || collectionName === undefined) {\n throw new RequiredError('collectionName', 'Required parameter collectionName was null or undefined when calling getCollectionV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_name}`\n .replace('{collection_name}', encodeURIComponent(String(collectionName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n if (database !== undefined) {\n localVarQueryParameter.append('database', String(database));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollectionV2(tenant: string, databaseName: string, collectionName: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getCollectionV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling getCollectionV2.');\n }\n // verify required parameter 'collectionName' is not null or undefined\n if (collectionName === null || collectionName === undefined) {\n throw new RequiredError('collectionName', 'Required parameter collectionName was null or undefined when calling getCollectionV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_name}`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_name}', encodeURIComponent(String(collectionName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Database V1\n * @param {string} database\n * @param {string} [tenant]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabaseV1V1(database: string, tenant: string | undefined, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError('database', 'Required parameter database was null or undefined when calling getDatabaseV1V1.');\n }\n let localVarPath = `/api/v1/databases/{database}`\n .replace('{database}', encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabaseV2(databaseName: string, tenant: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling getDatabaseV2.');\n }\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getDatabaseV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Nearest Neighbors V1\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getNearestNeighborsV1V1(collectionId: string, request: Api.GetNearestNeighborsV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling getNearestNeighborsV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling getNearestNeighborsV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/query`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Nearest Neighbors\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getNearestNeighborsV2(tenant: string, databaseName: string, collectionId: string, request: Api.GetNearestNeighborsV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getNearestNeighborsV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling getNearestNeighborsV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling getNearestNeighborsV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling getNearestNeighborsV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/query`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Tenant V1\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenantV1V1(tenant: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getTenantV1V1.');\n }\n let localVarPath = `/api/v1/tenants/{tenant}`\n .replace('{tenant}', encodeURIComponent(String(tenant)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get Tenant\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenantV2(tenant: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getTenantV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}`\n .replace('{tenant}', encodeURIComponent(String(tenant)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get User Identity\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserIdentityV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/auth/identity`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get V1\n * @param {string} collectionId\n * @param {Api.GetV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getV1V1(collectionId: string, request: Api.GetV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling getV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling getV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/get`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Get\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.GetV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getV2(collectionId: string, tenant: string, databaseName: string, request: Api.GetV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling getV2.');\n }\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling getV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling getV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling getV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/get`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeatV1(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/heartbeat`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeatV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/heartbeat`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary List Collections V1\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollectionsV1V1(limit: number | null | undefined, offset: number | null | undefined, tenant: string | undefined, database: string | undefined, options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/collections`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append('limit', String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append('offset', String(offset));\n }\n\n if (tenant !== undefined) {\n localVarQueryParameter.append('tenant', String(tenant));\n }\n\n if (database !== undefined) {\n localVarQueryParameter.append('database', String(database));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary List Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollectionsV2(tenant: string, databaseName: string, limit: number | null | undefined, offset: number | null | undefined, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling listCollectionsV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling listCollectionsV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append('limit', String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append('offset', String(offset));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary List Databases\n * @param {string} tenant\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listDatabasesV2(tenant: string, limit: number | null | undefined, offset: number | null | undefined, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling listDatabasesV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases`\n .replace('{tenant}', encodeURIComponent(String(tenant)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append('limit', String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append('offset', String(offset));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecksV1(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/pre-flight-checks`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecksV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/pre-flight-checks`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetV1(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/reset`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/reset`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n rootV1(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n rootV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Update Collection V1\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollectionV1V1(collectionId: string, request: Api.UpdateCollectionV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling updateCollectionV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling updateCollectionV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Update Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollectionV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateCollectionV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling updateCollectionV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling updateCollectionV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling updateCollectionV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling updateCollectionV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'PUT' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Update V1\n * @param {string} collectionId\n * @param {Api.UpdateV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateV1V1(collectionId: string, request: Api.UpdateV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling updateV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling updateV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/update`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Update\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling updateV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling updateV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling updateV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling updateV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/update`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Upsert V1\n * @param {string} collectionId\n * @param {Api.UpsertV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n upsertV1V1(collectionId: string, request: Api.UpsertV1V1Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling upsertV1V1.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling upsertV1V1.');\n }\n let localVarPath = `/api/v1/collections/{collection_id}/upsert`\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Upsert\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpsertV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n upsertV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpsertV2Request, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError('tenant', 'Required parameter tenant was null or undefined when calling upsertV2.');\n }\n // verify required parameter 'databaseName' is not null or undefined\n if (databaseName === null || databaseName === undefined) {\n throw new RequiredError('databaseName', 'Required parameter databaseName was null or undefined when calling upsertV2.');\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError('collectionId', 'Required parameter collectionId was null or undefined when calling upsertV2.');\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError('request', 'Required parameter request was null or undefined when calling upsertV2.');\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database_name}/collections/{collection_id}/upsert`\n .replace('{tenant}', encodeURIComponent(String(tenant)))\n .replace('{database_name}', encodeURIComponent(String(databaseName)))\n .replace('{collection_id}', encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'POST' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set('Content-Type', 'application/json');\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n versionV1(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v1/version`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n versionV2(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/version`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign({ method: 'GET' }, options);\n const localVarHeaderParameter: Headers = options.headers ? new Headers(options.headers) : new Headers();\n const localVarQueryParameter = new URLSearchParams(localVarPathQueryStart !== -1 ? localVarPath.substring(localVarPathQueryStart + 1) : \"\");\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * ApiApi - functional programming interface\n * @export\n */\nexport const ApiApiFp = function (configuration?: Configuration) {\n return {\n /**\n * @summary Add V1\n * @param {string} collectionId\n * @param {Api.AddV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n addV1V1(collectionId: string, request: Api.AddV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).addV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 201) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Add\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.AddV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n addV2(tenant: string, databaseName: string, collectionId: string, request: Api.AddV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).addV2(tenant, databaseName, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 201) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Count Collections V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollectionsV1V1(tenant: string | undefined, database: string | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).countCollectionsV1V1(tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Count Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollectionsV2(tenant: string, databaseName: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).countCollectionsV2(tenant, databaseName, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Count V1\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countV1V1(collectionId: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).countV1V1(collectionId, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Count\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countV2(tenant: string, databaseName: string, collectionId: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).countV2(tenant, databaseName, collectionId, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Collection V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {Api.CreateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollectionV1V1(tenant: string | undefined, database: string | undefined, request: Api.CreateCollectionV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createCollectionV1V1(tenant, database, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.CreateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollectionV2(tenant: string, databaseName: string, request: Api.CreateCollectionV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createCollectionV2(tenant, databaseName, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Database V1\n * @param {string} [tenant]\n * @param {Api.CreateDatabaseV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabaseV1V1(tenant: string | undefined, request: Api.CreateDatabaseV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createDatabaseV1V1(tenant, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Database\n * @param {string} tenant\n * @param {Api.CreateDatabaseV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabaseV2(tenant: string, request: Api.CreateDatabaseV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createDatabaseV2(tenant, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Tenant V1\n * @param {Api.CreateTenantV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenantV1V1(request: Api.CreateTenantV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createTenantV1V1(request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Create Tenant\n * @param {Api.CreateTenantV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenantV2(request: Api.CreateTenantV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).createTenantV2(request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Delete Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).deleteCollectionV1V1(collectionName, tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Delete Collection\n * @param {string} collectionName\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollectionV2(collectionName: string, tenant: string, databaseName: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).deleteCollectionV2(collectionName, tenant, databaseName, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Delete Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteDatabaseV2(databaseName: string, tenant: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).deleteDatabaseV2(databaseName, tenant, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Delete V1\n * @param {string} collectionId\n * @param {Api.DeleteV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteV1V1(collectionId: string, request: Api.DeleteV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).deleteV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Delete\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.DeleteV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteV2(collectionId: string, tenant: string, databaseName: string, request: Api.DeleteV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).deleteV2(collectionId, tenant, databaseName, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getCollectionV1V1(collectionName, tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollectionV2(tenant: string, databaseName: string, collectionName: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getCollectionV2(tenant, databaseName, collectionName, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Database V1\n * @param {string} database\n * @param {string} [tenant]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabaseV1V1(database: string, tenant: string | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getDatabaseV1V1(database, tenant, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabaseV2(databaseName: string, tenant: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getDatabaseV2(databaseName, tenant, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Nearest Neighbors V1\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getNearestNeighborsV1V1(collectionId: string, request: Api.GetNearestNeighborsV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getNearestNeighborsV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Nearest Neighbors\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getNearestNeighborsV2(tenant: string, databaseName: string, collectionId: string, request: Api.GetNearestNeighborsV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getNearestNeighborsV2(tenant, databaseName, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Tenant V1\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenantV1V1(tenant: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getTenantV1V1(tenant, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get Tenant\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenantV2(tenant: string, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getTenantV2(tenant, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get User Identity\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserIdentityV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getUserIdentityV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get V1\n * @param {string} collectionId\n * @param {Api.GetV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getV1V1(collectionId: string, request: Api.GetV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Get\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.GetV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getV2(collectionId: string, tenant: string, databaseName: string, request: Api.GetV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).getV2(collectionId, tenant, databaseName, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeatV1(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<{ [name: string]: number }> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).heartbeatV1(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeatV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<{ [name: string]: number }> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).heartbeatV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary List Collections V1\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollectionsV1V1(limit: number | null | undefined, offset: number | null | undefined, tenant: string | undefined, database: string | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).listCollectionsV1V1(limit, offset, tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary List Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollectionsV2(tenant: string, databaseName: string, limit: number | null | undefined, offset: number | null | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).listCollectionsV2(tenant, databaseName, limit, offset, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary List Databases\n * @param {string} tenant\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listDatabasesV2(tenant: string, limit: number | null | undefined, offset: number | null | undefined, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).listDatabasesV2(tenant, limit, offset, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecksV1(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<Api.PreFlightChecksV1200Response> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).preFlightChecksV1(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecksV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<Api.PreFlightChecksV2200Response> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).preFlightChecksV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetV1(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<boolean> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).resetV1(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<boolean> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).resetV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n rootV1(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<{ [name: string]: number }> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).rootV1(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n rootV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<{ [name: string]: number }> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).rootV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Update Collection V1\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollectionV1V1(collectionId: string, request: Api.UpdateCollectionV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).updateCollectionV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Update Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollectionV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateCollectionV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).updateCollectionV2(tenant, databaseName, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Update V1\n * @param {string} collectionId\n * @param {Api.UpdateV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateV1V1(collectionId: string, request: Api.UpdateV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).updateV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Update\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).updateV2(tenant, databaseName, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Upsert V1\n * @param {string} collectionId\n * @param {Api.UpsertV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n upsertV1V1(collectionId: string, request: Api.UpsertV1V1Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).upsertV1V1(collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Upsert\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpsertV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n upsertV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpsertV2Request, options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<unknown> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).upsertV2(tenant, databaseName, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 422) {\n if (mimeType === 'application/json') {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n versionV1(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<string> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).versionV1(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n versionV2(options?: RequestInit): (fetch?: FetchAPI, basePath?: string) => Promise<string> {\n const localVarFetchArgs = ApiApiFetchParamCreator(configuration).versionV2(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => {\n const contentType = response.headers.get('Content-Type');\n const mimeType = contentType ? contentType.replace(/;.*/, '') : undefined;\n\n if (response.status === 200) {\n if (mimeType === 'application/json') {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n }\n};\n\n/**\n * ApiApi - factory interface\n * @export\n */\nexport const ApiApiFactory: FactoryFunction<ApiApi> = function (configuration?: Configuration, basePath?: string, fetch?: FetchAPI) {\n return new ApiApi(configuration, basePath, fetch);\n};\n\n/**\n * ApiApi - object-oriented interface\n * @export\n * @class ApiApi\n * @extends {BaseAPI}\n */\nexport class ApiApi extends BaseAPI {\n /**\n * @summary Add V1\n * @param {string} collectionId\n * @param {Api.AddV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public addV1V1(collectionId: string, request: Api.AddV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).addV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Add\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.AddV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public addV2(tenant: string, databaseName: string, collectionId: string, request: Api.AddV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).addV2(tenant, databaseName, collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Count Collections V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public countCollectionsV1V1(tenant: string | undefined, database: string | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).countCollectionsV1V1(tenant, database, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Count Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public countCollectionsV2(tenant: string, databaseName: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).countCollectionsV2(tenant, databaseName, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Count V1\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public countV1V1(collectionId: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).countV1V1(collectionId, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Count\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public countV2(tenant: string, databaseName: string, collectionId: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).countV2(tenant, databaseName, collectionId, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Collection V1\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {Api.CreateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createCollectionV1V1(tenant: string | undefined, database: string | undefined, request: Api.CreateCollectionV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createCollectionV1V1(tenant, database, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.CreateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createCollectionV2(tenant: string, databaseName: string, request: Api.CreateCollectionV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createCollectionV2(tenant, databaseName, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Database V1\n * @param {string} [tenant]\n * @param {Api.CreateDatabaseV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createDatabaseV1V1(tenant: string | undefined, request: Api.CreateDatabaseV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createDatabaseV1V1(tenant, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Database\n * @param {string} tenant\n * @param {Api.CreateDatabaseV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createDatabaseV2(tenant: string, request: Api.CreateDatabaseV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createDatabaseV2(tenant, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Tenant V1\n * @param {Api.CreateTenantV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createTenantV1V1(request: Api.CreateTenantV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createTenantV1V1(request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Create Tenant\n * @param {Api.CreateTenantV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createTenantV2(request: Api.CreateTenantV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).createTenantV2(request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Delete Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).deleteCollectionV1V1(collectionName, tenant, database, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Delete Collection\n * @param {string} collectionName\n * @param {string} tenant\n * @param {string} databaseName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteCollectionV2(collectionName: string, tenant: string, databaseName: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).deleteCollectionV2(collectionName, tenant, databaseName, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Delete Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteDatabaseV2(databaseName: string, tenant: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).deleteDatabaseV2(databaseName, tenant, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Delete V1\n * @param {string} collectionId\n * @param {Api.DeleteV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteV1V1(collectionId: string, request: Api.DeleteV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).deleteV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Delete\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.DeleteV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteV2(collectionId: string, tenant: string, databaseName: string, request: Api.DeleteV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).deleteV2(collectionId, tenant, databaseName, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Collection V1\n * @param {string} collectionName\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getCollectionV1V1(collectionName: string, tenant: string | undefined, database: string | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).getCollectionV1V1(collectionName, tenant, database, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionName\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getCollectionV2(tenant: string, databaseName: string, collectionName: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getCollectionV2(tenant, databaseName, collectionName, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Database V1\n * @param {string} database\n * @param {string} [tenant]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getDatabaseV1V1(database: string, tenant: string | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).getDatabaseV1V1(database, tenant, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Database\n * @param {string} databaseName\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getDatabaseV2(databaseName: string, tenant: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getDatabaseV2(databaseName, tenant, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Nearest Neighbors V1\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getNearestNeighborsV1V1(collectionId: string, request: Api.GetNearestNeighborsV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).getNearestNeighborsV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Nearest Neighbors\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.GetNearestNeighborsV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getNearestNeighborsV2(tenant: string, databaseName: string, collectionId: string, request: Api.GetNearestNeighborsV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).getNearestNeighborsV2(tenant, databaseName, collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Tenant V1\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getTenantV1V1(tenant: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getTenantV1V1(tenant, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get Tenant\n * @param {string} tenant\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getTenantV2(tenant: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getTenantV2(tenant, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get User Identity\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getUserIdentityV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).getUserIdentityV2(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get V1\n * @param {string} collectionId\n * @param {Api.GetV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getV1V1(collectionId: string, request: Api.GetV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).getV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Get\n * @param {string} collectionId\n * @param {string} tenant\n * @param {string} databaseName\n * @param {Api.GetV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getV2(collectionId: string, tenant: string, databaseName: string, request: Api.GetV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).getV2(collectionId, tenant, databaseName, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public heartbeatV1(options?: RequestInit) {\n return ApiApiFp(this.configuration).heartbeatV1(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Heartbeat\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public heartbeatV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).heartbeatV2(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary List Collections V1\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {string} [tenant]\n * @param {string} [database]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public listCollectionsV1V1(limit: number | null | undefined, offset: number | null | undefined, tenant: string | undefined, database: string | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).listCollectionsV1V1(limit, offset, tenant, database, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary List Collections\n * @param {string} tenant\n * @param {string} databaseName\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public listCollectionsV2(tenant: string, databaseName: string, limit: number | null | undefined, offset: number | null | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).listCollectionsV2(tenant, databaseName, limit, offset, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary List Databases\n * @param {string} tenant\n * @param {number | null} [limit]\n * @param {number | null} [offset]\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public listDatabasesV2(tenant: string, limit: number | null | undefined, offset: number | null | undefined, options?: RequestInit) {\n return ApiApiFp(this.configuration).listDatabasesV2(tenant, limit, offset, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public preFlightChecksV1(options?: RequestInit) {\n return ApiApiFp(this.configuration).preFlightChecksV1(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Pre Flight Checks\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public preFlightChecksV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).preFlightChecksV2(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public resetV1(options?: RequestInit) {\n return ApiApiFp(this.configuration).resetV1(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Reset\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public resetV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).resetV2(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public rootV1(options?: RequestInit) {\n return ApiApiFp(this.configuration).rootV1(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Root\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public rootV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).rootV2(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Update Collection V1\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public updateCollectionV1V1(collectionId: string, request: Api.UpdateCollectionV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).updateCollectionV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Update Collection\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateCollectionV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public updateCollectionV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateCollectionV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).updateCollectionV2(tenant, databaseName, collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Update V1\n * @param {string} collectionId\n * @param {Api.UpdateV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public updateV1V1(collectionId: string, request: Api.UpdateV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).updateV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Update\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpdateV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public updateV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpdateV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).updateV2(tenant, databaseName, collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Upsert V1\n * @param {string} collectionId\n * @param {Api.UpsertV1V1Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public upsertV1V1(collectionId: string, request: Api.UpsertV1V1Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).upsertV1V1(collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Upsert\n * @param {string} tenant\n * @param {string} databaseName\n * @param {string} collectionId\n * @param {Api.UpsertV2Request} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public upsertV2(tenant: string, databaseName: string, collectionId: string, request: Api.UpsertV2Request, options?: RequestInit) {\n return ApiApiFp(this.configuration).upsertV2(tenant, databaseName, collectionId, request, options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public versionV1(options?: RequestInit) {\n return ApiApiFp(this.configuration).versionV1(options)(this.fetch, this.basePath);\n }\n\n /**\n * @summary Version\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public versionV2(options?: RequestInit) {\n return ApiApiFp(this.configuration).versionV2(options)(this.fetch, this.basePath);\n }\n\n}\n\n/**\n * We sometimes represent dates as strings (in models) and as Dates (in parameters) so this\n * function converts them both to a string.\n */\nfunction dateToString(value: Date | string | undefined): string | undefined {\n if (value instanceof Date) {\n return value.toISOString();\n } else if (typeof value === 'string') {\n return value;\n } else {\n return undefined;\n }\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * Chroma\n * \n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport namespace Api {\n\texport interface AddV1V1Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.AddV1V1Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace AddV1V1Request\n\t */\n\texport namespace AddV1V1Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface AddV2Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.AddV2Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace AddV2Request\n\t */\n\texport namespace AddV2Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface CreateCollectionV1V1Request {\n\t\tname: string;\n\t\tconfiguration?: Api.CreateCollectionV1V1Request.Configuration | null;\n\t\tmetadata?: Api.CreateCollectionV1V1Request.Metadata | null;\n\t\t'get_or_create'?: boolean;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace CreateCollectionV1V1Request\n\t */\n\texport namespace CreateCollectionV1V1Request {\n\t\texport interface Configuration {\n\t\t}\n\t\n\t\texport interface Metadata {\n\t\t}\n\t\n\t}\n\n\texport interface CreateCollectionV2Request {\n\t\tname: string;\n\t\tconfiguration?: Api.CreateCollectionV2Request.Configuration | null;\n\t\tmetadata?: Api.CreateCollectionV2Request.Metadata | null;\n\t\t'get_or_create'?: boolean;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace CreateCollectionV2Request\n\t */\n\texport namespace CreateCollectionV2Request {\n\t\texport interface Configuration {\n\t\t}\n\t\n\t\texport interface Metadata {\n\t\t}\n\t\n\t}\n\n\texport interface CreateDatabaseV1V1Request {\n\t\tname: string;\n\t}\n\n\texport interface CreateDatabaseV2Request {\n\t\tname: string;\n\t}\n\n\texport interface CreateTenantV1V1Request {\n\t\tname: string;\n\t}\n\n\texport interface CreateTenantV2Request {\n\t\tname: string;\n\t}\n\n\texport interface DeleteV1V1Request {\n\t\tids?: (string[]) | null;\n\t\twhere?: Api.DeleteV1V1Request.Where | null;\n\t\t'where_document'?: Api.DeleteV1V1Request.WhereDocument | null;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace DeleteV1V1Request\n\t */\n\texport namespace DeleteV1V1Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface DeleteV2Request {\n\t\tids?: (string[]) | null;\n\t\twhere?: Api.DeleteV2Request.Where | null;\n\t\t'where_document'?: Api.DeleteV2Request.WhereDocument | null;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace DeleteV2Request\n\t */\n\texport namespace DeleteV2Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface GetNearestNeighborsV1V1Request {\n\t\twhere?: Api.GetNearestNeighborsV1V1Request.Where | null;\n\t\t'where_document'?: Api.GetNearestNeighborsV1V1Request.WhereDocument | null;\n\t\t'query_embeddings': unknown[];\n\t\t/**\n\t\t * @type {number}\n\t\t * @memberof GetNearestNeighborsV1V1Request\n\t\t */\n\t\t'n_results'?: number;\n\t\tinclude?: Api.IncludeEnum[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace GetNearestNeighborsV1V1Request\n\t */\n\texport namespace GetNearestNeighborsV1V1Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface GetNearestNeighborsV2Request {\n\t\twhere?: Api.GetNearestNeighborsV2Request.Where | null;\n\t\t'where_document'?: Api.GetNearestNeighborsV2Request.WhereDocument | null;\n\t\t'query_embeddings': unknown[];\n\t\t/**\n\t\t * @type {number}\n\t\t * @memberof GetNearestNeighborsV2Request\n\t\t */\n\t\t'n_results'?: number;\n\t\tinclude?: Api.IncludeEnum[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace GetNearestNeighborsV2Request\n\t */\n\texport namespace GetNearestNeighborsV2Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface GetV1V1Request {\n\t\tids?: (string[]) | null;\n\t\twhere?: Api.GetV1V1Request.Where | null;\n\t\t'where_document'?: Api.GetV1V1Request.WhereDocument | null;\n\t\tsort?: string | null;\n\t\t/**\n\t\t * @type {number | null}\n\t\t * @memberof GetV1V1Request\n\t\t */\n\t\tlimit?: number | null;\n\t\t/**\n\t\t * @type {number | null}\n\t\t * @memberof GetV1V1Request\n\t\t */\n\t\toffset?: number | null;\n\t\tinclude?: Api.IncludeEnum[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace GetV1V1Request\n\t */\n\texport namespace GetV1V1Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface GetV2Request {\n\t\tids?: (string[]) | null;\n\t\twhere?: Api.GetV2Request.Where | null;\n\t\t'where_document'?: Api.GetV2Request.WhereDocument | null;\n\t\tsort?: string | null;\n\t\t/**\n\t\t * @type {number | null}\n\t\t * @memberof GetV2Request\n\t\t */\n\t\tlimit?: number | null;\n\t\t/**\n\t\t * @type {number | null}\n\t\t * @memberof GetV2Request\n\t\t */\n\t\toffset?: number | null;\n\t\tinclude?: Api.IncludeEnum[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace GetV2Request\n\t */\n\texport namespace GetV2Request {\n\t\texport interface Where {\n\t\t}\n\t\n\t\texport interface WhereDocument {\n\t\t}\n\t\n\t}\n\n\texport interface HTTPValidationError {\n\t\tdetail?: Api.ValidationError[];\n\t}\n\n\texport enum IncludeEnum {\n\t\tDocuments = 'documents',\n\t\tEmbeddings = 'embeddings',\n\t\tMetadatas = 'metadatas',\n\t\tDistances = 'distances',\n\t\tUris = 'uris',\n\t\tData = 'data'\n\t}\n\n\texport interface PreFlightChecksV1200Response {\n\t}\n\n\texport interface PreFlightChecksV2200Response {\n\t}\n\n\texport interface UpdateCollectionV1V1Request {\n\t\t'new_name'?: string | null;\n\t\t'new_metadata'?: Api.UpdateCollectionV1V1Request.NewMetadata | null;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpdateCollectionV1V1Request\n\t */\n\texport namespace UpdateCollectionV1V1Request {\n\t\texport interface NewMetadata {\n\t\t}\n\t\n\t}\n\n\texport interface UpdateCollectionV2Request {\n\t\t'new_name'?: string | null;\n\t\t'new_metadata'?: Api.UpdateCollectionV2Request.NewMetadata | null;\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpdateCollectionV2Request\n\t */\n\texport namespace UpdateCollectionV2Request {\n\t\texport interface NewMetadata {\n\t\t}\n\t\n\t}\n\n\texport interface UpdateV1V1Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.UpdateV1V1Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpdateV1V1Request\n\t */\n\texport namespace UpdateV1V1Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface UpdateV2Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.UpdateV2Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpdateV2Request\n\t */\n\texport namespace UpdateV2Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface UpsertV1V1Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.UpsertV1V1Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpsertV1V1Request\n\t */\n\texport namespace UpsertV1V1Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface UpsertV2Request {\n\t\tembeddings?: (unknown[]) | null;\n\t\tmetadatas?: ((Api.UpsertV2Request.Metadatum | null)[]) | null;\n\t\tdocuments?: ((string | null)[]) | null;\n\t\turis?: ((string | null)[]) | null;\n\t\tids: string[];\n\t}\n\t\n\t/**\n\t * @export\n\t * @namespace UpsertV2Request\n\t */\n\texport namespace UpsertV2Request {\n\t\texport interface Metadatum {\n\t\t}\n\t\n\t}\n\n\texport interface ValidationError {\n\t\tloc: (string | number)[];\n\t\tmsg: string;\n\t\t'type': string;\n\t}\n\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * Chroma\n * \n *\n * OpenAPI spec version: 1.0.0\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport interface ConfigurationParameters {\n\tapiKey?: string | ((name: string) => string | null);\n\tusername?: string;\n\tpassword?: string;\n\tauthorization?: string | ((name: string, scopes?: string[]) => string | null);\n\tbasePath?: string;\n}\n\nexport class Configuration {\n\t/**\n\t * parameter for apiKey security\n\t * @param name security name\n\t * @memberof Configuration\n\t */\n\tapiKey?: string | ((name: string) => string | null);\n\t/**\n\t * parameter for basic security\n\t * \n\t * @type {string}\n\t * @memberof Configuration\n\t */\n\tusername?: string;\n\t/**\n\t * parameter for basic security\n\t * \n\t * @type {string}\n\t * @memberof Configuration\n\t */\n\tpassword?: string;\n\t/**\n\t * parameter for oauth2, openIdConnect or http security\n\t * @param name security name\n\t * @param scopes oauth2 scopes\n\t * @memberof Configuration\n\t */\n\tauthorization?: string | ((name: string, scopes?: string[]) => string | null);\n\t/**\n\t * override base path\n\t * \n\t * @type {string}\n\t * @memberof Configuration\n\t */\n\tbasePath?: string;\n\n\tconstructor(param: ConfigurationParameters = {}) {\n\t\tthis.apiKey = param.apiKey;\n\t\tthis.username = param.username;\n\t\tthis.password = param.password;\n\t\tthis.authorization = param.authorization;\n\t\tthis.basePath = param.basePath;\n\t}\n}\n","/**\n * This is a generic Chroma error.\n */\nexport class ChromaError extends Error {\n constructor(name: string, message: string, public readonly cause?: unknown) {\n super(message);\n this.name = name;\n }\n}\n\n/**\n * Indicates that there was a problem with the connection to the Chroma server (e.g. the server is down or the client is not connected to the internet)\n */\nexport class ChromaConnectionError extends Error {\n name = \"ChromaConnectionError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** Indicates that the server encountered an error while handling the request. */\nexport class ChromaServerError extends Error {\n name = \"ChromaServerError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** Indicate that there was an issue with the request that the client made. */\nexport class ChromaClientError extends Error {\n name = \"ChromaClientError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** The request lacked valid authentication. */\nexport class ChromaUnauthorizedError extends Error {\n name = \"ChromaAuthError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** The user does not have permission to access the requested resource. */\nexport class ChromaForbiddenError extends Error {\n name = \"ChromaForbiddenError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaNotFoundError extends Error {\n name = \"ChromaNotFoundError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaValueError extends Error {\n name = \"ChromaValueError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class InvalidCollectionError extends Error {\n name = \"InvalidCollectionError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class InvalidArgumentError extends Error {\n name = \"InvalidArgumentError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaUniqueError extends Error {\n name = \"ChromaUniqueError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport function createErrorByType(type: string, message: string) {\n switch (type) {\n case \"InvalidCollection\":\n return new InvalidCollectionError(message);\n case \"InvalidArgumentError\":\n return new InvalidArgumentError(message);\n default:\n return undefined;\n }\n}\n","import { ChromaClient } from \"./ChromaClient\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\nimport {\n CollectionMetadata,\n AddRecordsParams,\n UpsertRecordsParams,\n BaseGetParams,\n GetResponse,\n UpdateRecordsParams,\n QueryRecordsParams,\n MultiQueryResponse,\n PeekParams,\n MultiGetResponse,\n DeleteParams,\n Embeddings,\n CollectionParams,\n} from \"./types\";\nimport { prepareRecordRequest, toArray, toArrayOfArrays } from \"./utils\";\nimport { Api as GeneratedApi } from \"./generated\";\n\nexport class Collection {\n public name: string;\n public id: string;\n public metadata: CollectionMetadata | undefined;\n /**\n * @ignore\n */\n private client: ChromaClient;\n /**\n * @ignore\n */\n public embeddingFunction: IEmbeddingFunction;\n\n /**\n * @ignore\n */\n constructor(\n name: string,\n id: string,\n client: ChromaClient,\n embeddingFunction: IEmbeddingFunction,\n metadata?: CollectionMetadata,\n ) {\n this.name = name;\n this.id = id;\n this.metadata = metadata;\n this.client = client;\n this.embeddingFunction = embeddingFunction;\n }\n\n /**\n * Add items to the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<AddResponse>} - The response from the API. True if successful.\n *\n * @example\n * ```typescript\n * const response = await collection.add({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"]\n * });\n * ```\n */\n async add(params: AddRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.addV2(\n this.client.tenant,\n this.client.database,\n this.id,\n // TODO: For some reason the auto generated code requires metadata to be defined here.\n (await prepareRecordRequest(\n params,\n this.embeddingFunction,\n )) as GeneratedApi.AddV2Request,\n this.client.api.options,\n );\n }\n\n /**\n * Upsert items to the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<void>}\n *\n * @example\n * ```typescript\n * const response = await collection.upsert({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"],\n * });\n * ```\n */\n async upsert(params: UpsertRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.upsertV2(\n this.client.tenant,\n this.client.database,\n this.id,\n // TODO: For some reason the auto generated code requires metadata to be defined here.\n (await prepareRecordRequest(\n params,\n this.embeddingFunction,\n )) as GeneratedApi.AddV2Request,\n this.client.api.options,\n );\n }\n\n /**\n * Count the number of items in the collection\n * @returns {Promise<number>} - The number of items in the collection.\n *\n * @example\n * ```typescript\n * const count = await collection.count();\n * ```\n */\n async count(): Promise<number> {\n await this.client.init();\n return (await this.client.api.countV2(\n this.client.tenant,\n this.client.database,\n this.id,\n this.client.api.options,\n )) as number;\n }\n\n /**\n * Get items from the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - Optional IDs of the items to get.\n * @param {Where} [params.where] - Optional where clause to filter items by.\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @param {IncludeEnum[]} [params.include] - Optional list of items to include in the response.\n * @param {WhereDocument} [params.whereDocument] - Optional where clause to filter items by.\n * @returns {Promise<GetResponse>} - The response from the server.\n *\n * @example\n * ```typescript\n * const response = await collection.get({\n * ids: [\"id1\", \"id2\"],\n * where: { \"key\": \"value\" },\n * limit: 10,\n * offset: 0,\n * include: [\"embeddings\", \"metadatas\", \"documents\"],\n * whereDocument: { $contains: \"value\" },\n * });\n * ```\n */\n async get({\n ids,\n where,\n limit,\n offset,\n include,\n whereDocument,\n }: BaseGetParams = {}): Promise<GetResponse> {\n await this.client.init();\n\n const idsArray = ids ? toArray(ids) : undefined;\n\n const resp = (await this.client.api.getV2(\n this.id,\n this.client.tenant,\n this.client.database,\n {\n ids: idsArray,\n where,\n limit,\n offset,\n include,\n where_document: whereDocument,\n },\n this.client.api.options,\n )) as MultiGetResponse;\n\n return resp;\n }\n\n /**\n * Update items in the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<void>}\n *\n * @example\n * ```typescript\n * const response = await collection.update({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"],\n * });\n * ```\n */\n async update(params: UpdateRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.updateV2(\n this.client.tenant,\n this.client.database,\n this.id,\n await prepareRecordRequest(params, this.embeddingFunction, true),\n this.client.api.options,\n );\n }\n\n /**\n * Performs a query on the collection using the specified parameters.\n *\n * @param {Object} params - The parameters for the query.\n * @param {Embedding | Embeddings} [params.queryEmbeddings] - Optional query embeddings to use for the search.\n * @param {PositiveInteger} [params.nResults] - Optional number of results to return (default is 10).\n * @param {Where} [params.where] - Optional query condition to filter results based on metadata values.\n * @param {string | string[]} [params.queryTexts] - Optional query text(s) to search for in the collection.\n * @param {WhereDocument} [params.whereDocument] - Optional query condition to filter results based on document content.\n * @param {IncludeEnum[]} [params.include] - Optional array of fields to include in the result, such as \"metadata\" and \"document\".\n *\n * @returns {Promise<QueryResponse>} A promise that resolves to the query results.\n * @throws {Error} If there is an issue executing the query.\n * @example\n * // Query the collection using embeddings\n * const results = await collection.query({\n * queryEmbeddings: [[0.1, 0.2, ...], ...],\n * nResults: 10,\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * include: [\"metadata\", \"document\"]\n * });\n * @example\n * ```js\n * // Query the collection using query text\n * const results = await collection.query({\n * queryTexts: \"some text\",\n * nResults: 10,\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * include: [\"metadata\", \"document\"]\n * });\n * ```\n *\n */\n async query({\n nResults = 10,\n where,\n whereDocument,\n include,\n queryTexts,\n queryEmbeddings,\n }: QueryRecordsParams): Promise<MultiQueryResponse> {\n await this.client.init();\n\n let embeddings: unknown[] = [];\n\n // If queryEmbeddings is provided, use it\n if (queryEmbeddings) {\n embeddings = toArrayOfArrays(queryEmbeddings);\n }\n // If queryTexts is provided, use it to generate queryEmbeddings\n else if (queryTexts) {\n embeddings = await this.embeddingFunction.generate(toArray(queryTexts));\n }\n\n if (embeddings.length === 0) {\n throw new TypeError(\n \"You must provide either queryEmbeddings or queryTexts\",\n );\n }\n\n const resp = (await this.client.api.getNearestNeighborsV2(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n query_embeddings: embeddings,\n n_results: nResults,\n where,\n where_document: whereDocument,\n include,\n },\n this.client.api.options,\n )) as MultiQueryResponse;\n\n return resp;\n }\n\n /**\n * Modify the collection name or metadata\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.name] - Optional new name for the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional new metadata for the collection.\n * @returns {Promise<void>} - The response from the API.\n *\n * @example\n * ```typescript\n * const response = await client.updateCollection({\n * name: \"new name\",\n * metadata: { \"key\": \"value\" },\n * });\n * ```\n */\n async modify({\n name,\n metadata,\n }: {\n name?: string;\n metadata?: CollectionMetadata;\n }): Promise<CollectionParams> {\n await this.client.init();\n\n const resp = (await this.client.api.updateCollectionV2(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n new_name: name,\n new_metadata: metadata,\n },\n this.client.api.options,\n )) as CollectionParams;\n\n if (name) {\n this.name = name;\n }\n\n if (metadata) {\n this.metadata = metadata;\n }\n\n return resp;\n }\n\n /**\n * Peek inside the collection\n * @param {Object} params - The parameters for the query.\n * @param {PositiveInteger} [params.limit] - Optional number of results to return (default is 10).\n * @returns {Promise<GetResponse>} A promise that resolves to the query results.\n * @throws {Error} If there is an issue executing the query.\n *\n * @example\n * ```typescript\n * const results = await collection.peek({\n * limit: 10\n * });\n * ```\n */\n async peek({ limit = 10 }: PeekParams = {}): Promise<MultiGetResponse> {\n await this.client.init();\n return (await this.client.api.getV2(\n this.id,\n this.client.tenant,\n this.client.database,\n {\n limit,\n },\n this.client.api.options,\n )) as MultiGetResponse;\n }\n\n /**\n * Deletes items from the collection.\n * @param {Object} params - The parameters for deleting items from the collection.\n * @param {ID | IDs} [params.ids] - Optional ID or array of IDs of items to delete.\n * @param {Where} [params.where] - Optional query condition to filter items to delete based on metadata values.\n * @param {WhereDocument} [params.whereDocument] - Optional query condition to filter items to delete based on document content.\n * @returns {Promise<string[]>} A promise that resolves to the IDs of the deleted items.\n * @throws {Error} If there is an issue deleting items from the collection.\n *\n * @example\n * ```typescript\n * const results = await collection.delete({\n * ids: \"some_id\",\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * whereDocument: {\"$contains\":\"search_string\"}\n * });\n * ```\n */\n async delete({\n ids,\n where,\n whereDocument,\n }: DeleteParams = {}): Promise<void> {\n await this.client.init();\n\n const idsArray = ids ? toArray(ids) : undefined;\n\n await this.client.api.deleteV2(\n this.id,\n this.client.tenant,\n this.client.database,\n {\n ids: idsArray,\n where: where,\n where_document: whereDocument,\n },\n this.client.api.options,\n );\n }\n}\n","import { AdminClient } from \"./AdminClient\";\nimport { ChromaClient } from \"./ChromaClient\";\nimport { ChromaConnectionError } from \"./Errors\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\nimport {\n AddRecordsParams,\n BaseRecordOperationParams,\n CollectionParams,\n Metadata,\n MultiRecordOperationParams,\n UpdateRecordsParams,\n} from \"./types\";\nimport { Collection } from \"./Collection\";\n\n// a function to convert a non-Array object to an Array\nexport function toArray<T>(obj: T | T[]): Array<T> {\n if (Array.isArray(obj)) {\n return obj;\n } else {\n return [obj] as T[];\n }\n}\n\n// a function to convert an array to array of arrays\nexport function toArrayOfArrays<T>(\n obj: Array<Array<T>> | Array<T>\n): Array<Array<T>> {\n if (obj.length === 0) {\n return [];\n }\n\n if (Array.isArray(obj[0])) {\n return obj as Array<Array<T>>;\n }\n\n if (obj[0] && typeof (obj[0] as any)[Symbol.iterator] === 'function') {\n return (obj as unknown as Array<Iterable<T>>).map(el => Array.from(el));\n }\n\n return [obj] as Array<Array<T>>;\n}\n\n/**\n * Dynamically imports a specified module, providing a workaround for browser environments.\n * This function is necessary because we dynamically import optional dependencies\n * which can cause issues with bundlers that detect the import and throw an error\n * on build time when the dependency is not installed.\n * Using this workaround, the dynamic import is only evaluated on runtime\n * where we work with try-catch when importing optional dependencies.\n *\n * @param {string} moduleName - Specifies the module to import.\n * @returns {Promise<any>} Returns a Promise that resolves to the imported module.\n */\nexport async function importOptionalModule(moduleName: string) {\n return Function(`return import(\"${moduleName}\")`)();\n}\n\nexport async function validateTenantDatabase(\n adminClient: AdminClient,\n tenant: string,\n database: string,\n): Promise<void> {\n try {\n await adminClient.getTenant({ name: tenant });\n } catch (error) {\n if (error instanceof ChromaConnectionError) {\n throw error;\n }\n throw new Error(\n `Could not connect to tenant ${tenant}. Are you sure it exists? Underlying error:\n${error}`,\n );\n }\n\n try {\n await adminClient.getDatabase({ name: database, tenantName: tenant });\n } catch (error) {\n if (error instanceof ChromaConnectionError) {\n throw error;\n }\n throw new Error(\n `Could not connect to database ${database} for tenant ${tenant}. Are you sure it exists? Underlying error:\n${error}`,\n );\n }\n}\n\nexport function isBrowser() {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n\nfunction arrayifyParams(\n params: BaseRecordOperationParams,\n): MultiRecordOperationParams {\n return {\n ids: toArray(params.ids),\n embeddings: params.embeddings\n ? toArrayOfArrays(params.embeddings)\n : undefined,\n metadatas: params.metadatas\n ? toArray<Metadata>(params.metadatas)\n : undefined,\n documents: params.documents ? toArray(params.documents) : undefined,\n };\n}\n\nexport async function prepareRecordRequest(\n reqParams: AddRecordsParams | UpdateRecordsParams,\n embeddingFunction: IEmbeddingFunction,\n update?: true,\n): Promise<MultiRecordOperationParams> {\n const { ids, embeddings, metadatas, documents } = arrayifyParams(reqParams);\n\n if (!embeddings && !documents && !update) {\n throw new Error(\"embeddings and documents cannot both be undefined\");\n }\n\n const embeddingsArray = embeddings\n ? embeddings\n : documents\n ? await embeddingFunction.generate(documents)\n : undefined;\n\n if (!embeddingsArray && !update) {\n throw new Error(\"Failed to generate embeddings for your request.\");\n }\n\n for (let i = 0; i < ids.length; i += 1) {\n if (typeof ids[i] !== \"string\") {\n throw new Error(\n `Expected ids to be strings, found ${typeof ids[i]} at index ${i}`,\n );\n }\n }\n\n if (\n (embeddingsArray !== undefined && ids.length !== embeddingsArray.length) ||\n (metadatas !== undefined && ids.length !== metadatas.length) ||\n (documents !== undefined && ids.length !== documents.length)\n ) {\n throw new Error(\n \"ids, embeddings, metadatas, and documents must all be the same length\",\n );\n }\n\n const uniqueIds = new Set(ids);\n if (uniqueIds.size !== ids.length) {\n const duplicateIds = ids.filter(\n (item, index) => ids.indexOf(item) !== index,\n );\n throw new Error(\n `ID's must be unique, found duplicates for: ${duplicateIds}`,\n );\n }\n\n return {\n ids,\n metadatas,\n documents,\n embeddings: embeddingsArray,\n };\n}\n\nexport function wrapCollection(\n api: ChromaClient,\n collection: CollectionParams,\n): Collection {\n return new Collection(\n collection.name,\n collection.id,\n api,\n collection.embeddingFunction,\n collection.metadata,\n );\n}\n","export type AuthHeaders = { [header: string]: string };\ntype TokenHeaderType = \"AUTHORIZATION\" | \"X_CHROMA_TOKEN\";\n\nexport type AuthOptions = {\n provider: ClientAuthProvider | string | undefined;\n credentials?: any | undefined;\n\n // Only relevant for token auth\n tokenHeaderType?: TokenHeaderType | undefined;\n};\n\nexport const tokenHeaderTypeToHeaderKey = (\n headerType: TokenHeaderType,\n): string => {\n if (headerType === \"AUTHORIZATION\") {\n return \"Authorization\";\n } else {\n return \"X-Chroma-Token\";\n }\n};\n\nconst base64Encode = (str: string): string => {\n return Buffer.from(str).toString(\"base64\");\n};\n\nexport interface ClientAuthProvider {\n /**\n * Abstract method for authenticating a client.\n */\n authenticate(): AuthHeaders;\n}\n\nexport class BasicAuthClientProvider implements ClientAuthProvider {\n private readonly credentials: AuthHeaders;\n\n /**\n * Creates a new BasicAuthClientProvider.\n * @param textCredentials - The credentials for the authentication provider. Must be of the form \"username:password\". If not supplied, the environment variable CHROMA_CLIENT_AUTH_CREDENTIALS will be used.\n * @throws {Error} If neither credentials provider or text credentials are supplied.\n */\n constructor(textCredentials: string | undefined) {\n const creds = textCredentials ?? process.env.CHROMA_CLIENT_AUTH_CREDENTIALS;\n if (creds === undefined) {\n throw new Error(\n \"Credentials must be supplied via environment variable (CHROMA_CLIENT_AUTH_CREDENTIALS) or passed in as configuration.\",\n );\n }\n this.credentials = {\n Authorization: \"Basic \" + base64Encode(creds),\n };\n }\n\n authenticate(): AuthHeaders {\n return this.credentials;\n }\n}\n\nexport class TokenAuthClientProvider implements ClientAuthProvider {\n private readonly credentials: AuthHeaders;\n\n constructor(\n textCredentials: any,\n headerType: TokenHeaderType = \"AUTHORIZATION\",\n ) {\n const creds = textCredentials ?? process.env.CHROMA_CLIENT_AUTH_CREDENTIALS;\n if (creds === undefined) {\n throw new Error(\n \"Credentials must be supplied via environment variable (CHROMA_CLIENT_AUTH_CREDENTIALS) or passed in as configuration.\",\n );\n }\n\n const headerKey: string = tokenHeaderTypeToHeaderKey(headerType);\n const headerVal =\n headerType === \"AUTHORIZATION\" ? `Bearer ${creds}` : creds;\n this.credentials = {};\n this.credentials[headerKey] = headerVal;\n }\n\n authenticate(): AuthHeaders {\n return this.credentials;\n }\n}\n\nexport const authOptionsToAuthProvider = (\n auth: AuthOptions,\n): ClientAuthProvider => {\n if (auth.provider === undefined) {\n throw new Error(\"Auth provider not specified\");\n }\n if (auth.credentials === undefined) {\n throw new Error(\"Auth credentials not specified\");\n }\n switch (auth.provider) {\n case \"basic\":\n return new BasicAuthClientProvider(auth.credentials);\n case \"token\":\n return new TokenAuthClientProvider(\n auth.credentials,\n auth.tokenHeaderType,\n );\n break;\n default:\n throw new Error(\"Invalid auth provider\");\n }\n};\n","import {\n ChromaUnauthorizedError,\n ChromaClientError,\n ChromaConnectionError,\n ChromaForbiddenError,\n ChromaNotFoundError,\n ChromaServerError,\n ChromaValueError,\n ChromaError,\n createErrorByType,\n ChromaUniqueError,\n} from \"./Errors\";\nimport { FetchAPI } from \"./generated\";\n\nfunction isOfflineError(error: any): boolean {\n return Boolean(\n (error?.name === \"TypeError\" || error?.name === \"FetchError\") &&\n (error.message?.includes(\"fetch failed\") ||\n error.message?.includes(\"Failed to fetch\") ||\n error.message?.includes(\"ENOTFOUND\")),\n );\n}\n\nfunction parseServerError(error: string | undefined): Error {\n const regex = /(\\w+)\\('(.+)'\\)/;\n const match = error?.match(regex);\n if (match) {\n const [, name, message] = match;\n switch (name) {\n case \"ValueError\":\n return new ChromaValueError(message);\n default:\n return new ChromaError(name, message);\n }\n }\n return new ChromaServerError(\n \"The server encountered an error while handling the request.\",\n );\n}\n\n/** This utility allows a single entrypoint for custom error handling logic\n * that works across all ChromaClient methods.\n *\n * It is intended to be passed to the ApiApi constructor.\n */\nexport const chromaFetch: FetchAPI = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n): Promise<Response> => {\n try {\n const resp = await fetch(input, init);\n\n const clonedResp = resp.clone();\n const respBody = await clonedResp.json();\n if (!clonedResp.ok) {\n const error = createErrorByType(respBody?.error, respBody?.message);\n if (error) {\n throw error;\n }\n switch (resp.status) {\n case 400:\n throw new ChromaClientError(\n `Bad request to ${input} with status: ${resp.statusText}`,\n );\n case 401:\n throw new ChromaUnauthorizedError(`Unauthorized`);\n case 403:\n throw new ChromaForbiddenError(\n `You do not have permission to access the requested resource.`,\n );\n case 404:\n throw new ChromaNotFoundError(\n `The requested resource could not be found: ${input}`,\n );\n case 409:\n throw new ChromaUniqueError(\"The resource already exists\");\n case 500:\n throw parseServerError(respBody?.error);\n case 502:\n case 503:\n case 504:\n throw new ChromaConnectionError(\n `Unable to connect to the chromadb server. Please try again later.`,\n );\n }\n\n throw new Error(\n `Failed to fetch ${input} with status ${resp.status}: ${resp.statusText}`,\n );\n }\n\n if (respBody?.error) {\n throw parseServerError(respBody.error);\n }\n\n return resp;\n } catch (error) {\n if (isOfflineError(error)) {\n throw new ChromaConnectionError(\n \"Failed to connect to chromadb. Make sure your server is running and try again. If you are running from a browser, make sure that your chromadb instance is configured to allow requests from the current origin using the CHROMA_SERVER_CORS_ALLOW_ORIGINS environment variable.\",\n error,\n );\n }\n throw error;\n }\n};\n","import { Configuration, ApiApi as DefaultApi } from \"./generated\";\nimport { validateTenantDatabase } from \"./utils\";\nimport { ConfigOptions } from \"./types\";\nimport {\n AuthOptions,\n authOptionsToAuthProvider,\n ClientAuthProvider,\n} from \"./auth\";\nimport { chromaFetch } from \"./ChromaFetch\";\n\nconst DEFAULT_TENANT = \"default_tenant\";\nconst DEFAULT_DATABASE = \"default_database\";\n\n// interface for tenant\ninterface Tenant {\n name: string;\n}\n\ninterface Database {\n id: string;\n tenant: string;\n name: string;\n}\n\nexport class AdminClient {\n /**\n * @ignore\n */\n private api: DefaultApi & ConfigOptions;\n private authProvider: ClientAuthProvider | undefined;\n public tenant: string = DEFAULT_TENANT;\n public database: string = DEFAULT_DATABASE;\n\n /**\n * Creates a new AdminClient instance.\n * @param {Object} params - The parameters for creating a new client\n * @param {string} [params.path] - The base path for the Chroma API.\n * @returns {AdminClient} A new AdminClient instance.\n *\n * @example\n * ```typescript\n * const client = new AdminClient({\n * path: \"http://localhost:8000\"\n * });\n * ```\n */\n constructor({\n path,\n fetchOptions,\n auth,\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: {\n path?: string;\n fetchOptions?: RequestInit;\n auth?: AuthOptions;\n tenant?: string;\n database?: string;\n } = {}) {\n if (path === undefined) path = \"http://localhost:8000\";\n this.tenant = tenant;\n this.database = database;\n this.authProvider = undefined;\n\n const apiConfig: Configuration = new Configuration({\n basePath: path,\n });\n\n this.api = new DefaultApi(apiConfig, undefined, chromaFetch);\n this.api.options = fetchOptions ?? {};\n\n if (auth !== undefined) {\n this.authProvider = authOptionsToAuthProvider(auth);\n this.api.options.headers = {\n ...this.api.options.headers,\n ...this.authProvider.authenticate(),\n };\n }\n }\n\n /**\n * Sets the tenant and database for the client.\n *\n * @param {Object} params - The parameters for setting tenant and database.\n * @param {string} params.tenant - The name of the tenant.\n * @param {string} params.database - The name of the database.\n *\n * @returns {Promise<void>} A promise that returns nothing\n * @throws {Error} Any issues\n *\n * @example\n * ```typescript\n * await adminClient.setTenant({\n * tenant: \"my_tenant\",\n * database: \"my_database\",\n * });\n * ```\n */\n public async setTenant({\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: {\n tenant: string;\n database?: string;\n }): Promise<void> {\n await validateTenantDatabase(this, tenant, database);\n this.tenant = tenant;\n this.database = database;\n }\n\n /**\n * Sets the database for the client.\n *\n * @param {Object} params - The parameters for setting the database.\n * @param {string} params.database - The name of the database.\n *\n * @returns {Promise<void>} A promise that returns nothing\n * @throws {Error} Any issues\n *\n * @example\n * ```typescript\n * await adminClient.setDatabase({\n * database: \"my_database\",\n * });\n * ```\n */\n public async setDatabase({\n database = DEFAULT_DATABASE,\n }: {\n database?: string;\n }): Promise<void> {\n await validateTenantDatabase(this, this.tenant, database);\n this.database = database;\n }\n\n /**\n * Creates a new tenant with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new tenant.\n * @param {string} params.name - The name of the tenant.\n *\n * @returns {Promise<Tenant>} A promise that resolves to the created tenant.\n * @throws {Error} If there is an issue creating the tenant.\n *\n * @example\n * ```typescript\n * await adminClient.createTenant({\n * name: \"my_tenant\",\n * });\n * ```\n */\n public async createTenant({ name }: { name: string }): Promise<Tenant> {\n await this.api.createTenantV2({ name }, this.api.options);\n\n return { name };\n }\n\n /**\n * Gets a tenant with the specified properties.\n *\n * @param {Object} params - The parameters for getting a tenant.\n * @param {string} params.name - The name of the tenant.\n *\n * @returns {Promise<Tenant>} A promise that resolves to the tenant.\n * @throws {Error} If there is an issue getting the tenant.\n *\n * @example\n * ```typescript\n * await adminClient.getTenant({\n * name: \"my_tenant\",\n * });\n * ```\n */\n public async getTenant({ name }: { name: string }): Promise<Tenant> {\n const getTenant = (await this.api.getTenantV2(\n name,\n this.api.options,\n )) as Tenant;\n\n return { name: getTenant.name };\n }\n\n /**\n * Creates a new database with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<Database>} A promise that resolves to the created database.\n * @throws {Error} If there is an issue creating the database.\n *\n * @example\n * ```typescript\n * await adminClient.createDatabase({\n * name: \"my_database\",\n * tenantName: \"my_tenant\",\n * });\n * ```\n */\n public async createDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<{ name: string }> {\n await this.api.createDatabaseV2(tenantName, { name }, this.api.options);\n\n return { name };\n }\n\n /**\n * Gets a database with the specified properties.\n *\n * @param {Object} params - The parameters for getting a database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<Database>} A promise that resolves to the database.\n * @throws {Error} If there is an issue getting the database.\n *\n * @example\n * ```typescript\n * await adminClient.getDatabase({\n * name: \"my_database\",\n * tenantName: \"my_tenant\",\n * });\n * ```\n */\n public async getDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<Database> {\n const result = (await this.api.getDatabaseV2(\n name,\n tenantName,\n this.api.options,\n )) as Database;\n\n return result;\n }\n\n /**\n * Deletes a database.\n *\n * @param {Object} params - The parameters for deleting a database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<void>} A promise that returns nothing.\n * @throws {Error} If there is an issue deleting the database.\n */\n public async deleteDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<void> {\n await this.api.deleteDatabaseV2(name, tenantName, this.api.options);\n return;\n }\n\n /**\n * Lists database for a specific tenant.\n *\n * @param {Object} params - The parameters for listing databases.\n * @param {number} [params.limit] - The maximum number of databases to return.\n * @param {number} [params.offset] - The number of databases to skip.\n *\n * @returns {Promise<Database[]>} A promise that resolves to a list of databases.\n * @throws {Error} If there is an issue listing the databases.\n */\n public async listDatabases({\n limit,\n offset,\n tenantName,\n }: {\n limit?: number;\n offset?: number;\n tenantName: string;\n }): Promise<Database[]> {\n const response = await this.api.listDatabasesV2(\n tenantName,\n limit,\n offset,\n this.api.options,\n );\n\n return response as Database[];\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Amazon Bedrock Embedding Function Schema\",\n \"description\": \"Schema for the Amazon Bedrock embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"session_args\": {\n \"type\": \"object\",\n \"description\": \"The arguments to pass to the boto3 session\"\n },\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for embeddings\"\n },\n \"kwargs\": {\n \"type\": \"object\",\n \"description\": \"Additional arguments to pass to the Amazon Bedrock client\"\n }\n },\n \"required\": [\n \"session_args\",\n \"model_name\",\n \"kwargs\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Embedding Function Base Schema\",\n \"description\": \"Base schema for all embedding functions in Chroma\",\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"string\",\n \"description\": \"Schema version for the embedding function\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the embedding function\"\n },\n \"config\": {\n \"type\": \"object\",\n \"description\": \"Configuration parameters for the embedding function\"\n }\n },\n \"required\": [\n \"version\",\n \"name\",\n \"config\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Langchain Embedding Function Schema\",\n \"description\": \"Schema for the langchain embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"embedding_function\": {\n \"type\": \"string\",\n \"description\": \"Parameter embedding_function for the langchain embedding function\"\n }\n },\n \"required\": [\n \"embedding_function\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Cohere Embedding Function Schema\",\n \"description\": \"Schema for the Cohere embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Cohere API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Default Embedding Function Schema\",\n \"description\": \"Schema for the default embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {},\n \"required\": [],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google Generative AI Embedding Function Schema\",\n \"description\": \"Schema for the Google Generative AI embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"task_type\": {\n \"type\": \"string\",\n \"description\": \"The task type for the embeddings (e.g., RETRIEVAL_DOCUMENT)\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google Generative AI API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\",\n \"task_type\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google PaLM Embedding Function Schema\",\n \"description\": \"Schema for the Google PaLM embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google PaLM API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google Vertex Embedding Function Schema\",\n \"description\": \"Schema for the Google Vertex embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"project_id\": {\n \"type\": \"string\",\n \"description\": \"The Google Cloud project ID\"\n },\n \"region\": {\n \"type\": \"string\",\n \"description\": \"The Google Cloud region\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google Vertex API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\",\n \"project_id\",\n \"region\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"HuggingFace Embedding Function Schema\",\n \"description\": \"Schema for the HuggingFace embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the HuggingFace API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"HuggingFace Embedding Server Schema\",\n \"description\": \"Schema for the HuggingFace embedding server configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL of the HuggingFace Embedding Server\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Instructor Embedding Function Schema\",\n \"description\": \"Schema for the instructor embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the instructor embedding function\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Parameter device for the instructor embedding function\"\n },\n \"instruction\": {\n \"type\": \"string\",\n \"description\": \"Parameter instruction for the instructor embedding function\"\n }\n },\n \"required\": [\n \"model_name\",\n \"device\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Jina Embedding Function Schema\",\n \"description\": \"Schema for the jina embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the jina embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the jina embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Ollama Embedding Function Schema\",\n \"description\": \"Schema for the Ollama embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL of the Ollama server\"\n },\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for embeddings\"\n },\n \"timeout\": {\n \"type\": \"integer\",\n \"description\": \"Timeout in seconds for the API request\"\n }\n },\n \"required\": [\n \"url\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Onnx_mini_lm_l6_v2 Embedding Function Schema\",\n \"description\": \"Schema for the onnx_mini_lm_l6_v2 embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"preferred_providers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameter preferred_providers for the onnx_mini_lm_l6_v2 embedding function\"\n }\n },\n \"required\": [],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Open_clip Embedding Function Schema\",\n \"description\": \"Schema for the open_clip embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the open_clip embedding function\"\n },\n \"checkpoint\": {\n \"type\": \"string\",\n \"description\": \"Parameter checkpoint for the open_clip embedding function\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Parameter device for the open_clip embedding function\"\n }\n },\n \"required\": [\n \"model_name\",\n \"checkpoint\",\n \"device\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"OpenAI Embedding Function Schema\",\n \"description\": \"Schema for the OpenAI embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"organization_id\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The OpenAI organization ID if applicable\"\n },\n \"api_base\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The base path for the API\"\n },\n \"api_type\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The type of the API deployment\"\n },\n \"api_version\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The api version for the API\"\n },\n \"deployment_id\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Deployment ID for Azure OpenAI\"\n },\n \"default_headers\": {\n \"type\": [\n \"object\",\n \"null\"\n ],\n \"description\": \"A mapping of default headers to be sent with each API request\"\n },\n \"dimensions\": {\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"description\": \"The number of dimensions for the embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the OpenAI API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Roboflow Embedding Function Schema\",\n \"description\": \"Schema for the roboflow embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"api_url\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_url for the roboflow embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the roboflow embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"api_url\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"SentenceTransformer Embedding Function Schema\",\n \"description\": \"Schema for the SentenceTransformer embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Identifier of the SentenceTransformer model\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Device used for computation\"\n },\n \"normalize_embeddings\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to normalize returned vectors\"\n },\n \"kwargs\": {\n \"type\": \"object\",\n \"description\": \"Additional arguments to pass to the SentenceTransformer model\",\n \"additionalProperties\": {\n \"type\": [\n \"string\",\n \"integer\",\n \"number\",\n \"boolean\",\n \"array\",\n \"object\"\n ]\n }\n }\n },\n \"required\": [\n \"model_name\",\n \"device\",\n \"normalize_embeddings\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Text2vec Embedding Function Schema\",\n \"description\": \"Schema for the text2vec embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the text2vec embedding function\"\n }\n },\n \"required\": [\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Transformers Embedding Function Schema\",\n \"description\": \"Schema for the Transformers embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model\": {\n \"type\": \"string\",\n \"description\": \"Identifier of the SentenceTransformer model\"\n },\n \"revision\": {\n \"type\": \"string\",\n \"description\": \"Specific model version to use (can be a branch, tag name, or commit id)\"\n },\n \"quantized\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to load the 8-bit quantized version of the model\"\n }\n },\n \"required\": [\n \"model\",\n \"revision\",\n \"quantized\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Voyageai Embedding Function Schema\",\n \"description\": \"Schema for the voyageai embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the voyageai embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the voyageai embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","// Import schemas directly\nimport amazonBedrockSchema from \"../../../../../../schemas/embedding_functions/amazon_bedrock.json\";\nimport baseSchema from \"../../../../../../schemas/embedding_functions/base_schema.json\";\nimport chromaLangchainSchema from \"../../../../../../schemas/embedding_functions/chroma_langchain.json\";\nimport cohereSchema from \"../../../../../../schemas/embedding_functions/cohere.json\";\nimport defaultSchema from \"../../../../../../schemas/embedding_functions/default.json\";\nimport googleGenerativeAiSchema from \"../../../../../../schemas/embedding_functions/google_generative_ai.json\";\nimport googlePalmSchema from \"../../../../../../schemas/embedding_functions/google_palm.json\";\nimport googleVertexSchema from \"../../../../../../schemas/embedding_functions/google_vertex.json\";\nimport huggingfaceSchema from \"../../../../../../schemas/embedding_functions/huggingface.json\";\nimport huggingfaceServerSchema from \"../../../../../../schemas/embedding_functions/huggingface_server.json\";\nimport instructorSchema from \"../../../../../../schemas/embedding_functions/instructor.json\";\nimport jinaSchema from \"../../../../../../schemas/embedding_functions/jina.json\";\nimport ollamaSchema from \"../../../../../../schemas/embedding_functions/ollama.json\";\nimport onnxMiniLmL6V2Schema from \"../../../../../../schemas/embedding_functions/onnx_mini_lm_l6_v2.json\";\nimport openClipSchema from \"../../../../../../schemas/embedding_functions/open_clip.json\";\nimport openaiSchema from \"../../../../../../schemas/embedding_functions/openai.json\";\nimport roboflowSchema from \"../../../../../../schemas/embedding_functions/roboflow.json\";\nimport sentenceTransformerSchema from \"../../../../../../schemas/embedding_functions/sentence_transformer.json\";\nimport text2vecSchema from \"../../../../../../schemas/embedding_functions/text2vec.json\";\nimport transformersSchema from \"../../../../../../schemas/embedding_functions/transformers.json\";\nimport voyageaiSchema from \"../../../../../../schemas/embedding_functions/voyageai.json\";\n\nimport Ajv from \"ajv\";\n\n// Define a common interface for all schemas\ninterface Schema {\n $schema: string;\n title?: string;\n description?: string;\n version?: string;\n type: string;\n properties: Record<string, any>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: any; // Allow for other properties\n}\n\nconst ajv = new Ajv({\n strict: false, // Allow unknown keywords\n allErrors: true,\n});\n\n// Map of schema names to schema objects\nconst schemaMap = {\n amazon_bedrock: amazonBedrockSchema as Schema,\n base_schema: baseSchema as Schema,\n chroma_langchain: chromaLangchainSchema as Schema,\n cohere: cohereSchema as Schema,\n default: defaultSchema as Schema,\n google_generative_ai: googleGenerativeAiSchema as Schema,\n google_palm: googlePalmSchema as Schema,\n google_vertex: googleVertexSchema as Schema,\n huggingface: huggingfaceSchema as Schema,\n huggingface_server: huggingfaceServerSchema as Schema,\n instructor: instructorSchema as Schema,\n jina: jinaSchema as Schema,\n ollama: ollamaSchema as Schema,\n onnx_mini_lm_l6_v2: onnxMiniLmL6V2Schema as Schema,\n open_clip: openClipSchema as Schema,\n openai: openaiSchema as Schema,\n roboflow: roboflowSchema as Schema,\n sentence_transformer: sentenceTransformerSchema as Schema,\n text2vec: text2vecSchema as Schema,\n transformers: transformersSchema as Schema,\n voyageai: voyageaiSchema as Schema,\n};\n\n/**\n * Load a JSON schema.\n *\n * @param schemaName Name of the schema file (without .json extension)\n * @returns The loaded schema as an object\n * @throws Error if the schema is not available\n */\nexport function loadSchema(schemaName: keyof typeof schemaMap): Schema {\n if (!schemaMap[schemaName]) {\n throw new Error(`Schema '${schemaName}' not found`);\n }\n\n return schemaMap[schemaName];\n}\n\n/**\n * Validate a configuration against a schema.\n *\n * @param config Configuration to validate\n * @param schemaName Name of the schema file (without .json extension)\n * @throws Error if the configuration does not match the schema\n */\nexport function validateConfigSchema(\n config: Record<string, any>,\n schemaName: keyof typeof schemaMap,\n): void {\n const schema = loadSchema(schemaName);\n\n const validate = ajv.compile(schema);\n const valid = validate(config);\n\n if (!valid) {\n const errors = validate.errors || [];\n const errorPaths = errors\n .map((e) => `${e.instancePath || \"/\"}: ${e.message}`)\n .join(\", \");\n throw new Error(\n `Config validation failed for schema '${schemaName}': ${errorPaths}`,\n );\n }\n}\n\n/**\n * Get the version of a schema.\n *\n * @param schemaName Name of the schema file (without .json extension)\n * @returns The schema version as a string\n * @throws Error if the schema file does not exist or is not valid JSON\n */\nexport function getSchemaVersion(schemaName: keyof typeof schemaMap): string {\n const schema = loadSchema(schemaName);\n return schema.version || \"1.0.0\";\n}\n\n/**\n * Get a list of all available schemas.\n *\n * @returns A list of schema names (without .json extension)\n */\nexport function getAvailableSchemas(): (keyof typeof schemaMap)[] {\n return Object.keys(schemaMap).filter((name) => name !== \"base_schema\") as (keyof typeof schemaMap)[];\n}\n\n/**\n * Get information about all available schemas.\n *\n * @returns A dictionary mapping schema names to information about the schema\n */\nexport function getSchemaInfo(): Record<\n string,\n { version: string; title: string; description: string }\n> {\n const schemaInfo: Record<\n string,\n { version: string; title: string; description: string }\n > = {};\n\n for (const schemaName of getAvailableSchemas()) {\n try {\n const schema = schemaMap[schemaName];\n schemaInfo[schemaName] = {\n version: schema.version || \"1.0.0\",\n title: schema.title || \"\",\n description: schema.description || \"\",\n };\n } catch (error) {\n console.error(`Failed to load schema '${schemaName}':`, error);\n }\n }\n\n return schemaInfo;\n}\n","import { validateConfigSchema } from \"../schemas/schemaUtils\";\nimport { isBrowser } from \"../utils\";\nimport { IEmbeddingFunction } from \"./IEmbeddingFunction\";\n\n// Dynamically import module\nlet TransformersApi: Promise<any>;\n\ninterface StoredConfig {\n model_name: string;\n revision: string;\n quantized: boolean;\n}\n\nexport class DefaultEmbeddingFunction implements IEmbeddingFunction {\n name = \"default\";\n\n private pipelinePromise?: Promise<any> | null;\n private transformersApi: any;\n private model: string;\n private revision: string;\n private quantized: boolean;\n private progress_callback: Function | null;\n\n /**\n * DefaultEmbeddingFunction constructor.\n * @param options The configuration options.\n * @param options.model The model to use to calculate embeddings. Defaults to 'Xenova/all-MiniLM-L6-v2', which is an ONNX port of `sentence-transformers/all-MiniLM-L6-v2`.\n * @param options.revision The specific model version to use (can be a branch, tag name, or commit id). Defaults to 'main'.\n * @param options.quantized Whether to load the 8-bit quantized version of the model. Defaults to `false`.\n * @param options.progress_callback If specified, this function will be called during model construction, to provide the user with progress updates.\n */\n constructor({\n model = \"Xenova/all-MiniLM-L6-v2\",\n revision = \"main\",\n quantized = false,\n progress_callback = null,\n }: {\n model?: string;\n revision?: string;\n quantized?: boolean;\n progress_callback?: Function | null;\n } = {}) {\n this.model = model;\n this.revision = revision;\n this.quantized = quantized;\n this.progress_callback = progress_callback;\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n // Store a promise that resolves to the pipeline\n this.pipelinePromise = new Promise(async (resolve, reject) => {\n try {\n const pipeline = this.transformersApi;\n\n const quantized = this.quantized;\n const revision = this.revision;\n const progress_callback = this.progress_callback;\n\n resolve(\n await pipeline(\"feature-extraction\", this.model, {\n quantized,\n revision,\n progress_callback,\n }),\n );\n } catch (e) {\n reject(e);\n }\n });\n\n let pipe = await this.pipelinePromise;\n let output = await pipe(texts, { pooling: \"mean\", normalize: true });\n return output.tolist();\n }\n\n getConfig(): StoredConfig {\n return {\n model_name: this.model,\n revision: this.revision,\n quantized: this.quantized,\n };\n }\n\n buildFromConfig(config: StoredConfig): DefaultEmbeddingFunction {\n return new DefaultEmbeddingFunction({\n model: config.model_name,\n revision: config.revision,\n quantized: config.quantized,\n });\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\n \"DefaultEmbeddingFunction model_name cannot be changed after initialization.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"transformers\");\n }\n\n private async loadClient() {\n if (this.transformersApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n let { pipeline } = await DefaultEmbeddingFunction.import();\n TransformersApi = pipeline;\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the chromadb-default-embed package to use the DefaultEmbeddingFunction, `npm install chromadb-default-embed`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.transformersApi = TransformersApi;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n pipeline: typeof import(\"chromadb-default-embed\");\n }> {\n try {\n // @ts-ignore\n const { pipeline } = await import(\"chromadb-default-embed\");\n return { pipeline };\n } catch (e) {\n throw new Error(\n \"Please install chromadb-default-embed as a dependency with, e.g. `npm install chromadb-default-embed`\",\n );\n }\n }\n}\n","import { version } from \"../package.json\";\nimport { AdminClient } from \"./AdminClient\";\nimport { authOptionsToAuthProvider, ClientAuthProvider } from \"./auth\";\nimport { chromaFetch } from \"./ChromaFetch\";\nimport { Collection } from \"./Collection\";\nimport { DefaultEmbeddingFunction } from \"./embeddings/DefaultEmbeddingFunction\";\nimport { Configuration, ApiApi as DefaultApi } from \"./generated\";\nimport type {\n ChromaClientParams,\n CollectionMetadata,\n CollectionParams,\n ConfigOptions,\n CreateCollectionParams,\n DeleteCollectionParams,\n GetCollectionParams,\n GetOrCreateCollectionParams,\n ListCollectionsParams,\n UserIdentity,\n} from \"./types\";\nimport { validateTenantDatabase, wrapCollection } from \"./utils\";\n\nconst DEFAULT_TENANT = \"default_tenant\";\nconst DEFAULT_DATABASE = \"default_database\";\n\nexport class ChromaClient {\n /**\n * @ignore\n */\n public api: DefaultApi & ConfigOptions;\n /**\n * @ignore\n */\n public tenant: string;\n /**\n * @ignore\n */\n public database: string;\n /**\n * @ignore\n */\n private _adminClient: AdminClient;\n /**\n * @ignore\n */\n private authProvider: ClientAuthProvider | undefined;\n /**\n * @ignore\n */\n private _initPromise: Promise<void> | undefined;\n\n /**\n * Creates a new ChromaClient instance.\n * @param {Object} params - The parameters for creating a new client\n * @param {string} [params.path] - The base path for the Chroma API.\n * @returns {ChromaClient} A new ChromaClient instance.\n *\n * @example\n * ```typescript\n * const client = new ChromaClient({\n * path: \"http://localhost:8000\"\n * });\n * ```\n */\n constructor({\n path = \"http://localhost:8000\",\n fetchOptions,\n auth,\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: ChromaClientParams = {}) {\n this.tenant = tenant;\n this.database = database;\n this.authProvider = undefined;\n\n const apiConfig: Configuration = new Configuration({\n basePath: path,\n });\n\n this.api = new DefaultApi(apiConfig, undefined, chromaFetch);\n this.api.options = fetchOptions ?? {};\n\n this.api.options.headers = {\n ...this.api.options.headers,\n \"user-agent\": `Chroma Javascript Client v${version} (https://github.com/chroma-core/chroma)`,\n };\n\n if (auth !== undefined) {\n this.authProvider = authOptionsToAuthProvider(auth);\n this.api.options.headers = {\n ...this.api.options.headers,\n ...this.authProvider.authenticate(),\n };\n }\n\n this._adminClient = new AdminClient({\n path,\n fetchOptions,\n auth,\n tenant,\n database,\n });\n }\n\n /** @ignore */\n async init(): Promise<void> {\n if (!this._initPromise) {\n if (this.authProvider !== undefined) {\n await this.getUserIdentity();\n }\n\n this._initPromise = validateTenantDatabase(\n this._adminClient,\n this.tenant,\n this.database,\n );\n }\n\n return this._initPromise;\n }\n\n /**\n * Tries to set the tenant and database for the client.\n *\n * @returns {Promise<void>} A promise that resolves when the tenant/database is resolved.\n * @throws {Error} If there is an issue resolving the tenant and database.\n *\n */\n async getUserIdentity(): Promise<void> {\n const user_identity = (await this.api.getUserIdentityV2(\n this.api.options,\n )) as UserIdentity;\n const user_tenant = user_identity.tenant;\n const user_databases = user_identity.databases;\n\n if (\n user_tenant !== null &&\n user_tenant !== undefined &&\n user_tenant !== \"*\" &&\n this.tenant == DEFAULT_TENANT\n ) {\n this.tenant = user_tenant;\n }\n\n if (\n user_databases !== null &&\n user_databases !== undefined &&\n user_databases.length == 1 &&\n user_databases[0] !== \"*\" &&\n this.database == DEFAULT_DATABASE\n ) {\n this.database = user_databases[0];\n }\n }\n\n /**\n * Resets the state of the object by making an API call to the reset endpoint.\n *\n * @returns {Promise<boolean>} A promise that resolves when the reset operation is complete.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n * @throws {ChromaServerError} If the server experienced an error while the state.\n *\n * @example\n * ```typescript\n * await client.reset();\n * ```\n */\n async reset(): Promise<boolean> {\n await this.init();\n return await this.api.resetV2(this.api.options);\n }\n\n /**\n * Returns the version of the Chroma API.\n * @returns {Promise<string>} A promise that resolves to the version of the Chroma API.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n *\n * @example\n * ```typescript\n * const version = await client.version();\n * ```\n */\n async version(): Promise<string> {\n return await this.api.versionV2(this.api.options);\n }\n\n /**\n * Returns a heartbeat from the Chroma API.\n * @returns {Promise<number>} A promise that resolves to the heartbeat from the Chroma API.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n *\n * @example\n * ```typescript\n * const heartbeat = await client.heartbeat();\n * ```\n */\n async heartbeat(): Promise<number> {\n const response = await this.api.heartbeatV2(this.api.options);\n return response[\"nanosecond heartbeat\"];\n }\n\n /**\n * Creates a new collection with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new collection.\n * @param {string} params.name - The name of the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional metadata associated with the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n *\n * @returns {Promise<Collection>} A promise that resolves to the created collection.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n * @throws {ChromaServerError} If there is an issue creating the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.createCollection({\n * name: \"my_collection\",\n * metadata: {\n * \"description\": \"My first collection\"\n * }\n * });\n * ```\n */\n async createCollection({\n name,\n metadata,\n embeddingFunction = new DefaultEmbeddingFunction(),\n }: CreateCollectionParams): Promise<Collection> {\n await this.init();\n const newCollection = (await this.api.createCollectionV2(\n this.tenant,\n this.database,\n {\n name,\n // @ts-ignore: we need to generate the client libraries again\n configuration: null, //TODO: Configuration type in JavaScript\n metadata,\n },\n this.api.options,\n )) as CollectionParams;\n\n return wrapCollection(this, {\n name: newCollection.name,\n id: newCollection.id,\n metadata: newCollection.metadata,\n embeddingFunction,\n });\n }\n\n /**\n * Gets or creates a collection with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new collection.\n * @param {string} params.name - The name of the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional metadata associated with the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n *\n * @returns {Promise<Collection>} A promise that resolves to the got or created collection.\n * @throws {Error} If there is an issue getting or creating the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.getOrCreateCollection({\n * name: \"my_collection\",\n * metadata: {\n * \"description\": \"My first collection\"\n * }\n * });\n * ```\n */\n async getOrCreateCollection({\n name,\n metadata,\n embeddingFunction = new DefaultEmbeddingFunction(),\n }: GetOrCreateCollectionParams): Promise<Collection> {\n await this.init();\n const newCollection = (await this.api.createCollectionV2(\n this.tenant,\n this.database,\n {\n name,\n // @ts-ignore: we need to generate the client libraries again\n configuration: null, //TODO: Configuration type in JavaScript\n metadata,\n get_or_create: true,\n },\n this.api.options,\n )) as CollectionParams;\n\n return wrapCollection(this, {\n name: newCollection.name,\n id: newCollection.id,\n metadata: newCollection.metadata,\n embeddingFunction,\n });\n }\n\n /**\n * Get all collection names.\n *\n * @returns {Promise<string[]>} A promise that resolves to a list of collection names.\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @throws {Error} If there is an issue listing the collections.\n *\n * @example\n * ```typescript\n * const collections = await client.listCollections({\n * limit: 10,\n * offset: 0,\n * });\n * ```\n */\n async listCollections({ limit, offset }: ListCollectionsParams = {}): Promise<\n string[]\n > {\n await this.init();\n\n const response = (await this.api.listCollectionsV2(\n this.tenant,\n this.database,\n limit,\n offset,\n this.api.options,\n )) as { name: string; tenant: string; database: string }[];\n\n return response.map((collection) => collection.name);\n }\n\n /**\n * List collection names, IDs, and metadata.\n *\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @throws {Error} If there is an issue listing the collections.\n * @returns {Promise<{ name: string, id: string, metadata?: CollectionMetadata }[]>} A promise that resolves to a list of collection names, IDs, and metadata.\n *\n * @example\n * ```typescript\n * const collections = await client.listCollectionsAndMetadata({\n * limit: 10,\n * offset: 0,\n * });\n */\n async listCollectionsAndMetadata({\n limit,\n offset,\n }: ListCollectionsParams = {}): Promise<\n {\n name: string;\n id: string;\n metadata?: CollectionMetadata;\n }[]\n > {\n await this.init();\n const results = (await this.api.listCollectionsV2(\n this.tenant,\n this.database,\n limit,\n offset,\n this.api.options,\n )) as { name: string; id: string; metadata?: CollectionMetadata }[];\n\n return results ?? [];\n }\n\n /**\n * Counts all collections.\n *\n * @returns {Promise<number>} A promise that resolves to the number of collections.\n * @throws {Error} If there is an issue counting the collections.\n *\n * @example\n * ```typescript\n * const collections = await client.countCollections();\n * ```\n */\n async countCollections(): Promise<number> {\n await this.init();\n const response = (await this.api.countCollectionsV2(\n this.tenant,\n this.database,\n this.api.options,\n )) as number;\n\n return response;\n }\n\n /**\n * Gets a collection with the specified name.\n * @param {Object} params - The parameters for getting a collection.\n * @param {string} params.name - The name of the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n * @returns {Promise<Collection>} A promise that resolves to the collection.\n * @throws {Error} If there is an issue getting the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.getCollection({\n * name: \"my_collection\"\n * });\n * ```\n */\n async getCollection({\n name,\n embeddingFunction,\n }: GetCollectionParams): Promise<Collection> {\n await this.init();\n const response = (await this.api.getCollectionV2(\n this.tenant,\n this.database,\n name,\n this.api.options,\n )) as CollectionParams;\n\n return wrapCollection(this, {\n id: response.id,\n name: response.name,\n metadata: response.metadata,\n embeddingFunction:\n embeddingFunction !== undefined\n ? embeddingFunction\n : new DefaultEmbeddingFunction(),\n });\n }\n\n /**\n * Deletes a collection with the specified name.\n * @param {Object} params - The parameters for deleting a collection.\n * @param {string} params.name - The name of the collection.\n * @returns {Promise<void>} A promise that resolves when the collection is deleted.\n * @throws {Error} If there is an issue deleting the collection.\n *\n * @example\n * ```typescript\n * await client.deleteCollection({\n * name: \"my_collection\"\n * });\n * ```\n */\n async deleteCollection({ name }: DeleteCollectionParams): Promise<void> {\n await this.init();\n\n await this.api.deleteCollectionV2(\n name,\n this.tenant,\n this.database,\n this.api.options,\n );\n }\n}\n","// create a cloudclient class that takes in an api key and an optional database\n// this should wrap ChromaClient and specify the auth scheme correctly\n\nimport { ChromaClient } from \"./ChromaClient\";\nimport { AuthOptions } from \"./auth\";\n\ninterface CloudClientParams {\n apiKey?: string;\n database?: string;\n tenant?: string;\n cloudHost?: string;\n cloudPort?: string;\n}\n\nclass CloudClient extends ChromaClient {\n constructor({\n apiKey,\n database,\n tenant,\n cloudHost,\n cloudPort,\n }: CloudClientParams) {\n // If no API key is provided, try to load it from the environment variable\n if (!apiKey) {\n apiKey = process.env.CHROMA_API_KEY;\n }\n if (!apiKey) {\n throw new Error(\"No API key provided\");\n }\n\n cloudHost = cloudHost || \"https://api.trychroma.com\";\n cloudPort = cloudPort || \"8000\";\n\n const path = `${cloudHost}:${cloudPort}`;\n\n const auth: AuthOptions = {\n provider: \"token\",\n credentials: apiKey,\n tokenHeaderType: \"X_CHROMA_TOKEN\",\n };\n\n return new ChromaClient({\n path: path,\n auth: auth,\n database,\n tenant,\n });\n\n super();\n }\n}\n\nexport { CloudClient };\n","import type {\n EmbeddingFunctionSpace,\n IEmbeddingFunction,\n} from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ninterface CohereAIAPI {\n createEmbedding: (params: {\n model: string;\n input: string[];\n }) => Promise<number[][]>;\n}\n\nclass CohereAISDK56 implements CohereAIAPI {\n private cohereClient: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.cohereClient) return;\n //@ts-ignore\n const { default: cohere } = await import(\"cohere-ai\");\n // @ts-ignore\n cohere.init(this.apiKey);\n this.cohereClient = cohere;\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n }): Promise<number[][]> {\n await this.loadClient();\n return await this.cohereClient\n .embed({\n texts: params.input,\n model: params.model,\n })\n .then((response: any) => {\n return response.body.embeddings;\n });\n }\n}\n\nclass CohereAISDK7 implements CohereAIAPI {\n private cohereClient: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.cohereClient) return;\n //@ts-ignore\n const cohere = await import(\"cohere-ai\").then((cohere) => {\n return cohere;\n });\n // @ts-ignore\n this.cohereClient = new cohere.CohereClient({\n token: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n }): Promise<number[][]> {\n await this.loadClient();\n return await this.cohereClient\n .embed({ texts: params.input, model: params.model })\n .then((response: any) => {\n return response.embeddings;\n });\n }\n}\n\ninterface StoredConfig {\n model_name: string;\n api_key_env_var: string;\n}\n\nexport class CohereEmbeddingFunction implements IEmbeddingFunction {\n name = \"cohere\";\n\n private cohereAiApi?: CohereAIAPI;\n private model: string;\n private apiKey: string;\n private apiKeyEnvVar: string;\n\n constructor({\n cohere_api_key,\n model = \"large\",\n cohere_api_key_env_var = \"CHROMA_COHERE_API_KEY\",\n }: {\n cohere_api_key?: string;\n model?: string;\n cohere_api_key_env_var: string;\n }) {\n this.model = model;\n\n const apiKey = cohere_api_key ?? process.env[cohere_api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `Cohere API key is required. Please provide it in the constructor or set the environment variable ${cohere_api_key_env_var}.`,\n );\n }\n\n this.apiKey = apiKey;\n this.apiKeyEnvVar = cohere_api_key_env_var;\n }\n\n private async initCohereClient() {\n if (this.cohereAiApi) return;\n try {\n // @ts-ignore\n this.cohereAiApi = await import(\"cohere-ai\").then((cohere) => {\n // @ts-ignore\n if (cohere.CohereClient) {\n return new CohereAISDK7({ apiKey: this.apiKey });\n } else {\n return new CohereAISDK56({ apiKey: this.apiKey });\n }\n });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the cohere-ai package to use the CohereEmbeddingFunction, `npm install -S cohere-ai`\",\n );\n }\n throw e;\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.initCohereClient();\n // @ts-ignore\n return await this.cohereAiApi.createEmbedding({\n model: this.model,\n input: texts,\n });\n }\n\n buildFromConfig(config: StoredConfig): CohereEmbeddingFunction {\n return new CohereEmbeddingFunction({\n model: config.model_name,\n cohere_api_key_env_var: config.api_key_env_var,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n model_name: this.model,\n api_key_env_var: this.apiKeyEnvVar,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\n \"CohereEmbeddingFunction model_name cannot be changed after initialization.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"cohere\");\n }\n\n supportedSpaces(): EmbeddingFunctionSpace[] {\n if (this.model === \"embed-english-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-english-light-v3.0\") {\n return [\"cosine\", \"ip\", \"l2\"];\n }\n\n if (this.model === \"embed-english-v2.0\") {\n return [\"cosine\"];\n }\n\n if (this.model === \"embed-english-light-v2.0\") {\n return [\"cosine\"];\n }\n\n if (this.model === \"embed-multilingual-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-multilingual-light-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-multilingual-v2.0\") {\n return [\"ip\"];\n }\n\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n defaultSpace(): EmbeddingFunctionSpace {\n if (this.model == \"embed-multilingual-v2.0\") {\n return \"ip\";\n }\n\n return \"cosine\";\n }\n}\n","import {\n EmbeddingFunctionSpace,\n IEmbeddingFunction,\n} from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ninterface StoredConfig {\n api_key_env_var: string;\n model_name: string;\n task_type: string;\n}\n\nlet googleGenAiApi: any;\n\nexport class GoogleGenerativeAiEmbeddingFunction implements IEmbeddingFunction {\n name = \"google_generative_ai\";\n\n private api_key: string;\n private api_key_env_var: string;\n private model: string;\n private googleGenAiApi?: any;\n private taskType: string;\n\n constructor({\n googleApiKey,\n model = \"embedding-001\",\n taskType = \"RETRIEVAL_DOCUMENT\",\n apiKeyEnvVar = \"GOOGLE_API_KEY\",\n }: {\n googleApiKey?: string;\n model?: string;\n taskType?: string;\n apiKeyEnvVar: string;\n }) {\n const apiKey = googleApiKey ?? process.env[apiKeyEnvVar];\n if (!apiKey) {\n throw new Error(\n `Google API key is required. Please provide it in the constructor or set the environment variable ${apiKeyEnvVar}.`,\n );\n }\n\n this.api_key = apiKey;\n this.api_key_env_var = apiKeyEnvVar;\n this.model = model;\n this.taskType = taskType;\n }\n\n private async loadClient() {\n if (this.googleGenAiApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n const { googleGenAi } =\n await GoogleGenerativeAiEmbeddingFunction.import();\n googleGenAiApi = googleGenAi;\n // googleGenAiApi.init(this.api_key);\n googleGenAiApi = new googleGenAiApi(this.api_key);\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the @google/generative-ai package to use the GoogleGenerativeAiEmbeddingFunction, `npm install @google/generative-ai`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.googleGenAiApi = googleGenAiApi;\n }\n\n public async generate(texts: string[]) {\n await this.loadClient();\n const model = this.googleGenAiApi.getGenerativeModel({ model: this.model });\n const response = await model.batchEmbedContents({\n requests: texts.map((t) => ({\n content: { parts: [{ text: t }] },\n taskType: this.taskType,\n })),\n });\n const embeddings = response.embeddings.map((e: any) => e.values);\n\n return embeddings;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n googleGenAi: typeof import(\"@google/generative-ai\");\n }> {\n try {\n // @ts-ignore\n const { GoogleGenerativeAI } = await import(\"@google/generative-ai\");\n const googleGenAi = GoogleGenerativeAI;\n // @ts-ignore\n return { googleGenAi };\n } catch (e) {\n throw new Error(\n \"Please install @google/generative-ai as a dependency with, e.g. `npm install @google/generative-ai`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): GoogleGenerativeAiEmbeddingFunction {\n return new GoogleGenerativeAiEmbeddingFunction({\n model: config.model_name,\n apiKeyEnvVar: config.api_key_env_var,\n taskType: config.task_type,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key_env_var,\n model_name: this.model,\n task_type: this.taskType,\n };\n }\n\n validateConfigUpdate(\n oldConfig: Record<string, any>,\n newConfig: Record<string, any>,\n ): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"The model name cannot be changed after initialization.\");\n }\n\n if (oldConfig.taskType !== newConfig.taskType) {\n throw new Error(\"The task type cannot be changed after initialization.\");\n }\n }\n\n validateConfig(config: Record<string, any>): void {\n validateConfigSchema(config, \"google_generative_ai\");\n }\n}\n","import { validateConfigSchema } from \"../schemas/schemaUtils\";\nimport { IEmbeddingFunction } from \"./IEmbeddingFunction\";\n\ntype StoredConfig = {\n url: string;\n};\n\nexport class HuggingFaceEmbeddingServerFunction implements IEmbeddingFunction {\n name = \"huggingface_server\";\n\n private url: string;\n\n constructor({ url }: { url: string }) {\n // we used to construct the client here, but we need to async import the types\n // for the openai npm package, and the constructor can not be async\n this.url = url;\n }\n\n public async generate(texts: string[]) {\n const response = await fetch(this.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ inputs: texts }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to generate embeddings: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data;\n }\n\n buildFromConfig(config: StoredConfig): HuggingFaceEmbeddingServerFunction {\n return new HuggingFaceEmbeddingServerFunction(config);\n }\n\n getConfig(): StoredConfig {\n return {\n url: this.url,\n };\n }\n\n validateConfigUpdate(\n oldConfig: Record<string, any>,\n newConfig: Record<string, any>,\n ): void {\n if (oldConfig.url !== newConfig.url) {\n throw new Error(\"Changing the URL is not allowed.\");\n }\n }\n\n validateConfig(config: Record<string, any>): void {\n validateConfigSchema(config, \"huggingface_server\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n};\n\nexport class JinaEmbeddingFunction implements IEmbeddingFunction {\n name = \"jina\";\n\n private api_key_env_var: string;\n private model_name: string;\n private api_url: string;\n private headers: { [key: string]: string };\n\n constructor({\n jinaai_api_key,\n model_name = \"jina-embeddings-v2-base-en\",\n api_key_env_var = \"JINAAI_API_KEY\",\n }: {\n jinaai_api_key?: string;\n model_name?: string;\n api_key_env_var: string;\n }) {\n const apiKey = jinaai_api_key ?? process.env[api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `Jina AI API key is required. Please provide it in the constructor or set the environment variable ${api_key_env_var}.`,\n );\n }\n\n this.model_name = model_name;\n this.api_key_env_var = api_key_env_var;\n\n this.api_url = \"https://api.jina.ai/v1/embeddings\";\n this.headers = {\n Authorization: `Bearer ${jinaai_api_key}`,\n \"Accept-Encoding\": \"identity\",\n \"Content-Type\": \"application/json\",\n };\n }\n\n public async generate(texts: string[]) {\n try {\n const response = await fetch(this.api_url, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify({\n input: texts,\n model: this.model_name,\n }),\n });\n\n const data = (await response.json()) as { data: any[]; detail: string };\n if (!data || !data.data) {\n throw new Error(data.detail);\n }\n\n const embeddings: any[] = data.data;\n const sortedEmbeddings = embeddings.sort((a, b) => a.index - b.index);\n\n return sortedEmbeddings.map((result) => result.embedding);\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Error calling Jina AI API: ${error.message}`);\n } else {\n throw new Error(`Error calling Jina AI API: ${error}`);\n }\n }\n }\n\n buildFromConfig(config: StoredConfig): JinaEmbeddingFunction {\n return new JinaEmbeddingFunction({\n model_name: config.model_name,\n api_key_env_var: config.api_key_env_var,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key_env_var,\n model_name: this.model_name,\n };\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"jina\");\n }\n}\n","import type { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ntype StoredConfig = {\n url: string;\n model_name: string;\n};\n\nexport class OllamaEmbeddingFunction implements IEmbeddingFunction {\n name = \"ollama\";\n\n private readonly url: string;\n private readonly model: string;\n private ollamaClient?: any;\n\n constructor({\n url = \"http://localhost:11434\",\n model = \"chroma/all-minilm-l6-v2-f32\",\n }: { url?: string; model?: string } = {}) {\n // we used to construct the client here, but we need to async import the types\n // for the openai npm package, and the constructor can not be async\n if (url && url.endsWith(\"/api/embeddings\")) {\n this.url = url.slice(0, -\"/api/embeddings\".length);\n } else {\n this.url = url;\n }\n this.model = model;\n }\n\n private async initClient() {\n if (this.ollamaClient) return;\n try {\n // @ts-ignore\n const { ollama } = await OllamaEmbeddingFunction.import();\n this.ollamaClient = new ollama.Ollama({ host: this.url });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the ollama package to use the OllamaEmbeddingFunction, `npm install -S ollama`\",\n );\n }\n throw e;\n }\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n ollama: typeof import(\"ollama\");\n }> {\n try {\n // @ts-ignore\n const { ollama } = await import(\"ollama\").then((m) => ({ ollama: m }));\n // @ts-ignore\n return { ollama };\n } catch (e) {\n throw new Error(\n \"Please install Ollama as a dependency with, e.g. `npm install ollama`\",\n );\n }\n }\n\n public async generate(texts: string[]) {\n await this.initClient();\n return await this.ollamaClient!.embed({\n model: this.model,\n input: texts,\n }).then((response: any) => {\n return response.embeddings;\n });\n }\n\n buildFromConfig(config: StoredConfig): OllamaEmbeddingFunction {\n return new OllamaEmbeddingFunction({\n url: config.url,\n model: config.model_name,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n url: this.url,\n model_name: this.model,\n };\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"ollama\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\nlet OpenAIApi: any;\nlet openAiVersion = null;\nlet openAiMajorVersion = null;\n\ninterface OpenAIAPI {\n createEmbedding: (params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }) => Promise<number[][]>;\n}\n\nclass OpenAIAPIv3 implements OpenAIAPI {\n private readonly configuration: any;\n private openai: any;\n\n constructor(configuration: { organization: string; apiKey: string }) {\n this.configuration = new OpenAIApi.Configuration({\n organization: configuration.organization,\n apiKey: configuration.apiKey,\n });\n this.openai = new OpenAIApi.OpenAIApi(this.configuration);\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }): Promise<number[][]> {\n const embeddings: number[][] = [];\n const response = await this.openai\n .createEmbedding({\n model: params.model,\n input: params.input,\n })\n .catch((error: any) => {\n throw error;\n });\n // @ts-ignore\n const data = response.data[\"data\"];\n for (let i = 0; i < data.length; i += 1) {\n embeddings.push(data[i][\"embedding\"]);\n }\n return embeddings;\n }\n}\n\nclass OpenAIAPIv4 implements OpenAIAPI {\n private readonly apiKey: any;\n private openai: any;\n\n constructor(apiKey: any) {\n this.apiKey = apiKey;\n this.openai = new OpenAIApi({\n apiKey: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }): Promise<number[][]> {\n const embeddings: number[][] = [];\n const response = await this.openai.embeddings.create(params);\n const data = response[\"data\"];\n for (let i = 0; i < data.length; i += 1) {\n embeddings.push(data[i][\"embedding\"]);\n }\n return embeddings;\n }\n}\n\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n organization_id: string;\n dimensions: number;\n};\n\nexport class OpenAIEmbeddingFunction implements IEmbeddingFunction {\n name = \"openai\";\n\n private api_key: string;\n private org_id: string;\n private model: string;\n private openaiApi?: OpenAIAPI;\n private dimensions?: number;\n\n constructor({\n openai_api_key,\n openai_model = \"text-embedding-ada-002\",\n openai_organization_id,\n openai_embedding_dimensions,\n openai_api_key_env_var = \"OPENAI_API_KEY\",\n }: {\n openai_api_key?: string;\n openai_model?: string;\n openai_organization_id?: string;\n openai_embedding_dimensions?: number;\n openai_api_key_env_var?: string;\n }) {\n const apiKey = openai_api_key ?? process.env[openai_api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `OpenAI API key is required. Please provide it in the constructor or set the environment variable ${openai_api_key_env_var}.`,\n );\n }\n this.api_key = apiKey;\n\n this.org_id = openai_organization_id ?? \"\";\n this.model = openai_model;\n this.dimensions = openai_embedding_dimensions ?? 1536;\n }\n\n private async loadClient() {\n // cache the client\n if (this.openaiApi) return;\n\n try {\n const { openai, version } = await OpenAIEmbeddingFunction.import();\n OpenAIApi = openai;\n let versionVar: string = version;\n openAiVersion = versionVar.replace(/[^0-9.]/g, \"\");\n openAiMajorVersion = parseInt(openAiVersion.split(\".\")[0]);\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the openai package to use the OpenAIEmbeddingFunction, e.g. `npm install openai`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n\n if (openAiMajorVersion > 3) {\n this.openaiApi = new OpenAIAPIv4(this.api_key);\n } else {\n this.openaiApi = new OpenAIAPIv3({\n organization: this.org_id,\n apiKey: this.api_key,\n });\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n return await this.openaiApi!.createEmbedding({\n model: this.model,\n input: texts,\n dimensions: this.dimensions,\n }).catch((error: any) => {\n throw error;\n });\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n openai: typeof import(\"openai\");\n version: string;\n }> {\n try {\n // @ts-ignore\n const { default: openai } = await import(\"openai\");\n // @ts-ignore\n const { VERSION } = await import(\"openai/version\");\n // @ts-ignore\n return { openai, version: VERSION };\n } catch (e) {\n throw new Error(\n \"Please install the openai package to use the OpenAIEmbeddingFunction, e.g. `npm install openai`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): OpenAIEmbeddingFunction {\n return new OpenAIEmbeddingFunction({\n openai_api_key: config.api_key_env_var,\n openai_model: config.model_name,\n openai_organization_id: config.organization_id,\n openai_embedding_dimensions: config.dimensions,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key,\n model_name: this.model,\n organization_id: this.org_id,\n dimensions: this.dimensions ?? 1536,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"Cannot change model name.\");\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"openai\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\n// Dynamically import module\nlet TransformersApi: Promise<any>;\n\ntype StoredConfig = {\n model: string;\n revision: string;\n quantized: boolean;\n};\n\nexport class TransformersEmbeddingFunction implements IEmbeddingFunction {\n name = \"transformers\";\n\n private pipelinePromise?: Promise<any> | null;\n private transformersApi: any;\n private model: string;\n private revision: string;\n private quantized: boolean;\n private progress_callback: Function | null;\n\n /**\n * TransformersEmbeddingFunction constructor.\n * @param options The configuration options.\n * @param options.model The model to use to calculate embeddings. Defaults to 'Xenova/all-MiniLM-L6-v2', which is an ONNX port of `sentence-transformers/all-MiniLM-L6-v2`.\n * @param options.revision The specific model version to use (can be a branch, tag name, or commit id). Defaults to 'main'.\n * @param options.quantized Whether to load the 8-bit quantized version of the model. Defaults to `false`.\n * @param options.progress_callback If specified, this function will be called during model construction, to provide the user with progress updates.\n */\n constructor({\n model = \"Xenova/all-MiniLM-L6-v2\",\n revision = \"main\",\n quantized = false,\n progress_callback = null,\n }: {\n model?: string;\n revision?: string;\n quantized?: boolean;\n progress_callback?: Function | null;\n } = {}) {\n this.model = model;\n this.revision = revision;\n this.quantized = quantized;\n this.progress_callback = progress_callback;\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n // Store a promise that resolves to the pipeline\n this.pipelinePromise = new Promise(async (resolve, reject) => {\n try {\n const pipeline = this.transformersApi;\n\n const quantized = this.quantized;\n const revision = this.revision;\n const progress_callback = this.progress_callback;\n\n resolve(\n await pipeline(\"feature-extraction\", this.model, {\n quantized,\n revision,\n progress_callback,\n }),\n );\n } catch (e) {\n reject(e);\n }\n });\n\n let pipe = await this.pipelinePromise;\n let output = await pipe(texts, { pooling: \"mean\", normalize: true });\n return output.tolist();\n }\n\n private async loadClient() {\n if (this.transformersApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n let { pipeline } = await TransformersEmbeddingFunction.import();\n TransformersApi = pipeline;\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the @xenova/transformers package to use the TransformersEmbeddingFunction, `npm install @xenova/transformers`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.transformersApi = TransformersApi;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n pipeline: typeof import(\"@xenova/transformers\");\n }> {\n try {\n // @ts-ignore\n const { pipeline } = await import(\"@xenova/transformers\");\n return { pipeline };\n } catch (e) {\n throw new Error(\n \"Please install @xenova/transformers as a dependency with, e.g. `npm install @xenova/transformers`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): TransformersEmbeddingFunction {\n return new TransformersEmbeddingFunction({\n model: config.model,\n revision: config.revision,\n quantized: config.quantized,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n model: this.model,\n revision: this.revision,\n quantized: this.quantized,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model !== newConfig.model) {\n throw new Error(\"Cannot change the model of the embedding function.\");\n }\n if (oldConfig.revision !== newConfig.revision) {\n throw new Error(\"Cannot change the revision of the embedding function.\");\n }\n if (oldConfig.quantized !== newConfig.quantized) {\n throw new Error(\n \"Cannot change the quantization of the embedding function.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"transformers\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\nclass VoyageAIAPI {\n private client: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.client) return;\n //@ts-ignore\n const voyageai = await import(\"voyageai\").then((voyageai) => {\n return voyageai;\n });\n // @ts-ignore\n this.client = new voyageai.VoyageAIClient({\n apiKey: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n }): Promise<number[][]> {\n await this.loadClient();\n return await this.client\n .embed({ input: params.input, model: params.model })\n .then((response: any) => {\n return response.data.map(\n (item: { embedding: number[] }) => item.embedding,\n );\n });\n }\n}\n\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n};\n\nexport class VoyageAIEmbeddingFunction implements IEmbeddingFunction {\n name = \"voyageai\";\n\n private voyageAiApi?: VoyageAIAPI;\n private model: string;\n private apiKey: string;\n private apiKeyEnvVar: string;\n constructor({\n api_key,\n model,\n api_key_env_var = \"VOYAGE_API_KEY\",\n }: {\n api_key?: string;\n model: string;\n api_key_env_var: string;\n }) {\n const apiKey = api_key ?? process.env[api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `VoyageAI API key is required. Please provide it in the constructor or set the environment variable ${api_key_env_var}.`,\n );\n }\n this.apiKey = apiKey;\n this.model = model;\n this.apiKeyEnvVar = api_key_env_var;\n }\n\n private async initClient() {\n if (this.voyageAiApi) return;\n try {\n // @ts-ignore\n this.voyageAiApi = await import(\"voyageai\").then((voyageai) => {\n // @ts-ignore\n return new VoyageAIAPI({ apiKey: this.apiKey });\n });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the voyageai package to use the VoyageAIEmbeddingFunction, `npm install -S voyageai`\",\n );\n }\n throw e;\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.initClient();\n // @ts-ignore\n return await this.voyageAiApi.createEmbedding({\n model: this.model,\n input: texts,\n });\n }\n\n buildFromConfig(config: StoredConfig): VoyageAIEmbeddingFunction {\n return new VoyageAIEmbeddingFunction({\n api_key_env_var: config.api_key_env_var,\n model: config.model_name,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.apiKeyEnvVar,\n model_name: this.model,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"Cannot change the model of the embedding function.\");\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"voyageai\");\n }\n}\n","import { AuthOptions } from \"./auth\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\n\nexport enum IncludeEnum {\n Documents = \"documents\",\n Embeddings = \"embeddings\",\n Metadatas = \"metadatas\",\n Distances = \"distances\",\n}\n\nexport type Embedding = number[];\nexport type Embeddings = Embedding[];\n\nexport type Metadata = Record<string, string | number | boolean>;\nexport type Metadatas = Metadata[];\n\nexport type Document = string;\nexport type Documents = Document[];\n\nexport type ID = string;\nexport type IDs = ID[];\n\nexport type PositiveInteger = number;\n\ntype LiteralValue = string | number | boolean;\ntype ListLiteralValue = LiteralValue[];\ntype LiteralNumber = number;\ntype LogicalOperator = \"$and\" | \"$or\";\ntype InclusionOperator = \"$in\" | \"$nin\";\ntype WhereOperator = \"$gt\" | \"$gte\" | \"$lt\" | \"$lte\" | \"$ne\" | \"$eq\";\n\ntype OperatorExpression = {\n [key in WhereOperator | InclusionOperator | LogicalOperator]?:\n | LiteralValue\n | ListLiteralValue;\n};\n\ntype BaseWhere = {\n [key: string]: LiteralValue | OperatorExpression;\n};\n\ntype LogicalWhere = {\n [key in LogicalOperator]?: Where[];\n};\n\nexport type Where = BaseWhere | LogicalWhere;\n\ntype WhereDocumentOperator = \"$contains\" | \"$not_contains\" | LogicalOperator;\n\nexport type WhereDocument = {\n [key in WhereDocumentOperator]?:\n | LiteralValue\n | LiteralNumber\n | WhereDocument[];\n};\n\nexport type MultiGetResponse = {\n ids: IDs;\n embeddings: Embeddings | null;\n documents: (Document | null)[];\n metadatas: (Metadata | null)[];\n included: IncludeEnum[];\n};\n\nexport type GetResponse = MultiGetResponse;\n\nexport type SingleQueryResponse = {\n ids: IDs;\n embeddings: Embeddings | null;\n documents: (Document | null)[];\n metadatas: (Metadata | null)[];\n distances: number[] | null;\n included: IncludeEnum[];\n};\n\nexport type MultiQueryResponse = {\n ids: IDs[];\n embeddings: Embeddings[] | null;\n documents: (Document | null)[][];\n metadatas: (Metadata | null)[][];\n distances: number[][] | null;\n included: IncludeEnum[];\n};\n\nexport type QueryResponse = SingleQueryResponse | MultiQueryResponse;\n\nexport type AddResponse = {};\n\nexport interface CollectionParams {\n name: string;\n id: string;\n metadata: CollectionMetadata | undefined;\n embeddingFunction: IEmbeddingFunction;\n}\n\nexport type CollectionMetadata = Record<string, unknown>;\n\n// RequestInit can be used to set Authorization headers and more\n// see all options here: https://www.jsdocs.io/package/@types/node-fetch#RequestInit\nexport type ConfigOptions = {\n options?: RequestInit;\n};\n\nexport type BaseGetParams = {\n ids?: ID | IDs;\n where?: Where;\n limit?: PositiveInteger;\n offset?: PositiveInteger;\n include?: IncludeEnum[];\n whereDocument?: WhereDocument;\n};\n\nexport type SingleGetParams = BaseGetParams & {\n ids: ID;\n};\n\nexport type MultiGetParams = BaseGetParams & {\n ids?: IDs;\n};\n\nexport type GetParams = SingleGetParams | MultiGetParams;\n\nexport type ListCollectionsParams = {\n limit?: PositiveInteger;\n offset?: PositiveInteger;\n};\n\nexport type ChromaClientParams = {\n path?: string;\n fetchOptions?: RequestInit;\n auth?: AuthOptions;\n tenant?: string;\n database?: string;\n};\n\nexport type CreateCollectionParams = {\n name: string;\n metadata?: CollectionMetadata;\n embeddingFunction?: IEmbeddingFunction;\n};\n\nexport type GetOrCreateCollectionParams = CreateCollectionParams;\n\nexport type GetCollectionParams = {\n name: string;\n embeddingFunction: IEmbeddingFunction;\n};\n\nexport type DeleteCollectionParams = {\n name: string;\n};\n\nexport type BaseRecordOperationParams = {\n ids: ID | IDs;\n embeddings?: Embedding | Embeddings;\n metadatas?: Metadata | Metadatas;\n documents?: Document | Documents;\n};\n\nexport type SingleRecordOperationParams = BaseRecordOperationParams & {\n ids: ID;\n embeddings?: Embedding;\n metadatas?: Metadata;\n documents?: Document;\n};\n\ntype SingleEmbeddingRecordOperationParams = SingleRecordOperationParams & {\n embeddings: Embedding;\n};\n\ntype SingleContentRecordOperationParams = SingleRecordOperationParams & {\n documents: Document;\n};\n\nexport type SingleAddRecordOperationParams =\n | SingleEmbeddingRecordOperationParams\n | SingleContentRecordOperationParams;\n\nexport type MultiRecordOperationParams = BaseRecordOperationParams & {\n ids: IDs;\n embeddings?: Embeddings;\n metadatas?: Metadatas;\n documents?: Documents;\n};\n\ntype MultiEmbeddingRecordOperationParams = MultiRecordOperationParams & {\n embeddings: Embeddings;\n};\n\ntype MultiContentRecordOperationParams = MultiRecordOperationParams & {\n documents: Documents;\n};\n\nexport type MultiAddRecordsOperationParams =\n | MultiEmbeddingRecordOperationParams\n | MultiContentRecordOperationParams;\n\nexport type AddRecordsParams =\n | SingleAddRecordOperationParams\n | MultiAddRecordsOperationParams;\n\nexport type UpsertRecordsParams = AddRecordsParams;\nexport type UpdateRecordsParams =\n | MultiRecordOperationParams\n | SingleRecordOperationParams;\n\nexport type ModifyCollectionParams = {\n name?: string;\n metadata?: CollectionMetadata;\n};\n\nexport type BaseQueryParams = {\n nResults?: PositiveInteger;\n where?: Where;\n queryTexts?: string | string[];\n queryEmbeddings?: Embedding | Embeddings;\n whereDocument?: WhereDocument; // {\"$contains\":\"search_string\"}\n include?: IncludeEnum[]; // [\"metadata\", \"document\"]\n};\n\nexport type SingleTextQueryParams = BaseQueryParams & {\n queryTexts: string;\n queryEmbeddings?: never;\n};\n\nexport type SingleEmbeddingQueryParams = BaseQueryParams & {\n queryTexts?: never;\n queryEmbeddings: Embedding;\n};\n\nexport type MultiTextQueryParams = BaseQueryParams & {\n queryTexts: string[];\n queryEmbeddings?: never;\n};\n\nexport type MultiEmbeddingQueryParams = BaseQueryParams & {\n queryTexts?: never;\n queryEmbeddings: Embeddings;\n};\n\nexport type QueryRecordsParams =\n | SingleTextQueryParams\n | SingleEmbeddingQueryParams\n | MultiTextQueryParams\n | MultiEmbeddingQueryParams;\n\nexport type PeekParams = { limit?: PositiveInteger };\n\nexport type DeleteParams = {\n ids?: ID | IDs;\n where?: Where;\n whereDocument?: WhereDocument;\n};\n\nexport type UserIdentity = {\n tenant: string;\n databases: string[];\n};\n"],"mappings":"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","names":["UsedValueState","Type","DataType","schemaMap","_a","merge","sets","length","slice","xl","x","join","subexp","str","typeOf","o","undefined","Object","prototype","toString","call","split","pop","shift","toLowerCase","toUpperCase","toArray","obj","Array","setInterval","assign","target","source","key","buildExps","isIRI","ALPHA$$","CR$","DIGIT$$","DQUOTE$$","HEXDIG$$","SP$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","GEN_DELIMS$$","UCSCHAR$$","SCHEME$","USERINFO$","UNRESERVED$$","DEC_OCTET$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV4ADDRESS$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","ZONEID$","IPV6ADDRESS$","IP_LITERAL$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","HOST$","REG_NAME$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","IPRIVATE$$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","URI_REFERENCE$","ABSOLUTE_URI$","GENERIC_REF$","RELATIVE_REF$","ABSOLUTE_REF$","SAMEDOC_REF$","AUTHORITY_REF$","RegExp","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","map","array","fn","result","mapDomain","string","parts","replace","labels","encoded","ucs2decode","output","counter","value","charCodeAt","extra","push","ucs2encode","fromCodePoint","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","i","n","bias","basic","lastIndexOf","j","index","oldi","w","t","baseMinusT","out","splice","encode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","toUnicode","test","toASCII","punycode","SCHEMES","pctEncChar","chr","c","e","pctDecChars","newStr","il","parseInt","substr","c2","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","match","UNRESERVED","scheme","PCT_ENCODED","NOT_SCHEME","userinfo","NOT_USERINFO","host","NOT_HOST","path","NOT_PATH","NOT_PATH_NOSCHEME","query","NOT_QUERY","fragment","NOT_FRAGMENT","_stripLeadingZeros","_normalizeIPv4","matches","IPV4ADDRESS","address","_normalizeIPv6","IPV6ADDRESS","zone","reverse","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","allZeroFields","reduce","acc","field","lastLongest","longestZeroFields","sort","a","b","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","parse","uriString","options","iri","IRI_PROTOCOL","URI_PROTOCOL","reference","port","isNaN","indexOf","schemeHandler","unicodeSupport","domainHost","_recomposeAuthority","uriTokens","_","$1","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","Error","serialize","authority","charAt","absolutePath","resolveComponents","relative","skipNormalization","tolerant","resolve","baseURI","relativeURI","schemelessOptions","normalize","uri","equal","uriA","uriB","escapeComponent","ESCAPE","unescapeComponent","handler","secure","http","isSecure","wsComponents","resourceName","ws","O","ATEXT$$","QTEXT$$","VCHAR$$","SOME_DELIMS$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","mailtoComponents","to","unknownHeaders","headers","hfields","hfield","toAddrs","subject","body","addr","toAddr","atIdx","localPart","domain","name","URN_PARSE","urnComponents","nid","nss","urnScheme","uriComponents","UUID","uuidComponents","uuid","https","wss","mailto","urn","Ajv","loadSchema","DiscrError","Ajv","fetch","fetch","Api","IncludeEnum","Ajv","DEFAULT_TENANT","DEFAULT_DATABASE","cohere","version","TransformersApi","voyageai","IncludeEnum"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/index.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/urn-uuid.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/urn.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/mailto.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/wss.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/ws.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/https.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/schemes/http.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/uri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/node_modules/punycode/punycode.es6.js","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/regexps-iri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/regexps-uri.ts","../../../node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/src/util.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.16.0/node_modules/ajv/lib/ajv.ts","../../chromadb-core/package.json","../../chromadb-core/src/generated/runtime.ts","../../chromadb-core/src/generated/api.ts","../../chromadb-core/src/generated/models.ts","../../chromadb-core/src/generated/configuration.ts","../../chromadb-core/src/Errors.ts","../../chromadb-core/src/Collection.ts","../../chromadb-core/src/utils.ts","../../chromadb-core/src/auth.ts","../../chromadb-core/src/ChromaFetch.ts","../../chromadb-core/src/AdminClient.ts","../../../../../schemas/embedding_functions/amazon_bedrock.json","../../../../../schemas/embedding_functions/base_schema.json","../../../../../schemas/embedding_functions/chroma_langchain.json","../../../../../schemas/embedding_functions/cohere.json","../../../../../schemas/embedding_functions/default.json","../../../../../schemas/embedding_functions/google_generative_ai.json","../../../../../schemas/embedding_functions/google_palm.json","../../../../../schemas/embedding_functions/google_vertex.json","../../../../../schemas/embedding_functions/huggingface.json","../../../../../schemas/embedding_functions/huggingface_server.json","../../../../../schemas/embedding_functions/instructor.json","../../../../../schemas/embedding_functions/jina.json","../../../../../schemas/embedding_functions/ollama.json","../../../../../schemas/embedding_functions/onnx_mini_lm_l6_v2.json","../../../../../schemas/embedding_functions/open_clip.json","../../../../../schemas/embedding_functions/openai.json","../../../../../schemas/embedding_functions/roboflow.json","../../../../../schemas/embedding_functions/sentence_transformer.json","../../../../../schemas/embedding_functions/text2vec.json","../../../../../schemas/embedding_functions/transformers.json","../../../../../schemas/embedding_functions/voyageai.json","../../chromadb-core/src/schemas/schemaUtils.ts","../../chromadb-core/src/embeddings/DefaultEmbeddingFunction.ts","../../chromadb-core/src/ChromaClient.ts","../../chromadb-core/src/CloudClient.ts","../../chromadb-core/src/embeddings/CohereEmbeddingFunction.ts","../../chromadb-core/src/embeddings/GoogleGeminiEmbeddingFunction.ts","../../chromadb-core/src/embeddings/HuggingFaceEmbeddingServerFunction.ts","../../chromadb-core/src/embeddings/JinaEmbeddingFunction.ts","../../chromadb-core/src/embeddings/OllamaEmbeddingFunction.ts","../../chromadb-core/src/embeddings/OpenAIEmbeddingFunction.ts","../../chromadb-core/src/embeddings/TransformersEmbeddingFunction.ts","../../chromadb-core/src/embeddings/VoyageAIEmbeddingFunction.ts","../../chromadb-core/src/types.ts"],"sourcesContent":["export abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponents} from \"uri-js\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponents): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport * as URI from \"uri-js\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URI.URIComponents,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import * as uri from \"uri-js\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","{\n \"name\": \"@internal/chromadb-core\",\n \"version\": \"2.2.1\",\n \"private\": true,\n \"description\": \"Core functionality for ChromaDB JavaScript client\",\n \"license\": \"Apache-2.0\",\n \"type\": \"module\",\n \"main\": \"dist/cjs/chromadb-core.cjs\",\n \"types\": \"dist/chromadb-core.d.ts\",\n \"module\": \"dist/chromadb-core.legacy-esm.js\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/chromadb-core.d.ts\",\n \"default\": \"./dist/chromadb-core.mjs\"\n },\n \"require\": {\n \"types\": \"./dist/cjs/chromadb-core.d.cts\",\n \"default\": \"./dist/cjs/chromadb-core.cjs\"\n }\n }\n },\n \"files\": [\n \"src\",\n \"dist\"\n ],\n \"scripts\": {\n \"test\": \"jest --runInBand\",\n \"test:functional\": \"jest --runInBand --testPathIgnorePatterns=test/auth.*.test.ts\",\n \"test:update\": \"jest --runInBand --updateSnapshot\",\n \"prebuild\": \"rimraf dist\",\n \"build\": \"NODE_OPTIONS=--enable-source-maps tsup\",\n \"watch\": \"NODE_OPTIONS=--enable-source-maps tsup --watch\"\n },\n \"dependencies\": {\n \"ajv\": \"^8.12.0\",\n \"cliui\": \"^8.0.1\",\n \"isomorphic-fetch\": \"^3.0.0\"\n },\n \"devDependencies\": {\n \"@jest/globals\": \"^29.7.0\",\n \"@jest/types\": \"^29.6.3\",\n \"@types/jest\": \"^29.5.0\",\n \"@types/node\": \"^20.8.10\",\n \"bcrypt\": \"^5.1.1\",\n \"jest\": \"^29.5.0\",\n \"prettier\": \"2.8.7\",\n \"rimraf\": \"^5.0.0\",\n \"ts-jest\": \"^29.1.0\",\n \"ts-node\": \"^10.9.1\",\n \"tsup\": \"^7.2.0\",\n \"typescript\": \"^5.0.4\"\n }\n}\n","import \"isomorphic-fetch\";\n/* eslint-disable */\n// tslint:disable\n/**\n * chroma-frontend\n *\n *\n * OpenAPI spec version: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport const defaultFetch = fetch;\nimport { Configuration } from \"./configuration\";\n\nexport const BASE_PATH = \"\";\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\n/**\n *\n * @export\n * @type FetchAPI\n */\nexport type FetchAPI = typeof defaultFetch;\n\n/**\n *\n * @export\n * @interface FetchArgs\n */\nexport interface FetchArgs {\n url: string;\n options: RequestInit;\n}\n\n/**\n *\n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n protected configuration?: Configuration;\n\n constructor(\n configuration?: Configuration,\n protected basePath: string = BASE_PATH,\n protected fetch: FetchAPI = defaultFetch,\n ) {\n if (configuration) {\n this.configuration = configuration;\n this.basePath = configuration.basePath || this.basePath;\n }\n }\n}\n\n/**\n *\n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n constructor(public field: string, msg?: string) {\n super(msg);\n Object.setPrototypeOf(this, RequiredError.prototype);\n this.name = \"RequiredError\";\n }\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * chroma-frontend\n *\n *\n * OpenAPI spec version: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nimport { Configuration } from \"./configuration\";\nimport {\n BASE_PATH,\n COLLECTION_FORMATS,\n FetchAPI,\n FetchArgs,\n BaseAPI,\n RequiredError,\n defaultFetch,\n} from \"./runtime\";\nimport { Api } from \"./models\";\n\nexport type FactoryFunction<T> = (\n configuration?: Configuration,\n basePath?: string,\n fetch?: FetchAPI,\n) => T;\n\n/**\n * ApiApi - fetch parameter creator\n * @export\n */\nexport const ApiApiFetchParamCreator = function (\n configuration?: Configuration,\n) {\n return {\n /**\n * @summary Adds records to a collection.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.AddCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionAdd(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.AddCollectionRecordsPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionAdd.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionAdd.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionAdd.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionAdd.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/add`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves the number of records in a collection.\n * @param {string} tenant <p>Tenant ID for the collection</p>\n * @param {string} database <p>Database containing this collection</p>\n * @param {string} collectionId <p>Collection ID whose records are counted</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionCount(\n tenant: string,\n database: string,\n collectionId: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionCount.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionCount.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionCount.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/count`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Deletes records in a collection. Can filter by IDs or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.DeleteCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionDelete(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.DeleteCollectionRecordsPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionDelete.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionDelete.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionDelete.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionDelete.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/delete`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves records from a collection by ID or metadata filter.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name for the collection</p>\n * @param {string} collectionId <p>Collection ID to fetch records from</p>\n * @param {Api.GetRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionGet(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.GetRequestPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionGet.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionGet.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionGet.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionGet.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/get`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Query a collection in a variety of ways, including vector search, metadata filtering, and full-text search\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the collection</p>\n * @param {string} collectionId <p>Collection ID to query</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {Api.QueryRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionQuery(\n tenant: string,\n database: string,\n collectionId: string,\n limit: number | undefined,\n offset: number | undefined,\n request: Api.QueryRequestPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionQuery.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionQuery.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionQuery.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionQuery.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/query`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append(\"limit\", String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append(\"offset\", String(offset));\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Updates records in a collection by ID.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.UpdateCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionUpdate(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionRecordsPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionUpdate.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionUpdate.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionUpdate.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionUpdate.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/update`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Upserts records in a collection (create if not exists, otherwise update).\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.UpsertCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionUpsert(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpsertCollectionRecordsPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling collectionUpsert.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling collectionUpsert.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling collectionUpsert.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling collectionUpsert.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}/upsert`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves the total number of collections in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to count collections from</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollections(\n tenant: string,\n database: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling countCollections.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling countCollections.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections_count`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Creates a new collection under the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the new collection</p>\n * @param {Api.CreateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollection(\n tenant: string,\n database: string,\n request: Api.CreateCollectionPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling createCollection.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling createCollection.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling createCollection.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Creates a new database for a given tenant.\n * @param {string} tenant <p>Tenant ID to associate with the new database</p>\n * @param {Api.CreateDatabasePayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabase(\n tenant: string,\n request: Api.CreateDatabasePayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling createDatabase.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling createDatabase.\",\n );\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases`.replace(\n \"{tenant}\",\n encodeURIComponent(String(tenant)),\n );\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Creates a new tenant.\n * @param {Api.CreateTenantPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenant(\n request: Api.CreateTenantPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling createTenant.\",\n );\n }\n let localVarPath = `/api/v2/tenants`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Deletes a collection in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling deleteCollection.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling deleteCollection.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling deleteCollection.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"DELETE\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Deletes a specific database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteDatabase(\n tenant: string,\n database: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling deleteDatabase.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling deleteDatabase.\",\n );\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database}`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"DELETE\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves a collection by ID or name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling getCollection.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling getCollection.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling getCollection.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves a specific database by name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabase(\n tenant: string,\n database: string,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling getDatabase.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling getDatabase.\",\n );\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases/{database}`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Returns an existing tenant by name.\n * @param {string} tenantName <p>Tenant name or ID to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenant(tenantName: string, options: RequestInit = {}): FetchArgs {\n // verify required parameter 'tenantName' is not null or undefined\n if (tenantName === null || tenantName === undefined) {\n throw new RequiredError(\n \"tenantName\",\n \"Required parameter tenantName was null or undefined when calling getTenant.\",\n );\n }\n let localVarPath = `/api/v2/tenants/{tenant_name}`.replace(\n \"{tenant_name}\",\n encodeURIComponent(String(tenantName)),\n );\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Retrieves the current user's identity, tenant, and databases.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserIdentity(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/auth/identity`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Health check endpoint that returns 200 if the server and executor are ready\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n healthcheck(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/healthcheck`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Heartbeat endpoint that returns a nanosecond timestamp of the current time.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeat(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/heartbeat`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Lists all collections in the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to list collections from</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollections(\n tenant: string,\n database: string,\n limit: number | undefined,\n offset: number | undefined,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling listCollections.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling listCollections.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append(\"limit\", String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append(\"offset\", String(offset));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Lists all databases for a given tenant.\n * @param {string} tenant <p>Tenant ID to list databases for</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listDatabases(\n tenant: string,\n limit: number | undefined,\n offset: number | undefined,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling listDatabases.\",\n );\n }\n let localVarPath = `/api/v2/tenants/{tenant}/databases`.replace(\n \"{tenant}\",\n encodeURIComponent(String(tenant)),\n );\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n if (limit !== undefined) {\n localVarQueryParameter.append(\"limit\", String(limit));\n }\n\n if (offset !== undefined) {\n localVarQueryParameter.append(\"offset\", String(offset));\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Pre-flight checks endpoint reporting basic readiness info.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecks(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/pre-flight-checks`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Reset endpoint allowing authorized users to reset the database.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n reset(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/reset`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"POST\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Updates an existing collection's name or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to update</p>\n * @param {Api.UpdateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollection(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionPayload,\n options: RequestInit = {},\n ): FetchArgs {\n // verify required parameter 'tenant' is not null or undefined\n if (tenant === null || tenant === undefined) {\n throw new RequiredError(\n \"tenant\",\n \"Required parameter tenant was null or undefined when calling updateCollection.\",\n );\n }\n // verify required parameter 'database' is not null or undefined\n if (database === null || database === undefined) {\n throw new RequiredError(\n \"database\",\n \"Required parameter database was null or undefined when calling updateCollection.\",\n );\n }\n // verify required parameter 'collectionId' is not null or undefined\n if (collectionId === null || collectionId === undefined) {\n throw new RequiredError(\n \"collectionId\",\n \"Required parameter collectionId was null or undefined when calling updateCollection.\",\n );\n }\n // verify required parameter 'request' is not null or undefined\n if (request === null || request === undefined) {\n throw new RequiredError(\n \"request\",\n \"Required parameter request was null or undefined when calling updateCollection.\",\n );\n }\n let localVarPath =\n `/api/v2/tenants/{tenant}/databases/{database}/collections/{collection_id}`\n .replace(\"{tenant}\", encodeURIComponent(String(tenant)))\n .replace(\"{database}\", encodeURIComponent(String(database)))\n .replace(\"{collection_id}\", encodeURIComponent(String(collectionId)));\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"PUT\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarHeaderParameter.set(\"Content-Type\", \"application/json\");\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n if (request !== undefined) {\n localVarRequestOptions.body = JSON.stringify(request || {});\n }\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n /**\n * @summary Returns the version of the server.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n version(options: RequestInit = {}): FetchArgs {\n let localVarPath = `/api/v2/version`;\n const localVarPathQueryStart = localVarPath.indexOf(\"?\");\n const localVarRequestOptions: RequestInit = Object.assign(\n { method: \"GET\" },\n options,\n );\n const localVarHeaderParameter: Headers = options.headers\n ? new Headers(options.headers)\n : new Headers();\n const localVarQueryParameter = new URLSearchParams(\n localVarPathQueryStart !== -1\n ? localVarPath.substring(localVarPathQueryStart + 1)\n : \"\",\n );\n if (localVarPathQueryStart !== -1) {\n localVarPath = localVarPath.substring(0, localVarPathQueryStart);\n }\n\n localVarRequestOptions.headers = localVarHeaderParameter;\n\n const localVarQueryParameterString = localVarQueryParameter.toString();\n if (localVarQueryParameterString) {\n localVarPath += \"?\" + localVarQueryParameterString;\n }\n return {\n url: localVarPath,\n options: localVarRequestOptions,\n };\n },\n };\n};\n\n/**\n * ApiApi - functional programming interface\n * @export\n */\nexport const ApiApiFp = function (configuration?: Configuration) {\n return {\n /**\n * @summary Adds records to a collection.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.AddCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionAdd(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.AddCollectionRecordsPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.AddCollectionRecordsResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionAdd(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 201) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 400) {\n return response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves the number of records in a collection.\n * @param {string} tenant <p>Tenant ID for the collection</p>\n * @param {string} database <p>Database containing this collection</p>\n * @param {string} collectionId <p>Collection ID whose records are counted</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionCount(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<number> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionCount(tenant, database, collectionId, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Deletes records in a collection. Can filter by IDs or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.DeleteCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionDelete(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.DeleteCollectionRecordsPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.DeleteCollectionRecordsResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionDelete(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves records from a collection by ID or metadata filter.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name for the collection</p>\n * @param {string} collectionId <p>Collection ID to fetch records from</p>\n * @param {Api.GetRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionGet(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.GetRequestPayload,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.GetResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionGet(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Query a collection in a variety of ways, including vector search, metadata filtering, and full-text search\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the collection</p>\n * @param {string} collectionId <p>Collection ID to query</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {Api.QueryRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionQuery(\n tenant: string,\n database: string,\n collectionId: string,\n limit: number | undefined,\n offset: number | undefined,\n request: Api.QueryRequestPayload,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.QueryResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionQuery(\n tenant,\n database,\n collectionId,\n limit,\n offset,\n request,\n options,\n );\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Updates records in a collection by ID.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.UpdateCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionUpdate(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionRecordsPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.UpdateCollectionRecordsResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionUpdate(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 404) {\n return response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Upserts records in a collection (create if not exists, otherwise update).\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.UpsertCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n collectionUpsert(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpsertCollectionRecordsPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.UpsertCollectionRecordsResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).collectionUpsert(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves the total number of collections in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to count collections from</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n countCollections(\n tenant: string,\n database: string,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<number> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).countCollections(tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Creates a new collection under the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the new collection</p>\n * @param {Api.CreateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCollection(\n tenant: string,\n database: string,\n request: Api.CreateCollectionPayload,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.Collection> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).createCollection(tenant, database, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Creates a new database for a given tenant.\n * @param {string} tenant <p>Tenant ID to associate with the new database</p>\n * @param {Api.CreateDatabasePayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createDatabase(\n tenant: string,\n request: Api.CreateDatabasePayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.CreateDatabaseResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).createDatabase(tenant, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Creates a new tenant.\n * @param {Api.CreateTenantPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n createTenant(\n request: Api.CreateTenantPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.CreateTenantResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).createTenant(request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Deletes a collection in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.UpdateCollectionResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).deleteCollection(tenant, database, collectionId, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Deletes a specific database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteDatabase(\n tenant: string,\n database: string,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.DeleteDatabaseResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).deleteDatabase(tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves a collection by ID or name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.Collection> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).getCollection(tenant, database, collectionId, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves a specific database by name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getDatabase(\n tenant: string,\n database: string,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.Database> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).getDatabase(tenant, database, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Returns an existing tenant by name.\n * @param {string} tenantName <p>Tenant name or ID to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTenant(\n tenantName: string,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.GetTenantResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).getTenant(tenantName, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Retrieves the current user's identity, tenant, and databases.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserIdentity(\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.GetUserIdentityResponse> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).getUserIdentity(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Health check endpoint that returns 200 if the server and executor are ready\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n healthcheck(\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<string> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).healthcheck(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 503) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Heartbeat endpoint that returns a nanosecond timestamp of the current time.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n heartbeat(\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.HeartbeatResponse> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).heartbeat(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Lists all collections in the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to list collections from</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listCollections(\n tenant: string,\n database: string,\n limit: number | undefined,\n offset: number | undefined,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.Vec2[]> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).listCollections(tenant, database, limit, offset, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Lists all databases for a given tenant.\n * @param {string} tenant <p>Tenant ID to list databases for</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n listDatabases(\n tenant: string,\n limit: number | undefined,\n offset: number | undefined,\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.Vec2[]> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).listDatabases(tenant, limit, offset, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Pre-flight checks endpoint reporting basic readiness info.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n preFlightChecks(\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<Api.ChecklistResponse> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).preFlightChecks(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Reset endpoint allowing authorized users to reset the database.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n reset(\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<boolean> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).reset(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Updates an existing collection's name or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to update</p>\n * @param {Api.UpdateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCollection(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionPayload,\n options?: RequestInit,\n ): (\n fetch?: FetchAPI,\n basePath?: string,\n ) => Promise<Api.UpdateCollectionResponse> {\n const localVarFetchArgs = ApiApiFetchParamCreator(\n configuration,\n ).updateCollection(tenant, database, collectionId, request, options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n if (response.status === 401) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 404) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n if (response.status === 500) {\n if (mimeType === \"application/json\") {\n throw response;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n /**\n * @summary Returns the version of the server.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n version(\n options?: RequestInit,\n ): (fetch?: FetchAPI, basePath?: string) => Promise<string> {\n const localVarFetchArgs =\n ApiApiFetchParamCreator(configuration).version(options);\n return (fetch: FetchAPI = defaultFetch, basePath: string = BASE_PATH) => {\n return fetch(\n basePath + localVarFetchArgs.url,\n localVarFetchArgs.options,\n ).then((response) => {\n const contentType = response.headers.get(\"Content-Type\");\n const mimeType = contentType\n ? contentType.replace(/;.*/, \"\")\n : undefined;\n\n if (response.status === 200) {\n if (mimeType === \"application/json\") {\n return response.json() as any;\n }\n throw response;\n }\n throw response;\n });\n };\n },\n };\n};\n\n/**\n * ApiApi - factory interface\n * @export\n */\nexport const ApiApiFactory: FactoryFunction<ApiApi> = function (\n configuration?: Configuration,\n basePath?: string,\n fetch?: FetchAPI,\n) {\n return new ApiApi(configuration, basePath, fetch);\n};\n\n/**\n * ApiApi - object-oriented interface\n * @export\n * @class ApiApi\n * @extends {BaseAPI}\n */\nexport class ApiApi extends BaseAPI {\n /**\n * @summary Adds records to a collection.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.AddCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionAdd(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.AddCollectionRecordsPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionAdd(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Retrieves the number of records in a collection.\n * @param {string} tenant <p>Tenant ID for the collection</p>\n * @param {string} database <p>Database containing this collection</p>\n * @param {string} collectionId <p>Collection ID whose records are counted</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionCount(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionCount(\n tenant,\n database,\n collectionId,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Deletes records in a collection. Can filter by IDs or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.DeleteCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionDelete(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.DeleteCollectionRecordsPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionDelete(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Retrieves records from a collection by ID or metadata filter.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name for the collection</p>\n * @param {string} collectionId <p>Collection ID to fetch records from</p>\n * @param {Api.GetRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionGet(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.GetRequestPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionGet(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Query a collection in a variety of ways, including vector search, metadata filtering, and full-text search\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the collection</p>\n * @param {string} collectionId <p>Collection ID to query</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {Api.QueryRequestPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionQuery(\n tenant: string,\n database: string,\n collectionId: string,\n limit: number | undefined,\n offset: number | undefined,\n request: Api.QueryRequestPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionQuery(\n tenant,\n database,\n collectionId,\n limit,\n offset,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Updates records in a collection by ID.\n * @param {string} tenant\n * @param {string} database\n * @param {string} collectionId\n * @param {Api.UpdateCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionUpdate(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionRecordsPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionUpdate(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Upserts records in a collection (create if not exists, otherwise update).\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>Collection ID</p>\n * @param {Api.UpsertCollectionRecordsPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public collectionUpsert(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpsertCollectionRecordsPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).collectionUpsert(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Retrieves the total number of collections in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to count collections from</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public countCollections(\n tenant: string,\n database: string,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).countCollections(\n tenant,\n database,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Creates a new collection under the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name containing the new collection</p>\n * @param {Api.CreateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createCollection(\n tenant: string,\n database: string,\n request: Api.CreateCollectionPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).createCollection(\n tenant,\n database,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Creates a new database for a given tenant.\n * @param {string} tenant <p>Tenant ID to associate with the new database</p>\n * @param {Api.CreateDatabasePayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createDatabase(\n tenant: string,\n request: Api.CreateDatabasePayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).createDatabase(\n tenant,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Creates a new tenant.\n * @param {Api.CreateTenantPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public createTenant(request: Api.CreateTenantPayload, options?: RequestInit) {\n return ApiApiFp(this.configuration).createTenant(request, options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Deletes a collection in a given database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).deleteCollection(\n tenant,\n database,\n collectionId,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Deletes a specific database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to delete</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public deleteDatabase(\n tenant: string,\n database: string,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).deleteDatabase(\n tenant,\n database,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Retrieves a collection by ID or name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getCollection(\n tenant: string,\n database: string,\n collectionId: string,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).getCollection(\n tenant,\n database,\n collectionId,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Retrieves a specific database by name.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Name of the database to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getDatabase(tenant: string, database: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getDatabase(\n tenant,\n database,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Returns an existing tenant by name.\n * @param {string} tenantName <p>Tenant name or ID to retrieve</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getTenant(tenantName: string, options?: RequestInit) {\n return ApiApiFp(this.configuration).getTenant(tenantName, options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Retrieves the current user's identity, tenant, and databases.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public getUserIdentity(options?: RequestInit) {\n return ApiApiFp(this.configuration).getUserIdentity(options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Health check endpoint that returns 200 if the server and executor are ready\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public healthcheck(options?: RequestInit) {\n return ApiApiFp(this.configuration).healthcheck(options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Heartbeat endpoint that returns a nanosecond timestamp of the current time.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public heartbeat(options?: RequestInit) {\n return ApiApiFp(this.configuration).heartbeat(options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Lists all collections in the specified database.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name to list collections from</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public listCollections(\n tenant: string,\n database: string,\n limit: number | undefined,\n offset: number | undefined,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).listCollections(\n tenant,\n database,\n limit,\n offset,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Lists all databases for a given tenant.\n * @param {string} tenant <p>Tenant ID to list databases for</p>\n * @param {number} [limit] <p>Limit for pagination</p>\n * @param {number} [offset] <p>Offset for pagination</p>\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public listDatabases(\n tenant: string,\n limit: number | undefined,\n offset: number | undefined,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).listDatabases(\n tenant,\n limit,\n offset,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Pre-flight checks endpoint reporting basic readiness info.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public preFlightChecks(options?: RequestInit) {\n return ApiApiFp(this.configuration).preFlightChecks(options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Reset endpoint allowing authorized users to reset the database.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public reset(options?: RequestInit) {\n return ApiApiFp(this.configuration).reset(options)(\n this.fetch,\n this.basePath,\n );\n }\n\n /**\n * @summary Updates an existing collection's name or metadata.\n * @param {string} tenant <p>Tenant ID</p>\n * @param {string} database <p>Database name</p>\n * @param {string} collectionId <p>UUID of the collection to update</p>\n * @param {Api.UpdateCollectionPayload} request\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public updateCollection(\n tenant: string,\n database: string,\n collectionId: string,\n request: Api.UpdateCollectionPayload,\n options?: RequestInit,\n ) {\n return ApiApiFp(this.configuration).updateCollection(\n tenant,\n database,\n collectionId,\n request,\n options,\n )(this.fetch, this.basePath);\n }\n\n /**\n * @summary Returns the version of the server.\n * @param {RequestInit} [options] Override http request option.\n * @throws {RequiredError}\n */\n public version(options?: RequestInit) {\n return ApiApiFp(this.configuration).version(options)(\n this.fetch,\n this.basePath,\n );\n }\n}\n\n/**\n * We sometimes represent dates as strings (in models) and as Dates (in parameters) so this\n * function converts them both to a string.\n */\nfunction dateToString(value: Date | string | undefined): string | undefined {\n if (value instanceof Date) {\n return value.toISOString();\n } else if (typeof value === \"string\") {\n return value;\n } else {\n return undefined;\n }\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * chroma-frontend\n *\n *\n * OpenAPI spec version: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport namespace Api {\n export interface AddCollectionRecordsPayload {\n documents?: (string | null)[] | null;\n embeddings?: number[][] | null;\n ids: string[];\n metadatas?:\n | ({ [name: string]: boolean | number | number | string } | null)[]\n | null;\n uris?: (string | null)[] | null;\n }\n\n export interface AddCollectionRecordsResponse {}\n\n export interface ChecklistResponse {\n /**\n * @type {number}\n * @memberof ChecklistResponse\n * minimum: 0\n */\n max_batch_size: number;\n }\n\n export interface Collection {\n database: string;\n /**\n * @type {number | null}\n * @memberof Collection\n */\n dimension?: number | null;\n /**\n * @description <p>CollectionUuid is a wrapper around Uuid to provide a type for the collection id.</p>\n * @type {string}\n * @memberof Collection\n */\n id: string;\n /**\n * @type {number}\n * @memberof Collection\n */\n log_position: number;\n metadata?: { [name: string]: boolean | number | number | string } | null;\n name: string;\n tenant: string;\n /**\n * @type {number}\n * @memberof Collection\n */\n version: number;\n }\n\n export interface CollectionConfiguration {\n embedding_function?: Api.EmbeddingFunctionConfiguration | null;\n hnsw?: Api.HnswConfiguration | null;\n spann?: Api.SpannConfiguration | null;\n }\n\n export interface CreateCollectionPayload {\n configuration?: Api.CollectionConfiguration | null;\n get_or_create?: boolean;\n metadata?: { [name: string]: boolean | number | number | string } | null;\n name: string;\n }\n\n export interface CreateDatabasePayload {\n name: string;\n }\n\n export interface CreateDatabaseResponse {}\n\n export interface CreateTenantPayload {\n name: string;\n }\n\n export interface CreateTenantResponse {}\n\n export interface Database {\n id: string;\n name: string;\n tenant: string;\n }\n\n export interface DeleteCollectionRecordsPayload extends Api.RawWhereFields {\n ids?: string[] | null;\n }\n\n export interface DeleteCollectionRecordsResponse {}\n\n export interface DeleteDatabaseResponse {}\n\n export type EmbeddingFunctionConfiguration =\n | Api.EmbeddingFunctionConfiguration.ObjectValue\n | Api.EmbeddingFunctionConfiguration.AllofValue;\n\n /**\n * @export\n * @namespace EmbeddingFunctionConfiguration\n */\n export namespace EmbeddingFunctionConfiguration {\n export interface ObjectValue {\n type: Api.EmbeddingFunctionConfiguration.ObjectValue.TypeEnum;\n }\n\n /**\n * @export\n * @namespace ObjectValue\n */\n export namespace ObjectValue {\n export enum TypeEnum {\n Legacy = \"legacy\",\n }\n }\n\n export interface AllofValue extends Api.EmbeddingFunctionNewConfiguration {\n type: Api.EmbeddingFunctionConfiguration.AllofValue.TypeEnum;\n }\n\n /**\n * @export\n * @namespace AllofValue\n */\n export namespace AllofValue {\n export enum TypeEnum {\n Known = \"known\",\n }\n }\n }\n\n export interface EmbeddingFunctionNewConfiguration {\n config: unknown;\n name: string;\n }\n\n export interface ErrorResponse {\n error: string;\n message: string;\n }\n\n export interface GetRequestPayload extends Api.RawWhereFields {\n ids?: string[] | null;\n include?: Api.Include[];\n /**\n * @type {number | null}\n * @memberof GetRequestPayload\n * minimum: 0\n */\n limit?: number | null;\n /**\n * @type {number | null}\n * @memberof GetRequestPayload\n * minimum: 0\n */\n offset?: number | null;\n }\n\n export interface GetResponse {\n documents?: (string | null)[] | null;\n embeddings?: number[][] | null;\n ids: string[];\n include: Api.Include[];\n metadatas?:\n | ({ [name: string]: boolean | number | number | string } | null)[]\n | null;\n uris?: (string | null)[] | null;\n }\n\n export interface GetTenantResponse {\n name: string;\n }\n\n export interface GetUserIdentityResponse {\n databases: string[];\n tenant: string;\n user_id: string;\n }\n\n export interface HeartbeatResponse {\n /**\n * @type {number}\n * @memberof HeartbeatResponse\n * minimum: 0\n */\n \"nanosecond heartbeat\": number;\n }\n\n export interface HnswConfiguration {\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n batch_size?: number;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n ef_construction?: number;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n ef_search?: number;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n max_neighbors?: number;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n num_threads?: number;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n */\n resize_factor?: number;\n space?: Api.HnswSpace;\n /**\n * @type {number}\n * @memberof HnswConfiguration\n * minimum: 0\n */\n sync_threshold?: number;\n }\n\n export enum HnswSpace {\n L2 = \"l2\",\n Cosine = \"cosine\",\n Ip = \"ip\",\n }\n\n export enum Include {\n Distances = \"distances\",\n Documents = \"documents\",\n Embeddings = \"embeddings\",\n Metadatas = \"metadatas\",\n Uris = \"uris\",\n }\n\n export interface QueryRequestPayload extends Api.RawWhereFields {\n ids?: string[] | null;\n include?: Api.Include[];\n /**\n * @type {number | null}\n * @memberof QueryRequestPayload\n * minimum: 0\n */\n n_results?: number | null;\n query_embeddings: number[][];\n }\n\n export interface QueryResponse {\n distances?: (number | null)[][] | null;\n documents?: (string | null)[][] | null;\n embeddings?: (number[] | null)[][] | null;\n ids: string[][];\n include: Api.Include[];\n metadatas?:\n | ({ [name: string]: boolean | number | number | string } | null)[][]\n | null;\n uris?: (string | null)[][] | null;\n }\n\n export interface RawWhereFields {\n where?: unknown;\n where_document?: unknown;\n }\n\n export interface SpannConfiguration {\n /**\n * @type {number}\n * @memberof SpannConfiguration\n * minimum: 0\n */\n construction_ef: number;\n /**\n * @type {number}\n * @memberof SpannConfiguration\n * minimum: 0\n */\n m: number;\n /**\n * @type {number}\n * @memberof SpannConfiguration\n * minimum: 0\n */\n search_ef: number;\n /**\n * @type {number}\n * @memberof SpannConfiguration\n * minimum: 0\n */\n search_nprobe: number;\n space: Api.HnswSpace;\n /**\n * @type {number}\n * @memberof SpannConfiguration\n * minimum: 0\n */\n write_nprobe: number;\n }\n\n export interface UpdateCollectionConfiguration {\n embedding_function?: Api.EmbeddingFunctionConfiguration | null;\n hnsw?: Api.UpdateHnswConfiguration | null;\n spann?: Api.SpannConfiguration | null;\n }\n\n export interface UpdateCollectionPayload {\n new_configuration?: Api.UpdateCollectionConfiguration | null;\n new_metadata?: {\n [name: string]: boolean | number | number | string;\n } | null;\n new_name?: string | null;\n }\n\n export interface UpdateCollectionRecordsPayload {\n documents?: (string | null)[] | null;\n embeddings?: (number[] | null)[] | null;\n ids: string[];\n metadatas?:\n | ({ [name: string]: boolean | number | number | string } | null)[]\n | null;\n uris?: (string | null)[] | null;\n }\n\n export interface UpdateCollectionRecordsResponse {}\n\n export interface UpdateCollectionResponse {}\n\n export interface UpdateHnswConfiguration {\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n * minimum: 0\n */\n batch_size?: number | null;\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n * minimum: 0\n */\n ef_search?: number | null;\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n * minimum: 0\n */\n max_neighbors?: number | null;\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n * minimum: 0\n */\n num_threads?: number | null;\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n */\n resize_factor?: number | null;\n /**\n * @type {number | null}\n * @memberof UpdateHnswConfiguration\n * minimum: 0\n */\n sync_threshold?: number | null;\n }\n\n export interface UpsertCollectionRecordsPayload {\n documents?: (string | null)[] | null;\n embeddings?: number[][] | null;\n ids: string[];\n metadatas?:\n | ({ [name: string]: boolean | number | number | string } | null)[]\n | null;\n uris?: (string | null)[] | null;\n }\n\n export interface UpsertCollectionRecordsResponse {}\n\n export interface Vec2 {\n database: string;\n /**\n * @type {number | null}\n * @memberof Vec2\n */\n dimension?: number | null;\n /**\n * @description <p>CollectionUuid is a wrapper around Uuid to provide a type for the collection id.</p>\n * @type {string}\n * @memberof Vec2\n */\n id: string;\n /**\n * @type {number}\n * @memberof Vec2\n */\n log_position: number;\n metadata?: { [name: string]: boolean | number | number | string } | null;\n name: string;\n tenant: string;\n /**\n * @type {number}\n * @memberof Vec2\n */\n version: number;\n }\n}\n","/* eslint-disable */\n// tslint:disable\n/**\n * chroma-frontend\n *\n *\n * OpenAPI spec version: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator+.\n * https://github.com/karlvr/openapi-generator-plus\n * Do not edit the class manually.\n */\n\nexport interface ConfigurationParameters {\n apiKey?: string | ((name: string) => string | null);\n username?: string;\n password?: string;\n authorization?: string | ((name: string, scopes?: string[]) => string | null);\n basePath?: string;\n}\n\nexport class Configuration {\n /**\n * parameter for apiKey security\n * @param name security name\n * @memberof Configuration\n */\n apiKey?: string | ((name: string) => string | null);\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n username?: string;\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n password?: string;\n /**\n * parameter for oauth2, openIdConnect or http security\n * @param name security name\n * @param scopes oauth2 scopes\n * @memberof Configuration\n */\n authorization?: string | ((name: string, scopes?: string[]) => string | null);\n /**\n * override base path\n *\n * @type {string}\n * @memberof Configuration\n */\n basePath?: string;\n\n constructor(param: ConfigurationParameters = {}) {\n this.apiKey = param.apiKey;\n this.username = param.username;\n this.password = param.password;\n this.authorization = param.authorization;\n this.basePath = param.basePath;\n }\n}\n","/**\n * This is a generic Chroma error.\n */\nexport class ChromaError extends Error {\n constructor(name: string, message: string, public readonly cause?: unknown) {\n super(message);\n this.name = name;\n }\n}\n\n/**\n * Indicates that there was a problem with the connection to the Chroma server (e.g. the server is down or the client is not connected to the internet)\n */\nexport class ChromaConnectionError extends Error {\n name = \"ChromaConnectionError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** Indicates that the server encountered an error while handling the request. */\nexport class ChromaServerError extends Error {\n name = \"ChromaServerError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** Indicate that there was an issue with the request that the client made. */\nexport class ChromaClientError extends Error {\n name = \"ChromaClientError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** The request lacked valid authentication. */\nexport class ChromaUnauthorizedError extends Error {\n name = \"ChromaAuthError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\n/** The user does not have permission to access the requested resource. */\nexport class ChromaForbiddenError extends Error {\n name = \"ChromaForbiddenError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaNotFoundError extends Error {\n name = \"ChromaNotFoundError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaValueError extends Error {\n name = \"ChromaValueError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class InvalidCollectionError extends Error {\n name = \"InvalidCollectionError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class InvalidArgumentError extends Error {\n name = \"InvalidArgumentError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport class ChromaUniqueError extends Error {\n name = \"ChromaUniqueError\";\n constructor(message: string, public readonly cause?: unknown) {\n super(message);\n }\n}\n\nexport function createErrorByType(type: string, message: string) {\n switch (type) {\n case \"InvalidCollection\":\n return new InvalidCollectionError(message);\n case \"InvalidArgumentError\":\n return new InvalidArgumentError(message);\n default:\n return undefined;\n }\n}\n","import { ChromaClient } from \"./ChromaClient\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\nimport {\n CollectionMetadata,\n AddRecordsParams,\n UpsertRecordsParams,\n BaseGetParams,\n GetResponse,\n UpdateRecordsParams,\n QueryRecordsParams,\n MultiQueryResponse,\n PeekParams,\n MultiGetResponse,\n DeleteParams,\n Embeddings,\n CollectionParams,\n} from \"./types\";\nimport { prepareRecordRequest, toArray, toArrayOfArrays } from \"./utils\";\nimport { Api as GeneratedApi } from \"./generated\";\n\nexport class Collection {\n public name: string;\n public id: string;\n public metadata: CollectionMetadata | undefined;\n /**\n * @ignore\n */\n private client: ChromaClient;\n /**\n * @ignore\n */\n public embeddingFunction: IEmbeddingFunction;\n\n /**\n * @ignore\n */\n constructor(\n name: string,\n id: string,\n client: ChromaClient,\n embeddingFunction: IEmbeddingFunction,\n metadata?: CollectionMetadata,\n ) {\n this.name = name;\n this.id = id;\n this.metadata = metadata;\n this.client = client;\n this.embeddingFunction = embeddingFunction;\n }\n\n /**\n * Add items to the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<AddResponse>} - The response from the API. True if successful.\n *\n * @example\n * ```typescript\n * const response = await collection.add({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"]\n * });\n * ```\n */\n async add(params: AddRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.collectionAdd(\n this.client.tenant,\n this.client.database,\n this.id,\n // TODO: For some reason the auto generated code requires metadata to be defined here.\n (await prepareRecordRequest(\n params,\n this.embeddingFunction,\n )) as GeneratedApi.AddCollectionRecordsPayload,\n this.client.api.options,\n );\n }\n\n /**\n * Upsert items to the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<void>}\n *\n * @example\n * ```typescript\n * const response = await collection.upsert({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"],\n * });\n * ```\n */\n async upsert(params: UpsertRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.collectionUpsert(\n this.client.tenant,\n this.client.database,\n this.id,\n // TODO: For some reason the auto generated code requires metadata to be defined here.\n (await prepareRecordRequest(\n params,\n this.embeddingFunction,\n )) as GeneratedApi.UpsertCollectionRecordsPayload,\n this.client.api.options,\n );\n }\n\n /**\n * Count the number of items in the collection\n * @returns {Promise<number>} - The number of items in the collection.\n *\n * @example\n * ```typescript\n * const count = await collection.count();\n * ```\n */\n async count(): Promise<number> {\n await this.client.init();\n return (await this.client.api.collectionCount(\n this.client.tenant,\n this.client.database,\n this.id,\n this.client.api.options,\n )) as number;\n }\n\n /**\n * Get items from the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - Optional IDs of the items to get.\n * @param {Where} [params.where] - Optional where clause to filter items by.\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @param {IncludeEnum[]} [params.include] - Optional list of items to include in the response.\n * @param {WhereDocument} [params.whereDocument] - Optional where clause to filter items by.\n * @returns {Promise<GetResponse>} - The response from the server.\n *\n * @example\n * ```typescript\n * const response = await collection.get({\n * ids: [\"id1\", \"id2\"],\n * where: { \"key\": \"value\" },\n * limit: 10,\n * offset: 0,\n * include: [\"embeddings\", \"metadatas\", \"documents\"],\n * whereDocument: { \"$contains\": \"value\" },\n * });\n * ```\n */\n async get({\n ids,\n where,\n limit,\n offset,\n include,\n whereDocument,\n }: BaseGetParams = {}): Promise<GetResponse> {\n await this.client.init();\n\n const idsArray = ids ? toArray(ids) : undefined;\n\n const resp = (await this.client.api.collectionGet(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n ids: idsArray,\n where,\n limit,\n offset,\n include: include as GeneratedApi.Include[] | undefined,\n where_document: whereDocument,\n },\n this.client.api.options,\n )) as unknown as GetResponse;\n\n return resp;\n }\n\n /**\n * Update items in the collection\n * @param {Object} params - The parameters for the query.\n * @param {ID | IDs} [params.ids] - IDs of the items to add.\n * @param {Embedding | Embeddings} [params.embeddings] - Optional embeddings of the items to add.\n * @param {Metadata | Metadatas} [params.metadatas] - Optional metadata of the items to add.\n * @param {Document | Documents} [params.documents] - Optional documents of the items to add.\n * @returns {Promise<void>}\n *\n * @example\n * ```typescript\n * const response = await collection.update({\n * ids: [\"id1\", \"id2\"],\n * embeddings: [[1, 2, 3], [4, 5, 6]],\n * metadatas: [{ \"key\": \"value\" }, { \"key\": \"value\" }],\n * documents: [\"document1\", \"document2\"],\n * });\n * ```\n */\n async update(params: UpdateRecordsParams): Promise<void> {\n await this.client.init();\n\n await this.client.api.collectionUpdate(\n this.client.tenant,\n this.client.database,\n this.id,\n await prepareRecordRequest(params, this.embeddingFunction, true),\n this.client.api.options,\n );\n }\n\n /**\n * Performs a query on the collection using the specified parameters.\n *\n * @param {Object} params - The parameters for the query.\n * @param {Embedding | Embeddings} [params.queryEmbeddings] - Optional query embeddings to use for the search.\n * @param {PositiveInteger} [params.nResults] - Optional number of results to return (default is 10).\n * @param {Where} [params.where] - Optional query condition to filter results based on metadata values.\n * @param {string | string[]} [params.queryTexts] - Optional query text(s) to search for in the collection.\n * @param {WhereDocument} [params.whereDocument] - Optional query condition to filter results based on document content.\n * @param {IncludeEnum[]} [params.include] - Optional array of fields to include in the result, such as \"metadata\" and \"document\".\n *\n * @returns {Promise<QueryResponse>} A promise that resolves to the query results.\n * @throws {Error} If there is an issue executing the query.\n * @example\n * // Query the collection using embeddings\n * const results = await collection.query({\n * queryEmbeddings: [[0.1, 0.2, ...], ...],\n * nResults: 10,\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * include: [\"metadata\", \"document\"]\n * });\n * @example\n * ```js\n * // Query the collection using query text\n * const results = await collection.query({\n * queryTexts: \"some text\",\n * nResults: 10,\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * include: [\"metadata\", \"document\"]\n * });\n * ```\n *\n */\n async query({\n nResults = 10,\n where,\n whereDocument,\n include,\n queryTexts,\n queryEmbeddings,\n }: QueryRecordsParams): Promise<MultiQueryResponse> {\n await this.client.init();\n\n let embeddings: number[][] = [];\n\n // If queryEmbeddings is provided, use it\n if (queryEmbeddings) {\n embeddings = toArrayOfArrays(queryEmbeddings);\n }\n // If queryTexts is provided, use it to generate queryEmbeddings\n else if (queryTexts) {\n embeddings = await this.embeddingFunction.generate(toArray(queryTexts));\n }\n\n if (embeddings.length === 0) {\n throw new TypeError(\n \"You must provide either queryEmbeddings or queryTexts\",\n );\n }\n\n const resp = (await this.client.api.collectionQuery(\n this.client.tenant,\n this.client.database,\n this.id,\n nResults,\n undefined,\n {\n query_embeddings: embeddings,\n n_results: nResults,\n where,\n where_document: whereDocument,\n include: include as GeneratedApi.Include[] | undefined,\n },\n this.client.api.options,\n )) as unknown as MultiQueryResponse;\n\n return resp;\n }\n\n /**\n * Modify the collection name or metadata\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.name] - Optional new name for the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional new metadata for the collection.\n * @returns {Promise<void>} - The response from the API.\n *\n * @example\n * ```typescript\n * const response = await client.updateCollection({\n * name: \"new name\",\n * metadata: { \"key\": \"value\" },\n * });\n * ```\n */\n async modify({\n name,\n metadata,\n }: {\n name?: string;\n metadata?: CollectionMetadata;\n }): Promise<CollectionParams> {\n await this.client.init();\n\n const resp = (await this.client.api.updateCollection(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n new_name: name,\n new_metadata: metadata,\n },\n this.client.api.options,\n )) as CollectionParams;\n\n if (name) {\n this.name = name;\n }\n\n if (metadata) {\n this.metadata = metadata;\n }\n\n return resp;\n }\n\n /**\n * Peek inside the collection\n * @param {Object} params - The parameters for the query.\n * @param {PositiveInteger} [params.limit] - Optional number of results to return (default is 10).\n * @returns {Promise<GetResponse>} A promise that resolves to the query results.\n * @throws {Error} If there is an issue executing the query.\n *\n * @example\n * ```typescript\n * const results = await collection.peek({\n * limit: 10\n * });\n * ```\n */\n async peek({ limit = 10 }: PeekParams = {}): Promise<MultiGetResponse> {\n await this.client.init();\n return (await this.client.api.collectionGet(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n limit,\n },\n this.client.api.options,\n )) as unknown as MultiGetResponse;\n }\n\n /**\n * Deletes items from the collection.\n * @param {Object} params - The parameters for deleting items from the collection.\n * @param {ID | IDs} [params.ids] - Optional ID or array of IDs of items to delete.\n * @param {Where} [params.where] - Optional query condition to filter items to delete based on metadata values.\n * @param {WhereDocument} [params.whereDocument] - Optional query condition to filter items to delete based on document content.\n * @returns {Promise<string[]>} A promise that resolves to the IDs of the deleted items.\n * @throws {Error} If there is an issue deleting items from the collection.\n *\n * @example\n * ```typescript\n * const results = await collection.delete({\n * ids: \"some_id\",\n * where: {\"name\": {\"$eq\": \"John Doe\"}},\n * whereDocument: {\"$contains\":\"search_string\"}\n * });\n * ```\n */\n async delete({\n ids,\n where,\n whereDocument,\n }: DeleteParams = {}): Promise<void> {\n await this.client.init();\n\n const idsArray = ids ? toArray(ids) : undefined;\n\n await this.client.api.collectionDelete(\n this.client.tenant,\n this.client.database,\n this.id,\n {\n ids: idsArray,\n where: where,\n where_document: whereDocument,\n },\n this.client.api.options,\n );\n }\n}\n","import { AdminClient } from \"./AdminClient\";\nimport { ChromaClient } from \"./ChromaClient\";\nimport { ChromaConnectionError } from \"./Errors\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\nimport {\n AddRecordsParams,\n BaseRecordOperationParams,\n CollectionParams,\n Metadata,\n MultiRecordOperationParams,\n UpdateRecordsParams,\n} from \"./types\";\nimport { Collection } from \"./Collection\";\n\n// a function to convert a non-Array object to an Array\nexport function toArray<T>(obj: T | T[]): Array<T> {\n if (Array.isArray(obj)) {\n return obj;\n } else {\n return [obj] as T[];\n }\n}\n\n// a function to convert an array to array of arrays\nexport function toArrayOfArrays<T>(\n obj: Array<Array<T>> | Array<T>\n): Array<Array<T>> {\n if (obj.length === 0) {\n return [];\n }\n\n if (Array.isArray(obj[0])) {\n return obj as Array<Array<T>>;\n }\n\n if (obj[0] && typeof (obj[0] as any)[Symbol.iterator] === 'function') {\n return (obj as unknown as Array<Iterable<T>>).map(el => Array.from(el));\n }\n\n return [obj] as Array<Array<T>>;\n}\n\n/**\n * Dynamically imports a specified module, providing a workaround for browser environments.\n * This function is necessary because we dynamically import optional dependencies\n * which can cause issues with bundlers that detect the import and throw an error\n * on build time when the dependency is not installed.\n * Using this workaround, the dynamic import is only evaluated on runtime\n * where we work with try-catch when importing optional dependencies.\n *\n * @param {string} moduleName - Specifies the module to import.\n * @returns {Promise<any>} Returns a Promise that resolves to the imported module.\n */\nexport async function importOptionalModule(moduleName: string) {\n return Function(`return import(\"${moduleName}\")`)();\n}\n\nexport async function validateTenantDatabase(\n adminClient: AdminClient,\n tenant: string,\n database: string,\n): Promise<void> {\n try {\n await adminClient.getTenant({ name: tenant });\n } catch (error) {\n if (error instanceof ChromaConnectionError) {\n throw error;\n }\n throw new Error(\n `Could not connect to tenant ${tenant}. Are you sure it exists? Underlying error:\n${error}`,\n );\n }\n\n try {\n await adminClient.getDatabase({ name: database, tenantName: tenant });\n } catch (error) {\n if (error instanceof ChromaConnectionError) {\n throw error;\n }\n throw new Error(\n `Could not connect to database ${database} for tenant ${tenant}. Are you sure it exists? Underlying error:\n${error}`,\n );\n }\n}\n\nexport function isBrowser() {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n\nfunction arrayifyParams(\n params: BaseRecordOperationParams,\n): MultiRecordOperationParams {\n return {\n ids: toArray(params.ids),\n embeddings: params.embeddings\n ? toArrayOfArrays(params.embeddings)\n : undefined,\n metadatas: params.metadatas\n ? toArray<Metadata>(params.metadatas)\n : undefined,\n documents: params.documents ? toArray(params.documents) : undefined,\n };\n}\n\nexport async function prepareRecordRequest(\n reqParams: AddRecordsParams | UpdateRecordsParams,\n embeddingFunction: IEmbeddingFunction,\n update?: true,\n): Promise<MultiRecordOperationParams> {\n const { ids, embeddings, metadatas, documents } = arrayifyParams(reqParams);\n\n if (!embeddings && !documents && !update) {\n throw new Error(\"embeddings and documents cannot both be undefined\");\n }\n\n const embeddingsArray = embeddings\n ? embeddings\n : documents\n ? await embeddingFunction.generate(documents)\n : undefined;\n\n if (!embeddingsArray && !update) {\n throw new Error(\"Failed to generate embeddings for your request.\");\n }\n\n for (let i = 0; i < ids.length; i += 1) {\n if (typeof ids[i] !== \"string\") {\n throw new Error(\n `Expected ids to be strings, found ${typeof ids[i]} at index ${i}`,\n );\n }\n }\n\n if (\n (embeddingsArray !== undefined && ids.length !== embeddingsArray.length) ||\n (metadatas !== undefined && ids.length !== metadatas.length) ||\n (documents !== undefined && ids.length !== documents.length)\n ) {\n throw new Error(\n \"ids, embeddings, metadatas, and documents must all be the same length\",\n );\n }\n\n const uniqueIds = new Set(ids);\n if (uniqueIds.size !== ids.length) {\n const duplicateIds = ids.filter(\n (item, index) => ids.indexOf(item) !== index,\n );\n throw new Error(\n `ID's must be unique, found duplicates for: ${duplicateIds}`,\n );\n }\n\n return {\n ids,\n metadatas,\n documents,\n embeddings: embeddingsArray,\n };\n}\n\nexport function wrapCollection(\n api: ChromaClient,\n collection: CollectionParams,\n): Collection {\n return new Collection(\n collection.name,\n collection.id,\n api,\n collection.embeddingFunction,\n collection.metadata,\n );\n}\n","export type AuthHeaders = { [header: string]: string };\ntype TokenHeaderType = \"AUTHORIZATION\" | \"X_CHROMA_TOKEN\";\n\nexport type AuthOptions = {\n provider: ClientAuthProvider | string | undefined;\n credentials?: any | undefined;\n\n // Only relevant for token auth\n tokenHeaderType?: TokenHeaderType | undefined;\n};\n\nexport const tokenHeaderTypeToHeaderKey = (\n headerType: TokenHeaderType,\n): string => {\n if (headerType === \"AUTHORIZATION\") {\n return \"Authorization\";\n } else {\n return \"X-Chroma-Token\";\n }\n};\n\nconst base64Encode = (str: string): string => {\n return Buffer.from(str).toString(\"base64\");\n};\n\nexport interface ClientAuthProvider {\n /**\n * Abstract method for authenticating a client.\n */\n authenticate(): AuthHeaders;\n}\n\nexport class BasicAuthClientProvider implements ClientAuthProvider {\n private readonly credentials: AuthHeaders;\n\n /**\n * Creates a new BasicAuthClientProvider.\n * @param textCredentials - The credentials for the authentication provider. Must be of the form \"username:password\". If not supplied, the environment variable CHROMA_CLIENT_AUTH_CREDENTIALS will be used.\n * @throws {Error} If neither credentials provider or text credentials are supplied.\n */\n constructor(textCredentials: string | undefined) {\n const creds = textCredentials ?? process.env.CHROMA_CLIENT_AUTH_CREDENTIALS;\n if (creds === undefined) {\n throw new Error(\n \"Credentials must be supplied via environment variable (CHROMA_CLIENT_AUTH_CREDENTIALS) or passed in as configuration.\",\n );\n }\n this.credentials = {\n Authorization: \"Basic \" + base64Encode(creds),\n };\n }\n\n authenticate(): AuthHeaders {\n return this.credentials;\n }\n}\n\nexport class TokenAuthClientProvider implements ClientAuthProvider {\n private readonly credentials: AuthHeaders;\n\n constructor(\n textCredentials: any,\n headerType: TokenHeaderType = \"AUTHORIZATION\",\n ) {\n const creds = textCredentials ?? process.env.CHROMA_CLIENT_AUTH_CREDENTIALS;\n if (creds === undefined) {\n throw new Error(\n \"Credentials must be supplied via environment variable (CHROMA_CLIENT_AUTH_CREDENTIALS) or passed in as configuration.\",\n );\n }\n\n const headerKey: string = tokenHeaderTypeToHeaderKey(headerType);\n const headerVal =\n headerType === \"AUTHORIZATION\" ? `Bearer ${creds}` : creds;\n this.credentials = {};\n this.credentials[headerKey] = headerVal;\n }\n\n authenticate(): AuthHeaders {\n return this.credentials;\n }\n}\n\nexport const authOptionsToAuthProvider = (\n auth: AuthOptions,\n): ClientAuthProvider => {\n if (auth.provider === undefined) {\n throw new Error(\"Auth provider not specified\");\n }\n if (auth.credentials === undefined) {\n throw new Error(\"Auth credentials not specified\");\n }\n switch (auth.provider) {\n case \"basic\":\n return new BasicAuthClientProvider(auth.credentials);\n case \"token\":\n return new TokenAuthClientProvider(\n auth.credentials,\n auth.tokenHeaderType,\n );\n break;\n default:\n throw new Error(\"Invalid auth provider\");\n }\n};\n","import {\n ChromaUnauthorizedError,\n ChromaClientError,\n ChromaConnectionError,\n ChromaForbiddenError,\n ChromaNotFoundError,\n ChromaServerError,\n ChromaValueError,\n ChromaError,\n createErrorByType,\n ChromaUniqueError,\n} from \"./Errors\";\nimport { FetchAPI } from \"./generated\";\n\nfunction isOfflineError(error: any): boolean {\n return Boolean(\n (error?.name === \"TypeError\" || error?.name === \"FetchError\") &&\n (error.message?.includes(\"fetch failed\") ||\n error.message?.includes(\"Failed to fetch\") ||\n error.message?.includes(\"ENOTFOUND\")),\n );\n}\n\nfunction parseServerError(error: string | undefined): Error {\n const regex = /(\\w+)\\('(.+)'\\)/;\n const match = error?.match(regex);\n if (match) {\n const [, name, message] = match;\n switch (name) {\n case \"ValueError\":\n return new ChromaValueError(message);\n default:\n return new ChromaError(name, message);\n }\n }\n return new ChromaServerError(\n \"The server encountered an error while handling the request.\",\n );\n}\n\n/** This utility allows a single entrypoint for custom error handling logic\n * that works across all ChromaClient methods.\n *\n * It is intended to be passed to the ApiApi constructor.\n */\nexport const chromaFetch: FetchAPI = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n): Promise<Response> => {\n try {\n const resp = await fetch(input, init);\n\n const clonedResp = resp.clone();\n const respBody = await clonedResp.json();\n if (!clonedResp.ok) {\n const error = createErrorByType(respBody?.error, respBody?.message);\n if (error) {\n throw error;\n }\n switch (resp.status) {\n case 400:\n throw new ChromaClientError(\n `Bad request to ${input} with status: ${resp.statusText}`,\n );\n case 401:\n throw new ChromaUnauthorizedError(`Unauthorized`);\n case 403:\n throw new ChromaForbiddenError(\n `You do not have permission to access the requested resource.`,\n );\n case 404:\n throw new ChromaNotFoundError(\n `The requested resource could not be found: ${input}`,\n );\n case 409:\n throw new ChromaUniqueError(\"The resource already exists\");\n case 500:\n throw parseServerError(respBody?.error);\n case 502:\n case 503:\n case 504:\n throw new ChromaConnectionError(\n `Unable to connect to the chromadb server. Please try again later.`,\n );\n }\n\n throw new Error(\n `Failed to fetch ${input} with status ${resp.status}: ${resp.statusText}`,\n );\n }\n\n if (respBody?.error) {\n throw parseServerError(respBody.error);\n }\n\n return resp;\n } catch (error) {\n if (isOfflineError(error)) {\n throw new ChromaConnectionError(\n \"Failed to connect to chromadb. Make sure your server is running and try again. If you are running from a browser, make sure that your chromadb instance is configured to allow requests from the current origin using the CHROMA_SERVER_CORS_ALLOW_ORIGINS environment variable.\",\n error,\n );\n }\n throw error;\n }\n};\n","import { Configuration, ApiApi as DefaultApi } from \"./generated\";\nimport { validateTenantDatabase } from \"./utils\";\nimport { ConfigOptions } from \"./types\";\nimport {\n AuthOptions,\n authOptionsToAuthProvider,\n ClientAuthProvider,\n} from \"./auth\";\nimport { chromaFetch } from \"./ChromaFetch\";\n\nconst DEFAULT_TENANT = \"default_tenant\";\nconst DEFAULT_DATABASE = \"default_database\";\n\n// interface for tenant\ninterface Tenant {\n name: string;\n}\n\ninterface Database {\n id: string;\n tenant: string;\n name: string;\n}\n\nexport class AdminClient {\n /**\n * @ignore\n */\n private api: DefaultApi & ConfigOptions;\n private authProvider: ClientAuthProvider | undefined;\n public tenant: string = DEFAULT_TENANT;\n public database: string = DEFAULT_DATABASE;\n\n /**\n * Creates a new AdminClient instance.\n * @param {Object} params - The parameters for creating a new client\n * @param {string} [params.path] - The base path for the Chroma API.\n * @returns {AdminClient} A new AdminClient instance.\n *\n * @example\n * ```typescript\n * const client = new AdminClient({\n * path: \"http://localhost:8000\"\n * });\n * ```\n */\n constructor({\n path,\n fetchOptions,\n auth,\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: {\n path?: string;\n fetchOptions?: RequestInit;\n auth?: AuthOptions;\n tenant?: string;\n database?: string;\n } = {}) {\n if (path === undefined) path = \"http://localhost:8000\";\n this.tenant = tenant;\n this.database = database;\n this.authProvider = undefined;\n\n const apiConfig: Configuration = new Configuration({\n basePath: path,\n });\n\n this.api = new DefaultApi(apiConfig, undefined, chromaFetch);\n this.api.options = fetchOptions ?? {};\n\n if (auth !== undefined) {\n this.authProvider = authOptionsToAuthProvider(auth);\n this.api.options.headers = {\n ...this.api.options.headers,\n ...this.authProvider.authenticate(),\n };\n }\n }\n\n /**\n * Sets the tenant and database for the client.\n *\n * @param {Object} params - The parameters for setting tenant and database.\n * @param {string} params.tenant - The name of the tenant.\n * @param {string} params.database - The name of the database.\n *\n * @returns {Promise<void>} A promise that returns nothing\n * @throws {Error} Any issues\n *\n * @example\n * ```typescript\n * await adminClient.setTenant({\n * tenant: \"my_tenant\",\n * database: \"my_database\",\n * });\n * ```\n */\n public async setTenant({\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: {\n tenant: string;\n database?: string;\n }): Promise<void> {\n await validateTenantDatabase(this, tenant, database);\n this.tenant = tenant;\n this.database = database;\n }\n\n /**\n * Sets the database for the client.\n *\n * @param {Object} params - The parameters for setting the database.\n * @param {string} params.database - The name of the database.\n *\n * @returns {Promise<void>} A promise that returns nothing\n * @throws {Error} Any issues\n *\n * @example\n * ```typescript\n * await adminClient.setDatabase({\n * database: \"my_database\",\n * });\n * ```\n */\n public async setDatabase({\n database = DEFAULT_DATABASE,\n }: {\n database?: string;\n }): Promise<void> {\n await validateTenantDatabase(this, this.tenant, database);\n this.database = database;\n }\n\n /**\n * Creates a new tenant with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new tenant.\n * @param {string} params.name - The name of the tenant.\n *\n * @returns {Promise<Tenant>} A promise that resolves to the created tenant.\n * @throws {Error} If there is an issue creating the tenant.\n *\n * @example\n * ```typescript\n * await adminClient.createTenant({\n * name: \"my_tenant\",\n * });\n * ```\n */\n public async createTenant({ name }: { name: string }): Promise<Tenant> {\n await this.api.createTenant({ name }, this.api.options);\n\n return { name };\n }\n\n /**\n * Gets a tenant with the specified properties.\n *\n * @param {Object} params - The parameters for getting a tenant.\n * @param {string} params.name - The name of the tenant.\n *\n * @returns {Promise<Tenant>} A promise that resolves to the tenant.\n * @throws {Error} If there is an issue getting the tenant.\n *\n * @example\n * ```typescript\n * await adminClient.getTenant({\n * name: \"my_tenant\",\n * });\n * ```\n */\n public async getTenant({ name }: { name: string }): Promise<Tenant> {\n const getTenant = (await this.api.getTenant(\n name,\n this.api.options,\n )) as Tenant;\n\n return { name: getTenant.name };\n }\n\n /**\n * Creates a new database with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<Database>} A promise that resolves to the created database.\n * @throws {Error} If there is an issue creating the database.\n *\n * @example\n * ```typescript\n * await adminClient.createDatabase({\n * name: \"my_database\",\n * tenantName: \"my_tenant\",\n * });\n * ```\n */\n public async createDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<{ name: string }> {\n await this.api.createDatabase(tenantName, { name }, this.api.options);\n\n return { name };\n }\n\n /**\n * Gets a database with the specified properties.\n *\n * @param {Object} params - The parameters for getting a database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<Database>} A promise that resolves to the database.\n * @throws {Error} If there is an issue getting the database.\n *\n * @example\n * ```typescript\n * await adminClient.getDatabase({\n * name: \"my_database\",\n * tenantName: \"my_tenant\",\n * });\n * ```\n */\n public async getDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<Database> {\n const result = (await this.api.getDatabase(\n tenantName,\n name,\n this.api.options,\n )) as Database;\n\n return result;\n }\n\n /**\n * Deletes a database.\n *\n * @param {Object} params - The parameters for deleting a database.\n * @param {string} params.name - The name of the database.\n * @param {string} params.tenantName - The name of the tenant.\n *\n * @returns {Promise<void>} A promise that returns nothing.\n * @throws {Error} If there is an issue deleting the database.\n */\n public async deleteDatabase({\n name,\n tenantName,\n }: {\n name: string;\n tenantName: string;\n }): Promise<void> {\n await this.api.deleteDatabase(tenantName, name, this.api.options);\n return;\n }\n\n /**\n * Lists database for a specific tenant.\n *\n * @param {Object} params - The parameters for listing databases.\n * @param {number} [params.limit] - The maximum number of databases to return.\n * @param {number} [params.offset] - The number of databases to skip.\n *\n * @returns {Promise<Database[]>} A promise that resolves to a list of databases.\n * @throws {Error} If there is an issue listing the databases.\n */\n public async listDatabases({\n limit,\n offset,\n tenantName,\n }: {\n limit?: number;\n offset?: number;\n tenantName: string;\n }): Promise<Database[]> {\n const response = await this.api.listDatabases(\n tenantName,\n limit,\n offset,\n this.api.options,\n );\n\n return response as Database[];\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Amazon Bedrock Embedding Function Schema\",\n \"description\": \"Schema for the Amazon Bedrock embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"session_args\": {\n \"type\": \"object\",\n \"description\": \"The arguments to pass to the boto3 session\"\n },\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for embeddings\"\n },\n \"kwargs\": {\n \"type\": \"object\",\n \"description\": \"Additional arguments to pass to the Amazon Bedrock client\"\n }\n },\n \"required\": [\n \"session_args\",\n \"model_name\",\n \"kwargs\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Embedding Function Base Schema\",\n \"description\": \"Base schema for all embedding functions in Chroma\",\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"string\",\n \"description\": \"Schema version for the embedding function\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the embedding function\"\n },\n \"config\": {\n \"type\": \"object\",\n \"description\": \"Configuration parameters for the embedding function\"\n }\n },\n \"required\": [\n \"version\",\n \"name\",\n \"config\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Langchain Embedding Function Schema\",\n \"description\": \"Schema for the langchain embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"embedding_function\": {\n \"type\": \"string\",\n \"description\": \"Parameter embedding_function for the langchain embedding function\"\n }\n },\n \"required\": [\n \"embedding_function\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Cohere Embedding Function Schema\",\n \"description\": \"Schema for the Cohere embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Cohere API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Default Embedding Function Schema\",\n \"description\": \"Schema for the default embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {},\n \"required\": [],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google Generative AI Embedding Function Schema\",\n \"description\": \"Schema for the Google Generative AI embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"task_type\": {\n \"type\": \"string\",\n \"description\": \"The task type for the embeddings (e.g., RETRIEVAL_DOCUMENT)\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google Generative AI API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\",\n \"task_type\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google PaLM Embedding Function Schema\",\n \"description\": \"Schema for the Google PaLM embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google PaLM API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Google Vertex Embedding Function Schema\",\n \"description\": \"Schema for the Google Vertex embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"project_id\": {\n \"type\": \"string\",\n \"description\": \"The Google Cloud project ID\"\n },\n \"region\": {\n \"type\": \"string\",\n \"description\": \"The Google Cloud region\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the Google Vertex API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\",\n \"project_id\",\n \"region\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"HuggingFace Embedding Function Schema\",\n \"description\": \"Schema for the HuggingFace embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the HuggingFace API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"HuggingFace Embedding Server Schema\",\n \"description\": \"Schema for the HuggingFace embedding server configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL of the HuggingFace Embedding Server\"\n }\n },\n \"required\": [\n \"url\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Instructor Embedding Function Schema\",\n \"description\": \"Schema for the instructor embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the instructor embedding function\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Parameter device for the instructor embedding function\"\n },\n \"instruction\": {\n \"type\": \"string\",\n \"description\": \"Parameter instruction for the instructor embedding function\"\n }\n },\n \"required\": [\n \"model_name\",\n \"device\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Jina Embedding Function Schema\",\n \"description\": \"Schema for the jina embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the jina embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the jina embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Ollama Embedding Function Schema\",\n \"description\": \"Schema for the Ollama embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"url\": {\n \"type\": \"string\",\n \"description\": \"The URL of the Ollama server\"\n },\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for embeddings\"\n },\n \"timeout\": {\n \"type\": \"integer\",\n \"description\": \"Timeout in seconds for the API request\"\n }\n },\n \"required\": [\n \"url\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Onnx_mini_lm_l6_v2 Embedding Function Schema\",\n \"description\": \"Schema for the onnx_mini_lm_l6_v2 embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"preferred_providers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Parameter preferred_providers for the onnx_mini_lm_l6_v2 embedding function\"\n }\n },\n \"required\": [],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Open_clip Embedding Function Schema\",\n \"description\": \"Schema for the open_clip embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the open_clip embedding function\"\n },\n \"checkpoint\": {\n \"type\": \"string\",\n \"description\": \"Parameter checkpoint for the open_clip embedding function\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Parameter device for the open_clip embedding function\"\n }\n },\n \"required\": [\n \"model_name\",\n \"checkpoint\",\n \"device\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"OpenAI Embedding Function Schema\",\n \"description\": \"Schema for the OpenAI embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"The name of the model to use for text embeddings\"\n },\n \"organization_id\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The OpenAI organization ID if applicable\"\n },\n \"api_base\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The base path for the API\"\n },\n \"api_type\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The type of the API deployment\"\n },\n \"api_version\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"The api version for the API\"\n },\n \"deployment_id\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"description\": \"Deployment ID for Azure OpenAI\"\n },\n \"default_headers\": {\n \"type\": [\n \"object\",\n \"null\"\n ],\n \"description\": \"A mapping of default headers to be sent with each API request\"\n },\n \"dimensions\": {\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"description\": \"The number of dimensions for the embeddings\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Environment variable name that contains your API key for the OpenAI API\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Roboflow Embedding Function Schema\",\n \"description\": \"Schema for the roboflow embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"api_url\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_url for the roboflow embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the roboflow embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"api_url\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"SentenceTransformer Embedding Function Schema\",\n \"description\": \"Schema for the SentenceTransformer embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Identifier of the SentenceTransformer model\"\n },\n \"device\": {\n \"type\": \"string\",\n \"description\": \"Device used for computation\"\n },\n \"normalize_embeddings\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to normalize returned vectors\"\n },\n \"kwargs\": {\n \"type\": \"object\",\n \"description\": \"Additional arguments to pass to the SentenceTransformer model\",\n \"additionalProperties\": {\n \"type\": [\n \"string\",\n \"integer\",\n \"number\",\n \"boolean\",\n \"array\",\n \"object\"\n ]\n }\n }\n },\n \"required\": [\n \"model_name\",\n \"device\",\n \"normalize_embeddings\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Text2vec Embedding Function Schema\",\n \"description\": \"Schema for the text2vec embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the text2vec embedding function\"\n }\n },\n \"required\": [\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Transformers Embedding Function Schema\",\n \"description\": \"Schema for the Transformers embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model\": {\n \"type\": \"string\",\n \"description\": \"Identifier of the SentenceTransformer model\"\n },\n \"revision\": {\n \"type\": \"string\",\n \"description\": \"Specific model version to use (can be a branch, tag name, or commit id)\"\n },\n \"quantized\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to load the 8-bit quantized version of the model\"\n }\n },\n \"required\": [\n \"model\",\n \"revision\",\n \"quantized\"\n ],\n \"additionalProperties\": false\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Voyageai Embedding Function Schema\",\n \"description\": \"Schema for the voyageai embedding function configuration\",\n \"version\": \"1.0.0\",\n \"type\": \"object\",\n \"properties\": {\n \"model_name\": {\n \"type\": \"string\",\n \"description\": \"Parameter model_name for the voyageai embedding function\"\n },\n \"api_key_env_var\": {\n \"type\": \"string\",\n \"description\": \"Parameter api_key_env_var for the voyageai embedding function\"\n }\n },\n \"required\": [\n \"api_key_env_var\",\n \"model_name\"\n ],\n \"additionalProperties\": false\n}\n","// Import schemas directly\nimport amazonBedrockSchema from \"../../../../../../schemas/embedding_functions/amazon_bedrock.json\";\nimport baseSchema from \"../../../../../../schemas/embedding_functions/base_schema.json\";\nimport chromaLangchainSchema from \"../../../../../../schemas/embedding_functions/chroma_langchain.json\";\nimport cohereSchema from \"../../../../../../schemas/embedding_functions/cohere.json\";\nimport defaultSchema from \"../../../../../../schemas/embedding_functions/default.json\";\nimport googleGenerativeAiSchema from \"../../../../../../schemas/embedding_functions/google_generative_ai.json\";\nimport googlePalmSchema from \"../../../../../../schemas/embedding_functions/google_palm.json\";\nimport googleVertexSchema from \"../../../../../../schemas/embedding_functions/google_vertex.json\";\nimport huggingfaceSchema from \"../../../../../../schemas/embedding_functions/huggingface.json\";\nimport huggingfaceServerSchema from \"../../../../../../schemas/embedding_functions/huggingface_server.json\";\nimport instructorSchema from \"../../../../../../schemas/embedding_functions/instructor.json\";\nimport jinaSchema from \"../../../../../../schemas/embedding_functions/jina.json\";\nimport ollamaSchema from \"../../../../../../schemas/embedding_functions/ollama.json\";\nimport onnxMiniLmL6V2Schema from \"../../../../../../schemas/embedding_functions/onnx_mini_lm_l6_v2.json\";\nimport openClipSchema from \"../../../../../../schemas/embedding_functions/open_clip.json\";\nimport openaiSchema from \"../../../../../../schemas/embedding_functions/openai.json\";\nimport roboflowSchema from \"../../../../../../schemas/embedding_functions/roboflow.json\";\nimport sentenceTransformerSchema from \"../../../../../../schemas/embedding_functions/sentence_transformer.json\";\nimport text2vecSchema from \"../../../../../../schemas/embedding_functions/text2vec.json\";\nimport transformersSchema from \"../../../../../../schemas/embedding_functions/transformers.json\";\nimport voyageaiSchema from \"../../../../../../schemas/embedding_functions/voyageai.json\";\n\nimport Ajv from \"ajv\";\n\n// Define a common interface for all schemas\ninterface Schema {\n $schema: string;\n title?: string;\n description?: string;\n version?: string;\n type: string;\n properties: Record<string, any>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: any; // Allow for other properties\n}\n\nconst ajv = new Ajv({\n strict: false, // Allow unknown keywords\n allErrors: true,\n});\n\n// Map of schema names to schema objects\nconst schemaMap = {\n amazon_bedrock: amazonBedrockSchema as Schema,\n base_schema: baseSchema as Schema,\n chroma_langchain: chromaLangchainSchema as Schema,\n cohere: cohereSchema as Schema,\n default: defaultSchema as Schema,\n google_generative_ai: googleGenerativeAiSchema as Schema,\n google_palm: googlePalmSchema as Schema,\n google_vertex: googleVertexSchema as Schema,\n huggingface: huggingfaceSchema as Schema,\n huggingface_server: huggingfaceServerSchema as Schema,\n instructor: instructorSchema as Schema,\n jina: jinaSchema as Schema,\n ollama: ollamaSchema as Schema,\n onnx_mini_lm_l6_v2: onnxMiniLmL6V2Schema as Schema,\n open_clip: openClipSchema as Schema,\n openai: openaiSchema as Schema,\n roboflow: roboflowSchema as Schema,\n sentence_transformer: sentenceTransformerSchema as Schema,\n text2vec: text2vecSchema as Schema,\n transformers: transformersSchema as Schema,\n voyageai: voyageaiSchema as Schema,\n};\n\n/**\n * Load a JSON schema.\n *\n * @param schemaName Name of the schema file (without .json extension)\n * @returns The loaded schema as an object\n * @throws Error if the schema is not available\n */\nexport function loadSchema(schemaName: keyof typeof schemaMap): Schema {\n if (!schemaMap[schemaName]) {\n throw new Error(`Schema '${schemaName}' not found`);\n }\n\n return schemaMap[schemaName];\n}\n\n/**\n * Validate a configuration against a schema.\n *\n * @param config Configuration to validate\n * @param schemaName Name of the schema file (without .json extension)\n * @throws Error if the configuration does not match the schema\n */\nexport function validateConfigSchema(\n config: Record<string, any>,\n schemaName: keyof typeof schemaMap,\n): void {\n const schema = loadSchema(schemaName);\n\n const validate = ajv.compile(schema);\n const valid = validate(config);\n\n if (!valid) {\n const errors = validate.errors || [];\n const errorPaths = errors\n .map((e) => `${e.instancePath || \"/\"}: ${e.message}`)\n .join(\", \");\n throw new Error(\n `Config validation failed for schema '${schemaName}': ${errorPaths}`,\n );\n }\n}\n\n/**\n * Get the version of a schema.\n *\n * @param schemaName Name of the schema file (without .json extension)\n * @returns The schema version as a string\n * @throws Error if the schema file does not exist or is not valid JSON\n */\nexport function getSchemaVersion(schemaName: keyof typeof schemaMap): string {\n const schema = loadSchema(schemaName);\n return schema.version || \"1.0.0\";\n}\n\n/**\n * Get a list of all available schemas.\n *\n * @returns A list of schema names (without .json extension)\n */\nexport function getAvailableSchemas(): (keyof typeof schemaMap)[] {\n return Object.keys(schemaMap).filter((name) => name !== \"base_schema\") as (keyof typeof schemaMap)[];\n}\n\n/**\n * Get information about all available schemas.\n *\n * @returns A dictionary mapping schema names to information about the schema\n */\nexport function getSchemaInfo(): Record<\n string,\n { version: string; title: string; description: string }\n> {\n const schemaInfo: Record<\n string,\n { version: string; title: string; description: string }\n > = {};\n\n for (const schemaName of getAvailableSchemas()) {\n try {\n const schema = schemaMap[schemaName];\n schemaInfo[schemaName] = {\n version: schema.version || \"1.0.0\",\n title: schema.title || \"\",\n description: schema.description || \"\",\n };\n } catch (error) {\n console.error(`Failed to load schema '${schemaName}':`, error);\n }\n }\n\n return schemaInfo;\n}\n","import { validateConfigSchema } from \"../schemas/schemaUtils\";\nimport { isBrowser } from \"../utils\";\nimport { IEmbeddingFunction } from \"./IEmbeddingFunction\";\n\n// Dynamically import module\nlet TransformersApi: Promise<any>;\n\ninterface StoredConfig {\n model_name: string;\n revision: string;\n quantized: boolean;\n}\n\nexport class DefaultEmbeddingFunction implements IEmbeddingFunction {\n name = \"default\";\n\n private pipelinePromise?: Promise<any> | null;\n private transformersApi: any;\n private model: string;\n private revision: string;\n private quantized: boolean;\n private progress_callback: Function | null;\n\n /**\n * DefaultEmbeddingFunction constructor.\n * @param options The configuration options.\n * @param options.model The model to use to calculate embeddings. Defaults to 'Xenova/all-MiniLM-L6-v2', which is an ONNX port of `sentence-transformers/all-MiniLM-L6-v2`.\n * @param options.revision The specific model version to use (can be a branch, tag name, or commit id). Defaults to 'main'.\n * @param options.quantized Whether to load the 8-bit quantized version of the model. Defaults to `false`.\n * @param options.progress_callback If specified, this function will be called during model construction, to provide the user with progress updates.\n */\n constructor({\n model = \"Xenova/all-MiniLM-L6-v2\",\n revision = \"main\",\n quantized = false,\n progress_callback = null,\n }: {\n model?: string;\n revision?: string;\n quantized?: boolean;\n progress_callback?: Function | null;\n } = {}) {\n this.model = model;\n this.revision = revision;\n this.quantized = quantized;\n this.progress_callback = progress_callback;\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n // Store a promise that resolves to the pipeline\n this.pipelinePromise = new Promise(async (resolve, reject) => {\n try {\n const pipeline = this.transformersApi;\n\n const quantized = this.quantized;\n const revision = this.revision;\n const progress_callback = this.progress_callback;\n\n resolve(\n await pipeline(\"feature-extraction\", this.model, {\n quantized,\n revision,\n progress_callback,\n }),\n );\n } catch (e) {\n reject(e);\n }\n });\n\n let pipe = await this.pipelinePromise;\n let output = await pipe(texts, { pooling: \"mean\", normalize: true });\n return output.tolist();\n }\n\n getConfig(): StoredConfig {\n return {\n model_name: this.model,\n revision: this.revision,\n quantized: this.quantized,\n };\n }\n\n buildFromConfig(config: StoredConfig): DefaultEmbeddingFunction {\n return new DefaultEmbeddingFunction({\n model: config.model_name,\n revision: config.revision,\n quantized: config.quantized,\n });\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\n \"DefaultEmbeddingFunction model_name cannot be changed after initialization.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"transformers\");\n }\n\n private async loadClient() {\n if (this.transformersApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n let { pipeline } = await DefaultEmbeddingFunction.import();\n TransformersApi = pipeline;\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the chromadb-default-embed package to use the DefaultEmbeddingFunction, `npm install chromadb-default-embed`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.transformersApi = TransformersApi;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n pipeline: typeof import(\"chromadb-default-embed\");\n }> {\n try {\n // @ts-ignore\n const { pipeline } = await import(\"chromadb-default-embed\");\n return { pipeline };\n } catch (e) {\n throw new Error(\n \"Please install chromadb-default-embed as a dependency with, e.g. `npm install chromadb-default-embed`\",\n );\n }\n }\n}\n","import { version } from \"../package.json\";\nimport { AdminClient } from \"./AdminClient\";\nimport { authOptionsToAuthProvider, ClientAuthProvider } from \"./auth\";\nimport { chromaFetch } from \"./ChromaFetch\";\nimport { Collection } from \"./Collection\";\nimport { DefaultEmbeddingFunction } from \"./embeddings/DefaultEmbeddingFunction\";\nimport { Configuration, ApiApi as DefaultApi } from \"./generated\";\nimport type {\n ChromaClientParams,\n CollectionMetadata,\n CollectionParams,\n ConfigOptions,\n CreateCollectionParams,\n DeleteCollectionParams,\n GetCollectionParams,\n GetOrCreateCollectionParams,\n ListCollectionsParams,\n UserIdentity,\n} from \"./types\";\nimport { validateTenantDatabase, wrapCollection } from \"./utils\";\n\nconst DEFAULT_TENANT = \"default_tenant\";\nconst DEFAULT_DATABASE = \"default_database\";\n\nexport class ChromaClient {\n /**\n * @ignore\n */\n public api: DefaultApi & ConfigOptions;\n /**\n * @ignore\n */\n public tenant: string;\n /**\n * @ignore\n */\n public database: string;\n /**\n * @ignore\n */\n private _adminClient: AdminClient;\n /**\n * @ignore\n */\n private authProvider: ClientAuthProvider | undefined;\n /**\n * @ignore\n */\n private _initPromise: Promise<void> | undefined;\n\n /**\n * Creates a new ChromaClient instance.\n * @param {Object} params - The parameters for creating a new client\n * @param {string} [params.path] - The base path for the Chroma API.\n * @returns {ChromaClient} A new ChromaClient instance.\n *\n * @example\n * ```typescript\n * const client = new ChromaClient({\n * path: \"http://localhost:8000\"\n * });\n * ```\n */\n constructor({\n path = \"http://localhost:8000\",\n fetchOptions,\n auth,\n tenant = DEFAULT_TENANT,\n database = DEFAULT_DATABASE,\n }: ChromaClientParams = {}) {\n this.tenant = tenant;\n this.database = database;\n this.authProvider = undefined;\n\n const apiConfig: Configuration = new Configuration({\n basePath: path,\n });\n\n this.api = new DefaultApi(apiConfig, undefined, chromaFetch);\n this.api.options = fetchOptions ?? {};\n\n this.api.options.headers = {\n ...this.api.options.headers,\n \"user-agent\": `Chroma Javascript Client v${version} (https://github.com/chroma-core/chroma)`,\n };\n\n if (auth !== undefined) {\n this.authProvider = authOptionsToAuthProvider(auth);\n this.api.options.headers = {\n ...this.api.options.headers,\n ...this.authProvider.authenticate(),\n };\n }\n\n this._adminClient = new AdminClient({\n path,\n fetchOptions,\n auth,\n tenant,\n database,\n });\n }\n\n /** @ignore */\n async init(): Promise<void> {\n if (!this._initPromise) {\n if (this.authProvider !== undefined) {\n await this.getUserIdentity();\n }\n\n this._initPromise = validateTenantDatabase(\n this._adminClient,\n this.tenant,\n this.database,\n );\n }\n\n return this._initPromise;\n }\n\n /**\n * Tries to set the tenant and database for the client.\n *\n * @returns {Promise<void>} A promise that resolves when the tenant/database is resolved.\n * @throws {Error} If there is an issue resolving the tenant and database.\n *\n */\n async getUserIdentity(): Promise<void> {\n const user_identity = (await this.api.getUserIdentity(\n this.api.options,\n )) as UserIdentity;\n const user_tenant = user_identity.tenant;\n const user_databases = user_identity.databases;\n\n if (\n user_tenant !== null &&\n user_tenant !== undefined &&\n user_tenant !== \"*\" &&\n this.tenant == DEFAULT_TENANT\n ) {\n this.tenant = user_tenant;\n }\n\n if (\n user_databases !== null &&\n user_databases !== undefined &&\n user_databases.length == 1 &&\n user_databases[0] !== \"*\" &&\n this.database == DEFAULT_DATABASE\n ) {\n this.database = user_databases[0];\n }\n }\n\n /**\n * Resets the state of the object by making an API call to the reset endpoint.\n *\n * @returns {Promise<boolean>} A promise that resolves when the reset operation is complete.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n * @throws {ChromaServerError} If the server experienced an error while the state.\n *\n * @example\n * ```typescript\n * await client.reset();\n * ```\n */\n async reset(): Promise<boolean> {\n await this.init();\n return await this.api.reset(this.api.options);\n }\n\n /**\n * Returns the version of the Chroma API.\n * @returns {Promise<string>} A promise that resolves to the version of the Chroma API.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n *\n * @example\n * ```typescript\n * const version = await client.version();\n * ```\n */\n async version(): Promise<string> {\n return await this.api.version(this.api.options);\n }\n\n /**\n * Returns a heartbeat from the Chroma API.\n * @returns {Promise<number>} A promise that resolves to the heartbeat from the Chroma API.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n *\n * @example\n * ```typescript\n * const heartbeat = await client.heartbeat();\n * ```\n */\n async heartbeat(): Promise<number> {\n const response = await this.api.heartbeat(this.api.options);\n return response[\"nanosecond heartbeat\"];\n }\n\n /**\n * Creates a new collection with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new collection.\n * @param {string} params.name - The name of the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional metadata associated with the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n *\n * @returns {Promise<Collection>} A promise that resolves to the created collection.\n * @throws {ChromaConnectionError} If the client is unable to connect to the server.\n * @throws {ChromaServerError} If there is an issue creating the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.createCollection({\n * name: \"my_collection\",\n * metadata: {\n * \"description\": \"My first collection\"\n * }\n * });\n * ```\n */\n async createCollection({\n name,\n metadata,\n embeddingFunction = new DefaultEmbeddingFunction(),\n }: CreateCollectionParams): Promise<Collection> {\n await this.init();\n const newCollection = await this.api.createCollection(\n this.tenant,\n this.database,\n {\n name,\n // @ts-ignore: we need to generate the client libraries again\n configuration: null, //TODO: Configuration type in JavaScript\n metadata: metadata,\n },\n this.api.options,\n );\n\n return wrapCollection(this, {\n name: newCollection.name,\n id: newCollection.id,\n metadata: newCollection.metadata as CollectionMetadata | undefined,\n embeddingFunction,\n });\n }\n\n /**\n * Gets or creates a collection with the specified properties.\n *\n * @param {Object} params - The parameters for creating a new collection.\n * @param {string} params.name - The name of the collection.\n * @param {CollectionMetadata} [params.metadata] - Optional metadata associated with the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n *\n * @returns {Promise<Collection>} A promise that resolves to the got or created collection.\n * @throws {Error} If there is an issue getting or creating the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.getOrCreateCollection({\n * name: \"my_collection\",\n * metadata: {\n * \"description\": \"My first collection\"\n * }\n * });\n * ```\n */\n async getOrCreateCollection({\n name,\n metadata,\n embeddingFunction = new DefaultEmbeddingFunction(),\n }: GetOrCreateCollectionParams): Promise<Collection> {\n await this.init();\n const newCollection = await this.api.createCollection(\n this.tenant,\n this.database,\n {\n name,\n // @ts-ignore: we need to generate the client libraries again\n configuration: null, //TODO: Configuration type in JavaScript\n metadata: metadata,\n get_or_create: true,\n },\n this.api.options,\n );\n\n return wrapCollection(this, {\n name: newCollection.name,\n id: newCollection.id,\n metadata: newCollection.metadata as CollectionMetadata | undefined,\n embeddingFunction,\n });\n }\n\n /**\n * Get all collection names.\n *\n * @returns {Promise<string[]>} A promise that resolves to a list of collection names.\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @throws {Error} If there is an issue listing the collections.\n *\n * @example\n * ```typescript\n * const collections = await client.listCollections({\n * limit: 10,\n * offset: 0,\n * });\n * ```\n */\n async listCollections({ limit, offset }: ListCollectionsParams = {}): Promise<\n string[]\n > {\n await this.init();\n\n const response = (await this.api.listCollections(\n this.tenant,\n this.database,\n limit,\n offset,\n this.api.options,\n )) as { name: string; tenant: string; database: string }[];\n\n return response.map((collection) => collection.name);\n }\n\n /**\n * List collection names, IDs, and metadata.\n *\n * @param {PositiveInteger} [params.limit] - Optional limit on the number of items to get.\n * @param {PositiveInteger} [params.offset] - Optional offset on the items to get.\n * @throws {Error} If there is an issue listing the collections.\n * @returns {Promise<{ name: string, id: string, metadata?: CollectionMetadata }[]>} A promise that resolves to a list of collection names, IDs, and metadata.\n *\n * @example\n * ```typescript\n * const collections = await client.listCollectionsAndMetadata({\n * limit: 10,\n * offset: 0,\n * });\n */\n async listCollectionsAndMetadata({\n limit,\n offset,\n }: ListCollectionsParams = {}): Promise<\n {\n name: string;\n id: string;\n metadata?: CollectionMetadata;\n }[]\n > {\n await this.init();\n const results = (await this.api.listCollections(\n this.tenant,\n this.database,\n limit,\n offset,\n this.api.options,\n )) as { name: string; id: string; metadata?: CollectionMetadata }[];\n\n return results ?? [];\n }\n\n /**\n * Counts all collections.\n *\n * @returns {Promise<number>} A promise that resolves to the number of collections.\n * @throws {Error} If there is an issue counting the collections.\n *\n * @example\n * ```typescript\n * const collections = await client.countCollections();\n * ```\n */\n async countCollections(): Promise<number> {\n await this.init();\n const response = (await this.api.countCollections(\n this.tenant,\n this.database,\n this.api.options,\n )) as number;\n\n return response;\n }\n\n /**\n * Gets a collection with the specified name.\n * @param {Object} params - The parameters for getting a collection.\n * @param {string} params.name - The name of the collection.\n * @param {IEmbeddingFunction} [params.embeddingFunction] - Optional custom embedding function for the collection.\n * @returns {Promise<Collection>} A promise that resolves to the collection.\n * @throws {Error} If there is an issue getting the collection.\n *\n * @example\n * ```typescript\n * const collection = await client.getCollection({\n * name: \"my_collection\"\n * });\n * ```\n */\n async getCollection({\n name,\n embeddingFunction,\n }: GetCollectionParams): Promise<Collection> {\n await this.init();\n const response = await this.api.getCollection(\n this.tenant,\n this.database,\n name,\n this.api.options,\n );\n\n return wrapCollection(this, {\n id: response.id,\n name: response.name,\n metadata: response.metadata as CollectionMetadata | undefined,\n embeddingFunction:\n embeddingFunction !== undefined\n ? embeddingFunction\n : new DefaultEmbeddingFunction(),\n });\n }\n\n /**\n * Deletes a collection with the specified name.\n * @param {Object} params - The parameters for deleting a collection.\n * @param {string} params.name - The name of the collection.\n * @returns {Promise<void>} A promise that resolves when the collection is deleted.\n * @throws {Error} If there is an issue deleting the collection.\n *\n * @example\n * ```typescript\n * await client.deleteCollection({\n * name: \"my_collection\"\n * });\n * ```\n */\n async deleteCollection({ name }: DeleteCollectionParams): Promise<void> {\n await this.init();\n\n await this.api.deleteCollection(\n this.tenant,\n this.database,\n name,\n this.api.options,\n );\n }\n}\n","// create a cloudclient class that takes in an api key and an optional database\n// this should wrap ChromaClient and specify the auth scheme correctly\n\nimport { ChromaClient } from \"./ChromaClient\";\nimport { AuthOptions } from \"./auth\";\n\ninterface CloudClientParams {\n apiKey?: string;\n database?: string;\n tenant?: string;\n cloudHost?: string;\n cloudPort?: string;\n}\n\nclass CloudClient extends ChromaClient {\n constructor({\n apiKey,\n database,\n tenant,\n cloudHost,\n cloudPort,\n }: CloudClientParams) {\n // If no API key is provided, try to load it from the environment variable\n if (!apiKey) {\n apiKey = process.env.CHROMA_API_KEY;\n }\n if (!apiKey) {\n throw new Error(\"No API key provided\");\n }\n\n cloudHost = cloudHost || \"https://api.trychroma.com\";\n cloudPort = cloudPort || \"8000\";\n\n const path = `${cloudHost}:${cloudPort}`;\n\n const auth: AuthOptions = {\n provider: \"token\",\n credentials: apiKey,\n tokenHeaderType: \"X_CHROMA_TOKEN\",\n };\n\n return new ChromaClient({\n path: path,\n auth: auth,\n database,\n tenant,\n });\n\n super();\n }\n}\n\nexport { CloudClient };\n","import type {\n EmbeddingFunctionSpace,\n IEmbeddingFunction,\n} from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ninterface CohereAIAPI {\n createEmbedding: (params: {\n model: string;\n input: string[];\n isImage?: boolean;\n }) => Promise<number[][]>;\n}\n\nclass CohereAISDK56 implements CohereAIAPI {\n private cohereClient: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.cohereClient) return;\n //@ts-ignore\n const { default: cohere } = await import(\"cohere-ai\");\n // @ts-ignore\n cohere.init(this.apiKey);\n this.cohereClient = cohere;\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n }): Promise<number[][]> {\n await this.loadClient();\n return await this.cohereClient\n .embed({\n texts: params.input,\n model: params.model,\n })\n .then((response: any) => {\n return response.body.embeddings;\n });\n }\n}\n\nclass CohereAISDK7 implements CohereAIAPI {\n private cohereClient: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.cohereClient) return;\n //@ts-ignore\n const cohere = await import(\"cohere-ai\").then((cohere) => {\n return cohere;\n });\n // @ts-ignore\n this.cohereClient = new cohere.CohereClient({\n token: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n isImage?: boolean;\n }): Promise<number[][]> {\n await this.loadClient();\n if (params.isImage) {\n return await this.cohereClient\n .embed({ images: params.input, model: params.model })\n .then((response: any) => {\n return response.embeddings;\n });\n } else {\n return await this.cohereClient\n .embed({ texts: params.input, model: params.model })\n .then((response: any) => {\n return response.embeddings;\n });\n }\n }\n}\n\ninterface StoredConfig {\n model_name: string;\n api_key_env_var: string;\n}\n\nexport class CohereEmbeddingFunction implements IEmbeddingFunction {\n name = \"cohere\";\n\n private cohereAiApi?: CohereAIAPI;\n private model: string;\n private isImage: boolean;\n private apiKey: string;\n private apiKeyEnvVar: string;\n\n constructor({\n cohere_api_key,\n model = \"large\",\n cohere_api_key_env_var = \"CHROMA_COHERE_API_KEY\",\n /**\n * If true, the input texts passed to `generate` are expected to be\n * base64 encoded PNG data URIs.\n */\n isImage = false,\n }: {\n cohere_api_key?: string;\n model?: string;\n cohere_api_key_env_var: string;\n /**\n * If true, the input texts passed to `generate` are expected to be\n * base64 encoded PNG data URIs.\n */\n isImage?: boolean;\n }) {\n this.model = model;\n this.isImage = isImage;\n\n const apiKey = cohere_api_key ?? process.env[cohere_api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `Cohere API key is required. Please provide it in the constructor or set the environment variable ${cohere_api_key_env_var}.`,\n );\n }\n\n this.apiKey = apiKey;\n this.apiKeyEnvVar = cohere_api_key_env_var;\n }\n\n private async initCohereClient() {\n if (this.cohereAiApi) return;\n try {\n // @ts-ignore\n this.cohereAiApi = await import(\"cohere-ai\").then((cohere) => {\n // @ts-ignore\n if (cohere.CohereClient) {\n return new CohereAISDK7({ apiKey: this.apiKey });\n } else {\n return new CohereAISDK56({ apiKey: this.apiKey });\n }\n });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the cohere-ai package to use the CohereEmbeddingFunction, `npm install -S cohere-ai`\",\n );\n }\n throw e;\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.initCohereClient();\n // @ts-ignore\n return await this.cohereAiApi.createEmbedding({\n model: this.model,\n input: texts,\n isImage: this.isImage,\n });\n }\n\n buildFromConfig(config: StoredConfig): CohereEmbeddingFunction {\n return new CohereEmbeddingFunction({\n model: config.model_name,\n cohere_api_key_env_var: config.api_key_env_var,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n model_name: this.model,\n api_key_env_var: this.apiKeyEnvVar,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\n \"CohereEmbeddingFunction model_name cannot be changed after initialization.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"cohere\");\n }\n\n supportedSpaces(): EmbeddingFunctionSpace[] {\n if (this.model === \"embed-english-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-english-light-v3.0\") {\n return [\"cosine\", \"ip\", \"l2\"];\n }\n\n if (this.model === \"embed-english-v2.0\") {\n return [\"cosine\"];\n }\n\n if (this.model === \"embed-english-light-v2.0\") {\n return [\"cosine\"];\n }\n\n if (this.model === \"embed-multilingual-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-multilingual-light-v3.0\") {\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n if (this.model === \"embed-multilingual-v2.0\") {\n return [\"ip\"];\n }\n\n return [\"cosine\", \"l2\", \"ip\"];\n }\n\n defaultSpace(): EmbeddingFunctionSpace {\n if (this.model == \"embed-multilingual-v2.0\") {\n return \"ip\";\n }\n\n return \"cosine\";\n }\n}\n","import {\n EmbeddingFunctionSpace,\n IEmbeddingFunction,\n} from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ninterface StoredConfig {\n api_key_env_var: string;\n model_name: string;\n task_type: string;\n}\n\nlet googleGenAiApi: any;\n\nexport class GoogleGenerativeAiEmbeddingFunction implements IEmbeddingFunction {\n name = \"google_generative_ai\";\n\n private api_key: string;\n private api_key_env_var: string;\n private model: string;\n private googleGenAiApi?: any;\n private taskType: string;\n\n constructor({\n googleApiKey,\n model = \"embedding-001\",\n taskType = \"RETRIEVAL_DOCUMENT\",\n apiKeyEnvVar = \"GOOGLE_API_KEY\",\n }: {\n googleApiKey?: string;\n model?: string;\n taskType?: string;\n apiKeyEnvVar: string;\n }) {\n const apiKey = googleApiKey ?? process.env[apiKeyEnvVar];\n if (!apiKey) {\n throw new Error(\n `Google API key is required. Please provide it in the constructor or set the environment variable ${apiKeyEnvVar}.`,\n );\n }\n\n this.api_key = apiKey;\n this.api_key_env_var = apiKeyEnvVar;\n this.model = model;\n this.taskType = taskType;\n }\n\n private async loadClient() {\n if (this.googleGenAiApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n const { googleGenAi } =\n await GoogleGenerativeAiEmbeddingFunction.import();\n googleGenAiApi = googleGenAi;\n // googleGenAiApi.init(this.api_key);\n googleGenAiApi = new googleGenAiApi(this.api_key);\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the @google/generative-ai package to use the GoogleGenerativeAiEmbeddingFunction, `npm install @google/generative-ai`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.googleGenAiApi = googleGenAiApi;\n }\n\n public async generate(texts: string[]) {\n await this.loadClient();\n const model = this.googleGenAiApi.getGenerativeModel({ model: this.model });\n const response = await model.batchEmbedContents({\n requests: texts.map((t) => ({\n content: { parts: [{ text: t }] },\n taskType: this.taskType,\n })),\n });\n const embeddings = response.embeddings.map((e: any) => e.values);\n\n return embeddings;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n googleGenAi: typeof import(\"@google/generative-ai\");\n }> {\n try {\n // @ts-ignore\n const { GoogleGenerativeAI } = await import(\"@google/generative-ai\");\n const googleGenAi = GoogleGenerativeAI;\n // @ts-ignore\n return { googleGenAi };\n } catch (e) {\n throw new Error(\n \"Please install @google/generative-ai as a dependency with, e.g. `npm install @google/generative-ai`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): GoogleGenerativeAiEmbeddingFunction {\n return new GoogleGenerativeAiEmbeddingFunction({\n model: config.model_name,\n apiKeyEnvVar: config.api_key_env_var,\n taskType: config.task_type,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key_env_var,\n model_name: this.model,\n task_type: this.taskType,\n };\n }\n\n validateConfigUpdate(\n oldConfig: Record<string, any>,\n newConfig: Record<string, any>,\n ): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"The model name cannot be changed after initialization.\");\n }\n\n if (oldConfig.taskType !== newConfig.taskType) {\n throw new Error(\"The task type cannot be changed after initialization.\");\n }\n }\n\n validateConfig(config: Record<string, any>): void {\n validateConfigSchema(config, \"google_generative_ai\");\n }\n}\n","import { validateConfigSchema } from \"../schemas/schemaUtils\";\nimport { IEmbeddingFunction } from \"./IEmbeddingFunction\";\n\ntype StoredConfig = {\n url: string;\n};\n\nexport class HuggingFaceEmbeddingServerFunction implements IEmbeddingFunction {\n name = \"huggingface_server\";\n\n private url: string;\n\n constructor({ url }: { url: string }) {\n // we used to construct the client here, but we need to async import the types\n // for the openai npm package, and the constructor can not be async\n this.url = url;\n }\n\n public async generate(texts: string[]) {\n const response = await fetch(this.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ inputs: texts }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to generate embeddings: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data;\n }\n\n buildFromConfig(config: StoredConfig): HuggingFaceEmbeddingServerFunction {\n return new HuggingFaceEmbeddingServerFunction(config);\n }\n\n getConfig(): StoredConfig {\n return {\n url: this.url,\n };\n }\n\n validateConfigUpdate(\n oldConfig: Record<string, any>,\n newConfig: Record<string, any>,\n ): void {\n if (oldConfig.url !== newConfig.url) {\n throw new Error(\"Changing the URL is not allowed.\");\n }\n }\n\n validateConfig(config: Record<string, any>): void {\n validateConfigSchema(config, \"huggingface_server\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n};\n\nexport class JinaEmbeddingFunction implements IEmbeddingFunction {\n name = \"jina\";\n\n private api_key_env_var: string;\n private model_name: string;\n private api_url: string;\n private headers: { [key: string]: string };\n\n constructor({\n jinaai_api_key,\n model_name = \"jina-embeddings-v2-base-en\",\n api_key_env_var = \"JINAAI_API_KEY\",\n }: {\n jinaai_api_key?: string;\n model_name?: string;\n api_key_env_var: string;\n }) {\n const apiKey = jinaai_api_key ?? process.env[api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `Jina AI API key is required. Please provide it in the constructor or set the environment variable ${api_key_env_var}.`,\n );\n }\n\n this.model_name = model_name;\n this.api_key_env_var = api_key_env_var;\n\n this.api_url = \"https://api.jina.ai/v1/embeddings\";\n this.headers = {\n Authorization: `Bearer ${jinaai_api_key}`,\n \"Accept-Encoding\": \"identity\",\n \"Content-Type\": \"application/json\",\n };\n }\n\n public async generate(texts: string[]) {\n try {\n const response = await fetch(this.api_url, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify({\n input: texts,\n model: this.model_name,\n }),\n });\n\n const data = (await response.json()) as { data: any[]; detail: string };\n if (!data || !data.data) {\n throw new Error(data.detail);\n }\n\n const embeddings: any[] = data.data;\n const sortedEmbeddings = embeddings.sort((a, b) => a.index - b.index);\n\n return sortedEmbeddings.map((result) => result.embedding);\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Error calling Jina AI API: ${error.message}`);\n } else {\n throw new Error(`Error calling Jina AI API: ${error}`);\n }\n }\n }\n\n buildFromConfig(config: StoredConfig): JinaEmbeddingFunction {\n return new JinaEmbeddingFunction({\n model_name: config.model_name,\n api_key_env_var: config.api_key_env_var,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key_env_var,\n model_name: this.model_name,\n };\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"jina\");\n }\n}\n","import type { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\ntype StoredConfig = {\n url: string;\n model_name: string;\n};\n\nexport class OllamaEmbeddingFunction implements IEmbeddingFunction {\n name = \"ollama\";\n\n private readonly url: string;\n private readonly model: string;\n private ollamaClient?: any;\n\n constructor({\n url = \"http://localhost:11434\",\n model = \"chroma/all-minilm-l6-v2-f32\",\n }: { url?: string; model?: string } = {}) {\n // we used to construct the client here, but we need to async import the types\n // for the openai npm package, and the constructor can not be async\n if (url && url.endsWith(\"/api/embeddings\")) {\n this.url = url.slice(0, -\"/api/embeddings\".length);\n } else {\n this.url = url;\n }\n this.model = model;\n }\n\n private async initClient() {\n if (this.ollamaClient) return;\n try {\n // @ts-ignore\n const { ollama } = await OllamaEmbeddingFunction.import();\n this.ollamaClient = new ollama.Ollama({ host: this.url });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the ollama package to use the OllamaEmbeddingFunction, `npm install -S ollama`\",\n );\n }\n throw e;\n }\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n ollama: typeof import(\"ollama\");\n }> {\n try {\n // @ts-ignore\n const { ollama } = await import(\"ollama\").then((m) => ({ ollama: m }));\n // @ts-ignore\n return { ollama };\n } catch (e) {\n throw new Error(\n \"Please install Ollama as a dependency with, e.g. `npm install ollama`\",\n );\n }\n }\n\n public async generate(texts: string[]) {\n await this.initClient();\n return await this.ollamaClient!.embed({\n model: this.model,\n input: texts,\n }).then((response: any) => {\n return response.embeddings;\n });\n }\n\n buildFromConfig(config: StoredConfig): OllamaEmbeddingFunction {\n return new OllamaEmbeddingFunction({\n url: config.url,\n model: config.model_name,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n url: this.url,\n model_name: this.model,\n };\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"ollama\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\nlet OpenAIApi: any;\nlet openAiVersion = null;\nlet openAiMajorVersion = null;\n\ninterface OpenAIAPI {\n createEmbedding: (params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }) => Promise<number[][]>;\n}\n\nclass OpenAIAPIv3 implements OpenAIAPI {\n private readonly configuration: any;\n private openai: any;\n\n constructor(configuration: { organization: string; apiKey: string }) {\n this.configuration = new OpenAIApi.Configuration({\n organization: configuration.organization,\n apiKey: configuration.apiKey,\n });\n this.openai = new OpenAIApi.OpenAIApi(this.configuration);\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }): Promise<number[][]> {\n const embeddings: number[][] = [];\n const response = await this.openai\n .createEmbedding({\n model: params.model,\n input: params.input,\n })\n .catch((error: any) => {\n throw error;\n });\n // @ts-ignore\n const data = response.data[\"data\"];\n for (let i = 0; i < data.length; i += 1) {\n embeddings.push(data[i][\"embedding\"]);\n }\n return embeddings;\n }\n}\n\nclass OpenAIAPIv4 implements OpenAIAPI {\n private readonly apiKey: any;\n private openai: any;\n\n constructor(apiKey: any) {\n this.apiKey = apiKey;\n this.openai = new OpenAIApi({\n apiKey: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n user?: string;\n dimensions?: number;\n }): Promise<number[][]> {\n const embeddings: number[][] = [];\n const response = await this.openai.embeddings.create(params);\n const data = response[\"data\"];\n for (let i = 0; i < data.length; i += 1) {\n embeddings.push(data[i][\"embedding\"]);\n }\n return embeddings;\n }\n}\n\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n organization_id: string;\n dimensions: number;\n};\n\nexport class OpenAIEmbeddingFunction implements IEmbeddingFunction {\n name = \"openai\";\n\n private api_key: string;\n private org_id: string;\n private model: string;\n private openaiApi?: OpenAIAPI;\n private dimensions?: number;\n\n constructor({\n openai_api_key,\n openai_model = \"text-embedding-ada-002\",\n openai_organization_id,\n openai_embedding_dimensions,\n openai_api_key_env_var = \"OPENAI_API_KEY\",\n }: {\n openai_api_key?: string;\n openai_model?: string;\n openai_organization_id?: string;\n openai_embedding_dimensions?: number;\n openai_api_key_env_var?: string;\n }) {\n const apiKey = openai_api_key ?? process.env[openai_api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `OpenAI API key is required. Please provide it in the constructor or set the environment variable ${openai_api_key_env_var}.`,\n );\n }\n this.api_key = apiKey;\n\n this.org_id = openai_organization_id ?? \"\";\n this.model = openai_model;\n this.dimensions = openai_embedding_dimensions ?? 1536;\n }\n\n private async loadClient() {\n // cache the client\n if (this.openaiApi) return;\n\n try {\n const { openai, version } = await OpenAIEmbeddingFunction.import();\n OpenAIApi = openai;\n let versionVar: string = version;\n openAiVersion = versionVar.replace(/[^0-9.]/g, \"\");\n openAiMajorVersion = parseInt(openAiVersion.split(\".\")[0]);\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the openai package to use the OpenAIEmbeddingFunction, e.g. `npm install openai`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n\n if (openAiMajorVersion > 3) {\n this.openaiApi = new OpenAIAPIv4(this.api_key);\n } else {\n this.openaiApi = new OpenAIAPIv3({\n organization: this.org_id,\n apiKey: this.api_key,\n });\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n return await this.openaiApi!.createEmbedding({\n model: this.model,\n input: texts,\n dimensions: this.dimensions,\n }).catch((error: any) => {\n throw error;\n });\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n openai: typeof import(\"openai\");\n version: string;\n }> {\n try {\n // @ts-ignore\n const { default: openai } = await import(\"openai\");\n // @ts-ignore\n const { VERSION } = await import(\"openai/version\");\n // @ts-ignore\n return { openai, version: VERSION };\n } catch (e) {\n throw new Error(\n \"Please install the openai package to use the OpenAIEmbeddingFunction, e.g. `npm install openai`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): OpenAIEmbeddingFunction {\n return new OpenAIEmbeddingFunction({\n openai_api_key: config.api_key_env_var,\n openai_model: config.model_name,\n openai_organization_id: config.organization_id,\n openai_embedding_dimensions: config.dimensions,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.api_key,\n model_name: this.model,\n organization_id: this.org_id,\n dimensions: this.dimensions ?? 1536,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"Cannot change model name.\");\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"openai\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\n// Dynamically import module\nlet TransformersApi: Promise<any>;\n\ntype StoredConfig = {\n model: string;\n revision: string;\n quantized: boolean;\n};\n\nexport class TransformersEmbeddingFunction implements IEmbeddingFunction {\n name = \"transformers\";\n\n private pipelinePromise?: Promise<any> | null;\n private transformersApi: any;\n private model: string;\n private revision: string;\n private quantized: boolean;\n private progress_callback: Function | null;\n\n /**\n * TransformersEmbeddingFunction constructor.\n * @param options The configuration options.\n * @param options.model The model to use to calculate embeddings. Defaults to 'Xenova/all-MiniLM-L6-v2', which is an ONNX port of `sentence-transformers/all-MiniLM-L6-v2`.\n * @param options.revision The specific model version to use (can be a branch, tag name, or commit id). Defaults to 'main'.\n * @param options.quantized Whether to load the 8-bit quantized version of the model. Defaults to `false`.\n * @param options.progress_callback If specified, this function will be called during model construction, to provide the user with progress updates.\n */\n constructor({\n model = \"Xenova/all-MiniLM-L6-v2\",\n revision = \"main\",\n quantized = false,\n progress_callback = null,\n }: {\n model?: string;\n revision?: string;\n quantized?: boolean;\n progress_callback?: Function | null;\n } = {}) {\n this.model = model;\n this.revision = revision;\n this.quantized = quantized;\n this.progress_callback = progress_callback;\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.loadClient();\n\n // Store a promise that resolves to the pipeline\n this.pipelinePromise = new Promise(async (resolve, reject) => {\n try {\n const pipeline = this.transformersApi;\n\n const quantized = this.quantized;\n const revision = this.revision;\n const progress_callback = this.progress_callback;\n\n resolve(\n await pipeline(\"feature-extraction\", this.model, {\n quantized,\n revision,\n progress_callback,\n }),\n );\n } catch (e) {\n reject(e);\n }\n });\n\n let pipe = await this.pipelinePromise;\n let output = await pipe(texts, { pooling: \"mean\", normalize: true });\n return output.tolist();\n }\n\n private async loadClient() {\n if (this.transformersApi) return;\n try {\n // eslint-disable-next-line global-require,import/no-extraneous-dependencies\n let { pipeline } = await TransformersEmbeddingFunction.import();\n TransformersApi = pipeline;\n } catch (_a) {\n // @ts-ignore\n if (_a.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the @xenova/transformers package to use the TransformersEmbeddingFunction, `npm install @xenova/transformers`\",\n );\n }\n throw _a; // Re-throw other errors\n }\n this.transformersApi = TransformersApi;\n }\n\n /** @ignore */\n static async import(): Promise<{\n // @ts-ignore\n pipeline: typeof import(\"@xenova/transformers\");\n }> {\n try {\n // @ts-ignore\n const { pipeline } = await import(\"@xenova/transformers\");\n return { pipeline };\n } catch (e) {\n throw new Error(\n \"Please install @xenova/transformers as a dependency with, e.g. `npm install @xenova/transformers`\",\n );\n }\n }\n\n buildFromConfig(config: StoredConfig): TransformersEmbeddingFunction {\n return new TransformersEmbeddingFunction({\n model: config.model,\n revision: config.revision,\n quantized: config.quantized,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n model: this.model,\n revision: this.revision,\n quantized: this.quantized,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model !== newConfig.model) {\n throw new Error(\"Cannot change the model of the embedding function.\");\n }\n if (oldConfig.revision !== newConfig.revision) {\n throw new Error(\"Cannot change the revision of the embedding function.\");\n }\n if (oldConfig.quantized !== newConfig.quantized) {\n throw new Error(\n \"Cannot change the quantization of the embedding function.\",\n );\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"transformers\");\n }\n}\n","import { IEmbeddingFunction } from \"./IEmbeddingFunction\";\nimport { validateConfigSchema } from \"../schemas/schemaUtils\";\nclass VoyageAIAPI {\n private client: any;\n private apiKey: string;\n\n constructor(configuration: { apiKey: string }) {\n this.apiKey = configuration.apiKey;\n }\n\n private async loadClient() {\n if (this.client) return;\n //@ts-ignore\n const voyageai = await import(\"voyageai\").then((voyageai) => {\n return voyageai;\n });\n // @ts-ignore\n this.client = new voyageai.VoyageAIClient({\n apiKey: this.apiKey,\n });\n }\n\n public async createEmbedding(params: {\n model: string;\n input: string[];\n }): Promise<number[][]> {\n await this.loadClient();\n return await this.client\n .embed({ input: params.input, model: params.model })\n .then((response: any) => {\n return response.data.map(\n (item: { embedding: number[] }) => item.embedding,\n );\n });\n }\n}\n\ntype StoredConfig = {\n api_key_env_var: string;\n model_name: string;\n};\n\nexport class VoyageAIEmbeddingFunction implements IEmbeddingFunction {\n name = \"voyageai\";\n\n private voyageAiApi?: VoyageAIAPI;\n private model: string;\n private apiKey: string;\n private apiKeyEnvVar: string;\n constructor({\n api_key,\n model,\n api_key_env_var = \"VOYAGE_API_KEY\",\n }: {\n api_key?: string;\n model: string;\n api_key_env_var: string;\n }) {\n const apiKey = api_key ?? process.env[api_key_env_var];\n if (!apiKey) {\n throw new Error(\n `VoyageAI API key is required. Please provide it in the constructor or set the environment variable ${api_key_env_var}.`,\n );\n }\n this.apiKey = apiKey;\n this.model = model;\n this.apiKeyEnvVar = api_key_env_var;\n }\n\n private async initClient() {\n if (this.voyageAiApi) return;\n try {\n // @ts-ignore\n this.voyageAiApi = await import(\"voyageai\").then((voyageai) => {\n // @ts-ignore\n return new VoyageAIAPI({ apiKey: this.apiKey });\n });\n } catch (e) {\n // @ts-ignore\n if (e.code === \"MODULE_NOT_FOUND\") {\n throw new Error(\n \"Please install the voyageai package to use the VoyageAIEmbeddingFunction, `npm install -S voyageai`\",\n );\n }\n throw e;\n }\n }\n\n public async generate(texts: string[]): Promise<number[][]> {\n await this.initClient();\n // @ts-ignore\n return await this.voyageAiApi.createEmbedding({\n model: this.model,\n input: texts,\n });\n }\n\n buildFromConfig(config: StoredConfig): VoyageAIEmbeddingFunction {\n return new VoyageAIEmbeddingFunction({\n api_key_env_var: config.api_key_env_var,\n model: config.model_name,\n });\n }\n\n getConfig(): StoredConfig {\n return {\n api_key_env_var: this.apiKeyEnvVar,\n model_name: this.model,\n };\n }\n\n validateConfigUpdate(oldConfig: StoredConfig, newConfig: StoredConfig): void {\n if (oldConfig.model_name !== newConfig.model_name) {\n throw new Error(\"Cannot change the model of the embedding function.\");\n }\n }\n\n validateConfig(config: StoredConfig): void {\n validateConfigSchema(config, \"voyageai\");\n }\n}\n","import { AuthOptions } from \"./auth\";\nimport { IEmbeddingFunction } from \"./embeddings/IEmbeddingFunction\";\n\nexport enum IncludeEnum {\n Documents = \"documents\",\n Embeddings = \"embeddings\",\n Metadatas = \"metadatas\",\n Distances = \"distances\",\n Uris = \"uris\",\n}\n\nexport type Embedding = number[];\nexport type Embeddings = Embedding[];\n\nexport type Metadata = Record<string, string | number | boolean>;\nexport type Metadatas = Metadata[];\n\nexport type Document = string;\nexport type Documents = Document[];\n\nexport type ID = string;\nexport type IDs = ID[];\n\nexport type PositiveInteger = number;\n\ntype LiteralValue = string | number | boolean;\ntype ListLiteralValue = LiteralValue[];\ntype LiteralNumber = number;\ntype LogicalOperator = \"$and\" | \"$or\";\ntype InclusionOperator = \"$in\" | \"$nin\";\ntype WhereOperator = \"$gt\" | \"$gte\" | \"$lt\" | \"$lte\" | \"$ne\" | \"$eq\";\n\ntype OperatorExpression = {\n [key in WhereOperator | InclusionOperator | LogicalOperator]?:\n | LiteralValue\n | ListLiteralValue;\n};\n\ntype BaseWhere = {\n [key: string]: LiteralValue | OperatorExpression;\n};\n\ntype LogicalWhere = {\n [key in LogicalOperator]?: Where[];\n};\n\nexport type Where = BaseWhere | LogicalWhere;\n\ntype WhereDocumentOperator = \"$contains\" | \"$not_contains\" | LogicalOperator;\n\nexport type WhereDocument = {\n [key in WhereDocumentOperator]?:\n | LiteralValue\n | LiteralNumber\n | WhereDocument[];\n};\n\nexport type MultiGetResponse = {\n ids: IDs;\n embeddings: Embeddings | null;\n documents: (Document | null)[];\n metadatas: (Metadata | null)[];\n included: IncludeEnum[];\n};\n\nexport type GetResponse = MultiGetResponse;\n\nexport type SingleQueryResponse = {\n ids: IDs;\n embeddings: Embeddings | null;\n documents: (Document | null)[];\n metadatas: (Metadata | null)[];\n distances: number[] | null;\n included: IncludeEnum[];\n};\n\nexport type MultiQueryResponse = {\n ids: IDs[];\n embeddings: Embeddings[] | null;\n documents: (Document | null)[][];\n metadatas: (Metadata | null)[][];\n distances: number[][] | null;\n included: IncludeEnum[];\n};\n\nexport type QueryResponse = SingleQueryResponse | MultiQueryResponse;\n\nexport type AddResponse = {};\n\nexport interface CollectionParams {\n name: string;\n id: string;\n metadata: CollectionMetadata | undefined;\n embeddingFunction: IEmbeddingFunction;\n}\n\nexport type CollectionMetadata = Record<string, boolean | number | string>;\n\n// RequestInit can be used to set Authorization headers and more\n// see all options here: https://www.jsdocs.io/package/@types/node-fetch#RequestInit\nexport type ConfigOptions = {\n options?: RequestInit;\n};\n\nexport type BaseGetParams = {\n ids?: ID | IDs;\n where?: Where;\n limit?: PositiveInteger;\n offset?: PositiveInteger;\n include?: IncludeEnum[];\n whereDocument?: WhereDocument;\n};\n\nexport type SingleGetParams = BaseGetParams & {\n ids: ID;\n};\n\nexport type MultiGetParams = BaseGetParams & {\n ids?: IDs;\n};\n\nexport type GetParams = SingleGetParams | MultiGetParams;\n\nexport type ListCollectionsParams = {\n limit?: PositiveInteger;\n offset?: PositiveInteger;\n};\n\nexport type ChromaClientParams = {\n path?: string;\n fetchOptions?: RequestInit;\n auth?: AuthOptions;\n tenant?: string;\n database?: string;\n};\n\nexport type CreateCollectionParams = {\n name: string;\n metadata?: CollectionMetadata;\n embeddingFunction?: IEmbeddingFunction;\n};\n\nexport type GetOrCreateCollectionParams = CreateCollectionParams;\n\nexport type GetCollectionParams = {\n name: string;\n embeddingFunction: IEmbeddingFunction;\n};\n\nexport type DeleteCollectionParams = {\n name: string;\n};\n\nexport type BaseRecordOperationParams = {\n ids: ID | IDs;\n embeddings?: Embedding | Embeddings;\n metadatas?: Metadata | Metadatas;\n documents?: Document | Documents;\n};\n\nexport type SingleRecordOperationParams = BaseRecordOperationParams & {\n ids: ID;\n embeddings?: Embedding;\n metadatas?: Metadata;\n documents?: Document;\n};\n\ntype SingleEmbeddingRecordOperationParams = SingleRecordOperationParams & {\n embeddings: Embedding;\n};\n\ntype SingleContentRecordOperationParams = SingleRecordOperationParams & {\n documents: Document;\n};\n\nexport type SingleAddRecordOperationParams =\n | SingleEmbeddingRecordOperationParams\n | SingleContentRecordOperationParams;\n\nexport type MultiRecordOperationParams = BaseRecordOperationParams & {\n ids: IDs;\n embeddings?: Embeddings;\n metadatas?: Metadatas;\n documents?: Documents;\n};\n\ntype MultiEmbeddingRecordOperationParams = MultiRecordOperationParams & {\n embeddings: Embeddings;\n};\n\ntype MultiContentRecordOperationParams = MultiRecordOperationParams & {\n documents: Documents;\n};\n\nexport type MultiAddRecordsOperationParams =\n | MultiEmbeddingRecordOperationParams\n | MultiContentRecordOperationParams;\n\nexport type AddRecordsParams =\n | SingleAddRecordOperationParams\n | MultiAddRecordsOperationParams;\n\nexport type UpsertRecordsParams = AddRecordsParams;\nexport type UpdateRecordsParams =\n | MultiRecordOperationParams\n | SingleRecordOperationParams;\n\nexport type ModifyCollectionParams = {\n name?: string;\n metadata?: CollectionMetadata;\n};\n\nexport type BaseQueryParams = {\n nResults?: PositiveInteger;\n where?: Where;\n queryTexts?: string | string[];\n queryEmbeddings?: Embedding | Embeddings;\n whereDocument?: WhereDocument; // {\"$contains\":\"search_string\"}\n include?: IncludeEnum[]; // [\"metadata\", \"document\"]\n};\n\nexport type SingleTextQueryParams = BaseQueryParams & {\n queryTexts: string;\n queryEmbeddings?: never;\n};\n\nexport type SingleEmbeddingQueryParams = BaseQueryParams & {\n queryTexts?: never;\n queryEmbeddings: Embedding;\n};\n\nexport type MultiTextQueryParams = BaseQueryParams & {\n queryTexts: string[];\n queryEmbeddings?: never;\n};\n\nexport type MultiEmbeddingQueryParams = BaseQueryParams & {\n queryTexts?: never;\n queryEmbeddings: Embeddings;\n};\n\nexport type QueryRecordsParams =\n | SingleTextQueryParams\n | SingleEmbeddingQueryParams\n | MultiTextQueryParams\n | MultiEmbeddingQueryParams;\n\nexport type PeekParams = { limit?: PositiveInteger };\n\nexport type DeleteParams = {\n ids?: ID | IDs;\n where?: Where;\n whereDocument?: WhereDocument;\n};\n\nexport type UserIdentity = {\n tenant: string;\n databases: string[];\n};\n"],"mappings":";;;;;;;;;;;AAAA,QAAsB,cAAtB,MAAiC;;AAAjC,YAAA,cAAA;AAOa,YAAA,aAAa;AAE1B,QAAa,OAAb,cAA0B,YAAW;MAEnC,YAAY,GAAS;AACnB,cAAK;AACL,YAAI,CAAC,QAAA,WAAW,KAAK,CAAC;AAAG,gBAAM,IAAI,MAAM,0CAA0C;AACnF,aAAK,MAAM;MACb;MAEA,WAAQ;AACN,eAAO,KAAK;MACd;MAEA,WAAQ;AACN,eAAO;MACT;MAEA,IAAI,QAAK;AACP,eAAO,EAAC,CAAC,KAAK,GAAG,GAAG,EAAC;MACvB;;AAlBF,YAAA,OAAA;AAqBA,QAAa,QAAb,cAA2B,YAAW;MAKpC,YAAY,MAAkC;AAC5C,cAAK;AACL,aAAK,SAAS,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI;MACpD;MAEA,WAAQ;AACN,eAAO,KAAK;MACd;MAEA,WAAQ;AACN,YAAI,KAAK,OAAO,SAAS;AAAG,iBAAO;AACnC,cAAM,OAAO,KAAK,OAAO,CAAC;AAC1B,eAAO,SAAS,MAAM,SAAS;MACjC;MAEA,IAAI,MAAG;;AACL,gBAAO,KAAC,KAAK,UAAI,QAAA,OAAA,SAAA,KAAT,KAAK,OAAS,KAAK,OAAO,OAAO,CAAC,GAAW,MAAgB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;MACrF;MAEA,IAAI,QAAK;;AACP,gBAAO,KAAC,KAAK,YAAM,QAAA,OAAA,SAAA,KAAX,KAAK,SAAW,KAAK,OAAO,OAAO,CAAC,OAAkB,MAAK;AACjE,cAAI,aAAa;AAAM,kBAAM,EAAE,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK;AAC5D,iBAAO;QACT,GAAG,CAAA,CAAE;MACP;;AA7BF,YAAA,QAAA;AAwCa,YAAA,MAAM,IAAI,MAAM,EAAE;AAI/B,aAAgB,EAAE,SAA+B,MAAe;AAC9D,YAAM,OAAmB,CAAC,KAAK,CAAC,CAAC;AACjC,UAAI,IAAI;AACR,aAAO,IAAI,KAAK,QAAQ;AACtB,mBAAW,MAAM,KAAK,CAAC,CAAC;AACxB,aAAK,KAAK,KAAK,EAAE,CAAC,CAAC;MACrB;AACA,aAAO,IAAI,MAAM,IAAI;IACvB;AARA,YAAA,IAAA;AAUA,QAAM,OAAO,IAAI,MAAM,GAAG;AAE1B,aAAgB,IAAI,SAA+B,MAA4B;AAC7E,YAAM,OAAmB,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC;AAChD,UAAI,IAAI;AACR,aAAO,IAAI,KAAK,QAAQ;AACtB,aAAK,KAAK,IAAI;AACd,mBAAW,MAAM,KAAK,CAAC,CAAC;AACxB,aAAK,KAAK,MAAM,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC;MAC1C;AACA,eAAS,IAAI;AACb,aAAO,IAAI,MAAM,IAAI;IACvB;AAVA,YAAA,MAAA;AAYA,aAAgB,WAAW,MAAkB,KAAuB;AAClE,UAAI,eAAe;AAAO,aAAK,KAAK,GAAG,IAAI,MAAM;eACxC,eAAe;AAAM,aAAK,KAAK,GAAG;;AACtC,aAAK,KAAK,YAAY,GAAG,CAAC;IACjC;AAJA,YAAA,aAAA;AAMA,aAAS,SAAS,MAAgB;AAChC,UAAI,IAAI;AACR,aAAO,IAAI,KAAK,SAAS,GAAG;AAC1B,YAAI,KAAK,CAAC,MAAM,MAAM;AACpB,gBAAM,MAAM,eAAe,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACnD,cAAI,QAAQ,QAAW;AACrB,iBAAK,OAAO,IAAI,GAAG,GAAG,GAAG;AACzB;UACF;AACA,eAAK,GAAG,IAAI;QACd;AACA;MACF;IACF;AAEA,aAAS,eAAe,GAAa,GAAW;AAC9C,UAAI,MAAM;AAAM,eAAO;AACvB,UAAI,MAAM;AAAM,eAAO;AACvB,UAAI,OAAO,KAAK,UAAU;AACxB,YAAI,aAAa,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM;AAAK;AAClD,YAAI,OAAO,KAAK;AAAU,iBAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC;AACtD,YAAI,EAAE,CAAC,MAAM;AAAK,iBAAO,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACnD;MACF;AACA,UAAI,OAAO,KAAK,YAAY,EAAE,CAAC,MAAM,OAAO,EAAE,aAAa;AAAO,eAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3F;IACF;AAEA,aAAgB,UAAU,IAAU,IAAQ;AAC1C,aAAO,GAAG,SAAQ,IAAK,KAAK,GAAG,SAAQ,IAAK,KAAK,MAAM,EAAE,GAAG,EAAE;IAChE;AAFA,YAAA,YAAA;AAKA,aAAS,YAAY,GAA+C;AAClE,aAAO,OAAO,KAAK,YAAY,OAAO,KAAK,aAAa,MAAM,OAC1D,IACA,cAAc,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACtD;AAEA,aAAgB,UAAU,GAAU;AAClC,aAAO,IAAI,MAAM,cAAc,CAAC,CAAC;IACnC;AAFA,YAAA,YAAA;AAIA,aAAgB,cAAc,GAAU;AACtC,aAAO,KAAK,UAAU,CAAC,EACpB,QAAQ,WAAW,SAAS,EAC5B,QAAQ,WAAW,SAAS;IACjC;AAJA,YAAA,gBAAA;AAMA,aAAgB,YAAY,KAA2B;AACrD,aAAO,OAAO,OAAO,YAAY,QAAA,WAAW,KAAK,GAAG,IAAI,IAAI,MAAM,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;IACzF;AAFA,YAAA,cAAA;AAKA,aAAgB,iBAAiB,KAA2B;AAC1D,UAAI,OAAO,OAAO,YAAY,QAAA,WAAW,KAAK,GAAG,GAAG;AAClD,eAAO,IAAI,MAAM,GAAG,GAAG,EAAE;MAC3B;AACA,YAAM,IAAI,MAAM,iCAAiC,GAAG,iCAAiC;IACvF;AALA,YAAA,mBAAA;AAOA,aAAgB,WAAW,IAAU;AACnC,aAAO,IAAI,MAAM,GAAG,SAAQ,CAAE;IAChC;AAFA,YAAA,aAAA;;;;;;;;;;ACrKA,QAAA,SAAA;AAeA,QAAM,aAAN,cAAyB,MAAK;MAE5B,YAAY,MAAoB;AAC9B,cAAM,uBAAuB,IAAI,cAAc;AAC/C,aAAK,QAAQ,KAAK;MACpB;;AAwBF,QAAY;AAAZ,KAAA,SAAYA,iBAAc;AACxB,MAAAA,gBAAAA,gBAAA,SAAA,IAAA,CAAA,IAAA;AACA,MAAAA,gBAAAA,gBAAA,WAAA,IAAA,CAAA,IAAA;IACF,GAHY,mBAAc,QAAA,iBAAd,iBAAc,CAAA,EAAA;AASb,YAAA,WAAW;MACtB,OAAO,IAAI,OAAA,KAAK,OAAO;MACvB,KAAK,IAAI,OAAA,KAAK,KAAK;MACnB,KAAK,IAAI,OAAA,KAAK,KAAK;;AAGrB,QAAa,QAAb,MAAkB;MAKhB,YAAY,EAAC,UAAU,OAAM,IAAkB,CAAA,GAAE;AAJ9B,aAAA,SAA2C,CAAA;AAK5D,aAAK,YAAY;AACjB,aAAK,UAAU;MACjB;MAEA,OAAO,cAA2B;AAChC,eAAO,wBAAwB,OAAA,OAAO,eAAe,KAAK,KAAK,YAAY;MAC7E;MAEA,KAAK,QAAc;AACjB,eAAO,IAAI,OAAA,KAAK,KAAK,SAAS,MAAM,CAAC;MACvC;MAEU,SAAS,QAAc;AAC/B,cAAM,KAAK,KAAK,OAAO,MAAM,KAAK,KAAK,WAAW,MAAM;AACxD,eAAO,GAAG,MAAM,GAAG,GAAG,OAAO;MAC/B;MAEQ,WAAW,QAAc;;AAC/B,cAAI,MAAA,KAAA,KAAK,aAAO,QAAA,OAAA,SAAA,SAAA,GAAE,eAAS,QAAA,OAAA,SAAA,SAAA,GAAE,IAAI,MAAM,MAAM,KAAK,aAAa,CAAC,KAAK,UAAU,IAAI,MAAM,GAAI;AAC3F,gBAAM,IAAI,MAAM,oBAAoB,MAAM,gCAAgC;QAC5E;AACA,eAAQ,KAAK,OAAO,MAAM,IAAI,EAAC,QAAQ,OAAO,EAAC;MACjD;;AA5BF,YAAA,QAAA;AAoCA,QAAa,iBAAb,cAAoC,OAAA,KAAI;MAKtC,YAAY,QAAgB,SAAe;AACzC,cAAM,OAAO;AACb,aAAK,SAAS;MAChB;MAEA,SAAS,OAAkB,EAAC,UAAU,UAAS,GAAY;AACzD,aAAK,QAAQ;AACb,aAAK,aAAY,GAAA,OAAA,MAAK,IAAI,OAAA,KAAK,QAAQ,CAAC,IAAI,SAAS;MACvD;;AAbF,YAAA,iBAAA;AAoBA,QAAM,QAAO,GAAA,OAAA;AAEb,QAAa,aAAb,cAAgC,MAAK;MAKnC,YAAY,MAAuB;AACjC,cAAM,IAAI;AALO,aAAA,UAAuB,CAAA;AAMxC,aAAK,SAAS,KAAK;AACnB,aAAK,OAAO,EAAC,GAAG,MAAM,IAAI,KAAK,QAAQ,OAAO,OAAA,IAAG;MACnD;MAEA,MAAG;AACD,eAAO,KAAK;MACd;MAEA,KAAK,QAAc;AACjB,eAAO,IAAI,eAAe,QAAQ,KAAK,SAAS,MAAM,CAAC;MACzD;MAEA,MAAM,cAAuC,OAAgB;;AAC3D,YAAI,MAAM,QAAQ;AAAW,gBAAM,IAAI,MAAM,sCAAsC;AACnF,cAAM,OAAO,KAAK,OAAO,YAAY;AACrC,cAAM,EAAC,OAAM,IAAI;AACjB,cAAM,YAAW,KAAA,MAAM,SAAG,QAAA,OAAA,SAAA,KAAI,MAAM;AACpC,YAAI,KAAK,KAAK,QAAQ,MAAM;AAC5B,YAAI,IAAI;AACN,gBAAM,QAAQ,GAAG,IAAI,QAAQ;AAC7B,cAAI;AAAO,mBAAO;QACpB,OAAO;AACL,eAAK,KAAK,QAAQ,MAAM,IAAI,oBAAI,IAAG;QACrC;AACA,WAAG,IAAI,UAAU,IAAI;AAErB,cAAM,IAAI,KAAK,OAAO,MAAM,MAAM,KAAK,OAAO,MAAM,IAAI,CAAA;AACxD,cAAM,YAAY,EAAE;AACpB,UAAE,SAAS,IAAI,MAAM;AACrB,aAAK,SAAS,OAAO,EAAC,UAAU,QAAQ,UAAS,CAAC;AAClD,eAAO;MACT;MAEA,SAAS,QAAgB,UAAiB;AACxC,cAAM,KAAK,KAAK,QAAQ,MAAM;AAC9B,YAAI,CAAC;AAAI;AACT,eAAO,GAAG,IAAI,QAAQ;MACxB;MAEA,UAAU,WAAiB,SAAuC,KAAK,SAAO;AAC5E,eAAO,KAAK,cAAc,QAAQ,CAAC,SAAwB;AACzD,cAAI,KAAK,cAAc;AAAW,kBAAM,IAAI,MAAM,kBAAkB,IAAI,gBAAgB;AACxF,kBAAO,GAAA,OAAA,KAAI,SAAS,GAAG,KAAK,SAAS;QACvC,CAAC;MACH;MAEA,UACE,SAAuC,KAAK,SAC5C,YACA,SAAiD;AAEjD,eAAO,KAAK,cACV,QACA,CAAC,SAAwB;AACvB,cAAI,KAAK,UAAU;AAAW,kBAAM,IAAI,MAAM,kBAAkB,IAAI,gBAAgB;AACpF,iBAAO,KAAK,MAAM;QACpB,GACA,YACA,OAAO;MAEX;MAEQ,cACN,QACA,WACA,aAA8B,CAAA,GAC9B,SAAiD;AAEjD,YAAI,OAAa,OAAA;AACjB,mBAAW,UAAU,QAAQ;AAC3B,gBAAM,KAAK,OAAO,MAAM;AACxB,cAAI,CAAC;AAAI;AACT,gBAAM,UAAW,WAAW,MAAM,IAAI,WAAW,MAAM,KAAK,oBAAI,IAAG;AACnE,aAAG,QAAQ,CAAC,SAAwB;AAClC,gBAAI,QAAQ,IAAI,IAAI;AAAG;AACvB,oBAAQ,IAAI,MAAM,eAAe,OAAO;AACxC,gBAAI,IAAI,UAAU,IAAI;AACtB,gBAAI,GAAG;AACL,oBAAM,MAAM,KAAK,KAAK,MAAM,QAAA,SAAS,MAAM,QAAA,SAAS;AACpD,sBAAO,GAAA,OAAA,KAAI,IAAI,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;YACtD,WAAY,IAAI,YAAO,QAAP,YAAO,SAAA,SAAP,QAAU,IAAI,GAAI;AAChC,sBAAO,GAAA,OAAA,KAAI,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE;YACpC,OAAO;AACL,oBAAM,IAAI,WAAW,IAAI;YAC3B;AACA,oBAAQ,IAAI,MAAM,eAAe,SAAS;UAC5C,CAAC;QACH;AACA,eAAO;MACT;;AAhGF,YAAA,aAAA;;;;;;;;;;ACpHA,QAAA,SAAA;AACA,QAAA,UAAA;AAEA,QAAA,SAAA;AAAQ,WAAA,eAAA,SAAA,KAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAC,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,aAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAS,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,eAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAW,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,aAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAS,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAU,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,QAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,OAAA;IAAI,EAAA,CAAA;AACxE,QAAA,UAAA;AAAQ,WAAA,eAAA,SAAA,SAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAK,EAAA,CAAA;AAAc,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAU,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,kBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAc,EAAA,CAAA;AAAkB,WAAA,eAAA,SAAA,YAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,QAAA;IAAQ,EAAA,CAAA;AAQlE,YAAA,YAAY;MACvB,IAAI,IAAI,OAAA,MAAM,GAAG;MACjB,KAAK,IAAI,OAAA,MAAM,IAAI;MACnB,IAAI,IAAI,OAAA,MAAM,GAAG;MACjB,KAAK,IAAI,OAAA,MAAM,IAAI;MACnB,IAAI,IAAI,OAAA,MAAM,KAAK;MACnB,KAAK,IAAI,OAAA,MAAM,KAAK;MACpB,KAAK,IAAI,OAAA,MAAM,GAAG;MAClB,IAAI,IAAI,OAAA,MAAM,IAAI;MAClB,KAAK,IAAI,OAAA,MAAM,IAAI;MACnB,KAAK,IAAI,OAAA,MAAM,GAAG;;AAGpB,QAAe,OAAf,MAAmB;MAGjB,gBAAa;AACX,eAAO;MACT;MAEA,cAAc,QAAmB,YAAqB;AACpD,eAAO;MACT;;AAOF,QAAM,MAAN,cAAkB,KAAI;MACpB,YACmB,SACA,MACT,KAAc;AAEtB,cAAK;AAJY,aAAA,UAAA;AACA,aAAA,OAAA;AACT,aAAA,MAAA;MAGV;MAEA,OAAO,EAAC,KAAK,GAAE,GAAY;AACzB,cAAM,UAAU,MAAM,QAAA,SAAS,MAAM,KAAK;AAC1C,cAAM,MAAM,KAAK,QAAQ,SAAY,KAAK,MAAM,KAAK,GAAG;AACxD,eAAO,GAAG,OAAO,IAAI,KAAK,IAAI,GAAG,GAAG,MAAM;MAC5C;MAEA,cAAc,OAAkB,WAAoB;AAClD,YAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AAAG;AAC3B,YAAI,KAAK;AAAK,eAAK,MAAM,aAAa,KAAK,KAAK,OAAO,SAAS;AAChE,eAAO;MACT;MAEA,IAAI,QAAK;AACP,eAAO,KAAK,eAAe,OAAA,cAAc,KAAK,IAAI,QAAQ,CAAA;MAC5D;;AAGF,QAAM,SAAN,cAAqB,KAAI;MACvB,YACW,KACF,KACU,aAAqB;AAEtC,cAAK;AAJI,aAAA,MAAA;AACF,aAAA,MAAA;AACU,aAAA,cAAA;MAGnB;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,eAAO,GAAG,KAAK,GAAG,MAAM,KAAK,GAAG,MAAM;MACxC;MAEA,cAAc,OAAkB,WAAoB;AAClD,YAAI,KAAK,eAAe,OAAA,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,KAAK;AAAa;AAC3E,aAAK,MAAM,aAAa,KAAK,KAAK,OAAO,SAAS;AAClD,eAAO;MACT;MAEA,IAAI,QAAK;AACP,cAAM,QAAQ,KAAK,eAAe,OAAA,OAAO,CAAA,IAAK,EAAC,GAAG,KAAK,IAAI,MAAK;AAChE,eAAO,aAAa,OAAO,KAAK,GAAG;MACrC;;AAGF,QAAM,WAAN,cAAuB,OAAM;MAC3B,YACE,KACiB,IACjB,KACA,aAAqB;AAErB,cAAM,KAAK,KAAK,WAAW;AAJV,aAAA,KAAA;MAKnB;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,eAAO,GAAG,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,KAAK,GAAG,MAAM;MAClD;;AAGF,QAAM,QAAN,cAAoB,KAAI;MAEtB,YAAqB,OAAW;AAC9B,cAAK;AADc,aAAA,QAAA;AADZ,aAAA,QAAmB,CAAA;MAG5B;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,eAAO,GAAG,KAAK,KAAK,MAAM;MAC5B;;AAGF,QAAM,QAAN,cAAoB,KAAI;MAEtB,YAAqB,OAAY;AAC/B,cAAK;AADc,aAAA,QAAA;AADZ,aAAA,QAAmB,CAAA;MAG5B;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,cAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK;AAC9C,eAAO,QAAQ,KAAK,MAAM;MAC5B;;AAGF,QAAM,QAAN,cAAoB,KAAI;MACtB,YAAqB,OAAW;AAC9B,cAAK;AADc,aAAA,QAAA;MAErB;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,eAAO,SAAS,KAAK,KAAK,MAAM;MAClC;MAEA,IAAI,QAAK;AACP,eAAO,KAAK,MAAM;MACpB;;AAGF,QAAM,UAAN,cAAsB,KAAI;MACxB,YAAoB,MAAc;AAChC,cAAK;AADa,aAAA,OAAA;MAEpB;MAEA,OAAO,EAAC,GAAE,GAAY;AACpB,eAAO,GAAG,KAAK,IAAI,MAAM;MAC3B;MAEA,gBAAa;AACX,eAAO,GAAG,KAAK,IAAI,KAAK,OAAO;MACjC;MAEA,cAAc,OAAkB,WAAoB;AAClD,aAAK,OAAO,aAAa,KAAK,MAAM,OAAO,SAAS;AACpD,eAAO;MACT;MAEA,IAAI,QAAK;AACP,eAAO,KAAK,gBAAgB,OAAA,cAAc,KAAK,KAAK,QAAQ,CAAA;MAC9D;;AAGF,QAAe,aAAf,cAAkC,KAAI;MACpC,YAAqB,QAAqB,CAAA,GAAE;AAC1C,cAAK;AADc,aAAA,QAAA;MAErB;MAEA,OAAO,MAAe;AACpB,eAAO,KAAK,MAAM,OAAO,CAAC,MAAM,MAAM,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE;MACjE;MAEA,gBAAa;AACX,cAAM,EAAC,MAAK,IAAI;AAChB,YAAI,IAAI,MAAM;AACd,eAAO,KAAK;AACV,gBAAM,IAAI,MAAM,CAAC,EAAE,cAAa;AAChC,cAAI,MAAM,QAAQ,CAAC;AAAG,kBAAM,OAAO,GAAG,GAAG,GAAG,CAAC;mBACpC;AAAG,kBAAM,CAAC,IAAI;;AAClB,kBAAM,OAAO,GAAG,CAAC;QACxB;AACA,eAAO,MAAM,SAAS,IAAI,OAAO;MACnC;MAEA,cAAc,OAAkB,WAAoB;AAClD,cAAM,EAAC,MAAK,IAAI;AAChB,YAAI,IAAI,MAAM;AACd,eAAO,KAAK;AAEV,gBAAM,IAAI,MAAM,CAAC;AACjB,cAAI,EAAE,cAAc,OAAO,SAAS;AAAG;AACvC,wBAAc,OAAO,EAAE,KAAK;AAC5B,gBAAM,OAAO,GAAG,CAAC;QACnB;AACA,eAAO,MAAM,SAAS,IAAI,OAAO;MACnC;MAEA,IAAI,QAAK;AACP,eAAO,KAAK,MAAM,OAAO,CAAC,OAAkB,MAAM,SAAS,OAAO,EAAE,KAAK,GAAG,CAAA,CAAE;MAChF;;AAOF,QAAe,YAAf,cAAiC,WAAU;MACzC,OAAO,MAAe;AACpB,eAAO,MAAM,KAAK,KAAK,MAAM,OAAO,IAAI,IAAI,MAAM,KAAK;MACzD;;AAGF,QAAM,OAAN,cAAmB,WAAU;;AAE7B,QAAM,OAAN,cAAmB,UAAS;;AACV,SAAA,OAAO;AAGzB,QAAM,KAAN,MAAM,YAAW,UAAS;MAGxB,YACU,WACR,OAAmB;AAEnB,cAAM,KAAK;AAHH,aAAA,YAAA;MAIV;MAEA,OAAO,MAAe;AACpB,YAAI,OAAO,MAAM,KAAK,SAAS,MAAM,MAAM,OAAO,IAAI;AACtD,YAAI,KAAK;AAAM,kBAAQ,UAAU,KAAK,KAAK,OAAO,IAAI;AACtD,eAAO;MACT;MAEA,gBAAa;AACX,cAAM,cAAa;AACnB,cAAM,OAAO,KAAK;AAClB,YAAI,SAAS;AAAM,iBAAO,KAAK;AAC/B,YAAI,IAAI,KAAK;AACb,YAAI,GAAG;AACL,gBAAM,KAAK,EAAE,cAAa;AAC1B,cAAI,KAAK,OAAO,MAAM,QAAQ,EAAE,IAAI,IAAI,KAAK,EAAE,IAAK;QACtD;AACA,YAAI,GAAG;AACL,cAAI,SAAS;AAAO,mBAAO,aAAa,MAAK,IAAI,EAAE;AACnD,cAAI,KAAK,MAAM;AAAQ,mBAAO;AAC9B,iBAAO,IAAI,IAAG,IAAI,IAAI,GAAG,aAAa,MAAK,CAAC,CAAC,IAAI,EAAE,KAAK;QAC1D;AACA,YAAI,SAAS,SAAS,CAAC,KAAK,MAAM;AAAQ,iBAAO;AACjD,eAAO;MACT;MAEA,cAAc,OAAkB,WAAoB;;AAClD,aAAK,QAAO,KAAA,KAAK,UAAI,QAAA,OAAA,SAAA,SAAA,GAAE,cAAc,OAAO,SAAS;AACrD,YAAI,EAAE,MAAM,cAAc,OAAO,SAAS,KAAK,KAAK;AAAO;AAC3D,aAAK,YAAY,aAAa,KAAK,WAAW,OAAO,SAAS;AAC9D,eAAO;MACT;MAEA,IAAI,QAAK;AACP,cAAM,QAAQ,MAAM;AACpB,qBAAa,OAAO,KAAK,SAAS;AAClC,YAAI,KAAK;AAAM,mBAAS,OAAO,KAAK,KAAK,KAAK;AAC9C,eAAO;MACT;;AA7CgB,OAAA,OAAO;AAoDzB,QAAe,MAAf,cAA2B,UAAS;;AAClB,QAAA,OAAO;AAGzB,QAAM,UAAN,cAAsB,IAAG;MACvB,YAAoB,WAAe;AACjC,cAAK;AADa,aAAA,YAAA;MAEpB;MAEA,OAAO,MAAe;AACpB,eAAO,OAAO,KAAK,SAAS,MAAM,MAAM,OAAO,IAAI;MACrD;MAEA,cAAc,OAAkB,WAAoB;AAClD,YAAI,CAAC,MAAM,cAAc,OAAO,SAAS;AAAG;AAC5C,aAAK,YAAY,aAAa,KAAK,WAAW,OAAO,SAAS;AAC9D,eAAO;MACT;MAEA,IAAI,QAAK;AACP,eAAO,SAAS,MAAM,OAAO,KAAK,UAAU,KAAK;MACnD;;AAGF,QAAM,WAAN,cAAuB,IAAG;MACxB,YACmB,SACA,MACA,MACA,IAAY;AAE7B,cAAK;AALY,aAAA,UAAA;AACA,aAAA,OAAA;AACA,aAAA,OAAA;AACA,aAAA,KAAA;MAGnB;MAEA,OAAO,MAAe;AACpB,cAAM,UAAU,KAAK,MAAM,QAAA,SAAS,MAAM,KAAK;AAC/C,cAAM,EAAC,MAAM,MAAM,GAAE,IAAI;AACzB,eAAO,OAAO,OAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,QAAQ,MAAM,OAAO,IAAI;MACxF;MAEA,IAAI,QAAK;AACP,cAAM,QAAQ,aAAa,MAAM,OAAO,KAAK,IAAI;AACjD,eAAO,aAAa,OAAO,KAAK,EAAE;MACpC;;AAGF,QAAM,UAAN,cAAsB,IAAG;MACvB,YACmB,MACA,SACA,MACT,UAAc;AAEtB,cAAK;AALY,aAAA,OAAA;AACA,aAAA,UAAA;AACA,aAAA,OAAA;AACT,aAAA,WAAA;MAGV;MAEA,OAAO,MAAe;AACpB,eAAO,OAAO,KAAK,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,MAAM,MAAM,OAAO,IAAI;MAC9F;MAEA,cAAc,OAAkB,WAAoB;AAClD,YAAI,CAAC,MAAM,cAAc,OAAO,SAAS;AAAG;AAC5C,aAAK,WAAW,aAAa,KAAK,UAAU,OAAO,SAAS;AAC5D,eAAO;MACT;MAEA,IAAI,QAAK;AACP,eAAO,SAAS,MAAM,OAAO,KAAK,SAAS,KAAK;MAClD;;AAGF,QAAM,OAAN,cAAmB,UAAS;MAE1B,YACS,MACA,MACA,OAAe;AAEtB,cAAK;AAJE,aAAA,OAAA;AACA,aAAA,OAAA;AACA,aAAA,QAAA;MAGT;MAEA,OAAO,MAAe;AACpB,cAAM,SAAS,KAAK,QAAQ,WAAW;AACvC,eAAO,GAAG,MAAM,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,OAAO,IAAI;MAC3E;;AAZgB,SAAA,OAAO;AAezB,QAAM,SAAN,cAAqB,WAAU;MAG7B,OAAO,MAAe;AACpB,eAAO,YAAY,MAAM,OAAO,IAAI;MACtC;;AAJgB,WAAA,OAAO;AAOzB,QAAM,MAAN,cAAkB,UAAS;MAIzB,OAAO,MAAe;AACpB,YAAI,OAAO,QAAQ,MAAM,OAAO,IAAI;AACpC,YAAI,KAAK;AAAO,kBAAQ,KAAK,MAAM,OAAO,IAAI;AAC9C,YAAI,KAAK;AAAS,kBAAQ,KAAK,QAAQ,OAAO,IAAI;AAClD,eAAO;MACT;MAEA,gBAAa;;AACX,cAAM,cAAa;AACnB,SAAA,KAAA,KAAK,WAAK,QAAA,OAAA,SAAA,SAAA,GAAE,cAAa;AACzB,SAAA,KAAA,KAAK,aAAO,QAAA,OAAA,SAAA,SAAA,GAAE,cAAa;AAC3B,eAAO;MACT;MAEA,cAAc,OAAkB,WAAoB;;AAClD,cAAM,cAAc,OAAO,SAAS;AACpC,SAAA,KAAA,KAAK,WAAK,QAAA,OAAA,SAAA,SAAA,GAAE,cAAc,OAAO,SAAS;AAC1C,SAAA,KAAA,KAAK,aAAO,QAAA,OAAA,SAAA,SAAA,GAAE,cAAc,OAAO,SAAS;AAC5C,eAAO;MACT;MAEA,IAAI,QAAK;AACP,cAAM,QAAQ,MAAM;AACpB,YAAI,KAAK;AAAO,mBAAS,OAAO,KAAK,MAAM,KAAK;AAChD,YAAI,KAAK;AAAS,mBAAS,OAAO,KAAK,QAAQ,KAAK;AACpD,eAAO;MACT;;AAOF,QAAM,QAAN,cAAoB,UAAS;MAE3B,YAAqB,OAAW;AAC9B,cAAK;AADc,aAAA,QAAA;MAErB;MAEA,OAAO,MAAe;AACpB,eAAO,SAAS,KAAK,KAAK,MAAM,MAAM,OAAO,IAAI;MACnD;;AAPgB,UAAA,OAAO;AAUzB,QAAM,UAAN,cAAsB,UAAS;MAE7B,OAAO,MAAe;AACpB,eAAO,YAAY,MAAM,OAAO,IAAI;MACtC;;AAHgB,YAAA,OAAO;AAiCzB,QAAa,UAAb,MAAoB;MASlB,YAAY,UAAsB,OAAuB,CAAA,GAAE;AANlD,aAAA,UAA0B,CAAA;AAElB,aAAA,eAAyB,CAAA;AACzB,aAAA,aAAwB,CAAA;AAIvC,aAAK,OAAO,EAAC,GAAG,MAAM,IAAI,KAAK,QAAQ,OAAO,GAAE;AAChD,aAAK,YAAY;AACjB,aAAK,SAAS,IAAI,QAAA,MAAM,EAAC,QAAQ,SAAQ,CAAC;AAC1C,aAAK,SAAS,CAAC,IAAI,KAAI,CAAE;MAC3B;MAEA,WAAQ;AACN,eAAO,KAAK,MAAM,OAAO,KAAK,IAAI;MACpC;;MAGA,KAAK,QAAc;AACjB,eAAO,KAAK,OAAO,KAAK,MAAM;MAChC;;MAGA,UAAU,QAAc;AACtB,eAAO,KAAK,UAAU,KAAK,MAAM;MACnC;;MAGA,WAAW,cAAuC,OAAgB;AAChE,cAAM,OAAO,KAAK,UAAU,MAAM,cAAc,KAAK;AACrD,cAAM,KAAK,KAAK,QAAQ,KAAK,MAAM,MAAM,KAAK,QAAQ,KAAK,MAAM,IAAI,oBAAI,IAAG;AAC5E,WAAG,IAAI,IAAI;AACX,eAAO;MACT;MAEA,cAAc,QAAgB,UAAiB;AAC7C,eAAO,KAAK,UAAU,SAAS,QAAQ,QAAQ;MACjD;;;MAIA,UAAU,WAAe;AACvB,eAAO,KAAK,UAAU,UAAU,WAAW,KAAK,OAAO;MACzD;MAEA,YAAS;AACP,eAAO,KAAK,UAAU,UAAU,KAAK,OAAO;MAC9C;MAEQ,KACN,SACA,cACA,KACA,UAAkB;AAElB,cAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAC5C,YAAI,QAAQ,UAAa;AAAU,eAAK,WAAW,KAAK,GAAG,IAAI;AAC/D,aAAK,UAAU,IAAI,IAAI,SAAS,MAAM,GAAG,CAAC;AAC1C,eAAO;MACT;;MAGA,MAAM,cAA6B,KAAe,WAAmB;AACnE,eAAO,KAAK,KAAK,QAAA,SAAS,OAAO,cAAc,KAAK,SAAS;MAC/D;;MAGA,IAAI,cAA6B,KAAgB,WAAmB;AAClE,eAAO,KAAK,KAAK,QAAA,SAAS,KAAK,cAAc,KAAK,SAAS;MAC7D;;MAGA,IAAI,cAA6B,KAAgB,WAAmB;AAClE,eAAO,KAAK,KAAK,QAAA,SAAS,KAAK,cAAc,KAAK,SAAS;MAC7D;;MAGA,OAAO,KAAW,KAAe,aAAqB;AACpD,eAAO,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;MACzD;;MAGA,IAAI,KAAW,KAAa;AAC1B,eAAO,KAAK,UAAU,IAAI,SAAS,KAAK,QAAA,UAAU,KAAK,GAAG,CAAC;MAC7D;;MAGA,KAAK,GAAmB;AACtB,YAAI,OAAO,KAAK;AAAY,YAAC;iBACpB,MAAM,OAAA;AAAK,eAAK,UAAU,IAAI,QAAQ,CAAC,CAAC;AACjD,eAAO;MACT;;MAGA,UAAU,WAA+C;AACvD,cAAM,OAAmB,CAAC,GAAG;AAC7B,mBAAW,CAAC,KAAK,KAAK,KAAK,WAAW;AACpC,cAAI,KAAK,SAAS;AAAG,iBAAK,KAAK,GAAG;AAClC,eAAK,KAAK,GAAG;AACb,cAAI,QAAQ,SAAS,KAAK,KAAK,KAAK;AAClC,iBAAK,KAAK,GAAG;AACb,aAAA,GAAA,OAAA,YAAW,MAAM,KAAK;UACxB;QACF;AACA,aAAK,KAAK,GAAG;AACb,eAAO,IAAI,OAAA,MAAM,IAAI;MACvB;;MAGA,GAAG,WAA2B,UAAkB,UAAgB;AAC9D,aAAK,WAAW,IAAI,GAAG,SAAS,CAAC;AAEjC,YAAI,YAAY,UAAU;AACxB,eAAK,KAAK,QAAQ,EAAE,KAAI,EAAG,KAAK,QAAQ,EAAE,MAAK;QACjD,WAAW,UAAU;AACnB,eAAK,KAAK,QAAQ,EAAE,MAAK;QAC3B,WAAW,UAAU;AACnB,gBAAM,IAAI,MAAM,0CAA0C;QAC5D;AACA,eAAO;MACT;;MAGA,OAAO,WAAyB;AAC9B,eAAO,KAAK,UAAU,IAAI,GAAG,SAAS,CAAC;MACzC;;MAGA,OAAI;AACF,eAAO,KAAK,UAAU,IAAI,KAAI,CAAE;MAClC;;MAGA,QAAK;AACH,eAAO,KAAK,cAAc,IAAI,IAAI;MACpC;MAEQ,KAAK,MAAW,SAAe;AACrC,aAAK,WAAW,IAAI;AACpB,YAAI;AAAS,eAAK,KAAK,OAAO,EAAE,OAAM;AACtC,eAAO;MACT;;MAGA,IAAI,WAAiB,SAAe;AAClC,eAAO,KAAK,KAAK,IAAI,QAAQ,SAAS,GAAG,OAAO;MAClD;;MAGA,SACE,cACA,MACA,IACA,SACA,UAAgB,KAAK,KAAK,MAAM,QAAA,SAAS,MAAM,QAAA,SAAS,KAAG;AAE3D,cAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAC5C,eAAO,KAAK,KAAK,IAAI,SAAS,SAAS,MAAM,MAAM,EAAE,GAAG,MAAM,QAAQ,IAAI,CAAC;MAC7E;;MAGA,MACE,cACA,UACA,SACA,UAAgB,QAAA,SAAS,OAAK;AAE9B,cAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAC5C,YAAI,KAAK,KAAK,KAAK;AACjB,gBAAM,MAAM,oBAAoB,OAAA,OAAO,WAAW,KAAK,IAAI,QAAQ,QAAQ;AAC3E,iBAAO,KAAK,SAAS,MAAM,IAAG,GAAA,OAAA,KAAI,GAAG,WAAW,CAAC,MAAK;AACpD,iBAAK,IAAI,OAAM,GAAA,OAAA,KAAI,GAAG,IAAI,CAAC,GAAG;AAC9B,oBAAQ,IAAI;UACd,CAAC;QACH;AACA,eAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,SAAS,MAAM,QAAQ,GAAG,MAAM,QAAQ,IAAI,CAAC;MAClF;;;MAIA,MACE,cACA,KACA,SACA,UAAgB,KAAK,KAAK,MAAM,QAAA,SAAS,MAAM,QAAA,SAAS,OAAK;AAE7D,YAAI,KAAK,KAAK,eAAe;AAC3B,iBAAO,KAAK,MAAM,eAAc,GAAA,OAAA,iBAAgB,GAAG,KAAK,OAAO;QACjE;AACA,cAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAC5C,eAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,SAAS,MAAM,GAAG,GAAG,MAAM,QAAQ,IAAI,CAAC;MAC7E;;MAGA,SAAM;AACJ,eAAO,KAAK,cAAc,GAAG;MAC/B;;MAGA,MAAM,OAAW;AACf,eAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;MACxC;;MAGA,MAAM,OAAY;AAChB,eAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;MACxC;;MAGA,OAAO,OAAuB;AAC5B,cAAM,OAAO,IAAI,OAAM;AACvB,aAAK,WAAW,IAAI;AACpB,aAAK,KAAK,KAAK;AACf,YAAI,KAAK,MAAM,WAAW;AAAG,gBAAM,IAAI,MAAM,wCAAwC;AACrF,eAAO,KAAK,cAAc,MAAM;MAClC;;MAGA,IAAI,SAAgB,WAA+B,aAAmB;AACpE,YAAI,CAAC,aAAa,CAAC;AAAa,gBAAM,IAAI,MAAM,8CAA8C;AAC9F,cAAM,OAAO,IAAI,IAAG;AACpB,aAAK,WAAW,IAAI;AACpB,aAAK,KAAK,OAAO;AACjB,YAAI,WAAW;AACb,gBAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,eAAK,YAAY,KAAK,QAAQ,IAAI,MAAM,KAAK;AAC7C,oBAAU,KAAK;QACjB;AACA,YAAI,aAAa;AACf,eAAK,YAAY,KAAK,UAAU,IAAI,QAAO;AAC3C,eAAK,KAAK,WAAW;QACvB;AACA,eAAO,KAAK,cAAc,OAAO,OAAO;MAC1C;;MAGA,MAAM,OAAW;AACf,eAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;MACxC;;MAGA,MAAM,MAAc,WAAkB;AACpC,aAAK,aAAa,KAAK,KAAK,OAAO,MAAM;AACzC,YAAI;AAAM,eAAK,KAAK,IAAI,EAAE,SAAS,SAAS;AAC5C,eAAO;MACT;;MAGA,SAAS,WAAkB;AACzB,cAAM,MAAM,KAAK,aAAa,IAAG;AACjC,YAAI,QAAQ;AAAW,gBAAM,IAAI,MAAM,sCAAsC;AAC7E,cAAM,UAAU,KAAK,OAAO,SAAS;AACrC,YAAI,UAAU,KAAM,cAAc,UAAa,YAAY,WAAY;AACrE,gBAAM,IAAI,MAAM,mCAAmC,OAAO,OAAO,SAAS,WAAW;QACvF;AACA,aAAK,OAAO,SAAS;AACrB,eAAO;MACT;;MAGA,KAAK,MAAY,OAAa,OAAA,KAAK,OAAiB,UAAgB;AAClE,aAAK,WAAW,IAAI,KAAK,MAAM,MAAM,KAAK,CAAC;AAC3C,YAAI;AAAU,eAAK,KAAK,QAAQ,EAAE,QAAO;AACzC,eAAO;MACT;;MAGA,UAAO;AACL,eAAO,KAAK,cAAc,IAAI;MAChC;MAEA,SAAS,IAAI,GAAC;AACZ,eAAO,MAAM,GAAG;AACd,eAAK,MAAM,cAAa;AACxB,eAAK,MAAM,cAAc,KAAK,MAAM,OAAO,KAAK,UAAU;QAC5D;MACF;MAEQ,UAAU,MAAc;AAC9B,aAAK,UAAU,MAAM,KAAK,IAAI;AAC9B,eAAO;MACT;MAEQ,WAAW,MAAoB;AACrC,aAAK,UAAU,MAAM,KAAK,IAAI;AAC9B,aAAK,OAAO,KAAK,IAAI;MACvB;MAEQ,cAAc,IAAsB,IAAqB;AAC/D,cAAM,IAAI,KAAK;AACf,YAAI,aAAa,MAAO,MAAM,aAAa,IAAK;AAC9C,eAAK,OAAO,IAAG;AACf,iBAAO;QACT;AACA,cAAM,IAAI,MAAM,0BAA0B,KAAK,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG;MACrF;MAEQ,UAAU,MAAe;AAC/B,cAAM,IAAI,KAAK;AACf,YAAI,EAAE,aAAa,KAAK;AACtB,gBAAM,IAAI,MAAM,8BAA8B;QAChD;AACA,aAAK,YAAY,EAAE,OAAO;AAC1B,eAAO;MACT;MAEA,IAAY,QAAK;AACf,eAAO,KAAK,OAAO,CAAC;MACtB;MAEA,IAAY,YAAS;AACnB,cAAM,KAAK,KAAK;AAChB,eAAO,GAAG,GAAG,SAAS,CAAC;MACzB;MAEA,IAAY,UAAU,MAAgB;AACpC,cAAM,KAAK,KAAK;AAChB,WAAG,GAAG,SAAS,CAAC,IAAI;MACtB;;AAjUF,YAAA,UAAA;AAwUA,aAAS,SAAS,OAAkB,MAAe;AACjD,iBAAW,KAAK;AAAM,cAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK;AAC/D,aAAO;IACT;AAEA,aAAS,aAAa,OAAkB,MAAc;AACpD,aAAO,gBAAgB,OAAA,cAAc,SAAS,OAAO,KAAK,KAAK,IAAI;IACrE;AAGA,aAAS,aAAa,MAAgB,OAAkB,WAAoB;AAC1E,UAAI,gBAAgB,OAAA;AAAM,eAAO,YAAY,IAAI;AACjD,UAAI,CAAC,YAAY,IAAI;AAAG,eAAO;AAC/B,aAAO,IAAI,OAAA,MACT,KAAK,OAAO,OAAO,CAAC,OAAmB,MAAwB;AAC7D,YAAI,aAAa,OAAA;AAAM,cAAI,YAAY,CAAC;AACxC,YAAI,aAAa,OAAA;AAAO,gBAAM,KAAK,GAAG,EAAE,MAAM;;AACzC,gBAAM,KAAK,CAAC;AACjB,eAAO;MACT,GAAG,CAAA,CAAE,CAAC;AAGR,eAAS,YAAY,GAAO;AAC1B,cAAM,IAAI,UAAU,EAAE,GAAG;AACzB,YAAI,MAAM,UAAa,MAAM,EAAE,GAAG,MAAM;AAAG,iBAAO;AAClD,eAAO,MAAM,EAAE,GAAG;AAClB,eAAO;MACT;AAEA,eAAS,YAAY,GAAW;AAC9B,eACE,aAAa,OAAA,SACb,EAAE,OAAO,KACP,CAAC,MAAM,aAAa,OAAA,QAAQ,MAAM,EAAE,GAAG,MAAM,KAAK,UAAU,EAAE,GAAG,MAAM,MAAS;MAGtF;IACF;AAEA,aAAS,cAAc,OAAkB,MAAe;AACtD,iBAAW,KAAK;AAAM,cAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK;IACjE;AAGA,aAAgB,IAAI,GAAkB;AACpC,aAAO,OAAO,KAAK,aAAa,OAAO,KAAK,YAAY,MAAM,OAAO,CAAC,KAAI,GAAA,OAAA,MAAK,IAAI,CAAC,CAAC;IACvF;AAFA,YAAA,MAAA;AAIA,QAAM,UAAU,QAAQ,QAAA,UAAU,GAAG;AAGrC,aAAgB,OAAO,MAAY;AACjC,aAAO,KAAK,OAAO,OAAO;IAC5B;AAFA,YAAA,MAAA;AAIA,QAAM,SAAS,QAAQ,QAAA,UAAU,EAAE;AAGnC,aAAgB,MAAM,MAAY;AAChC,aAAO,KAAK,OAAO,MAAM;IAC3B;AAFA,YAAA,KAAA;AAMA,aAAS,QAAQ,IAAQ;AACvB,aAAO,CAAC,GAAG,MAAO,MAAM,OAAA,MAAM,IAAI,MAAM,OAAA,MAAM,KAAI,GAAA,OAAA,KAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC9E;AAEA,aAAS,IAAI,GAAO;AAClB,aAAO,aAAa,OAAA,OAAO,KAAI,GAAA,OAAA,MAAK,CAAC;IACvC;;;;;;;;;;ACj1BA,QAAA,YAAA;AACA,QAAA,SAAA;AAIA,aAAgB,OAAkC,KAAQ;AACxD,YAAM,OAA0B,CAAA;AAChC,iBAAW,QAAQ;AAAK,aAAK,IAAI,IAAI;AACrC,aAAO;IACT;AAJA,YAAA,SAAA;AAMA,aAAgB,kBAAkB,IAAe,QAAiB;AAChE,UAAI,OAAO,UAAU;AAAW,eAAO;AACvC,UAAI,OAAO,KAAK,MAAM,EAAE,WAAW;AAAG,eAAO;AAC7C,wBAAkB,IAAI,MAAM;AAC5B,aAAO,CAAC,eAAe,QAAQ,GAAG,KAAK,MAAM,GAAG;IAClD;AALA,YAAA,oBAAA;AAOA,aAAgB,kBAAkB,IAAe,SAAoB,GAAG,QAAM;AAC5E,YAAM,EAAC,MAAM,KAAI,IAAI;AACrB,UAAI,CAAC,KAAK;AAAc;AACxB,UAAI,OAAO,WAAW;AAAW;AACjC,YAAM,QAAQ,KAAK,MAAM;AACzB,iBAAW,OAAO,QAAQ;AACxB,YAAI,CAAC,MAAM,GAAG;AAAG,0BAAgB,IAAI,qBAAqB,GAAG,GAAG;MAClE;IACF;AARA,YAAA,oBAAA;AAUA,aAAgB,eACd,QACA,OAAyC;AAEzC,UAAI,OAAO,UAAU;AAAW,eAAO,CAAC;AACxC,iBAAW,OAAO;AAAQ,YAAI,MAAM,GAAG;AAAG,iBAAO;AACjD,aAAO;IACT;AAPA,YAAA,iBAAA;AASA,aAAgB,qBAAqB,QAAmB,OAAsB;AAC5E,UAAI,OAAO,UAAU;AAAW,eAAO,CAAC;AACxC,iBAAW,OAAO;AAAQ,YAAI,QAAQ,UAAU,MAAM,IAAI,GAAG;AAAG,iBAAO;AACvE,aAAO;IACT;AAJA,YAAA,uBAAA;AAMA,aAAgB,eACd,EAAC,cAAc,WAAU,GACzB,QACA,SACA,OAAsB;AAEtB,UAAI,CAAC,OAAO;AACV,YAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAW,iBAAO;AACpE,YAAI,OAAO,UAAU;AAAU,kBAAO,GAAA,UAAA,KAAI,MAAM;MAClD;AACA,cAAO,GAAA,UAAA,KAAI,YAAY,GAAG,UAAU,IAAG,GAAA,UAAA,aAAY,OAAO,CAAC;IAC7D;AAXA,YAAA,iBAAA;AAaA,aAAgB,iBAAiB,KAAW;AAC1C,aAAO,oBAAoB,mBAAmB,GAAG,CAAC;IACpD;AAFA,YAAA,mBAAA;AAIA,aAAgB,eAAe,KAAoB;AACjD,aAAO,mBAAmB,kBAAkB,GAAG,CAAC;IAClD;AAFA,YAAA,iBAAA;AAIA,aAAgB,kBAAkB,KAAoB;AACpD,UAAI,OAAO,OAAO;AAAU,eAAO,GAAG,GAAG;AACzC,aAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;IACpD;AAHA,YAAA,oBAAA;AAKA,aAAgB,oBAAoB,KAAW;AAC7C,aAAO,IAAI,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG;IACnD;AAFA,YAAA,sBAAA;AAIA,aAAgB,SAAY,IAAa,GAAiB;AACxD,UAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,mBAAW,KAAK;AAAI,YAAE,CAAC;MACzB,OAAO;AACL,UAAE,EAAE;MACN;IACF;AANA,YAAA,WAAA;AAwBA,aAAS,mBAA4C,EACnD,YACA,aACA,aACA,aAAY,GACS;AACrB,aAAO,CAAC,KAAK,MAAM,IAAI,WAAU;AAC/B,cAAM,MACJ,OAAO,SACH,OACA,cAAc,UAAA,QACb,gBAAgB,UAAA,OAAO,WAAW,KAAK,MAAM,EAAE,IAAI,YAAY,KAAK,MAAM,EAAE,GAAG,MAChF,gBAAgB,UAAA,QACf,YAAY,KAAK,IAAI,IAAI,GAAG,QAC7B,YAAY,MAAM,EAAE;AAC1B,eAAO,WAAW,UAAA,QAAQ,EAAE,eAAe,UAAA,QAAQ,aAAa,KAAK,GAAG,IAAI;MAC9E;IACF;AAOa,YAAA,iBAAiC;MAC5C,OAAO,mBAAmB;QACxB,YAAY,CAAC,KAAK,MAAM,OACtB,IAAI,IAAG,GAAA,UAAA,KAAI,EAAE,gBAAgB,IAAI,kBAAkB,MAAK;AACtD,cAAI,IACF,GAAA,UAAA,KAAI,IAAI,aACR,MAAM,IAAI,OAAO,IAAI,IAAI,GACzB,MAAM,IAAI,OAAO,KAAI,GAAA,UAAA,KAAI,EAAE,QAAQ,EAAE,MAAK,GAAA,UAAA,mBAAkB,EAAE,KAAK,IAAI,GAAG,CAAC;QAE/E,CAAC;QACH,aAAa,CAAC,KAAK,MAAM,OACvB,IAAI,IAAG,GAAA,UAAA,KAAI,EAAE,aAAa,MAAK;AAC7B,cAAI,SAAS,MAAM;AACjB,gBAAI,OAAO,IAAI,IAAI;UACrB,OAAO;AACL,gBAAI,OAAO,KAAI,GAAA,UAAA,KAAI,EAAE,QAAQ;AAC7B,yBAAa,KAAK,IAAI,IAAI;UAC5B;QACF,CAAC;QACH,aAAa,CAAC,MAAM,OAAQ,SAAS,OAAO,OAAO,EAAC,GAAG,MAAM,GAAG,GAAE;QAClE,cAAc;OACf;MACD,OAAO,mBAAmB;QACxB,YAAY,CAAC,KAAK,MAAM,OACtB,IAAI,IAAG,GAAA,UAAA,KAAI,EAAE,gBAAgB,IAAI,kBAAkB,MACjD,IAAI,OAAO,KAAI,GAAA,UAAA,KAAI,IAAI,sBAAsB,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QAElF,aAAa,CAAC,KAAK,MAAM,OACvB,IAAI,IAAG,GAAA,UAAA,KAAI,EAAE,aAAa,MACxB,IAAI,OAAO,IAAI,SAAS,OAAO,QAAO,GAAA,UAAA,KAAI,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QAE/E,aAAa,CAAC,MAAM,OAAQ,SAAS,OAAO,OAAO,KAAK,IAAI,MAAM,EAAE;QACpE,cAAc,CAAC,KAAK,UAAU,IAAI,IAAI,SAAS,KAAK;OACrD;;AAGH,aAAgB,qBAAqB,KAAc,IAAwB;AACzE,UAAI,OAAO;AAAM,eAAO,IAAI,IAAI,SAAS,IAAI;AAC7C,YAAM,QAAQ,IAAI,IAAI,UAAS,GAAA,UAAA,MAAK;AACpC,UAAI,OAAO;AAAW,qBAAa,KAAK,OAAO,EAAE;AACjD,aAAO;IACT;AALA,YAAA,uBAAA;AAOA,aAAgB,aAAa,KAAc,OAAa,IAA0B;AAChF,aAAO,KAAK,EAAE,EAAE,QAAQ,CAAC,MAAM,IAAI,QAAO,GAAA,UAAA,KAAI,KAAK,IAAG,GAAA,UAAA,aAAY,CAAC,CAAC,IAAI,IAAI,CAAC;IAC/E;AAFA,YAAA,eAAA;AAIA,QAAM,WAAoC,CAAA;AAE1C,aAAgB,QAAQ,KAAc,GAAiB;AACrD,aAAO,IAAI,WAAW,QAAQ;QAC5B,KAAK;QACL,MAAM,SAAS,EAAE,IAAI,MAAM,SAAS,EAAE,IAAI,IAAI,IAAI,OAAA,MAAM,EAAE,IAAI;OAC/D;IACH;AALA,YAAA,UAAA;AAOA,QAAY;AAAZ,KAAA,SAAYC,OAAI;AACd,MAAAA,MAAAA,MAAA,KAAA,IAAA,CAAA,IAAA;AACA,MAAAA,MAAAA,MAAA,KAAA,IAAA,CAAA,IAAA;IACF,GAHY,SAAI,QAAA,OAAJ,OAAI,CAAA,EAAA;AAKhB,aAAgB,aACd,UACA,cACA,kBAA0B;AAG1B,UAAI,oBAAoB,UAAA,MAAM;AAC5B,cAAM,WAAW,iBAAiB,KAAK;AACvC,eAAO,mBACH,YACE,GAAA,UAAA,WAAU,QAAQ,YAClB,GAAA,UAAA,YAAW,QAAQ,YACrB,YACA,GAAA,UAAA,WAAU,QAAQ,MAClB,GAAA,UAAA,WAAU,QAAQ;MACxB;AACA,aAAO,oBAAmB,GAAA,UAAA,aAAY,QAAQ,EAAE,SAAQ,IAAK,MAAM,kBAAkB,QAAQ;IAC/F;AAjBA,YAAA,eAAA;AAmBA,aAAgB,gBACd,IACA,KACA,OAAwB,GAAG,KAAK,cAAY;AAE5C,UAAI,CAAC;AAAM;AACX,YAAM,gBAAgB,GAAG;AACzB,UAAI,SAAS;AAAM,cAAM,IAAI,MAAM,GAAG;AACtC,SAAG,KAAK,OAAO,KAAK,GAAG;IACzB;AATA,YAAA,kBAAA;;;;;;;;;AC3MA,QAAA,YAAA;AAEA,QAAM,QAAQ;;MAEZ,MAAM,IAAI,UAAA,KAAK,MAAM;;;MAErB,QAAQ,IAAI,UAAA,KAAK,QAAQ;;MACzB,cAAc,IAAI,UAAA,KAAK,cAAc;MACrC,YAAY,IAAI,UAAA,KAAK,YAAY;MACjC,oBAAoB,IAAI,UAAA,KAAK,oBAAoB;MACjD,UAAU,IAAI,UAAA,KAAK,UAAU;;MAC7B,gBAAgB,IAAI,UAAA,KAAK,gBAAgB;;;MAEzC,SAAS,IAAI,UAAA,KAAK,SAAS;;MAC3B,QAAQ,IAAI,UAAA,KAAK,QAAQ;;MACzB,MAAM,IAAI,UAAA,KAAK,MAAM;;MAErB,MAAM,IAAI,UAAA,KAAK,MAAM;MACrB,OAAO,IAAI,UAAA,KAAK,OAAO;;MAEvB,MAAM,IAAI,UAAA,KAAK,MAAM;MACrB,SAAS,IAAI,UAAA,KAAK,SAAS;MAC3B,SAAS,IAAI,UAAA,KAAK,SAAS;MAC3B,UAAU,IAAI,UAAA,KAAK,UAAU;;AAG/B,YAAA,UAAe;;;;;;;;;;ACxBf,QAAA,YAAA;AAEA,QAAA,SAAA;AACA,QAAA,UAAA;AAEa,YAAA,eAAuC;MAClD,SAAS,CAAC,EAAC,QAAO,OAAM,GAAA,UAAA,kBAAiB,OAAO;;AAGrC,YAAA,oBAA4C;MACvD,SAAS,CAAC,EAAC,SAAS,WAAU,MAC5B,cACI,GAAA,UAAA,QAAO,OAAO,qBAAqB,UAAU,cAC7C,GAAA,UAAA,QAAO,OAAO;;AAStB,aAAgB,YACd,KACA,QAAgC,QAAA,cAChC,YACA,mBAA2B;AAE3B,YAAM,EAAC,GAAE,IAAI;AACb,YAAM,EAAC,KAAK,eAAe,UAAS,IAAI;AACxC,YAAM,SAAS,gBAAgB,KAAK,OAAO,UAAU;AACrD,UAAI,sBAAiB,QAAjB,sBAAiB,SAAjB,oBAAsB,iBAAiB,WAAY;AACrD,iBAAS,KAAK,MAAM;MACtB,OAAO;AACL,qBAAa,KAAI,GAAA,UAAA,MAAK,MAAM,GAAG;MACjC;IACF;AAdA,YAAA,cAAA;AAgBA,aAAgB,iBACd,KACA,QAAgC,QAAA,cAChC,YAAuB;AAEvB,YAAM,EAAC,GAAE,IAAI;AACb,YAAM,EAAC,KAAK,eAAe,UAAS,IAAI;AACxC,YAAM,SAAS,gBAAgB,KAAK,OAAO,UAAU;AACrD,eAAS,KAAK,MAAM;AACpB,UAAI,EAAE,iBAAiB,YAAY;AACjC,qBAAa,IAAI,QAAA,QAAE,OAAO;MAC5B;IACF;AAZA,YAAA,mBAAA;AAcA,aAAgB,iBAAiB,KAAc,WAAe;AAC5D,UAAI,OAAO,QAAA,QAAE,QAAQ,SAAS;AAC9B,UAAI,IAAG,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,aAAa,MAC/B,IAAI,GACF,WACA,MAAM,IAAI,QAAO,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,WAAW,SAAS,GAClD,MAAM,IAAI,OAAO,QAAA,QAAE,SAAS,IAAI,CAAC,CAClC;IAEL;AATA,YAAA,mBAAA;AAWA,aAAgB,aAAa,EAC3B,KACA,SACA,aACA,MACA,WACA,GAAE,GACc;AAEhB,UAAI,cAAc;AAAW,cAAM,IAAI,MAAM,0BAA0B;AACvE,YAAM,MAAM,IAAI,KAAK,KAAK;AAC1B,UAAI,SAAS,KAAK,WAAW,QAAA,QAAE,QAAQ,CAAC,MAAK;AAC3C,YAAI,MAAM,MAAK,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,IAAI,CAAC,GAAG;AACpC,YAAI,IAAG,GAAA,UAAA,KAAI,GAAG,+BAA+B,MAC3C,IAAI,QAAO,GAAA,UAAA,KAAI,GAAG,kBAAiB,GAAA,UAAA,WAAU,QAAA,QAAE,cAAc,GAAG,SAAS,CAAC,CAAC;AAE7E,YAAI,QAAO,GAAA,UAAA,KAAI,GAAG,gBAAe,GAAA,UAAA,OAAM,GAAG,aAAa,IAAI,OAAO,EAAE;AACpE,YAAI,GAAG,KAAK,SAAS;AACnB,cAAI,QAAO,GAAA,UAAA,KAAI,GAAG,WAAW,WAAW;AACxC,cAAI,QAAO,GAAA,UAAA,KAAI,GAAG,SAAS,IAAI;QACjC;MACF,CAAC;IACH;AAtBA,YAAA,eAAA;AAwBA,aAAS,SAAS,KAAc,QAAY;AAC1C,YAAM,MAAM,IAAI,MAAM,OAAO,MAAM;AACnC,UAAI,IACF,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,aACb,MAAM,IAAI,OAAO,QAAA,QAAE,UAAS,GAAA,UAAA,MAAK,GAAG,GAAG,IACvC,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,SAAS,GAAG,GAAG;AAE9B,UAAI,MAAK,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI;IAC3B;AAEA,aAAS,aAAa,IAAe,MAAU;AAC7C,YAAM,EAAC,KAAK,cAAc,UAAS,IAAI;AACvC,UAAI,UAAU,QAAQ;AACpB,YAAI,OAAM,GAAA,UAAA,SAAQ,GAAG,eAAuB,IAAI,IAAI,GAAG;MACzD,OAAO;AACL,YAAI,QAAO,GAAA,UAAA,KAAI,YAAY,WAAW,IAAI;AAC1C,YAAI,OAAO,KAAK;MAClB;IACF;AAEA,QAAM,IAAI;MACR,SAAS,IAAI,UAAA,KAAK,SAAS;MAC3B,YAAY,IAAI,UAAA,KAAK,YAAY;;MACjC,QAAQ,IAAI,UAAA,KAAK,QAAQ;MACzB,cAAc,IAAI,UAAA,KAAK,cAAc;MACrC,SAAS,IAAI,UAAA,KAAK,SAAS;MAC3B,QAAQ,IAAI,UAAA,KAAK,QAAQ;MACzB,cAAc,IAAI,UAAA,KAAK,cAAc;;AAGvC,aAAS,gBACP,KACA,OACA,YAAuB;AAEvB,YAAM,EAAC,aAAY,IAAI,IAAI;AAC3B,UAAI,iBAAiB;AAAO,gBAAO,GAAA,UAAA;AACnC,aAAO,YAAY,KAAK,OAAO,UAAU;IAC3C;AAEA,aAAS,YACP,KACA,OACA,aAAyB,CAAA,GAAE;AAE3B,YAAM,EAAC,KAAK,GAAE,IAAI;AAClB,YAAM,YAAyC;QAC7C,kBAAkB,IAAI,UAAU;QAChC,gBAAgB,KAAK,UAAU;;AAEjC,sBAAgB,KAAK,OAAO,SAAS;AACrC,aAAO,IAAI,OAAO,GAAG,SAAS;IAChC;AAEA,aAAS,kBAAkB,EAAC,UAAS,GAAc,EAAC,aAAY,GAAa;AAC3E,YAAM,WAAW,gBACb,GAAA,UAAA,OAAM,SAAS,IAAG,GAAA,OAAA,cAAa,cAAc,OAAA,KAAK,GAAG,CAAC,KACtD;AACJ,aAAO,CAAC,QAAA,QAAE,eAAc,GAAA,UAAA,WAAU,QAAA,QAAE,cAAc,QAAQ,CAAC;IAC7D;AAEA,aAAS,gBACP,EAAC,SAAS,IAAI,EAAC,cAAa,EAAC,GAC7B,EAAC,YAAY,aAAY,GAAa;AAEtC,UAAI,UAAU,eAAe,iBAAgB,GAAA,UAAA,OAAM,aAAa,IAAI,OAAO;AAC3E,UAAI,YAAY;AACd,mBAAU,GAAA,UAAA,OAAM,OAAO,IAAG,GAAA,OAAA,cAAa,YAAY,OAAA,KAAK,GAAG,CAAC;MAC9D;AACA,aAAO,CAAC,EAAE,YAAY,OAAO;IAC/B;AAEA,aAAS,gBACP,KACA,EAAC,QAAQ,QAAO,GAChB,WAAsC;AAEtC,YAAM,EAAC,SAAS,MAAM,aAAa,GAAE,IAAI;AACzC,YAAM,EAAC,MAAM,cAAc,cAAc,WAAU,IAAI;AACvD,gBAAU,KACR,CAAC,EAAE,SAAS,OAAO,GACnB,CAAC,EAAE,QAAQ,OAAO,UAAU,aAAa,OAAO,GAAG,IAAI,WAAU,GAAA,UAAA,MAAK,CAAC;AAEzE,UAAI,KAAK,UAAU;AACjB,kBAAU,KAAK,CAAC,EAAE,SAAS,OAAO,WAAW,aAAa,QAAQ,GAAG,IAAI,OAAO,CAAC;MACnF;AACA,UAAI,KAAK,SAAS;AAChB,kBAAU,KACR,CAAC,EAAE,QAAQ,WAAW,GACtB,CAAC,EAAE,eAAc,GAAA,UAAA,KAAI,YAAY,GAAG,UAAU,EAAE,GAChD,CAAC,QAAA,QAAE,MAAM,IAAI,CAAC;MAElB;AACA,UAAI;AAAc,kBAAU,KAAK,CAAC,EAAE,cAAc,YAAY,CAAC;IACjE;;;;;;;;;;ACrLA,QAAA,WAAA;AACA,QAAA,YAAA;AACA,QAAA,UAAA;AAEA,QAAM,YAAoC;MACxC,SAAS;;AAGX,aAAgB,qBAAqB,IAAa;AAChD,YAAM,EAAC,KAAK,QAAQ,aAAY,IAAI;AACpC,UAAI,WAAW,OAAO;AACpB,yBAAiB,IAAI,KAAK;MAC5B,WAAW,OAAO,UAAU,YAAY,OAAO,WAAW,MAAM;AAC9D,YAAI,OAAO,QAAA,QAAE,IAAI;MACnB,OAAO;AACL,YAAI,QAAO,GAAA,UAAA,KAAI,YAAY,WAAW,IAAI;AAC1C,YAAI,OAAO,IAAI;MACjB;IACF;AAVA,YAAA,uBAAA;AAYA,aAAgB,kBAAkB,IAAe,OAAW;AAC1D,YAAM,EAAC,KAAK,OAAM,IAAI;AACtB,UAAI,WAAW,OAAO;AACpB,YAAI,IAAI,OAAO,KAAK;AACpB,yBAAiB,EAAE;MACrB,OAAO;AACL,YAAI,IAAI,OAAO,IAAI;MACrB;IACF;AARA,YAAA,oBAAA;AAUA,aAAS,iBAAiB,IAAe,mBAA2B;AAClE,YAAM,EAAC,KAAK,KAAI,IAAI;AAEpB,YAAM,MAAuB;QAC3B;QACA,SAAS;QACT;QACA,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,QAAQ,CAAA;QACR;;AAEF,OAAA,GAAA,SAAA,aAAY,KAAK,WAAW,QAAW,iBAAiB;IAC1D;;;;;;;;;;AC5CA,QAAM,aAAa,CAAC,UAAU,UAAU,WAAW,WAAW,QAAQ,UAAU,OAAO;AAIvF,QAAM,YAAyB,IAAI,IAAI,UAAU;AAEjD,aAAgB,WAAW,GAAU;AACnC,aAAO,OAAO,KAAK,YAAY,UAAU,IAAI,CAAC;IAChD;AAFA,YAAA,aAAA;AA2BA,aAAgB,WAAQ;AACtB,YAAM,SAAsE;QAC1E,QAAQ,EAAC,MAAM,UAAU,OAAO,CAAA,EAAE;QAClC,QAAQ,EAAC,MAAM,UAAU,OAAO,CAAA,EAAE;QAClC,OAAO,EAAC,MAAM,SAAS,OAAO,CAAA,EAAE;QAChC,QAAQ,EAAC,MAAM,UAAU,OAAO,CAAA,EAAE;;AAEpC,aAAO;QACL,OAAO,EAAC,GAAG,QAAQ,SAAS,MAAM,SAAS,MAAM,MAAM,KAAI;QAC3D,OAAO,CAAC,EAAC,OAAO,CAAA,EAAE,GAAG,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM;QAC9E,MAAM,EAAC,OAAO,CAAA,EAAE;QAChB,KAAK,CAAA;QACL,UAAU,CAAA;;IAEd;AAdA,YAAA,WAAA;;;;;;;;;;AC/BA,aAAgB,sBACd,EAAC,QAAQ,KAAI,GACb,MAAc;AAEd,YAAM,QAAQ,KAAK,MAAM,MAAM,IAAI;AACnC,aAAO,SAAS,UAAU,QAAQ,eAAe,QAAQ,KAAK;IAChE;AANA,YAAA,wBAAA;AAQA,aAAgB,eAAe,QAAyB,OAAgB;AACtE,aAAO,MAAM,MAAM,KAAK,CAAC,SAAS,cAAc,QAAQ,IAAI,CAAC;IAC/D;AAFA,YAAA,iBAAA;AAIA,aAAgB,cAAc,QAAyB,MAAU;;AAC/D,aACE,OAAO,KAAK,OAAO,MAAM,YACzB,KAAA,KAAK,WAAW,gBAAU,QAAA,OAAA,SAAA,SAAA,GAAE,KAAK,CAAC,QAAQ,OAAO,GAAG,MAAM,MAAS;IAEvE;AALA,YAAA,gBAAA;;;;;;;;;;ACTA,QAAA,UAAA;AACA,QAAA,kBAAA;AACA,QAAA,WAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AAEA,QAAY;AAAZ,KAAA,SAAYC,WAAQ;AAClB,MAAAA,UAAAA,UAAA,SAAA,IAAA,CAAA,IAAA;AACA,MAAAA,UAAAA,UAAA,OAAA,IAAA,CAAA,IAAA;IACF,GAHY,aAAQ,QAAA,WAAR,WAAQ,CAAA,EAAA;AAKpB,aAAgB,eAAe,QAAuB;AACpD,YAAM,QAAQ,aAAa,OAAO,IAAI;AACtC,YAAM,UAAU,MAAM,SAAS,MAAM;AACrC,UAAI,SAAS;AACX,YAAI,OAAO,aAAa;AAAO,gBAAM,IAAI,MAAM,wCAAwC;MACzF,OAAO;AACL,YAAI,CAAC,MAAM,UAAU,OAAO,aAAa,QAAW;AAClD,gBAAM,IAAI,MAAM,0CAA0C;QAC5D;AACA,YAAI,OAAO,aAAa;AAAM,gBAAM,KAAK,MAAM;MACjD;AACA,aAAO;IACT;AAZA,YAAA,iBAAA;AAeA,aAAgB,aAAa,IAAuB;AAClD,YAAM,QAAmB,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAA;AAC9D,UAAI,MAAM,MAAM,QAAA,UAAU;AAAG,eAAO;AACpC,YAAM,IAAI,MAAM,0CAA0C,MAAM,KAAK,GAAG,CAAC;IAC3E;AAJA,YAAA,eAAA;AAMA,aAAgB,uBAAuB,IAAkB,OAAiB;AACxE,YAAM,EAAC,KAAK,MAAM,KAAI,IAAI;AAC1B,YAAM,WAAW,cAAc,OAAO,KAAK,WAAW;AACtD,YAAM,aACJ,MAAM,SAAS,KACf,EAAE,SAAS,WAAW,KAAK,MAAM,WAAW,MAAK,GAAA,gBAAA,uBAAsB,IAAI,MAAM,CAAC,CAAC;AACrF,UAAI,YAAY;AACd,cAAM,YAAY,eAAe,OAAO,MAAM,KAAK,eAAe,SAAS,KAAK;AAChF,YAAI,GAAG,WAAW,MAAK;AACrB,cAAI,SAAS;AAAQ,uBAAW,IAAI,OAAO,QAAQ;;AAC9C,4BAAgB,EAAE;QACzB,CAAC;MACH;AACA,aAAO;IACT;AAdA,YAAA,yBAAA;AAgBA,QAAM,YAA2B,oBAAI,IAAI,CAAC,UAAU,UAAU,WAAW,WAAW,MAAM,CAAC;AAC3F,aAAS,cAAc,OAAmB,aAA+B;AACvE,aAAO,cACH,MAAM,OAAO,CAAC,MAAM,UAAU,IAAI,CAAC,KAAM,gBAAgB,WAAW,MAAM,OAAQ,IAClF,CAAA;IACN;AAEA,aAAS,WAAW,IAAkB,OAAmB,UAAoB;AAC3E,YAAM,EAAC,KAAK,MAAM,KAAI,IAAI;AAC1B,YAAM,WAAW,IAAI,IAAI,aAAY,GAAA,UAAA,YAAW,IAAI,EAAE;AACtD,YAAM,UAAU,IAAI,IAAI,YAAW,GAAA,UAAA,aAAY;AAC/C,UAAI,KAAK,gBAAgB,SAAS;AAChC,YAAI,IAAG,GAAA,UAAA,KAAI,QAAQ,iCAAiC,IAAI,QAAQ,IAAI,gBAAgB,MAClF,IACG,OAAO,OAAM,GAAA,UAAA,KAAI,IAAI,KAAK,EAC1B,OAAO,WAAU,GAAA,UAAA,YAAW,IAAI,EAAE,EAClC,GAAG,eAAe,OAAO,MAAM,KAAK,aAAa,GAAG,MAAM,IAAI,OAAO,SAAS,IAAI,CAAC,CAAC;MAE3F;AACA,UAAI,IAAG,GAAA,UAAA,KAAI,OAAO,gBAAgB;AAClC,iBAAW,KAAK,UAAU;AACxB,YAAI,UAAU,IAAI,CAAC,KAAM,MAAM,WAAW,KAAK,gBAAgB,SAAU;AACvE,6BAAmB,CAAC;QACtB;MACF;AACA,UAAI,KAAI;AACR,sBAAgB,EAAE;AAClB,UAAI,MAAK;AAET,UAAI,IAAG,GAAA,UAAA,KAAI,OAAO,kBAAkB,MAAK;AACvC,YAAI,OAAO,MAAM,OAAO;AACxB,yBAAiB,IAAI,OAAO;MAC9B,CAAC;AAED,eAAS,mBAAmB,GAAS;AACnC,gBAAQ,GAAG;UACT,KAAK;AACH,gBACG,QAAO,GAAA,UAAA,KAAI,QAAQ,mBAAmB,QAAQ,eAAe,EAC7D,OAAO,UAAS,GAAA,UAAA,UAAS,IAAI,EAAE,EAC/B,QAAO,GAAA,UAAA,KAAI,IAAI,WAAW,EAC1B,OAAO,UAAS,GAAA,UAAA,MAAK;AACxB;UACF,KAAK;AACH,gBACG,QACC,GAAA,UAAA,KAAI,QAAQ,oBAAoB,IAAI;oBAC5B,QAAQ,mBAAmB,IAAI,OAAO,IAAI,QAAQ,IAAI,GAAG,EAElE,OAAO,UAAS,GAAA,UAAA,MAAK,IAAI,EAAE;AAC9B;UACF,KAAK;AACH,gBACG,QACC,GAAA,UAAA,KAAI,QAAQ,qBAAqB,IAAI;oBAC7B,QAAQ,oBAAoB,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAErF,OAAO,UAAS,GAAA,UAAA,MAAK,IAAI,EAAE;AAC9B;UACF,KAAK;AACH,gBACG,QAAO,GAAA,UAAA,KAAI,IAAI,mBAAmB,IAAI,aAAa,IAAI,WAAW,EAClE,OAAO,SAAS,KAAK,EACrB,QAAO,GAAA,UAAA,KAAI,IAAI,kBAAkB,IAAI,QAAQ,EAC7C,OAAO,SAAS,IAAI;AACvB;UACF,KAAK;AACH,gBAAI,QAAO,GAAA,UAAA,KAAI,IAAI,cAAc,IAAI,aAAa,IAAI,YAAY;AAClE,gBAAI,OAAO,SAAS,IAAI;AACxB;UAEF,KAAK;AACH,gBACG,QACC,GAAA,UAAA,KAAI,QAAQ,oBAAoB,QAAQ;mBACjC,QAAQ,qBAAqB,IAAI,WAAW,EAEpD,OAAO,UAAS,GAAA,UAAA,MAAK,IAAI,GAAG;QACnC;MACF;IACF;AAEA,aAAS,iBAAiB,EAAC,KAAK,YAAY,mBAAkB,GAAiB,MAAU;AAEvF,UAAI,IAAG,GAAA,UAAA,KAAI,UAAU,kBAAkB,MACrC,IAAI,QAAO,GAAA,UAAA,KAAI,UAAU,IAAI,kBAAkB,KAAK,IAAI,CAAC;IAE7D;AAEA,aAAgB,cACd,UACA,MACA,YACA,UAAU,SAAS,SAAO;AAE1B,YAAM,KAAK,YAAY,SAAS,UAAU,UAAA,UAAU,KAAK,UAAA,UAAU;AACnE,UAAI;AACJ,cAAQ,UAAU;QAChB,KAAK;AACH,kBAAO,GAAA,UAAA,KAAI,IAAI,IAAI,EAAE;QACvB,KAAK;AACH,kBAAO,GAAA,UAAA,mBAAkB,IAAI;AAC7B;QACF,KAAK;AACH,kBAAO,GAAA,UAAA,KAAI,IAAI,cAAc,IAAI,kCAAkC,IAAI;AACvE;QACF,KAAK;AACH,iBAAO,SAAQ,GAAA,UAAA,OAAM,IAAI,mBAAmB,IAAI,GAAG;AACnD;QACF,KAAK;AACH,iBAAO,QAAO;AACd;QACF;AACE,kBAAO,GAAA,UAAA,YAAW,IAAI,IAAI,EAAE,IAAI,QAAQ;MAC5C;AACA,aAAO,YAAY,SAAS,UAAU,QAAO,GAAA,UAAA,KAAI,IAAI;AAErD,eAAS,QAAQ,QAAc,UAAA,KAAG;AAChC,gBAAO,GAAA,UAAA,MAAI,GAAA,UAAA,YAAW,IAAI,gBAAgB,OAAO,cAAa,GAAA,UAAA,cAAa,IAAI,MAAM,UAAA,GAAG;MAC1F;IACF;AA/BA,YAAA,gBAAA;AAiCA,aAAgB,eACd,WACA,MACA,YACA,SAAkB;AAElB,UAAI,UAAU,WAAW,GAAG;AAC1B,eAAO,cAAc,UAAU,CAAC,GAAG,MAAM,YAAY,OAAO;MAC9D;AACA,UAAI;AACJ,YAAM,SAAQ,GAAA,OAAA,QAAO,SAAS;AAC9B,UAAI,MAAM,SAAS,MAAM,QAAQ;AAC/B,cAAM,UAAS,GAAA,UAAA,YAAW,IAAI;AAC9B,eAAO,MAAM,OAAO,UAAS,GAAA,UAAA,MAAK,IAAI,OAAO,MAAM;AACnD,eAAO,MAAM;AACb,eAAO,MAAM;AACb,eAAO,MAAM;MACf,OAAO;AACL,eAAO,UAAA;MACT;AACA,UAAI,MAAM;AAAQ,eAAO,MAAM;AAC/B,iBAAW,KAAK;AAAO,gBAAO,GAAA,UAAA,KAAI,MAAM,cAAc,GAAe,MAAM,YAAY,OAAO,CAAC;AAC/F,aAAO;IACT;AAvBA,YAAA,iBAAA;AA2BA,QAAM,YAAoC;MACxC,SAAS,CAAC,EAAC,OAAM,MAAM,WAAW,MAAM;MACxC,QAAQ,CAAC,EAAC,QAAQ,YAAW,MAC3B,OAAO,UAAU,YAAW,GAAA,UAAA,YAAW,MAAM,OAAM,GAAA,UAAA,YAAW,WAAW;;AAG7E,aAAgB,gBAAgB,IAAgB;AAC9C,YAAM,MAAM,oBAAoB,EAAE;AAClC,OAAA,GAAA,SAAA,aAAY,KAAK,SAAS;IAC5B;AAHA,YAAA,kBAAA;AAKA,aAAS,oBAAoB,IAAgB;AAC3C,YAAM,EAAC,KAAK,MAAM,OAAM,IAAI;AAC5B,YAAM,cAAa,GAAA,OAAA,gBAAe,IAAI,QAAQ,MAAM;AACpD,aAAO;QACL;QACA,SAAS;QACT;QACA,QAAQ,OAAO;QACf;QACA,aAAa;QACb,cAAc;QACd,QAAQ,CAAA;QACR;;IAEJ;;;;;;;;;;ACpOA,QAAA,YAAA;AACA,QAAA,SAAA;AAEA,aAAgB,eAAe,IAAkB,IAAW;AAC1D,YAAM,EAAC,YAAY,MAAK,IAAI,GAAG;AAC/B,UAAI,OAAO,YAAY,YAAY;AACjC,mBAAW,OAAO,YAAY;AAC5B,wBAAc,IAAI,KAAK,WAAW,GAAG,EAAE,OAAO;QAChD;MACF,WAAW,OAAO,WAAW,MAAM,QAAQ,KAAK,GAAG;AACjD,cAAM,QAAQ,CAAC,KAAK,MAAc,cAAc,IAAI,GAAG,IAAI,OAAO,CAAC;MACrE;IACF;AATA,YAAA,iBAAA;AAWA,aAAS,cAAc,IAAkB,MAAuB,cAAqB;AACnF,YAAM,EAAC,KAAK,eAAe,MAAM,KAAI,IAAI;AACzC,UAAI,iBAAiB;AAAW;AAChC,YAAM,aAAY,GAAA,UAAA,KAAI,IAAI,IAAG,GAAA,UAAA,aAAY,IAAI,CAAC;AAC9C,UAAI,eAAe;AACjB,SAAA,GAAA,OAAA,iBAAgB,IAAI,2BAA2B,SAAS,EAAE;AAC1D;MACF;AAEA,UAAI,aAAY,GAAA,UAAA,KAAI,SAAS;AAC7B,UAAI,KAAK,gBAAgB,SAAS;AAChC,qBAAY,GAAA,UAAA,KAAI,SAAS,OAAO,SAAS,gBAAgB,SAAS;MACpE;AAGA,UAAI,GAAG,YAAW,GAAA,UAAA,KAAI,SAAS,OAAM,GAAA,UAAA,WAAU,YAAY,CAAC,EAAE;IAChE;;;;;;;;;;AC5BA,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AACA,QAAA,SAAA;AACA,aAAgB,uBAAuB,KAAiB,MAAY;AAClE,YAAM,EAAC,KAAK,MAAM,GAAE,IAAI;AACxB,UAAI,GAAG,iBAAiB,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa,GAAG,MAAK;AACpE,YAAI,UAAU,EAAC,kBAAiB,GAAA,UAAA,KAAI,IAAI,GAAE,GAAG,IAAI;AACjD,YAAI,MAAK;MACX,CAAC;IACH;AANA,YAAA,yBAAA;AAQA,aAAgB,iBACd,EAAC,KAAK,MAAM,IAAI,EAAC,KAAI,EAAC,GACtB,YACA,SAAa;AAEb,cAAO,GAAA,UAAA,IACL,GAAG,WAAW,IAAI,CAAC,UACjB,GAAA,UAAA,KAAI,iBAAiB,KAAK,MAAM,MAAM,KAAK,aAAa,IAAG,GAAA,UAAA,KAAI,OAAO,MAAM,IAAI,EAAE,CAAC,CACpF;IAEL;AAVA,YAAA,mBAAA;AAYA,aAAgB,kBAAkB,KAAiB,SAAa;AAC9D,UAAI,UAAU,EAAC,iBAAiB,QAAO,GAAG,IAAI;AAC9C,UAAI,MAAK;IACX;AAHA,YAAA,oBAAA;AAKA,aAAgB,YAAY,KAAY;AACtC,aAAO,IAAI,WAAW,QAAQ;;QAE5B,KAAK,OAAO,UAAU;QACtB,OAAM,GAAA,UAAA;OACP;IACH;AANA,YAAA,cAAA;AAQA,aAAgB,cAAc,KAAc,MAAY,UAAuB;AAC7E,cAAO,GAAA,UAAA,KAAI,YAAY,GAAG,CAAC,SAAS,IAAI,KAAK,QAAQ;IACvD;AAFA,YAAA,gBAAA;AAIA,aAAgB,eACd,KACA,MACA,UACA,eAAuB;AAEvB,YAAM,QAAO,GAAA,UAAA,KAAI,IAAI,IAAG,GAAA,UAAA,aAAY,QAAQ,CAAC;AAC7C,aAAO,iBAAgB,GAAA,UAAA,KAAI,IAAI,OAAO,cAAc,KAAK,MAAM,QAAQ,CAAC,KAAK;IAC/E;AARA,YAAA,iBAAA;AAUA,aAAgB,iBACd,KACA,MACA,UACA,eAAuB;AAEvB,YAAM,QAAO,GAAA,UAAA,KAAI,IAAI,IAAG,GAAA,UAAA,aAAY,QAAQ,CAAC;AAC7C,aAAO,iBAAgB,GAAA,UAAA,IAAG,OAAM,GAAA,UAAA,KAAI,cAAc,KAAK,MAAM,QAAQ,CAAC,CAAC,IAAI;IAC7E;AARA,YAAA,mBAAA;AAUA,aAAgB,oBAAoBC,YAAqB;AACvD,aAAOA,aAAY,OAAO,KAAKA,UAAS,EAAE,OAAO,CAAC,MAAM,MAAM,WAAW,IAAI,CAAA;IAC/E;AAFA,YAAA,sBAAA;AAIA,aAAgB,iBAAiB,IAAeA,YAAoB;AAClE,aAAO,oBAAoBA,UAAS,EAAE,OACpC,CAAC,MAAM,EAAC,GAAA,OAAA,mBAAkB,IAAIA,WAAU,CAAC,CAAc,CAAC;IAE5D;AAJA,YAAA,mBAAA;AAMA,aAAgB,iBACd,EAAC,YAAY,MAAM,IAAI,EAAC,KAAK,cAAc,YAAY,UAAS,GAAG,GAAE,GACrE,MACA,SACA,YAAoB;AAEpB,YAAM,gBAAgB,cAAa,GAAA,UAAA,KAAI,UAAU,KAAK,IAAI,KAAK,YAAY,GAAG,UAAU,KAAK;AAC7F,YAAM,SAAkC;QACtC,CAAC,QAAA,QAAE,eAAc,GAAA,UAAA,WAAU,QAAA,QAAE,cAAc,SAAS,CAAC;QACrD,CAAC,QAAA,QAAE,YAAY,GAAG,UAAU;QAC5B,CAAC,QAAA,QAAE,oBAAoB,GAAG,kBAAkB;QAC5C,CAAC,QAAA,QAAE,UAAU,QAAA,QAAE,QAAQ;;AAEzB,UAAI,GAAG,KAAK;AAAY,eAAO,KAAK,CAAC,QAAA,QAAE,gBAAgB,QAAA,QAAE,cAAc,CAAC;AACxE,YAAM,QAAO,GAAA,UAAA,KAAI,aAAa,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC;AACxD,aAAO,YAAY,UAAA,OAAM,GAAA,UAAA,KAAI,IAAI,SAAS,OAAO,KAAK,IAAI,OAAM,GAAA,UAAA,KAAI,IAAI,IAAI,IAAI;IAClF;AAhBA,YAAA,mBAAA;AAkBA,QAAM,aAAY,GAAA,UAAA;AAElB,aAAgB,WAAW,EAAC,KAAK,IAAI,EAAC,KAAI,EAAC,GAAe,SAAe;AACvE,YAAM,IAAI,KAAK,gBAAgB,MAAM;AACrC,YAAM,EAAC,OAAM,IAAI,KAAK;AACtB,YAAM,KAAK,OAAO,SAAS,CAAC;AAE5B,aAAO,IAAI,WAAW,WAAW;QAC/B,KAAK,GAAG,SAAQ;QAChB,KAAK;QACL,OAAM,GAAA,UAAA,KAAI,OAAO,SAAS,eAAe,aAAY,GAAA,OAAA,SAAQ,KAAK,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC;OAC3F;IACH;AAVA,YAAA,aAAA;AAYA,aAAgB,cAAc,KAAe;AAC3C,YAAM,EAAC,KAAK,MAAM,SAAS,GAAE,IAAI;AACjC,YAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,UAAI,GAAG,WAAW;AAChB,cAAM,WAAW,IAAI,IAAI,SAAS,IAAI;AACtC,sBAAc,MAAM,IAAI,OAAO,UAAU,KAAK,CAAC;AAC/C,eAAO;MACT;AACA,UAAI,IAAI,OAAO,IAAI;AACnB,oBAAc,MAAM,IAAI,MAAK,CAAE;AAC/B,aAAO;AAEP,eAAS,cAAc,UAAoB;AACzC,cAAM,MAAM,IAAI,MAAM,QAAO,GAAA,UAAA,KAAI,IAAI,SAAS;AAC9C,YAAI,SAAS,KAAK,GAAG,KAAK,CAAC,MAAK;AAC9B,cAAI,UACF;YACE;YACA,UAAU;YACV,cAAc,OAAA,KAAK;aAErB,KAAK;AAEP,cAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,QAAQ;QAC7B,CAAC;MACH;IACF;AA1BA,YAAA,gBAAA;AA4BA,aAAgB,cAAc,KAAe;AAC3C,YAAM,EAAC,KAAK,QAAQ,SAAS,GAAE,IAAI;AAEnC,UAAI,CAAC,MAAM,QAAQ,MAAM;AAAG,cAAM,IAAI,MAAM,0BAA0B;AACtE,YAAM,cAAc,OAAO,KAAK,CAAC,SAAmB,GAAA,OAAA,mBAAkB,IAAI,GAAG,CAAC;AAC9E,UAAI,eAAe,CAAC,GAAG,KAAK;AAAa;AAEzC,YAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AACpC,YAAM,WAAW,IAAI,KAAK,QAAQ;AAElC,UAAI,MAAM,MACR,OAAO,QAAQ,CAAC,MAAiB,MAAa;AAC5C,cAAM,SAAS,IAAI,UACjB;UACE;UACA,YAAY;UACZ,eAAe;WAEjB,QAAQ;AAEV,YAAI,OAAO,QAAO,GAAA,UAAA,KAAI,KAAK,OAAO,QAAQ,EAAE;AAC5C,cAAM,SAAS,IAAI,oBAAoB,QAAQ,QAAQ;AAGvD,YAAI,CAAC;AAAQ,cAAI,IAAG,GAAA,UAAA,KAAI,KAAK,CAAC;MAChC,CAAC,CAAC;AAGJ,UAAI,OACF,OACA,MAAM,IAAI,MAAK,GACf,MAAM,IAAI,MAAM,IAAI,CAAC;IAEzB;AAjCA,YAAA,gBAAA;;;;;;;;;;AC5HA,QAAA,YAAA;AACA,QAAA,UAAA;AAEA,QAAA,SAAA;AACA,QAAA,WAAA;AAIA,aAAgB,iBAAiB,KAAiB,KAA2B;AAC3E,YAAM,EAAC,KAAK,SAAS,QAAQ,cAAc,GAAE,IAAI;AACjD,YAAM,cAAc,IAAI,MAAM,KAAK,GAAG,MAAM,QAAQ,cAAc,EAAE;AACpE,YAAM,YAAY,WAAW,KAAK,SAAS,WAAW;AACtD,UAAI,GAAG,KAAK,mBAAmB;AAAO,WAAG,KAAK,eAAe,aAAa,IAAI;AAE9E,YAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,UAAI,UACF;QACE,QAAQ;QACR,YAAY,UAAA;QACZ,eAAe,GAAG,GAAG,aAAa,IAAI,OAAO;QAC7C,cAAc;QACd,eAAe;SAEjB,KAAK;AAEP,UAAI,KAAK,OAAO,MAAM,IAAI,MAAM,IAAI,CAAC;IACvC;AAlBA,YAAA,mBAAA;AAoBA,aAAgB,gBAAgB,KAAiB,KAA0B;;AACzE,YAAM,EAAC,KAAK,SAAS,QAAQ,cAAc,OAAO,GAAE,IAAI;AACxD,wBAAkB,IAAI,GAAG;AACzB,YAAM,WACJ,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,GAAG,MAAM,QAAQ,cAAc,EAAE,IAAI,IAAI;AACpF,YAAM,cAAc,WAAW,KAAK,SAAS,QAAQ;AACrD,YAAM,QAAQ,IAAI,IAAI,OAAO;AAC7B,UAAI,WAAW,OAAO,eAAe;AACrC,UAAI,IAAG,KAAA,IAAI,WAAK,QAAA,OAAA,SAAA,KAAI,KAAK;AAEzB,eAAS,kBAAe;AACtB,YAAI,IAAI,WAAW,OAAO;AACxB,sBAAW;AACX,cAAI,IAAI;AAAW,uBAAW,GAAG;AACjC,qBAAW,MAAM,IAAI,MAAK,CAAE;QAC9B,OAAO;AACL,gBAAM,WAAW,IAAI,QAAQ,cAAa,IAAK,aAAY;AAC3D,cAAI,IAAI;AAAW,uBAAW,GAAG;AACjC,qBAAW,MAAM,QAAQ,KAAK,QAAQ,CAAC;QACzC;MACF;AAEA,eAAS,gBAAa;AACpB,cAAM,WAAW,IAAI,IAAI,YAAY,IAAI;AACzC,YAAI,IACF,MAAM,aAAY,GAAA,UAAA,UAAS,GAC3B,CAAC,MACC,IAAI,OAAO,OAAO,KAAK,EAAE,IACvB,GAAA,UAAA,KAAI,CAAC,eAAe,GAAG,eAAuB,IAC9C,MAAM,IAAI,OAAO,WAAU,GAAA,UAAA,KAAI,CAAC,SAAS,GACzC,MAAM,IAAI,MAAM,CAAC,CAAC,CACnB;AAEL,eAAO;MACT;AAEA,eAAS,eAAY;AACnB,cAAM,gBAAe,GAAA,UAAA,KAAI,WAAW;AACpC,YAAI,OAAO,cAAc,IAAI;AAC7B,oBAAY,UAAA,GAAG;AACf,eAAO;MACT;AAEA,eAAS,YAAY,SAAe,IAAI,SAAQ,GAAA,UAAA,aAAY,UAAA,KAAG;AAC7D,cAAM,UAAU,GAAG,KAAK,cAAc,QAAA,QAAE,OAAO,QAAA,QAAE;AACjD,cAAM,aAAa,EAAG,aAAa,OAAO,CAAC,SAAU,IAAI,WAAW;AACpE,YAAI,OACF,QACA,GAAA,UAAA,KAAI,MAAM,IAAG,GAAA,OAAA,kBAAiB,KAAK,aAAa,SAAS,UAAU,CAAC,IACpE,IAAI,SAAS;MAEjB;AAEA,eAAS,WAAW,QAAkB;;AACpC,YAAI,IAAG,GAAA,UAAA,MAAIC,MAAA,IAAI,WAAK,QAAAA,QAAA,SAAAA,MAAI,KAAK,GAAG,MAAM;MACxC;IACF;AAxDA,YAAA,kBAAA;AA0DA,aAAS,WAAW,KAAe;AACjC,YAAM,EAAC,KAAK,MAAM,GAAE,IAAI;AACxB,UAAI,GAAG,GAAG,YAAY,MAAM,IAAI,OAAO,OAAM,GAAA,UAAA,KAAI,GAAG,UAAU,IAAI,GAAG,kBAAkB,GAAG,CAAC;IAC7F;AAEA,aAAS,QAAQ,KAAiB,MAAU;AAC1C,YAAM,EAAC,IAAG,IAAI;AACd,UAAI,IACF,GAAA,UAAA,mBAAkB,IAAI,KACtB,MAAK;AACH,YACG,OAAO,QAAA,QAAE,UAAS,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,eAAe,IAAI,MAAM,QAAA,QAAE,OAAO,WAAW,IAAI,GAAG,EACnF,OAAO,QAAA,QAAE,SAAQ,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,SAAS;AAC1C,SAAA,GAAA,SAAA,cAAa,GAAG;MAClB,GACA,MAAM,IAAI,MAAK,CAAE;IAErB;AAEA,aAAS,kBAAkB,EAAC,UAAS,GAAiB,KAA0B;AAC9E,UAAI,IAAI,SAAS,CAAC,UAAU;AAAQ,cAAM,IAAI,MAAM,8BAA8B;IACpF;AAEA,aAAS,WAAW,KAAc,SAAiB,QAAiC;AAClF,UAAI,WAAW;AAAW,cAAM,IAAI,MAAM,YAAY,OAAO,qBAAqB;AAClF,aAAO,IAAI,WACT,WACA,OAAO,UAAU,aAAa,EAAC,KAAK,OAAM,IAAI,EAAC,KAAK,QAAQ,OAAM,GAAA,UAAA,WAAU,MAAM,EAAC,CAAC;IAExF;AAEA,aAAgB,gBACd,QACA,YACA,iBAAiB,OAAK;AAGtB,aACE,CAAC,WAAW,UACZ,WAAW,KAAK,CAAC,OACf,OAAO,UACH,MAAM,QAAQ,MAAM,IACpB,OAAO,WACP,UAAU,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,IAC5D,OAAO,UAAU,MAAO,kBAAkB,OAAO,UAAU,WAAY;IAGjF;AAhBA,YAAA,kBAAA;AAkBA,aAAgB,qBACd,EAAC,QAAQ,MAAM,MAAM,cAAa,GAClC,KACA,SAAe;AAGf,UAAI,MAAM,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,SAAS,OAAO,IAAI,IAAI,YAAY,SAAS;AACzF,cAAM,IAAI,MAAM,0BAA0B;MAC5C;AAEA,YAAM,OAAO,IAAI;AACjB,UAAI,SAAI,QAAJ,SAAI,SAAA,SAAJ,KAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,CAAC,GAAG;AAC3E,cAAM,IAAI,MAAM,2CAA2C,OAAO,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE;MACzF;AAEA,UAAI,IAAI,gBAAgB;AACtB,cAAM,QAAQ,IAAI,eAAe,OAAO,OAAO,CAAC;AAChD,YAAI,CAAC,OAAO;AACV,gBAAM,MACJ,YAAY,OAAO,+BAA+B,aAAa,QAC/D,KAAK,WAAW,IAAI,eAAe,MAAM;AAC3C,cAAI,KAAK,mBAAmB;AAAO,iBAAK,OAAO,MAAM,GAAG;;AACnD,kBAAM,IAAI,MAAM,GAAG;QAC1B;MACF;IACF;AAzBA,YAAA,uBAAA;;;;;;;;;;AC/IA,QAAA,YAAA;AACA,QAAA,SAAA;AA6CA,aAAgB,aACd,IACA,EAAC,SAAS,YAAY,QAAQ,YAAY,eAAe,aAAY,GAAgB;AAErF,UAAI,YAAY,UAAa,WAAW,QAAW;AACjD,cAAM,IAAI,MAAM,sDAAsD;MACxE;AAEA,UAAI,YAAY,QAAW;AACzB,cAAM,MAAM,GAAG,OAAO,OAAO;AAC7B,eAAO,eAAe,SAClB;UACE,QAAQ;UACR,aAAY,GAAA,UAAA,KAAI,GAAG,UAAU,IAAG,GAAA,UAAA,aAAY,OAAO,CAAC;UACpD,eAAe,GAAG,GAAG,aAAa,IAAI,OAAO;YAE/C;UACE,QAAQ,IAAI,UAAU;UACtB,aAAY,GAAA,UAAA,KAAI,GAAG,UAAU,IAAG,GAAA,UAAA,aAAY,OAAO,CAAC,IAAG,GAAA,UAAA,aAAY,UAAU,CAAC;UAC9E,eAAe,GAAG,GAAG,aAAa,IAAI,OAAO,KAAI,GAAA,OAAA,gBAAe,UAAU,CAAC;;MAEnF;AAEA,UAAI,WAAW,QAAW;AACxB,YAAI,eAAe,UAAa,kBAAkB,UAAa,iBAAiB,QAAW;AACzF,gBAAM,IAAI,MAAM,6EAA6E;QAC/F;AACA,eAAO;UACL;UACA;UACA;UACA;;MAEJ;AAEA,YAAM,IAAI,MAAM,6CAA6C;IAC/D;AApCA,YAAA,eAAA;AAsCA,aAAgB,oBACd,WACA,IACA,EAAC,UAAU,cAAc,QAAQ,MAAM,WAAW,aAAY,GAAgB;AAE9E,UAAI,SAAS,UAAa,aAAa,QAAW;AAChD,cAAM,IAAI,MAAM,qDAAqD;MACvE;AAEA,YAAM,EAAC,IAAG,IAAI;AAEd,UAAI,aAAa,QAAW;AAC1B,cAAM,EAAC,WAAW,aAAa,KAAI,IAAI;AACvC,cAAM,WAAW,IAAI,IAAI,SAAQ,GAAA,UAAA,KAAI,GAAG,IAAI,IAAG,GAAA,UAAA,aAAY,QAAQ,CAAC,IAAI,IAAI;AAC5E,yBAAiB,QAAQ;AACzB,kBAAU,aAAY,GAAA,UAAA,OAAM,SAAS,IAAG,GAAA,OAAA,cAAa,UAAU,QAAQ,KAAK,gBAAgB,CAAC;AAC7F,kBAAU,sBAAqB,GAAA,UAAA,KAAI,QAAQ;AAC3C,kBAAU,cAAc,CAAC,GAAG,aAAa,UAAU,kBAAkB;MACvE;AAEA,UAAI,SAAS,QAAW;AACtB,cAAM,WAAW,gBAAgB,UAAA,OAAO,OAAO,IAAI,IAAI,QAAQ,MAAM,IAAI;AACzE,yBAAiB,QAAQ;AACzB,YAAI,iBAAiB;AAAW,oBAAU,eAAe;MAE3D;AAEA,UAAI;AAAW,kBAAU,YAAY;AAErC,eAAS,iBAAiB,WAAe;AACvC,kBAAU,OAAO;AACjB,kBAAU,YAAY,GAAG,YAAY;AACrC,kBAAU,YAAY,CAAA;AACtB,WAAG,oBAAoB,oBAAI,IAAG;AAC9B,kBAAU,aAAa,GAAG;AAC1B,kBAAU,YAAY,CAAC,GAAG,GAAG,WAAW,SAAS;MACnD;IACF;AArCA,YAAA,sBAAA;AAuCA,aAAgB,oBACd,WACA,EAAC,kBAAkB,aAAa,eAAe,cAAc,UAAS,GAAgB;AAEtF,UAAI,kBAAkB;AAAW,kBAAU,gBAAgB;AAC3D,UAAI,iBAAiB;AAAW,kBAAU,eAAe;AACzD,UAAI,cAAc;AAAW,kBAAU,YAAY;AACnD,gBAAU,mBAAmB;AAC7B,gBAAU,cAAc;IAC1B;AATA,YAAA,sBAAA;;;;;AC7HA;AAAA;AAAA;AAMA,WAAO,UAAU,SAAS,MAAM,GAAG,GAAG;AACpC,UAAI,MAAM;AAAG,eAAO;AAEpB,UAAI,KAAK,KAAK,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAC1D,YAAI,EAAE,gBAAgB,EAAE;AAAa,iBAAO;AAE5C,YAAI,QAAQ,GAAG;AACf,YAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,mBAAS,EAAE;AACX,cAAI,UAAU,EAAE;AAAQ,mBAAO;AAC/B,eAAK,IAAI,QAAQ,QAAQ;AACvB,gBAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAG,qBAAO;AACjC,iBAAO;AAAA,QACT;AAIA,YAAI,EAAE,gBAAgB;AAAQ,iBAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5E,YAAI,EAAE,YAAY,OAAO,UAAU;AAAS,iBAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAC7E,YAAI,EAAE,aAAa,OAAO,UAAU;AAAU,iBAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AAEjF,eAAO,OAAO,KAAK,CAAC;AACpB,iBAAS,KAAK;AACd,YAAI,WAAW,OAAO,KAAK,CAAC,EAAE;AAAQ,iBAAO;AAE7C,aAAK,IAAI,QAAQ,QAAQ;AACvB,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,KAAK,CAAC,CAAC;AAAG,mBAAO;AAEhE,aAAK,IAAI,QAAQ,QAAQ,KAAI;AAC3B,cAAI,MAAM,KAAK,CAAC;AAEhB,cAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAAG,mBAAO;AAAA,QACrC;AAEA,eAAO;AAAA,MACT;AAGA,aAAO,MAAI,KAAK,MAAI;AAAA,IACtB;AAAA;AAAA;;;AC7CA;AAAA;AAAA;AAEA,QAAI,WAAW,OAAO,UAAU,SAAU,QAAQ,MAAM,IAAI;AAE1D,UAAI,OAAO,QAAQ,YAAY;AAC7B,aAAK;AACL,eAAO,CAAC;AAAA,MACV;AAEA,WAAK,KAAK,MAAM;AAChB,UAAI,MAAO,OAAO,MAAM,aAAc,KAAK,GAAG,OAAO,WAAW;AAAA,MAAC;AACjE,UAAI,OAAO,GAAG,QAAQ,WAAW;AAAA,MAAC;AAElC,gBAAU,MAAM,KAAK,MAAM,QAAQ,IAAI,MAAM;AAAA,IAC/C;AAGA,aAAS,WAAW;AAAA,MAClB,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,sBAAsB;AAAA,MACtB,eAAe;AAAA,MACf,KAAK;AAAA,MACL,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAEA,aAAS,gBAAgB;AAAA,MACvB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAEA,aAAS,gBAAgB;AAAA,MACvB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,mBAAmB;AAAA,MACnB,cAAc;AAAA,IAChB;AAEA,aAAS,eAAe;AAAA,MACtB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,UAAU;AAAA,MACV,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,IACjB;AAGA,aAAS,UAAU,MAAM,KAAK,MAAM,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,UAAU;AACrH,UAAI,UAAU,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AACjE,YAAI,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AACrF,iBAAS,OAAO,QAAQ;AACtB,cAAI,MAAM,OAAO,GAAG;AACpB,cAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,gBAAI,OAAO,SAAS,eAAe;AACjC,uBAAS,IAAE,GAAG,IAAE,IAAI,QAAQ;AAC1B,0BAAU,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,UAAU,MAAM,MAAM,MAAM,GAAG,YAAY,SAAS,KAAK,QAAQ,CAAC;AAAA,YACzG;AAAA,UACF,WAAW,OAAO,SAAS,eAAe;AACxC,gBAAI,OAAO,OAAO,OAAO,UAAU;AACjC,uBAAS,QAAQ;AACf,0BAAU,MAAM,KAAK,MAAM,IAAI,IAAI,GAAG,UAAU,MAAM,MAAM,MAAM,cAAc,IAAI,GAAG,YAAY,SAAS,KAAK,QAAQ,IAAI;AAAA,YACjI;AAAA,UACF,WAAW,OAAO,SAAS,YAAa,KAAK,WAAW,EAAE,OAAO,SAAS,eAAgB;AACxF,sBAAU,MAAM,KAAK,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY,SAAS,KAAK,MAAM;AAAA,UACvF;AAAA,QACF;AACA,aAAK,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AAAA,MACxF;AAAA,IACF;AAGA,aAAS,cAAc,KAAK;AAC1B,aAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA,IACpD;AAAA;AAAA;;;;;;;;ACzFA,QAAA,SAAA;AACA,QAAA,QAAA;AACA,QAAA,WAAA;AAMA,QAAM,iBAAiB,oBAAI,IAAI;MAC7B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;KACD;AAED,aAAgB,UAAU,QAAmB,QAA0B,MAAI;AACzE,UAAI,OAAO,UAAU;AAAW,eAAO;AACvC,UAAI,UAAU;AAAM,eAAO,CAAC,OAAO,MAAM;AACzC,UAAI,CAAC;AAAO,eAAO;AACnB,aAAO,UAAU,MAAM,KAAK;IAC9B;AALA,YAAA,YAAA;AAOA,QAAM,eAAe,oBAAI,IAAI;MAC3B;MACA;MACA;MACA;MACA;KACD;AAED,aAAS,OAAO,QAAuB;AACrC,iBAAW,OAAO,QAAQ;AACxB,YAAI,aAAa,IAAI,GAAG;AAAG,iBAAO;AAClC,cAAM,MAAM,OAAO,GAAG;AACtB,YAAI,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,MAAM;AAAG,iBAAO;AACnD,YAAI,OAAO,OAAO,YAAY,OAAO,GAAG;AAAG,iBAAO;MACpD;AACA,aAAO;IACT;AAEA,aAAS,UAAU,QAAuB;AACxC,UAAI,QAAQ;AACZ,iBAAW,OAAO,QAAQ;AACxB,YAAI,QAAQ;AAAQ,iBAAO;AAC3B;AACA,YAAI,eAAe,IAAI,GAAG;AAAG;AAC7B,YAAI,OAAO,OAAO,GAAG,KAAK,UAAU;AAClC,WAAA,GAAA,OAAA,UAAS,OAAO,GAAG,GAAG,CAAC,QAAS,SAAS,UAAU,GAAG,CAAE;QAC1D;AACA,YAAI,UAAU;AAAU,iBAAO;MACjC;AACA,aAAO;IACT;AAEA,aAAgB,YAAY,UAAuB,KAAK,IAAI,WAAmB;AAC7E,UAAI,cAAc;AAAO,aAAK,YAAY,EAAE;AAC5C,YAAM,IAAI,SAAS,MAAM,EAAE;AAC3B,aAAO,aAAa,UAAU,CAAC;IACjC;AAJA,YAAA,cAAA;AAMA,aAAgB,aAAa,UAAuB,GAAgB;AAClE,YAAM,aAAa,SAAS,UAAU,CAAC;AACvC,aAAO,WAAW,MAAM,GAAG,EAAE,CAAC,IAAI;IACpC;AAHA,YAAA,eAAA;AAKA,QAAM,sBAAsB;AAC5B,aAAgB,YAAY,IAAsB;AAChD,aAAO,KAAK,GAAG,QAAQ,qBAAqB,EAAE,IAAI;IACpD;AAFA,YAAA,cAAA;AAIA,aAAgB,WAAW,UAAuB,QAAgB,IAAU;AAC1E,WAAK,YAAY,EAAE;AACnB,aAAO,SAAS,QAAQ,QAAQ,EAAE;IACpC;AAHA,YAAA,aAAA;AAKA,QAAM,SAAS;AAEf,aAAgB,cAAyB,QAAmB,QAAc;AACxE,UAAI,OAAO,UAAU;AAAW,eAAO,CAAA;AACvC,YAAM,EAAC,UAAU,YAAW,IAAI,KAAK;AACrC,YAAM,QAAQ,YAAY,OAAO,QAAQ,KAAK,MAAM;AACpD,YAAM,UAA0C,EAAC,IAAI,MAAK;AAC1D,YAAM,aAAa,YAAY,aAAa,OAAO,KAAK;AACxD,YAAM,YAAuB,CAAA;AAC7B,YAAM,aAA0B,oBAAI,IAAG;AAEvC,eAAS,QAAQ,EAAC,SAAS,KAAI,GAAG,CAAC,KAAK,SAAS,GAAG,kBAAiB;AACnE,YAAI,kBAAkB;AAAW;AACjC,cAAM,WAAW,aAAa;AAC9B,YAAI,cAAc,QAAQ,aAAa;AACvC,YAAI,OAAO,IAAI,QAAQ,KAAK;AAAU,wBAAc,OAAO,KAAK,MAAM,IAAI,QAAQ,CAAC;AACnF,kBAAU,KAAK,MAAM,IAAI,OAAO;AAChC,kBAAU,KAAK,MAAM,IAAI,cAAc;AACvC,gBAAQ,OAAO,IAAI;AAEnB,iBAAS,OAAkB,KAAW;AAEpC,gBAAM,WAAW,KAAK,KAAK,YAAY;AACvC,gBAAM,YAAY,cAAc,SAAS,aAAa,GAAG,IAAI,GAAG;AAChE,cAAI,WAAW,IAAI,GAAG;AAAG,kBAAM,SAAS,GAAG;AAC3C,qBAAW,IAAI,GAAG;AAClB,cAAI,WAAW,KAAK,KAAK,GAAG;AAC5B,cAAI,OAAO,YAAY;AAAU,uBAAW,KAAK,KAAK,QAAQ;AAC9D,cAAI,OAAO,YAAY,UAAU;AAC/B,6BAAiB,KAAK,SAAS,QAAQ,GAAG;UAC5C,WAAW,QAAQ,YAAY,QAAQ,GAAG;AACxC,gBAAI,IAAI,CAAC,MAAM,KAAK;AAClB,+BAAiB,KAAK,UAAU,GAAG,GAAG,GAAG;AACzC,wBAAU,GAAG,IAAI;YACnB,OAAO;AACL,mBAAK,KAAK,GAAG,IAAI;YACnB;UACF;AACA,iBAAO;QACT;AAEA,iBAAS,UAAqB,QAAe;AAC3C,cAAI,OAAO,UAAU,UAAU;AAC7B,gBAAI,CAAC,OAAO,KAAK,MAAM;AAAG,oBAAM,IAAI,MAAM,mBAAmB,MAAM,GAAG;AACtE,mBAAO,KAAK,MAAM,IAAI,MAAM,EAAE;UAChC;QACF;MACF,CAAC;AAED,aAAO;AAEP,eAAS,iBAAiB,MAAiB,MAA6B,KAAW;AACjF,YAAI,SAAS,UAAa,CAAC,MAAM,MAAM,IAAI;AAAG,gBAAM,SAAS,GAAG;MAClE;AAEA,eAAS,SAAS,KAAW;AAC3B,eAAO,IAAI,MAAM,cAAc,GAAG,oCAAoC;MACxE;IACF;AAxDA,YAAA,gBAAA;;;;;;;;;;ACnFA,QAAA,eAAA;AACA,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA,aAAA;AACA,QAAA,aAAA;AACA,QAAA,YAAA;AACA,QAAA,cAAA;AACA,QAAA,YAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AASA,QAAA,WAAA;AASA,aAAgB,qBAAqB,IAAa;AAChD,UAAI,YAAY,EAAE,GAAG;AACnB,sBAAc,EAAE;AAChB,YAAI,kBAAkB,EAAE,GAAG;AACzB,2BAAiB,EAAE;AACnB;QACF;MACF;AACA,uBAAiB,IAAI,OAAM,GAAA,aAAA,sBAAqB,EAAE,CAAC;IACrD;AATA,YAAA,uBAAA;AAWA,aAAS,iBACP,EAAC,KAAK,cAAc,QAAQ,WAAW,KAAI,GAC3C,MAAW;AAEX,UAAI,KAAK,KAAK,KAAK;AACjB,YAAI,KAAK,eAAc,GAAA,UAAA,KAAI,QAAA,QAAE,IAAI,KAAK,QAAA,QAAE,MAAM,IAAI,UAAU,QAAQ,MAAK;AACvE,cAAI,MAAK,GAAA,UAAA,mBAAkB,cAAc,QAAQ,IAAI,CAAC,EAAE;AACxD,+BAAqB,KAAK,IAAI;AAC9B,cAAI,KAAK,IAAI;QACf,CAAC;MACH,OAAO;AACL,YAAI,KAAK,eAAc,GAAA,UAAA,KAAI,QAAA,QAAE,IAAI,KAAK,kBAAkB,IAAI,CAAC,IAAI,UAAU,QAAQ,MACjF,IAAI,KAAK,cAAc,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;MAEpD;IACF;AAEA,aAAS,kBAAkB,MAAqB;AAC9C,cAAO,GAAA,UAAA,MAAK,QAAA,QAAE,YAAY,QAAQ,QAAA,QAAE,UAAU,KAAK,QAAA,QAAE,kBAAkB,KAAK,QAAA,QAAE,QAAQ,IACpF,QAAA,QAAE,IACJ,GAAG,KAAK,cAAa,GAAA,UAAA,OAAM,QAAA,QAAE,cAAc,QAAQ,UAAA,GAAG;IACxD;AAEA,aAAS,qBAAqB,KAAc,MAAqB;AAC/D,UAAI,GACF,QAAA,QAAE,QACF,MAAK;AACH,YAAI,IAAI,QAAA,QAAE,eAAc,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI,QAAA,QAAE,YAAY,EAAE;AACxD,YAAI,IAAI,QAAA,QAAE,aAAY,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI,QAAA,QAAE,UAAU,EAAE;AACpD,YAAI,IAAI,QAAA,QAAE,qBAAoB,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI,QAAA,QAAE,kBAAkB,EAAE;AACpE,YAAI,IAAI,QAAA,QAAE,WAAU,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI,QAAA,QAAE,QAAQ,EAAE;AAChD,YAAI,KAAK;AAAY,cAAI,IAAI,QAAA,QAAE,iBAAgB,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,IAAI,QAAA,QAAE,cAAc,EAAE;MACnF,GACA,MAAK;AACH,YAAI,IAAI,QAAA,QAAE,eAAc,GAAA,UAAA,MAAK;AAC7B,YAAI,IAAI,QAAA,QAAE,aAAY,GAAA,UAAA,aAAY;AAClC,YAAI,IAAI,QAAA,QAAE,qBAAoB,GAAA,UAAA,aAAY;AAC1C,YAAI,IAAI,QAAA,QAAE,UAAU,QAAA,QAAE,IAAI;AAC1B,YAAI,KAAK;AAAY,cAAI,IAAI,QAAA,QAAE,iBAAgB,GAAA,UAAA,MAAK;MACtD,CAAC;IAEL;AAEA,aAAS,iBAAiB,IAAgB;AACxC,YAAM,EAAC,QAAQ,MAAM,IAAG,IAAI;AAC5B,uBAAiB,IAAI,MAAK;AACxB,YAAI,KAAK,YAAY,OAAO;AAAU,yBAAe,EAAE;AACvD,uBAAe,EAAE;AACjB,YAAI,IAAI,QAAA,QAAE,SAAS,IAAI;AACvB,YAAI,IAAI,QAAA,QAAE,QAAQ,CAAC;AACnB,YAAI,KAAK;AAAa,yBAAe,EAAE;AACvC,wBAAgB,EAAE;AAClB,sBAAc,EAAE;MAClB,CAAC;AACD;IACF;AAEA,aAAS,eAAe,IAAgB;AAEtC,YAAM,EAAC,KAAK,aAAY,IAAI;AAC5B,SAAG,YAAY,IAAI,MAAM,cAAa,GAAA,UAAA,KAAI,YAAY,YAAY;AAClE,UAAI,IAAG,GAAA,UAAA,KAAI,GAAG,SAAS,iBAAiB,MAAM,IAAI,QAAO,GAAA,UAAA,KAAI,GAAG,SAAS,WAAU,GAAA,UAAA,aAAY,CAAC;AAChG,UAAI,IAAG,GAAA,UAAA,KAAI,GAAG,SAAS,iBAAiB,MAAM,IAAI,QAAO,GAAA,UAAA,KAAI,GAAG,SAAS,WAAU,GAAA,UAAA,aAAY,CAAC;IAClG;AAEA,aAAS,cAAc,QAAmB,MAAqB;AAC7D,YAAM,QAAQ,OAAO,UAAU,YAAY,OAAO,KAAK,QAAQ;AAC/D,aAAO,UAAU,KAAK,KAAK,UAAU,KAAK,KAAK,YAAW,GAAA,UAAA,mBAAkB,KAAK,QAAQ,UAAA;IAC3F;AAGA,aAAS,cAAc,IAAe,OAAW;AAC/C,UAAI,YAAY,EAAE,GAAG;AACnB,sBAAc,EAAE;AAChB,YAAI,kBAAkB,EAAE,GAAG;AACzB,2BAAiB,IAAI,KAAK;AAC1B;QACF;MACF;AACA,OAAA,GAAA,aAAA,mBAAkB,IAAI,KAAK;IAC7B;AAEA,aAAS,kBAAkB,EAAC,QAAQ,KAAI,GAAY;AAClD,UAAI,OAAO,UAAU;AAAW,eAAO,CAAC;AACxC,iBAAW,OAAO;AAAQ,YAAI,KAAK,MAAM,IAAI,GAAG;AAAG,iBAAO;AAC1D,aAAO;IACT;AAEA,aAAS,YAAY,IAAa;AAChC,aAAO,OAAO,GAAG,UAAU;IAC7B;AAEA,aAAS,iBAAiB,IAAkB,OAAW;AACrD,YAAM,EAAC,QAAQ,KAAK,KAAI,IAAI;AAC5B,UAAI,KAAK,YAAY,OAAO;AAAU,uBAAe,EAAE;AACvD,oBAAc,EAAE;AAChB,uBAAiB,EAAE;AACnB,YAAM,YAAY,IAAI,MAAM,SAAS,QAAA,QAAE,MAAM;AAC7C,sBAAgB,IAAI,SAAS;AAE7B,UAAI,IAAI,QAAO,GAAA,UAAA,KAAI,SAAS,QAAQ,QAAA,QAAE,MAAM,EAAE;IAChD;AAEA,aAAS,cAAc,IAAgB;AACrC,OAAA,GAAA,OAAA,mBAAkB,EAAE;AACpB,2BAAqB,EAAE;IACzB;AAEA,aAAS,gBAAgB,IAAkB,WAAgB;AACzD,UAAI,GAAG,KAAK;AAAK,eAAO,eAAe,IAAI,CAAA,GAAI,OAAO,SAAS;AAC/D,YAAM,SAAQ,GAAA,WAAA,gBAAe,GAAG,MAAM;AACtC,YAAM,gBAAe,GAAA,WAAA,wBAAuB,IAAI,KAAK;AACrD,qBAAe,IAAI,OAAO,CAAC,cAAc,SAAS;IACpD;AAEA,aAAS,qBAAqB,IAAgB;AAC5C,YAAM,EAAC,QAAQ,eAAe,MAAM,KAAI,IAAI;AAC5C,UAAI,OAAO,QAAQ,KAAK,0BAAyB,GAAA,OAAA,sBAAqB,QAAQ,KAAK,KAAK,GAAG;AACzF,aAAK,OAAO,KAAK,6CAA6C,aAAa,GAAG;MAChF;IACF;AAEA,aAAS,eAAe,IAAgB;AACtC,YAAM,EAAC,QAAQ,KAAI,IAAI;AACvB,UAAI,OAAO,YAAY,UAAa,KAAK,eAAe,KAAK,cAAc;AACzE,SAAA,GAAA,OAAA,iBAAgB,IAAI,uCAAuC;MAC7D;IACF;AAEA,aAAS,cAAc,IAAgB;AACrC,YAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ;AACxC,UAAI;AAAO,WAAG,UAAS,GAAA,UAAA,YAAW,GAAG,KAAK,aAAa,GAAG,QAAQ,KAAK;IACzE;AAEA,aAAS,iBAAiB,IAAgB;AACxC,UAAI,GAAG,OAAO,UAAU,CAAC,GAAG,UAAU;AAAQ,cAAM,IAAI,MAAM,6BAA6B;IAC7F;AAEA,aAAS,eAAe,EAAC,KAAK,WAAW,QAAQ,eAAe,KAAI,GAAe;AACjF,YAAM,MAAM,OAAO;AACnB,UAAI,KAAK,aAAa,MAAM;AAC1B,YAAI,MAAK,GAAA,UAAA,KAAI,QAAA,QAAE,IAAI,eAAe,GAAG,GAAG;MAC1C,WAAW,OAAO,KAAK,YAAY,YAAY;AAC7C,cAAM,cAAa,GAAA,UAAA,OAAM,aAAa;AACtC,cAAM,WAAW,IAAI,WAAW,QAAQ,EAAC,KAAK,UAAU,KAAI,CAAC;AAC7D,YAAI,MAAK,GAAA,UAAA,KAAI,QAAA,QAAE,IAAI,kBAAkB,GAAG,KAAK,UAAU,KAAK,QAAQ,UAAU;MAChF;IACF;AAEA,aAAS,cAAc,IAAa;AAClC,YAAM,EAAC,KAAK,WAAW,cAAc,iBAAiB,KAAI,IAAI;AAC9D,UAAI,UAAU,QAAQ;AAEpB,YAAI,IACF,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,UACZ,MAAM,IAAI,OAAO,QAAA,QAAE,IAAI,GACvB,MAAM,IAAI,OAAM,GAAA,UAAA,SAAQ,eAAuB,IAAI,QAAA,QAAE,OAAO,GAAG,CAAC;MAEpE,OAAO;AACL,YAAI,QAAO,GAAA,UAAA,KAAI,YAAY,WAAW,QAAA,QAAE,OAAO;AAC/C,YAAI,KAAK;AAAa,0BAAgB,EAAE;AACxC,YAAI,QAAO,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,QAAQ;MACjC;IACF;AAEA,aAAS,gBAAgB,EAAC,KAAK,WAAW,OAAO,MAAK,GAAY;AAChE,UAAI,iBAAiB,UAAA;AAAM,YAAI,QAAO,GAAA,UAAA,KAAI,SAAS,UAAU,KAAK;AAClE,UAAI,iBAAiB,UAAA;AAAM,YAAI,QAAO,GAAA,UAAA,KAAI,SAAS,UAAU,KAAK;IACpE;AAEA,aAAS,eACP,IACA,OACA,YACA,WAAgB;AAEhB,YAAM,EAAC,KAAK,QAAQ,MAAM,WAAW,MAAM,KAAI,IAAI;AACnD,YAAM,EAAC,MAAK,IAAI;AAChB,UAAI,OAAO,SAAS,KAAK,yBAAyB,EAAC,GAAA,OAAA,sBAAqB,QAAQ,KAAK,IAAI;AACvF,YAAI,MAAM,MAAM,YAAY,IAAI,QAAS,MAAM,IAAI,KAAc,UAAU,CAAC;AAC5E;MACF;AACA,UAAI,CAAC,KAAK;AAAK,yBAAiB,IAAI,KAAK;AACzC,UAAI,MAAM,MAAK;AACb,mBAAW,SAAS,MAAM;AAAO,wBAAc,KAAK;AACpD,sBAAc,MAAM,IAAI;MAC1B,CAAC;AAED,eAAS,cAAc,OAAgB;AACrC,YAAI,EAAC,GAAA,gBAAA,gBAAe,QAAQ,KAAK;AAAG;AACpC,YAAI,MAAM,MAAM;AACd,cAAI,IAAG,GAAA,WAAA,eAAc,MAAM,MAAM,MAAM,KAAK,aAAa,CAAC;AAC1D,0BAAgB,IAAI,KAAK;AACzB,cAAI,MAAM,WAAW,KAAK,MAAM,CAAC,MAAM,MAAM,QAAQ,YAAY;AAC/D,gBAAI,KAAI;AACR,aAAA,GAAA,WAAA,iBAAgB,EAAE;UACpB;AACA,cAAI,MAAK;QACX,OAAO;AACL,0BAAgB,IAAI,KAAK;QAC3B;AAEA,YAAI,CAAC;AAAW,cAAI,IAAG,GAAA,UAAA,KAAI,QAAA,QAAE,MAAM,QAAQ,aAAa,CAAC,EAAE;MAC7D;IACF;AAEA,aAAS,gBAAgB,IAAkB,OAAgB;AACzD,YAAM,EACJ,KACA,QACA,MAAM,EAAC,YAAW,EAAC,IACjB;AACJ,UAAI;AAAa,SAAA,GAAA,WAAA,gBAAe,IAAI,MAAM,IAAI;AAC9C,UAAI,MAAM,MAAK;AACb,mBAAW,QAAQ,MAAM,OAAO;AAC9B,eAAI,GAAA,gBAAA,eAAc,QAAQ,IAAI,GAAG;AAC/B,wBAAY,IAAI,KAAK,SAAS,KAAK,YAAY,MAAM,IAAI;UAC3D;QACF;MACF,CAAC;IACH;AAEA,aAAS,iBAAiB,IAAkB,OAAiB;AAC3D,UAAI,GAAG,UAAU,QAAQ,CAAC,GAAG,KAAK;AAAa;AAC/C,wBAAkB,IAAI,KAAK;AAC3B,UAAI,CAAC,GAAG,KAAK;AAAiB,2BAAmB,IAAI,KAAK;AAC1D,wBAAkB,IAAI,GAAG,SAAS;IACpC;AAEA,aAAS,kBAAkB,IAAkB,OAAiB;AAC5D,UAAI,CAAC,MAAM;AAAQ;AACnB,UAAI,CAAC,GAAG,UAAU,QAAQ;AACxB,WAAG,YAAY;AACf;MACF;AACA,YAAM,QAAQ,CAAC,MAAK;AAClB,YAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG;AAClC,2BAAiB,IAAI,SAAS,CAAC,6BAA6B,GAAG,UAAU,KAAK,GAAG,CAAC,GAAG;QACvF;MACF,CAAC;AACD,wBAAkB,IAAI,KAAK;IAC7B;AAEA,aAAS,mBAAmB,IAAkB,IAAc;AAC1D,UAAI,GAAG,SAAS,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,SAAS,MAAM,IAAI;AAC9D,yBAAiB,IAAI,iDAAiD;MACxE;IACF;AAEA,aAAS,kBAAkB,IAAkB,IAAc;AACzD,YAAM,QAAQ,GAAG,KAAK,MAAM;AAC5B,iBAAW,WAAW,OAAO;AAC3B,cAAM,OAAO,MAAM,OAAO;AAC1B,YAAI,OAAO,QAAQ,aAAY,GAAA,gBAAA,eAAc,GAAG,QAAQ,IAAI,GAAG;AAC7D,gBAAM,EAAC,KAAI,IAAI,KAAK;AACpB,cAAI,KAAK,UAAU,CAAC,KAAK,KAAK,CAAC,MAAM,kBAAkB,IAAI,CAAC,CAAC,GAAG;AAC9D,6BAAiB,IAAI,iBAAiB,KAAK,KAAK,GAAG,CAAC,kBAAkB,OAAO,GAAG;UAClF;QACF;MACF;IACF;AAEA,aAAS,kBAAkB,OAAmB,MAAc;AAC1D,aAAO,MAAM,SAAS,IAAI,KAAM,SAAS,YAAY,MAAM,SAAS,SAAS;IAC/E;AAEA,aAAS,aAAa,IAAgB,GAAW;AAC/C,aAAO,GAAG,SAAS,CAAC,KAAM,MAAM,aAAa,GAAG,SAAS,QAAQ;IACnE;AAEA,aAAS,kBAAkB,IAAkB,WAAqB;AAChE,YAAM,KAAiB,CAAA;AACvB,iBAAW,KAAK,GAAG,WAAW;AAC5B,YAAI,aAAa,WAAW,CAAC;AAAG,aAAG,KAAK,CAAC;iBAChC,UAAU,SAAS,SAAS,KAAK,MAAM;AAAU,aAAG,KAAK,SAAS;MAC7E;AACA,SAAG,YAAY;IACjB;AAEA,aAAS,iBAAiB,IAAkB,KAAW;AACrD,YAAM,aAAa,GAAG,UAAU,SAAS,GAAG;AAC5C,aAAO,QAAQ,UAAU;AACzB,OAAA,GAAA,OAAA,iBAAgB,IAAI,KAAK,GAAG,KAAK,WAAW;IAC9C;AAEA,QAAa,aAAb,MAAuB;MAiBrB,YAAY,IAAkB,KAA6B,SAAe;AACxE,SAAA,GAAA,UAAA,sBAAqB,IAAI,KAAK,OAAO;AACrC,aAAK,MAAM,GAAG;AACd,aAAK,YAAY,GAAG;AACpB,aAAK,UAAU;AACf,aAAK,OAAO,GAAG;AACf,aAAK,SAAS,GAAG,OAAO,OAAO;AAC/B,aAAK,QAAQ,IAAI,SAAS,GAAG,KAAK,SAAS,KAAK,UAAU,KAAK,OAAO;AACtE,aAAK,eAAc,GAAA,OAAA,gBAAe,IAAI,KAAK,QAAQ,SAAS,KAAK,KAAK;AACtE,aAAK,aAAa,IAAI;AACtB,aAAK,eAAe,GAAG;AACvB,aAAK,SAAS,CAAA;AACd,aAAK,KAAK;AACV,aAAK,MAAM;AAEX,YAAI,KAAK,OAAO;AACd,eAAK,aAAa,GAAG,IAAI,MAAM,WAAW,QAAQ,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO;AACL,eAAK,aAAa,KAAK;AACvB,cAAI,EAAC,GAAA,UAAA,iBAAgB,KAAK,QAAQ,IAAI,YAAY,IAAI,cAAc,GAAG;AACrE,kBAAM,IAAI,MAAM,GAAG,OAAO,kBAAkB,KAAK,UAAU,IAAI,UAAU,CAAC,EAAE;UAC9E;QACF;AAEA,YAAI,UAAU,MAAM,IAAI,cAAc,IAAI,WAAW,OAAO;AAC1D,eAAK,YAAY,GAAG,IAAI,MAAM,SAAS,QAAA,QAAE,MAAM;QACjD;MACF;MAEA,OAAO,WAAiB,eAA4B,YAAuB;AACzE,aAAK,YAAW,GAAA,UAAA,KAAI,SAAS,GAAG,eAAe,UAAU;MAC3D;MAEA,WAAW,WAAiB,eAA4B,YAAuB;AAC7E,aAAK,IAAI,GAAG,SAAS;AACrB,YAAI;AAAY,qBAAU;;AACrB,eAAK,MAAK;AACf,YAAI,eAAe;AACjB,eAAK,IAAI,KAAI;AACb,wBAAa;AACb,cAAI,KAAK;AAAW,iBAAK,IAAI,MAAK;QACpC,OAAO;AACL,cAAI,KAAK;AAAW,iBAAK,IAAI,MAAK;;AAC7B,iBAAK,IAAI,KAAI;QACpB;MACF;MAEA,KAAK,WAAiB,YAAuB;AAC3C,aAAK,YAAW,GAAA,UAAA,KAAI,SAAS,GAAG,QAAW,UAAU;MACvD;MAEA,KAAK,WAAgB;AACnB,YAAI,cAAc,QAAW;AAC3B,eAAK,MAAK;AACV,cAAI,CAAC,KAAK;AAAW,iBAAK,IAAI,GAAG,KAAK;AACtC;QACF;AACA,aAAK,IAAI,GAAG,SAAS;AACrB,aAAK,MAAK;AACV,YAAI,KAAK;AAAW,eAAK,IAAI,MAAK;;AAC7B,eAAK,IAAI,KAAI;MACpB;MAEA,UAAU,WAAe;AACvB,YAAI,CAAC,KAAK;AAAO,iBAAO,KAAK,KAAK,SAAS;AAC3C,cAAM,EAAC,WAAU,IAAI;AACrB,aAAK,MAAK,GAAA,UAAA,KAAI,UAAU,uBAAsB,GAAA,UAAA,IAAG,KAAK,aAAY,GAAI,SAAS,CAAC,GAAG;MACrF;MAEA,MAAM,QAAkB,aAAgC,YAAuB;AAC7E,YAAI,aAAa;AACf,eAAK,UAAU,WAAW;AAC1B,eAAK,OAAO,QAAQ,UAAU;AAC9B,eAAK,UAAU,CAAA,CAAE;AACjB;QACF;AACA,aAAK,OAAO,QAAQ,UAAU;MAChC;MAEQ,OAAO,QAAkB,YAAuB;AACtD;AAAC,SAAC,SAAS,SAAA,mBAAmB,SAAA,aAAa,MAAM,KAAK,IAAI,OAAO,UAAU;MAC7E;MAEA,aAAU;AACR,SAAA,GAAA,SAAA,aAAY,MAAM,KAAK,IAAI,cAAc,SAAA,iBAAiB;MAC5D;MAEA,QAAK;AACH,YAAI,KAAK,cAAc;AAAW,gBAAM,IAAI,MAAM,yCAAyC;AAC3F,SAAA,GAAA,SAAA,kBAAiB,KAAK,KAAK,KAAK,SAAS;MAC3C;MAEA,GAAG,MAAoB;AACrB,YAAI,CAAC,KAAK;AAAW,eAAK,IAAI,GAAG,IAAI;MACvC;MAEA,UAAU,KAAuB,QAAa;AAC5C,YAAI;AAAQ,iBAAO,OAAO,KAAK,QAAQ,GAAG;;AACrC,eAAK,SAAS;MACrB;MAEA,WAAW,OAAa,WAAuB,aAAmB,UAAA,KAAG;AACnE,aAAK,IAAI,MAAM,MAAK;AAClB,eAAK,WAAW,OAAO,UAAU;AACjC,oBAAS;QACX,CAAC;MACH;MAEA,WAAW,QAAc,UAAA,KAAK,aAAmB,UAAA,KAAG;AAClD,YAAI,CAAC,KAAK;AAAO;AACjB,cAAM,EAAC,KAAK,YAAY,YAAY,IAAG,IAAI;AAC3C,YAAI,IAAG,GAAA,UAAA,KAAG,GAAA,UAAA,KAAI,UAAU,kBAAkB,UAAU,CAAC;AACrD,YAAI,UAAU,UAAA;AAAK,cAAI,OAAO,OAAO,IAAI;AACzC,YAAI,WAAW,UAAU,IAAI,gBAAgB;AAC3C,cAAI,OAAO,KAAK,aAAY,CAAE;AAC9B,eAAK,WAAU;AACf,cAAI,UAAU,UAAA;AAAK,gBAAI,OAAO,OAAO,KAAK;QAC5C;AACA,YAAI,KAAI;MACV;MAEA,eAAY;AACV,cAAM,EAAC,KAAK,YAAY,YAAY,KAAK,GAAE,IAAI;AAC/C,gBAAO,GAAA,UAAA,IAAG,eAAc,GAAI,mBAAkB,CAAE;AAEhD,iBAAS,iBAAc;AACrB,cAAI,WAAW,QAAQ;AAErB,gBAAI,EAAE,sBAAsB,UAAA;AAAO,oBAAM,IAAI,MAAM,0BAA0B;AAC7E,kBAAM,KAAK,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAC/D,oBAAO,GAAA,UAAA,MAAI,GAAA,WAAA,gBAAe,IAAI,YAAY,GAAG,KAAK,eAAe,WAAA,SAAS,KAAK,CAAC;UAClF;AACA,iBAAO,UAAA;QACT;AAEA,iBAAS,qBAAkB;AACzB,cAAI,IAAI,gBAAgB;AACtB,kBAAM,oBAAoB,IAAI,WAAW,iBAAiB,EAAC,KAAK,IAAI,eAAc,CAAC;AACnF,oBAAO,GAAA,UAAA,MAAK,iBAAiB,IAAI,UAAU;UAC7C;AACA,iBAAO,UAAA;QACT;MACF;MAEA,UAAU,MAAqB,OAAW;AACxC,cAAM,aAAY,GAAA,YAAA,cAAa,KAAK,IAAI,IAAI;AAC5C,SAAA,GAAA,YAAA,qBAAoB,WAAW,KAAK,IAAI,IAAI;AAC5C,SAAA,GAAA,YAAA,qBAAoB,WAAW,IAAI;AACnC,cAAM,cAAc,EAAC,GAAG,KAAK,IAAI,GAAG,WAAW,OAAO,QAAW,OAAO,OAAS;AACjF,sBAAc,aAAa,KAAK;AAChC,eAAO;MACT;MAEA,eAAe,WAAsB,QAAoB;AACvD,cAAM,EAAC,IAAI,IAAG,IAAI;AAClB,YAAI,CAAC,GAAG,KAAK;AAAa;AAC1B,YAAI,GAAG,UAAU,QAAQ,UAAU,UAAU,QAAW;AACtD,aAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,UAAU,OAAO,GAAG,OAAO,MAAM;QACxE;AACA,YAAI,GAAG,UAAU,QAAQ,UAAU,UAAU,QAAW;AACtD,aAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,UAAU,OAAO,GAAG,OAAO,MAAM;QACxE;MACF;MAEA,oBAAoB,WAAsB,OAAW;AACnD,cAAM,EAAC,IAAI,IAAG,IAAI;AAClB,YAAI,GAAG,KAAK,gBAAgB,GAAG,UAAU,QAAQ,GAAG,UAAU,OAAO;AACnE,cAAI,GAAG,OAAO,MAAM,KAAK,eAAe,WAAW,UAAA,IAAI,CAAC;AACxD,iBAAO;QACT;MACF;;AA3LF,YAAA,aAAA;AA8LA,aAAS,YACP,IACA,SACA,KACA,UAAmB;AAEnB,YAAM,MAAM,IAAI,WAAW,IAAI,KAAK,OAAO;AAC3C,UAAI,UAAU,KAAK;AACjB,YAAI,KAAK,KAAK,QAAQ;MACxB,WAAW,IAAI,SAAS,IAAI,UAAU;AACpC,SAAA,GAAA,UAAA,iBAAgB,KAAK,GAAG;MAC1B,WAAW,WAAW,KAAK;AACzB,SAAA,GAAA,UAAA,kBAAiB,KAAK,GAAG;MAC3B,WAAW,IAAI,WAAW,IAAI,UAAU;AACtC,SAAA,GAAA,UAAA,iBAAgB,KAAK,GAAG;MAC1B;IACF;AAEA,QAAM,eAAe;AACrB,QAAM,wBAAwB;AAC9B,aAAgB,QACd,OACA,EAAC,WAAW,WAAW,YAAW,GAAY;AAE9C,UAAI;AACJ,UAAI;AACJ,UAAI,UAAU;AAAI,eAAO,QAAA,QAAE;AAC3B,UAAI,MAAM,CAAC,MAAM,KAAK;AACpB,YAAI,CAAC,aAAa,KAAK,KAAK;AAAG,gBAAM,IAAI,MAAM,yBAAyB,KAAK,EAAE;AAC/E,sBAAc;AACd,eAAO,QAAA,QAAE;MACX,OAAO;AACL,cAAM,UAAU,sBAAsB,KAAK,KAAK;AAChD,YAAI,CAAC;AAAS,gBAAM,IAAI,MAAM,yBAAyB,KAAK,EAAE;AAC9D,cAAM,KAAa,CAAC,QAAQ,CAAC;AAC7B,sBAAc,QAAQ,CAAC;AACvB,YAAI,gBAAgB,KAAK;AACvB,cAAI,MAAM;AAAW,kBAAM,IAAI,MAAM,SAAS,kBAAkB,EAAE,CAAC;AACnE,iBAAO,YAAY,YAAY,EAAE;QACnC;AACA,YAAI,KAAK;AAAW,gBAAM,IAAI,MAAM,SAAS,QAAQ,EAAE,CAAC;AACxD,eAAO,UAAU,YAAY,EAAE;AAC/B,YAAI,CAAC;AAAa,iBAAO;MAC3B;AAEA,UAAI,OAAO;AACX,YAAM,WAAW,YAAY,MAAM,GAAG;AACtC,iBAAW,WAAW,UAAU;AAC9B,YAAI,SAAS;AACX,kBAAO,GAAA,UAAA,KAAI,IAAI,IAAG,GAAA,UAAA,cAAY,GAAA,OAAA,qBAAoB,OAAO,CAAC,CAAC;AAC3D,kBAAO,GAAA,UAAA,KAAI,IAAI,OAAO,IAAI;QAC5B;MACF;AACA,aAAO;AAEP,eAAS,SAAS,aAAqB,IAAU;AAC/C,eAAO,iBAAiB,WAAW,IAAI,EAAE,gCAAgC,SAAS;MACpF;IACF;AAtCA,YAAA,UAAA;;;;;;;;;AC7hBA,QAAqB,kBAArB,cAA6C,MAAK;MAKhD,YAAY,QAA8B;AACxC,cAAM,mBAAmB;AACzB,aAAK,SAAS;AACd,aAAK,MAAM,KAAK,aAAa;MAC/B;;AATF,YAAA,UAAA;;;;;;;;;ACFA,QAAA,YAAA;AAGA,QAAqB,kBAArB,cAA6C,MAAK;MAIhD,YAAY,UAAuB,QAAgB,KAAa,KAAY;AAC1E,cAAM,OAAO,2BAA2B,GAAG,YAAY,MAAM,EAAE;AAC/D,aAAK,cAAa,GAAA,UAAA,YAAW,UAAU,QAAQ,GAAG;AAClD,aAAK,iBAAgB,GAAA,UAAA,cAAY,GAAA,UAAA,aAAY,UAAU,KAAK,UAAU,CAAC;MACzE;;AARF,YAAA,UAAA;;;;;;;;;;ACOA,QAAA,YAAA;AACA,QAAA,qBAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AA0DA,QAAa,YAAb,MAAsB;MAkBpB,YAAY,KAAkB;;AATrB,aAAA,OAAmB,CAAA;AACnB,aAAA,iBAA2C,CAAA;AASlD,YAAI;AACJ,YAAI,OAAO,IAAI,UAAU;AAAU,mBAAS,IAAI;AAChD,aAAK,SAAS,IAAI;AAClB,aAAK,WAAW,IAAI;AACpB,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,UAAS,KAAA,IAAI,YAAM,QAAA,OAAA,SAAA,MAAI,GAAA,UAAA,aAAY,WAAM,QAAN,WAAM,SAAA,SAAN,OAAS,IAAI,YAAY,KAAK,CAAC;AACvE,aAAK,aAAa,IAAI;AACtB,aAAK,YAAY,IAAI;AACrB,aAAK,OAAO,IAAI;AAChB,aAAK,SAAS,WAAM,QAAN,WAAM,SAAA,SAAN,OAAQ;AACtB,aAAK,OAAO,CAAA;MACd;;AA9BF,YAAA,YAAA;AAqCA,aAAgB,cAAyB,KAAc;AAErD,YAAM,OAAO,mBAAmB,KAAK,MAAM,GAAG;AAC9C,UAAI;AAAM,eAAO;AACjB,YAAM,UAAS,GAAA,UAAA,aAAY,KAAK,KAAK,aAAa,IAAI,KAAK,MAAM;AACjE,YAAM,EAAC,KAAK,MAAK,IAAI,KAAK,KAAK;AAC/B,YAAM,EAAC,cAAa,IAAI,KAAK;AAC7B,YAAM,MAAM,IAAI,UAAA,QAAQ,KAAK,OAAO,EAAC,KAAK,OAAO,cAAa,CAAC;AAC/D,UAAI;AACJ,UAAI,IAAI,QAAQ;AACd,2BAAmB,IAAI,WAAW,SAAS;UACzC,KAAK,mBAAA;UACL,OAAM,GAAA,UAAA;SACP;MACH;AAEA,YAAM,eAAe,IAAI,UAAU,UAAU;AAC7C,UAAI,eAAe;AAEnB,YAAM,YAAuB;QAC3B;QACA,WAAW,KAAK,KAAK;QACrB,MAAM,QAAA,QAAE;QACR,YAAY,QAAA,QAAE;QACd,oBAAoB,QAAA,QAAE;QACtB,WAAW,CAAC,QAAA,QAAE,IAAI;QAClB,aAAa,CAAC,UAAA,GAAG;;QACjB,WAAW;QACX,WAAW,CAAA;QACX,mBAAmB,oBAAI,IAAG;QAC1B,cAAc,IAAI,WAChB,UACA,KAAK,KAAK,KAAK,WAAW,OACtB,EAAC,KAAK,IAAI,QAAQ,OAAM,GAAA,UAAA,WAAU,IAAI,MAAM,EAAC,IAC7C,EAAC,KAAK,IAAI,OAAM,CAAC;QAEvB;QACA,iBAAiB;QACjB,QAAQ,IAAI;QACZ,WAAW;QACX;QACA,QAAQ,IAAI,UAAU;QACtB,YAAY,UAAA;QACZ,eAAe,IAAI,eAAe,KAAK,KAAK,MAAM,KAAK;QACvD,YAAW,GAAA,UAAA;QACX,MAAM,KAAK;QACX,MAAM;;AAGR,UAAI;AACJ,UAAI;AACF,aAAK,cAAc,IAAI,GAAG;AAC1B,SAAA,GAAA,WAAA,sBAAqB,SAAS;AAC9B,YAAI,SAAS,KAAK,KAAK,KAAK,QAAQ;AAEpC,cAAM,eAAe,IAAI,SAAQ;AACjC,qBAAa,GAAG,IAAI,UAAU,QAAA,QAAE,KAAK,CAAC,UAAU,YAAY;AAE5D,YAAI,KAAK,KAAK,KAAK;AAAS,uBAAa,KAAK,KAAK,KAAK,QAAQ,YAAY,GAAG;AAE/E,cAAM,eAAe,IAAI,SAAS,GAAG,QAAA,QAAE,IAAI,IAAI,GAAG,QAAA,QAAE,KAAK,IAAI,UAAU;AACvE,cAAM,WAAgC,aAAa,MAAM,KAAK,MAAM,IAAG,CAAE;AACzE,aAAK,MAAM,MAAM,cAAc,EAAC,KAAK,SAAQ,CAAC;AAE9C,iBAAS,SAAS;AAClB,iBAAS,SAAS,IAAI;AACtB,iBAAS,YAAY;AACrB,YAAI,IAAI;AAAS,mBAAmC,SAAS;AAC7D,YAAI,KAAK,KAAK,KAAK,WAAW,MAAM;AAClC,mBAAS,SAAS,EAAC,cAAc,cAAc,aAAa,IAAI,QAAO;QACzE;AACA,YAAI,KAAK,KAAK,aAAa;AACzB,gBAAM,EAAC,OAAO,MAAK,IAAI;AACvB,mBAAS,YAAY;YACnB,OAAO,iBAAiB,UAAA,OAAO,SAAY;YAC3C,OAAO,iBAAiB,UAAA,OAAO,SAAY;YAC3C,cAAc,iBAAiB,UAAA;YAC/B,cAAc,iBAAiB,UAAA;;AAEjC,cAAI,SAAS;AAAQ,qBAAS,OAAO,aAAY,GAAA,UAAA,WAAU,SAAS,SAAS;QAC/E;AACA,YAAI,WAAW;AACf,eAAO;MACT,SAAS,GAAG;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI;AAAY,eAAK,OAAO,MAAM,0CAA0C,UAAU;AAEtF,cAAM;MACR;AACE,aAAK,cAAc,OAAO,GAAG;MAC/B;IACF;AA5FA,YAAA,gBAAA;AA8FA,aAAgB,WAEd,MACA,QACA,KAAW;;AAEX,aAAM,GAAA,UAAA,YAAW,KAAK,KAAK,aAAa,QAAQ,GAAG;AACnD,YAAM,YAAY,KAAK,KAAK,GAAG;AAC/B,UAAI;AAAW,eAAO;AAEtB,UAAI,OAAO,QAAQ,KAAK,MAAM,MAAM,GAAG;AACvC,UAAI,SAAS,QAAW;AACtB,cAAM,UAAS,KAAA,KAAK,eAAS,QAAA,OAAA,SAAA,SAAA,GAAG,GAAG;AACnC,cAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,YAAI;AAAQ,iBAAO,IAAI,UAAU,EAAC,QAAQ,UAAU,MAAM,OAAM,CAAC;MACnE;AAEA,UAAI,SAAS;AAAW;AACxB,aAAQ,KAAK,KAAK,GAAG,IAAI,gBAAgB,KAAK,MAAM,IAAI;IAC1D;AAnBA,YAAA,aAAA;AAqBA,aAAS,gBAA2B,KAAc;AAChD,WAAI,GAAA,UAAA,WAAU,IAAI,QAAQ,KAAK,KAAK,UAAU;AAAG,eAAO,IAAI;AAC5D,aAAO,IAAI,WAAW,MAAM,cAAc,KAAK,MAAM,GAAG;IAC1D;AAGA,aAAgB,mBAA8B,QAAiB;AAC7D,iBAAW,OAAO,KAAK,eAAe;AACpC,YAAI,cAAc,KAAK,MAAM;AAAG,iBAAO;MACzC;IACF;AAJA,YAAA,qBAAA;AAMA,aAAS,cAAc,IAAe,IAAa;AACjD,aAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG;IAC5E;AAIA,aAAS,QAEP,MACA;AAEA,UAAI;AACJ,aAAO,QAAQ,MAAM,KAAK,KAAK,GAAG,MAAM;AAAU,cAAM;AACxD,aAAO,OAAO,KAAK,QAAQ,GAAG,KAAK,cAAc,KAAK,MAAM,MAAM,GAAG;IACvE;AAGA,aAAgB,cAEd,MACA;AAEA,YAAM,IAAI,KAAK,KAAK,YAAY,MAAM,GAAG;AACzC,YAAM,WAAU,GAAA,UAAA,cAAa,KAAK,KAAK,aAAa,CAAC;AACrD,UAAI,UAAS,GAAA,UAAA,aAAY,KAAK,KAAK,aAAa,KAAK,QAAQ,MAAS;AAEtE,UAAI,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS,KAAK,YAAY,QAAQ;AAC7D,eAAO,eAAe,KAAK,MAAM,GAAG,IAAI;MAC1C;AAEA,YAAM,MAAK,GAAA,UAAA,aAAY,OAAO;AAC9B,YAAM,WAAW,KAAK,KAAK,EAAE,KAAK,KAAK,QAAQ,EAAE;AACjD,UAAI,OAAO,YAAY,UAAU;AAC/B,cAAM,MAAM,cAAc,KAAK,MAAM,MAAM,QAAQ;AACnD,YAAI,QAAO,QAAG,QAAH,QAAG,SAAA,SAAH,IAAK,YAAW;AAAU;AACrC,eAAO,eAAe,KAAK,MAAM,GAAG,GAAG;MACzC;AAEA,UAAI,QAAO,aAAQ,QAAR,aAAQ,SAAA,SAAR,SAAU,YAAW;AAAU;AAC1C,UAAI,CAAC,SAAS;AAAU,sBAAc,KAAK,MAAM,QAAQ;AACzD,UAAI,QAAO,GAAA,UAAA,aAAY,GAAG,GAAG;AAC3B,cAAM,EAAC,OAAM,IAAI;AACjB,cAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,cAAM,QAAQ,OAAO,QAAQ;AAC7B,YAAI;AAAO,oBAAS,GAAA,UAAA,YAAW,KAAK,KAAK,aAAa,QAAQ,KAAK;AACnE,eAAO,IAAI,UAAU,EAAC,QAAQ,UAAU,MAAM,OAAM,CAAC;MACvD;AACA,aAAO,eAAe,KAAK,MAAM,GAAG,QAAQ;IAC9C;AA/BA,YAAA,gBAAA;AAiCA,QAAM,uBAAuB,oBAAI,IAAI;MACnC;MACA;MACA;MACA;MACA;KACD;AAED,aAAS,eAEP,WACA,EAAC,QAAQ,QAAQ,KAAI,GAAY;;AAEjC,YAAI,KAAA,UAAU,cAAQ,QAAA,OAAA,SAAA,SAAA,GAAG,CAAC,OAAM;AAAK;AACrC,iBAAW,QAAQ,UAAU,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG;AACzD,YAAI,OAAO,WAAW;AAAW;AACjC,cAAM,aAAa,QAAO,GAAA,OAAA,kBAAiB,IAAI,CAAC;AAChD,YAAI,eAAe;AAAW;AAC9B,iBAAS;AAET,cAAM,QAAQ,OAAO,WAAW,YAAY,OAAO,KAAK,KAAK,QAAQ;AACrE,YAAI,CAAC,qBAAqB,IAAI,IAAI,KAAK,OAAO;AAC5C,oBAAS,GAAA,UAAA,YAAW,KAAK,KAAK,aAAa,QAAQ,KAAK;QAC1D;MACF;AACA,UAAI;AACJ,UAAI,OAAO,UAAU,aAAa,OAAO,QAAQ,EAAC,GAAA,OAAA,sBAAqB,QAAQ,KAAK,KAAK,GAAG;AAC1F,cAAM,QAAO,GAAA,UAAA,YAAW,KAAK,KAAK,aAAa,QAAQ,OAAO,IAAI;AAClE,cAAM,cAAc,KAAK,MAAM,MAAM,IAAI;MAC3C;AAGA,YAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,YAAM,OAAO,IAAI,UAAU,EAAC,QAAQ,UAAU,MAAM,OAAM,CAAC;AAC3D,UAAI,IAAI,WAAW,IAAI,KAAK;AAAQ,eAAO;AAC3C,aAAO;IACT;;;;;ACnUA;AAAA;AAAA;AAAA,MACE,KAAO;AAAA,MACP,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,UAAY,CAAC,OAAO;AAAA,MACpB,YAAc;AAAA,QACZ,OAAS;AAAA,UACP,MAAQ;AAAA,UACR,OAAS,CAAC,EAAC,QAAU,wBAAuB,GAAG,EAAC,QAAU,eAAc,CAAC;AAAA,QAC3E;AAAA,MACF;AAAA,MACA,sBAAwB;AAAA,IAC1B;AAAA;AAAA;;;;;;;;;;AaZA,eAAAC,QAAA;0CAAyBC,OAAzB,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;eAAA,IAAA,IAAA,UAAA,IAAA;;YACKA,KAAKC,SAAS,GAAG;eACf,CAAL,IAAUD,KAAK,CAAL,EAAQE,MAAM,GAAG,EAAjB;cACJC,KAAKH,KAAKC,SAAS;mBAChBG,IAAI,GAAGA,IAAID,IAAI,EAAEC,GAAG;iBACvBA,CAAL,IAAUJ,KAAKI,CAAL,EAAQF,MAAM,GAAG,EAAjB;;eAENC,EAAL,IAAWH,KAAKG,EAAL,EAASD,MAAM,CAAf;iBACJF,KAAKK,KAAK,EAAV;eACD;iBACCL,KAAK,CAAL;;;AAIT,eAAAM,OAAuBC,KAAvB;eACQ,QAAQA,MAAM;;AAGtB,eAAAC,OAAuBC,GAAvB;eACQA,MAAMC,SAAY,cAAeD,MAAM,OAAO,SAASE,OAAOC,UAAUC,SAASC,KAAKL,CAA/B,EAAkCM,MAAM,GAAxC,EAA6CC,IAA7C,EAAmDD,MAAM,GAAzD,EAA8DE,MAA9D,EAAsEC,YAAtE;;AAG/D,eAAAC,YAA4BZ,KAA5B;eACQA,IAAIY,YAAJ;;AAGR,eAAAC,SAAwBC,KAAxB;eACQA,QAAQX,UAAaW,QAAQ,OAAQA,eAAeC,QAAQD,MAAO,OAAOA,IAAIpB,WAAW,YAAYoB,IAAIN,SAASM,IAAIE,eAAeF,IAAIP,OAAO,CAACO,GAAD,IAAQC,MAAMV,UAAUV,MAAMY,KAAKO,GAA3B,IAAoC,CAAA;;AAIpM,eAAAG,OAAuBC,QAAgBC,QAAvC;YACOL,MAAMI;YACRC,QAAQ;mBACAC,OAAOD,QAAQ;gBACrBC,GAAJ,IAAWD,OAAOC,GAAP;;;eAGNN;;ADnCR,eAAAO,UAA0BC,QAA1B;YAEEC,UAAU,YACVC,MAAM,WACNC,UAAU,SACVC,WAAW,WACXC,YAAWnC,MAAMiC,SAAS,UAAf,UACJ,WACPG,OAAO,WACPC,gBAAe9B,OAAOA,OAAO,YAAY4B,YAAW,MAAMA,YAAWA,YAAW,MAAMA,YAAWA,SAA3E,IAAuF,MAAM5B,OAAO,gBAAgB4B,YAAW,MAAMA,YAAWA,SAAnD,IAA+D,MAAM5B,OAAO,MAAM4B,YAAWA,SAAxB,CAAzK,kBACA,2BACfG,eAAe,uCACfC,aAAavC,MAAMwC,cAAcF,YAApB,GACbG,YAAYX,SAAQ,gFAAgF,mBACvFA,SAAQ,sBAAsB,sBAC5B9B,MAAM+B,SAASE,SAAS,kBAAkBQ,SAA1C,GACfC,UAAUnC,OAAOwB,UAAU/B,MAAM+B,SAASE,SAAS,aAAxB,IAAyC,GAA1D,GACVU,YAAYpC,OAAOA,OAAO8B,gBAAe,MAAMrC,MAAM4C,eAAcN,cAAc,OAAlC,CAA5B,IAA0E,GAAjF,GACZO,aAAatC,OAAOA,OAAO,SAAP,IAAoB,MAAMA,OAAO,WAAW0B,OAAlB,IAA6B,MAAM1B,OAAO,MAAM0B,UAAUA,OAAvB,IAAkC,MAAM1B,OAAO,UAAU0B,OAAjB,IAA4B,MAAMA,OAA9I,GACba,qBAAqBvC,OAAOA,OAAO,SAAP,IAAoB,MAAMA,OAAO,WAAW0B,OAAlB,IAA6B,MAAM1B,OAAO,MAAM0B,UAAUA,OAAvB,IAAkC,MAAM1B,OAAO,YAAY0B,OAAnB,IAA8B,UAAUA,OAApJ,kBACN1B,OAAOuC,qBAAqB,QAAQA,qBAAqB,QAAQA,qBAAqB,QAAQA,kBAA9F,GACfC,OAAOxC,OAAO4B,YAAW,OAAlB,GACPa,QAAQzC,OAAOA,OAAOwC,OAAO,QAAQA,IAAtB,IAA8B,MAAME,YAA3C,GACRC,gBAAgB3C,OAAmEA,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAwD,WAAWA,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAwCwC,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAYxC,OAAOwC,OAAO,KAAd,IAAuB,QAAQC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAAmBA,OAAO,QAAiBC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAA2CC,KAAlG,mBACAzC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,YAA2CA,IAAlG,mBACAxC,OAAOA,OAAOA,OAAOwC,OAAO,KAAd,IAAuB,UAAUA,IAAxC,IAAgD,SAAvD,kBACDxC,OAAO,CAAC2C,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,eAAeC,aAAzH,EAAwIpD,KAAK,GAA7I,CAAP,GACfqD,UAAUpD,OAAOA,OAAOqC,gBAAe,MAAMP,aAA5B,IAA4C,GAAnD,gBACG9B,OAAOqD,eAAe,UAAUD,OAAhC,wBACQpD,OAAOqD,eAAerD,OAAO,iBAAiB4B,YAAW,MAAnC,IAA6CwB,OAAnE,gBACRpD,OAAO,SAAS4B,YAAW,SAASnC,MAAM4C,eAAcN,cAAc,OAAlC,IAA6C,GAAjF,GACbuB,cAActD,OAAO,QAAQA,OAAOuD,qBAAqB,MAAMF,eAAe,MAAMG,UAAvD,IAAqE,KAApF,eACFxD,OAAOA,OAAO8B,gBAAe,MAAMrC,MAAM4C,eAAcN,YAApB,CAA5B,IAAiE,GAAxE,GACZ0B,QAAQzD,OAAOsD,cAAc,MAAMZ,eAAe,QAAQgB,YAAY,OAAYA,SAA1E,GACRC,QAAQ3D,OAAO0B,UAAU,GAAjB,GACRkC,aAAa5D,OAAOA,OAAOoC,YAAY,GAAnB,IAA0B,MAAMqB,QAAQzD,OAAO,QAAQ2D,KAAf,IAAwB,GAAvE,GACbE,SAAS7D,OAAO8B,gBAAe,MAAMrC,MAAM4C,eAAcN,cAAc,UAAlC,CAA5B,GACT+B,WAAW9D,OAAO6D,SAAS,GAAhB,GACXE,cAAc/D,OAAO6D,SAAS,GAAhB,GACdG,iBAAiBhE,OAAOA,OAAO8B,gBAAe,MAAMrC,MAAM4C,eAAcN,cAAc,OAAlC,CAA5B,IAA0E,GAAjF,GACjBkC,gBAAgBjE,OAAOA,OAAO,QAAQ8D,QAAf,IAA2B,GAAlC,GAChBI,iBAAiBlE,OAAO,QAAQA,OAAO+D,cAAcE,aAArB,IAAsC,GAArD,oBACAjE,OAAOgE,iBAAiBC,aAAxB,oBACAjE,OAAO+D,cAAcE,aAArB,iBACH,QAAQJ,SAAS,KAC/BM,QAAQnE,OAAOiE,gBAAgB,MAAMC,iBAAiB,MAAME,iBAAiB,MAAMC,iBAAiB,MAAMC,WAAlG,GACRC,SAASvE,OAAOA,OAAO6D,SAAS,MAAMpE,MAAM,YAAY+E,UAAlB,CAAtB,IAAuD,GAA9D,GACTC,YAAYzE,OAAOA,OAAO6D,SAAS,WAAhB,IAA+B,GAAtC,GACZa,aAAa1E,OAAOA,OAAO,WAAW4D,aAAaK,aAA/B,IAAgD,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,WAA3G,GACbK,OAAO3E,OAAOmC,UAAU,QAAQuC,aAAa1E,OAAO,QAAQuE,MAAf,IAAyB,MAAMvE,OAAO,QAAQyE,SAAf,IAA4B,GAAjG,GACPG,iBAAiB5E,OAAOA,OAAO,WAAW4D,aAAaK,aAA/B,IAAgD,MAAMC,iBAAiB,MAAME,iBAAiB,MAAME,WAA3G,GACjBO,YAAY7E,OAAO4E,iBAAiB5E,OAAO,QAAQuE,MAAf,IAAyB,MAAMvE,OAAO,QAAQyE,SAAf,IAA4B,GAAnF,GACZK,iBAAiB9E,OAAO2E,OAAO,MAAME,SAApB,GACjBE,gBAAgB/E,OAAOmC,UAAU,QAAQuC,aAAa1E,OAAO,QAAQuE,MAAf,IAAyB,GAA/D,GAEhBS,eAAe,OAAO7C,UAAU,SAASnC,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MAAMvE,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MACzUQ,gBAAgB,WAAWjF,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAME,iBAAiB,MAAME,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MAAMvE,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MAC3TS,gBAAgB,OAAO/C,UAAU,SAASnC,OAAOA,OAAO,YAAYA,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B,IAAxG,IAAgH,OAAOM,gBAAgB,MAAMC,iBAAiB,MAAMG,iBAAiB,MAAMC,cAAc,GAAhN,IAAuNtE,OAAO,SAASuE,SAAS,GAAzB,IAAgC,MACjSY,eAAe,MAAMnF,OAAO,SAASyE,YAAY,GAA5B,IAAmC,MACxDW,iBAAiB,MAAMpF,OAAO,MAAMoC,YAAY,IAAzB,IAAiC,OAAOqB,QAAQ,MAAMzD,OAAO,SAAS2D,QAAQ,GAAxB,IAA+B;eAGtG;sBACO,IAAI0B,OAAO5F,MAAM,OAAO+B,SAASE,SAAS,aAA/B,GAA+C,GAA1D;wBACE,IAAI2D,OAAO5F,MAAM,aAAa4C,eAAcN,YAAjC,GAAgD,GAA3D;oBACJ,IAAIsD,OAAO5F,MAAM,mBAAmB4C,eAAcN,YAAvC,GAAsD,GAAjE;oBACA,IAAIsD,OAAO5F,MAAM,mBAAmB4C,eAAcN,YAAvC,GAAsD,GAAjE;6BACS,IAAIsD,OAAO5F,MAAM,gBAAgB4C,eAAcN,YAApC,GAAmD,GAA9D;qBACR,IAAIsD,OAAO5F,MAAM,UAAU4C,eAAcN,cAAc,kBAAkByC,UAA9D,GAA2E,GAAtF;wBACG,IAAIa,OAAO5F,MAAM,UAAU4C,eAAcN,cAAc,gBAA5C,GAA+D,GAA1E;kBACN,IAAIsD,OAAO5F,MAAM,OAAO4C,eAAcN,YAA3B,GAA0C,GAArD;sBACI,IAAIsD,OAAOhD,eAAc,GAAzB;uBACC,IAAIgD,OAAO5F,MAAM,UAAU4C,eAAcL,UAA9B,GAA2C,GAAtD;uBACA,IAAIqD,OAAOvD,eAAc,GAAzB;uBACA,IAAIuD,OAAO,OAAO3C,eAAe,IAAjC;uBACA,IAAI2C,OAAO,WAAWhC,eAAe,MAAMrD,OAAOA,OAAO,iBAAiB4B,YAAW,MAAnC,IAA6C,MAAMwB,UAAU,GAApE,IAA2E,QAAtH;;;;AAIhB,UAAA,eAAe9B,UAAU,KAAV;ADrFf,UAAA,eAAeA,UAAU,IAAV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADAf,UAAMgE,SAAS;AAGf,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,cAAc;AACpB,UAAMC,WAAW;AACjB,UAAMC,YAAY;AAGlB,UAAMC,gBAAgB;AACtB,UAAMC,gBAAgB;AACtB,UAAMC,kBAAkB;AAGxB,UAAMC,SAAS;oBACF;qBACC;yBACI;;AAIlB,UAAMC,gBAAgBZ,OAAOC;AAC7B,UAAMY,QAAQC,KAAKD;AACnB,UAAME,qBAAqBC,OAAOC;AAUlC,eAASC,QAAMC,MAAM;cACd,IAAIC,WAAWT,OAAOQ,IAAP,CAAf;;AAWP,eAASE,IAAIC,OAAOC,IAAI;YACjBC,SAAS,CAAA;YACXpH,SAASkH,MAAMlH;eACZA,UAAU;iBACTA,MAAP,IAAiBmH,GAAGD,MAAMlH,MAAN,CAAH;;eAEXoH;;AAaR,eAASC,UAAUC,QAAQH,IAAI;YACxBI,QAAQD,OAAOxG,MAAM,GAAb;YACVsG,SAAS;YACTG,MAAMvH,SAAS,GAAG;mBAGZuH,MAAM,CAAN,IAAW;mBACXA,MAAM,CAAN;;iBAGDD,OAAOE,QAAQlB,iBAAiB,GAAhC;YACHmB,SAASH,OAAOxG,MAAM,GAAb;YACT4G,UAAUT,IAAIQ,QAAQN,EAAZ,EAAgB/G,KAAK,GAArB;eACTgH,SAASM;;AAgBjB,eAASC,WAAWL,QAAQ;YACrBM,SAAS,CAAA;YACXC,UAAU;YACR7H,SAASsH,OAAOtH;eACf6H,UAAU7H,QAAQ;cAClB8H,QAAQR,OAAOS,WAAWF,SAAlB;cACVC,SAAS,SAAUA,SAAS,SAAUD,UAAU7H,QAAQ;gBAErDgI,QAAQV,OAAOS,WAAWF,SAAlB;iBACTG,QAAQ,UAAW,OAAQ;qBACxBC,OAAOH,QAAQ,SAAU,OAAOE,QAAQ,QAAS,KAAxD;mBACM;qBAGCC,KAAKH,KAAZ;;;iBAGK;mBACCG,KAAKH,KAAZ;;;eAGKF;;AAWR,UAAMM,aAAa,SAAbA,YAAa,OAAA;eAAStB,OAAOuB,cAAP,MAAA,QAAA,kBAAwBjB,KAAxB,CAAA;;AAW5B,UAAMkB,eAAe,SAAfA,cAAwBC,WAAW;YACpCA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;YAEhBA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;YAEhBA,YAAY,KAAO,IAAM;iBACrBA,YAAY;;eAEbzC;;AAcR,UAAM0C,eAAe,SAAfA,cAAwBC,OAAOC,MAAM;eAGnCD,QAAQ,KAAK,MAAMA,QAAQ,QAAQC,QAAQ,MAAM;;AAQzD,UAAMC,QAAQ,SAARA,OAAiBC,OAAOC,WAAWC,WAAW;YAC/CC,IAAI;gBACAD,YAAYnC,MAAMiC,QAAQ1C,IAAd,IAAsB0C,SAAS;iBAC1CjC,MAAMiC,QAAQC,SAAd;;;;UACqBD,QAAQlC,gBAAgBV,QAAQ;UAAG+C,KAAKjD;UAAM;kBACnEa,MAAMiC,QAAQlC,aAAd;;eAEFC,MAAMoC,KAAKrC,gBAAgB,KAAKkC,SAASA,QAAQ3C,KAAjD;;AAUR,UAAM+C,SAAS,SAATA,QAAkBC,OAAO;YAExBnB,SAAS,CAAA;YACToB,cAAcD,MAAM/I;YACtBiJ,IAAI;YACJC,IAAIhD;YACJiD,OAAOlD;YAMPmD,QAAQL,MAAMM,YAAYlD,SAAlB;YACRiD,QAAQ,GAAG;kBACN;;iBAGAE,IAAI,GAAGA,IAAIF,OAAO,EAAEE,GAAG;cAE3BP,MAAMhB,WAAWuB,CAAjB,KAAuB,KAAM;oBAC1B,WAAN;;iBAEMrB,KAAKc,MAAMhB,WAAWuB,CAAjB,CAAZ;;iBAMQC,QAAQH,QAAQ,IAAIA,QAAQ,IAAI,GAAGG,QAAQP,eAAwC;cAOvFQ,OAAOP;;gBACFQ,IAAI,GAAGZ,IAAIjD;;;YAA0BiD,KAAKjD;YAAM;gBAEpD2D,SAASP,aAAa;sBACnB,eAAN;;gBAGKT,QAAQH,aAAaW,MAAMhB,WAAWwB,OAAjB,CAAb;gBAEVhB,SAAS3C,QAAQ2C,QAAQ9B,OAAOd,SAASsD,KAAKQ,CAArB,GAAyB;sBAC/C,UAAN;;iBAGIlB,QAAQkB;gBACPC,IAAIb,KAAKM,OAAOtD,OAAQgD,KAAKM,OAAOrD,OAAOA,OAAO+C,IAAIM;gBAExDZ,QAAQmB,GAAG;;;gBAITC,aAAa/D,OAAO8D;gBACtBD,IAAIhD,MAAMd,SAASgE,UAAf,GAA4B;sBAC7B,UAAN;;iBAGIA;;cAIAC,MAAMhC,OAAO5H,SAAS;iBACrByI,MAAMQ,IAAIO,MAAMI,KAAKJ,QAAQ,CAA7B;cAIH/C,MAAMwC,IAAIW,GAAV,IAAiBjE,SAASuD,GAAG;oBAC1B,UAAN;;eAGIzC,MAAMwC,IAAIW,GAAV;eACAA;iBAGEC,OAAOZ,KAAK,GAAGC,CAAtB;;eAIMtC,OAAOuB,cAAP,MAAA,QAAwBP,MAAxB;;AAUR,UAAMkC,SAAS,SAATA,QAAkBf,OAAO;YACxBnB,SAAS,CAAA;gBAGPD,WAAWoB,KAAX;YAGJC,cAAcD,MAAM/I;YAGpBkJ,IAAIhD;YACJwC,QAAQ;YACRS,OAAOlD;;;;;+BAGgB8C,MAA3B,OAAA,QAAA,EAAA,GAAA,OAAA,EAAA,6BAAA,QAAA,UAAA,KAAA,GAAA,OAAA,4BAAA,MAAkC;gBAAvBgB,iBAAuB,MAAA;gBAC7BA,iBAAe,KAAM;qBACjB9B,KAAKtB,mBAAmBoD,cAAnB,CAAZ;;;;;;;;;;;;;;;;;YAIEC,cAAcpC,OAAO5H;YACrBiK,iBAAiBD;YAMjBA,aAAa;iBACT/B,KAAK9B,SAAZ;;eAIM8D,iBAAiBjB,aAAa;cAIhCkB,IAAIvE;;;;;kCACmBoD,MAA3B,OAAA,QAAA,EAAA,GAAA,QAAA,EAAA,8BAAA,SAAA,WAAA,KAAA,GAAA,OAAA,6BAAA,MAAkC;kBAAvBgB,eAAuB,OAAA;kBAC7BA,gBAAgBb,KAAKa,eAAeG,GAAG;oBACtCH;;;;;;;;;;;;;;;;;cAMAI,wBAAwBF,iBAAiB;cAC3CC,IAAIhB,IAAIzC,OAAOd,SAAS+C,SAASyB,qBAAzB,GAAiD;oBACtD,UAAN;;oBAGSD,IAAIhB,KAAKiB;cACfD;;;;;kCAEuBnB,MAA3B,OAAA,QAAA,EAAA,GAAA,QAAA,EAAA,8BAAA,SAAA,WAAA,KAAA,GAAA,OAAA,6BAAA,MAAkC;kBAAvBgB,gBAAuB,OAAA;kBAC7BA,gBAAeb,KAAK,EAAER,QAAQ/C,QAAQ;wBACnC,UAAN;;kBAEGoE,iBAAgBb,GAAG;oBAElBkB,IAAI1B;;sBACCG,IAAIjD;;;kBAA0BiD,KAAKjD;kBAAM;sBAC3C8D,IAAIb,KAAKM,OAAOtD,OAAQgD,KAAKM,OAAOrD,OAAOA,OAAO+C,IAAIM;sBACxDiB,IAAIV,GAAG;;;sBAGLW,UAAUD,IAAIV;sBACdC,aAAa/D,OAAO8D;yBACnBzB,KACNtB,mBAAmB2B,aAAaoB,IAAIW,UAAUV,YAAY,CAAvC,CAAnB,CADD;sBAGIlD,MAAM4D,UAAUV,UAAhB;;uBAGE1B,KAAKtB,mBAAmB2B,aAAa8B,GAAG,CAAhB,CAAnB,CAAZ;uBACO3B,MAAMC,OAAOyB,uBAAuBF,kBAAkBD,WAAtD;wBACC;kBACNC;;;;;;;;;;;;;;;;;YAIFvB;YACAQ;;eAGItB,OAAOxH,KAAK,EAAZ;;AAcR,UAAMkK,YAAY,SAAZA,WAAqBvB,OAAO;eAC1B1B,UAAU0B,OAAO,SAASzB,QAAQ;iBACjClB,cAAcmE,KAAKjD,MAAnB,IACJwB,OAAOxB,OAAOrH,MAAM,CAAb,EAAgBgB,YAAhB,CAAP,IACAqG;SAHG;;AAkBR,UAAMkD,UAAU,SAAVA,SAAmBzB,OAAO;eACxB1B,UAAU0B,OAAO,SAASzB,QAAQ;iBACjCjB,cAAckE,KAAKjD,MAAnB,IACJ,SAASwC,OAAOxC,MAAP,IACTA;SAHG;;AAUR,UAAMmD,WAAW;;;;;;mBAML;;;;;;;;gBAQH;oBACG9C;oBACAO;;kBAEDY;kBACAgB;mBACCU;qBACEF;;AD5VP,UAAMI,UAA6C,CAAA;AAE1D,eAAAC,WAA2BC,KAA3B;YACOC,IAAID,IAAI7C,WAAW,CAAf;YACN+C,IAAAA;YAEAD,IAAI;AAAIC,cAAI,OAAOD,EAAEjK,SAAS,EAAX,EAAeM,YAAf;iBACd2J,IAAI;AAAKC,cAAI,MAAMD,EAAEjK,SAAS,EAAX,EAAeM,YAAf;iBACnB2J,IAAI;AAAMC,cAAI,OAAQD,KAAK,IAAK,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B,IAA8C,OAAQ2J,IAAI,KAAM,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B;;AAC5E4J,cAAI,OAAQD,KAAK,KAAM,KAAKjK,SAAS,EAA3B,EAA+BM,YAA/B,IAA+C,OAAS2J,KAAK,IAAK,KAAM,KAAKjK,SAAS,EAAjC,EAAqCM,YAArC,IAAqD,OAAQ2J,IAAI,KAAM,KAAKjK,SAAS,EAA1B,EAA8BM,YAA9B;eAExH4J;;AAGR,eAAAC,YAA4BzK,KAA5B;YACK0K,SAAS;YACT/B,IAAI;YACFgC,KAAK3K,IAAIN;eAERiJ,IAAIgC,IAAI;cACRJ,IAAIK,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;cAEN4B,IAAI,KAAK;sBACFjE,OAAOC,aAAagE,CAApB;iBACL;qBAEGA,KAAK,OAAOA,IAAI,KAAK;gBACxBI,KAAKhC,KAAM,GAAG;kBACZmC,KAAKF,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;wBACDrC,OAAOC,cAAegE,IAAI,OAAO,IAAMO,KAAK,EAA5C;mBACJ;wBACI9K,IAAI6K,OAAOlC,GAAG,CAAd;;iBAEN;qBAEG4B,KAAK,KAAK;gBACbI,KAAKhC,KAAM,GAAG;kBACZmC,KAAKF,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;kBACLoC,KAAKH,SAAS5K,IAAI6K,OAAOlC,IAAI,GAAG,CAAlB,GAAsB,EAA/B;wBACDrC,OAAOC,cAAegE,IAAI,OAAO,MAAQO,KAAK,OAAO,IAAMC,KAAK,EAAhE;mBACJ;wBACI/K,IAAI6K,OAAOlC,GAAG,CAAd;;iBAEN;iBAED;sBACM3I,IAAI6K,OAAOlC,GAAG,CAAd;iBACL;;;eAIA+B;;AAGR,eAAAM,4BAAqCC,YAA0BC,UAA/D;iBACAC,kBAA2BnL,KAA3B;cACQoL,SAASX,YAAYzK,GAAZ;iBACP,CAACoL,OAAOC,MAAMH,SAASI,UAAtB,IAAoCtL,MAAMoL;;YAGhDH,WAAWM;AAAQN,qBAAWM,SAASjF,OAAO2E,WAAWM,MAAlB,EAA0BrE,QAAQgE,SAASM,aAAaL,iBAAxD,EAA0ExK,YAA1E,EAAwFuG,QAAQgE,SAASO,YAAY,EAArH;YACvCR,WAAWS,aAAavL;AAAW8K,qBAAWS,WAAWpF,OAAO2E,WAAWS,QAAlB,EAA4BxE,QAAQgE,SAASM,aAAaL,iBAA1D,EAA4EjE,QAAQgE,SAASS,cAActB,UAA3G,EAAuHnD,QAAQgE,SAASM,aAAa5K,WAArJ;YACzDqK,WAAWW,SAASzL;AAAW8K,qBAAWW,OAAOtF,OAAO2E,WAAWW,IAAlB,EAAwB1E,QAAQgE,SAASM,aAAaL,iBAAtD,EAAwExK,YAAxE,EAAsFuG,QAAQgE,SAASW,UAAUxB,UAAjH,EAA6HnD,QAAQgE,SAASM,aAAa5K,WAA3J;YACjDqK,WAAWa,SAAS3L;AAAW8K,qBAAWa,OAAOxF,OAAO2E,WAAWa,IAAlB,EAAwB5E,QAAQgE,SAASM,aAAaL,iBAAtD,EAAwEjE,QAAS+D,WAAWM,SAASL,SAASa,WAAWb,SAASc,mBAAoB3B,UAAtJ,EAAkKnD,QAAQgE,SAASM,aAAa5K,WAAhM;YACjDqK,WAAWgB,UAAU9L;AAAW8K,qBAAWgB,QAAQ3F,OAAO2E,WAAWgB,KAAlB,EAAyB/E,QAAQgE,SAASM,aAAaL,iBAAvD,EAAyEjE,QAAQgE,SAASgB,WAAW7B,UAArG,EAAiHnD,QAAQgE,SAASM,aAAa5K,WAA/I;YACnDqK,WAAWkB,aAAahM;AAAW8K,qBAAWkB,WAAW7F,OAAO2E,WAAWkB,QAAlB,EAA4BjF,QAAQgE,SAASM,aAAaL,iBAA1D,EAA4EjE,QAAQgE,SAASkB,cAAc/B,UAA3G,EAAuHnD,QAAQgE,SAASM,aAAa5K,WAArJ;eAEtDqK;;AAGR,eAAAoB,mBAA4BrM,KAA5B;eACQA,IAAIkH,QAAQ,WAAW,IAAvB,KAAgC;;AAGxC,eAAAoF,eAAwBV,MAAaV,UAArC;YACOqB,UAAUX,KAAKP,MAAMH,SAASsB,WAApB,KAAoC,CAAA;qCAChCD,SAFrB,CAAA,GAEUE,UAFV,SAAA,CAAA;YAIKA,SAAS;iBACLA,QAAQjM,MAAM,GAAd,EAAmBmG,IAAI0F,kBAAvB,EAA2CvM,KAAK,GAAhD;eACD;iBACC8L;;;AAIT,eAAAc,eAAwBd,MAAaV,UAArC;YACOqB,UAAUX,KAAKP,MAAMH,SAASyB,WAApB,KAAoC,CAAA;sCAC1BJ,SAF3B,CAAA,GAEUE,UAFV,UAAA,CAAA,GAEmBG,OAFnB,UAAA,CAAA;YAIKH,SAAS;sCACUA,QAAQ9L,YAAR,EAAsBH,MAAM,IAA5B,EAAkCqM,QAAlC,qEAAfC,OADK,uBAAA,CAAA,GACCC,QADD,uBAAA,CAAA;cAENC,cAAcD,QAAQA,MAAMvM,MAAM,GAAZ,EAAiBmG,IAAI0F,kBAArB,IAA2C,CAAA;cACjEY,aAAaH,KAAKtM,MAAM,GAAX,EAAgBmG,IAAI0F,kBAApB;cACba,yBAAyBhC,SAASsB,YAAYvC,KAAKgD,WAAWA,WAAWvN,SAAS,CAA/B,CAA1B;cACzByN,aAAaD,yBAAyB,IAAI;cAC1CE,kBAAkBH,WAAWvN,SAASyN;cACtCE,SAAStM,MAAcoM,UAAd;mBAENtN,IAAI,GAAGA,IAAIsN,YAAY,EAAEtN,GAAG;mBAC7BA,CAAP,IAAYmN,YAAYnN,CAAZ,KAAkBoN,WAAWG,kBAAkBvN,CAA7B,KAAmC;;cAG9DqN,wBAAwB;mBACpBC,aAAa,CAApB,IAAyBb,eAAee,OAAOF,aAAa,CAApB,GAAwBjC,QAAvC;;cAGpBoC,gBAAgBD,OAAOE,OAA4C,SAACC,KAAKC,OAAOxE,OAAxF;gBACO,CAACwE,SAASA,UAAU,KAAK;kBACtBC,cAAcF,IAAIA,IAAI9N,SAAS,CAAjB;kBAChBgO,eAAeA,YAAYzE,QAAQyE,YAAYhO,WAAWuJ,OAAO;4BACxDvJ;qBACN;oBACFiI,KAAK,EAAEsB,OAAOvJ,QAAS,EAAlB,CAAT;;;mBAGK8N;aACL,CAAA,CAVmB;cAYhBG,oBAAoBL,cAAcM,KAAK,SAACC,GAAGC,GAAJ;mBAAUA,EAAEpO,SAASmO,EAAEnO;WAA1C,EAAkD,CAAlD;cAEtBqO,UAAAA;cACAJ,qBAAqBA,kBAAkBjO,SAAS,GAAG;gBAChDsO,WAAWX,OAAO1N,MAAM,GAAGgO,kBAAkB1E,KAAlC;gBACXgF,UAAUZ,OAAO1N,MAAMgO,kBAAkB1E,QAAQ0E,kBAAkBjO,MAAzD;sBACNsO,SAASlO,KAAK,GAAd,IAAqB,OAAOmO,QAAQnO,KAAK,GAAb;iBAChC;sBACIuN,OAAOvN,KAAK,GAAZ;;cAGP8M,MAAM;uBACE,MAAMA;;iBAGXmB;eACD;iBACCnC;;;AAIT,UAAMsC,YAAY;AAClB,UAAMC,wBAA4C,GAAI9C,MAAM,OAAX,EAAqB,CAArB,MAA4BlL;AAE7E,eAAAiO,MAAsBC,WAAtB;YAAwCC,UAAxC,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAA6D,CAAA;YACtDrD,aAA2B,CAAA;YAC3BC,WAAYoD,QAAQC,QAAQ,QAAQC,eAAeC;YAErDH,QAAQI,cAAc;AAAUL,uBAAaC,QAAQ/C,SAAS+C,QAAQ/C,SAAS,MAAM,MAAM,OAAO8C;YAEhG9B,UAAU8B,UAAUhD,MAAM6C,SAAhB;YAEZ3B,SAAS;cACR4B,uBAAuB;uBAEf5C,SAASgB,QAAQ,CAAR;uBACTb,WAAWa,QAAQ,CAAR;uBACXX,OAAOW,QAAQ,CAAR;uBACPoC,OAAO/D,SAAS2B,QAAQ,CAAR,GAAY,EAArB;uBACPT,OAAOS,QAAQ,CAAR,KAAc;uBACrBN,QAAQM,QAAQ,CAAR;uBACRJ,WAAWI,QAAQ,CAAR;gBAGlBqC,MAAM3D,WAAW0D,IAAjB,GAAwB;yBAChBA,OAAOpC,QAAQ,CAAR;;iBAEb;uBAEKhB,SAASgB,QAAQ,CAAR,KAAcpM;uBACvBuL,WAAY2C,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;uBACzDyL,OAAQyC,UAAUQ,QAAQ,IAAlB,MAA4B,KAAKtC,QAAQ,CAAR,IAAapM;uBACtDwO,OAAO/D,SAAS2B,QAAQ,CAAR,GAAY,EAArB;uBACPT,OAAOS,QAAQ,CAAR,KAAc;uBACrBN,QAASoC,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;uBACtDgM,WAAYkC,UAAUQ,QAAQ,GAAlB,MAA2B,KAAKtC,QAAQ,CAAR,IAAapM;gBAGhEyO,MAAM3D,WAAW0D,IAAjB,GAAwB;yBAChBA,OAAQN,UAAUhD,MAAM,+BAAhB,IAAmDkB,QAAQ,CAAR,IAAapM;;;cAIjF8K,WAAWW,MAAM;uBAETA,OAAOc,eAAeJ,eAAerB,WAAWW,MAAMV,QAAhC,GAA2CA,QAA1D;;cAIfD,WAAWM,WAAWpL,UAAa8K,WAAWS,aAAavL,UAAa8K,WAAWW,SAASzL,UAAa8K,WAAW0D,SAASxO,UAAa,CAAC8K,WAAWa,QAAQb,WAAWgB,UAAU9L,QAAW;uBACtLuO,YAAY;qBACbzD,WAAWM,WAAWpL,QAAW;uBAChCuO,YAAY;qBACbzD,WAAWkB,aAAahM,QAAW;uBAClCuO,YAAY;iBACjB;uBACKA,YAAY;;cAIpBJ,QAAQI,aAAaJ,QAAQI,cAAc,YAAYJ,QAAQI,cAAczD,WAAWyD,WAAW;uBAC3FlI,QAAQyE,WAAWzE,SAAS,kBAAkB8H,QAAQI,YAAY;;cAIxEI,gBAAgB1E,SAASkE,QAAQ/C,UAAUN,WAAWM,UAAU,IAAI5K,YAA5C,CAAR;cAGlB,CAAC2N,QAAQS,mBAAmB,CAACD,iBAAiB,CAACA,cAAcC,iBAAiB;gBAE7E9D,WAAWW,SAAS0C,QAAQU,cAAeF,iBAAiBA,cAAcE,aAAc;kBAEvF;2BACQpD,OAAOzB,SAASD,QAAQe,WAAWW,KAAK1E,QAAQgE,SAASM,aAAaf,WAA9C,EAA2D9J,YAA3D,CAAjB;uBACV6J,GAAG;2BACAhE,QAAQyE,WAAWzE,SAAS,oEAAoEgE;;;wCAIjFS,YAAYwD,YAAxC;iBACM;wCAEsBxD,YAAYC,QAAxC;;cAIG4D,iBAAiBA,cAAcV,OAAO;0BAC3BA,MAAMnD,YAAYqD,OAAhC;;eAEK;qBACK9H,QAAQyE,WAAWzE,SAAS;;eAGjCyE;;AAGR,eAAAgE,oBAA6BhE,YAA0BqD,SAAvD;YACOpD,WAAYoD,QAAQC,QAAQ,QAAQC,eAAeC;YACnDS,YAA0B,CAAA;YAE5BjE,WAAWS,aAAavL,QAAW;oBAC5BwH,KAAKsD,WAAWS,QAA1B;oBACU/D,KAAK,GAAf;;YAGGsD,WAAWW,SAASzL,QAAW;oBAExBwH,KAAK+E,eAAeJ,eAAehG,OAAO2E,WAAWW,IAAlB,GAAyBV,QAAxC,GAAmDA,QAAlE,EAA4EhE,QAAQgE,SAASyB,aAAa,SAACwC,GAAGC,IAAIC,IAAR;mBAAe,MAAMD,MAAMC,KAAK,QAAQA,KAAK,MAAM;WAA7J,CAAf;;YAGG,OAAOpE,WAAW0D,SAAS,YAAY,OAAO1D,WAAW0D,SAAS,UAAU;oBACrEhH,KAAK,GAAf;oBACUA,KAAKrB,OAAO2E,WAAW0D,IAAlB,CAAf;;eAGMO,UAAUxP,SAASwP,UAAUpP,KAAK,EAAf,IAAqBK;;AAGhD,UAAMmP,OAAO;AACb,UAAMC,OAAO;AACb,UAAMC,OAAO;AAEb,UAAMC,OAAO;AAEb,eAAAC,kBAAkCjH,OAAlC;YACOnB,SAAuB,CAAA;eAEtBmB,MAAM/I,QAAQ;cAChB+I,MAAM4C,MAAMiE,IAAZ,GAAmB;oBACd7G,MAAMvB,QAAQoI,MAAM,EAApB;qBACE7G,MAAM4C,MAAMkE,IAAZ,GAAmB;oBACrB9G,MAAMvB,QAAQqI,MAAM,GAApB;qBACE9G,MAAM4C,MAAMmE,IAAZ,GAAmB;oBACrB/G,MAAMvB,QAAQsI,MAAM,GAApB;mBACD/O,IAAP;qBACUgI,UAAU,OAAOA,UAAU,MAAM;oBACnC;iBACF;gBACAkH,KAAKlH,MAAM4C,MAAMoE,IAAZ;gBACPE,IAAI;kBACDC,IAAID,GAAG,CAAH;sBACFlH,MAAM9I,MAAMiQ,EAAElQ,MAAd;qBACDiI,KAAKiI,CAAZ;mBACM;oBACA,IAAIC,MAAM,kCAAV;;;;eAKFvI,OAAOxH,KAAK,EAAZ;;AAGR,eAAAgQ,UAA0B7E,YAA1B;YAAoDqD,UAApD,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAyE,CAAA;YAClEpD,WAAYoD,QAAQC,MAAMC,eAAeC;YACzCS,YAA0B,CAAA;YAG1BJ,gBAAgB1E,SAASkE,QAAQ/C,UAAUN,WAAWM,UAAU,IAAI5K,YAA5C,CAAR;YAGlBmO,iBAAiBA,cAAcgB;AAAWhB,wBAAcgB,UAAU7E,YAAYqD,OAApC;YAE1CrD,WAAWW,MAAM;cAEhBV,SAASyB,YAAY1C,KAAKgB,WAAWW,IAArC,GAA4C;UAAA,WAKvC0C,QAAQU,cAAeF,iBAAiBA,cAAcE,YAAa;gBAEvE;yBACQpD,OAAQ,CAAC0C,QAAQC,MAAMpE,SAASD,QAAQe,WAAWW,KAAK1E,QAAQgE,SAASM,aAAaf,WAA9C,EAA2D9J,YAA3D,CAAjB,IAA6FwJ,SAASH,UAAUiB,WAAWW,IAA9B;qBACvHpB,GAAG;yBACAhE,QAAQyE,WAAWzE,SAAS,iDAAiD,CAAC8H,QAAQC,MAAM,UAAU,aAAa,oBAAoB/D;;;;oCAMzHS,YAAYC,QAAxC;YAEIoD,QAAQI,cAAc,YAAYzD,WAAWM,QAAQ;oBAC9C5D,KAAKsD,WAAWM,MAA1B;oBACU5D,KAAK,GAAf;;YAGKoI,YAAYd,oBAAoBhE,YAAYqD,OAAhC;YACdyB,cAAc5P,QAAW;cACxBmO,QAAQI,cAAc,UAAU;sBACzB/G,KAAK,IAAf;;oBAGSA,KAAKoI,SAAf;cAEI9E,WAAWa,QAAQb,WAAWa,KAAKkE,OAAO,CAAvB,MAA8B,KAAK;sBAC/CrI,KAAK,GAAf;;;YAIEsD,WAAWa,SAAS3L,QAAW;cAC9ByP,IAAI3E,WAAWa;cAEf,CAACwC,QAAQ2B,iBAAiB,CAACnB,iBAAiB,CAACA,cAAcmB,eAAe;gBACzEP,kBAAkBE,CAAlB;;cAGDG,cAAc5P,QAAW;gBACxByP,EAAE1I,QAAQ,SAAS,MAAnB;;oBAGKS,KAAKiI,CAAf;;YAGG3E,WAAWgB,UAAU9L,QAAW;oBACzBwH,KAAK,GAAf;oBACUA,KAAKsD,WAAWgB,KAA1B;;YAGGhB,WAAWkB,aAAahM,QAAW;oBAC5BwH,KAAK,GAAf;oBACUA,KAAKsD,WAAWkB,QAA1B;;eAGM+C,UAAUpP,KAAK,EAAf;;AAGR,eAAAoQ,kBAAkC5K,OAAoB6K,UAAtD;YAA8E7B,UAA9E,UAAA,SAAA,KAAA,UAAA,CAAA,MAAA,SAAA,UAAA,CAAA,IAAmG,CAAA;YAAI8B,oBAAvG,UAAA,CAAA;YACOlP,SAAuB,CAAA;YAEzB,CAACkP,mBAAmB;kBAChBhC,MAAM0B,UAAUxK,OAAMgJ,OAAhB,GAA0BA,OAAhC;qBACIF,MAAM0B,UAAUK,UAAU7B,OAApB,GAA8BA,OAApC;;kBAEFA,WAAW,CAAA;YAEjB,CAACA,QAAQ+B,YAAYF,SAAS5E,QAAQ;iBAClCA,SAAS4E,SAAS5E;iBAElBG,WAAWyE,SAASzE;iBACpBE,OAAOuE,SAASvE;iBAChB+C,OAAOwB,SAASxB;iBAChB7C,OAAO4D,kBAAkBS,SAASrE,QAAQ,EAAnC;iBACPG,QAAQkE,SAASlE;eAClB;cACFkE,SAASzE,aAAavL,UAAagQ,SAASvE,SAASzL,UAAagQ,SAASxB,SAASxO,QAAW;mBAE3FuL,WAAWyE,SAASzE;mBACpBE,OAAOuE,SAASvE;mBAChB+C,OAAOwB,SAASxB;mBAChB7C,OAAO4D,kBAAkBS,SAASrE,QAAQ,EAAnC;mBACPG,QAAQkE,SAASlE;iBAClB;gBACF,CAACkE,SAASrE,MAAM;qBACZA,OAAOxG,MAAKwG;kBACfqE,SAASlE,UAAU9L,QAAW;uBAC1B8L,QAAQkE,SAASlE;qBAClB;uBACCA,QAAQ3G,MAAK2G;;mBAEf;kBACFkE,SAASrE,KAAKkE,OAAO,CAArB,MAA4B,KAAK;uBAC7BlE,OAAO4D,kBAAkBS,SAASrE,IAA3B;qBACR;qBACDxG,MAAKoG,aAAavL,UAAamF,MAAKsG,SAASzL,UAAamF,MAAKqJ,SAASxO,WAAc,CAACmF,MAAKwG,MAAM;yBAC/FA,OAAO,MAAMqE,SAASrE;2BACnB,CAACxG,MAAKwG,MAAM;yBACfA,OAAOqE,SAASrE;uBACjB;yBACCA,OAAOxG,MAAKwG,KAAKnM,MAAM,GAAG2F,MAAKwG,KAAK/C,YAAY,GAAtB,IAA6B,CAAhD,IAAqDoH,SAASrE;;uBAEtEA,OAAO4D,kBAAkBxO,OAAO4K,IAAzB;;qBAERG,QAAQkE,SAASlE;;mBAGlBP,WAAWpG,MAAKoG;mBAChBE,OAAOtG,MAAKsG;mBACZ+C,OAAOrJ,MAAKqJ;;iBAEbpD,SAASjG,MAAKiG;;eAGfY,WAAWgE,SAAShE;eAEpBjL;;AAGR,eAAAoP,QAAwBC,SAAgBC,aAAoBlC,SAA5D;YACOmC,oBAAoBxP,OAAO,EAAEsK,QAAS,OAAX,GAAqB+C,OAA5B;eACnBwB,UAAUI,kBAAkB9B,MAAMmC,SAASE,iBAAf,GAAmCrC,MAAMoC,aAAaC,iBAAnB,GAAuCA,mBAAmB,IAA/G,GAAsHA,iBAAhI;;AAKR,eAAAC,UAA0BC,KAASrC,SAAnC;YACK,OAAOqC,QAAQ,UAAU;gBACtBb,UAAU1B,MAAMuC,KAAKrC,OAAX,GAAqBA,OAA/B;mBACIrO,OAAO0Q,GAAP,MAAgB,UAAU;gBAC9BvC,MAAM0B,UAAyBa,KAAKrC,OAA9B,GAAwCA,OAA9C;;eAGAqC;;AAKR,eAAAC,MAAsBC,MAAUC,MAAUxC,SAA1C;YACK,OAAOuC,SAAS,UAAU;iBACtBf,UAAU1B,MAAMyC,MAAMvC,OAAZ,GAAsBA,OAAhC;mBACGrO,OAAO4Q,IAAP,MAAiB,UAAU;iBAC9Bf,UAAyBe,MAAMvC,OAA/B;;YAGJ,OAAOwC,SAAS,UAAU;iBACtBhB,UAAU1B,MAAM0C,MAAMxC,OAAZ,GAAsBA,OAAhC;mBACGrO,OAAO6Q,IAAP,MAAiB,UAAU;iBAC9BhB,UAAyBgB,MAAMxC,OAA/B;;eAGDuC,SAASC;;AAGjB,eAAAC,gBAAgC/Q,KAAYsO,SAA5C;eACQtO,OAAOA,IAAIM,SAAJ,EAAe4G,QAAS,CAACoH,WAAW,CAACA,QAAQC,MAAME,aAAauC,SAASxC,aAAawC,QAAS3G,UAA/F;;AAGf,eAAA4G,kBAAkCjR,KAAYsO,SAA9C;eACQtO,OAAOA,IAAIM,SAAJ,EAAe4G,QAAS,CAACoH,WAAW,CAACA,QAAQC,MAAME,aAAajD,cAAcgD,aAAahD,aAAcf,WAAzG;;ADxiBf,UAAMyG,UAA2B;gBACvB;oBAEI;eAEL,SAAA9C,OAAUnD,YAA0BqD,SAA7C;cAEM,CAACrD,WAAWW,MAAM;uBACVpF,QAAQyE,WAAWzE,SAAS;;iBAGjCyE;;mBAGI,SAAA6E,WAAU7E,YAA0BqD,SAAjD;cACQ6C,SAAS7K,OAAO2E,WAAWM,MAAlB,EAA0B5K,YAA1B,MAA4C;cAGvDsK,WAAW0D,UAAUwC,SAAS,MAAM,OAAOlG,WAAW0D,SAAS,IAAI;uBAC3DA,OAAOxO;;cAIf,CAAC8K,WAAWa,MAAM;uBACVA,OAAO;;iBAOZb;;;AD9BT,UAAMiG,YAA2B;gBACvB;oBACIE,QAAKpC;eACVoC,QAAKhD;mBACDgD,QAAKtB;;ADAlB,eAAAuB,SAAkBC,cAAlB;eACQ,OAAOA,aAAaH,WAAW,YAAYG,aAAaH,SAAS7K,OAAOgL,aAAa/F,MAApB,EAA4B5K,YAA5B,MAA8C;;AAIvH,UAAMuQ,YAA2B;gBACvB;oBAEI;eAEL,SAAA9C,OAAUnD,YAA0BqD,SAA7C;cACQgD,eAAerG;uBAGRkG,SAASE,SAASC,YAAT;uBAGTC,gBAAgBD,aAAaxF,QAAQ,QAAQwF,aAAarF,QAAQ,MAAMqF,aAAarF,QAAQ;uBAC7FH,OAAO3L;uBACP8L,QAAQ9L;iBAEdmR;;mBAGI,SAAAxB,WAAUwB,cAA2BhD,SAAlD;cAEMgD,aAAa3C,UAAU0C,SAASC,YAAT,IAAyB,MAAM,OAAOA,aAAa3C,SAAS,IAAI;yBAC7EA,OAAOxO;;cAIjB,OAAOmR,aAAaH,WAAW,WAAW;yBAChC5F,SAAU+F,aAAaH,SAAS,QAAQ;yBACxCA,SAAShR;;cAInBmR,aAAaC,cAAc;wCACRD,aAAaC,aAAa/Q,MAAM,GAAhC,qEAAfsL,OADuB,uBAAA,CAAA,GACjBG,QADiB,uBAAA,CAAA;yBAEjBH,OAAQA,QAAQA,SAAS,MAAMA,OAAO3L;yBACtC8L,QAAQA;yBACRsF,eAAepR;;uBAIhBgM,WAAWhM;iBAEjBmR;;;ADnDT,UAAMJ,YAA2B;gBACvB;oBACIM,UAAGxC;eACRwC,UAAGpD;mBACCoD,UAAG1B;;ADShB,UAAM2B,IAAkB,CAAA;AACxB,UAAMnQ,QAAQ;AAGd,UAAMc,eAAe,4BAA4Bd,QAAQ,8EAA8E,MAAM;AAC7I,UAAMK,WAAW;AACjB,UAAME,eAAe9B,OAAOA,OAAO,YAAY4B,WAAW,MAAMA,WAAWA,WAAW,MAAMA,WAAWA,QAA3E,IAAuF,MAAM5B,OAAO,gBAAgB4B,WAAW,MAAMA,WAAWA,QAAnD,IAA+D,MAAM5B,OAAO,MAAM4B,WAAWA,QAAxB,CAAzK;AAarB,UAAM+P,UAAU;AAChB,UAAMC,UAAU;AAChB,UAAMC,UAAUpS,MAAMmS,SAAS,WAAf;AAQhB,UAAME,gBAAgB;AAatB,UAAMvG,aAAa,IAAIlG,OAAOhD,cAAc,GAAzB;AACnB,UAAMoJ,cAAc,IAAIpG,OAAOvD,cAAc,GAAzB;AACpB,UAAMiQ,iBAAiB,IAAI1M,OAAO5F,MAAM,OAAOkS,SAAS,SAAS,SAASE,OAAxC,GAAkD,GAA7D;AAEvB,UAAMG,aAAa,IAAI3M,OAAO5F,MAAM,OAAO4C,cAAcyP,aAA3B,GAA2C,GAAtD;AACnB,UAAMG,cAAcD;AAIpB,eAAA5G,iBAA0BnL,KAA1B;YACOoL,SAASX,YAAYzK,GAAZ;eACP,CAACoL,OAAOC,MAAMC,UAAb,IAA2BtL,MAAMoL;;AAG3C,UAAM8F,YAA8C;gBAC1C;eAED,SAAA,SAAUjG,YAA0BqD,SAA7C;cACQ2D,mBAAmBhH;cACnBiH,KAAKD,iBAAiBC,KAAMD,iBAAiBnG,OAAOmG,iBAAiBnG,KAAKtL,MAAM,GAA5B,IAAmC,CAAA;2BAC5EsL,OAAO3L;cAEpB8R,iBAAiBhG,OAAO;gBACvBkG,iBAAiB;gBACfC,UAAwB,CAAA;gBACxBC,UAAUJ,iBAAiBhG,MAAMzL,MAAM,GAA7B;qBAEPX,IAAI,GAAGD,KAAKyS,QAAQ3S,QAAQG,IAAID,IAAI,EAAEC,GAAG;kBAC3CyS,SAASD,QAAQxS,CAAR,EAAWW,MAAM,GAAjB;sBAEP8R,OAAO,CAAP,GAAR;qBACM;sBACEC,UAAUD,OAAO,CAAP,EAAU9R,MAAM,GAAhB;2BACPX,KAAI,GAAGD,MAAK2S,QAAQ7S,QAAQG,KAAID,KAAI,EAAEC,IAAG;uBAC9C8H,KAAK4K,QAAQ1S,EAAR,CAAR;;;qBAGG;mCACa2S,UAAUvB,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;qBAEvB;mCACamE,OAAOxB,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;;mCAGP;0BACT2C,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B,CAAR,IAAiD2C,kBAAkBqB,OAAO,CAAP,GAAWhE,OAA7B;;;;gBAKhD6D;AAAgBF,+BAAiBG,UAAUA;;2BAG/BnG,QAAQ9L;mBAEhBN,MAAI,GAAGD,OAAKsS,GAAGxS,QAAQG,MAAID,MAAI,EAAEC,KAAG;gBACtC6S,OAAOR,GAAGrS,GAAH,EAAMW,MAAM,GAAZ;iBAER,CAAL,IAAUyQ,kBAAkByB,KAAK,CAAL,CAAlB;gBAEN,CAACpE,QAAQS,gBAAgB;kBAExB;qBACE,CAAL,IAAU5E,SAASD,QAAQ+G,kBAAkByB,KAAK,CAAL,GAASpE,OAA3B,EAAoC3N,YAApC,CAAjB;uBACF6J,GAAG;iCACMhE,QAAQyL,iBAAiBzL,SAAS,6EAA6EgE;;mBAE3H;mBACD,CAAL,IAAUyG,kBAAkByB,KAAK,CAAL,GAASpE,OAA3B,EAAoC3N,YAApC;;eAGRd,GAAH,IAAQ6S,KAAK5S,KAAK,GAAV;;iBAGFmS;;mBAGI,SAAA,aAAUA,kBAAmC3D,SAA1D;cACQrD,aAAagH;cACbC,KAAKrR,SAAQoR,iBAAiBC,EAAzB;cACPA,IAAI;qBACErS,IAAI,GAAGD,KAAKsS,GAAGxS,QAAQG,IAAID,IAAI,EAAEC,GAAG;kBACtC8S,SAASrM,OAAO4L,GAAGrS,CAAH,CAAP;kBACT+S,QAAQD,OAAO5J,YAAY,GAAnB;kBACR8J,YAAaF,OAAOhT,MAAM,GAAGiT,KAAhB,EAAwB1L,QAAQsE,aAAaL,gBAA9C,EAAgEjE,QAAQsE,aAAa5K,WAArF,EAAkGsG,QAAQ4K,gBAAgBzH,UAA1H;kBACdyI,SAASH,OAAOhT,MAAMiT,QAAQ,CAArB;kBAGT;yBACO,CAACtE,QAAQC,MAAMpE,SAASD,QAAQ+G,kBAAkB6B,QAAQxE,OAA1B,EAAmC3N,YAAnC,CAAjB,IAAqEwJ,SAASH,UAAU8I,MAAnB;uBACtFtI,GAAG;2BACAhE,QAAQyE,WAAWzE,SAAS,0DAA0D,CAAC8H,QAAQC,MAAM,UAAU,aAAa,oBAAoB/D;;iBAGzJ3K,CAAH,IAAQgT,YAAY,MAAMC;;uBAGhBhH,OAAOoG,GAAGpS,KAAK,GAAR;;cAGbsS,UAAUH,iBAAiBG,UAAUH,iBAAiBG,WAAW,CAAA;cAEnEH,iBAAiBO;AAASJ,oBAAQ,SAAR,IAAqBH,iBAAiBO;cAChEP,iBAAiBQ;AAAML,oBAAQ,MAAR,IAAkBH,iBAAiBQ;cAExDpF,SAAS,CAAA;mBACJ0F,QAAQX,SAAS;gBACvBA,QAAQW,IAAR,MAAkBtB,EAAEsB,IAAF,GAAS;qBACvBpL,KACNoL,KAAK7L,QAAQsE,aAAaL,gBAA1B,EAA4CjE,QAAQsE,aAAa5K,WAAjE,EAA8EsG,QAAQ6K,YAAY1H,UAAlG,IACA,MACA+H,QAAQW,IAAR,EAAc7L,QAAQsE,aAAaL,gBAAnC,EAAqDjE,QAAQsE,aAAa5K,WAA1E,EAAuFsG,QAAQ8K,aAAa3H,UAA5G,CAHD;;;cAOEgD,OAAO3N,QAAQ;uBACPuM,QAAQoB,OAAOvN,KAAK,GAAZ;;iBAGbmL;;;AD/JT,UAAM+H,YAAY;AAIlB,UAAM9B,YAAqD;gBACjD;eAED,SAAA,SAAUjG,YAA0BqD,SAA7C;cACQ/B,UAAUtB,WAAWa,QAAQb,WAAWa,KAAKT,MAAM2H,SAAtB;cAC/BC,gBAAgBhI;cAEhBsB,SAAS;gBACNhB,SAAS+C,QAAQ/C,UAAU0H,cAAc1H,UAAU;gBACnD2H,MAAM3G,QAAQ,CAAR,EAAW5L,YAAX;gBACNwS,MAAM5G,QAAQ,CAAR;gBACN6G,YAAe7H,SAAf,OAAyB+C,QAAQ4E,OAAOA;gBACxCpE,gBAAgB1E,QAAQgJ,SAAR;0BAERF,MAAMA;0BACNC,MAAMA;0BACNrH,OAAO3L;gBAEjB2O,eAAe;8BACFA,cAAcV,MAAM6E,eAAe3E,OAAnC;;iBAEX;0BACQ9H,QAAQyM,cAAczM,SAAS;;iBAGvCyM;;mBAGI,SAAA,aAAUA,eAA6B3E,SAApD;cACQ/C,SAAS+C,QAAQ/C,UAAU0H,cAAc1H,UAAU;cACnD2H,MAAMD,cAAcC;cACpBE,YAAe7H,SAAf,OAAyB+C,QAAQ4E,OAAOA;cACxCpE,gBAAgB1E,QAAQgJ,SAAR;cAElBtE,eAAe;4BACFA,cAAcgB,UAAUmD,eAAe3E,OAAvC;;cAGX+E,gBAAgBJ;cAChBE,MAAMF,cAAcE;wBACZrH,QAAUoH,OAAO5E,QAAQ4E,OAAvC,MAA8CC;iBAEvCE;;;ADxDT,UAAMC,OAAO;AAIb,UAAMpC,YAAsE;gBAClE;eAED,SAAA9C,OAAU6E,eAA6B3E,SAAhD;cACQiF,iBAAiBN;yBACRO,OAAOD,eAAeJ;yBACtBA,MAAMhT;cAEjB,CAACmO,QAAQ+B,aAAa,CAACkD,eAAeC,QAAQ,CAACD,eAAeC,KAAKnI,MAAMiI,IAA1B,IAAkC;2BACrE9M,QAAQ+M,eAAe/M,SAAS;;iBAGzC+M;;mBAGI,SAAAzD,WAAUyD,gBAA+BjF,SAAtD;cACQ2E,gBAAgBM;wBAERJ,OAAOI,eAAeC,QAAQ,IAAI7S,YAA5B;iBACbsS;;;AD5BT7I,cAAQgH,QAAK7F,MAAb,IAAuB6F;AAGvBhH,cAAQqJ,UAAMlI,MAAd,IAAwBkI;AAGxBrJ,cAAQoH,UAAGjG,MAAX,IAAqBiG;AAGrBpH,cAAQsJ,UAAInI,MAAZ,IAAsBmI;AAGtBtJ,cAAQuJ,UAAOpI,MAAf,IAAyBoI;AAGzBvJ,cAAQwJ,UAAIrI,MAAZ,IAAsBqI;AAGtBxJ,cAAQoJ,UAAKjI,MAAb,IAAuBiI;;;;;;;;;;;;;;;;;;;;;;;AarBvB,QAAA,MAAA;AAGE,QAAY,OAAO;AAErB,YAAA,UAAe;;;;;;;;;;ACuBf,QAAA,aAAA;AAAQ,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,WAAA;IAAU,EAAA,CAAA;AAKlB,QAAA,YAAA;AAAQ,WAAA,eAAA,SAAA,KAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAC,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,aAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAS,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,QAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAI,EAAA,CAAA;AAAQ,WAAA,eAAA,SAAA,WAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAO,EAAA,CAAA;AAsBnD,QAAA,qBAAA;AACA,QAAA,cAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA,YAAA;AACA,QAAA,YAAA;AACA,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,iBAAA;AAEA,QAAA,QAAA;AAEA,QAAM,gBAA8B,CAAC,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK;AACzE,kBAAc,OAAO;AAErB,QAAM,sBAAyC,CAAC,oBAAoB,eAAe,aAAa;AAChG,QAAM,kBAAkB,oBAAI,IAAI;MAC9B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;KACD;AAyGD,QAAM,iBAA8C;MAClD,eAAe;MACf,QAAQ;MACR,UAAU;MACV,cAAc;MACd,YAAY;MACZ,aAAa;MACb,aAAa;MACb,YAAY;MACZ,gBAAgB;MAChB,gBAAgB;MAChB,aAAa;MACb,gBAAgB;MAChB,OAAO;MACP,WAAW;MACX,WAAW;;AAGb,QAAM,oBAAoD;MACxD,uBAAuB;MACvB,kBAAkB;MAClB,SAAS;;AA0BX,QAAM,iBAAiB;AAGvB,aAAS,gBAAgB,GAAU;;AACjC,YAAM,IAAI,EAAE;AACZ,YAAM,SAAQ,KAAA,EAAE,UAAI,QAAA,OAAA,SAAA,SAAA,GAAE;AACtB,YAAM,WAAW,UAAU,QAAQ,UAAU,SAAY,IAAI,SAAS;AACtE,YAAM,UAAS,MAAA,KAAA,EAAE,UAAI,QAAA,OAAA,SAAA,SAAA,GAAE,YAAM,QAAA,OAAA,SAAA,KAAI;AACjC,YAAM,eAAc,KAAA,EAAE,iBAAW,QAAA,OAAA,SAAA,KAAI,MAAA;AACrC,aAAO;QACL,eAAc,MAAA,KAAA,EAAE,kBAAY,QAAA,OAAA,SAAA,KAAI,OAAC,QAAA,OAAA,SAAA,KAAI;QACrC,gBAAe,MAAA,KAAA,EAAE,mBAAa,QAAA,OAAA,SAAA,KAAI,OAAC,QAAA,OAAA,SAAA,KAAI;QACvC,cAAa,MAAA,KAAA,EAAE,iBAAW,QAAA,OAAA,SAAA,KAAI,OAAC,QAAA,OAAA,SAAA,KAAI;QACnC,eAAc,MAAA,KAAA,EAAE,kBAAY,QAAA,OAAA,SAAA,KAAI,OAAC,QAAA,OAAA,SAAA,KAAI;QACrC,iBAAgB,MAAA,KAAA,EAAE,oBAAc,QAAA,OAAA,SAAA,KAAI,OAAC,QAAA,OAAA,SAAA,KAAI;QACzC,MAAM,EAAE,OAAO,EAAC,GAAG,EAAE,MAAM,UAAU,OAAM,IAAI,EAAC,UAAU,OAAM;QAChE,eAAc,KAAA,EAAE,kBAAY,QAAA,OAAA,SAAA,KAAI;QAChC,WAAU,KAAA,EAAE,cAAQ,QAAA,OAAA,SAAA,KAAI;QACxB,OAAM,KAAA,EAAE,UAAI,QAAA,OAAA,SAAA,KAAI;QAChB,WAAU,KAAA,EAAE,cAAQ,QAAA,OAAA,SAAA,KAAI;QACxB,aAAY,KAAA,EAAE,gBAAU,QAAA,OAAA,SAAA,KAAI;QAC5B,WAAU,KAAA,EAAE,cAAQ,QAAA,OAAA,SAAA,KAAI;QACxB,gBAAe,KAAA,EAAE,mBAAa,QAAA,OAAA,SAAA,KAAI;QAClC,iBAAgB,KAAA,EAAE,oBAAc,QAAA,OAAA,SAAA,KAAI;QACpC,kBAAiB,KAAA,EAAE,qBAAe,QAAA,OAAA,SAAA,KAAI;QACtC,gBAAe,KAAA,EAAE,mBAAa,QAAA,OAAA,SAAA,KAAI;QAClC,aAAY,KAAA,EAAE,gBAAU,QAAA,OAAA,SAAA,KAAI;QAC5B;;IAEJ;AAQA,QAAqBK,OAArB,MAAwB;MAkBtB,YAAY,OAAgB,CAAA,GAAE;AAZrB,aAAA,UAAyC,CAAA;AACzC,aAAA,OAA+C,CAAA;AAC/C,aAAA,UAA4C,CAAA;AAE5C,aAAA,gBAAgC,oBAAI,IAAG;AAC/B,aAAA,WAAyD,CAAA;AACzD,aAAA,SAAoC,oBAAI,IAAG;AAO1D,eAAO,KAAK,OAAO,EAAC,GAAG,MAAM,GAAG,gBAAgB,IAAI,EAAC;AACrD,cAAM,EAAC,KAAK,MAAK,IAAI,KAAK,KAAK;AAE/B,aAAK,QAAQ,IAAI,UAAA,WAAW,EAAC,OAAO,CAAA,GAAI,UAAU,iBAAiB,KAAK,MAAK,CAAC;AAC9E,aAAK,SAAS,UAAU,KAAK,MAAM;AACnC,cAAM,YAAY,KAAK;AACvB,aAAK,kBAAkB;AAEvB,aAAK,SAAQ,GAAA,QAAA,UAAQ;AACrB,qBAAa,KAAK,MAAM,gBAAgB,MAAM,eAAe;AAC7D,qBAAa,KAAK,MAAM,mBAAmB,MAAM,cAAc,MAAM;AACrE,aAAK,YAAY,qBAAqB,KAAK,IAAI;AAE/C,YAAI,KAAK;AAAS,4BAAkB,KAAK,IAAI;AAC7C,aAAK,iBAAgB;AACrB,aAAK,sBAAqB;AAC1B,YAAI,KAAK;AAAU,6BAAmB,KAAK,MAAM,KAAK,QAAQ;AAC9D,YAAI,OAAO,KAAK,QAAQ;AAAU,eAAK,cAAc,KAAK,IAAI;AAC9D,0BAAkB,KAAK,IAAI;AAC3B,aAAK,kBAAkB;MACzB;MAEA,mBAAgB;AACd,aAAK,WAAW,QAAQ;MAC1B;MAEA,wBAAqB;AACnB,cAAM,EAAC,OAAO,MAAM,SAAQ,IAAI,KAAK;AACrC,YAAI,iBAA+B;AACnC,YAAI,aAAa,MAAM;AACrB,2BAAiB,EAAC,GAAG,eAAc;AACnC,yBAAe,KAAK,eAAe;AACnC,iBAAO,eAAe;QACxB;AACA,YAAI,QAAQ;AAAO,eAAK,cAAc,gBAAgB,eAAe,QAAQ,GAAG,KAAK;MACvF;MAEA,cAAW;AACT,cAAM,EAAC,MAAM,SAAQ,IAAI,KAAK;AAC9B,eAAQ,KAAK,KAAK,cAAc,OAAO,QAAQ,WAAW,KAAK,QAAQ,KAAK,OAAO;MACrF;MAoBA,SACE,cAEA;AAEA,YAAI;AACJ,YAAI,OAAO,gBAAgB,UAAU;AACnC,cAAI,KAAK,UAAa,YAAY;AAClC,cAAI,CAAC;AAAG,kBAAM,IAAI,MAAM,8BAA8B,YAAY,GAAG;QACvE,OAAO;AACL,cAAI,KAAK,QAAW,YAAY;QAClC;AAEA,cAAM,QAAQ,EAAE,IAAI;AACpB,YAAI,EAAE,YAAY;AAAI,eAAK,SAAS,EAAE;AACtC,eAAO;MACT;MAiBA,QAAqB,QAAmB,OAAe;AACrD,cAAM,MAAM,KAAK,WAAW,QAAQ,KAAK;AACzC,eAAQ,IAAI,YAAY,KAAK,kBAAkB,GAAG;MACpD;MAmBA,aACE,QACA,MAAc;AAEd,YAAI,OAAO,KAAK,KAAK,cAAc,YAAY;AAC7C,gBAAM,IAAI,MAAM,yCAAyC;QAC3D;AACA,cAAM,EAAC,YAAAC,YAAU,IAAI,KAAK;AAC1B,eAAO,gBAAgB,KAAK,MAAM,QAAQ,IAAI;AAE9C,uBAAe,gBAEb,SACA,OAAe;AAEf,gBAAM,eAAe,KAAK,MAAM,QAAQ,OAAO;AAC/C,gBAAM,MAAM,KAAK,WAAW,SAAS,KAAK;AAC1C,iBAAO,IAAI,YAAY,cAAc,KAAK,MAAM,GAAG;QACrD;AAEA,uBAAe,eAA0B,MAAa;AACpD,cAAI,QAAQ,CAAC,KAAK,UAAU,IAAI,GAAG;AACjC,kBAAM,gBAAgB,KAAK,MAAM,EAAC,KAAI,GAAG,IAAI;UAC/C;QACF;AAEA,uBAAe,cAAyB,KAAc;AACpD,cAAI;AACF,mBAAO,KAAK,kBAAkB,GAAG;UACnC,SAAS,GAAG;AACV,gBAAI,EAAE,aAAa,YAAA;AAAkB,oBAAM;AAC3C,wBAAY,KAAK,MAAM,CAAC;AACxB,kBAAM,kBAAkB,KAAK,MAAM,EAAE,aAAa;AAClD,mBAAO,cAAc,KAAK,MAAM,GAAG;UACrC;QACF;AAEA,iBAAS,YAAuB,EAAC,eAAe,KAAK,WAAU,GAAkB;AAC/E,cAAI,KAAK,KAAK,GAAG,GAAG;AAClB,kBAAM,IAAI,MAAM,aAAa,GAAG,kBAAkB,UAAU,qBAAqB;UACnF;QACF;AAEA,uBAAe,kBAA6B,KAAW;AACrD,gBAAM,UAAU,MAAM,YAAY,KAAK,MAAM,GAAG;AAChD,cAAI,CAAC,KAAK,KAAK,GAAG;AAAG,kBAAM,eAAe,KAAK,MAAM,QAAQ,OAAO;AACpE,cAAI,CAAC,KAAK,KAAK,GAAG;AAAG,iBAAK,UAAU,SAAS,KAAK,IAAI;QACxD;AAEA,uBAAe,YAAuB,KAAW;AAC/C,gBAAM,IAAI,KAAK,SAAS,GAAG;AAC3B,cAAI;AAAG,mBAAO;AACd,cAAI;AACF,mBAAO,OAAO,KAAK,SAAS,GAAG,IAAIA,YAAW,GAAG;UACnD;AACE,mBAAO,KAAK,SAAS,GAAG;UAC1B;QACF;MACF;;MAGA,UACE,QACA,KACA,OACA,kBAAkB,KAAK,KAAK;AAE5B,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,qBAAW,OAAO;AAAQ,iBAAK,UAAU,KAAK,QAAW,OAAO,eAAe;AAC/E,iBAAO;QACT;AACA,YAAI;AACJ,YAAI,OAAO,WAAW,UAAU;AAC9B,gBAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,eAAK,OAAO,QAAQ;AACpB,cAAI,OAAO,UAAa,OAAO,MAAM,UAAU;AAC7C,kBAAM,IAAI,MAAM,UAAU,QAAQ,iBAAiB;UACrD;QACF;AACA,eAAM,GAAA,UAAA,aAAY,OAAO,EAAE;AAC3B,aAAK,aAAa,GAAG;AACrB,aAAK,QAAQ,GAAG,IAAI,KAAK,WAAW,QAAQ,OAAO,KAAK,iBAAiB,IAAI;AAC7E,eAAO;MACT;;;MAIA,cACE,QACA,KACA,kBAAkB,KAAK,KAAK;AAE5B,aAAK,UAAU,QAAQ,KAAK,MAAM,eAAe;AACjD,eAAO;MACT;;MAGA,eAAe,QAAmB,iBAAyB;AACzD,YAAI,OAAO,UAAU;AAAW,iBAAO;AACvC,YAAI;AACJ,kBAAU,OAAO;AACjB,YAAI,YAAY,UAAa,OAAO,WAAW,UAAU;AACvD,gBAAM,IAAI,MAAM,0BAA0B;QAC5C;AACA,kBAAU,WAAW,KAAK,KAAK,eAAe,KAAK,YAAW;AAC9D,YAAI,CAAC,SAAS;AACZ,eAAK,OAAO,KAAK,2BAA2B;AAC5C,eAAK,SAAS;AACd,iBAAO;QACT;AACA,cAAM,QAAQ,KAAK,SAAS,SAAS,MAAM;AAC3C,YAAI,CAAC,SAAS,iBAAiB;AAC7B,gBAAM,UAAU,wBAAwB,KAAK,WAAU;AACvD,cAAI,KAAK,KAAK,mBAAmB;AAAO,iBAAK,OAAO,MAAM,OAAO;;AAC5D,kBAAM,IAAI,MAAM,OAAO;QAC9B;AACA,eAAO;MACT;;;MAIA,UAAuB,QAAc;AACnC,YAAI;AACJ,eAAO,QAAQ,MAAM,UAAU,KAAK,MAAM,MAAM,MAAM;AAAU,mBAAS;AACzE,YAAI,QAAQ,QAAW;AACrB,gBAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,gBAAM,OAAO,IAAI,UAAA,UAAU,EAAC,QAAQ,CAAA,GAAI,SAAQ,CAAC;AACjD,gBAAM,UAAA,cAAc,KAAK,MAAM,MAAM,MAAM;AAC3C,cAAI,CAAC;AAAK;AACV,eAAK,KAAK,MAAM,IAAI;QACtB;AACA,eAAQ,IAAI,YAAY,KAAK,kBAAkB,GAAG;MACpD;;;;;MAMA,aAAa,cAA0C;AACrD,YAAI,wBAAwB,QAAQ;AAClC,eAAK,kBAAkB,KAAK,SAAS,YAAY;AACjD,eAAK,kBAAkB,KAAK,MAAM,YAAY;AAC9C,iBAAO;QACT;AACA,gBAAQ,OAAO,cAAc;UAC3B,KAAK;AACH,iBAAK,kBAAkB,KAAK,OAAO;AACnC,iBAAK,kBAAkB,KAAK,IAAI;AAChC,iBAAK,OAAO,MAAK;AACjB,mBAAO;UACT,KAAK,UAAU;AACb,kBAAM,MAAM,UAAU,KAAK,MAAM,YAAY;AAC7C,gBAAI,OAAO,OAAO;AAAU,mBAAK,OAAO,OAAO,IAAI,MAAM;AACzD,mBAAO,KAAK,QAAQ,YAAY;AAChC,mBAAO,KAAK,KAAK,YAAY;AAC7B,mBAAO;UACT;UACA,KAAK,UAAU;AACb,kBAAM,WAAW;AACjB,iBAAK,OAAO,OAAO,QAAQ;AAC3B,gBAAI,KAAK,aAAa,KAAK,KAAK,QAAQ;AACxC,gBAAI,IAAI;AACN,oBAAK,GAAA,UAAA,aAAY,EAAE;AACnB,qBAAO,KAAK,QAAQ,EAAE;AACtB,qBAAO,KAAK,KAAK,EAAE;YACrB;AACA,mBAAO;UACT;UACA;AACE,kBAAM,IAAI,MAAM,qCAAqC;QACzD;MACF;;MAGA,cAAc,aAAuB;AACnC,mBAAW,OAAO;AAAa,eAAK,WAAW,GAAG;AAClD,eAAO;MACT;MAEA,WACE,UACA;AAEA,YAAI;AACJ,YAAI,OAAO,YAAY,UAAU;AAC/B,oBAAU;AACV,cAAI,OAAO,OAAO,UAAU;AAC1B,iBAAK,OAAO,KAAK,0DAA0D;AAC3E,gBAAI,UAAU;UAChB;QACF,WAAW,OAAO,YAAY,YAAY,QAAQ,QAAW;AAC3D,gBAAM;AACN,oBAAU,IAAI;AACd,cAAI,MAAM,QAAQ,OAAO,KAAK,CAAC,QAAQ,QAAQ;AAC7C,kBAAM,IAAI,MAAM,wDAAwD;UAC1E;QACF,OAAO;AACL,gBAAM,IAAI,MAAM,gCAAgC;QAClD;AAEA,qBAAa,KAAK,MAAM,SAAS,GAAG;AACpC,YAAI,CAAC,KAAK;AACR,WAAA,GAAA,OAAA,UAAS,SAAS,CAAC,QAAQ,QAAQ,KAAK,MAAM,GAAG,CAAC;AAClD,iBAAO;QACT;AACA,0BAAkB,KAAK,MAAM,GAAG;AAChC,cAAM,aAAqC;UACzC,GAAG;UACH,OAAM,GAAA,WAAA,cAAa,IAAI,IAAI;UAC3B,aAAY,GAAA,WAAA,cAAa,IAAI,UAAU;;AAEzC,SAAA,GAAA,OAAA,UACE,SACA,WAAW,KAAK,WAAW,IACvB,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG,UAAU,IACvC,CAAC,MAAM,WAAW,KAAK,QAAQ,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAEjF,eAAO;MACT;MAEA,WAAW,SAAe;AACxB,cAAM,OAAO,KAAK,MAAM,IAAI,OAAO;AACnC,eAAO,OAAO,QAAQ,WAAW,KAAK,aAAa,CAAC,CAAC;MACvD;;MAGA,cAAc,SAAe;AAE3B,cAAM,EAAC,MAAK,IAAI;AAChB,eAAO,MAAM,SAAS,OAAO;AAC7B,eAAO,MAAM,IAAI,OAAO;AACxB,mBAAW,SAAS,MAAM,OAAO;AAC/B,gBAAM,IAAI,MAAM,MAAM,UAAU,CAAC,SAAS,KAAK,YAAY,OAAO;AAClE,cAAI,KAAK;AAAG,kBAAM,MAAM,OAAO,GAAG,CAAC;QACrC;AACA,eAAO;MACT;;MAGA,UAAU,MAAc,QAAc;AACpC,YAAI,OAAO,UAAU;AAAU,mBAAS,IAAI,OAAO,MAAM;AACzD,aAAK,QAAQ,IAAI,IAAI;AACrB,eAAO;MACT;MAEA,WACE,SAA2C,KAAK,QAChD,EAAC,YAAY,MAAM,UAAU,OAAM,IAAuB,CAAA;AAE1D,YAAI,CAAC,UAAU,OAAO,WAAW;AAAG,iBAAO;AAC3C,eAAO,OACJ,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,EAAE,YAAY,IAAI,EAAE,OAAO,EAAE,EACrD,OAAO,CAAC,MAAM,QAAQ,OAAO,YAAY,GAAG;MACjD;MAEA,gBAAgB,YAA6B,sBAA8B;AACzE,cAAM,QAAQ,KAAK,MAAM;AACzB,qBAAa,KAAK,MAAM,KAAK,UAAU,UAAU,CAAC;AAClD,mBAAW,eAAe,sBAAsB;AAC9C,gBAAM,WAAW,YAAY,MAAM,GAAG,EAAE,MAAM,CAAC;AAC/C,cAAI,WAAW;AACf,qBAAW,OAAO;AAAU,uBAAW,SAAS,GAAG;AAEnD,qBAAW,OAAO,OAAO;AACvB,kBAAM,OAAO,MAAM,GAAG;AACtB,gBAAI,OAAO,QAAQ;AAAU;AAC7B,kBAAM,EAAC,MAAK,IAAI,KAAK;AACrB,kBAAM,SAAS,SAAS,GAAG;AAC3B,gBAAI,SAAS;AAAQ,uBAAS,GAAG,IAAI,aAAa,MAAM;UAC1D;QACF;AAEA,eAAO;MACT;MAEQ,kBAAkB,SAAiD,OAAc;AACvF,mBAAW,UAAU,SAAS;AAC5B,gBAAM,MAAM,QAAQ,MAAM;AAC1B,cAAI,CAAC,SAAS,MAAM,KAAK,MAAM,GAAG;AAChC,gBAAI,OAAO,OAAO,UAAU;AAC1B,qBAAO,QAAQ,MAAM;YACvB,WAAW,OAAO,CAAC,IAAI,MAAM;AAC3B,mBAAK,OAAO,OAAO,IAAI,MAAM;AAC7B,qBAAO,QAAQ,MAAM;YACvB;UACF;QACF;MACF;MAEA,WACE,QACA,MACA,QACA,iBAAiB,KAAK,KAAK,gBAC3B,YAAY,KAAK,KAAK,eAAa;AAEnC,YAAI;AACJ,cAAM,EAAC,SAAQ,IAAI,KAAK;AACxB,YAAI,OAAO,UAAU,UAAU;AAC7B,eAAK,OAAO,QAAQ;QACtB,OAAO;AACL,cAAI,KAAK,KAAK;AAAK,kBAAM,IAAI,MAAM,uBAAuB;mBACjD,OAAO,UAAU;AAAW,kBAAM,IAAI,MAAM,kCAAkC;QACzF;AACA,YAAI,MAAM,KAAK,OAAO,IAAI,MAAM;AAChC,YAAI,QAAQ;AAAW,iBAAO;AAE9B,kBAAS,GAAA,UAAA,aAAY,MAAM,MAAM;AACjC,cAAM,YAAY,UAAA,cAAc,KAAK,MAAM,QAAQ,MAAM;AACzD,cAAM,IAAI,UAAA,UAAU,EAAC,QAAQ,UAAU,MAAM,QAAQ,UAAS,CAAC;AAC/D,aAAK,OAAO,IAAI,IAAI,QAAQ,GAAG;AAC/B,YAAI,aAAa,CAAC,OAAO,WAAW,GAAG,GAAG;AAExC,cAAI;AAAQ,iBAAK,aAAa,MAAM;AACpC,eAAK,KAAK,MAAM,IAAI;QACtB;AACA,YAAI;AAAgB,eAAK,eAAe,QAAQ,IAAI;AACpD,eAAO;MACT;MAEQ,aAAa,IAAU;AAC7B,YAAI,KAAK,QAAQ,EAAE,KAAK,KAAK,KAAK,EAAE,GAAG;AACrC,gBAAM,IAAI,MAAM,0BAA0B,EAAE,kBAAkB;QAChE;MACF;MAEQ,kBAAkB,KAAc;AACtC,YAAI,IAAI;AAAM,eAAK,mBAAmB,GAAG;;AACpC,oBAAA,cAAc,KAAK,MAAM,GAAG;AAGjC,YAAI,CAAC,IAAI;AAAU,gBAAM,IAAI,MAAM,0BAA0B;AAC7D,eAAO,IAAI;MACb;MAEQ,mBAAmB,KAAc;AACvC,cAAM,cAAc,KAAK;AACzB,aAAK,OAAO,KAAK;AACjB,YAAI;AACF,oBAAA,cAAc,KAAK,MAAM,GAAG;QAC9B;AACE,eAAK,OAAO;QACd;MACF;;AA9cO,IAAAD,KAAA,kBAAkB,mBAAA;AAClB,IAAAA,KAAA,kBAAkB,YAAA;sBAhBNA;AAqerB,aAAS,aAEP,WACA,SACA,KACA,MAAwB,SAAO;AAE/B,iBAAW,OAAO,WAAW;AAC3B,cAAM,MAAM;AACZ,YAAI,OAAO;AAAS,eAAK,OAAO,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG,KAAK,UAAU,GAAG,CAAC,EAAE;MACjF;IACF;AAEA,aAAS,UAAqB,QAAc;AAC1C,gBAAS,GAAA,UAAA,aAAY,MAAM;AAC3B,aAAO,KAAK,QAAQ,MAAM,KAAK,KAAK,KAAK,MAAM;IACjD;AAEA,aAAS,oBAAiB;AACxB,YAAM,cAAc,KAAK,KAAK;AAC9B,UAAI,CAAC;AAAa;AAClB,UAAI,MAAM,QAAQ,WAAW;AAAG,aAAK,UAAU,WAAW;;AACrD,mBAAW,OAAO;AAAa,eAAK,UAAU,YAAY,GAAG,GAAgB,GAAG;IACvF;AAEA,aAAS,oBAAiB;AACxB,iBAAW,QAAQ,KAAK,KAAK,SAAS;AACpC,cAAM,SAAS,KAAK,KAAK,QAAQ,IAAI;AACrC,YAAI;AAAQ,eAAK,UAAU,MAAM,MAAM;MACzC;IACF;AAEA,aAAS,mBAEP,MAAsD;AAEtD,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,aAAK,cAAc,IAAI;AACvB;MACF;AACA,WAAK,OAAO,KAAK,kDAAkD;AACnE,iBAAW,WAAW,MAAM;AAC1B,cAAM,MAAM,KAAK,OAAO;AACxB,YAAI,CAAC,IAAI;AAAS,cAAI,UAAU;AAChC,aAAK,WAAW,GAAG;MACrB;IACF;AAEA,aAAS,uBAAoB;AAC3B,YAAM,WAAW,EAAC,GAAG,KAAK,KAAI;AAC9B,iBAAW,OAAO;AAAqB,eAAO,SAAS,GAAG;AAC1D,aAAO;IACT;AAEA,QAAM,SAAS,EAAC,MAAG;IAAI,GAAG,OAAI;IAAI,GAAG,QAAK;IAAI,EAAC;AAE/C,aAAS,UAAU,QAAgC;AACjD,UAAI,WAAW;AAAO,eAAO;AAC7B,UAAI,WAAW;AAAW,eAAO;AACjC,UAAI,OAAO,OAAO,OAAO,QAAQ,OAAO;AAAO,eAAO;AACtD,YAAM,IAAI,MAAM,mDAAmD;IACrE;AAEA,QAAM,eAAe;AAErB,aAAS,aAAwB,SAA4B,KAAuB;AAClF,YAAM,EAAC,MAAK,IAAI;AAChB,OAAA,GAAA,OAAA,UAAS,SAAS,CAAC,QAAO;AACxB,YAAI,MAAM,SAAS,GAAG;AAAG,gBAAM,IAAI,MAAM,WAAW,GAAG,qBAAqB;AAC5E,YAAI,CAAC,aAAa,KAAK,GAAG;AAAG,gBAAM,IAAI,MAAM,WAAW,GAAG,mBAAmB;MAChF,CAAC;AACD,UAAI,CAAC;AAAK;AACV,UAAI,IAAI,SAAS,EAAE,UAAU,OAAO,cAAc,MAAM;AACtD,cAAM,IAAI,MAAM,uDAAuD;MACzE;IACF;AAEA,aAAS,QAEP,SACA,YACA,UAAmB;;AAEnB,YAAM,OAAO,eAAU,QAAV,eAAU,SAAA,SAAV,WAAY;AACzB,UAAI,YAAY;AAAM,cAAM,IAAI,MAAM,6CAA6C;AACnF,YAAM,EAAC,MAAK,IAAI;AAChB,UAAI,YAAY,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK,CAAC,EAAC,MAAM,EAAC,MAAM,MAAM,QAAQ;AAClF,UAAI,CAAC,WAAW;AACd,oBAAY,EAAC,MAAM,UAAU,OAAO,CAAA,EAAE;AACtC,cAAM,MAAM,KAAK,SAAS;MAC5B;AACA,YAAM,SAAS,OAAO,IAAI;AAC1B,UAAI,CAAC;AAAY;AAEjB,YAAM,OAAa;QACjB;QACA,YAAY;UACV,GAAG;UACH,OAAM,GAAA,WAAA,cAAa,WAAW,IAAI;UAClC,aAAY,GAAA,WAAA,cAAa,WAAW,UAAU;;;AAGlD,UAAI,WAAW;AAAQ,sBAAc,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM;;AAC7E,kBAAU,MAAM,KAAK,IAAI;AAC9B,YAAM,IAAI,OAAO,IAAI;AACrB,OAAA,KAAA,WAAW,gBAAU,QAAA,OAAA,SAAA,SAAA,GAAE,QAAQ,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC;IAC9D;AAEA,aAAS,cAAyB,WAAsB,MAAY,QAAc;AAChF,YAAM,IAAI,UAAU,MAAM,UAAU,CAAC,UAAU,MAAM,YAAY,MAAM;AACvE,UAAI,KAAK,GAAG;AACV,kBAAU,MAAM,OAAO,GAAG,GAAG,IAAI;MACnC,OAAO;AACL,kBAAU,MAAM,KAAK,IAAI;AACzB,aAAK,OAAO,KAAK,QAAQ,MAAM,iBAAiB;MAClD;IACF;AAEA,aAAS,kBAA6B,KAAsB;AAC1D,UAAI,EAAC,WAAU,IAAI;AACnB,UAAI,eAAe;AAAW;AAC9B,UAAI,IAAI,SAAS,KAAK,KAAK;AAAO,qBAAa,aAAa,UAAU;AACtE,UAAI,iBAAiB,KAAK,QAAQ,YAAY,IAAI;IACpD;AAEA,QAAM,WAAW;MACf,MAAM;;AAGR,aAAS,aAAa,QAAiB;AACrC,aAAO,EAAC,OAAO,CAAC,QAAQ,QAAQ,EAAC;IACnC;;;;;;;;;ACx3BA,QAAM,MAA6B;MACjC,SAAS;MACT,OAAI;AACF,cAAM,IAAI,MAAM,sDAAsD;MACxE;;AAGF,YAAA,UAAe;;;;;;;;;;ACPf,QAAA,cAAA;AACA,QAAA,SAAA;AACA,QAAA,YAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AAEA,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY;MACZ,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,MAAM,GAAE,IAAI;AAChC,cAAM,EAAC,QAAQ,WAAW,KAAK,cAAc,MAAM,KAAI,IAAI;AAC3D,cAAM,EAAC,KAAI,IAAI;AACf,aAAK,SAAS,OAAO,SAAS,SAAS,WAAW,KAAK;AAAQ,iBAAO,YAAW;AACjF,cAAM,WAAW,UAAA,WAAW,KAAK,MAAM,MAAM,QAAQ,IAAI;AACzD,YAAI,aAAa;AAAW,gBAAM,IAAI,YAAA,QAAgB,GAAG,KAAK,aAAa,QAAQ,IAAI;AACvF,YAAI,oBAAoB,UAAA;AAAW,iBAAO,aAAa,QAAQ;AAC/D,eAAO,gBAAgB,QAAQ;AAE/B,iBAAS,cAAW;AAClB,cAAI,QAAQ;AAAM,mBAAO,QAAQ,KAAK,cAAc,KAAK,IAAI,MAAM;AACnE,gBAAM,WAAW,IAAI,WAAW,QAAQ,EAAC,KAAK,KAAI,CAAC;AACnD,iBAAO,QAAQ,MAAK,GAAA,UAAA,KAAI,QAAQ,aAAa,MAAM,KAAK,MAAM;QAChE;AAEA,iBAAS,aAAa,KAAc;AAClC,gBAAM,IAAI,YAAY,KAAK,GAAG;AAC9B,kBAAQ,KAAK,GAAG,KAAK,IAAI,MAAM;QACjC;AAEA,iBAAS,gBAAgB,KAAc;AACrC,gBAAM,UAAU,IAAI,WAClB,UACA,KAAK,KAAK,WAAW,OAAO,EAAC,KAAK,KAAK,OAAM,GAAA,UAAA,WAAU,GAAG,EAAC,IAAI,EAAC,KAAK,IAAG,CAAC;AAE3E,gBAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,gBAAM,SAAS,IAAI,UACjB;YACE,QAAQ;YACR,WAAW,CAAA;YACX,YAAY,UAAA;YACZ,cAAc;YACd,eAAe;aAEjB,KAAK;AAEP,cAAI,eAAe,MAAM;AACzB,cAAI,GAAG,KAAK;QACd;MACF;;AAGF,aAAgB,YAAY,KAAiB,KAAc;AACzD,YAAM,EAAC,IAAG,IAAI;AACd,aAAO,IAAI,WACP,IAAI,WAAW,YAAY,EAAC,KAAK,IAAI,SAAQ,CAAC,KAC9C,GAAA,UAAA,KAAI,IAAI,WAAW,WAAW,EAAC,KAAK,IAAG,CAAC,CAAC;IAC/C;AALA,YAAA,cAAA;AAOA,aAAgB,QAAQ,KAAiB,GAAS,KAAiB,QAAgB;AACjF,YAAM,EAAC,KAAK,GAAE,IAAI;AAClB,YAAM,EAAC,WAAW,WAAW,KAAK,KAAI,IAAI;AAC1C,YAAM,UAAU,KAAK,cAAc,QAAA,QAAE,OAAO,UAAA;AAC5C,UAAI;AAAQ,qBAAY;;AACnB,oBAAW;AAEhB,eAAS,eAAY;AACnB,YAAI,CAAC,IAAI;AAAQ,gBAAM,IAAI,MAAM,wCAAwC;AACzE,cAAM,QAAQ,IAAI,IAAI,OAAO;AAC7B,YAAI,IACF,MAAK;AACH,cAAI,MAAK,GAAA,UAAA,YAAU,GAAA,OAAA,kBAAiB,KAAK,GAAG,OAAO,CAAC,EAAE;AACtD,2BAAiB,CAAC;AAClB,cAAI,CAAC;AAAW,gBAAI,OAAO,OAAO,IAAI;QACxC,GACA,CAAC,MAAK;AACJ,cAAI,IAAG,GAAA,UAAA,OAAM,CAAC,eAAe,GAAG,eAAuB,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC;AAC9E,wBAAc,CAAC;AACf,cAAI,CAAC;AAAW,gBAAI,OAAO,OAAO,KAAK;QACzC,CAAC;AAEH,YAAI,GAAG,KAAK;MACd;AAEA,eAAS,cAAW;AAClB,YAAI,QACF,GAAA,OAAA,kBAAiB,KAAK,GAAG,OAAO,GAChC,MAAM,iBAAiB,CAAC,GACxB,MAAM,cAAc,CAAC,CAAC;MAE1B;AAEA,eAAS,cAAc,QAAY;AACjC,cAAM,QAAO,GAAA,UAAA,KAAI,MAAM;AACvB,YAAI,OAAO,QAAA,QAAE,UAAS,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,eAAe,IAAI,MAAM,QAAA,QAAE,OAAO,WAAW,IAAI,GAAG;AACvF,YAAI,OAAO,QAAA,QAAE,SAAQ,GAAA,UAAA,KAAI,QAAA,QAAE,OAAO,SAAS;MAC7C;AAEA,eAAS,iBAAiB,QAAY;;AACpC,YAAI,CAAC,GAAG,KAAK;AAAa;AAC1B,cAAM,gBAAe,KAAA,QAAG,QAAH,QAAG,SAAA,SAAH,IAAK,cAAQ,QAAA,OAAA,SAAA,SAAA,GAAE;AAEpC,YAAI,GAAG,UAAU,MAAM;AACrB,cAAI,gBAAgB,CAAC,aAAa,cAAc;AAC9C,gBAAI,aAAa,UAAU,QAAW;AACpC,iBAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,aAAa,OAAO,GAAG,KAAK;YACnE;UACF,OAAO;AACL,kBAAM,QAAQ,IAAI,IAAI,UAAS,GAAA,UAAA,KAAI,MAAM,kBAAkB;AAC3D,eAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,OAAO,GAAG,OAAO,UAAA,IAAI;UAC5D;QACF;AACA,YAAI,GAAG,UAAU,MAAM;AACrB,cAAI,gBAAgB,CAAC,aAAa,cAAc;AAC9C,gBAAI,aAAa,UAAU,QAAW;AACpC,iBAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,aAAa,OAAO,GAAG,KAAK;YACnE;UACF,OAAO;AACL,kBAAM,QAAQ,IAAI,IAAI,UAAS,GAAA,UAAA,KAAI,MAAM,kBAAkB;AAC3D,eAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,OAAO,GAAG,OAAO,UAAA,IAAI;UAC5D;QACF;MACF;IACF;AAhEA,YAAA,UAAA;AAkEA,YAAA,UAAe;;;;;;;;;AC/Hf,QAAA,OAAA;AACA,QAAA,QAAA;AAEA,QAAM,OAAmB;MACvB;MACA;MACA;MACA;MACA,EAAC,SAAS,WAAU;MACpB;MACA,KAAA;MACA,MAAA;;AAGF,YAAA,UAAe;;;;;;;;;ACbf,QAAA,YAAA;AAEA,QAAM,MAAM,UAAA;AAMZ,QAAM,OAAgE;MACpE,SAAS,EAAC,OAAO,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,GAAE;MAChD,SAAS,EAAC,OAAO,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,GAAE;MAChD,kBAAkB,EAAC,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAG;MACxD,kBAAkB,EAAC,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAG;;AAS1D,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,SAAS,WAAU,OAAM,GAAA,UAAA,eAAc,KAAK,OAAc,EAAE,KAAK,IAAI,UAAU;MAC1F,QAAQ,CAAC,EAAC,SAAS,WAAU,OAC3B,GAAA,UAAA,kBAAiB,KAAK,OAAc,EAAE,KAAK,YAAY,UAAU;;AAGrE,QAAM,MAA6B;MACjC,SAAS,OAAO,KAAK,IAAI;MACzB,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,SAAS,MAAM,WAAU,IAAI;AACpC,YAAI,WAAU,GAAA,UAAA,KAAI,IAAI,IAAI,KAAK,OAAc,EAAE,IAAI,IAAI,UAAU,aAAa,IAAI,GAAG;MACvF;;AAGF,YAAA,UAAe;;;;;;;;;ACvCf,QAAA,YAAA;AAQA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,2BAA0B,UAAU;MAC/D,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,kBAAiB,UAAU;;AAGvD,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,MAAM,YAAY,GAAE,IAAI;AAEpC,cAAM,OAAO,GAAG,KAAK;AACrB,cAAM,MAAM,IAAI,IAAI,KAAK;AACzB,cAAM,UAAU,QACZ,GAAA,UAAA,yBAAwB,GAAG,OAAO,GAAG,UAAU,IAAI,MACnD,GAAA,UAAA,KAAI,GAAG,iBAAiB,GAAG;AAC/B,YAAI,WAAU,GAAA,UAAA,MAAK,UAAU,cAAc,GAAG,MAAM,IAAI,IAAI,UAAU,KAAK,OAAO,IAAI;MACxF;;AAGF,YAAA,UAAe;;;;;;;;;AC/Bf,aAAwB,WAAW,KAAW;AAC5C,YAAM,MAAM,IAAI;AAChB,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI;AACJ,aAAO,MAAM,KAAK;AAChB;AACA,gBAAQ,IAAI,WAAW,KAAK;AAC5B,YAAI,SAAS,SAAU,SAAS,SAAU,MAAM,KAAK;AAEnD,kBAAQ,IAAI,WAAW,GAAG;AAC1B,eAAK,QAAQ,WAAY;AAAQ;QACnC;MACF;AACA,aAAO;IACT;AAfA,YAAA,UAAA;AAiBA,eAAW,OAAO;;;;;;;;;ACjBlB,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,eAAA;AAEA,QAAM,QAAgC;MACpC,QAAQ,EAAC,SAAS,WAAU,GAAC;AAC3B,cAAM,OAAO,YAAY,cAAc,SAAS;AAChD,gBAAO,GAAA,UAAA,qBAAoB,IAAI,SAAS,UAAU;MACpD;MACA,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,aAAY,UAAU;;AAGlD,QAAM,MAA6B;MACjC,SAAS,CAAC,aAAa,WAAW;MAClC,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,SAAS,MAAM,YAAY,GAAE,IAAI;AACxC,cAAM,KAAK,YAAY,cAAc,UAAA,UAAU,KAAK,UAAA,UAAU;AAC9D,cAAM,MACJ,GAAG,KAAK,YAAY,SAAQ,GAAA,UAAA,KAAI,IAAI,aAAY,GAAA,UAAA,MAAI,GAAA,OAAA,SAAQ,IAAI,KAAK,aAAA,OAAU,CAAC,IAAI,IAAI;AAC1F,YAAI,WAAU,GAAA,UAAA,KAAI,GAAG,IAAI,EAAE,IAAI,UAAU,EAAE;MAC7C;;AAGF,YAAA,UAAe;;;;;;;;;AC3Bf,QAAA,SAAA;AACA,QAAA,YAAA;AAIA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,2BAA0B,UAAU;MAC/D,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,eAAc,UAAU;;AAGpD,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,MAAM,OAAO,QAAQ,YAAY,GAAE,IAAI;AAE9C,cAAM,IAAI,GAAG,KAAK,gBAAgB,MAAM;AACxC,cAAM,SAAS,SAAQ,GAAA,UAAA,iBAAgB,UAAU,KAAK,CAAC,QAAO,GAAA,OAAA,YAAW,KAAK,MAAM;AACpF,YAAI,WAAU,GAAA,UAAA,MAAK,MAAM,SAAS,IAAI,GAAG;MAC3C;;AAGF,YAAA,UAAe;;;;;;;;;ACzBf,QAAA,YAAA;AAEA,QAAM,QAAgC;MACpC,QAAQ,EAAC,SAAS,WAAU,GAAC;AAC3B,cAAM,OAAO,YAAY,kBAAkB,SAAS;AACpD,gBAAO,GAAA,UAAA,qBAAoB,IAAI,SAAS,UAAU;MACpD;MACA,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,aAAY,UAAU;;AAGlD,QAAM,MAA6B;MACjC,SAAS,CAAC,iBAAiB,eAAe;MAC1C,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,SAAS,MAAM,WAAU,IAAI;AACpC,cAAM,KAAK,YAAY,kBAAkB,UAAA,UAAU,KAAK,UAAA,UAAU;AAClE,YAAI,WAAU,GAAA,UAAA,iBAAgB,IAAI,YAAY,EAAE,IAAI,UAAU,EAAE;MAClE;;AAGF,YAAA,UAAe;;;;;;;;;ACvBf,QAAA,SAAA;AAOA,QAAA,YAAA;AACA,QAAA,SAAA;AAQA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,gBAAe,EAAC,OAAM,GAAA,UAAA,oCAAmC,eAAe;MAC5F,QAAQ,CAAC,EAAC,QAAQ,EAAC,gBAAe,EAAC,OAAM,GAAA,UAAA,uBAAsB,eAAe;;AAGhF,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,YAAY,MAAM,OAAO,GAAE,IAAI;AACnD,cAAM,EAAC,KAAI,IAAI;AACf,YAAI,CAAC,SAAS,OAAO,WAAW;AAAG;AACnC,cAAM,UAAU,OAAO,UAAU,KAAK;AACtC,YAAI,GAAG;AAAW,wBAAa;;AAC1B,0BAAe;AAEpB,YAAI,KAAK,gBAAgB;AACvB,gBAAM,QAAQ,IAAI,aAAa;AAC/B,gBAAM,EAAC,kBAAiB,IAAI,IAAI;AAChC,qBAAW,eAAe,QAAQ;AAChC,iBAAI,UAAK,QAAL,UAAK,SAAA,SAAL,MAAQ,WAAW,OAAM,UAAa,CAAC,kBAAkB,IAAI,WAAW,GAAG;AAC7E,oBAAM,aAAa,GAAG,UAAU,SAAS,GAAG;AAC5C,oBAAM,MAAM,sBAAsB,WAAW,wBAAwB,UAAU;AAC/E,eAAA,GAAA,OAAA,iBAAgB,IAAI,KAAK,GAAG,KAAK,cAAc;YACjD;UACF;QACF;AAEA,iBAAS,gBAAa;AACpB,cAAI,WAAW,OAAO;AACpB,gBAAI,WAAW,UAAA,KAAK,eAAe;UACrC,OAAO;AACL,uBAAW,QAAQ,QAAQ;AACzB,eAAA,GAAA,OAAA,wBAAuB,KAAK,IAAI;YAClC;UACF;QACF;AAEA,iBAAS,kBAAe;AACtB,gBAAM,UAAU,IAAI,IAAI,SAAS;AACjC,cAAI,WAAW,OAAO;AACpB,kBAAM,QAAQ,IAAI,IAAI,SAAS,IAAI;AACnC,gBAAI,WAAW,OAAO,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAC5D,gBAAI,GAAG,KAAK;UACd,OAAO;AACL,gBAAI,IAAG,GAAA,OAAA,kBAAiB,KAAK,QAAQ,OAAO,CAAC;AAC7C,aAAA,GAAA,OAAA,mBAAkB,KAAK,OAAO;AAC9B,gBAAI,KAAI;UACV;QACF;AAEA,iBAAS,kBAAe;AACtB,cAAI,MAAM,QAAQ,YAAoB,CAAC,SAAQ;AAC7C,gBAAI,UAAU,EAAC,iBAAiB,KAAI,CAAC;AACrC,gBAAI,IAAG,GAAA,OAAA,kBAAiB,KAAK,MAAM,MAAM,KAAK,aAAa,GAAG,MAAM,IAAI,MAAK,CAAE;UACjF,CAAC;QACH;AAEA,iBAAS,iBAAiB,SAAe,OAAW;AAClD,cAAI,UAAU,EAAC,iBAAiB,QAAO,CAAC;AACxC,cAAI,MACF,SACA,YACA,MAAK;AACH,gBAAI,OAAO,QAAO,GAAA,OAAA,gBAAe,KAAK,MAAM,SAAS,KAAK,aAAa,CAAC;AACxE,gBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAK;AACtB,kBAAI,MAAK;AACT,kBAAI,MAAK;YACX,CAAC;UACH,GACA,UAAA,GAAG;QAEP;MACF;;AAGF,YAAA,UAAe;;;;;;;;;AC/Ff,QAAA,YAAA;AAEA,QAAM,QAAgC;MACpC,QAAQ,EAAC,SAAS,WAAU,GAAC;AAC3B,cAAM,OAAO,YAAY,aAAa,SAAS;AAC/C,gBAAO,GAAA,UAAA,qBAAoB,IAAI,SAAS,UAAU;MACpD;MACA,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,aAAY,UAAU;;AAGlD,QAAM,MAA6B;MACjC,SAAS,CAAC,YAAY,UAAU;MAChC,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,SAAS,MAAM,WAAU,IAAI;AACpC,cAAM,KAAK,YAAY,aAAa,UAAA,UAAU,KAAK,UAAA,UAAU;AAC7D,YAAI,WAAU,GAAA,UAAA,KAAI,IAAI,WAAW,EAAE,IAAI,UAAU,EAAE;MACrD;;AAGF,YAAA,UAAe;;;;;;;;;ACxBf,QAAA,QAAA;AAGE,UAAgB,OAAO;AAEzB,YAAA,UAAe;;;;;;;;;ACJf,QAAA,aAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AAQA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,GAAG,EAAC,EAAC,OACvB,GAAA,UAAA,+CAA8C,CAAC,QAAQ,CAAC;MAC1D,QAAQ,CAAC,EAAC,QAAQ,EAAC,GAAG,EAAC,EAAC,OAAM,GAAA,UAAA,SAAQ,CAAC,QAAQ,CAAC;;AAGlD,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,MAAM,OAAO,QAAQ,cAAc,YAAY,GAAE,IAAI;AACjE,YAAI,CAAC,SAAS,CAAC;AAAQ;AACvB,cAAM,QAAQ,IAAI,IAAI,OAAO;AAC7B,cAAM,YAAY,aAAa,SAAQ,GAAA,WAAA,gBAAe,aAAa,KAAK,IAAI,CAAA;AAC5E,YAAI,WAAW,OAAO,sBAAqB,GAAA,UAAA,KAAI,UAAU,YAAY;AACrE,YAAI,GAAG,KAAK;AAEZ,iBAAS,sBAAmB;AAC1B,gBAAM,IAAI,IAAI,IAAI,MAAK,GAAA,UAAA,KAAI,IAAI,SAAS;AACxC,gBAAM,IAAI,IAAI,IAAI,GAAG;AACrB,cAAI,UAAU,EAAC,GAAG,EAAC,CAAC;AACpB,cAAI,OAAO,OAAO,IAAI;AACtB,cAAI,IAAG,GAAA,UAAA,KAAI,CAAC,QAAQ,OAAO,YAAW,IAAK,QAAQ,QAAQ,GAAG,CAAC,CAAC;QAClE;AAEA,iBAAS,cAAW;AAClB,iBAAO,UAAU,SAAS,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,MAAM,YAAY,MAAM,OAAO;QACvF;AAEA,iBAAS,MAAM,GAAS,GAAO;AAC7B,gBAAM,OAAO,IAAI,KAAK,MAAM;AAC5B,gBAAM,aAAY,GAAA,WAAA,gBAAe,WAAW,MAAM,GAAG,KAAK,eAAe,WAAA,SAAS,KAAK;AACvF,gBAAM,UAAU,IAAI,MAAM,YAAW,GAAA,UAAA,MAAK;AAC1C,cAAI,KAAI,GAAA,UAAA,MAAK,CAAC,OAAO,MAAK;AACxB,gBAAI,IAAI,OAAM,GAAA,UAAA,KAAI,IAAI,IAAI,CAAC,GAAG;AAC9B,gBAAI,GAAG,YAAW,GAAA,UAAA,YAAW;AAC7B,gBAAI,UAAU,SAAS;AAAG,kBAAI,IAAG,GAAA,UAAA,YAAW,IAAI,iBAAgB,GAAA,UAAA,KAAI,IAAI,SAAS;AACjF,gBACG,IAAG,GAAA,UAAA,YAAW,OAAO,IAAI,IAAI,iBAAiB,MAAK;AAClD,kBAAI,OAAO,IAAG,GAAA,UAAA,KAAI,OAAO,IAAI,IAAI,GAAG;AACpC,kBAAI,MAAK;AACT,kBAAI,OAAO,OAAO,KAAK,EAAE,MAAK;YAChC,CAAC,EACA,MAAK,GAAA,UAAA,KAAI,OAAO,IAAI,IAAI,OAAO,CAAC,EAAE;UACvC,CAAC;QACH;AAEA,iBAAS,OAAO,GAAS,GAAO;AAC9B,gBAAM,OAAM,GAAA,OAAA,SAAQ,KAAK,QAAA,OAAK;AAC9B,gBAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,cAAI,MAAM,KAAK,EAAE,KAAI,GAAA,UAAA,MAAK,CAAC,OAAO,MAChC,IAAI,KAAI,GAAA,UAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAC/B,IAAI,IAAG,GAAA,UAAA,KAAI,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,MAAK;AACnD,gBAAI,MAAK;AACT,gBAAI,OAAO,OAAO,KAAK,EAAE,MAAM,KAAK;UACtC,CAAC,CAAC,CACH;QAEL;MACF;;AAGF,YAAA,UAAe;;;;;;;;;AC5Ef,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AAIA,QAAM,QAAgC;MACpC,SAAS;MACT,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,oBAAmB,UAAU;;AAGzD,QAAM,MAA6B;MACjC,SAAS;MACT,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,MAAM,OAAO,YAAY,OAAM,IAAI;AAC/C,YAAI,SAAU,UAAU,OAAO,UAAU,UAAW;AAClD,cAAI,WAAU,GAAA,UAAA,OAAK,GAAA,OAAA,SAAQ,KAAK,QAAA,OAAK,CAAC,IAAI,IAAI,KAAK,UAAU,GAAG;QAClE,OAAO;AACL,cAAI,MAAK,GAAA,UAAA,KAAI,MAAM,QAAQ,IAAI,EAAE;QACnC;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACzBf,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,UAAA;AAIA,QAAM,QAAgC;MACpC,SAAS;MACT,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,qBAAoB,UAAU;;AAG1D,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,MAAM,OAAO,QAAQ,YAAY,GAAE,IAAI;AACnD,YAAI,CAAC,SAAS,OAAO,WAAW;AAAG,gBAAM,IAAI,MAAM,gCAAgC;AACnF,cAAM,UAAU,OAAO,UAAU,GAAG,KAAK;AACzC,YAAI;AACJ,cAAM,SAAS,MAAa,QAAG,QAAH,QAAG,SAAH,MAAA,OAAQ,GAAA,OAAA,SAAQ,KAAK,QAAA,OAAK;AAEtD,YAAI;AACJ,YAAI,WAAW,OAAO;AACpB,kBAAQ,IAAI,IAAI,OAAO;AACvB,cAAI,WAAW,OAAO,QAAQ;QAChC,OAAO;AAEL,cAAI,CAAC,MAAM,QAAQ,MAAM;AAAG,kBAAM,IAAI,MAAM,0BAA0B;AACtE,gBAAM,UAAU,IAAI,MAAM,WAAW,UAAU;AAC/C,mBAAQ,GAAA,UAAA,IAAG,GAAG,OAAO,IAAI,CAAC,IAAa,MAAc,UAAU,SAAS,CAAC,CAAC,CAAC;QAC7E;AACA,YAAI,KAAK,KAAK;AAEd,iBAAS,WAAQ;AACf,cAAI,OAAO,OAAO,KAAK;AACvB,cAAI,MAAM,KAAK,YAAoB,CAAC,MAClC,IAAI,IAAG,GAAA,UAAA,KAAI,OAAM,CAAE,IAAI,IAAI,KAAK,CAAC,KAAK,MAAM,IAAI,OAAO,OAAO,IAAI,EAAE,MAAK,CAAE,CAAC;QAEhF;AAEA,iBAAS,UAAU,SAAe,GAAS;AACzC,gBAAM,MAAM,OAAO,CAAC;AACpB,iBAAO,OAAO,QAAQ,YAAY,QAAQ,QACtC,GAAA,UAAA,KAAI,OAAM,CAAE,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,QACrC,GAAA,UAAA,KAAI,IAAI,QAAQ,GAAG;QACzB;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACpDf,QAAA,gBAAA;AACA,QAAA,eAAA;AACA,QAAA,gBAAA;AACA,QAAA,YAAA;AACA,QAAA,oBAAA;AACA,QAAA,aAAA;AACA,QAAA,eAAA;AACA,QAAA,gBAAA;AACA,QAAA,UAAA;AACA,QAAA,SAAA;AAEA,QAAM,aAAyB;;MAE7B,cAAA;MACA,aAAA;;MAEA,cAAA;MACA,UAAA;;MAEA,kBAAA;MACA,WAAA;;MAEA,aAAA;MACA,cAAA;;MAEA,EAAC,SAAS,QAAQ,YAAY,CAAC,UAAU,OAAO,EAAC;MACjD,EAAC,SAAS,YAAY,YAAY,UAAS;MAC3C,QAAA;MACA,OAAA;;AAGF,YAAA,UAAe;;;;;;;;;;ACzBf,QAAA,YAAA;AACA,QAAA,SAAA;AAIA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,IAAG,EAAC,OAAM,GAAA,UAAA,+BAA8B,GAAG;MAC/D,QAAQ,CAAC,EAAC,QAAQ,EAAC,IAAG,EAAC,OAAM,GAAA,UAAA,aAAY,GAAG;;AAG9C,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,WAAW,QAAQ;MAChC,QAAQ;MACR;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,cAAc,GAAE,IAAI;AAC3B,cAAM,EAAC,MAAK,IAAI;AAChB,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAA,GAAA,OAAA,iBAAgB,IAAI,sEAAsE;AAC1F;QACF;AACA,gCAAwB,KAAK,KAAK;MACpC;;AAGF,aAAgB,wBAAwB,KAAiB,OAAkB;AACzE,YAAM,EAAC,KAAK,QAAQ,MAAM,SAAS,GAAE,IAAI;AACzC,SAAG,QAAQ;AACX,YAAM,MAAM,IAAI,MAAM,QAAO,GAAA,UAAA,KAAI,IAAI,SAAS;AAC9C,UAAI,WAAW,OAAO;AACpB,YAAI,UAAU,EAAC,KAAK,MAAM,OAAM,CAAC;AACjC,YAAI,MAAK,GAAA,UAAA,KAAI,GAAG,OAAO,MAAM,MAAM,EAAE;MACvC,WAAW,OAAO,UAAU,YAAY,EAAC,GAAA,OAAA,mBAAkB,IAAI,MAAM,GAAG;AACtE,cAAM,QAAQ,IAAI,IAAI,UAAS,GAAA,UAAA,KAAI,GAAG,OAAO,MAAM,MAAM,EAAE;AAC3D,YAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAM,cAAc,KAAK,CAAC;AAC7C,YAAI,GAAG,KAAK;MACd;AAEA,eAAS,cAAc,OAAW;AAChC,YAAI,SAAS,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAK;AACzC,cAAI,UAAU,EAAC,SAAS,UAAU,GAAG,cAAc,OAAA,KAAK,IAAG,GAAG,KAAK;AACnE,cAAI,CAAC,GAAG;AAAW,gBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAM,IAAI,MAAK,CAAE;QACzD,CAAC;MACH;IACF;AAnBA,YAAA,0BAAA;AAqBA,YAAA,UAAe;;;;;;;;;;ACrDf,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AAEA,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,UAAU,SAAS,SAAS;MACzC,QAAQ;MACR,KAAK,KAAe;AAClB,cAAM,EAAC,QAAQ,GAAE,IAAI;AACrB,YAAI,MAAM,QAAQ,MAAM;AAAG,iBAAO,cAAc,KAAK,mBAAmB,MAAM;AAC9E,WAAG,QAAQ;AACX,aAAI,GAAA,OAAA,mBAAkB,IAAI,MAAM;AAAG;AACnC,YAAI,IAAG,GAAA,OAAA,eAAc,GAAG,CAAC;MAC3B;;AAGF,aAAgB,cACd,KACA,YACA,SAAsB,IAAI,QAAM;AAEhC,YAAM,EAAC,KAAK,cAAc,MAAM,SAAS,GAAE,IAAI;AAC/C,uBAAiB,YAAY;AAC7B,UAAI,GAAG,KAAK,eAAe,OAAO,UAAU,GAAG,UAAU,MAAM;AAC7D,WAAG,QAAQ,OAAA,eAAe,MAAM,KAAK,OAAO,QAAQ,GAAG,KAAK;MAC9D;AACA,YAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,YAAM,MAAM,IAAI,MAAM,QAAO,GAAA,UAAA,KAAI,IAAI,SAAS;AAC9C,aAAO,QAAQ,CAAC,KAAgB,MAAa;AAC3C,aAAI,GAAA,OAAA,mBAAkB,IAAI,GAAG;AAAG;AAChC,YAAI,IAAG,GAAA,UAAA,KAAI,GAAG,MAAM,CAAC,IAAI,MACvB,IAAI,UACF;UACE;UACA,YAAY;UACZ,UAAU;WAEZ,KAAK,CACN;AAEH,YAAI,GAAG,KAAK;MACd,CAAC;AAED,eAAS,iBAAiB,KAAoB;AAC5C,cAAM,EAAC,MAAM,cAAa,IAAI;AAC9B,cAAM,IAAI,OAAO;AACjB,cAAM,YAAY,MAAM,IAAI,aAAa,MAAM,IAAI,YAAY,IAAI,UAAU,MAAM;AACnF,YAAI,KAAK,gBAAgB,CAAC,WAAW;AACnC,gBAAM,MAAM,IAAI,OAAO,QAAQ,CAAC,oCAAoC,UAAU,4CAA4C,aAAa;AACvI,WAAA,GAAA,OAAA,iBAAgB,IAAI,KAAK,KAAK,YAAY;QAC5C;MACF;IACF;AApCA,YAAA,gBAAA;AAsCA,YAAA,UAAe;;;;;;;;;ACzDf,QAAA,UAAA;AAEA,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,OAAO;MACpB,QAAQ;MACR,MAAM,CAAC,SAAQ,GAAA,QAAA,eAAc,KAAK,OAAO;;AAG3C,YAAA,UAAe;;;;;;;;;ACJf,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AACA,QAAA,oBAAA;AAIA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,IAAG,EAAC,OAAM,GAAA,UAAA,+BAA8B,GAAG;MAC/D,QAAQ,CAAC,EAAC,QAAQ,EAAC,IAAG,EAAC,OAAM,GAAA,UAAA,aAAY,GAAG;;AAG9C,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,UAAU,SAAS;MAChC,QAAQ;MACR;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,QAAQ,cAAc,GAAE,IAAI;AACnC,cAAM,EAAC,YAAW,IAAI;AACtB,WAAG,QAAQ;AACX,aAAI,GAAA,OAAA,mBAAkB,IAAI,MAAM;AAAG;AACnC,YAAI;AAAa,WAAA,GAAA,kBAAA,yBAAwB,KAAK,WAAW;;AACpD,cAAI,IAAG,GAAA,OAAA,eAAc,GAAG,CAAC;MAChC;;AAGF,YAAA,UAAe;;;;;;;;;AC5Bf,QAAA,YAAA;AACA,QAAA,SAAA;AAQA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,KAAK,IAAG,EAAC,MAC3B,QAAQ,UACJ,GAAA,UAAA,6BAA4B,GAAG,oBAC/B,GAAA,UAAA,6BAA4B,GAAG,qBAAqB,GAAG;MAC7D,QAAQ,CAAC,EAAC,QAAQ,EAAC,KAAK,IAAG,EAAC,MAC1B,QAAQ,UAAY,GAAA,UAAA,mBAAkB,GAAG,OAAM,GAAA,UAAA,mBAAkB,GAAG,kBAAkB,GAAG;;AAG7F,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,UAAU,SAAS;MAChC,QAAQ;MACR,aAAa;MACb;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,cAAc,MAAM,GAAE,IAAI;AAC9C,YAAI;AACJ,YAAI;AACJ,cAAM,EAAC,aAAa,YAAW,IAAI;AACnC,YAAI,GAAG,KAAK,MAAM;AAChB,gBAAM,gBAAgB,SAAY,IAAI;AACtC,gBAAM;QACR,OAAO;AACL,gBAAM;QACR;AACA,cAAM,MAAM,IAAI,MAAM,QAAO,GAAA,UAAA,KAAI,IAAI,SAAS;AAC9C,YAAI,UAAU,EAAC,KAAK,IAAG,CAAC;AACxB,YAAI,QAAQ,UAAa,QAAQ,GAAG;AAClC,WAAA,GAAA,OAAA,iBAAgB,IAAI,sEAAsE;AAC1F;QACF;AACA,YAAI,QAAQ,UAAa,MAAM,KAAK;AAClC,WAAA,GAAA,OAAA,iBAAgB,IAAI,iDAAiD;AACrE,cAAI,KAAI;AACR;QACF;AACA,aAAI,GAAA,OAAA,mBAAkB,IAAI,MAAM,GAAG;AACjC,cAAI,QAAO,GAAA,UAAA,KAAI,GAAG,OAAO,GAAG;AAC5B,cAAI,QAAQ;AAAW,oBAAO,GAAA,UAAA,KAAI,IAAI,OAAO,GAAG,OAAO,GAAG;AAC1D,cAAI,KAAK,IAAI;AACb;QACF;AAEA,WAAG,QAAQ;AACX,cAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,YAAI,QAAQ,UAAa,QAAQ,GAAG;AAClC,wBAAc,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,IAAI,MAAK,CAAE,CAAC;QAC7D,WAAW,QAAQ,GAAG;AACpB,cAAI,IAAI,OAAO,IAAI;AACnB,cAAI,QAAQ;AAAW,gBAAI,IAAG,GAAA,UAAA,KAAI,IAAI,eAAe,sBAAsB;QAC7E,OAAO;AACL,cAAI,IAAI,OAAO,KAAK;AACpB,iCAAsB;QACxB;AACA,YAAI,OAAO,OAAO,MAAM,IAAI,MAAK,CAAE;AAEnC,iBAAS,yBAAsB;AAC7B,gBAAM,WAAW,IAAI,KAAK,QAAQ;AAClC,gBAAM,QAAQ,IAAI,IAAI,SAAS,CAAC;AAChC,wBAAc,UAAU,MAAM,IAAI,GAAG,UAAU,MAAM,YAAY,KAAK,CAAC,CAAC;QAC1E;AAEA,iBAAS,cAAc,QAAc,OAAiB;AACpD,cAAI,SAAS,KAAK,GAAG,KAAK,CAAC,MAAK;AAC9B,gBAAI,UACF;cACE,SAAS;cACT,UAAU;cACV,cAAc,OAAA,KAAK;cACnB,eAAe;eAEjB,MAAM;AAER,kBAAK;UACP,CAAC;QACH;AAEA,iBAAS,YAAY,OAAW;AAC9B,cAAI,MAAK,GAAA,UAAA,KAAI,KAAK,IAAI;AACtB,cAAI,QAAQ,QAAW;AACrB,gBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,OAAO,GAAG,IAAI,MAAM,IAAI,OAAO,OAAO,IAAI,EAAE,MAAK,CAAE;UACrE,OAAO;AACL,gBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,MAAM,GAAG,IAAI,MAAM,IAAI,OAAO,OAAO,KAAK,EAAE,MAAK,CAAE;AACnE,gBAAI,QAAQ;AAAG,kBAAI,OAAO,OAAO,IAAI;;AAChC,kBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,OAAO,GAAG,IAAI,MAAM,IAAI,OAAO,OAAO,IAAI,CAAC;UAClE;QACF;MACF;;AAGF,YAAA,UAAe;;;;;;;;;;ACpGf,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AAmBa,YAAA,QAAgC;MAC3C,SAAS,CAAC,EAAC,QAAQ,EAAC,UAAU,WAAW,KAAI,EAAC,MAAK;AACjD,cAAM,eAAe,cAAc,IAAI,aAAa;AACpD,gBAAO,GAAA,UAAA,iBAAgB,YAAY,IAAI,IAAI,kBAAkB,QAAQ;MACvE;MACA,QAAQ,CAAC,EAAC,QAAQ,EAAC,UAAU,WAAW,MAAM,gBAAe,EAAC,OAC5D,GAAA,UAAA,gBAAe,QAAQ;uBACJ,eAAe;iBACrB,SAAS;YACd,IAAI;;;AAGhB,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,OAAA,QAAA;MACA,KAAK,KAAe;AAClB,cAAM,CAAC,UAAU,OAAO,IAAI,kBAAkB,GAAG;AACjD,6BAAqB,KAAK,QAAQ;AAClC,2BAAmB,KAAK,OAAO;MACjC;;AAGF,aAAS,kBAAkB,EAAC,OAAM,GAAa;AAC7C,YAAM,eAAqC,CAAA;AAC3C,YAAM,aAAiC,CAAA;AACvC,iBAAW,OAAO,QAAQ;AACxB,YAAI,QAAQ;AAAa;AACzB,cAAM,OAAO,MAAM,QAAQ,OAAO,GAAG,CAAC,IAAI,eAAe;AACzD,aAAK,GAAG,IAAI,OAAO,GAAG;MACxB;AACA,aAAO,CAAC,cAAc,UAAU;IAClC;AAEA,aAAgB,qBACd,KACA,eAA2C,IAAI,QAAM;AAErD,YAAM,EAAC,KAAK,MAAM,GAAE,IAAI;AACxB,UAAI,OAAO,KAAK,YAAY,EAAE,WAAW;AAAG;AAC5C,YAAM,UAAU,IAAI,IAAI,SAAS;AACjC,iBAAW,QAAQ,cAAc;AAC/B,cAAM,OAAO,aAAa,IAAI;AAC9B,YAAI,KAAK,WAAW;AAAG;AACvB,cAAM,eAAc,GAAA,OAAA,gBAAe,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa;AACzE,YAAI,UAAU;UACZ,UAAU;UACV,WAAW,KAAK;UAChB,MAAM,KAAK,KAAK,IAAI;SACrB;AACD,YAAI,GAAG,WAAW;AAChB,cAAI,GAAG,aAAa,MAAK;AACvB,uBAAW,WAAW,MAAM;AAC1B,eAAA,GAAA,OAAA,wBAAuB,KAAK,OAAO;YACrC;UACF,CAAC;QACH,OAAO;AACL,cAAI,IAAG,GAAA,UAAA,KAAI,WAAW,SAAQ,GAAA,OAAA,kBAAiB,KAAK,MAAM,OAAO,CAAC,GAAG;AACrE,WAAA,GAAA,OAAA,mBAAkB,KAAK,OAAO;AAC9B,cAAI,KAAI;QACV;MACF;IACF;AA5BA,YAAA,uBAAA;AA8BA,aAAgB,mBAAmB,KAAiB,aAAwB,IAAI,QAAM;AACpF,YAAM,EAAC,KAAK,MAAM,SAAS,GAAE,IAAI;AACjC,YAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,iBAAW,QAAQ,YAAY;AAC7B,aAAI,GAAA,OAAA,mBAAkB,IAAI,WAAW,IAAI,CAAc;AAAG;AAC1D,YAAI;WACF,GAAA,OAAA,gBAAe,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa;UACrD,MAAK;AACH,kBAAM,SAAS,IAAI,UAAU,EAAC,SAAS,YAAY,KAAI,GAAG,KAAK;AAC/D,gBAAI,oBAAoB,QAAQ,KAAK;UACvC;UACA,MAAM,IAAI,IAAI,OAAO,IAAI;;;AAE3B,YAAI,GAAG,KAAK;MACd;IACF;AAfA,YAAA,qBAAA;AAiBA,YAAA,UAAe;;;;;;;;;ACxGf,QAAA,YAAA;AACA,QAAA,SAAA;AAIA,QAAM,QAAgC;MACpC,SAAS;MACT,QAAQ,CAAC,EAAC,OAAM,OAAM,GAAA,UAAA,oBAAmB,OAAO,YAAY;;AAG9D,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY,CAAC,UAAU,SAAS;MAChC;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,MAAM,GAAE,IAAI;AAChC,aAAI,GAAA,OAAA,mBAAkB,IAAI,MAAM;AAAG;AACnC,cAAM,QAAQ,IAAI,KAAK,OAAO;AAE9B,YAAI,MAAM,OAAO,MAAM,CAAC,QAAO;AAC7B,cAAI,UAAU,EAAC,cAAc,IAAG,CAAC;AACjC,cAAI,UACF;YACE,SAAS;YACT,MAAM;YACN,WAAW,CAAC,QAAQ;YACpB,cAAc;YACd,eAAe;aAEjB,KAAK;AAEP,cAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAK;AACtB,gBAAI,MAAM,IAAI;AACd,gBAAI,CAAC,GAAG;AAAW,kBAAI,MAAK;UAC9B,CAAC;QACH,CAAC;AAED,YAAI,GAAG,KAAK;MACd;;AAGF,YAAA,UAAe;;;;;;;;;AC1Cf,QAAA,SAAA;AACA,QAAA,YAAA;AACA,QAAA,UAAA;AAEA,QAAA,SAAA;AAQA,QAAM,QAAgC;MACpC,SAAS;MACT,QAAQ,CAAC,EAAC,OAAM,OAAM,GAAA,UAAA,0BAAyB,OAAO,kBAAkB;;AAG1E,QAAM,MAAsD;MAC1D,SAAS;MACT,MAAM,CAAC,QAAQ;MACf,YAAY,CAAC,WAAW,QAAQ;MAChC,gBAAgB;MAChB,aAAa;MACb;MACA,KAAK,KAAG;AACN,cAAM,EAAC,KAAK,QAAQ,cAAc,MAAM,WAAW,GAAE,IAAI;AAEzD,YAAI,CAAC;AAAW,gBAAM,IAAI,MAAM,0BAA0B;AAC1D,cAAM,EAAC,WAAW,KAAI,IAAI;AAC1B,WAAG,QAAQ;AACX,YAAI,KAAK,qBAAqB,UAAS,GAAA,OAAA,mBAAkB,IAAI,MAAM;AAAG;AACtE,cAAM,SAAQ,GAAA,OAAA,qBAAoB,aAAa,UAAU;AACzD,cAAM,YAAW,GAAA,OAAA,qBAAoB,aAAa,iBAAiB;AACnE,kCAAyB;AACzB,YAAI,IAAG,GAAA,UAAA,KAAI,SAAS,QAAQ,QAAA,QAAE,MAAM,EAAE;AAEtC,iBAAS,4BAAyB;AAChC,cAAI,MAAM,OAAO,MAAM,CAAC,QAAa;AACnC,gBAAI,CAAC,MAAM,UAAU,CAAC,SAAS;AAAQ,qCAAuB,GAAG;;AAC5D,kBAAI,GAAG,aAAa,GAAG,GAAG,MAAM,uBAAuB,GAAG,CAAC;UAClE,CAAC;QACH;AAEA,iBAAS,aAAa,KAAS;AAC7B,cAAI;AACJ,cAAI,MAAM,SAAS,GAAG;AAEpB,kBAAM,eAAc,GAAA,OAAA,gBAAe,IAAI,aAAa,YAAY,YAAY;AAC5E,2BAAc,GAAA,OAAA,eAAc,KAAK,aAAqB,GAAG;UAC3D,WAAW,MAAM,QAAQ;AACvB,2BAAc,GAAA,UAAA,IAAG,GAAG,MAAM,IAAI,CAAC,OAAM,GAAA,UAAA,KAAI,GAAG,QAAQ,CAAC,EAAE,CAAC;UAC1D,OAAO;AACL,0BAAc,UAAA;UAChB;AACA,cAAI,SAAS,QAAQ;AACnB,2BAAc,GAAA,UAAA,IAAG,aAAa,GAAG,SAAS,IAAI,CAAC,OAAM,GAAA,UAAA,MAAI,GAAA,OAAA,YAAW,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;UAC7F;AACA,kBAAO,GAAA,UAAA,KAAI,WAAW;QACxB;AAEA,iBAAS,iBAAiB,KAAS;AACjC,cAAI,MAAK,GAAA,UAAA,YAAW,IAAI,IAAI,GAAG,GAAG;QACpC;AAEA,iBAAS,uBAAuB,KAAS;AACvC,cAAI,KAAK,qBAAqB,SAAU,KAAK,oBAAoB,WAAW,OAAQ;AAClF,6BAAiB,GAAG;AACpB;UACF;AAEA,cAAI,WAAW,OAAO;AACpB,gBAAI,UAAU,EAAC,oBAAoB,IAAG,CAAC;AACvC,gBAAI,MAAK;AACT,gBAAI,CAAC;AAAW,kBAAI,MAAK;AACzB;UACF;AAEA,cAAI,OAAO,UAAU,YAAY,EAAC,GAAA,OAAA,mBAAkB,IAAI,MAAM,GAAG;AAC/D,kBAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,gBAAI,KAAK,qBAAqB,WAAW;AACvC,oCAAsB,KAAK,OAAO,KAAK;AACvC,kBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAK;AACtB,oBAAI,MAAK;AACT,iCAAiB,GAAG;cACtB,CAAC;YACH,OAAO;AACL,oCAAsB,KAAK,KAAK;AAChC,kBAAI,CAAC;AAAW,oBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAM,IAAI,MAAK,CAAE;YACtD;UACF;QACF;AAEA,iBAAS,sBAAsB,KAAW,OAAa,QAAc;AACnE,gBAAM,YAA2B;YAC/B,SAAS;YACT,UAAU;YACV,cAAc,OAAA,KAAK;;AAErB,cAAI,WAAW,OAAO;AACpB,mBAAO,OAAO,WAAW;cACvB,eAAe;cACf,cAAc;cACd,WAAW;aACZ;UACH;AACA,cAAI,UAAU,WAAW,KAAK;QAChC;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACpHf,QAAA,aAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AACA,QAAA,yBAAA;AAEA,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,cAAc,MAAM,GAAE,IAAI;AAC9C,YAAI,GAAG,KAAK,qBAAqB,SAAS,aAAa,yBAAyB,QAAW;AACzF,iCAAA,QAAM,KAAK,IAAI,WAAA,WAAW,IAAI,uBAAA,SAAO,sBAAsB,CAAC;QAC9D;AACA,cAAM,YAAW,GAAA,OAAA,qBAAoB,MAAM;AAC3C,mBAAW,QAAQ,UAAU;AAC3B,aAAG,kBAAkB,IAAI,IAAI;QAC/B;AACA,YAAI,GAAG,KAAK,eAAe,SAAS,UAAU,GAAG,UAAU,MAAM;AAC/D,aAAG,QAAQ,OAAA,eAAe,MAAM,MAAK,GAAA,OAAA,QAAO,QAAQ,GAAG,GAAG,KAAK;QACjE;AACA,cAAM,aAAa,SAAS,OAAO,CAAC,MAAM,EAAC,GAAA,OAAA,mBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC;AAC3E,YAAI,WAAW,WAAW;AAAG;AAC7B,cAAM,QAAQ,IAAI,KAAK,OAAO;AAE9B,mBAAW,QAAQ,YAAY;AAC7B,cAAI,WAAW,IAAI,GAAG;AACpB,gCAAoB,IAAI;UAC1B,OAAO;AACL,gBAAI,IAAG,GAAA,OAAA,gBAAe,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa,CAAC;AAC7D,gCAAoB,IAAI;AACxB,gBAAI,CAAC,GAAG;AAAW,kBAAI,KAAI,EAAG,IAAI,OAAO,IAAI;AAC7C,gBAAI,MAAK;UACX;AACA,cAAI,GAAG,kBAAkB,IAAI,IAAI;AACjC,cAAI,GAAG,KAAK;QACd;AAEA,iBAAS,WAAW,MAAY;AAC9B,iBAAO,GAAG,KAAK,eAAe,CAAC,GAAG,iBAAiB,OAAO,IAAI,EAAE,YAAY;QAC9E;AAEA,iBAAS,oBAAoB,MAAY;AACvC,cAAI,UACF;YACE,SAAS;YACT,YAAY;YACZ,UAAU;aAEZ,KAAK;QAET;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACtDf,QAAA,SAAA;AACA,QAAA,YAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AAGA,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,MAAM,cAAc,GAAE,IAAI;AAC9C,cAAM,EAAC,KAAI,IAAI;AACf,cAAM,YAAW,GAAA,OAAA,qBAAoB,MAAM;AAC3C,cAAM,sBAAsB,SAAS,OAAO,CAAC,OAC3C,GAAA,OAAA,mBAAkB,IAAI,OAAO,CAAC,CAAc,CAAC;AAG/C,YACE,SAAS,WAAW,KACnB,oBAAoB,WAAW,SAAS,WACtC,CAAC,GAAG,KAAK,eAAe,GAAG,UAAU,OACxC;AACA;QACF;AAEA,cAAM,kBACJ,KAAK,gBAAgB,CAAC,KAAK,2BAA2B,aAAa;AACrE,cAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,YAAI,GAAG,UAAU,QAAQ,EAAE,GAAG,iBAAiB,UAAA,OAAO;AACpD,aAAG,SAAQ,GAAA,OAAA,sBAAqB,KAAK,GAAG,KAAK;QAC/C;AACA,cAAM,EAAC,MAAK,IAAI;AAChB,kCAAyB;AAEzB,iBAAS,4BAAyB;AAChC,qBAAW,OAAO,UAAU;AAC1B,gBAAI;AAAiB,sCAAwB,GAAG;AAChD,gBAAI,GAAG,WAAW;AAChB,iCAAmB,GAAG;YACxB,OAAO;AACL,kBAAI,IAAI,OAAO,IAAI;AACnB,iCAAmB,GAAG;AACtB,kBAAI,GAAG,KAAK;YACd;UACF;QACF;AAEA,iBAAS,wBAAwB,KAAW;AAC1C,qBAAW,QAAQ,iBAAiB;AAClC,gBAAI,IAAI,OAAO,GAAG,EAAE,KAAK,IAAI,GAAG;AAC9B,eAAA,GAAA,OAAA,iBACE,IACA,YAAY,IAAI,oBAAoB,GAAG,gCAAgC;YAE3E;UACF;QACF;AAEA,iBAAS,mBAAmB,KAAW;AACrC,cAAI,MAAM,OAAO,MAAM,CAAC,QAAO;AAC7B,gBAAI,IAAG,GAAA,UAAA,MAAI,GAAA,OAAA,YAAW,KAAK,GAAG,CAAC,SAAS,GAAG,KAAK,MAAK;AACnD,oBAAM,cAAc,oBAAoB,SAAS,GAAG;AACpD,kBAAI,CAAC,aAAa;AAChB,oBAAI,UACF;kBACE,SAAS;kBACT,YAAY;kBACZ,UAAU;kBACV,cAAc,OAAA,KAAK;mBAErB,KAAK;cAET;AAEA,kBAAI,GAAG,KAAK,eAAe,UAAU,MAAM;AACzC,oBAAI,QAAO,GAAA,UAAA,KAAI,KAAK,IAAI,GAAG,KAAK,IAAI;cACtC,WAAW,CAAC,eAAe,CAAC,GAAG,WAAW;AAGxC,oBAAI,IAAG,GAAA,UAAA,KAAI,KAAK,GAAG,MAAM,IAAI,MAAK,CAAE;cACtC;YACF,CAAC;UACH,CAAC;QACH;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACxFf,QAAA,SAAA;AAIA,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY,CAAC,UAAU,SAAS;MAChC,aAAa;MACb,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,GAAE,IAAI;AAC1B,aAAI,GAAA,OAAA,mBAAkB,IAAI,MAAM,GAAG;AACjC,cAAI,KAAI;AACR;QACF;AAEA,cAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,YAAI,UACF;UACE,SAAS;UACT,eAAe;UACf,cAAc;UACd,WAAW;WAEb,KAAK;AAGP,YAAI,WACF,OACA,MAAM,IAAI,MAAK,GACf,MAAM,IAAI,MAAK,CAAE;MAErB;MACA,OAAO,EAAC,SAAS,oBAAmB;;AAGtC,YAAA,UAAe;;;;;;;;;ACpCf,QAAA,SAAA;AAIA,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY;MACZ,aAAa;MACb,MAAM,OAAA;MACN,OAAO,EAAC,SAAS,+BAA8B;;AAGjD,YAAA,UAAe;;;;;;;;;ACNf,QAAA,YAAA;AACA,QAAA,SAAA;AASA,QAAM,QAAgC;MACpC,SAAS;MACT,QAAQ,CAAC,EAAC,OAAM,OAAM,GAAA,UAAA,sBAAqB,OAAO,OAAO;;AAG3D,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY;MACZ,aAAa;MACb;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,cAAc,GAAE,IAAI;AAExC,YAAI,CAAC,MAAM,QAAQ,MAAM;AAAG,gBAAM,IAAI,MAAM,0BAA0B;AACtE,YAAI,GAAG,KAAK,iBAAiB,aAAa;AAAe;AACzD,cAAM,SAAsB;AAC5B,cAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AACpC,cAAM,UAAU,IAAI,IAAI,WAAW,IAAI;AACvC,cAAM,WAAW,IAAI,KAAK,QAAQ;AAClC,YAAI,UAAU,EAAC,QAAO,CAAC;AAGvB,YAAI,MAAM,aAAa;AAEvB,YAAI,OACF,OACA,MAAM,IAAI,MAAK,GACf,MAAM,IAAI,MAAM,IAAI,CAAC;AAGvB,iBAAS,gBAAa;AACpB,iBAAO,QAAQ,CAAC,KAAgB,MAAa;AAC3C,gBAAI;AACJ,iBAAI,GAAA,OAAA,mBAAkB,IAAI,GAAG,GAAG;AAC9B,kBAAI,IAAI,UAAU,IAAI;YACxB,OAAO;AACL,uBAAS,IAAI,UACX;gBACE,SAAS;gBACT,YAAY;gBACZ,eAAe;iBAEjB,QAAQ;YAEZ;AAEA,gBAAI,IAAI,GAAG;AACT,kBACG,IAAG,GAAA,UAAA,KAAI,QAAQ,OAAO,KAAK,EAAE,EAC7B,OAAO,OAAO,KAAK,EACnB,OAAO,UAAS,GAAA,UAAA,MAAK,OAAO,KAAK,CAAC,GAAG,EACrC,KAAI;YACT;AAEA,gBAAI,GAAG,UAAU,MAAK;AACpB,kBAAI,OAAO,OAAO,IAAI;AACtB,kBAAI,OAAO,SAAS,CAAC;AACrB,kBAAI;AAAQ,oBAAI,eAAe,QAAQ,UAAA,IAAI;YAC7C,CAAC;UACH,CAAC;QACH;MACF;;AAGF,YAAA,UAAe;;;;;;;;;AC/Ef,QAAA,SAAA;AAEA,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY;MACZ,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,QAAQ,GAAE,IAAI;AAE1B,YAAI,CAAC,MAAM,QAAQ,MAAM;AAAG,gBAAM,IAAI,MAAM,0BAA0B;AACtE,cAAM,QAAQ,IAAI,KAAK,OAAO;AAC9B,eAAO,QAAQ,CAAC,KAAgB,MAAa;AAC3C,eAAI,GAAA,OAAA,mBAAkB,IAAI,GAAG;AAAG;AAChC,gBAAM,SAAS,IAAI,UAAU,EAAC,SAAS,SAAS,YAAY,EAAC,GAAG,KAAK;AACrE,cAAI,GAAG,KAAK;AACZ,cAAI,eAAe,MAAM;QAC3B,CAAC;MACH;;AAGF,YAAA,UAAe;;;;;;;;;ACbf,QAAA,YAAA;AACA,QAAA,SAAA;AAIA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,OAAM,OAAM,GAAA,UAAA,mBAAkB,OAAO,QAAQ;MACxD,QAAQ,CAAC,EAAC,OAAM,OAAM,GAAA,UAAA,sBAAqB,OAAO,QAAQ;;AAG5D,QAAM,MAA6B;MACjC,SAAS;MACT,YAAY,CAAC,UAAU,SAAS;MAChC,aAAa;MACb;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,cAAc,GAAE,IAAI;AAChC,YAAI,aAAa,SAAS,UAAa,aAAa,SAAS,QAAW;AACtE,WAAA,GAAA,OAAA,iBAAgB,IAAI,2CAA2C;QACjE;AACA,cAAM,UAAU,UAAU,IAAI,MAAM;AACpC,cAAM,UAAU,UAAU,IAAI,MAAM;AACpC,YAAI,CAAC,WAAW,CAAC;AAAS;AAE1B,cAAM,QAAQ,IAAI,IAAI,SAAS,IAAI;AACnC,cAAM,WAAW,IAAI,KAAK,QAAQ;AAClC,mBAAU;AACV,YAAI,MAAK;AAET,YAAI,WAAW,SAAS;AACtB,gBAAM,WAAW,IAAI,IAAI,UAAU;AACnC,cAAI,UAAU,EAAC,SAAQ,CAAC;AACxB,cAAI,GAAG,UAAU,eAAe,QAAQ,QAAQ,GAAG,eAAe,QAAQ,QAAQ,CAAC;QACrF,WAAW,SAAS;AAClB,cAAI,GAAG,UAAU,eAAe,MAAM,CAAC;QACzC,OAAO;AACL,cAAI,IAAG,GAAA,UAAA,KAAI,QAAQ,GAAG,eAAe,MAAM,CAAC;QAC9C;AAEA,YAAI,KAAK,OAAO,MAAM,IAAI,MAAM,IAAI,CAAC;AAErC,iBAAS,aAAU;AACjB,gBAAM,SAAS,IAAI,UACjB;YACE,SAAS;YACT,eAAe;YACf,cAAc;YACd,WAAW;aAEb,QAAQ;AAEV,cAAI,eAAe,MAAM;QAC3B;AAEA,iBAAS,eAAe,SAAiB,UAAe;AACtD,iBAAO,MAAK;AACV,kBAAM,SAAS,IAAI,UAAU,EAAC,QAAO,GAAG,QAAQ;AAChD,gBAAI,OAAO,OAAO,QAAQ;AAC1B,gBAAI,oBAAoB,QAAQ,KAAK;AACrC,gBAAI;AAAU,kBAAI,OAAO,WAAU,GAAA,UAAA,KAAI,OAAO,EAAE;;AAC3C,kBAAI,UAAU,EAAC,UAAU,QAAO,CAAC;UACxC;QACF;MACF;;AAGF,aAAS,UAAU,IAAkB,SAAe;AAClD,YAAM,SAAS,GAAG,OAAO,OAAO;AAChC,aAAO,WAAW,UAAa,EAAC,GAAA,OAAA,mBAAkB,IAAI,MAAM;IAC9D;AAEA,YAAA,UAAe;;;;;;;;;AC7Ef,QAAA,SAAA;AAEA,QAAM,MAA6B;MACjC,SAAS,CAAC,QAAQ,MAAM;MACxB,YAAY,CAAC,UAAU,SAAS;MAChC,KAAK,EAAC,SAAS,cAAc,GAAE,GAAa;AAC1C,YAAI,aAAa,OAAO;AAAW,WAAA,GAAA,OAAA,iBAAgB,IAAI,IAAI,OAAO,2BAA2B;MAC/F;;AAGF,YAAA,UAAe;;;;;;;;;ACXf,QAAA,oBAAA;AACA,QAAA,gBAAA;AACA,QAAA,UAAA;AACA,QAAA,cAAA;AACA,QAAA,aAAA;AACA,QAAA,iBAAA;AACA,QAAA,kBAAA;AACA,QAAA,yBAAA;AACA,QAAA,eAAA;AACA,QAAA,sBAAA;AACA,QAAA,QAAA;AACA,QAAA,UAAA;AACA,QAAA,UAAA;AACA,QAAA,UAAA;AACA,QAAA,OAAA;AACA,QAAA,aAAA;AAEA,aAAwB,cAAc,YAAY,OAAK;AACrD,YAAM,aAAa;;QAEjB,MAAA;QACA,QAAA;QACA,QAAA;QACA,QAAA;QACA,KAAA;QACA,WAAA;;QAEA,gBAAA;QACA,uBAAA;QACA,eAAA;QACA,aAAA;QACA,oBAAA;;AAGF,UAAI;AAAW,mBAAW,KAAK,cAAA,SAAa,YAAA,OAAS;;AAChD,mBAAW,KAAK,kBAAA,SAAiB,QAAA,OAAK;AAC3C,iBAAW,KAAK,WAAA,OAAQ;AACxB,aAAO;IACT;AArBA,YAAA,UAAA;;;;;;;;;ACTA,QAAA,YAAA;AAaA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,0BAAyB,UAAU;MAC9D,QAAQ,CAAC,EAAC,WAAU,OAAM,GAAA,UAAA,cAAa,UAAU;;AAGnD,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM,CAAC,UAAU,QAAQ;MACzB,YAAY;MACZ,OAAO;MACP;MACA,KAAK,KAAiB,UAAiB;AACrC,cAAM,EAAC,KAAK,MAAM,OAAO,QAAQ,YAAY,GAAE,IAAI;AACnD,cAAM,EAAC,MAAM,eAAe,WAAW,KAAI,IAAI;AAC/C,YAAI,CAAC,KAAK;AAAiB;AAE3B,YAAI;AAAO,8BAAmB;;AACzB,yBAAc;AAEnB,iBAAS,sBAAmB;AAC1B,gBAAM,OAAO,IAAI,WAAW,WAAW;YACrC,KAAK,KAAK;YACV,MAAM,KAAK,KAAK;WACjB;AACD,gBAAM,OAAO,IAAI,MAAM,SAAQ,GAAA,UAAA,KAAI,IAAI,IAAI,UAAU,GAAG;AACxD,gBAAM,QAAQ,IAAI,IAAI,OAAO;AAC7B,gBAAM,SAAS,IAAI,IAAI,QAAQ;AAE/B,cAAI,IACF,GAAA,UAAA,YAAW,IAAI,qBAAqB,IAAI,uBACxC,MAAM,IAAI,OAAO,QAAO,GAAA,UAAA,KAAI,IAAI,mBAAmB,EAAE,OAAO,SAAQ,GAAA,UAAA,KAAI,IAAI,WAAW,GACvF,MAAM,IAAI,OAAO,QAAO,GAAA,UAAA,YAAW,EAAE,OAAO,QAAQ,IAAI,CAAC;AAE3D,cAAI,WAAU,GAAA,UAAA,IAAG,WAAU,GAAI,WAAU,CAAE,CAAC;AAE5C,mBAAS,aAAU;AACjB,gBAAI,KAAK,iBAAiB;AAAO,qBAAO,UAAA;AACxC,oBAAO,GAAA,UAAA,KAAI,UAAU,QAAQ,MAAM;UACrC;AAEA,mBAAS,aAAU;AACjB,kBAAM,aAAa,UAAU,UACzB,GAAA,UAAA,MAAK,IAAI,kBAAkB,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,QAC9D,GAAA,UAAA,KAAI,MAAM,IAAI,IAAI;AACtB,kBAAM,aAAY,GAAA,UAAA,aAAY,MAAM,oBAAoB,UAAU,MAAM,MAAM,SAAS,IAAI;AAC3F,oBAAO,GAAA,UAAA,KAAI,MAAM,OAAO,MAAM,gBAAgB,KAAK,QAAQ,QAAQ,QAAQ,SAAS;UACtF;QACF;AAEA,iBAAS,iBAAc;AACrB,gBAAM,YAAqC,KAAK,QAAQ,MAAM;AAC9D,cAAI,CAAC,WAAW;AACd,0BAAa;AACb;UACF;AACA,cAAI,cAAc;AAAM;AACxB,gBAAM,CAAC,SAAS,QAAQ,MAAM,IAAI,UAAU,SAAS;AACrD,cAAI,YAAY;AAAU,gBAAI,KAAK,eAAc,CAAE;AAEnD,mBAAS,gBAAa;AACpB,gBAAI,KAAK,iBAAiB,OAAO;AAC/B,mBAAK,OAAO,KAAK,WAAU,CAAE;AAC7B;YACF;AACA,kBAAM,IAAI,MAAM,WAAU,CAAE;AAE5B,qBAAS,aAAU;AACjB,qBAAO,mBAAmB,MAAgB,gCAAgC,aAAa;YACzF;UACF;AAEA,mBAAS,UAAU,QAAmB;AACpC,kBAAM,OACJ,kBAAkB,UACd,GAAA,UAAA,YAAW,MAAM,IACjB,KAAK,KAAK,WACV,GAAA,UAAA,KAAI,KAAK,KAAK,OAAO,IAAG,GAAA,UAAA,aAAY,MAAM,CAAC,KAC3C;AACN,kBAAM,MAAM,IAAI,WAAW,WAAW,EAAC,KAAK,QAAQ,KAAK,QAAQ,KAAI,CAAC;AACtE,gBAAI,OAAO,UAAU,YAAY,EAAE,kBAAkB,SAAS;AAC5D,qBAAO,CAAC,OAAO,QAAQ,UAAU,OAAO,WAAU,GAAA,UAAA,KAAI,GAAG,WAAW;YACtE;AAEA,mBAAO,CAAC,UAAU,QAAQ,GAAG;UAC/B;AAEA,mBAAS,iBAAc;AACrB,gBAAI,OAAO,aAAa,YAAY,EAAE,qBAAqB,WAAW,UAAU,OAAO;AACrF,kBAAI,CAAC,UAAU;AAAQ,sBAAM,IAAI,MAAM,6BAA6B;AACpE,sBAAO,GAAA,UAAA,WAAU,MAAM,IAAI,IAAI;YACjC;AACA,mBAAO,OAAO,UAAU,cAAa,GAAA,UAAA,KAAI,MAAM,IAAI,IAAI,OAAM,GAAA,UAAA,KAAI,MAAM,SAAS,IAAI;UACtF;QACF;MACF;;AAGF,YAAA,UAAe;;;;;;;;;ACtHf,QAAA,WAAA;AAEA,QAAM,SAAqB,CAAC,SAAA,OAAa;AAEzC,YAAA,UAAe;;;;;;;;;;ACHF,YAAA,qBAAiC;MAC5C;MACA;MACA;MACA;MACA;MACA;MACA;;AAGW,YAAA,oBAAgC;MAC3C;MACA;MACA;;;;;;;;;;ACdF,QAAA,SAAA;AACA,QAAA,eAAA;AACA,QAAA,eAAA;AACA,QAAA,WAAA;AACA,QAAA,aAAA;AAEA,QAAM,qBAAmC;MACvC,OAAA;MACA,aAAA;OACA,GAAA,aAAA,SAAuB;MACvB,SAAA;MACA,WAAA;MACA,WAAA;;AAGF,YAAA,UAAe;;;;;;;;;;ACdf,QAAY;AAAZ,KAAA,SAAYE,aAAU;AACpB,MAAAA,YAAA,KAAA,IAAA;AACA,MAAAA,YAAA,SAAA,IAAA;IACF,GAHY,eAAU,QAAA,aAAV,aAAU,CAAA,EAAA;;;;;;;;;ACAtB,QAAA,YAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA,cAAA;AACA,QAAA,SAAA;AAIA,QAAM,QAAgC;MACpC,SAAS,CAAC,EAAC,QAAQ,EAAC,YAAY,QAAO,EAAC,MACtC,eAAe,QAAA,WAAW,MACtB,QAAQ,OAAO,qBACf,iBAAiB,OAAO;MAC9B,QAAQ,CAAC,EAAC,QAAQ,EAAC,YAAY,KAAK,QAAO,EAAC,OAC1C,GAAA,UAAA,aAAY,UAAU,UAAU,OAAO,eAAe,GAAG;;AAG7D,QAAM,MAA6B;MACjC,SAAS;MACT,MAAM;MACN,YAAY;MACZ;MACA,KAAK,KAAe;AAClB,cAAM,EAAC,KAAK,MAAM,QAAQ,cAAc,GAAE,IAAI;AAC9C,cAAM,EAAC,MAAK,IAAI;AAChB,YAAI,CAAC,GAAG,KAAK,eAAe;AAC1B,gBAAM,IAAI,MAAM,8CAA8C;QAChE;AACA,cAAM,UAAU,OAAO;AACvB,YAAI,OAAO,WAAW;AAAU,gBAAM,IAAI,MAAM,sCAAsC;AACtF,YAAI,OAAO;AAAS,gBAAM,IAAI,MAAM,yCAAyC;AAC7E,YAAI,CAAC;AAAO,gBAAM,IAAI,MAAM,uCAAuC;AACnE,cAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AACpC,cAAM,MAAM,IAAI,MAAM,QAAO,GAAA,UAAA,KAAI,IAAI,IAAG,GAAA,UAAA,aAAY,OAAO,CAAC,EAAE;AAC9D,YAAI,IACF,GAAA,UAAA,YAAW,GAAG,gBACd,MAAM,gBAAe,GACrB,MAAM,IAAI,MAAM,OAAO,EAAC,YAAY,QAAA,WAAW,KAAK,KAAK,QAAO,CAAC,CAAC;AAEpE,YAAI,GAAG,KAAK;AAEZ,iBAAS,kBAAe;AACtB,gBAAM,UAAU,WAAU;AAC1B,cAAI,GAAG,KAAK;AACZ,qBAAW,YAAY,SAAS;AAC9B,gBAAI,QAAO,GAAA,UAAA,KAAI,GAAG,QAAQ,QAAQ,EAAE;AACpC,gBAAI,OAAO,OAAO,eAAe,QAAQ,QAAQ,CAAC,CAAC;UACrD;AACA,cAAI,KAAI;AACR,cAAI,MAAM,OAAO,EAAC,YAAY,QAAA,WAAW,SAAS,KAAK,QAAO,CAAC;AAC/D,cAAI,MAAK;QACX;AAEA,iBAAS,eAAe,YAAmB;AACzC,gBAAM,SAAS,IAAI,KAAK,OAAO;AAC/B,gBAAM,SAAS,IAAI,UAAU,EAAC,SAAS,SAAS,WAAU,GAAG,MAAM;AACnE,cAAI,eAAe,QAAQ,UAAA,IAAI;AAC/B,iBAAO;QACT;AAEA,iBAAS,aAAU;;AACjB,gBAAM,eAAyC,CAAA;AAC/C,gBAAM,cAAc,YAAY,YAAY;AAC5C,cAAI,cAAc;AAClB,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,gBAAI,MAAM,MAAM,CAAC;AACjB,iBAAI,QAAG,QAAH,QAAG,SAAA,SAAH,IAAK,SAAQ,EAAC,GAAA,OAAA,sBAAqB,KAAK,GAAG,KAAK,KAAK,GAAG;AAC1D,oBAAM,MAAM,IAAI;AAChB,oBAAM,UAAA,WAAW,KAAK,GAAG,MAAM,GAAG,UAAU,MAAM,GAAG,QAAQ,GAAG;AAChE,kBAAI,eAAe,UAAA;AAAW,sBAAM,IAAI;AACxC,kBAAI,QAAQ;AAAW,sBAAM,IAAI,YAAA,QAAgB,GAAG,KAAK,aAAa,GAAG,QAAQ,GAAG;YACtF;AACA,kBAAM,WAAU,KAAA,QAAG,QAAH,QAAG,SAAA,SAAH,IAAK,gBAAU,QAAA,OAAA,SAAA,SAAA,GAAG,OAAO;AACzC,gBAAI,OAAO,WAAW,UAAU;AAC9B,oBAAM,IAAI,MACR,iFAAiF,OAAO,GAAG;YAE/F;AACA,0BAAc,gBAAgB,eAAe,YAAY,GAAG;AAC5D,wBAAY,SAAS,CAAC;UACxB;AACA,cAAI,CAAC;AAAa,kBAAM,IAAI,MAAM,mBAAmB,OAAO,oBAAoB;AAChF,iBAAO;AAEP,mBAAS,YAAY,EAAC,SAAQ,GAAkB;AAC9C,mBAAO,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAAS,OAAO;UAC7D;AAEA,mBAAS,YAAY,KAAsB,GAAS;AAClD,gBAAI,IAAI,OAAO;AACb,yBAAW,IAAI,OAAO,CAAC;YACzB,WAAW,IAAI,MAAM;AACnB,yBAAW,YAAY,IAAI,MAAM;AAC/B,2BAAW,UAAU,CAAC;cACxB;YACF,OAAO;AACL,oBAAM,IAAI,MAAM,8BAA8B,OAAO,+BAA+B;YACtF;UACF;AAEA,mBAAS,WAAW,UAAmB,GAAS;AAC9C,gBAAI,OAAO,YAAY,YAAY,YAAY,cAAc;AAC3D,oBAAM,IAAI,MAAM,mBAAmB,OAAO,iCAAiC;YAC7E;AACA,yBAAa,QAAQ,IAAI;UAC3B;QACF;MACF;;AAGF,YAAA,UAAe;;;;;AChHf;AAAA;AAAA;AAAA,MACE,SAAW;AAAA,MACX,KAAO;AAAA,MACP,OAAS;AAAA,MACT,aAAe;AAAA,QACb,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,OAAS,EAAC,MAAQ,IAAG;AAAA,QACvB;AAAA,QACA,oBAAsB;AAAA,UACpB,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA,4BAA8B;AAAA,UAC5B,OAAS,CAAC,EAAC,MAAQ,mCAAkC,GAAG,EAAC,SAAW,EAAC,CAAC;AAAA,QACxE;AAAA,QACA,aAAe;AAAA,UACb,MAAQ,CAAC,SAAS,WAAW,WAAW,QAAQ,UAAU,UAAU,QAAQ;AAAA,QAC9E;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,OAAS,EAAC,MAAQ,SAAQ;AAAA,UAC1B,aAAe;AAAA,UACf,SAAW,CAAC;AAAA,QACd;AAAA,MACF;AAAA,MACA,MAAQ,CAAC,UAAU,SAAS;AAAA,MAC5B,YAAc;AAAA,QACZ,KAAO;AAAA,UACL,MAAQ;AAAA,UACR,QAAU;AAAA,QACZ;AAAA,QACA,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,QAAU;AAAA,QACZ;AAAA,QACA,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,QAAU;AAAA,QACZ;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,QACV;AAAA,QACA,OAAS;AAAA,UACP,MAAQ;AAAA,QACV;AAAA,QACA,aAAe;AAAA,UACb,MAAQ;AAAA,QACV;AAAA,QACA,SAAW;AAAA,QACX,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA,UAAY;AAAA,UACV,MAAQ;AAAA,UACR,OAAS;AAAA,QACX;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,kBAAoB;AAAA,QACtB;AAAA,QACA,SAAW;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,QACV;AAAA,QACA,SAAW;AAAA,UACT,MAAQ;AAAA,QACV;AAAA,QACA,kBAAoB;AAAA,UAClB,MAAQ;AAAA,QACV;AAAA,QACA,WAAa,EAAC,MAAQ,mCAAkC;AAAA,QACxD,WAAa,EAAC,MAAQ,2CAA0C;AAAA,QAChE,SAAW;AAAA,UACT,MAAQ;AAAA,UACR,QAAU;AAAA,QACZ;AAAA,QACA,iBAAmB,EAAC,MAAQ,IAAG;AAAA,QAC/B,OAAS;AAAA,UACP,OAAS,CAAC,EAAC,MAAQ,IAAG,GAAG,EAAC,MAAQ,4BAA2B,CAAC;AAAA,UAC9D,SAAW;AAAA,QACb;AAAA,QACA,UAAY,EAAC,MAAQ,mCAAkC;AAAA,QACvD,UAAY,EAAC,MAAQ,2CAA0C;AAAA,QAC/D,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,SAAW;AAAA,QACb;AAAA,QACA,UAAY,EAAC,MAAQ,IAAG;AAAA,QACxB,eAAiB,EAAC,MAAQ,mCAAkC;AAAA,QAC5D,eAAiB,EAAC,MAAQ,2CAA0C;AAAA,QACpE,UAAY,EAAC,MAAQ,4BAA2B;AAAA,QAChD,sBAAwB,EAAC,MAAQ,IAAG;AAAA,QACpC,aAAe;AAAA,UACb,MAAQ;AAAA,UACR,sBAAwB,EAAC,MAAQ,IAAG;AAAA,UACpC,SAAW,CAAC;AAAA,QACd;AAAA,QACA,YAAc;AAAA,UACZ,MAAQ;AAAA,UACR,sBAAwB,EAAC,MAAQ,IAAG;AAAA,UACpC,SAAW,CAAC;AAAA,QACd;AAAA,QACA,mBAAqB;AAAA,UACnB,MAAQ;AAAA,UACR,sBAAwB,EAAC,MAAQ,IAAG;AAAA,UACpC,eAAiB,EAAC,QAAU,QAAO;AAAA,UACnC,SAAW,CAAC;AAAA,QACd;AAAA,QACA,cAAgB;AAAA,UACd,MAAQ;AAAA,UACR,sBAAwB;AAAA,YACtB,OAAS,CAAC,EAAC,MAAQ,IAAG,GAAG,EAAC,MAAQ,4BAA2B,CAAC;AAAA,UAChE;AAAA,QACF;AAAA,QACA,eAAiB,EAAC,MAAQ,IAAG;AAAA,QAC7B,OAAS;AAAA,QACT,MAAQ;AAAA,UACN,MAAQ;AAAA,UACR,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,aAAe;AAAA,QACjB;AAAA,QACA,MAAQ;AAAA,UACN,OAAS;AAAA,YACP,EAAC,MAAQ,4BAA2B;AAAA,YACpC;AAAA,cACE,MAAQ;AAAA,cACR,OAAS,EAAC,MAAQ,4BAA2B;AAAA,cAC7C,UAAY;AAAA,cACZ,aAAe;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAAA,QACA,QAAU,EAAC,MAAQ,SAAQ;AAAA,QAC3B,kBAAoB,EAAC,MAAQ,SAAQ;AAAA,QACrC,iBAAmB,EAAC,MAAQ,SAAQ;AAAA,QACpC,IAAM,EAAC,MAAQ,IAAG;AAAA,QAClB,MAAQ,EAAC,MAAQ,IAAG;AAAA,QACpB,MAAQ,EAAC,MAAQ,IAAG;AAAA,QACpB,OAAS,EAAC,MAAQ,4BAA2B;AAAA,QAC7C,OAAS,EAAC,MAAQ,4BAA2B;AAAA,QAC7C,OAAS,EAAC,MAAQ,4BAA2B;AAAA,QAC7C,KAAO,EAAC,MAAQ,IAAG;AAAA,MACrB;AAAA,MACA,SAAW;AAAA,IACb;AAAA;AAAA;;;;;;;;ACrJA,QAAA,SAAA;AACA,QAAA,WAAA;AACA,QAAA,kBAAA;AACA,QAAA,mBAAA;AAEA,QAAM,oBAAoB,CAAC,aAAa;AAExC,QAAM,iBAAiB;AAEvB,QAAaC,OAAb,cAAyB,OAAA,QAAO;MAC9B,mBAAgB;AACd,cAAM,iBAAgB;AACtB,iBAAA,QAAmB,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;AACvD,YAAI,KAAK,KAAK;AAAe,eAAK,WAAW,gBAAA,OAAa;MAC5D;MAEA,wBAAqB;AACnB,cAAM,sBAAqB;AAC3B,YAAI,CAAC,KAAK,KAAK;AAAM;AACrB,cAAM,aAAa,KAAK,KAAK,QACzB,KAAK,gBAAgB,kBAAkB,iBAAiB,IACxD;AACJ,aAAK,cAAc,YAAY,gBAAgB,KAAK;AACpD,aAAK,KAAK,+BAA+B,IAAI;MAC/C;MAEA,cAAW;AACT,eAAQ,KAAK,KAAK,cAChB,MAAM,YAAW,MAAO,KAAK,UAAU,cAAc,IAAI,iBAAiB;MAC9E;;AApBF,YAAA,MAAAA;AAuBA,WAAO,UAAU,UAAUA;AAC3B,WAAO,QAAQ,MAAMA;AACrB,WAAO,eAAe,SAAS,cAAc,EAAC,OAAO,KAAI,CAAC;AAE1D,YAAA,UAAeA;AA0Bf,QAAA,aAAA;AAAQ,WAAA,eAAA,SAAA,cAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,WAAA;IAAU,EAAA,CAAA;AAIlB,QAAA,YAAA;AAAQ,WAAA,eAAA,SAAA,KAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAC,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,aAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAS,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,OAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAG,EAAA,CAAA;AAAE,WAAA,eAAA,SAAA,QAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAI,EAAA,CAAA;AAAQ,WAAA,eAAA,SAAA,WAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,UAAA;IAAO,EAAA,CAAA;AACnD,QAAA,qBAAA;AAAQ,WAAA,eAAA,SAAA,mBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,mBAAA;IAAO,EAAA,CAAA;AACf,QAAA,cAAA;AAAQ,WAAA,eAAA,SAAA,mBAAA,EAAA,YAAA,MAAA,KAAA,WAAA;AAAA,aAAA,YAAA;IAAO,EAAA,CAAA;;;;;ACnEb,cAAW;;;ACFb,OAAO;AAeA,IAAM,eAAe;AAGrB,IAAM,YAAY;AAmClB,IAAM,UAAN,MAAc;AAAA,EAGnB,YACE,eACU,WAAmB,WACnBC,SAAkB,cAC5B;AAFU;AACA,iBAAAA;AAEV,QAAI,eAAe;AACjB,WAAK,gBAAgB;AACrB,WAAK,WAAW,cAAc,YAAY,KAAK;AAAA,IACjD;AAAA,EACF;AACF;AAQO,IAAM,gBAAN,MAAM,uBAAsB,MAAM;AAAA,EACvC,YAAmB,OAAe,KAAc;AAC9C,UAAM,GAAG;AADQ;AAEjB,WAAO,eAAe,MAAM,eAAc,SAAS;AACnD,SAAK,OAAO;AAAA,EACd;AACF;;;AC5CO,IAAM,0BAA0B,SACrC,eACA;AACA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUL,cACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,gFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBACE,QACA,UACA,cACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,kFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,mFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,cACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,gFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,gBACE,QACA,UACA,cACA,OACA,QACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,kFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,UAAI,UAAU,QAAW;AACvB,+BAAuB,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA,MACtD;AAEA,UAAI,WAAW,QAAW;AACxB,+BAAuB,OAAO,UAAU,OAAO,MAAM,CAAC;AAAA,MACxD;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,mFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,mFACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,iBACE,QACA,UACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,kEACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAC/D,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBACE,QACA,UACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,4DACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAC/D,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,eACE,QACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,qCAAqC;AAAA,QACtD;AAAA,QACA,mBAAmB,OAAO,MAAM,CAAC;AAAA,MACnC;AACA,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aACE,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBACE,QACA,UACA,cACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,4EACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,eACE,QACA,UACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,gDAChB,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAC7D,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cACE,QACA,UACA,cACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,4EACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YACE,QACA,UACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,gDAChB,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAC7D,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,UAAU,YAAoB,UAAuB,CAAC,GAAc;AAElE,UAAI,eAAe,QAAQ,eAAe,QAAW;AACnD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,gCAAgC;AAAA,QACjD;AAAA,QACA,mBAAmB,OAAO,UAAU,CAAC;AAAA,MACvC;AACA,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB,UAAuB,CAAC,GAAc;AACpD,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YAAY,UAAuB,CAAC,GAAc;AAChD,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UAAU,UAAuB,CAAC,GAAc;AAC9C,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,gBACE,QACA,UACA,OACA,QACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,4DACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC;AAC/D,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,UAAI,UAAU,QAAW;AACvB,+BAAuB,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA,MACtD;AAEA,UAAI,WAAW,QAAW;AACxB,+BAAuB,OAAO,UAAU,OAAO,MAAM,CAAC;AAAA,MACxD;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cACE,QACA,OACA,QACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,qCAAqC;AAAA,QACtD;AAAA,QACA,mBAAmB,OAAO,MAAM,CAAC;AAAA,MACnC;AACA,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,UAAI,UAAU,QAAW;AACvB,+BAAuB,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA,MACtD;AAEA,UAAI,WAAW,QAAW;AACxB,+BAAuB,OAAO,UAAU,OAAO,MAAM,CAAC;AAAA,MACxD;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBAAgB,UAAuB,CAAC,GAAc;AACpD,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MAAM,UAAuB,CAAC,GAAc;AAC1C,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,UAAuB,CAAC,GACb;AAEX,UAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ,aAAa,QAAW;AAC/C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,iBAAiB,QAAQ,iBAAiB,QAAW;AACvD,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,YAAY,QAAQ,YAAY,QAAW;AAC7C,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,UAAI,eACF,4EACG,QAAQ,YAAY,mBAAmB,OAAO,MAAM,CAAC,CAAC,EACtD,QAAQ,cAAc,mBAAmB,OAAO,QAAQ,CAAC,CAAC,EAC1D,QAAQ,mBAAmB,mBAAmB,OAAO,YAAY,CAAC,CAAC;AACxE,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,8BAAwB,IAAI,gBAAgB,kBAAkB;AAE9D,6BAAuB,UAAU;AAEjC,UAAI,YAAY,QAAW;AACzB,+BAAuB,OAAO,KAAK,UAAU,WAAW,CAAC,CAAC;AAAA,MAC5D;AAEA,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQ,UAAuB,CAAC,GAAc;AAC5C,UAAI,eAAe;AACnB,YAAM,yBAAyB,aAAa,QAAQ,GAAG;AACvD,YAAM,yBAAsC,OAAO;AAAA,QACjD,EAAE,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AACA,YAAM,0BAAmC,QAAQ,UAC7C,IAAI,QAAQ,QAAQ,OAAO,IAC3B,IAAI,QAAQ;AAChB,YAAM,yBAAyB,IAAI;AAAA,QACjC,2BAA2B,KACvB,aAAa,UAAU,yBAAyB,CAAC,IACjD;AAAA,MACN;AACA,UAAI,2BAA2B,IAAI;AACjC,uBAAe,aAAa,UAAU,GAAG,sBAAsB;AAAA,MACjE;AAEA,6BAAuB,UAAU;AAEjC,YAAM,+BAA+B,uBAAuB,SAAS;AACrE,UAAI,8BAA8B;AAChC,wBAAgB,MAAM;AAAA,MACxB;AACA,aAAO;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAMO,IAAM,WAAW,SAAU,eAA+B;AAC/D,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUL,cACE,QACA,UACA,cACA,SACA,SAI6C;AAC7C,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,cAAc,QAAQ,UAAU,cAAc,SAAS,OAAO;AAChE,aAAO,CAACC,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,mBAAO;AAAA,UACT;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBACE,QACA,UACA,cACA,SAC0D;AAC1D,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,gBAAgB,QAAQ,UAAU,cAAc,OAAO;AACzD,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,SAIgD;AAChD,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,cAAc,SAAS,OAAO;AACnE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,cACE,QACA,UACA,cACA,SACA,SACmE;AACnE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,cAAc,QAAQ,UAAU,cAAc,SAAS,OAAO;AAChE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,gBACE,QACA,UACA,cACA,OACA,QACA,SACA,SACqE;AACrE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,SAIgD;AAChD,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,cAAc,SAAS,OAAO;AACnE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,mBAAO;AAAA,UACT;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,SAIgD;AAChD,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,cAAc,SAAS,OAAO;AACnE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,iBACE,QACA,UACA,SAC0D;AAC1D,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,OAAO;AAC5C,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBACE,QACA,UACA,SACA,SACkE;AAClE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,SAAS,OAAO;AACrD,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,eACE,QACA,SACA,SAIuC;AACvC,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,eAAe,QAAQ,SAAS,OAAO;AACzC,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,aACE,SACA,SAIqC;AACrC,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,aAAa,SAAS,OAAO;AAC/B,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,iBACE,QACA,UACA,cACA,SAIyC;AACzC,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,cAAc,OAAO;AAC1D,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,eACE,QACA,UACA,SAIuC;AACvC,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,eAAe,QAAQ,UAAU,OAAO;AAC1C,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cACE,QACA,UACA,cACA,SACkE;AAClE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,cAAc,QAAQ,UAAU,cAAc,OAAO;AACvD,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YACE,QACA,UACA,SACgE;AAChE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,YAAY,QAAQ,UAAU,OAAO;AACvC,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,UACE,YACA,SACyE;AACzE,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,UAAU,YAAY,OAAO;AAC/B,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBACE,SAIwC;AACxC,YAAM,oBACJ,wBAAwB,aAAa,EAAE,gBAAgB,OAAO;AAChE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,YACE,SAC0D;AAC1D,YAAM,oBACJ,wBAAwB,aAAa,EAAE,YAAY,OAAO;AAC5D,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,UACE,SACyE;AACzE,YAAM,oBACJ,wBAAwB,aAAa,EAAE,UAAU,OAAO;AAC1D,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,gBACE,QACA,UACA,OACA,QACA,SAC8D;AAC9D,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,gBAAgB,QAAQ,UAAU,OAAO,QAAQ,OAAO;AAC1D,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cACE,QACA,OACA,QACA,SAC8D;AAC9D,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,cAAc,QAAQ,OAAO,QAAQ,OAAO;AAC9C,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,gBACE,SACyE;AACzE,YAAM,oBACJ,wBAAwB,aAAa,EAAE,gBAAgB,OAAO;AAChE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,MACE,SAC2D;AAC3D,YAAM,oBACJ,wBAAwB,aAAa,EAAE,MAAM,OAAO;AACtD,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,iBACE,QACA,UACA,cACA,SACA,SAIyC;AACzC,YAAM,oBAAoB;AAAA,QACxB;AAAA,MACF,EAAE,iBAAiB,QAAQ,UAAU,cAAc,SAAS,OAAO;AACnE,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,oBAAM;AAAA,YACR;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QACE,SAC0D;AAC1D,YAAM,oBACJ,wBAAwB,aAAa,EAAE,QAAQ,OAAO;AACxD,aAAO,CAACA,SAAkB,cAAc,WAAmB,cAAc;AACvE,eAAOA;AAAA,UACL,WAAW,kBAAkB;AAAA,UAC7B,kBAAkB;AAAA,QACpB,EAAE,KAAK,CAAC,aAAa;AACnB,gBAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AACvD,gBAAM,WAAW,cACb,YAAY,QAAQ,OAAO,EAAE,IAC7B;AAEJ,cAAI,SAAS,WAAW,KAAK;AAC3B,gBAAI,aAAa,oBAAoB;AACnC,qBAAO,SAAS,KAAK;AAAA,YACvB;AACA,kBAAM;AAAA,UACR;AACA,gBAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAoBO,IAAM,SAAN,cAAqB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3B,cACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,gBACL,QACA,UACA,cACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,iBACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,cACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,gBACL,QACA,UACA,cACA,OACA,QACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,iBACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,iBACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,iBACL,QACA,UACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,iBACL,QACA,UACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,eACL,QACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,aAAa,SAAkC,SAAuB;AAC3E,WAAO,SAAS,KAAK,aAAa,EAAE,aAAa,SAAS,OAAO;AAAA,MAC/D,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,iBACL,QACA,UACA,cACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,eACL,QACA,UACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,cACL,QACA,UACA,cACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,YAAY,QAAgB,UAAkB,SAAuB;AAC1E,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,UAAU,YAAoB,SAAuB;AAC1D,WAAO,SAAS,KAAK,aAAa,EAAE,UAAU,YAAY,OAAO;AAAA,MAC/D,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBAAgB,SAAuB;AAC5C,WAAO,SAAS,KAAK,aAAa,EAAE,gBAAgB,OAAO;AAAA,MACzD,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,YAAY,SAAuB;AACxC,WAAO,SAAS,KAAK,aAAa,EAAE,YAAY,OAAO;AAAA,MACrD,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,UAAU,SAAuB;AACtC,WAAO,SAAS,KAAK,aAAa,EAAE,UAAU,OAAO;AAAA,MACnD,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,gBACL,QACA,UACA,OACA,QACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,cACL,QACA,OACA,QACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBAAgB,SAAuB;AAC5C,WAAO,SAAS,KAAK,aAAa,EAAE,gBAAgB,OAAO;AAAA,MACzD,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,MAAM,SAAuB;AAClC,WAAO,SAAS,KAAK,aAAa,EAAE,MAAM,OAAO;AAAA,MAC/C,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,iBACL,QACA,UACA,cACA,SACA,SACA;AACA,WAAO,SAAS,KAAK,aAAa,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,QAAQ,SAAuB;AACpC,WAAO,SAAS,KAAK,aAAa,EAAE,QAAQ,OAAO;AAAA,MACjD,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AACF;;;AC5vGO,IAAU;AAAA,CAAV,CAAUC,SAAV;AAiGE,MAAU;AAAV,IAAUC,oCAAV;AASE,QAAU;AAAV,MAAUC,iBAAV;AACE,UAAK;AAAL,QAAKC,cAAL;AACL,QAAAA,UAAA,YAAS;AAAA,SADC,WAAAD,aAAA,aAAAA,aAAA;AAAA,OADG,cAAAD,gCAAA,gBAAAA,gCAAA;AAcV,QAAU;AAAV,MAAUG,gBAAV;AACE,UAAK;AAAL,QAAKD,cAAL;AACL,QAAAA,UAAA,WAAQ;AAAA,SADE,WAAAC,YAAA,aAAAA,YAAA;AAAA,OADG,aAAAH,gCAAA,eAAAA,gCAAA;AAAA,KAvBF,iCAAAD,KAAA,mCAAAA,KAAA;AAoIV,MAAK;AAAL,IAAKK,eAAL;AACL,IAAAA,WAAA,QAAK;AACL,IAAAA,WAAA,YAAS;AACT,IAAAA,WAAA,QAAK;AAAA,KAHK,YAAAL,KAAA,cAAAA,KAAA;AAML,MAAK;AAAL,IAAKM,aAAL;AACL,IAAAA,SAAA,eAAY;AACZ,IAAAA,SAAA,eAAY;AACZ,IAAAA,SAAA,gBAAa;AACb,IAAAA,SAAA,eAAY;AACZ,IAAAA,SAAA,UAAO;AAAA,KALG,UAAAN,KAAA,YAAAA,KAAA;AAAA,GA3OG;;;ACQV,IAAM,gBAAN,MAAoB;AAAA,EAoCzB,YAAY,QAAiC,CAAC,GAAG;AAC/C,SAAK,SAAS,MAAM;AACpB,SAAK,WAAW,MAAM;AACtB,SAAK,WAAW,MAAM;AACtB,SAAK,gBAAgB,MAAM;AAC3B,SAAK,WAAW,MAAM;AAAA,EACxB;AACF;;;AC9DO,IAAM,cAAN,cAA0B,MAAM;AAAA,EACrC,YAAY,MAAc,SAAiC,OAAiB;AAC1E,UAAM,OAAO;AAD4C;AAEzD,SAAK,OAAO;AAAA,EACd;AACF;AAKO,IAAM,wBAAN,cAAoC,MAAM;AAAA,EAE/C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAGO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAE3C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAGO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAE3C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAGO,IAAM,0BAAN,cAAsC,MAAM;AAAA,EAEjD,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAGO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAE9C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAE7C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,IAAM,mBAAN,cAA+B,MAAM;AAAA,EAE1C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,IAAM,yBAAN,cAAqC,MAAM;AAAA,EAEhD,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAE9C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAE3C,YAAY,SAAiC,OAAiB;AAC5D,UAAM,OAAO;AAD8B;AAD7C,gBAAO;AAAA,EAGP;AACF;AAEO,SAAS,kBAAkB,MAAc,SAAiB;AAC/D,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,IAAI,uBAAuB,OAAO;AAAA,IAC3C,KAAK;AACH,aAAO,IAAI,qBAAqB,OAAO;AAAA,IACzC;AACE,aAAO;AAAA,EACX;AACF;;;AC5EO,IAAM,aAAN,MAAiB;AAAA;AAAA;AAAA;AAAA,EAgBtB,YACE,MACA,IACA,QACA,mBACA,UACA;AACA,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,oBAAoB;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAM,IAAI,QAAyC;AACjD,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,KAAK,OAAO,IAAI;AAAA,MACpB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA;AAAA,MAEJ,MAAM;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAM,OAAO,QAA4C;AACvD,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,KAAK,OAAO,IAAI;AAAA,MACpB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA;AAAA,MAEJ,MAAM;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,QAAyB;AAC7B,UAAM,KAAK,OAAO,KAAK;AACvB,WAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,MAC5B,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBA,MAAM,IAAI;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAmB,CAAC,GAAyB;AAC3C,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,WAAW,MAAM,QAAQ,GAAG,IAAI;AAEtC,UAAM,OAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,MAClC,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAM,OAAO,QAA4C;AACvD,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,KAAK,OAAO,IAAI;AAAA,MACpB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL,MAAM,qBAAqB,QAAQ,KAAK,mBAAmB,IAAI;AAAA,MAC/D,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmCA,MAAM,MAAM;AAAA,IACV,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAoD;AAClD,UAAM,KAAK,OAAO,KAAK;AAEvB,QAAI,aAAyB,CAAC;AAG9B,QAAI,iBAAiB;AACnB,mBAAa,gBAAgB,eAAe;AAAA,IAC9C,WAES,YAAY;AACnB,mBAAa,MAAM,KAAK,kBAAkB,SAAS,QAAQ,UAAU,CAAC;AAAA,IACxE;AAEA,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,OAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,MAClC,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,QACE,kBAAkB;AAAA,QAClB,WAAW;AAAA,QACX;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,EACF,GAG8B;AAC5B,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,OAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,MAClC,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,QACE,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAEA,QAAI,MAAM;AACR,WAAK,OAAO;AAAA,IACd;AAEA,QAAI,UAAU;AACZ,WAAK,WAAW;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAgB,CAAC,GAA8B;AACrE,UAAM,KAAK,OAAO,KAAK;AACvB,WAAQ,MAAM,KAAK,OAAO,IAAI;AAAA,MAC5B,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,QACE;AAAA,MACF;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAkB,CAAC,GAAkB;AACnC,UAAM,KAAK,OAAO,KAAK;AAEvB,UAAM,WAAW,MAAM,QAAQ,GAAG,IAAI;AAEtC,UAAM,KAAK,OAAO,IAAI;AAAA,MACpB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,QACE,KAAK;AAAA,QACL;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AACF;;;AC/YO,SAAS,QAAW,KAAwB;AACjD,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,CAAC,GAAG;AAAA,EACb;AACF;AAGO,SAAS,gBACd,KACiB;AACjB,MAAI,IAAI,WAAW,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,MAAM,QAAQ,IAAI,CAAC,CAAC,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,MAAI,IAAI,CAAC,KAAK,OAAQ,IAAI,CAAC,EAAU,OAAO,QAAQ,MAAM,YAAY;AACpE,WAAQ,IAAsC,IAAI,QAAM,MAAM,KAAK,EAAE,CAAC;AAAA,EACxE;AAEA,SAAO,CAAC,GAAG;AACb;AAiBA,eAAsB,uBACpB,aACA,QACA,UACe;AACf,MAAI;AACF,UAAM,YAAY,UAAU,EAAE,MAAM,OAAO,CAAC;AAAA,EAC9C,SAAS,OAAO;AACd,QAAI,iBAAiB,uBAAuB;AAC1C,YAAM;AAAA,IACR;AACA,UAAM,IAAI;AAAA,MACR,+BAA+B,MAAM;AAAA,EACzC,KAAK;AAAA,IACH;AAAA,EACF;AAEA,MAAI;AACF,UAAM,YAAY,YAAY,EAAE,MAAM,UAAU,YAAY,OAAO,CAAC;AAAA,EACtE,SAAS,OAAO;AACd,QAAI,iBAAiB,uBAAuB;AAC1C,YAAM;AAAA,IACR;AACA,UAAM,IAAI;AAAA,MACR,iCAAiC,QAAQ,eAAe,MAAM;AAAA,EAClE,KAAK;AAAA,IACH;AAAA,EACF;AACF;AAQA,SAAS,eACP,QAC4B;AAC5B,SAAO;AAAA,IACL,KAAK,QAAQ,OAAO,GAAG;AAAA,IACvB,YAAY,OAAO,aACf,gBAAgB,OAAO,UAAU,IACjC;AAAA,IACJ,WAAW,OAAO,YACd,QAAkB,OAAO,SAAS,IAClC;AAAA,IACJ,WAAW,OAAO,YAAY,QAAQ,OAAO,SAAS,IAAI;AAAA,EAC5D;AACF;AAEA,eAAsB,qBACpB,WACA,mBACA,QACqC;AACrC,QAAM,EAAE,KAAK,YAAY,WAAW,UAAU,IAAI,eAAe,SAAS;AAE1E,MAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ;AACxC,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,QAAM,kBAAkB,aACpB,aACA,YACA,MAAM,kBAAkB,SAAS,SAAS,IAC1C;AAEJ,MAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC/B,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACtC,QAAI,OAAO,IAAI,CAAC,MAAM,UAAU;AAC9B,YAAM,IAAI;AAAA,QACR,qCAAqC,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF;AAEA,MACG,oBAAoB,UAAa,IAAI,WAAW,gBAAgB,UAChE,cAAc,UAAa,IAAI,WAAW,UAAU,UACpD,cAAc,UAAa,IAAI,WAAW,UAAU,QACrD;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,IAAI,IAAI,GAAG;AAC7B,MAAI,UAAU,SAAS,IAAI,QAAQ;AACjC,UAAM,eAAe,IAAI;AAAA,MACvB,CAAC,MAAM,UAAU,IAAI,QAAQ,IAAI,MAAM;AAAA,IACzC;AACA,UAAM,IAAI;AAAA,MACR,8CAA8C,YAAY;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd;AACF;AAEO,SAAS,eACd,KACA,YACY;AACZ,SAAO,IAAI;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;;;ACrKO,IAAM,6BAA6B,CACxC,eACW;AACX,MAAI,eAAe,iBAAiB;AAClC,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,IAAM,eAAe,CAAC,QAAwB;AAC5C,SAAO,OAAO,KAAK,GAAG,EAAE,SAAS,QAAQ;AAC3C;AASO,IAAM,0BAAN,MAA4D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjE,YAAY,iBAAqC;AAC/C,UAAM,QAAQ,mBAAmB,QAAQ,IAAI;AAC7C,QAAI,UAAU,QAAW;AACvB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,SAAK,cAAc;AAAA,MACjB,eAAe,WAAW,aAAa,KAAK;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,eAA4B;AAC1B,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,0BAAN,MAA4D;AAAA,EAGjE,YACE,iBACA,aAA8B,iBAC9B;AACA,UAAM,QAAQ,mBAAmB,QAAQ,IAAI;AAC7C,QAAI,UAAU,QAAW;AACvB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAoB,2BAA2B,UAAU;AAC/D,UAAM,YACJ,eAAe,kBAAkB,UAAU,KAAK,KAAK;AACvD,SAAK,cAAc,CAAC;AACpB,SAAK,YAAY,SAAS,IAAI;AAAA,EAChC;AAAA,EAEA,eAA4B;AAC1B,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,4BAA4B,CACvC,SACuB;AACvB,MAAI,KAAK,aAAa,QAAW;AAC/B,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,MAAI,KAAK,gBAAgB,QAAW;AAClC,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACA,UAAQ,KAAK,UAAU;AAAA,IACrB,KAAK;AACH,aAAO,IAAI,wBAAwB,KAAK,WAAW;AAAA,IACrD,KAAK;AACH,aAAO,IAAI;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AACA;AAAA,IACF;AACE,YAAM,IAAI,MAAM,uBAAuB;AAAA,EAC3C;AACF;;;AC1FA,SAAS,eAAe,OAAqB;AAC3C,SAAO;AAAA,KACJ,OAAO,SAAS,eAAe,OAAO,SAAS,kBAC/C,MAAM,SAAS,SAAS,cAAc,KACrC,MAAM,SAAS,SAAS,iBAAiB,KACzC,MAAM,SAAS,SAAS,WAAW;AAAA,EACvC;AACF;AAEA,SAAS,iBAAiB,OAAkC;AAC1D,QAAM,QAAQ;AACd,QAAM,QAAQ,OAAO,MAAM,KAAK;AAChC,MAAI,OAAO;AACT,UAAM,CAAC,EAAE,MAAM,OAAO,IAAI;AAC1B,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,eAAO,IAAI,iBAAiB,OAAO;AAAA,MACrC;AACE,eAAO,IAAI,YAAY,MAAM,OAAO;AAAA,IACxC;AAAA,EACF;AACA,SAAO,IAAI;AAAA,IACT;AAAA,EACF;AACF;AAOO,IAAM,cAAwB,OACnC,OACA,SACsB;AACtB,MAAI;AACF,UAAM,OAAO,MAAM,MAAM,OAAO,IAAI;AAEpC,UAAM,aAAa,KAAK,MAAM;AAC9B,UAAM,WAAW,MAAM,WAAW,KAAK;AACvC,QAAI,CAAC,WAAW,IAAI;AAClB,YAAM,QAAQ,kBAAkB,UAAU,OAAO,UAAU,OAAO;AAClE,UAAI,OAAO;AACT,cAAM;AAAA,MACR;AACA,cAAQ,KAAK,QAAQ;AAAA,QACnB,KAAK;AACH,gBAAM,IAAI;AAAA,YACR,kBAAkB,KAAK,iBAAiB,KAAK,UAAU;AAAA,UACzD;AAAA,QACF,KAAK;AACH,gBAAM,IAAI,wBAAwB,cAAc;AAAA,QAClD,KAAK;AACH,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,QACF,KAAK;AACH,gBAAM,IAAI;AAAA,YACR,8CAA8C,KAAK;AAAA,UACrD;AAAA,QACF,KAAK;AACH,gBAAM,IAAI,kBAAkB,6BAA6B;AAAA,QAC3D,KAAK;AACH,gBAAM,iBAAiB,UAAU,KAAK;AAAA,QACxC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,gBAAM,IAAI;AAAA,YACR;AAAA,UACF;AAAA,MACJ;AAEA,YAAM,IAAI;AAAA,QACR,mBAAmB,KAAK,gBAAgB,KAAK,MAAM,KAAK,KAAK,UAAU;AAAA,MACzE;AAAA,IACF;AAEA,QAAI,UAAU,OAAO;AACnB,YAAM,iBAAiB,SAAS,KAAK;AAAA,IACvC;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;;;AC/FA,IAAM,iBAAiB;AACvB,IAAM,mBAAmB;AAalB,IAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBvB,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,WAAW;AAAA,EACb,IAMI,CAAC,GAAG;AA5BR,SAAO,SAAiB;AACxB,SAAO,WAAmB;AA4BxB,QAAI,SAAS;AAAW,aAAO;AAC/B,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,eAAe;AAEpB,UAAM,YAA2B,IAAI,cAAc;AAAA,MACjD,UAAU;AAAA,IACZ,CAAC;AAED,SAAK,MAAM,IAAI,OAAW,WAAW,QAAW,WAAW;AAC3D,SAAK,IAAI,UAAU,gBAAgB,CAAC;AAEpC,QAAI,SAAS,QAAW;AACtB,WAAK,eAAe,0BAA0B,IAAI;AAClD,WAAK,IAAI,QAAQ,UAAU;AAAA,QACzB,GAAG,KAAK,IAAI,QAAQ;AAAA,QACpB,GAAG,KAAK,aAAa,aAAa;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,UAAU;AAAA,IACrB,SAAS;AAAA,IACT,WAAW;AAAA,EACb,GAGkB;AAChB,UAAM,uBAAuB,MAAM,QAAQ,QAAQ;AACnD,SAAK,SAAS;AACd,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAa,YAAY;AAAA,IACvB,WAAW;AAAA,EACb,GAEkB;AAChB,UAAM,uBAAuB,MAAM,KAAK,QAAQ,QAAQ;AACxD,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAa,aAAa,EAAE,KAAK,GAAsC;AACrE,UAAM,KAAK,IAAI,aAAa,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO;AAEtD,WAAO,EAAE,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAa,UAAU,EAAE,KAAK,GAAsC;AAClE,UAAM,YAAa,MAAM,KAAK,IAAI;AAAA,MAChC;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,EAAE,MAAM,UAAU,KAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,eAAe;AAAA,IAC1B;AAAA,IACA;AAAA,EACF,GAG8B;AAC5B,UAAM,KAAK,IAAI,eAAe,YAAY,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO;AAEpE,WAAO,EAAE,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,YAAY;AAAA,IACvB;AAAA,IACA;AAAA,EACF,GAGsB;AACpB,UAAM,SAAU,MAAM,KAAK,IAAI;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,eAAe;AAAA,IAC1B;AAAA,IACA;AAAA,EACF,GAGkB;AAChB,UAAM,KAAK,IAAI,eAAe,YAAY,MAAM,KAAK,IAAI,OAAO;AAChE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,cAAc;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIwB;AACtB,UAAM,WAAW,MAAM,KAAK,IAAI;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO;AAAA,EACT;AACF;;;ACvSA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,cAAgB;AAAA,MACd,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AC1BA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,SAAW;AAAA,MACP,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,MAAQ;AAAA,MACJ,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,QAAU;AAAA,MACN,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;ACzBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,oBAAsB;AAAA,MACpB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AChBA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,YAAc;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,iBAAmB;AAAA,MACf,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;ACrBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc,CAAC;AAAA,EACf,UAAY,CAAC;AAAA,EACb,sBAAwB;AAC1B;;;ACTA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AC1BA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACrBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AC/BA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,YAAc;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,iBAAmB;AAAA,MACf,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;ACrBA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,KAAO;AAAA,MACH,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;AChBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,aAAe;AAAA,MACb,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACzBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACrBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,KAAO;AAAA,MACL,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACzBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,qBAAuB;AAAA,MACrB,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,MACV;AAAA,MACA,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AAAA,EACb,sBAAwB;AAC1B;;;ACjBA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AC1BA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,YAAc;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,iBAAmB;AAAA,MACf,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,UAAY;AAAA,MACR,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,UAAY;AAAA,MACR,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,aAAe;AAAA,MACX,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,eAAiB;AAAA,MACb,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,iBAAmB;AAAA,MACf,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,YAAc;AAAA,MACV,MAAQ;AAAA,QACJ;AAAA,QACA;AAAA,MACJ;AAAA,MACA,aAAe;AAAA,IACnB;AAAA,IACA,iBAAmB;AAAA,MACf,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;ACtEA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,SAAW;AAAA,MACT,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACrBA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,YAAc;AAAA,MACV,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,QAAU;AAAA,MACN,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,sBAAwB;AAAA,MACpB,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,QAAU;AAAA,MACN,MAAQ;AAAA,MACR,aAAe;AAAA,MACf,sBAAwB;AAAA,QACpB,MAAQ;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;ACxCA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;AChBA;AAAA,EACI,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACV,OAAS;AAAA,MACL,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,UAAY;AAAA,MACR,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,IACA,WAAa;AAAA,MACT,MAAQ;AAAA,MACR,aAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,UAAY;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,sBAAwB;AAC5B;;;AC1BA;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,EACT,aAAe;AAAA,EACf,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,YAAc;AAAA,IACZ,YAAc;AAAA,MACZ,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,IACA,iBAAmB;AAAA,MACjB,MAAQ;AAAA,MACR,aAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAwB;AAC1B;;;ACEA,iBAAgB;AAehB,IAAM,MAAM,IAAI,WAAAO,QAAI;AAAA,EAClB,QAAQ;AAAA;AAAA,EACR,WAAW;AACb,CAAC;AAGD,IAAM,YAAY;AAAA,EAChB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,sBAAsB;AAAA,EACtB,UAAU;AAAA,EACV,cAAc;AAAA,EACd,UAAU;AACZ;AASO,SAAS,WAAW,YAA4C;AACrE,MAAI,CAAC,UAAU,UAAU,GAAG;AAC1B,UAAM,IAAI,MAAM,WAAW,UAAU,aAAa;AAAA,EACpD;AAEA,SAAO,UAAU,UAAU;AAC7B;AASO,SAAS,qBACd,QACA,YACM;AACN,QAAM,SAAS,WAAW,UAAU;AAEpC,QAAM,WAAW,IAAI,QAAQ,MAAM;AACnC,QAAM,QAAQ,SAAS,MAAM;AAE7B,MAAI,CAAC,OAAO;AACV,UAAM,SAAS,SAAS,UAAU,CAAC;AACnC,UAAM,aAAa,OAChB,IAAI,CAAC,MAAM,GAAG,EAAE,gBAAgB,GAAG,KAAK,EAAE,OAAO,EAAE,EACnD,KAAK,IAAI;AACZ,UAAM,IAAI;AAAA,MACR,wCAAwC,UAAU,MAAM,UAAU;AAAA,IACpE;AAAA,EACF;AACF;AASO,SAAS,iBAAiB,YAA4C;AAC3E,QAAM,SAAS,WAAW,UAAU;AACpC,SAAO,OAAO,WAAW;AAC3B;AAOO,SAAS,sBAAkD;AAChE,SAAO,OAAO,KAAK,SAAS,EAAE,OAAO,CAAC,SAAS,SAAS,aAAa;AACvE;AAOO,SAAS,gBAGd;AACA,QAAM,aAGF,CAAC;AAEL,aAAW,cAAc,oBAAoB,GAAG;AAC9C,QAAI;AACF,YAAM,SAAS,UAAU,UAAU;AACnC,iBAAW,UAAU,IAAI;AAAA,QACvB,SAAS,OAAO,WAAW;AAAA,QAC3B,OAAO,OAAO,SAAS;AAAA,QACvB,aAAa,OAAO,eAAe;AAAA,MACrC;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,0BAA0B,UAAU,MAAM,KAAK;AAAA,IAC/D;AAAA,EACF;AAEA,SAAO;AACT;;;AC1JA,IAAI;AAQG,IAAM,2BAAN,MAAM,0BAAuD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBlE,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,oBAAoB;AAAA,EACtB,IAKI,CAAC,GAAG;AA3BR,gBAAO;AA4BL,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,MAAa,SAAS,OAAsC;AAC1D,UAAM,KAAK,WAAW;AAGtB,SAAK,kBAAkB,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5D,UAAI;AACF,cAAM,WAAW,KAAK;AAEtB,cAAM,YAAY,KAAK;AACvB,cAAM,WAAW,KAAK;AACtB,cAAM,oBAAoB,KAAK;AAE/B;AAAA,UACE,MAAM,SAAS,sBAAsB,KAAK,OAAO;AAAA,YAC/C;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,GAAG;AACV,eAAO,CAAC;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,OAAO,MAAM,KAAK;AACtB,QAAI,SAAS,MAAM,KAAK,OAAO,EAAE,SAAS,QAAQ,WAAW,KAAK,CAAC;AACnE,WAAO,OAAO,OAAO;AAAA,EACvB;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,YAAY,KAAK;AAAA,MACjB,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,gBAAgB,QAAgD;AAC9D,WAAO,IAAI,0BAAyB;AAAA,MAClC,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EAEA,qBAAqB,WAAyB,WAA+B;AAC3E,QAAI,UAAU,eAAe,UAAU,YAAY;AACjD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,cAAc;AAAA,EAC7C;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAiB;AAC1B,QAAI;AAEF,UAAI,EAAE,SAAS,IAAI,MAAM,0BAAyB,OAAO;AACzD,wBAAkB;AAAA,IACpB,SAAS,IAAI;AAEX,UAAI,GAAG,SAAS,oBAAoB;AAClC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AACA,SAAK,kBAAkB;AAAA,EACzB;AAAA;AAAA,EAGA,aAAa,SAGV;AACD,QAAI;AAEF,YAAM,EAAE,SAAS,IAAI,MAAM,OAAO,wBAAwB;AAC1D,aAAO,EAAE,SAAS;AAAA,IACpB,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrHA,IAAMC,kBAAiB;AACvB,IAAMC,oBAAmB;AAElB,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuCxB,YAAY;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAASD;AAAA,IACT,WAAWC;AAAA,EACb,IAAwB,CAAC,GAAG;AAC1B,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,eAAe;AAEpB,UAAM,YAA2B,IAAI,cAAc;AAAA,MACjD,UAAU;AAAA,IACZ,CAAC;AAED,SAAK,MAAM,IAAI,OAAW,WAAW,QAAW,WAAW;AAC3D,SAAK,IAAI,UAAU,gBAAgB,CAAC;AAEpC,SAAK,IAAI,QAAQ,UAAU;AAAA,MACzB,GAAG,KAAK,IAAI,QAAQ;AAAA,MACpB,cAAc,6BAA6B,OAAO;AAAA,IACpD;AAEA,QAAI,SAAS,QAAW;AACtB,WAAK,eAAe,0BAA0B,IAAI;AAClD,WAAK,IAAI,QAAQ,UAAU;AAAA,QACzB,GAAG,KAAK,IAAI,QAAQ;AAAA,QACpB,GAAG,KAAK,aAAa,aAAa;AAAA,MACpC;AAAA,IACF;AAEA,SAAK,eAAe,IAAI,YAAY;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,OAAsB;AAC1B,QAAI,CAAC,KAAK,cAAc;AACtB,UAAI,KAAK,iBAAiB,QAAW;AACnC,cAAM,KAAK,gBAAgB;AAAA,MAC7B;AAEA,WAAK,eAAe;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF;AAEA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,kBAAiC;AACrC,UAAM,gBAAiB,MAAM,KAAK,IAAI;AAAA,MACpC,KAAK,IAAI;AAAA,IACX;AACA,UAAM,cAAc,cAAc;AAClC,UAAM,iBAAiB,cAAc;AAErC,QACE,gBAAgB,QAChB,gBAAgB,UAChB,gBAAgB,OAChB,KAAK,UAAUD,iBACf;AACA,WAAK,SAAS;AAAA,IAChB;AAEA,QACE,mBAAmB,QACnB,mBAAmB,UACnB,eAAe,UAAU,KACzB,eAAe,CAAC,MAAM,OACtB,KAAK,YAAYC,mBACjB;AACA,WAAK,WAAW,eAAe,CAAC;AAAA,IAClC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,QAA0B;AAC9B,UAAM,KAAK,KAAK;AAChB,WAAO,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,OAAO;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,UAA2B;AAC/B,WAAO,MAAM,KAAK,IAAI,QAAQ,KAAK,IAAI,OAAO;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,YAA6B;AACjC,UAAM,WAAW,MAAM,KAAK,IAAI,UAAU,KAAK,IAAI,OAAO;AAC1D,WAAO,SAAS,sBAAsB;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBA,MAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,oBAAoB,IAAI,yBAAyB;AAAA,EACnD,GAAgD;AAC9C,UAAM,KAAK,KAAK;AAChB,UAAM,gBAAgB,MAAM,KAAK,IAAI;AAAA,MACnC,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,QACE;AAAA;AAAA,QAEA,eAAe;AAAA;AAAA,QACf;AAAA,MACF;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,eAAe,MAAM;AAAA,MAC1B,MAAM,cAAc;AAAA,MACpB,IAAI,cAAc;AAAA,MAClB,UAAU,cAAc;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,MAAM,sBAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,oBAAoB,IAAI,yBAAyB;AAAA,EACnD,GAAqD;AACnD,UAAM,KAAK,KAAK;AAChB,UAAM,gBAAgB,MAAM,KAAK,IAAI;AAAA,MACnC,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,QACE;AAAA;AAAA,QAEA,eAAe;AAAA;AAAA,QACf;AAAA,QACA,eAAe;AAAA,MACjB;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,eAAe,MAAM;AAAA,MAC1B,MAAM,cAAc;AAAA,MACpB,IAAI,cAAc;AAAA,MAClB,UAAU,cAAc;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,gBAAgB,EAAE,OAAO,OAAO,IAA2B,CAAC,GAEhE;AACA,UAAM,KAAK,KAAK;AAEhB,UAAM,WAAY,MAAM,KAAK,IAAI;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,SAAS,IAAI,CAAC,eAAe,WAAW,IAAI;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,2BAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,EACF,IAA2B,CAAC,GAM1B;AACA,UAAM,KAAK,KAAK;AAChB,UAAM,UAAW,MAAM,KAAK,IAAI;AAAA,MAC9B,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,WAAW,CAAC;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,mBAAoC;AACxC,UAAM,KAAK,KAAK;AAChB,UAAM,WAAY,MAAM,KAAK,IAAI;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,IAAI;AAAA,IACX;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,cAAc;AAAA,IAClB;AAAA,IACA;AAAA,EACF,GAA6C;AAC3C,UAAM,KAAK,KAAK;AAChB,UAAM,WAAW,MAAM,KAAK,IAAI;AAAA,MAC9B,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAEA,WAAO,eAAe,MAAM;AAAA,MAC1B,IAAI,SAAS;AAAA,MACb,MAAM,SAAS;AAAA,MACf,UAAU,SAAS;AAAA,MACnB,mBACE,sBAAsB,SAClB,oBACA,IAAI,yBAAyB;AAAA,IACrC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,iBAAiB,EAAE,KAAK,GAA0C;AACtE,UAAM,KAAK,KAAK;AAEhB,UAAM,KAAK,IAAI;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA,KAAK,IAAI;AAAA,IACX;AAAA,EACF;AACF;;;ACnbA,IAAM,cAAN,cAA0B,aAAa;AAAA,EACrC,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsB;AAEpB,QAAI,CAAC,QAAQ;AACX,eAAS,QAAQ,IAAI;AAAA,IACvB;AACA,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,gBAAY,aAAa;AACzB,gBAAY,aAAa;AAEzB,UAAM,OAAO,GAAG,SAAS,IAAI,SAAS;AAEtC,UAAM,OAAoB;AAAA,MACxB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB;AAEA,WAAO,IAAI,aAAa;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM;AAAA,EACR;AACF;;;ACrCA,IAAM,gBAAN,MAA2C;AAAA,EAIzC,YAAY,eAAmC;AAC7C,SAAK,SAAS,cAAc;AAAA,EAC9B;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAc;AAEvB,UAAM,EAAE,SAAS,OAAO,IAAI,MAAM,OAAO,WAAW;AAEpD,WAAO,KAAK,KAAK,MAAM;AACvB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,MAAa,gBAAgB,QAGL;AACtB,UAAM,KAAK,WAAW;AACtB,WAAO,MAAM,KAAK,aACf,MAAM;AAAA,MACL,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,IAChB,CAAC,EACA,KAAK,CAAC,aAAkB;AACvB,aAAO,SAAS,KAAK;AAAA,IACvB,CAAC;AAAA,EACL;AACF;AAEA,IAAM,eAAN,MAA0C;AAAA,EAIxC,YAAY,eAAmC;AAC7C,SAAK,SAAS,cAAc;AAAA,EAC9B;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAc;AAEvB,UAAM,SAAS,MAAM,OAAO,WAAW,EAAE,KAAK,CAACC,YAAW;AACxD,aAAOA;AAAA,IACT,CAAC;AAED,SAAK,eAAe,IAAI,OAAO,aAAa;AAAA,MAC1C,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,gBAAgB,QAIL;AACtB,UAAM,KAAK,WAAW;AACtB,QAAI,OAAO,SAAS;AAClB,aAAO,MAAM,KAAK,aACf,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC,EACnD,KAAK,CAAC,aAAkB;AACvB,eAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACL,OAAO;AACL,aAAO,MAAM,KAAK,aACf,MAAM,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC,EAClD,KAAK,CAAC,aAAkB;AACvB,eAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACL;AAAA,EACF;AACF;AAOO,IAAM,0BAAN,MAAM,yBAAsD;AAAA,EASjE,YAAY;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,IACR,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKzB,UAAU;AAAA,EACZ,GASG;AA1BH,gBAAO;AA2BL,SAAK,QAAQ;AACb,SAAK,UAAU;AAEf,UAAM,SAAS,kBAAkB,QAAQ,IAAI,sBAAsB;AACnE,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR,oGAAoG,sBAAsB;AAAA,MAC5H;AAAA,IACF;AAEA,SAAK,SAAS;AACd,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,MAAc,mBAAmB;AAC/B,QAAI,KAAK;AAAa;AACtB,QAAI;AAEF,WAAK,cAAc,MAAM,OAAO,WAAW,EAAE,KAAK,CAAC,WAAW;AAE5D,YAAI,OAAO,cAAc;AACvB,iBAAO,IAAI,aAAa,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,QACjD,OAAO;AACL,iBAAO,IAAI,cAAc,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,QAClD;AAAA,MACF,CAAC;AAAA,IACH,SAAS,GAAG;AAEV,UAAI,EAAE,SAAS,oBAAoB;AACjC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,OAAsC;AAC1D,UAAM,KAAK,iBAAiB;AAE5B,WAAO,MAAM,KAAK,YAAY,gBAAgB;AAAA,MAC5C,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,MACP,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,QAA+C;AAC7D,WAAO,IAAI,yBAAwB;AAAA,MACjC,OAAO,OAAO;AAAA,MACd,wBAAwB,OAAO;AAAA,IACjC,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,YAAY,KAAK;AAAA,MACjB,iBAAiB,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,qBAAqB,WAAyB,WAA+B;AAC3E,QAAI,UAAU,eAAe,UAAU,YAAY;AACjD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,QAAQ;AAAA,EACvC;AAAA,EAEA,kBAA4C;AAC1C,QAAI,KAAK,UAAU,sBAAsB;AACvC,aAAO,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B;AAEA,QAAI,KAAK,UAAU,4BAA4B;AAC7C,aAAO,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B;AAEA,QAAI,KAAK,UAAU,sBAAsB;AACvC,aAAO,CAAC,QAAQ;AAAA,IAClB;AAEA,QAAI,KAAK,UAAU,4BAA4B;AAC7C,aAAO,CAAC,QAAQ;AAAA,IAClB;AAEA,QAAI,KAAK,UAAU,2BAA2B;AAC5C,aAAO,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B;AAEA,QAAI,KAAK,UAAU,iCAAiC;AAClD,aAAO,CAAC,UAAU,MAAM,IAAI;AAAA,IAC9B;AAEA,QAAI,KAAK,UAAU,2BAA2B;AAC5C,aAAO,CAAC,IAAI;AAAA,IACd;AAEA,WAAO,CAAC,UAAU,MAAM,IAAI;AAAA,EAC9B;AAAA,EAEA,eAAuC;AACrC,QAAI,KAAK,SAAS,2BAA2B;AAC3C,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;;;AC9NA,IAAI;AAEG,IAAM,sCAAN,MAAM,qCAAkE;AAAA,EAS7E,YAAY;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,eAAe;AAAA,EACjB,GAKG;AAlBH,gBAAO;AAmBL,UAAM,SAAS,gBAAgB,QAAQ,IAAI,YAAY;AACvD,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR,oGAAoG,YAAY;AAAA,MAClH;AAAA,IACF;AAEA,SAAK,UAAU;AACf,SAAK,kBAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAgB;AACzB,QAAI;AAEF,YAAM,EAAE,YAAY,IAClB,MAAM,qCAAoC,OAAO;AACnD,uBAAiB;AAEjB,uBAAiB,IAAI,eAAe,KAAK,OAAO;AAAA,IAClD,SAAS,IAAI;AAEX,UAAI,GAAG,SAAS,oBAAoB;AAClC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AACA,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,MAAa,SAAS,OAAiB;AACrC,UAAM,KAAK,WAAW;AACtB,UAAM,QAAQ,KAAK,eAAe,mBAAmB,EAAE,OAAO,KAAK,MAAM,CAAC;AAC1E,UAAM,WAAW,MAAM,MAAM,mBAAmB;AAAA,MAC9C,UAAU,MAAM,IAAI,CAAC,OAAO;AAAA,QAC1B,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAAA,QAChC,UAAU,KAAK;AAAA,MACjB,EAAE;AAAA,IACJ,CAAC;AACD,UAAM,aAAa,SAAS,WAAW,IAAI,CAAC,MAAW,EAAE,MAAM;AAE/D,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,aAAa,SAGV;AACD,QAAI;AAEF,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,uBAAuB;AACnE,YAAM,cAAc;AAEpB,aAAO,EAAE,YAAY;AAAA,IACvB,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB,QAA2D;AACzE,WAAO,IAAI,qCAAoC;AAAA,MAC7C,OAAO,OAAO;AAAA,MACd,cAAc,OAAO;AAAA,MACrB,UAAU,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,qBACE,WACA,WACM;AACN,QAAI,UAAU,eAAe,UAAU,YAAY;AACjD,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAEA,QAAI,UAAU,aAAa,UAAU,UAAU;AAC7C,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAAA,EACF;AAAA,EAEA,eAAe,QAAmC;AAChD,yBAAqB,QAAQ,sBAAsB;AAAA,EACrD;AACF;;;AC5HO,IAAM,qCAAN,MAAM,oCAAiE;AAAA,EAK5E,YAAY,EAAE,IAAI,GAAoB;AAJtC,gBAAO;AAOL,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,MAAa,SAAS,OAAiB;AACrC,UAAM,WAAW,MAAM,MAAM,KAAK,KAAK;AAAA,MACrC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,QAAQ,MAAM,CAAC;AAAA,IACxC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,kCAAkC,SAAS,UAAU,EAAE;AAAA,IACzE;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB,QAA0D;AACxE,WAAO,IAAI,oCAAmC,MAAM;AAAA,EACtD;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,KAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,qBACE,WACA,WACM;AACN,QAAI,UAAU,QAAQ,UAAU,KAAK;AACnC,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,eAAe,QAAmC;AAChD,yBAAqB,QAAQ,oBAAoB;AAAA,EACnD;AACF;;;AClDO,IAAM,wBAAN,MAAM,uBAAoD;AAAA,EAQ/D,YAAY;AAAA,IACV;AAAA,IACA,aAAa;AAAA,IACb,kBAAkB;AAAA,EACpB,GAIG;AAfH,gBAAO;AAgBL,UAAM,SAAS,kBAAkB,QAAQ,IAAI,eAAe;AAC5D,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR,qGAAqG,eAAe;AAAA,MACtH;AAAA,IACF;AAEA,SAAK,aAAa;AAClB,SAAK,kBAAkB;AAEvB,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,MACb,eAAe,UAAU,cAAc;AAAA,MACvC,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,OAAiB;AACrC,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,KAAK,SAAS;AAAA,QACzC,QAAQ;AAAA,QACR,SAAS,KAAK;AAAA,QACd,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO;AAAA,UACP,OAAO,KAAK;AAAA,QACd,CAAC;AAAA,MACH,CAAC;AAED,YAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,UAAI,CAAC,QAAQ,CAAC,KAAK,MAAM;AACvB,cAAM,IAAI,MAAM,KAAK,MAAM;AAAA,MAC7B;AAEA,YAAM,aAAoB,KAAK;AAC/B,YAAM,mBAAmB,WAAW,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAEpE,aAAO,iBAAiB,IAAI,CAAC,WAAW,OAAO,SAAS;AAAA,IAC1D,SAAS,OAAO;AACd,UAAI,iBAAiB,OAAO;AAC1B,cAAM,IAAI,MAAM,8BAA8B,MAAM,OAAO,EAAE;AAAA,MAC/D,OAAO;AACL,cAAM,IAAI,MAAM,8BAA8B,KAAK,EAAE;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB,QAA6C;AAC3D,WAAO,IAAI,uBAAsB;AAAA,MAC/B,YAAY,OAAO;AAAA,MACnB,iBAAiB,OAAO;AAAA,IAC1B,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,MAAM;AAAA,EACrC;AACF;;;ACjFO,IAAM,0BAAN,MAAM,yBAAsD;AAAA,EAOjE,YAAY;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,IAAsC,CAAC,GAAG;AAT1C,gBAAO;AAYL,QAAI,OAAO,IAAI,SAAS,iBAAiB,GAAG;AAC1C,WAAK,MAAM,IAAI,MAAM,GAAG,CAAC,kBAAkB,MAAM;AAAA,IACnD,OAAO;AACL,WAAK,MAAM;AAAA,IACb;AACA,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAc;AACvB,QAAI;AAEF,YAAM,EAAE,OAAO,IAAI,MAAM,yBAAwB,OAAO;AACxD,WAAK,eAAe,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,IAC1D,SAAS,GAAG;AAEV,UAAI,EAAE,SAAS,oBAAoB;AACjC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAGA,aAAa,SAGV;AACD,QAAI;AAEF,YAAM,EAAE,OAAO,IAAI,MAAM,OAAO,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;AAErE,aAAO,EAAE,OAAO;AAAA,IAClB,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,OAAiB;AACrC,UAAM,KAAK,WAAW;AACtB,WAAO,MAAM,KAAK,aAAc,MAAM;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,CAAC,EAAE,KAAK,CAAC,aAAkB;AACzB,aAAO,SAAS;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,QAA+C;AAC7D,WAAO,IAAI,yBAAwB;AAAA,MACjC,KAAK,OAAO;AAAA,MACZ,OAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,KAAK,KAAK;AAAA,MACV,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,QAAQ;AAAA,EACvC;AACF;;;ACvFA,IAAI;AACJ,IAAI,gBAAgB;AACpB,IAAI,qBAAqB;AAWzB,IAAM,cAAN,MAAuC;AAAA,EAIrC,YAAY,eAAyD;AACnE,SAAK,gBAAgB,IAAI,UAAU,cAAc;AAAA,MAC/C,cAAc,cAAc;AAAA,MAC5B,QAAQ,cAAc;AAAA,IACxB,CAAC;AACD,SAAK,SAAS,IAAI,UAAU,UAAU,KAAK,aAAa;AAAA,EAC1D;AAAA,EAEA,MAAa,gBAAgB,QAKL;AACtB,UAAM,aAAyB,CAAC;AAChC,UAAM,WAAW,MAAM,KAAK,OACzB,gBAAgB;AAAA,MACf,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,IAChB,CAAC,EACA,MAAM,CAAC,UAAe;AACrB,YAAM;AAAA,IACR,CAAC;AAEH,UAAM,OAAO,SAAS,KAAK,MAAM;AACjC,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,iBAAW,KAAK,KAAK,CAAC,EAAE,WAAW,CAAC;AAAA,IACtC;AACA,WAAO;AAAA,EACT;AACF;AAEA,IAAM,cAAN,MAAuC;AAAA,EAIrC,YAAY,QAAa;AACvB,SAAK,SAAS;AACd,SAAK,SAAS,IAAI,UAAU;AAAA,MAC1B,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,gBAAgB,QAKL;AACtB,UAAM,aAAyB,CAAC;AAChC,UAAM,WAAW,MAAM,KAAK,OAAO,WAAW,OAAO,MAAM;AAC3D,UAAM,OAAO,SAAS,MAAM;AAC5B,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,iBAAW,KAAK,KAAK,CAAC,EAAE,WAAW,CAAC;AAAA,IACtC;AACA,WAAO;AAAA,EACT;AACF;AASO,IAAM,0BAAN,MAAM,yBAAsD;AAAA,EASjE,YAAY;AAAA,IACV;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,yBAAyB;AAAA,EAC3B,GAMG;AApBH,gBAAO;AAqBL,UAAM,SAAS,kBAAkB,QAAQ,IAAI,sBAAsB;AACnE,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR,oGAAoG,sBAAsB;AAAA,MAC5H;AAAA,IACF;AACA,SAAK,UAAU;AAEf,SAAK,SAAS,0BAA0B;AACxC,SAAK,QAAQ;AACb,SAAK,aAAa,+BAA+B;AAAA,EACnD;AAAA,EAEA,MAAc,aAAa;AAEzB,QAAI,KAAK;AAAW;AAEpB,QAAI;AACF,YAAM,EAAE,QAAQ,SAAAC,SAAQ,IAAI,MAAM,yBAAwB,OAAO;AACjE,kBAAY;AACZ,UAAI,aAAqBA;AACzB,sBAAgB,WAAW,QAAQ,YAAY,EAAE;AACjD,2BAAqB,SAAS,cAAc,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,IAC3D,SAAS,IAAI;AAEX,UAAI,GAAG,SAAS,oBAAoB;AAClC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAEA,QAAI,qBAAqB,GAAG;AAC1B,WAAK,YAAY,IAAI,YAAY,KAAK,OAAO;AAAA,IAC/C,OAAO;AACL,WAAK,YAAY,IAAI,YAAY;AAAA,QAC/B,cAAc,KAAK;AAAA,QACnB,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,OAAsC;AAC1D,UAAM,KAAK,WAAW;AAEtB,WAAO,MAAM,KAAK,UAAW,gBAAgB;AAAA,MAC3C,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,MACP,YAAY,KAAK;AAAA,IACnB,CAAC,EAAE,MAAM,CAAC,UAAe;AACvB,YAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,aAAa,SAIV;AACD,QAAI;AAEF,YAAM,EAAE,SAAS,OAAO,IAAI,MAAM,OAAO,QAAQ;AAEjD,YAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,gBAAgB;AAEjD,aAAO,EAAE,QAAQ,SAAS,QAAQ;AAAA,IACpC,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB,QAA+C;AAC7D,WAAO,IAAI,yBAAwB;AAAA,MACjC,gBAAgB,OAAO;AAAA,MACvB,cAAc,OAAO;AAAA,MACrB,wBAAwB,OAAO;AAAA,MAC/B,6BAA6B,OAAO;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK,cAAc;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,qBAAqB,WAAyB,WAA+B;AAC3E,QAAI,UAAU,eAAe,UAAU,YAAY;AACjD,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,QAAQ;AAAA,EACvC;AACF;;;AC9MA,IAAIC;AAQG,IAAM,gCAAN,MAAM,+BAA4D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBvE,YAAY;AAAA,IACV,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,oBAAoB;AAAA,EACtB,IAKI,CAAC,GAAG;AA3BR,gBAAO;AA4BL,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,MAAa,SAAS,OAAsC;AAC1D,UAAM,KAAK,WAAW;AAGtB,SAAK,kBAAkB,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5D,UAAI;AACF,cAAM,WAAW,KAAK;AAEtB,cAAM,YAAY,KAAK;AACvB,cAAM,WAAW,KAAK;AACtB,cAAM,oBAAoB,KAAK;AAE/B;AAAA,UACE,MAAM,SAAS,sBAAsB,KAAK,OAAO;AAAA,YAC/C;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,GAAG;AACV,eAAO,CAAC;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,OAAO,MAAM,KAAK;AACtB,QAAI,SAAS,MAAM,KAAK,OAAO,EAAE,SAAS,QAAQ,WAAW,KAAK,CAAC;AACnE,WAAO,OAAO,OAAO;AAAA,EACvB;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAiB;AAC1B,QAAI;AAEF,UAAI,EAAE,SAAS,IAAI,MAAM,+BAA8B,OAAO;AAC9D,MAAAA,mBAAkB;AAAA,IACpB,SAAS,IAAI;AAEX,UAAI,GAAG,SAAS,oBAAoB;AAClC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AACA,SAAK,kBAAkBA;AAAA,EACzB;AAAA;AAAA,EAGA,aAAa,SAGV;AACD,QAAI;AAEF,YAAM,EAAE,SAAS,IAAI,MAAM,OAAO,sBAAsB;AACxD,aAAO,EAAE,SAAS;AAAA,IACpB,SAAS,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB,QAAqD;AACnE,WAAO,IAAI,+BAA8B;AAAA,MACvC,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,qBAAqB,WAAyB,WAA+B;AAC3E,QAAI,UAAU,UAAU,UAAU,OAAO;AACvC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,QAAI,UAAU,aAAa,UAAU,UAAU;AAC7C,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AACA,QAAI,UAAU,cAAc,UAAU,WAAW;AAC/C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,cAAc;AAAA,EAC7C;AACF;;;AC5IA,IAAM,cAAN,MAAkB;AAAA,EAIhB,YAAY,eAAmC;AAC7C,SAAK,SAAS,cAAc;AAAA,EAC9B;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAQ;AAEjB,UAAM,WAAW,MAAM,OAAO,UAAU,EAAE,KAAK,CAACC,cAAa;AAC3D,aAAOA;AAAA,IACT,CAAC;AAED,SAAK,SAAS,IAAI,SAAS,eAAe;AAAA,MACxC,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,gBAAgB,QAGL;AACtB,UAAM,KAAK,WAAW;AACtB,WAAO,MAAM,KAAK,OACf,MAAM,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC,EAClD,KAAK,CAAC,aAAkB;AACvB,aAAO,SAAS,KAAK;AAAA,QACnB,CAAC,SAAkC,KAAK;AAAA,MAC1C;AAAA,IACF,CAAC;AAAA,EACL;AACF;AAOO,IAAM,4BAAN,MAAM,2BAAwD;AAAA,EAOnE,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB,GAIG;AAdH,gBAAO;AAeL,UAAM,SAAS,WAAW,QAAQ,IAAI,eAAe;AACrD,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR,sGAAsG,eAAe;AAAA,MACvH;AAAA,IACF;AACA,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,MAAc,aAAa;AACzB,QAAI,KAAK;AAAa;AACtB,QAAI;AAEF,WAAK,cAAc,MAAM,OAAO,UAAU,EAAE,KAAK,CAAC,aAAa;AAE7D,eAAO,IAAI,YAAY,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,MAChD,CAAC;AAAA,IACH,SAAS,GAAG;AAEV,UAAI,EAAE,SAAS,oBAAoB;AACjC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,OAAsC;AAC1D,UAAM,KAAK,WAAW;AAEtB,WAAO,MAAM,KAAK,YAAY,gBAAgB;AAAA,MAC5C,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,QAAiD;AAC/D,WAAO,IAAI,2BAA0B;AAAA,MACnC,iBAAiB,OAAO;AAAA,MACxB,OAAO,OAAO;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,YAA0B;AACxB,WAAO;AAAA,MACL,iBAAiB,KAAK;AAAA,MACtB,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,qBAAqB,WAAyB,WAA+B;AAC3E,QAAI,UAAU,eAAe,UAAU,YAAY;AACjD,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,eAAe,QAA4B;AACzC,yBAAqB,QAAQ,UAAU;AAAA,EACzC;AACF;;;ACrHO,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,gBAAa;AACb,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,UAAO;AALG,SAAAA;AAAA,GAAA;","names":["UsedValueState","Type","DataType","schemaMap","_a","merge","sets","length","slice","xl","x","join","subexp","str","typeOf","o","undefined","Object","prototype","toString","call","split","pop","shift","toLowerCase","toUpperCase","toArray","obj","Array","setInterval","assign","target","source","key","buildExps","isIRI","ALPHA$$","CR$","DIGIT$$","DQUOTE$$","HEXDIG$$","SP$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","GEN_DELIMS$$","UCSCHAR$$","SCHEME$","USERINFO$","UNRESERVED$$","DEC_OCTET$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV4ADDRESS$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","ZONEID$","IPV6ADDRESS$","IP_LITERAL$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","HOST$","REG_NAME$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","IPRIVATE$$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","URI_REFERENCE$","ABSOLUTE_URI$","GENERIC_REF$","RELATIVE_REF$","ABSOLUTE_REF$","SAMEDOC_REF$","AUTHORITY_REF$","RegExp","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","map","array","fn","result","mapDomain","string","parts","replace","labels","encoded","ucs2decode","output","counter","value","charCodeAt","extra","push","ucs2encode","fromCodePoint","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","i","n","bias","basic","lastIndexOf","j","index","oldi","w","t","baseMinusT","out","splice","encode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","toUnicode","test","toASCII","punycode","SCHEMES","pctEncChar","chr","c","e","pctDecChars","newStr","il","parseInt","substr","c2","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","match","UNRESERVED","scheme","PCT_ENCODED","NOT_SCHEME","userinfo","NOT_USERINFO","host","NOT_HOST","path","NOT_PATH","NOT_PATH_NOSCHEME","query","NOT_QUERY","fragment","NOT_FRAGMENT","_stripLeadingZeros","_normalizeIPv4","matches","IPV4ADDRESS","address","_normalizeIPv6","IPV6ADDRESS","zone","reverse","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","allZeroFields","reduce","acc","field","lastLongest","longestZeroFields","sort","a","b","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","parse","uriString","options","iri","IRI_PROTOCOL","URI_PROTOCOL","reference","port","isNaN","indexOf","schemeHandler","unicodeSupport","domainHost","_recomposeAuthority","uriTokens","_","$1","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","Error","serialize","authority","charAt","absolutePath","resolveComponents","relative","skipNormalization","tolerant","resolve","baseURI","relativeURI","schemelessOptions","normalize","uri","equal","uriA","uriB","escapeComponent","ESCAPE","unescapeComponent","handler","secure","http","isSecure","wsComponents","resourceName","ws","O","ATEXT$$","QTEXT$$","VCHAR$$","SOME_DELIMS$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","mailtoComponents","to","unknownHeaders","headers","hfields","hfield","toAddrs","subject","body","addr","toAddr","atIdx","localPart","domain","name","URN_PARSE","urnComponents","nid","nss","urnScheme","uriComponents","UUID","uuidComponents","uuid","https","wss","mailto","urn","Ajv","loadSchema","DiscrError","Ajv","fetch","fetch","Api","EmbeddingFunctionConfiguration","ObjectValue","TypeEnum","AllofValue","HnswSpace","Include","Ajv","DEFAULT_TENANT","DEFAULT_DATABASE","cohere","version","TransformersApi","voyageai","IncludeEnum"]}