UNPKG

joi

Version:

Object schema validation

5,896 lines 205 kB
//#region \0rolldown/runtime.js
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (e && (t = e(e = 0)), t), s = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), c = (e, n) => {
	let r = {};
	for (var i in e) t(r, i, {
		get: e[i],
		enumerable: !0
	});
	return n || t(r, Symbol.toStringTag, { value: "Module" }), r;
}, l = (e, i, o, s) => {
	if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
		get: ((e) => i[e]).bind(null, d),
		enumerable: !(s = n(i, d)) || s.enumerable
	});
	return e;
}, u = (n, r, a) => (a = n == null ? {} : e(i(n)), l(r || !n || !n.__esModule ? t(a, "default", {
	value: n,
	enumerable: !0
}) : a, n)), d = (e) => a.call(e, "module.exports") ? e["module.exports"] : l(t({}, "__esModule", { value: !0 }), e), f = /* @__PURE__ */ s(((e, t) => {
	t.exports = class extends Error {
		name = "AssertError";
		constructor(e, t) {
			super(e || "Unknown error"), typeof Error.captureStackTrace == "function" && Error.captureStackTrace(this, t);
		}
	};
})), p = /* @__PURE__ */ s(((e, t) => {
	t.exports = function(...e) {
		try {
			return JSON.stringify(...e);
		} catch (e) {
			return "[Cannot display object: " + e.message + "]";
		}
	};
})), m = /* @__PURE__ */ s(((e, t) => {
	var n = f(), r = p(), i = t.exports = function(e, ...t) {
		if (!e) throw t.length === 1 && t[0] instanceof Error ? t[0] : new n(t.filter((e) => e !== "").map((e) => typeof e == "string" ? e : e instanceof Error ? e.message : r(e)).join(" "), i);
	};
})), h = /* @__PURE__ */ s(((e, t) => {
	var n = m(), r = {};
	t.exports = function(e, t, i) {
		if (t === !1 || t == null) return e;
		i ||= {}, typeof i == "string" && (i = { separator: i });
		let a = Array.isArray(t);
		n(!a || !i.separator, "Separator option is not valid for array-based chain");
		let o = a ? t : t.split(i.separator || "."), s = e;
		for (let e = 0; e < o.length; ++e) {
			let a = o[e], c = i.iterables && r.iterables(s);
			if (Array.isArray(s) || c === "set") {
				let e = Number(a);
				Number.isInteger(e) && (a = e < 0 ? s.length + e : e);
			}
			if (!s || typeof s == "function" && i.functions === !1 || !c && s[a] === void 0) {
				n(!i.strict || e + 1 === o.length, "Missing segment", a, "in reach path ", t), n(typeof s == "object" || i.functions === !0 || typeof s != "function", "Invalid segment", a, "in reach path ", t), s = i.default;
				break;
			}
			s = c ? c === "set" ? [...s][a] : s.get(a) : s[a];
		}
		return s;
	}, r.iterables = function(e) {
		if (e instanceof Set) return "set";
		if (e instanceof Map) return "map";
	};
})), g = /* @__PURE__ */ s(((e, t) => {
	var n = {};
	e = t.exports = {
		array: Array.prototype,
		buffer: !1,
		date: Date.prototype,
		error: Error.prototype,
		generic: Object.prototype,
		map: Map.prototype,
		promise: Promise.prototype,
		regex: RegExp.prototype,
		set: Set.prototype,
		url: URL.prototype,
		weakMap: WeakMap.prototype,
		weakSet: WeakSet.prototype
	}, n.typeMap = new Map([
		["[object Error]", e.error],
		["[object Map]", e.map],
		["[object Promise]", e.promise],
		["[object Set]", e.set],
		["[object URL]", e.url],
		["[object WeakMap]", e.weakMap],
		["[object WeakSet]", e.weakSet]
	]), e.getInternalProto = function(t) {
		if (Array.isArray(t)) return e.array;
		if (t instanceof Date) return e.date;
		if (t instanceof RegExp) return e.regex;
		if (t instanceof Error) return e.error;
		let r = Object.prototype.toString.call(t);
		return n.typeMap.get(r) || e.generic;
	};
})), _ = /* @__PURE__ */ s(((e) => {
	e.keys = function(e, t = {}) {
		return t.symbols === !1 ? Object.getOwnPropertyNames(e) : Reflect.ownKeys(e);
	};
})), v = /* @__PURE__ */ s(((e, t) => {
	var n = h(), r = g(), i = _(), a = {
		needsProtoHack: new Set([
			r.set,
			r.map,
			r.weakSet,
			r.weakMap
		]),
		structuredCloneExists: typeof structuredClone == "function"
	};
	t.exports = a.clone = function(e, t = {}, n = null) {
		if (typeof e != "object" || !e) return e;
		let o = a.clone, s = n;
		if (t.shallow) {
			if (t.shallow !== !0) return a.cloneWithShallow(e, t);
			o = (e) => e;
		} else if (s) {
			let t = s.get(e);
			if (t) return t;
		} else s = /* @__PURE__ */ new Map();
		let c = r.getInternalProto(e);
		switch (c) {
			case r.buffer: return (!1)?.from(e);
			case r.date: return new Date(e.getTime());
			case r.regex:
			case r.url: return new c.constructor(e);
		}
		let l = a.base(e, c, t);
		if (l === e) return e;
		if (s && s.set(e, l), c === r.set) for (let n of e) l.add(o(n, t, s));
		else if (c === r.map) for (let [n, r] of e) l.set(n, o(r, t, s));
		let u = i.keys(e, t);
		for (let n of u) {
			if (n === "__proto__") continue;
			if (c === r.array && n === "length") {
				l.length = e.length;
				continue;
			}
			if (a.structuredCloneExists && c === r.error && n === "stack") continue;
			let i = Object.getOwnPropertyDescriptor(e, n);
			i ? i.get || i.set ? Object.defineProperty(l, n, i) : i.enumerable ? l[n] = o(e[n], t, s) : Object.defineProperty(l, n, {
				enumerable: !1,
				writable: !0,
				configurable: !0,
				value: o(e[n], t, s)
			}) : Object.defineProperty(l, n, {
				enumerable: !0,
				writable: !0,
				configurable: !0,
				value: o(e[n], t, s)
			});
		}
		return l;
	}, a.cloneWithShallow = function(e, t) {
		let r = t.shallow;
		t = Object.assign({}, t), t.shallow = !1;
		let i = /* @__PURE__ */ new Map();
		for (let t of r) {
			let r = n(e, t);
			(typeof r == "object" || typeof r == "function") && i.set(r, r);
		}
		return a.clone(e, t, i);
	}, a.base = function(e, t, n) {
		if (n.prototype === !1) return a.needsProtoHack.has(t) ? new t.constructor() : t === r.array ? [] : {};
		let i = Object.getPrototypeOf(e);
		if (i && i.isImmutable) return e;
		if (t === r.array) {
			let e = [];
			return i !== t && Object.setPrototypeOf(e, i), e;
		} else if (t === r.error && a.structuredCloneExists && (i === t || Error.isPrototypeOf(i.constructor))) {
			let t = structuredClone(e);
			return Object.getPrototypeOf(t) !== i && Object.setPrototypeOf(t, i), t;
		}
		if (a.needsProtoHack.has(t)) {
			let e = new i.constructor();
			return i !== t && Object.setPrototypeOf(e, i), e;
		}
		return Object.create(i);
	};
})), y = /* @__PURE__ */ s(((e, t) => {
	var n = m(), r = v(), i = _(), a = {};
	t.exports = a.merge = function(e, t, o) {
		if (n(e && typeof e == "object", "Invalid target value: must be an object"), n(t == null || typeof t == "object", "Invalid source value: must be null, undefined, or an object"), !t) return e;
		if (o = Object.assign({
			nullOverride: !0,
			mergeArrays: !0
		}, o), Array.isArray(t)) {
			n(Array.isArray(e), "Cannot merge array onto an object"), o.mergeArrays || (e.length = 0);
			for (let n = 0; n < t.length; ++n) e.push(r(t[n], { symbols: o.symbols }));
			return e;
		}
		let s = i.keys(t, o);
		for (let n = 0; n < s.length; ++n) {
			let i = s[n];
			if (i === "__proto__" || !Object.prototype.propertyIsEnumerable.call(t, i)) continue;
			let c = t[i];
			if (c && typeof c == "object") {
				if (e[i] === c) continue;
				!e[i] || typeof e[i] != "object" || Array.isArray(e[i]) !== Array.isArray(c) || c instanceof Date || c instanceof RegExp ? e[i] = r(c, { symbols: o.symbols }) : a.merge(e[i], c, o);
			} else c == null ? o.nullOverride && (e[i] = c) : e[i] = c;
		}
		return e;
	};
})), b = /* @__PURE__ */ s(((e, t) => {
	var n = m(), r = v(), i = y(), a = h(), o = {};
	t.exports = function(e, t, a = {}) {
		if (n(e && typeof e == "object", "Invalid defaults value: must be an object"), n(!t || t === !0 || typeof t == "object", "Invalid source value: must be true, falsy or an object"), n(typeof a == "object", "Invalid options: must be an object"), !t) return null;
		if (a.shallow) return o.applyToDefaultsWithShallow(e, t, a);
		let s = r(e);
		return t === !0 ? s : i(s, t, {
			nullOverride: a.nullOverride === void 0 ? !1 : a.nullOverride,
			mergeArrays: !1
		});
	}, o.applyToDefaultsWithShallow = function(e, t, s) {
		let c = s.shallow;
		n(Array.isArray(c), "Invalid keys");
		let l = /* @__PURE__ */ new Map(), u = t === !0 ? null : /* @__PURE__ */ new Set();
		for (let n of c) {
			n = Array.isArray(n) ? n : n.split(".");
			let r = a(e, n);
			r && typeof r == "object" ? l.set(r, u && a(t, n) || r) : u && u.add(n);
		}
		let d = r(e, {}, l);
		if (!u) return d;
		for (let e of u) o.reachCopy(d, t, e);
		return i(d, t, {
			nullOverride: s.nullOverride === void 0 ? !1 : s.nullOverride,
			mergeArrays: !1
		});
	}, o.reachCopy = function(e, t, n) {
		for (let e of n) {
			if (!(e in t)) return;
			let n = t[e];
			if (typeof n != "object" || !n) return;
			t = n;
		}
		let r = t, i = e;
		for (let e = 0; e < n.length - 1; ++e) {
			let t = n[e];
			typeof i[t] != "object" && (i[t] = {}), i = i[t];
		}
		i[n[n.length - 1]] = r;
	};
})), x = /* @__PURE__ */ s(((e, t) => {
	t.exports = {};
})), S = /* @__PURE__ */ s(((e, t) => {
	var n = g(), r = { mismatched: null };
	t.exports = function(e, t, n) {
		return n = Object.assign({ prototype: !0 }, n), !!r.isDeepEqual(e, t, n, []);
	}, r.isDeepEqual = function(e, t, i, a) {
		if (e === t) return e !== 0 || 1 / e == 1 / t;
		let o = typeof e;
		if (o !== typeof t || e === null || t === null) return !1;
		if (o === "function") {
			if (!i.deepFunction || e.toString() !== t.toString()) return !1;
		} else if (o !== "object") return e !== e && t !== t;
		let s = r.getSharedType(e, t, !!i.prototype);
		switch (s) {
			case n.buffer: return !1;
			case n.promise: return e === t;
			case n.regex:
			case n.url: return e.toString() === t.toString();
			case r.mismatched: return !1;
		}
		for (let n = a.length - 1; n >= 0; --n) if (a[n].isSame(e, t)) return !0;
		a.push(new r.SeenEntry(e, t));
		try {
			return !!r.isDeepEqualObj(s, e, t, i, a);
		} finally {
			a.pop();
		}
	}, r.getSharedType = function(e, t, i) {
		if (i) return Object.getPrototypeOf(e) === Object.getPrototypeOf(t) ? n.getInternalProto(e) : r.mismatched;
		let a = n.getInternalProto(e);
		return a === n.getInternalProto(t) ? a : r.mismatched;
	}, r.valueOf = function(e) {
		let t = e.valueOf;
		if (t === void 0) return e;
		try {
			return t.call(e);
		} catch (e) {
			return e;
		}
	}, r.hasOwnEnumerableProperty = function(e, t) {
		return Object.prototype.propertyIsEnumerable.call(e, t);
	}, r.isSetSimpleEqual = function(e, t) {
		for (let n of Set.prototype.values.call(e)) if (!Set.prototype.has.call(t, n)) return !1;
		return !0;
	}, r.isDeepEqualObj = function(e, t, i, a, o) {
		let { isDeepEqual: s, valueOf: c, hasOwnEnumerableProperty: l } = r, { keys: u, getOwnPropertySymbols: d } = Object;
		if (e === n.array) if (a.part) {
			for (let e of t) for (let t of i) if (s(e, t, a, o)) return !0;
		} else {
			if (t.length !== i.length) return !1;
			for (let e = 0; e < t.length; ++e) if (!s(t[e], i[e], a, o)) return !1;
			return !0;
		}
		else if (e === n.set) {
			if (t.size !== i.size) return !1;
			if (!r.isSetSimpleEqual(t, i)) {
				let e = new Set(Set.prototype.values.call(i));
				for (let n of Set.prototype.values.call(t)) {
					if (e.delete(n)) continue;
					let t = !1;
					for (let r of e) if (s(n, r, a, o)) {
						e.delete(r), t = !0;
						break;
					}
					if (!t) return !1;
				}
			}
		} else if (e === n.map) {
			if (t.size !== i.size) return !1;
			for (let [e, n] of Map.prototype.entries.call(t)) if (n === void 0 && !Map.prototype.has.call(i, e) || !s(n, Map.prototype.get.call(i, e), a, o)) return !1;
		} else if (e === n.error && (t.name !== i.name || t.message !== i.message)) return !1;
		let f = c(t), p = c(i);
		if ((t !== f || i !== p) && !s(f, p, a, o)) return !1;
		let m = u(t);
		if (!a.part && m.length !== u(i).length && !a.skip) return !1;
		let h = 0;
		for (let e of m) {
			if (a.skip && a.skip.includes(e)) {
				i[e] === void 0 && ++h;
				continue;
			}
			if (!l(i, e) || !s(t[e], i[e], a, o)) return !1;
		}
		if (!a.part && m.length - h !== u(i).length) return !1;
		if (a.symbols !== !1) {
			let e = d(t), n = new Set(d(i));
			for (let r of e) {
				if (!a.skip?.includes(r)) {
					if (l(t, r)) {
						if (!l(i, r) || !s(t[r], i[r], a, o)) return !1;
					} else if (l(i, r)) return !1;
				}
				n.delete(r);
			}
			for (let e of n) if (l(i, e)) return !1;
		}
		return !0;
	}, r.SeenEntry = class {
		constructor(e, t) {
			this.obj = e, this.ref = t;
		}
		isSame(e, t) {
			return this.obj === e && this.ref === t;
		}
	};
})), C = /* @__PURE__ */ s(((e, t) => {
	var n = {};
	t.exports = function(e) {
		if (!e) return "";
		let t = "";
		for (let r = 0; r < e.length; ++r) {
			let i = e.charCodeAt(r);
			n.isSafe(i) ? t += e[r] : t += n.escapeHtmlChar(i);
		}
		return t;
	}, n.escapeHtmlChar = function(e) {
		return n.namedHtml.get(e) || (e >= 256 ? "&#" + e + ";" : `&#x${e.toString(16).padStart(2, "0")};`);
	}, n.isSafe = function(e) {
		return n.safeCharCodes.has(e);
	}, n.namedHtml = new Map([
		[38, "&amp;"],
		[60, "&lt;"],
		[62, "&gt;"],
		[34, "&quot;"],
		[160, "&nbsp;"],
		[162, "&cent;"],
		[163, "&pound;"],
		[164, "&curren;"],
		[169, "&copy;"],
		[174, "&reg;"]
	]), n.safeCharCodes = function() {
		let e = /* @__PURE__ */ new Set();
		for (let t = 32; t < 123; ++t) (t >= 97 || t >= 65 && t <= 90 || t >= 48 && t <= 57 || t === 32 || t === 46 || t === 44 || t === 45 || t === 58 || t === 95) && e.add(t);
		return e;
	}();
})), w = /* @__PURE__ */ s(((e, t) => {
	t.exports = function(e) {
		return e.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, "\\$&");
	};
})), T = /* @__PURE__ */ s(((e, t) => {
	t.exports = function() {};
})), E = /* @__PURE__ */ s(((e) => {
	e.applyToDefaults = b(), e.assert = m(), e.AssertError = f(), e.Bench = x(), e.block = x(), e.clone = v(), e.contain = x(), e.deepEqual = S(), e.escapeHeaderAttribute = x(), e.escapeHtml = C(), e.escapeJson = x(), e.escapeRegex = w(), e.flatten = x(), e.ignore = T(), e.intersect = x(), e.isPromise = x(), e.merge = y(), e.once = x(), e.reach = h(), e.reachTemplate = x(), e.stringify = p(), e.wait = x();
})), D = /* @__PURE__ */ c({
	default: () => k,
	version: () => O
}), O, k, ee = o((() => {
	O = "18.2.1", k = { version: "18.2.1" };
})), te = /* @__PURE__ */ s(((e) => {
	var t = $(), n = {};
	n.wrap = t.string().min(1).max(2).allow(!1), e.preferences = t.object({
		allowUnknown: t.boolean(),
		abortEarly: t.boolean(),
		artifacts: t.boolean(),
		cache: t.boolean(),
		context: t.object(),
		convert: t.boolean(),
		dateFormat: t.valid("date", "iso", "string", "time", "utc"),
		debug: t.boolean(),
		errors: {
			escapeHtml: t.boolean(),
			label: t.valid("path", "key", !1),
			language: [t.string(), t.object().ref()],
			render: t.boolean(),
			stack: t.boolean(),
			wrap: {
				label: n.wrap,
				array: n.wrap,
				string: n.wrap
			}
		},
		externals: t.boolean(),
		messages: t.object(),
		noDefaults: t.boolean(),
		nonEnumerables: t.boolean(),
		presence: t.valid("required", "optional", "forbidden"),
		skipFunctions: t.boolean(),
		stripUnknown: t.object({
			arrays: t.boolean(),
			objects: t.boolean()
		}).or("arrays", "objects").allow(!0, !1),
		warnings: t.boolean()
	}).strict(), n.nameRx = /^[a-zA-Z0-9]\w*$/, n.rule = t.object({
		alias: t.array().items(t.string().pattern(n.nameRx)).single(),
		args: t.array().items(t.string(), t.object({
			name: t.string().pattern(n.nameRx).required(),
			ref: t.boolean(),
			assert: t.alternatives([t.function(), t.object().schema()]).conditional("ref", {
				is: !0,
				then: t.required()
			}),
			normalize: t.function(),
			message: t.string().when("assert", {
				is: t.function(),
				then: t.required()
			})
		})),
		convert: t.boolean(),
		manifest: t.boolean(),
		method: t.function().allow(!1),
		multi: t.boolean(),
		validate: t.function(),
		jsonSchema: t.function()
	}), e.extension = t.object({
		type: t.alternatives([t.string(), t.object().regex()]).required(),
		args: t.function(),
		cast: t.object().pattern(n.nameRx, t.object({
			from: t.function().maxArity(1).required(),
			to: t.function().minArity(1).maxArity(2).required()
		})),
		base: t.object().schema().when("type", {
			is: t.object().regex(),
			then: t.forbidden()
		}),
		coerce: [t.function().maxArity(3), t.object({
			method: t.function().maxArity(3).required(),
			from: t.array().items(t.string()).single()
		})],
		flags: t.object().pattern(n.nameRx, t.object({
			setter: t.string(),
			default: t.any()
		})),
		manifest: { build: t.function().arity(2) },
		messages: [t.object(), t.string()],
		modifiers: t.object().pattern(n.nameRx, t.function().minArity(1).maxArity(2)),
		overrides: t.object().pattern(n.nameRx, t.function()),
		prepare: t.function().maxArity(3),
		rebuild: t.function().arity(1),
		rules: t.object().pattern(n.nameRx, n.rule),
		jsonSchema: t.function(),
		terms: t.object().pattern(n.nameRx, t.object({
			init: t.array().allow(null).required(),
			manifest: t.object().pattern(/.+/, [t.valid("schema", "single"), t.object({ mapped: t.object({
				from: t.string().required(),
				to: t.string().required()
			}).required() })])
		})),
		validate: t.function().maxArity(3)
	}).strict(), e.extensions = t.array().items(t.object(), t.function().arity(1)).strict(), n.desc = {
		buffer: t.object({ buffer: t.string() }),
		func: t.object({
			function: t.function().required(),
			options: { literal: !0 }
		}),
		override: t.object({ override: !0 }),
		ref: t.object({ ref: t.object({
			type: t.valid("value", "global", "local"),
			path: t.array().required(),
			separator: t.string().length(1).allow(!1),
			ancestor: t.number().min(0).integer().allow("root"),
			map: t.array().items(t.array().length(2)).min(1),
			adjust: t.function(),
			iterables: t.boolean(),
			in: t.boolean(),
			render: t.boolean()
		}).required() }),
		regex: t.object({ regex: t.string().min(3) }),
		special: t.object({ special: t.valid("deep").required() }),
		template: t.object({
			template: t.string().required(),
			options: t.object()
		}),
		value: t.object({ value: t.alternatives([t.object(), t.array()]).required() })
	}, n.desc.entity = t.alternatives([
		t.array().items(t.link("...")),
		t.boolean(),
		t.function(),
		t.number(),
		t.string(),
		n.desc.buffer,
		n.desc.func,
		n.desc.ref,
		n.desc.regex,
		n.desc.special,
		n.desc.template,
		n.desc.value,
		t.link("/")
	]), n.desc.values = t.array().items(null, t.boolean(), t.function(), t.number().allow(Infinity, -Infinity, NaN), t.string().allow(""), t.symbol(), n.desc.buffer, n.desc.func, n.desc.override, n.desc.ref, n.desc.regex, n.desc.template, n.desc.value), n.desc.messages = t.object().pattern(/.+/, [
		t.string(),
		n.desc.template,
		t.object().pattern(/.+/, [t.string(), n.desc.template])
	]), e.description = t.object({
		type: t.string().required(),
		flags: t.object({
			cast: t.string(),
			default: t.any(),
			description: t.string(),
			empty: t.link("/"),
			failover: n.desc.entity,
			id: t.string(),
			label: t.string(),
			only: !0,
			presence: [
				"optional",
				"required",
				"forbidden"
			],
			result: ["raw", "strip"],
			strip: t.boolean(),
			unit: t.string()
		}).unknown(),
		preferences: {
			allowUnknown: t.boolean(),
			abortEarly: t.boolean(),
			artifacts: t.boolean(),
			cache: t.boolean(),
			convert: t.boolean(),
			dateFormat: [
				"date",
				"iso",
				"string",
				"time",
				"utc"
			],
			errors: {
				escapeHtml: t.boolean(),
				label: ["path", "key"],
				language: [t.string(), n.desc.ref],
				wrap: {
					label: n.wrap,
					array: n.wrap
				}
			},
			externals: t.boolean(),
			messages: n.desc.messages,
			noDefaults: t.boolean(),
			nonEnumerables: t.boolean(),
			presence: [
				"required",
				"optional",
				"forbidden"
			],
			skipFunctions: t.boolean(),
			stripUnknown: t.object({
				arrays: t.boolean(),
				objects: t.boolean()
			}).or("arrays", "objects").allow(!0, !1),
			warnings: t.boolean()
		},
		allow: n.desc.values,
		invalid: n.desc.values,
		rules: t.array().min(1).items({
			name: t.string().required(),
			args: t.object().min(1),
			keep: t.boolean(),
			message: [t.string(), n.desc.messages],
			warn: t.boolean()
		}),
		keys: t.object().pattern(/.*/, t.link("/")),
		link: n.desc.ref
	}).pattern(/^[a-z]\w*$/, t.any());
})), ne = /* @__PURE__ */ s(((e) => {
	var t = {
		operators: [
			"!",
			"^",
			"*",
			"/",
			"%",
			"+",
			"-",
			"<",
			"<=",
			">",
			">=",
			"==",
			"!=",
			"&&",
			"||",
			"??"
		],
		operatorCharacters: [
			"!",
			"^",
			"*",
			"/",
			"%",
			"+",
			"-",
			"<",
			"=",
			">",
			"&",
			"|",
			"?"
		],
		operatorsOrder: [
			["^"],
			[
				"*",
				"/",
				"%"
			],
			["+", "-"],
			[
				"<",
				"<=",
				">",
				">="
			],
			["==", "!="],
			["&&"],
			["||", "??"]
		],
		operatorsPrefix: ["!", "n"],
		literals: {
			"\"": "\"",
			"`": "`",
			"'": "'",
			"[": "]"
		},
		numberRx: /^(?:[0-9]*(\.[0-9]*)?){1}$/,
		tokenRx: /^[\w\$\#\.\@\:\{\}]+$/,
		symbol: Symbol("formula"),
		settings: Symbol("settings")
	};
	e.Parser = class {
		constructor(e, n = {}) {
			if (!n[t.settings] && n.constants) for (let e in n.constants) {
				let t = n.constants[e];
				if (t !== null && ![
					"boolean",
					"number",
					"string"
				].includes(typeof t)) throw Error(`Formula constant ${e} contains invalid ${typeof t} value type`);
			}
			this.settings = n[t.settings] ? n : Object.assign({
				[t.settings]: !0,
				constants: {},
				functions: {}
			}, n), this.single = null, this._parts = null, this._parse(e);
		}
		_parse(n) {
			let r = [], i = "", a = 0, o = !1, s = (n) => {
				if (a) throw Error("Formula missing closing parenthesis");
				let s = r.length ? r[r.length - 1] : null;
				if (!(!o && !i && !n)) {
					if (s && s.type === "reference" && n === ")") {
						s.type = "function", s.value = this._subFormula(i, s.value), i = "";
						return;
					}
					if (n === ")") {
						let t = new e.Parser(i, this.settings);
						r.push({
							type: "segment",
							value: t
						});
					} else if (o) {
						if (o === "]") {
							r.push({
								type: "reference",
								value: i
							}), i = "";
							return;
						}
						r.push({
							type: "literal",
							value: i
						});
					} else if (t.operatorCharacters.includes(i)) s && s.type === "operator" && t.operators.includes(s.value + i) ? s.value += i : r.push({
						type: "operator",
						value: i
					});
					else if (i.match(t.numberRx)) r.push({
						type: "constant",
						value: parseFloat(i)
					});
					else if (this.settings.constants[i] !== void 0) r.push({
						type: "constant",
						value: this.settings.constants[i]
					});
					else {
						if (!i.match(t.tokenRx)) throw Error(`Formula contains invalid token: ${i}`);
						r.push({
							type: "reference",
							value: i
						});
					}
					i = "";
				}
			};
			for (let e of n) o ? e === o ? (s(), o = !1) : i += e : a ? e === "(" ? (i += e, ++a) : e === ")" ? (--a, a ? i += e : s(e)) : i += e : e in t.literals ? o = t.literals[e] : e === "(" ? (s(), ++a) : t.operatorCharacters.includes(e) ? (s(), i = e, s()) : e === " " ? s() : i += e;
			s(), r = r.map((e, t) => e.type !== "operator" || e.value !== "-" || t && r[t - 1].type !== "operator" ? e : {
				type: "operator",
				value: "n"
			});
			let c = !1;
			for (let e of r) {
				if (e.type === "operator") {
					if (t.operatorsPrefix.includes(e.value)) continue;
					if (!c) throw Error("Formula contains an operator in invalid position");
					if (!t.operators.includes(e.value)) throw Error(`Formula contains an unknown operator ${e.value}`);
				} else if (c) throw Error("Formula missing expected operator");
				c = !c;
			}
			if (!c) throw Error("Formula contains invalid trailing operator");
			r.length === 1 && [
				"reference",
				"literal",
				"constant"
			].includes(r[0].type) && (this.single = {
				type: r[0].type === "reference" ? "reference" : "value",
				value: r[0].value
			}), this._parts = r.map((e) => {
				if (e.type === "operator") return t.operatorsPrefix.includes(e.value) ? e : e.value;
				if (e.type !== "reference") return e.value;
				if (this.settings.tokenRx && !this.settings.tokenRx.test(e.value)) throw Error(`Formula contains invalid reference ${e.value}`);
				return this.settings.reference ? this.settings.reference(e.value) : t.reference(e.value);
			});
		}
		_subFormula(n, r) {
			let i = this.settings.functions[r];
			if (typeof i != "function") throw Error(`Formula contains unknown function ${r}`);
			let a = [];
			if (n) {
				let e = "", i = 0, o = !1, s = () => {
					if (!e) throw Error(`Formula contains function ${r} with invalid arguments ${n}`);
					a.push(e), e = "";
				};
				for (let r = 0; r < n.length; ++r) {
					let a = n[r];
					o ? (e += a, a === o && (o = !1)) : a in t.literals && !i ? (e += a, o = t.literals[a]) : a === "," && !i ? s() : (e += a, a === "(" ? ++i : a === ")" && --i);
				}
				s();
			}
			return a = a.map((t) => new e.Parser(t, this.settings)), function(e) {
				let t = [];
				for (let n of a) t.push(n.evaluate(e));
				return i.call(e, ...t);
			};
		}
		evaluate(e) {
			let n = this._parts.slice();
			for (let r = n.length - 2; r >= 0; --r) {
				let i = n[r];
				if (i && i.type === "operator") {
					let a = n[r + 1];
					n.splice(r + 1, 1);
					let o = t.evaluate(a, e);
					n[r] = t.single(i.value, o);
				}
			}
			return t.operatorsOrder.forEach((r) => {
				for (let i = 1; i < n.length - 1;) if (r.includes(n[i])) {
					let r = n[i], a = t.evaluate(n[i - 1], e), o = t.evaluate(n[i + 1], e);
					n.splice(i, 2);
					let s = t.calculate(r, a, o);
					n[i - 1] = s === 0 ? 0 : s;
				} else i += 2;
			}), t.evaluate(n[0], e);
		}
	}, e.Parser.prototype[t.symbol] = !0, t.reference = function(e) {
		return function(t) {
			return t && t[e] !== void 0 ? t[e] : null;
		};
	}, t.evaluate = function(e, n) {
		return e === null ? null : typeof e == "function" ? e(n) : e[t.symbol] ? e.evaluate(n) : e;
	}, t.single = function(e, t) {
		if (e === "!") return !t;
		let n = -t;
		return n === 0 ? 0 : n;
	}, t.calculate = function(e, n, r) {
		if (e === "??") return t.exists(n) ? n : r;
		if (typeof n == "string" || typeof r == "string") {
			if (e === "+") return n = t.exists(n) ? n : "", r = t.exists(r) ? r : "", n + r;
		} else switch (e) {
			case "^": return n ** +r;
			case "*": return n * r;
			case "/": return n / r;
			case "%": return n % r;
			case "+": return n + r;
			case "-": return n - r;
		}
		switch (e) {
			case "<": return n < r;
			case "<=": return n <= r;
			case ">": return n > r;
			case ">=": return n >= r;
			case "==": return n === r;
			case "!=": return n !== r;
			case "&&": return n && r;
			case "||": return n || r;
		}
		return null;
	}, t.exists = function(e) {
		return e != null;
	};
})), A = /* @__PURE__ */ s(((e) => {
	var t = x(), n = P(), r = M();
	e.Report = class {
		constructor(t, n, r, i, a, o, s) {
			if (this.code = t, this.flags = i, this.messages = a, this.path = o.path, this.prefs = s, this.state = o, this.value = n, this.message = null, this.template = null, this.local = r || {}, this.local.label = e.label(this.flags, this.state, this.prefs, this.messages), this.value !== void 0 && !this.local.hasOwnProperty("value") && (this.local.value = this.value), this.path.length) {
				let e = this.path[this.path.length - 1];
				typeof e != "object" && (this.local.key = e);
			}
		}
		_setTemplate(e) {
			if (this.template = e, !this.flags.label && this.path.length === 0) {
				let e = this._template(this.template, "root");
				e && (this.local.label = e);
			}
		}
		toString() {
			if (this.message) return this.message;
			let e = this.code;
			if (!this.prefs.errors.render) return this.code;
			let t = this._template(this.template) || this._template(this.prefs.messages) || this._template(this.messages);
			return t === void 0 ? `Error code "${e}" is not defined, your custom type is missing the correct messages definition` : (this.message = t.render(this.value, this.state, this.prefs, this.local, {
				errors: this.prefs.errors,
				messages: [this.prefs.messages, this.messages]
			}), this.prefs.errors.label || (this.message = this.message.replace(/^"" /, "").trim()), this.message);
		}
		_template(t, n) {
			return e.template(this.value, t, n || this.code, this.state, this.prefs);
		}
	}, e.path = function(e) {
		let t = "";
		for (let n of e) typeof n != "object" && (typeof n == "string" ? (t && (t += "."), t += n) : t += `[${n}]`);
		return t;
	}, e.template = function(e, t, i, a, o) {
		if (!t) return;
		if (r.isTemplate(t)) return i === "root" ? null : t;
		let s = o.errors.language;
		if (n.isResolvable(s) && (s = s.resolve(e, a, o)), s && t[s]) {
			if (t[s][i] !== void 0) return t[s][i];
			if (t[s]["*"] !== void 0) return t[s]["*"];
		}
		return t[i] ? t[i] : t["*"];
	}, e.label = function(t, n, r, i) {
		if (!r.errors.label) return "";
		if (t.label) return t.label;
		let a = n.path;
		return r.errors.label === "key" && n.path.length > 1 && (a = n.path.slice(-1)), e.path(a) || e.template(null, r.messages, "root", n, r) || i && e.template(null, i, "root", n, r) || "value";
	}, e.process = function(t, n, r) {
		if (!t) return null;
		let { override: i, message: a, details: o } = e.details(t);
		if (i) return i;
		if (r.errors.stack) return new e.ValidationError(a, o, n);
		let s = Error.stackTraceLimit;
		Error.stackTraceLimit = 0;
		let c = new e.ValidationError(a, o, n);
		return Error.stackTraceLimit = s, c;
	}, e.details = function(e, t = {}) {
		let n = [], r = [];
		for (let i of e) {
			if (i instanceof Error) {
				if (t.override !== !1) return { override: i };
				let e = i.toString();
				n.push(e), r.push({
					message: e,
					type: "override",
					context: { error: i }
				});
				continue;
			}
			let e = i.toString();
			n.push(e), r.push({
				message: e,
				path: i.path.filter((e) => typeof e != "object"),
				type: i.code,
				context: i.local
			});
		}
		return n.length > 1 && (n = [...new Set(n)]), {
			message: n.join(". "),
			details: r
		};
	}, e.ValidationError = class extends Error {
		constructor(e, t, n) {
			super(e), this._original = n, this.details = t;
		}
		static isError(t) {
			return t instanceof e.ValidationError;
		}
	}, e.ValidationError.prototype.isJoi = !0, e.ValidationError.prototype.name = "ValidationError", e.ValidationError.prototype.annotate = t.error;
})), j = /* @__PURE__ */ s(((e) => {
	var { assert: t, clone: n, reach: r } = E(), i = P(), a, o = {
		symbol: Symbol("ref"),
		defaults: {
			adjust: null,
			in: !1,
			iterables: null,
			map: null,
			separator: ".",
			type: "value"
		}
	};
	e.create = function(e, n = {}) {
		t(typeof e == "string", "Invalid reference key:", e), i.assertOptions(n, [
			"adjust",
			"ancestor",
			"in",
			"iterables",
			"map",
			"prefix",
			"render",
			"separator"
		]), t(!n.prefix || typeof n.prefix == "object", "options.prefix must be of type object");
		let r = Object.assign({}, o.defaults, n);
		delete r.prefix;
		let a = r.separator, s = o.context(e, a, n.prefix);
		if (r.type = s.type, e = s.key, r.type === "value") if (s.root && (t(!a || e[0] !== a, "Cannot specify relative path with root prefix"), r.ancestor = "root", e ||= null), a && a === e) e = null, r.ancestor = 0;
		else if (r.ancestor !== void 0) t(!a || !e || e[0] !== a, "Cannot combine prefix with ancestor option");
		else {
			let [t, n] = o.ancestor(e, a);
			n && (e = e.slice(n), e === "" && (e = null)), r.ancestor = t;
		}
		return r.path = a ? e === null ? [] : e.split(a) : [e], new o.Ref(r);
	}, e.in = function(t, n = {}) {
		return e.create(t, {
			...n,
			in: !0
		});
	}, e.isRef = function(e) {
		return e ? !!e[i.symbols.ref] : !1;
	}, o.Ref = class {
		constructor(e) {
			t(typeof e == "object", "Invalid reference construction"), i.assertOptions(e, [
				"adjust",
				"ancestor",
				"in",
				"iterables",
				"map",
				"path",
				"render",
				"separator",
				"type",
				"depth",
				"key",
				"root",
				"display"
			]), t([!1, void 0].includes(e.separator) || typeof e.separator == "string" && e.separator.length === 1, "Invalid separator"), t(!e.adjust || typeof e.adjust == "function", "options.adjust must be a function"), t(!e.map || Array.isArray(e.map), "options.map must be an array"), t(!e.map || !e.adjust, "Cannot set both map and adjust options"), Object.assign(this, o.defaults, e), t(this.type === "value" || this.ancestor === void 0, "Non-value references cannot reference ancestors"), Array.isArray(this.map) && (this.map = new Map(this.map)), this.depth = this.path.length, this.key = this.path.length ? this.path.join(this.separator) : null, this.root = this.path[0], this.updateDisplay();
		}
		resolve(e, n, r, i, a = {}) {
			return t(!this.in || a.in, "Invalid in() reference usage"), this.type === "global" ? this._resolve(r.context, n, a) : this.type === "local" ? this._resolve(i, n, a) : this.ancestor ? this.ancestor === "root" ? this._resolve(n.ancestors[n.ancestors.length - 1], n, a) : (t(this.ancestor <= n.ancestors.length, "Invalid reference exceeds the schema root:", this.display), this._resolve(n.ancestors[this.ancestor - 1], n, a)) : this._resolve(e, n, a);
		}
		_resolve(e, t, n) {
			let i;
			if (this.type === "value" && t.mainstay.shadow && n.shadow !== !1 && (i = t.mainstay.shadow.get(this.absolute(t))), i === void 0 && (i = r(e, this.path, {
				iterables: this.iterables,
				functions: !0
			})), this.adjust && (i = this.adjust(i)), this.map) {
				let e = this.map.get(i);
				e !== void 0 && (i = e);
			}
			return t.mainstay && t.mainstay.tracer.resolve(t, this, i), i;
		}
		toString() {
			return this.display;
		}
		absolute(e) {
			return [...e.path.slice(0, -this.ancestor), ...this.path];
		}
		clone() {
			return new o.Ref(this);
		}
		describe() {
			let e = { path: this.path };
			this.type !== "value" && (e.type = this.type), this.separator !== "." && (e.separator = this.separator), this.type === "value" && this.ancestor !== 1 && (e.ancestor = this.ancestor), this.map && (e.map = [...this.map]);
			for (let t of [
				"adjust",
				"iterables",
				"render"
			]) this[t] !== null && this[t] !== void 0 && (e[t] = this[t]);
			return this.in !== !1 && (e.in = !0), { ref: e };
		}
		updateDisplay() {
			let e = this.key === null ? "" : this.key;
			if (this.type !== "value") {
				this.display = `ref:${this.type}:${e}`;
				return;
			}
			if (!this.separator) {
				this.display = `ref:${e}`;
				return;
			}
			if (!this.ancestor) {
				this.display = `ref:${this.separator}${e}`;
				return;
			}
			if (this.ancestor === "root") {
				this.display = `ref:root:${e}`;
				return;
			}
			if (this.ancestor === 1) {
				this.display = `ref:${e || ".."}`;
				return;
			}
			let t = Array(this.ancestor + 1).fill(this.separator).join("");
			this.display = `ref:${t}${e || ""}`;
		}
	}, o.Ref.prototype[i.symbols.ref] = !0, e.build = function(e) {
		return e = Object.assign({}, o.defaults, e), e.type === "value" && e.ancestor === void 0 && (e.ancestor = 1), new o.Ref(e);
	}, o.context = function(e, t, n = {}) {
		if (e = e.trim(), n) {
			let r = n.global === void 0 ? "$" : n.global;
			if (r !== t && e.startsWith(r)) return {
				key: e.slice(r.length),
				type: "global"
			};
			let i = n.local === void 0 ? "#" : n.local;
			if (i !== t && e.startsWith(i)) return {
				key: e.slice(i.length),
				type: "local"
			};
			let a = n.root === void 0 ? "/" : n.root;
			if (a !== t && e.startsWith(a)) return {
				key: e.slice(a.length),
				type: "value",
				root: !0
			};
		}
		return {
			key: e,
			type: "value"
		};
	}, o.ancestor = function(e, t) {
		if (!t || e[0] !== t) return [1, 0];
		if (e[1] !== t) return [0, 1];
		let n = 2;
		for (; e[n] === t;) ++n;
		return [n - 1, n];
	}, e.toSibling = 0, e.toParent = 1, e.Manager = class {
		constructor() {
			this.refs = [];
		}
		register(t, n) {
			if (t) {
				if (n = n === void 0 ? e.toParent : n, Array.isArray(t)) {
					for (let e of t) this.register(e, n);
					return;
				}
				if (i.isSchema(t)) {
					for (let e of t._refs.refs) e.ancestor - n >= 0 && this.refs.push({
						ancestor: e.ancestor - n,
						root: e.root
					});
					return;
				}
				e.isRef(t) && t.type === "value" && t.ancestor - n >= 0 && this.refs.push({
					ancestor: t.ancestor - n,
					root: t.root
				}), a ||= M(), a.isTemplate(t) && this.register(t.refs(), n);
			}
		}
		get length() {
			return this.refs.length;
		}
		clone() {
			let t = new e.Manager();
			return t.refs = n(this.refs), t;
		}
		reset() {
			this.refs = [];
		}
		roots() {
			return this.refs.filter((e) => !e.ancestor).map((e) => e.root);
		}
	};
})), M = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, clone: r, escapeHtml: i } = E(), a = ne(), o = P(), s = A(), c = j(), l = {
		symbol: Symbol("template"),
		opens: Array(1e3).join("\0"),
		closes: Array(1e3).join(""),
		dateFormat: {
			date: Date.prototype.toDateString,
			iso: Date.prototype.toISOString,
			string: Date.prototype.toString,
			time: Date.prototype.toTimeString,
			utc: Date.prototype.toUTCString
		}
	};
	t.exports = e = l.Template = class {
		constructor(e, t) {
			if (n(typeof e == "string", "Template source must be a string"), n(!e.includes("\0") && !e.includes(""), "Template source cannot contain reserved control characters"), this.source = e, this.rendered = e, this._template = null, t) {
				let { functions: e, ...i } = t;
				this._settings = Object.keys(i).length ? r(i) : void 0, this._functions = e, this._functions && (n(Object.keys(this._functions).every((e) => typeof e == "string"), "Functions keys must be strings"), n(Object.values(this._functions).every((e) => typeof e == "function"), "Functions values must be functions"));
			} else this._settings = void 0, this._functions = void 0;
			this._parse();
		}
		_parse() {
			if (!this.source.includes("{")) return;
			let e = l.encode(this.source), t = l.split(e), n = !1, r = [], i = t.shift();
			i && r.push(l.decode(i));
			for (let e of t) {
				let t = e[0] !== "{", i = t ? "}" : "}}", a = e.indexOf(i);
				if (a === -1 || e[1] === "{") {
					r.push(`{${l.decode(e)}`);
					continue;
				}
				let o = e.slice(+!t, a), s = o[0] === ":";
				s && (o = o.slice(1));
				let c = this._ref(l.decode(o), {
					raw: t,
					wrapped: s
				});
				r.push(c), typeof c != "string" && (n = !0);
				let u = e.slice(a + i.length);
				u && r.push(l.decode(u));
			}
			if (!n) {
				this.rendered = r.join("");
				return;
			}
			this._template = r;
		}
		static date(e, t) {
			return l.dateFormat[t.dateFormat].call(e);
		}
		describe(e = {}) {
			if (!this._settings && e.compact) return this.source;
			let t = { template: this.source };
			return this._settings && (t.options = this._settings), this._functions && (t.functions = this._functions), t;
		}
		static build(e) {
			return new l.Template(e.template, e.options || e.functions ? {
				...e.options,
				functions: e.functions
			} : void 0);
		}
		isDynamic() {
			return !!this._template;
		}
		static isTemplate(e) {
			return e ? !!e[o.symbols.template] : !1;
		}
		refs() {
			if (!this._template) return;
			let e = [];
			for (let t of this._template) typeof t != "string" && e.push(...t.refs);
			return e;
		}
		resolve(e, t, n, r) {
			return this._template && this._template.length === 1 ? this._part(this._template[0], e, t, n, r, {}) : this.render(e, t, n, r);
		}
		_part(e, ...t) {
			return e.ref ? e.ref.resolve(...t) : e.formula.evaluate(t);
		}
		render(e, t, n, r, a = {}) {
			if (!this.isDynamic()) return this.rendered;
			let o = [];
			for (let s of this._template) if (typeof s == "string") o.push(s);
			else {
				let c = this._part(s, e, t, n, r, a), u = l.stringify(c, e, t, n, r, a);
				if (u !== void 0) {
					let e = s.raw || (a.errors && a.errors.escapeHtml) === !1 ? u : i(u);
					o.push(l.wrap(e, s.wrapped && n.errors.wrap.label));
				}
			}
			return o.join("");
		}
		_ref(e, { raw: t, wrapped: n }) {
			let r = [], i = (e) => {
				let t = c.create(e, this._settings);
				return r.push(t), (e) => {
					let n = t.resolve(...e);
					return n === void 0 ? null : n;
				};
			};
			try {
				let t = this._functions ? {
					...l.functions,
					...this._functions
				} : l.functions;
				var o = new a.Parser(e, {
					reference: i,
					functions: t,
					constants: l.constants
				});
			} catch (t) {
				throw t.message = `Invalid template variable "${e}" fails due to: ${t.message}`, t;
			}
			if (o.single) {
				if (o.single.type === "reference") {
					let e = r[0];
					return {
						ref: e,
						raw: t,
						refs: r,
						wrapped: n || e.type === "local" && e.key === "label"
					};
				}
				return l.stringify(o.single.value);
			}
			return {
				formula: o,
				raw: t,
				refs: r
			};
		}
		toString() {
			return this.source;
		}
	}, l.Template.prototype[o.symbols.template] = !0, l.Template.prototype.isImmutable = !0, l.encode = function(e) {
		return e.replace(/\\(\{+)/g, (e, t) => l.opens.slice(0, t.length)).replace(/\\(\}+)/g, (e, t) => l.closes.slice(0, t.length));
	}, l.decode = function(e) {
		return e.replace(/\u0000/g, "{").replace(/\u0001/g, "}");
	}, l.split = function(e) {
		let t = [], n = "";
		for (let r = 0; r < e.length; ++r) {
			let i = e[r];
			if (i === "{") {
				let i = "";
				for (; r + 1 < e.length && e[r + 1] === "{";) i += "{", ++r;
				t.push(n), n = i;
			} else n += i;
		}
		return t.push(n), t;
	}, l.wrap = function(e, t) {
		return t ? t.length === 1 ? `${t}${e}${t}` : `${t[0]}${e}${t[1]}` : e;
	}, l.stringify = function(e, t, n, r, i, a = {}) {
		let o = typeof e, s = r && r.errors && r.errors.wrap || {}, u = !1;
		if (c.isRef(e) && e.render && (u = e.in, e = e.resolve(t, n, r, i, {
			in: e.in,
			...a
		})), e === null) return "null";
		if (o === "string") return l.wrap(e, a.arrayItems && s.string);
		if (o === "number" || o === "function" || o === "symbol") return e.toString();
		if (o !== "object") return JSON.stringify(e);
		if (e instanceof Date) return l.Template.date(e, r);
		if (e instanceof Map) {
			let t = [];
			for (let [n, r] of e.entries()) t.push(`${n.toString()} -> ${r.toString()}`);
			e = t;
		}
		if (!Array.isArray(e)) return e.toString();
		let d = [];
		for (let o of e) d.push(l.stringify(o, t, n, r, i, {
			arrayItems: !0,
			...a
		}));
		return l.wrap(d.join(", "), !u && s.array);
	}, l.constants = {
		true: !0,
		false: !1,
		null: null,
		second: 1e3,
		minute: 60 * 1e3,
		hour: 3600 * 1e3,
		day: 1440 * 60 * 1e3
	}, l.functions = {
		if(e, t, n) {
			return e ? t : n;
		},
		length(e) {
			return typeof e == "string" ? e.length : !e || typeof e != "object" ? null : Array.isArray(e) ? e.length : Object.keys(e).length;
		},
		msg(e) {
			let [t, n, r, i, a] = this, o = a.messages;
			if (!o) return "";
			let c = s.template(t, o[0], e, n, r) || s.template(t, o[1], e, n, r);
			return c ? c.render(t, n, r, i, a) : "";
		},
		number(e) {
			return typeof e == "number" ? e : typeof e == "string" ? parseFloat(e) : typeof e == "boolean" ? +!!e : e instanceof Date ? e.getTime() : null;
		}
	};
})), N = /* @__PURE__ */ s(((e) => {
	var { assert: t, clone: n } = E(), r = M();
	e.compile = function(e, i) {
		if (typeof e == "string") return t(!i, "Cannot set single message string"), new r(e);
		if (r.isTemplate(e)) return t(!i, "Cannot set single message template"), e;
		t(typeof e == "object" && !Array.isArray(e), "Invalid message options"), i = i ? n(i) : {};
		for (let n in e) {
			let a = e[n];
			if (n === "root" || r.isTemplate(a)) {
				i[n] = a;
				continue;
			}
			if (typeof a == "string") {
				i[n] = new r(a);
				continue;
			}
			t(typeof a == "object" && !Array.isArray(a), "Invalid message for", n);
			let o = n;
			for (n in i[o] = i[o] || {}, a) {
				let e = a[n];
				if (n === "root" || r.isTemplate(e)) {
					i[o][n] = e;
					continue;
				}
				t(typeof e == "string", "Invalid message for", n, "in", o), i[o][n] = new r(e);
			}
		}
		return i;
	}, e.decompile = function(e) {
		let t = {};
		for (let n in e) {
			let i = e[n];
			if (n === "root") {
				t.root = i;
				continue;
			}
			if (r.isTemplate(i)) {
				t[n] = i.describe({ compact: !0 });
				continue;
			}
			let a = n;
			for (n in t[a] = {}, i) {
				let e = i[n];
				if (n === "root") {
					t[a].root = e;
					continue;
				}
				t[a][n] = e.describe({ compact: !0 });
			}
		}
		return t;
	}, e.merge = function(i, a) {
		if (!i) return e.compile(a);
		if (!a) return i;
		if (typeof a == "string") return new r(a);
		if (r.isTemplate(a)) return a;
		let o = n(i);
		for (let e in a) {
			let n = a[e];
			if (e === "root" || r.isTemplate(n)) {
				o[e] = n;
				continue;
			}
			if (typeof n == "string") {
				o[e] = new r(n);
				continue;
			}
			t(typeof n == "object" && !Array.isArray(n), "Invalid message for", e);
			let i = e;
			for (e in o[i] = o[i] || {}, n) {
				let a = n[e];
				if (e === "root" || r.isTemplate(a)) {
					o[i][e] = a;
					continue;
				}
				t(typeof a == "string", "Invalid message for", e, "in", i), o[i][e] = new r(a);
			}
		}
		return o;
	};
})), P = /* @__PURE__ */ s(((e) => {
	var { assert: t, AssertError: n } = E(), r = (ee(), d(D)), i, a, o = { isoDate: /^(?:[-+]\d{2})?(?:\d{4}(?!\d{2}\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\1(?:[12]\d|0[1-9]|3[01]))?|W(?:[0-4]\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[1-6])))(?![T]$|[T][\d]+Z$)(?:[T\s](?:(?:(?:[01]\d|2[0-3])(?:(:?)[0-5]\d)?|24\:?00)(?:[.,]\d+(?!:))?)(?:\2[0-5]\d(?:[.,]\d+)?)?(?:[Z]|(?:[+-])(?:[01]\d|2[0-3])(?::?[0-5]\d)?)?)?)?$/ };
	e.version = r.version, e.defaults = {
		abortEarly: !0,
		allowUnknown: !1,
		artifacts: !1,
		cache: !0,
		context: null,
		convert: !0,
		dateFormat: "iso",
		errors: {
			escapeHtml: !1,
			label: "path",
			language: null,
			render: !0,
			stack: !1,
			wrap: {
				label: "\"",
				array: "[]"
			}
		},
		externals: !0,
		messages: {},
		nonEnumerables: !1,
		noDefaults: !1,
		presence: "optional",
		skipFunctions: !1,
		stripUnknown: !1,
		warnings: !1
	}, e.symbols = {
		any: Symbol.for("@hapi/joi/schema"),
		arraySingle: Symbol("arraySingle"),
		deepDefault: Symbol("deepDefault"),
		errors: Symbol("errors"),
		literal: Symbol("literal"),
		override: Symbol("override"),
		parent: Symbol("parent"),
		prefs: Symbol("prefs"),
		ref: Symbol("ref"),
		template: Symbol("template"),
		values: Symbol("values")
	}, e.assertOptions = function(e, n, r = "Options") {
		t(e && typeof e == "object" && !Array.isArray(e), "Options must be of type object");
		let i = Object.keys(e).filter((e) => !n.includes(e));
		t(i.length === 0, `${r} contain unknown keys: ${i}`);
	}, e.checkPreferences = function(e) {
		a ||= te();
		let t = a.preferences.validate(e);
		if (t.error) throw new n([t.error.details[0].message]);
	}, e.compare = function(e, t, n) {
		switch (n) {
			case "=": return e === t;
			case ">": return e > t;
			case "<": return e < t;
			case ">=": return e >= t;
			case "<=": return e <= t;
		}
	}, e.default = function(e, t) {
		return e === void 0 ? t : e;
	}, e.intersect = function(e, t) {
		if (typeof e.intersection == "function") return e.intersection(t);
		let n = /* @__PURE__ */ new Set();
		for (let r of e) t.has(r) && n.add(r);
		return n;
	}, e.isIsoDate = function(e) {
		return o.isoDate.test(e);
	}, e.isNumber = function(e) {
		return typeof e == "number" && !isNaN(e);
	}, e.isResolvable = function(t) {
		return t ? t[e.symbols.ref] || t[e.symbols.template] : !1;
	}, e.isSchema = function(n, r = {}) {
		let i = n && n[e.symbols.any];
		return i ? (t(r.legacy || i.version === e.version, "Cannot mix different versions of joi schemas"), !0) : !1;
	}, e.isValues = function(t) {
		return t[e.symbols.values];
	}, e.limit = function(e) {
		return Number.isSafeInteger(e) && e >= 0;
	}, e.preferences = function(t, n) {
		i ||= N(), t ||= {}, n ||= {};
		let r = Object.assign({}, t, n);
		return n.errors && t.errors && (r.errors = Object.assign({}, t.errors, n.errors), r.errors.wrap = Object.assign({}, t.errors.wrap, n.errors.wrap)), n.messages && (r.messages = i.compile(n.messages, t.messages)), delete r[e.symbols.prefs], r;
	}, e.tryWithPath = function(e, t, n = {}) {
		try {
			return e();
		} catch (e) {
			throw e.path === void 0 ? e.path = t : e.path = t + "." + e.path, n.append && (e.message = `${e.message} (${e.path})`), e;
		}
	}, e.validateArg = function(t, n, { assert: r, message: i }) {
		if (e.isSchema(r)) {
			let e = r.validate(t);
			return e.error ? e.error.message : void 0;
		} else if (!r(t)) return n ? `${n} ${i}` : i;
	}, e.verifyFlat = function(e, n) {
		for (let r of e) t(!Array.isArray(r), "Method no longer accepts array arguments:", n);
	};
})), F = /* @__PURE__ */ s(((e) => {
	var { assert: t, clone: n } = E(), r = P(), i = {
		max: 1e3,
		supported: new Set([
			"undefined",
			"boolean",
			"number",
			"string"
		])
	};
	e.provider = { provision(e) {
		return new i.Cache(e);
	} }, i.Cache = class {
		constructor(e = {}) {
			r.assertOptions(e, ["max"]), t(e.max === void 0 || e.max && e.max > 0 && isFinite(e.max), "Invalid max cache size"), this._max = e.max || i.max, this._map = /* @__PURE__ */ new Map(), this._list = new i.List();
		}
		get length() {
			return this._map.size;
		}
		set(e, t) {
			if (e !== null && !i.supported.has(typeof e)) return;
			let n = this._map.get(e);
			if (n) {
				n.value = t, this._list.first(n);
				return;
			}
			n = this._list.unshift({
				key: e,
				value: t
			}), this._map.set(e, n), this._compact();
		}
		get(e) {
			let t = this._map.get(e);
			if (t) return this._list.first(t), n(t.value);
		}
		_compact() {
			if (this._map.size > this._max) {
				let e = this._list.pop();
				this._map.delete(e.key);
			}
		}
	}, i.List = class {
		constructor() {
			this.tail = null, this.head = null;
		}
		unshift(e) {
			return e.next = null, e.prev = this.head, this.head && (this.head.next = e), this.head = e, this.tail ||= e, e;
		}
		first(e) {
			e !== this.head && (this._remove(e), this.unshift(e));
		}
		pop() {
			return this._remove(this.tail);
		}
		_remove(e) {
			let { next: t, prev: n } = e;
			return t.prev = n, n && (n.next = t), e === this.tail && (this.tail = t), e.prev = null, e.next = null, e;
		}
	};
})), I = /* @__PURE__ */ s(((e) => {
	var { assert: t } = E(), n = P(), r = j(), i = {};
	e.schema = function(e, t, r = {}) {
		n.assertOptions(r, ["appendPath", "override"]);
		try {
			return i.schema(e, t, r);
		} catch (e) {
			throw r.appendPath && e.path !== void 0 && (e.message = `${e.message} (${e.path})`), e;
		}
	}, i.schema = function(e, r, a) {
		t(r !== void 0, "Invalid undefined schema"), Array.isArray(r) && (t(r.length, "Invalid empty array schema"), r.length === 1 && (r = r[0]));
		let o = (t, ...n) => a.override === !1 ? t.valid(...n) : t.valid(e.override, ...n);
		if (i.simple(r)) return o(e, r);
		if (typeof r == "function") return e.custom(r);
		if (t(typeof r == "object", "Invalid schema content:", typeof r), n.isResolvable(r)) return o(e, r);
		if (n.isSchema(r)) return r;
		if (Array.isArray(r)) {
			for (let t of r) if (!i.simple(t)) return e.alternatives().try(...r);
			return o(e, ...r);
		}
		return r instanceof RegExp ? e.string().regex(r) : r instanceof Date ? o(e.date(), r) : (t(Object.getPrototypeOf(r) === Object.getPrototypeOf({}), "Schema can only contain plain objects"), e.object().keys(r));
	}, e.ref = function(e, t) {
		return r.isRef(e) ? e : r.create(e, t);
	}, e.compile = function(r, a, o = {}) {
		n.assertOptions(o, ["legacy"]);
		let s = a && a[n.symbols.any];
		if (s) return t(o.legacy || s.version === n.version, "Cannot mix different versions of joi schemas:", s.version, n.version), a;
		if (typeof a != "object" || !o.legacy) return e.schema(r, a, { appendPath: !0 });
		let c = i.walk(a);
		return c ? c.compile(c.root, a) : e.schema(r, a, { appendPath: !0 });
	}, i.walk = function(e) {
		if (typeof e != "object") return null;
		if (Array.isArray(e)) {
			for (let t of e) {
				let e = i.walk(t);
				if (e) return e;
			}
			return null;
		}
		let r = e[n.symbols.any];
		if (r) return {
			root: e[r.root],
			compile: r.compile
		};
		t(Object.getPrototypeOf(e) === Object.getPrototypeOf({}), "Schema can only contain plain objects");
		for (let t in e) {
			let n = i.walk(e[t]);
			if (n) return n;
		}
		return null;
	}, i.simple = function(e) {
		return e === null || [
			"boolean",
			"string",
			"number"
		].includes(typeof e);
	}, e.when = function(a, o, s) {
		if (s === void 0 && (t(o && typeof o == "object", "Missing options"), s = o, o = r.create(".")), Array.isArray(s) && (s = { switch: s }), n.assertOptions(s, [
			"is",
			"not",
			"then",
			"otherwise",
			"switch",
			"break"
		]), n.isSchema(o)) return t(s.is === void 0, "\"is\" can not be used with a schema condition"), t(s.not === void 0, "\"not\" can not be used with a schema condition"), t(s.switch === void 0, "\"switch\" can not be used with a schema condition"), i.condition(a, {
			is: o,
			then: s.then,
			otherwise: s.otherwise,
			break: s.break
		});
		if (t(r.isRef(o) || typeof o == "string", "Invalid condition:", o), t(s.not === void 0 || s.is === void 0, "Cannot combine \"is\" with \"not\""), s.switch === void 0) {
			let c = s;
			s.not !== void 0 && (c = {
				is: s.not,
				then: s.otherwise,
				otherwise: s.then,
				break: s.break
			});
			let l = c.is === void 0 ? a.$_root.invalid(null, !1, 0, "").required() : a.$_compile(c.is);
			return t(c.then !== void 0 || c.otherwise !== void 0, "options must have at least one of \"then\", \"otherwise\", or \"switch\""), t(c.break === void 0 || c.then === void 0 || c.otherwise === void 0, "Cannot specify then, otherwise, and break all together"), s.is !== void 0 && !r.isRef(s.is) && !n.isSchema(s.is) && (l = l.required()), i.condition(a, {
				ref: e.ref(o),
				is: l,
				then: c.then,
				otherwise: c.otherwise,
				break: c.break
			});
		}
		t(Array.isArray(s.switch), "\"switch\" must be an array"), t(s.is === void 0, "Cannot combine \"switch\" with \"is\""), t(s.not === void 0, "Cannot combine \"switch\" with \"not\""), t(s.then === void 0, "Cannot combine \"switch\" with \"then\"");
		let c = {
			ref: e.ref(o),
			switch: [],
			break: s.break
		};
		for (let e = 0; e < s.switch.length; ++e) {
			let i = s.switch[e], o = e === s.switch.length - 1;
			n.assertOptions(i, o ? [
				"is",
				"then",
				"otherwise"
			] : ["is", "then"]), t(i.is !== void 0, "Switch statement missing \"is\""), t(i.then !== void 0, "Switch statement missing \"then\"");
			let l = {
				is: a.$_compile(i.is),
				then: a.$_compile(i.then)
			};
			if (!r.isRef(i.is) && !n.isSchema(i.is) && (l.is = l.is.required()), o) {
				t(s.otherwise === void 0 || i.otherwise === void 0, "Cannot specify \"otherwise\" inside and outside a \"switch\"");
				let e = s.otherwise === void 0 ? i.otherwise : s.otherwise;
				e !== void 0 && (t(c.break === void 0, "Cannot specify both otherwise and break"), l.otherwise = a.$_compile(e));
			}
			c.switch.push(l);
		}
		return c;
	}, i.condition = function(e, t) {
		for (let n of ["then", "otherwise"]) t[n] === void 0 ? delete t[n] : t[n] = e.$_compile(t[n]);
		return t;
	};
})), L = /* @__PURE__ */ s(((e) => {
	var { assert: t, clone: n } = E(), r = P(), i = N(), a = {};
	e.type = function(e, o) {
		let s = Object.getPrototypeOf(e), c = n(s), l = e._assign(Object.create(c)), u = Object.assign({}, o);
		delete u.base, c._definition = u;
		let d = s._definition || {};
		u.messages = i.merge(d.messages, u.messages), u.properties = Object.assign({}, d.properties, u.properties), l.type = u.type, u.flags = Object.assign({}, d.flags, u.flags);
		let f = Object.assign({}, d.terms);
		if (u.terms) for (let e in u.terms) {
			let n = u.terms[e];
			t(l.$_terms[e] === void 0, "Invalid term override for", u.type, e), l.$_terms[e] = n.init, f[e] = n;
		}
		u.terms = f, u.args ||= d.args, u.prepare = a.prepare(u.prepare, d.prepare), u.coerce && (typeof u.coerce == "function" && (u.coerce = { method: u.coerce }), u.coerce.from && !Array.isArray(u.coerce.from) && (u.coerce = {
			method: u.coerce.method,
			from: [].concat(u.coerce.from)
		})), u.coerce = a.coerce(u.coerce, d.coerce), u.validate = a.validate(u.validate, d.validate);
		let p = Object.assign({}, d.rules);
		if (u.rules) for (let e in u.rules) {
			let n = u.rules[e];
			t(typeof n == "object", "Invalid rule definition for", u.type, e);
			let i = n.method;
			if (i === void 0 && (i = function() {
				return this.$_addRule(e);
			}), i && (t(!c[e], "Rule conflict in", u.type, e), c[e] = i), t(!p[e], "Rule conflict in", u.type, e), p[e] = n, n.alias) {
				let e = [].concat(n.alias);
				for (let t of e) c[t] = n.method;
			}
			n.args &&= (n.argsByName = /* @__PURE__ */ new Map(), n.args.map((e) => (typeof e == "string" && (e = { name: e }), t(!n.argsByName.has(e.name), "Duplicated argument name", e.name), r.isSchema(e.assert) && (e.assert = e.assert.strict().label(e.name)), n.argsByName.set(e.name, e), e)));
		}
		u.rules = p, u.jsonSchema ||= d.jsonSchema;
		let m = Object.assign({}, d.modifiers);
		if (u.modifiers) for (let e in u.modifiers) {
			t(!c[e], "Rule conflict in", u.type, e);
			let n = u.modifiers[e];
			t(typeof n == "function", "Invalid modifier definition for", u.type, e), c[e] = function(t) {
				return this.rule({ [e]: t });
			}, m[e] = n;
		}
		if (u.modifiers = m, u.overrides) {
			c._super = s, l.$_super = {};
			for (let e in u.overrides) t(s[e], "Cannot override missing", e), u.overrides[e][r.symbols.parent] = s[e], l.$_super[e] = s[e].bind(l);
			Object.assign(c, u.overrides);
		}
		u.cast = Object.assign({}, d.cast, u.cast);
		let h = Object.assign({}, d.manifest, u.manifest);
		return h.build = a.build(u.manifest && u.manifest.build, d.manifest && d.manifest.build), u.manifest = h, u.rebuild = a.rebuild(u.rebuild, d.rebuild), l;
	}, a.build = function(e, t) {
		return !e || !t ? e || t : function(n, r) {
			return t(e(n, r), r);
		};
	}, a.coerce = function(e, t) {
		return !e || !t ? e || t : {
			from: e.from && t.from ? [...new Set([...e.from, ...t.from])] : null,
			method(n, r) {
				let i;
				if ((!t.from || t.from.includes(typeof n)) && (i = t.method(n, r), i)) {
					if (i.errors || i.value === void 0) return i;
					n = i.value;
				}
				if (!e.from || e.from.includes(typeof n)) {
					let t = e.method(n, r);
					if (t) return t;
				}
				return i;
			}
		};
	}, a.prepare = function(e, t) {
		return !e || !t ? e || t : function(n, r) {
			let i = e(n, r);
			if (i) {
				if (i.errors || i.value === void 0) return i;
				n = i.value;
			}
			return t(n, r) || i;
		};
	}, a.rebuild = function(e, t) {
		return !e || !t ? e || t : function(n) {
			t(n), e(n);
		};
	}, a.validate = function(e, t) {
		return !e || !t ? e || t : function(n, r) {
			let i = t(n, r);
			if (i) {
				if (i.errors && (!Array.isArray(i.errors) || i.errors.length)) return i;
				n = i.value;
			}
			return e(n, r) || i;
		};
	};
})), re = /* @__PURE__ */ s(((e) => {
	var { assert: t } = E(), n = P(), r = j(), i = {};
	e.Ids = i.Ids = class {
		constructor() {
			this._byId = /* @__PURE__ */ new Map(), this._byKey = /* @__PURE__ */ new Map(), this._schemaChain = !1;
		}
		clone() {
			let e = new i.Ids();
			return e._byId = new Map(this._byId), e._byKey = new Map(this._byKey), e._schemaChain = this._schemaChain, e;
		}
		concat(e) {
			e._schemaChain && (this._schemaChain = !0);
			for (let [n, r] of e._byId.entries()) t(!this._byKey.has(n), "Schema id conflicts with existing key:", n), this._byId.set(n, r);
			for (let [n, r] of e._byKey.entries()) t(!this._byId.has(n), "Schema key conflicts with existing id:", n), this._byKey.set(n, r);
		}
		fork(e, r, a) {
			let o = this._collect(e);
			o.push({ schema: a });
			let s = o.shift(), c = {
				id: s.id,
				schema: r(s.schema)
			};
			t(n.isSchema(c.schema), "adjuster function failed to return a joi schema type");
			for (let e of o) c = {
				id: e.id,
				schema: i.fork(e.schema, c.id, c.schema)
			};
			return c.schema;
		}
		labels(e, t = []) {
			let n = e[0], r = this._get(n);
			if (!r) return [...t, ...e].join(".");
			let i = e.slice(1);
			return t = [...t, r.schema._flags.label || n], i.length ? r.schema._ids.labels(i, t) : t.join(".");
		}
		reach(e, n = []) {
			let r = e[0], i = this._get(r);
			t(i, "Schema does not contain path", [...n, ...e].join("."));
			let a = e.slice(1);
			return a.length ? i.schema._ids.reach(a, [...n, r]) : i.schema;
		}
		register(e, { key: r } = {}) {
			if (!e || !n.isSchema(e)) return;
			(e.$_property("schemaChain") || e._ids._schemaChain) && (this._schemaChain = !0);
			let i = e._flags.id;
			if (i) {
				let n = this._byId.get(i);
				t(!n || n.schema === e, "Cannot add different schemas with the same id:", i), t(!this._byKey.has(i), "Schema id conflicts with existing key:", i), this._byId.set(i, {
					schema: e,
					id: i
				});
			}
			r && (t(!this._byKey.has(r), "Schema already contains key:", r), t(!this._byId.has(r), "Schema key conflicts with existing id:", r), this._byKey.set(r, {
				schema: e,
				id: r
			}));
		}
		reset() {
			this._byId = /* @__PURE__ */ new Map(), this._byKey = /* @__PURE__ */ new Map(), this._schemaChain = !1;
		}
		_collect(e, n = [], r = []) {
			let i = e[0], a = this._get(i);
			t(a, "Schema does not contain path", [...n, ...e].join(".")), r = [a, ...r];
			let o = e.slice(1);
			return o.length ? a.schema._ids._collect(o, [...n, i], r) : r;
		}
		_get(e) {
			return this._byId.get(e) || this._byKey.get(e);
		}
	}, i.fork = function(t, n, r) {
		let i = e.schema(t, {
			each: (e, { key: t }) => {
				if (n === (e._flags.id || t)) return r;
			},
			ref: !1
		});
		return i ? i.$_mutateRebuild() : t;
	}, e.schema = function(e, t) {
		let n;
		for (let r in e._flags) {
			if (r[0] === "_") continue;
			let a = i.scan(e._flags[r], {
				source: "flags",
				name: r
			}, t);
			a !== void 0 && (n ||= e.clone(), n._flags[r] = a);
		}
		for (let r = 0; r < e._rules.length; ++r) {
			let a = e._rules[r], o = i.scan(a.args, {
				source: "rules",
				name: a.name
			}, t);
			if (o !== void 0) {
				n ||= e.clone();
				let t = Object.assign({}, a);
				t.args = o, n._rules[r] = t, n._singleRules.get(a.name) === a && n._singleRules.set(a.name, t);
			}
		}
		for (let r in e.$_terms) {
			if (r[0] === "_") continue;
			let a = i.scan(e.$_terms[r], {
				source: "terms",
				name: r
			}, t);
			a !== void 0 && (n ||= e.clone(), n.$_terms[r] = a);
		}
		return n;
	}, i.scan = function(e, t, a, o, s) {
		let c = o || [];
		if (typeof e != "object" || !e) return;
		let l;
		if (Array.isArray(e)) {
			for (let n = 0; n < e.length; ++n) {
				let r = t.source === "terms" && t.name === "keys" && e[n].key, o = i.scan(e[n], t, a, [n, ...c], r);
				o !== void 0 && (l ||= e.slice(), l[n] = o);
			}
			return l;
		}
		if (a.schema !== !1 && n.isSchema(e) || a.ref !== !1 && r.isRef(e)) {
			let n = a.each(e, {
				...t,
				path: c,
				key: s
			});
			return n === e ? void 0 : n;
		}
		for (let n in e) {
			if (n[0] === "_") continue;
			let r = i.scan(e[n], t, a, [n, ...c], s);
			r !== void 0 && (l ||= Object.assign({}, e), l[n] = r);
		}
		return l;
	};
})), ie = /* @__PURE__ */ s(((e, t) => {
	var { clone: n, reach: r } = E(), i = P(), a = { value: Symbol("value") };
	t.exports = a.State = class {
		constructor(e, t, n) {
			this.path = e, this.ancestors = t, this.mainstay = n.mainstay, this.schemas = n.schemas, this.debug = null;
		}
		localize(e, t = null, n = null) {
			let r = new a.State(e, t, this);
			return n && r.schemas && (r.schemas = [a.schemas(n), ...r.schemas]), r;
		}
		nest(e, t) {
			let n = new a.State(this.path, this.ancestors, this);
			return n.schemas = n.schemas && [a.schemas(e), ...n.schemas], n.debug = t, n;
		}
		shadow(e, t) {
			this.mainstay.shadow = this.mainstay.shadow || new a.Shadow(), this.mainstay.shadow.set(this.path, e, t);
		}
		snapshot() {
			this.mainstay.shadow && (this._snapshot = n(this.mainstay.shadow.node(this.path))), this.mainstay.snapshot();
		}
		restore() {
			this.mainstay.shadow && (this.mainstay.shadow.override(this.path, this._snapshot), this._snapshot = void 0), this.mainstay.restore();
		}
		commit() {
			this.mainstay.shadow && (this.mainstay.shadow.override(this.path, this._snapshot), this._snapshot = void 0), this.mainstay.commit();
		}
	}, a.schemas = function(e) {
		return i.isSchema(e) ? { schema: e } : e;
	}, a.Shadow = class {
		constructor() {
			this._values = null;
		}
		set(e, t, n) {
			if (!e.length || n === "strip" && typeof e[e.length - 1] == "number") return;
			this._values = this._values || /* @__PURE__ */ new Map();
			let r = this._values;
			for (let t = 0; t < e.length; ++t) {
				let n = e[t], i = r.get(n);
				i || (i = /* @__PURE__ */ new Map(), r.set(n, i)), r = i;
			}
			r[a.value] = t;
		}
		get(e) {
			let t = this.node(e);
			if (t) return t[a.value];
		}
		node(e) {
			if (this._values) return r(this._values, e, { iterables: !0 });
		}
		override(e, t) {
			if (!this._values) return;
			let n = e.slice(0, -1), i = e[e.length - 1], a = r(this._values, n, { iterables: !0 });
			if (t) {
				a.set(i, t);
				return;
			}
			a && a.delete(i);
		}
	};
})), ae = /* @__PURE__ */ s(((e) => {
	var { assert: t, clone: n, ignore: r, reach: i } = E(), a = P(), o = A(), s = ie(), c = { result: Symbol("result") };
	e.entry = function(e, n, r) {
		let i = a.defaults;
		r && (t(r.warnings === void 0, "Cannot override warnings preference in synchronous validation"), t(r.artifacts === void 0, "Cannot override artifacts preference in synchronous validation"), i = a.preferences(a.defaults, r));
		let s = c.entry(e, n, i);
		t(!s.mainstay.externals.length, "Schema with external rules must use validateAsync()");
		let l = { value: s.value };
		return s.error && (l.error = s.error), s.mainstay.warnings.length && (l.warning = o.details(s.mainstay.warnings)), s.mainstay.debug && (l.debug = s.mainstay.debug), s.mainstay.artifacts && (l.artifacts = s.mainstay.artifacts), l;
	}, e.entryAsync = async function(e, t, n) {
		let r = a.defaults;
		n && (r = a.preferences(a.defaults, n));
		let s = c.entry(e, t, r), l = s.mainstay;
		if (s.error) throw l.debug && (s.error.debug = l.debug), s.error;
		if (l.externals.length) {
			let t = s.value, u = [];
			for (let s of l.externals) {
				let d = s.state.path, f = s.schema.type === "link" ? l.links.get(s.schema) : null, p = t, m, h, g = d.length ? [t] : [], _ = d.length ? i(e, d) : e;
				if (d.length) {
					m = d[d.length - 1];
					let e = t;
					for (let t of d.slice(0, -1)) e = e[t], g.unshift(e);
					h = g[0], p = h[m];
				}
				try {
					let e = await s.method(p, {
						schema: s.schema,
						linked: f,
						state: s.state,
						prefs: n,
						original: _,
						error: (e, t) => (f || s.schema).$_createError(e, p, t, s.state, r),
						errorsArray: c.errorsArray,
						warn: (e, t) => l.warnings.push((f || s.schema).$_createError(e, p, t, s.state, r)),
						message: (e, t) => (f || s.schema).$_createError("external", p, t, s.state, r, { messages: e })
					});
					if (e === void 0 || e === p) continue;
					if (e instanceof o.Report) {
						if (l.tracer.log(s.schema, s.state, "rule", "external", "error"), u.push(e), r.abortEarly) break;
						continue;
					}
					if (Array.isArray(e) && e[a.symbols.errors]) {
						if (l.tracer.log(s.schema, s.state, "rule", "external", "error"), u.push(...e), r.abortEarly) break;
						continue;
					}
					h ? (l.tracer.value(s.state, "rule", p, e, "external"), h[m] = e) : (l.tracer.value(s.state, "rule", t, e, "external"), t = e);
				} catch (e) {
					throw r.errors.label && (e.message += ` (${s.label})`), e;
				}
			}
			if (s.value = t, u.length) throw s.error = o.process(u, e, r), l.debug && (s.error.debug = l.debug), s.error;
		}
		if (!r.warnings && !r.debug && !r.artifacts) return s.value;
		let u = { value: s.value };
		return l.warnings.length && (u.warning = o.details(l.warnings)), l.debug && (u.debug = l.debug), l.artifacts && (u.artifacts = l.artifacts), u;
	}, e.standard = function(t, n, r) {
		let i = r?.libraryOptions;
		return n.isAsync() ? e.entryAsync(t, n, i) : e.entry(t, n, i);
	}, c.Mainstay = class {
		constructor(e, t, n) {
			this.externals = [], this.warnings = [], this.tracer = e, this.debug = t, this.links = n, this.shadow = null, this.artifacts = null, this._snapshots = [];
		}
		snapshot() {
			this._snapshots.push({
				externals: this.externals.slice(),
				warnings: this.warnings.slice()
			});
		}
		restore() {
			let e = this._snapshots.pop();
			this.externals = e.externals, this.warnings = e.warnings;
		}
		commit() {
			this._snapshots.pop();
		}
	}, c.entry = function(t, n, r) {
		let { tracer: i, cleanup: a } = c.tracer(n, r), l = r.debug ? [] : null, u = n._ids._schemaChain ? /* @__PURE__ */ new Map() : null, d = new c.Mainstay(i, l, u), f = new s([], [], {
			mainstay: d,
			schemas: n._ids._schemaChain ? [{ schema: n }] : null
		}), p = e.validate(t, n, f, r);
		a && n.$_root.untrace();
		let m = o.process(p.errors, t, r);
		return {
			value: p.value,
			error: m,
			mainstay: d
		};
	}, c.tracer = function(e, n) {
		return e.$_root._tracer ? { tracer: e.$_root._tracer._register(e) } : n.debug ? (t(e.$_root.trace, "Debug mode not supported"), {
			tracer: e.$_root.trace()._register(e),
			cleanup: !0
		}) : { tracer: c.ignore };
	}, e.validate = function(e, t, n, r, i = {}) {
		if (t.$_terms.whens && (t = t._generate(e, n, r).schema), t._preferences && (r = c.prefs(t, r)), t._cache && r.cache) {
			let r = t._cache.get(e);
			if (n.mainstay.tracer.debug(n, "validate", "cached", !!r), r) return r;
		}
		let o = (i, a, o) => t.$_createError(i, e, a, o || n, r), s = {
			original: e,
			prefs: r,
			schema: t,
			state: n,
			error: o,
			errorsArray: c.errorsArray,
			warn: (e, t, r) => n.mainstay.warnings.push(o(e, t, r)),
			message: (i, a) => t.$_createError("custom", e, a, n, r, { messages: i })
		};
		n.mainstay.tracer.entry(t, n);
		let l = t._definition;
		if (l.prepare && e !== void 0 && r.convert) {
			let t = l.prepare(e, s);
			if (t) {
				if (n.mainstay.tracer.value(n, "prepare", e, t.value), t.errors) return c.finalize(t.value, [].concat(t.errors), s);
				e = t.value;
			}
		}
		if (l.coerce && e !== void 0 && r.convert && (!l.coerce.from || l.coerce.from.includes(typeof e))) {
			let t = l.coerce.method(e, s);
			if (t) {
				if (n.mainstay.tracer.value(n, "coerced", e, t.value), t.errors) return c.finalize(t.value, [].concat(t.errors), s);
				e = t.value;
			}
		}
		let u = t._flags.empty;
		u && u.$_match(c.trim(e, t), n.nest(u), a.defaults) && (n.mainstay.tracer.value(n, "empty", e, void 0), e = void 0);
		let d = i.presence || t._flags.presence || (t._flags._endedSwitch ? null : r.presence);
		if (e === void 0) {
			if (d === "forbidden") return c.finalize(e, null, s);
			if (d === "required") return c.finalize(e, [t.$_createError("any.required", e, null, n, r)], s);
			if (d === "optional") {
				if (t._flags.default !== a.symbols.deepDefault) return c.finalize(e, null, s);
				n.mainstay.tracer.value(n, "default", e, {}), e = {};
			}
		} else if (d === "forbidden") return c.finalize(e, [t.$_createError("any.unknown", e, null, n, r)], s);
		let f = [];
		if (t._valids) {
			let i = t._valids.get(e, n, r, t._flags.insensitive);
			if (i) return r.convert && (n.mainstay.tracer.value(n, "valids", e, i.value), e = i.value), n.mainstay.tracer.filter(t, n, "valid", i), c.finalize(e, null, s);
			if (t._flags.only) {
				let i = t.$_createError("any.only", e, { valids: t._valids.values({ display: !0 }) }, n, r);
				if (r.abortEarly) return c.finalize(e, [i], s);
				f.push(i);
			}
		}
		if (t._invalids) {
			let i = t._invalids.get(e, n, r, t._flags.insensitive);
			if (i) {
				n.mainstay.tracer.filter(t, n, "invalid", i);
				let a = t.$_createError("any.invalid", e, { invalids: t._invalids.values({ display: !0 }) }, n, r);
				if (r.abortEarly) return c.finalize(e, [a], s);
				f.push(a);
			}
		}
		if (l.validate) {
			let t = l.validate(e, s);
			if (t && (n.mainstay.tracer.value(n, "base", e, t.value), e = t.value, t.errors)) {
				if (!Array.isArray(t.errors)) return f.push(t.errors), c.finalize(e, f, s);
				if (t.errors.length) return f.push(...t.errors), c.finalize(e, f, s);
			}
		}
		return t._rules.length ? c.rules(e, f, s) : c.finalize(e, f, s);
	}, c.rules = function(e, t, n) {
		let { schema: r, state: i, prefs: o } = n;
		for (let s of r._rules) {
			let l = r._definition.rules[s.method];
			if (l.convert && o.convert) {
				i.mainstay.tracer.log(r, i, "rule", s.name, "full");
				continue;
			}
			let u, d = s.args;
			if (s._resolve.length) {
				d = Object.assign({}, d);
				for (let t of s._resolve) {
					let n = l.argsByName.get(t), s = d[t].resolve(e, i, o), c = n.normalize ? n.normalize(s) : s, f = a.validateArg(c, null, n);
					if (f) {
						u = r.$_createError("any.ref", s, {
							arg: t,
							ref: d[t],
							reason: f
						}, i, o);
						break;
					}
					d[t] = c;
				}
			}
			u ||= l.validate(e, n, d, s);
			let f = c.rule(u, s);
			if (f.errors) {
				if (i.mainstay.tracer.log(r, i, "rule", s.name, "error"), s.warn) {
					i.mainstay.warnings.push(...f.errors);
					continue;
				}
				if (o.abortEarly) return c.finalize(e, f.errors, n);
				t.push(...f.errors);
			} else i.mainstay.tracer.log(r, i, "rule", s.name, "pass"), i.mainstay.tracer.value(i, "rule", e, f.value, s.name), e = f.value;
		}
		return c.finalize(e, t, n);
	}, c.rule = function(e, t) {
		return e instanceof o.Report ? (c.error(e, t), {
			errors: [e],
			value: null
		}) : Array.isArray(e) && e[a.symbols.errors] ? (e.forEach((e) => c.error(e, t)), {
			errors: e,
			value: null
		}) : {
			errors: null,
			value: e
		};
	}, c.error = function(e, t) {
		return t.message && e._setTemplate(t.message), e;
	}, c.finalize = function(e, n, r) {
		n ||= [];
		let { schema: i, state: a, prefs: s } = r;
		if (n.length) {
			let t = c.default("failover", void 0, n, r);
			t !== void 0 && (a.mainstay.tracer.value(a, "failover", e, t), e = t, n = []);
		}
		if (n.length && i._flags.error) if (typeof i._flags.error == "function") {
			n = i._flags.error(n), Array.isArray(n) || (n = [n]);
			for (let e of n) t(e instanceof Error || e instanceof o.Report, "error() must return an Error object");
		} else n = [i._flags.error];
		if (e === void 0) {
			let t = c.default("default", e, n, r);
			a.mainstay.tracer.value(a, "default", e, t), e = t;
		}
		if (i._flags.cast && e !== void 0) {
			let t = i._definition.cast[i._flags.cast];
			if (t.from(e)) {
				let n = t.to(e, r);
				a.mainstay.tracer.value(a, "cast", e, n, i._flags.cast), e = n;
			}
		}
		if (i.$_terms.externals && s.externals && s._externals !== !1) for (let { method: e } of i.$_terms.externals) a.mainstay.externals.push({
			method: e,
			schema: i,
			state: a,
			label: o.label(i._flags, a, s)
		});
		let l = {
			value: e,
			errors: n.length ? n : null
		};
		return i._flags.result && (l.value = i._flags.result === "strip" ? void 0 : r.original, a.mainstay.tracer.value(a, i._flags.result, e, l.value), a.shadow(e, i._flags.result)), i._cache && s.cache !== !1 && !i._refs.length && i._cache.set(r.original, l), e !== void 0 && !l.errors && i._flags.artifact !== void 0 && (a.mainstay.artifacts = a.mainstay.artifacts || /* @__PURE__ */ new Map(), a.mainstay.artifacts.has(i._flags.artifact) || a.mainstay.artifacts.set(i._flags.artifact, []), a.mainstay.artifacts.get(i._flags.artifact).push(a.path)), l;
	}, c.prefs = function(e, t) {
		let n = t === a.defaults;
		return n && e._preferences[a.symbols.prefs] ? e._preferences[a.symbols.prefs] : (t = a.preferences(t, e._preferences), n && (e._preferences[a.symbols.prefs] = t), t);
	}, c.default = function(e, t, r, i) {
		let { schema: o, state: s, prefs: c } = i, l = o._flags[e];
		if (c.noDefaults || l === void 0) return t;
		if (s.mainstay.tracer.log(o, s, "rule", e, "full"), !l) return l;
		if (typeof l == "function") {
			let t = l.length ? [n(s.ancestors[0]), i] : [];
			try {
				return l(...t);
			} catch (t) {
				r.push(o.$_createError(`any.${e}`, null, { error: t }, s, c));
				return;
			}
		}
		return typeof l == "object" ? l[a.symbols.literal] ? l.literal : a.isResolvable(l) ? l.resolve(t, s, c) : n(l) : l;
	}, c.trim = function(e, t) {
		if (typeof e != "string") return e;
		let n = t.$_getRule("trim");
		return !n || !n.args.enabled ? e : e.trim();
	}, c.ignore = {
		active: !1,
		debug: r,
		entry: r,
		filter: r,
		log: r,
		resolve: r,
		value: r
	}, c.errorsArray = function() {
		let e = [];
		return e[a.symbols.errors] = !0, e;
	};
})), oe = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, deepEqual: r } = E(), i = P(), a = {};
	t.exports = a.Values = class {
		constructor(e, t) {
			this._values = new Set(e), this._refs = new Set(t), this._lowercase = a.lowercases(e), this._override = !1;
		}
		get length() {
			return this._values.size + this._refs.size;
		}
		add(e, t) {
			if (i.isResolvable(e)) {
				this._refs.has(e) || (this._refs.add(e), t && t.register(e));
				return;
			}
			this.has(e, null, null, !1) || (this._values.add(e), typeof e == "string" && this._lowercase.set(e.toLowerCase(), e));
		}
		static merge(e, t, n) {
			if (e ||= new a.Values(), t) {
				if (t._override) return t.clone();
				for (let n of [...t._values, ...t._refs]) e.add(n);
			}
			if (n) for (let t of [...n._values, ...n._refs]) e.remove(t);
			return e.length ? e : null;
		}
		remove(e) {
			if (i.isResolvable(e)) {
				this._refs.delete(e);
				return;
			}
			this._values.delete(e), typeof e == "string" && this._lowercase.delete(e.toLowerCase());
		}
		has(e, t, n, r) {
			return !!this.get(e, t, n, r);
		}
		get(e, t, n, i) {
			if (!this.length) return !1;
			if (this._values.has(e)) return { value: e };
			if (typeof e == "string" && e && i) {
				let t = this._lowercase.get(e.toLowerCase());
				if (t) return { value: t };
			}
			if (!this._refs.size && typeof e != "object") return !1;
			if (typeof e == "object") {
				for (let t of this._values) if (r(t, e)) return { value: t };
			}
			if (t) for (let a of this._refs) {
				let o = a.resolve(e, t, n, null, { in: !0 });
				if (o === void 0) continue;
				let s = !a.in || typeof o != "object" ? [o] : Array.isArray(o) ? o : Object.keys(o);
				for (let t of s) if (typeof t == typeof e) {
					if (i && e && typeof e == "string") {
						if (t.toLowerCase() === e.toLowerCase()) return {
							value: t,
							ref: a
						};
					} else if (r(t, e)) return {
						value: t,
						ref: a
					};
				}
			}
			return !1;
		}
		override() {
			this._override = !0;
		}
		values(e) {
			if (e && e.display) {
				let e = [];
				for (let t of [...this._values, ...this._refs]) t !== void 0 && e.push(t);
				return e;
			}
			return Array.from([...this._values, ...this._refs]);
		}
		clone() {
			let e = new a.Values(this._values, this._refs);
			return e._override = this._override, e;
		}
		concat(e) {
			n(!e._override, "Cannot concat override set of values");
			let t = new a.Values([...this._values, ...e._values], [...this._refs, ...e._refs]);
			return t._override = this._override, t;
		}
		describe() {
			let e = [];
			this._override && e.push({ override: !0 });
			for (let t of this._values.values()) e.push(t && typeof t == "object" ? { value: t } : t);
			for (let t of this._refs.values()) e.push(t.describe());
			return e;
		}
	}, a.Values.prototype[i.symbols.values] = !0, a.Values.prototype.slice = a.Values.prototype.clone, a.lowercases = function(e) {
		let t = /* @__PURE__ */ new Map();
		if (e) for (let n of e) typeof n == "string" && t.set(n.toLowerCase(), n);
		return t;
	};
})), se = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, clone: r, deepEqual: i, merge: a } = E(), o = F(), s = P(), c = I(), l = A(), u = L(), d = x(), f = N(), p = re(), m = j(), h = x(), g = ae(), _ = oe(), v = {
		standardTypes: new Set([
			"string",
			"number",
			"integer",
			"boolean",
			"object",
			"array",
			"null"
		]),
		jsonSchemaTarget: "draft-2020-12",
		primitiveTypes: new Set([
			"string",
			"number",
			"boolean"
		]),
		nullSchema: () => ({ type: "null" })
	};
	v.Base = class {
		constructor(e) {
			this.type = e, this.$_root = null, this._definition = {}, this._reset();
		}
		_reset() {
			this._ids = new p.Ids(), this._preferences = null, this._refs = new m.Manager(), this._cache = null, this._valids = null, this._invalids = null, this._flags = {}, this._rules = [], this._singleRules = /* @__PURE__ */ new Map(), this.$_terms = {}, this.$_temp = {
				ruleset: null,
				whens: {}
			};
		}
		describe() {
			return n(typeof d.describe == "function", "Manifest functionality disabled"), d.describe(this);
		}
		$_jsonSchema(e, t = {}) {
			if (t.target !== void 0 && t.target !== v.jsonSchemaTarget) throw Error(`Unsupported JSON Schema target: ${t.target}`);
			let n = !t.$defs, r = t.$defs ?? {}, a = {}, o = this.type === "any", c = this._flags.only, l = this._valids && Array.from(this._valids._values).filter((e) => e !== null), u = !0;
			if (l && l.length && c && !o) {
				let e = new Set(l.map((e) => typeof e));
				u = e.has(this.type) || this.type === "date" && e.has("object");
			}
			!o && u && v.standardTypes.has(this.type) && (a.type = this.type), this._flags.description && (a.description = this._flags.description), this._flags.default !== void 0 && typeof this._flags.default != "function" && (a.default = this._flags.default);
			let d = {
				...t,
				$defs: r
			};
			this._definition.jsonSchema && u && (a = this._definition.jsonSchema(this, a, e, d));
			for (let t of this._rules) {
				let n = this._definition.rules[t.name];
				n.jsonSchema && u && (a = n.jsonSchema(t, a, c, e, d));
			}
			if (this.$_terms.shared) for (let t of this.$_terms.shared) r[t._flags.id] = t.$_jsonSchema(e, d);
			if (n && Object.keys(r).length && (a.$defs = r), this._valids) {
				let e = l.filter((e) => typeof e != "symbol");
				if (e.length) if (this._flags.only) {
					a.enum = e;
					let t = s.intersect(new Set(e.map((e) => typeof e)), v.primitiveTypes);
					if (t.size) {
						let e = [...t];
						a.type = e.length === 1 ? e[0] : e;
					}
				} else {
					let t = e.filter((e) => typeof e !== this.type || o);
					t.length && !(o && !c) && (a.anyOf || (a = { anyOf: [a] }), a.anyOf.push({ enum: t }));
				}
			}
			if (this._valids && this._valids.has(null) && !(o && !c) && (this._valids.length === 1 && (o || c) ? a.type = "null" : a.type ? a.type = [a.type, "null"] : a.anyOf ? a.anyOf.unshift(v.nullSchema()) : a = { anyOf: [v.nullSchema(), a] }), this.$_terms.whens) {
				let t = this.clone();
				t.$_terms.whens = null;
				let n = [];
				for (let r of this.$_terms.whens) {
					let i = r.is ? [r] : r.switch;
					for (let r = 0; r < i.length; ++r) {
						let a = i[r];
						a.then && n.push(t.concat(a.then).$_jsonSchema(e, d)), a.otherwise && n.push(t.concat(a.otherwise).$_jsonSchema(e, d)), (!a.then || r === i.length - 1 && !a.otherwise) && n.push(t.$_jsonSchema(e, d));
					}
				}
				let r = [];
				for (let e of n) r.some((t) => i(t, e)) || r.push(e);
				return { anyOf: r };
			}
			return a;
		}
		allow(...e) {
			return s.verifyFlat(e, "allow"), this._values(e, "_valids");
		}
		alter(e) {
			n(e && typeof e == "object" && !Array.isArray(e), "Invalid targets argument"), n(!this._inRuleset(), "Cannot set alterations inside a ruleset");
			let t = this.clone();
			t.$_terms.alterations = t.$_terms.alterations || [];
			for (let r in e) {
				let i = e[r];
				n(typeof i == "function", "Alteration adjuster for", r, "must be a function"), t.$_terms.alterations.push({
					target: r,
					adjuster: i
				});
			}
			return t.$_temp.ruleset = !1, t;
		}
		artifact(e) {
			return n(e !== void 0, "Artifact cannot be undefined"), n(!this._cache, "Cannot set an artifact with a rule cache"), this.$_setFlag("artifact", e);
		}
		cast(e) {
			return n(e === !1 || typeof e == "string", "Invalid to value"), n(e === !1 || this._definition.cast[e], "Type", this.type, "does not support casting to", e), this.$_setFlag("cast", e === !1 ? void 0 : e);
		}
		default(e, t) {
			return this._default("default", e, t);
		}
		description(e) {
			return n(e && typeof e == "string", "Description must be a non-empty string"), this.$_setFlag("description", e);
		}
		empty(e) {
			let t = this.clone();
			return e !== void 0 && (e = t.$_compile(e, { override: !1 })), t.$_setFlag("empty", e, { clone: !1 });
		}
		error(e) {
			return n(e, "Missing error"), n(e instanceof Error || typeof e == "function", "Must provide a valid Error object or a function"), this.$_setFlag("error", e);
		}
		example(e, t = {}) {
			return n(e !== void 0, "Missing example"), s.assertOptions(t, ["override"]), this._inner("examples", e, {
				single: !0,
				override: t.override
			});
		}
		external(e, t) {
			return typeof e == "object" && (n(!t, "Cannot combine options with description"), t = e.description, e = e.method), n(typeof e == "function", "Method must be a function"), n(t === void 0 || t && typeof t == "string", "Description must be a non-empty string"), this._inner("externals", {
				method: e,
				description: t
			}, { single: !0 });
		}
		failover(e, t) {
			return this._default("failover", e, t);
		}
		forbidden() {
			return this.presence("forbidden");
		}
		id(e) {
			return e ? (n(typeof e == "string", "id must be a non-empty string"), n(/^[^\.]+$/.test(e), "id cannot contain period character"), this.$_setFlag("id", e)) : this.$_setFlag("id", void 0);
		}
		invalid(...e) {
			return this._values(e, "_invalids");
		}
		label(e) {
			return n(e && typeof e == "string", "Label name must be a non-empty string"), this.$_setFlag("label", e);
		}
		meta(e) {
			return n(e !== void 0, "Meta cannot be undefined"), this._inner("metas", e, { single: !0 });
		}
		note(...e) {
			n(e.length, "Missing notes");
			for (let t of e) n(t && typeof t == "string", "Notes must be non-empty strings");
			return this._inner("notes", e);
		}
		only(e = !0) {
			return n(typeof e == "boolean", "Invalid mode:", e), this.$_setFlag("only", e);
		}
		optional() {
			return this.presence("optional");
		}
		prefs(e) {
			n(e, "Missing preferences"), n(e.context === void 0, "Cannot override context"), n(e.externals === void 0, "Cannot override externals"), n(e.warnings === void 0, "Cannot override warnings"), n(e.debug === void 0, "Cannot override debug"), s.checkPreferences(e);
			let t = this.clone();
			return t._preferences = s.preferences(t._preferences, e), t;
		}
		presence(e) {
			return n([
				"optional",
				"required",
				"forbidden"
			].includes(e), "Unknown presence mode", e), this.$_setFlag("presence", e);
		}
		raw(e = !0) {
			return this.$_setFlag("result", e ? "raw" : void 0);
		}
		result(e) {
			return n(["raw", "strip"].includes(e), "Unknown result mode", e), this.$_setFlag("result", e);
		}
		required() {
			return this.presence("required");
		}
		strict(e) {
			let t = this.clone(), n = e === void 0 ? !1 : !e;
			return t._preferences = s.preferences(t._preferences, { convert: n }), t;
		}
		strip(e = !0) {
			return this.$_setFlag("result", e ? "strip" : void 0);
		}
		tag(...e) {
			n(e.length, "Missing tags");
			for (let t of e) n(t && typeof t == "string", "Tags must be non-empty strings");
			return this._inner("tags", e);
		}
		unit(e) {
			return n(e && typeof e == "string", "Unit name must be a non-empty string"), this.$_setFlag("unit", e);
		}
		valid(...e) {
			s.verifyFlat(e, "valid");
			let t = this.allow(...e);
			return t.$_setFlag("only", !!t._valids, { clone: !1 }), t;
		}
		when(e, t) {
			let r = this.clone();
			r.$_terms.whens || (r.$_terms.whens = []);
			let i = c.when(r, e, t);
			if (!["any", "link"].includes(r.type)) {
				let e = i.is ? [i] : i.switch;
				for (let t of e) n(!t.then || t.then.type === "any" || t.then.type === r.type, "Cannot combine", r.type, "with", t.then && t.then.type), n(!t.otherwise || t.otherwise.type === "any" || t.otherwise.type === r.type, "Cannot combine", r.type, "with", t.otherwise && t.otherwise.type);
			}
			return r.$_terms.whens.push(i), r.$_mutateRebuild();
		}
		cache(e) {
			n(!this._inRuleset(), "Cannot set caching inside a ruleset"), n(!this._cache, "Cannot override schema cache"), n(this._flags.artifact === void 0, "Cannot cache a rule with an artifact");
			let t = this.clone();
			return t._cache = e || o.provider.provision(), t.$_temp.ruleset = !1, t;
		}
		clone() {
			let e = Object.create(Object.getPrototypeOf(this));
			return this._assign(e);
		}
		concat(e) {
			n(s.isSchema(e), "Invalid schema object"), n(this.type === "any" || e.type === "any" || e.type === this.type, "Cannot merge type", this.type, "with another type:", e.type), n(!this._inRuleset(), "Cannot concatenate onto a schema with open ruleset"), n(!e._inRuleset(), "Cannot concatenate a schema with open ruleset");
			let t = this.clone();
			if (this.type === "any" && e.type !== "any") {
				let n = e.clone();
				for (let e of Object.keys(t)) e !== "type" && (n[e] = t[e]);
				t = n;
			}
			t._ids.concat(e._ids), t._refs.register(e, m.toSibling), t._preferences = t._preferences ? s.preferences(t._preferences, e._preferences) : e._preferences, t._valids = _.merge(t._valids, e._valids, e._invalids), t._invalids = _.merge(t._invalids, e._invalids, e._valids);
			for (let n of e._singleRules.keys()) t._singleRules.has(n) && (t._rules = t._rules.filter((e) => e.keep || e.name !== n), t._singleRules.delete(n));
			for (let n of e._rules) e._definition.rules[n.method].multi || t._singleRules.set(n.name, n), t._rules.push(n);
			if (t._flags.empty && e._flags.empty) {
				t._flags.empty = t._flags.empty.concat(e._flags.empty);
				let n = Object.assign({}, e._flags);
				delete n.empty, a(t._flags, n);
			} else if (e._flags.empty) {
				t._flags.empty = e._flags.empty;
				let n = Object.assign({}, e._flags);
				delete n.empty, a(t._flags, n);
			} else a(t._flags, e._flags);
			for (let n in e.$_terms) {
				let r = e.$_terms[n];
				if (!r) {
					t.$_terms[n] || (t.$_terms[n] = r);
					continue;
				}
				if (!t.$_terms[n]) {
					t.$_terms[n] = r.slice();
					continue;
				}
				t.$_terms[n] = t.$_terms[n].concat(r);
			}
			return this.$_root._tracer && this.$_root._tracer._combine(t, [this, e]), t.$_mutateRebuild();
		}
		extend(e) {
			return n(!e.base, "Cannot extend type with another base"), u.type(this, e);
		}
		extract(e) {
			return e = Array.isArray(e) ? e : e.split("."), this._ids.reach(e);
		}
		fork(e, t) {
			n(!this._inRuleset(), "Cannot fork inside a ruleset");
			let r = this;
			for (let n of [].concat(e)) n = Array.isArray(n) ? n : n.split("."), r = r._ids.fork(n, t, r);
			return r.$_temp.ruleset = !1, r;
		}
		isAsync() {
			if (this.$_terms.externals?.length) return !0;
			if (this.$_terms.whens) for (let e of this.$_terms.whens) {
				if (e.then?.isAsync() || e.otherwise?.isAsync()) return !0;
				if (e.switch) {
					for (let t of e.switch) if (t.then?.isAsync() || t.otherwise?.isAsync()) return !0;
				}
			}
			return !1;
		}
		rule(e) {
			let t = this._definition;
			s.assertOptions(e, Object.keys(t.modifiers)), n(this.$_temp.ruleset !== !1, "Cannot apply rules to empty ruleset or the last rule added does not support rule properties");
			let i = this.$_temp.ruleset === null ? this._rules.length - 1 : this.$_temp.ruleset;
			n(i >= 0 && i < this._rules.length, "Cannot apply rules to empty ruleset");
			let a = this.clone();
			for (let o = i; o < a._rules.length; ++o) {
				let i = a._rules[o], s = r(i);
				for (let r in e) t.modifiers[r](s, e[r]), n(s.name === i.name, "Cannot change rule name");
				a._rules[o] = s, a._singleRules.get(s.name) === i && a._singleRules.set(s.name, s);
			}
			return a.$_temp.ruleset = !1, a.$_mutateRebuild();
		}
		get ruleset() {
			n(!this._inRuleset(), "Cannot start a new ruleset without closing the previous one");
			let e = this.clone();
			return e.$_temp.ruleset = e._rules.length, e;
		}
		get $() {
			return this.ruleset;
		}
		tailor(e) {
			e = [].concat(e), n(!this._inRuleset(), "Cannot tailor inside a ruleset");
			let t = this;
			if (this.$_terms.alterations) for (let { target: r, adjuster: i } of this.$_terms.alterations) e.includes(r) && (t = i(t), n(s.isSchema(t), "Alteration adjuster for", r, "failed to return a schema object"));
			return t = t.$_modify({
				each: (t) => t.tailor(e),
				ref: !1
			}), t.$_temp.ruleset = !1, t.$_mutateRebuild();
		}
		tracer() {
			return h.location ? h.location(this) : this;
		}
		validate(e, t) {
			return g.entry(e, this, t);
		}
		validateAsync(e, t) {
			return g.entryAsync(e, this, t);
		}
		$_addRule(e) {
			typeof e == "string" && (e = { name: e }), n(e && typeof e == "object", "Invalid options"), n(e.name && typeof e.name == "string", "Invalid rule name");
			for (let t in e) n(t[0] !== "_", "Cannot set private rule properties");
			let t = Object.assign({}, e);
			t._resolve = [], t.method = t.method || t.name;
			let r = this._definition.rules[t.method], i = t.args;
			n(r, "Unknown rule", t.method);
			let a = this.clone();
			if (i) {
				n(Object.keys(i).length === 1 || Object.keys(i).length === this._definition.rules[t.name].args.length, "Invalid rule definition for", this.type, t.name);
				for (let e in i) {
					let o = i[e];
					if (r.argsByName) {
						let c = r.argsByName.get(e);
						if (c.ref && s.isResolvable(o)) t._resolve.push(e), a.$_mutateRegister(o);
						else if (c.normalize && (o = c.normalize(o), i[e] = o), c.assert) {
							let t = s.validateArg(o, e, c);
							n(!t, t, "or reference");
						}
					}
					if (o === void 0) {
						delete i[e];
						continue;
					}
					i[e] = o;
				}
			}
			return r.multi || (a._ruleRemove(t.name, { clone: !1 }), a._singleRules.set(t.name, t)), a.$_temp.ruleset === !1 && (a.$_temp.ruleset = null), r.priority ? a._rules.unshift(t) : a._rules.push(t), a;
		}
		$_compile(e, t) {
			return c.schema(this.$_root, e, t);
		}
		$_createError(e, t, n, r, i, a = {}) {
			let o = a.flags === !1 ? {} : this._flags, s = a.messages ? f.merge(this._definition.messages, a.messages) : this._definition.messages;
			return new l.Report(e, t, n, o, s, r, i);
		}
		$_getFlag(e) {
			return this._flags[e];
		}
		$_getRule(e) {
			return this._singleRules.get(e);
		}
		$_mapLabels(e) {
			return e = Array.isArray(e) ? e : e.split("."), this._ids.labels(e);
		}
		$_match(e, t, n, r) {
			n = Object.assign({}, n), n.abortEarly = !0, n._externals = !1, t.snapshot();
			let i = !g.validate(e, this, t, n, r).errors;
			return t.restore(), i;
		}
		$_modify(e) {
			return s.assertOptions(e, [
				"each",
				"once",
				"ref",
				"schema"
			]), p.schema(this, e) || this;
		}
		$_mutateRebuild() {
			return n(!this._inRuleset(), "Cannot add this rule inside a ruleset"), this._refs.reset(), this._ids.reset(), this.$_modify({ each: (e, { source: t, name: n, path: r, key: i }) => {
				let a = this._definition[t][n] && this._definition[t][n].register;
				a !== !1 && this.$_mutateRegister(e, {
					family: a,
					key: i
				});
			} }), this._definition.rebuild && this._definition.rebuild(this), this.$_temp.ruleset = !1, this;
		}
		$_mutateRegister(e, { family: t, key: n } = {}) {
			this._refs.register(e, t), this._ids.register(e, { key: n });
		}
		$_property(e) {
			return this._definition.properties[e];
		}
		$_reach(e) {
			return this._ids.reach(e);
		}
		$_rootReferences() {
			return this._refs.roots();
		}
		$_setFlag(e, t, r = {}) {
			n(e[0] === "_" || !this._inRuleset(), "Cannot set flag inside a ruleset");
			let a = this._definition.flags[e] || {};
			if (i(t, a.default) && (t = void 0), i(t, this._flags[e])) return this;
			let o = r.clone === !1 ? this : this.clone();
			return t === void 0 ? delete o._flags[e] : (o._flags[e] = t, o.$_mutateRegister(t)), e[0] !== "_" && (o.$_temp.ruleset = !1), o;
		}
		$_parent(e, ...t) {
			return this[e][s.symbols.parent].call(this, ...t);
		}
		$_validate(e, t, n) {
			return g.validate(e, this, t, n);
		}
		_assign(e) {
			e.type = this.type, e.$_root = this.$_root, e.$_temp = Object.assign({}, this.$_temp), e.$_temp.whens = {}, e._ids = this._ids.clone(), e._preferences = this._preferences, e._valids = this._valids && this._valids.clone(), e._invalids = this._invalids && this._invalids.clone(), e._rules = this._rules.slice(), e._singleRules = r(this._singleRules, { shallow: !0 }), e._refs = this._refs.clone(), e._flags = Object.assign({}, this._flags), e._cache = null, e.$_terms = {};
			for (let t in this.$_terms) e.$_terms[t] = this.$_terms[t] ? this.$_terms[t].slice() : null;
			e.$_super = {};
			for (let t in this.$_super) e.$_super[t] = this._super[t].bind(e);
			return e;
		}
		_bare() {
			let e = this.clone();
			e._reset();
			let t = e._definition.terms;
			for (let n in t) {
				let r = t[n];
				e.$_terms[n] = r.init;
			}
			return e.$_mutateRebuild();
		}
		_default(e, t, r = {}) {
			return s.assertOptions(r, "literal"), n(t !== void 0, "Missing", e, "value"), n(typeof t == "function" || !r.literal, "Only function value supports literal option"), typeof t == "function" && r.literal && (t = {
				[s.symbols.literal]: !0,
				literal: t
			}), this.$_setFlag(e, t);
		}
		_generate(e, t, n) {
			if (!this.$_terms.whens) return { schema: this };
			let r = [], i = [];
			for (let a = 0; a < this.$_terms.whens.length; ++a) {
				let o = this.$_terms.whens[a];
				if (o.concat) {
					r.push(o.concat), i.push(`${a}.concat`);
					continue;
				}
				let s = o.ref ? o.ref.resolve(e, t, n) : e, c = o.is ? [o] : o.switch, l = i.length;
				for (let l = 0; l < c.length; ++l) {
					let { is: u, then: d, otherwise: f } = c[l], p = `${a}${o.switch ? "." + l : ""}`;
					if (u.$_match(s, t.nest(u, `${p}.is`), n)) {
						if (d) {
							let a = t.localize([...t.path, `${p}.then`], t.ancestors, t.schemas), { schema: o, id: s } = d._generate(e, a, n);
							r.push(o), i.push(`${p}.then${s ? `(${s})` : ""}`);
							break;
						}
					} else if (f) {
						let a = t.localize([...t.path, `${p}.otherwise`], t.ancestors, t.schemas), { schema: o, id: s } = f._generate(e, a, n);
						r.push(o), i.push(`${p}.otherwise${s ? `(${s})` : ""}`);
						break;
					}
				}
				if (o.break && i.length > l) break;
			}
			let a = i.join(", ");
			if (t.mainstay.tracer.debug(t, "rule", "when", a), !a) return { schema: this };
			if (!t.mainstay.tracer.active && this.$_temp.whens[a]) return {
				schema: this.$_temp.whens[a],
				id: a
			};
			let o = this;
			this._definition.generate && (o = this._definition.generate(this, e, t, n));
			for (let e of r) o = o.concat(e);
			return this.$_root._tracer && this.$_root._tracer._combine(o, [this, ...r]), this.$_temp.whens[a] = o, {
				schema: o,
				id: a
			};
		}
		_inner(e, t, r = {}) {
			n(!this._inRuleset(), `Cannot set ${e} inside a ruleset`);
			let i = this.clone();
			return (!i.$_terms[e] || r.override) && (i.$_terms[e] = []), r.single ? i.$_terms[e].push(t) : i.$_terms[e].push(...t), i.$_temp.ruleset = !1, i;
		}
		_inRuleset() {
			return this.$_temp.ruleset !== null && this.$_temp.ruleset !== !1;
		}
		_ruleRemove(e, t = {}) {
			if (!this._singleRules.has(e)) return this;
			let n = t.clone === !1 ? this : this.clone();
			n._singleRules.delete(e);
			let r = [];
			for (let t = 0; t < n._rules.length; ++t) {
				let i = n._rules[t];
				if (i.name === e && !i.keep) {
					n._inRuleset() && t < n.$_temp.ruleset && --n.$_temp.ruleset;
					continue;
				}
				r.push(i);
			}
			return n._rules = r, n;
		}
		_values(e, t) {
			s.verifyFlat(e, t.slice(1, -1));
			let r = this.clone(), i = e[0] === s.symbols.override;
			if (i && (e = e.slice(1)), !r[t] && e.length ? r[t] = new _() : i && (r[t] = e.length ? new _() : null, r.$_mutateRebuild()), !r[t]) return r;
			i && r[t].override();
			for (let i of e) {
				n(i !== void 0, "Cannot call allow/valid/invalid with undefined"), n(i !== s.symbols.override, "Override must be the first value");
				let e = t === "_invalids" ? "_valids" : "_invalids";
				r[e] && (r[e].remove(i), r[e].length || (n(t === "_valids" || !r._flags.only, "Setting invalid value", i, "leaves schema rejecting all values due to previous valid rule"), r[e] = null)), r[t].add(i, r._refs);
			}
			return r;
		}
		get "~standard"() {
			let e = (e) => {
				let t;
				return t = l.ValidationError.isError(e) ? e.details.map(({ message: e, path: t }) => ({
					message: e,
					path: t
				})) : [{ message: e.message }], { issues: t };
			}, t = (e) => ({ value: e });
			return {
				version: 1,
				vendor: "joi",
				validate: (n, r) => {
					let i = g.standard(n, this, r);
					return i instanceof Promise ? i.then(t, e) : i.error ? e(i.error) : t(i.value);
				},
				jsonSchema: {
					input: (e) => this.$_jsonSchema("input", e),
					output: (e) => this.$_jsonSchema("output", e)
				}
			};
		}
	}, v.Base.prototype[s.symbols.any] = {
		version: s.version,
		compile: c.compile,
		root: "$_root"
	}, v.Base.prototype.isImmutable = !0, v.Base.prototype.deny = v.Base.prototype.invalid, v.Base.prototype.disallow = v.Base.prototype.invalid, v.Base.prototype.equal = v.Base.prototype.valid, v.Base.prototype.exist = v.Base.prototype.required, v.Base.prototype.not = v.Base.prototype.invalid, v.Base.prototype.options = v.Base.prototype.prefs, v.Base.prototype.preferences = v.Base.prototype.prefs, t.exports = new v.Base();
})), R = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = se(), i = P(), a = N();
	t.exports = r.extend({
		type: "any",
		flags: { only: { default: !1 } },
		terms: {
			alterations: { init: null },
			examples: { init: null },
			externals: { init: null },
			metas: { init: [] },
			notes: { init: [] },
			shared: { init: null },
			tags: { init: [] },
			whens: { init: null }
		},
		rules: {
			custom: {
				method(e, t) {
					return n(typeof e == "function", "Method must be a function"), n(t === void 0 || t && typeof t == "string", "Description must be a non-empty string"), this.$_addRule({
						name: "custom",
						args: {
							method: e,
							description: t
						}
					});
				},
				validate(e, t, { method: n }) {
					try {
						return n(e, t);
					} catch (e) {
						return t.error("any.custom", { error: e });
					}
				},
				args: ["method", "description"],
				multi: !0
			},
			messages: { method(e) {
				return this.prefs({ messages: e });
			} },
			shared: { method(e) {
				n(i.isSchema(e) && e._flags.id, "Schema must be a schema with an id");
				let t = this.clone();
				return t.$_terms.shared = t.$_terms.shared || [], t.$_terms.shared.push(e), t.$_mutateRegister(e), t;
			} },
			warning: {
				method(e, t) {
					return n(e && typeof e == "string", "Invalid warning code"), this.$_addRule({
						name: "warning",
						args: {
							code: e,
							local: t
						},
						warn: !0
					});
				},
				validate(e, t, { code: n, local: r }) {
					return t.error(n, r);
				},
				args: ["code", "local"],
				multi: !0
			}
		},
		modifiers: {
			keep(e, t = !0) {
				e.keep = t;
			},
			message(e, t) {
				e.message = a.compile(t);
			},
			warn(e, t = !0) {
				e.warn = t;
			}
		},
		manifest: { build(e, t) {
			for (let n in t) {
				let r = t[n];
				if ([
					"examples",
					"externals",
					"metas",
					"notes",
					"tags"
				].includes(n)) {
					for (let t of r) e = e[n.slice(0, -1)](t);
					continue;
				}
				if (n === "alterations") {
					let t = {};
					for (let { target: e, adjuster: n } of r) t[e] = n;
					e = e.alter(t);
					continue;
				}
				if (n === "whens") {
					for (let t of r) {
						let { ref: n, is: r, not: i, then: a, otherwise: o, concat: s } = t;
						e = s ? e.concat(s) : n ? e.when(n, {
							is: r,
							not: i,
							then: a,
							otherwise: o,
							switch: t.switch,
							break: t.break
						}) : e.when(r, {
							then: a,
							otherwise: o,
							break: t.break
						});
					}
					continue;
				}
				if (n === "shared") for (let t of r) e = e.shared(t);
			}
			return e;
		} },
		messages: {
			"any.custom": "{{#label}} failed custom validation because {{#error.message}}",
			"any.default": "{{#label}} threw an error when running default method",
			"any.failover": "{{#label}} threw an error when running failover method",
			"any.invalid": "{{#label}} contains an invalid value",
			"any.only": "{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}",
			"any.ref": "{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}",
			"any.required": "{{#label}} is required",
			"any.unknown": "{{#label}} is not allowed"
		}
	});
})), ce = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, merge: r } = E(), i = R(), a = P(), o = I(), s = A(), c = j(), l = {};
	t.exports = i.extend({
		type: "alternatives",
		flags: { match: { default: "any" } },
		terms: { matches: {
			init: [],
			register: c.toSibling
		} },
		args(e, ...t) {
			return t.length === 1 && Array.isArray(t[0]) ? e.try(...t[0]) : e.try(...t);
		},
		validate(e, t) {
			let { schema: n, error: i, state: a, prefs: o } = t;
			if (n._flags.match) {
				let t = [], c = [];
				for (let r = 0; r < n.$_terms.matches.length; ++r) {
					let i = n.$_terms.matches[r], s = a.nest(i.schema, `match.${r}`);
					s.snapshot();
					let l = i.schema.$_validate(e, s, o);
					l.errors ? (c.push(l.errors), s.restore()) : (t.push(l.value), s.commit());
				}
				if (t.length === 0) return { errors: i("alternatives.any", { details: c.map((e) => s.details(e, { override: !1 })) }) };
				if (n._flags.match === "one") return t.length === 1 ? { value: t[0] } : { errors: i("alternatives.one") };
				if (t.length !== n.$_terms.matches.length) return { errors: i("alternatives.all", { details: c.map((e) => s.details(e, { override: !1 })) }) };
				let l = (e) => e.$_terms.matches.some((e) => e.schema.type === "object" || e.schema.type === "alternatives" && l(e.schema));
				return l(n) ? { value: t.reduce((e, t) => r(e, t, { mergeArrays: !1 })) } : { value: t[t.length - 1] };
			}
			let c = [];
			for (let t = 0; t < n.$_terms.matches.length; ++t) {
				let r = n.$_terms.matches[t];
				if (r.schema) {
					let n = a.nest(r.schema, `match.${t}`);
					n.snapshot();
					let i = r.schema.$_validate(e, n, o);
					if (!i.errors) return n.commit(), i;
					n.restore(), c.push({
						schema: r.schema,
						reports: i.errors
					});
					continue;
				}
				let i = r.ref ? r.ref.resolve(e, a, o) : e, s = r.is ? [r] : r.switch;
				for (let n = 0; n < s.length; ++n) {
					let { is: c, then: l, otherwise: u } = s[n], d = `match.${t}${r.switch ? "." + n : ""}`;
					if (!c.$_match(i, a.nest(c, `${d}.is`), o)) {
						if (u) return u.$_validate(e, a.nest(u, `${d}.otherwise`), o);
					} else if (l) return l.$_validate(e, a.nest(l, `${d}.then`), o);
				}
			}
			return l.errors(c, t);
		},
		jsonSchema(e, t, n, r) {
			let i = [];
			for (let t of e.$_terms.matches) if (t.schema) i.push(t.schema.$_jsonSchema(n, r));
			else {
				let e = t.is ? [t] : t.switch;
				for (let t of e) t.then && i.push(t.then.$_jsonSchema(n, r)), t.otherwise && i.push(t.otherwise.$_jsonSchema(n, r));
			}
			return i.length && (delete t.type, (e._flags.match ?? "any") === "one" ? t.oneOf = i : t.anyOf = i), t;
		},
		rules: {
			conditional: { method(e, t) {
				n(!this._flags._endedSwitch, "Unreachable condition"), n(!this._flags.match, "Cannot combine match mode", this._flags.match, "with conditional rule"), n(t.break === void 0, "Cannot use break option with alternatives conditional");
				let r = this.clone(), i = o.when(r, e, t), a = i.is ? [i] : i.switch;
				for (let e of a) if (e.then && e.otherwise) {
					r.$_setFlag("_endedSwitch", !0, { clone: !1 });
					break;
				}
				return r.$_terms.matches.push(i), r.$_mutateRebuild();
			} },
			match: { method(e) {
				if (n([
					"any",
					"one",
					"all"
				].includes(e), "Invalid alternatives match mode", e), e !== "any") for (let t of this.$_terms.matches) n(t.schema, "Cannot combine match mode", e, "with conditional rules");
				return this.$_setFlag("match", e);
			} },
			try: { method(...e) {
				n(e.length, "Missing alternative schemas"), a.verifyFlat(e, "try"), n(!this._flags._endedSwitch, "Unreachable condition");
				let t = this.clone();
				for (let n of e) t.$_terms.matches.push({ schema: t.$_compile(n) });
				return t.$_mutateRebuild();
			} }
		},
		overrides: {
			label(e) {
				return this.$_parent("label", e).$_modify({
					each: (t, n) => n.path[0] !== "is" && typeof t._flags.label != "string" ? t.label(e) : void 0,
					ref: !1
				});
			},
			isAsync() {
				if (this.$_terms.externals?.length) return !0;
				for (let e of this.$_terms.matches) if (e.schema?.isAsync() || e.then?.isAsync() || e.otherwise?.isAsync()) return !0;
				return !1;
			}
		},
		rebuild(e) {
			e.$_modify({ each: (t) => {
				a.isSchema(t) && t.type === "array" && e.$_setFlag("_arrayItems", !0, { clone: !1 });
			} });
		},
		manifest: { build(e, t) {
			if (t.matches) for (let n of t.matches) {
				let { schema: t, ref: r, is: i, not: a, then: o, otherwise: s } = n;
				e = t ? e.try(t) : r ? e.conditional(r, {
					is: i,
					then: o,
					not: a,
					otherwise: s,
					switch: n.switch
				}) : e.conditional(i, {
					then: o,
					otherwise: s
				});
			}
			return e;
		} },
		messages: {
			"alternatives.all": "{{#label}} does not match all of the required types",
			"alternatives.any": "{{#label}} does not match any of the allowed types",
			"alternatives.match": "{{#label}} does not match any of the allowed types",
			"alternatives.one": "{{#label}} matches more than one allowed type",
			"alternatives.types": "{{#label}} must be one of {{#types}}"
		}
	}), l.errors = function(e, { error: t, state: n }) {
		if (!e.length) return { errors: t("alternatives.any") };
		if (e.length === 1) return { errors: e[0].reports };
		let r = /* @__PURE__ */ new Set(), i = [];
		for (let { reports: a, schema: o } of e) {
			if (a.length > 1) return l.unmatched(e, t);
			let c = a[0];
			if (!(c instanceof s.Report)) return l.unmatched(e, t);
			if (c.state.path.length !== n.path.length) {
				i.push({
					type: o.type,
					report: c
				});
				continue;
			}
			if (c.code === "any.only") {
				for (let e of c.local.valids) r.add(e);
				continue;
			}
			let [u, d] = c.code.split(".");
			d === "base" ? c.code === "object.base" ? r.add(c.local.type) : r.add(u) : i.push({
				type: o.type,
				report: c
			});
		}
		return i.length ? i.length === 1 ? { errors: i[0].report } : l.unmatched(e, t) : { errors: t("alternatives.types", { types: [...r] }) };
	}, l.unmatched = function(e, t) {
		let n = [];
		for (let t of e) n.push(...t.reports);
		return { errors: t("alternatives.match", s.details(n, { override: !1 })) };
	};
})), le = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, deepEqual: r, reach: i } = E(), a = R(), o = P(), s = I(), c = {};
	t.exports = a.extend({
		type: "array",
		flags: {
			single: { default: !1 },
			sparse: { default: !1 }
		},
		terms: {
			items: {
				init: [],
				manifest: "schema"
			},
			ordered: {
				init: [],
				manifest: "schema"
			},
			_exclusions: { init: [] },
			_inclusions: { init: [] },
			_requireds: { init: [] }
		},
		coerce: {
			from: "object",
			method(e, { schema: t, state: n, prefs: r }) {
				if (!Array.isArray(e)) return;
				let i = t.$_getRule("sort");
				if (i) return c.sort(t, e, i.args.options, n, r);
			}
		},
		validate(e, { schema: t, error: n }) {
			if (!Array.isArray(e)) {
				if (t._flags.single) {
					let t = [e];
					return t[o.symbols.arraySingle] = !0, { value: t };
				}
				return { errors: n("array.base") };
			}
			if (!(!t.$_getRule("items") && !t.$_terms.externals)) return { value: e.slice() };
		},
		jsonSchema(e, t, n, r) {
			let i = e.$_terms.ordered;
			if (i.length && (t.prefixItems = i.map((e) => e.$_jsonSchema(n, r))), e.$_terms.items.length) {
				let a;
				a = e.$_terms.items.length === 1 ? e.$_terms.items[0].$_jsonSchema(n, r) : { anyOf: e.$_terms.items.map((e) => e.$_jsonSchema(n, r)) }, i.length ? (t.unevaluatedItems = a, t.minItems = i.length) : t.items = a;
			} else i.length && (t.unevaluatedItems = !1, t.minItems = i.length, t.maxItems = i.length);
			let a = [];
			for (let t of e._rules) t.name === "has" && a.push(t.args.schema.$_jsonSchema(n, r));
			if (a.length && (a.length === 1 ? t.contains = a[0] : t.allOf = a.map((e) => ({ contains: e }))), e._flags.single && e.$_terms.items.length) {
				let i;
				i = e.$_terms.items.length === 1 ? e.$_terms.items[0].$_jsonSchema(n, r) : { anyOf: e.$_terms.items.map((e) => e.$_jsonSchema(n, r)) }, t = { anyOf: [t, i] };
			}
			return t;
		},
		rules: {
			has: {
				method(e) {
					e = this.$_compile(e, { appendPath: !0 });
					let t = this.$_addRule({
						name: "has",
						args: { schema: e }
					});
					return t.$_mutateRegister(e), t;
				},
				validate(e, { state: t, prefs: n, error: r }, { schema: i }) {
					let a = [e, ...t.ancestors];
					for (let r = 0; r < e.length; ++r) {
						let o = t.localize([...t.path, r], a, i);
						if (i.$_match(e[r], o, n)) return e;
					}
					let o = i._flags.label;
					return o ? r("array.hasKnown", { patternLabel: o }) : r("array.hasUnknown", null);
				},
				multi: !0
			},
			items: {
				method(...e) {
					o.verifyFlat(e, "items");
					let t = this.$_addRule("items");
					for (let n = 0; n < e.length; ++n) {
						let r = o.tryWithPath(() => this.$_compile(e[n]), n, { append: !0 });
						t.$_terms.items.push(r);
					}
					return t.$_mutateRebuild();
				},
				validate(e, { schema: t, error: n, state: r, prefs: i, errorsArray: a }) {
					let s = t.$_terms._requireds.slice(), l = t.$_terms.ordered.slice(), u = [...t.$_terms._inclusions, ...s], d = !e[o.symbols.arraySingle];
					delete e[o.symbols.arraySingle];
					let f = a(), p = e.length;
					for (let a = 0; a < p; ++a) {
						let o = e[a], m = !1, h = !1, g = d ? a : new Number(a), _ = [...r.path, g];
						if (!t._flags.sparse && o === void 0) {
							if (f.push(n("array.sparse", {
								key: g,
								path: _,
								pos: a,
								value: void 0
							}, r.localize(_))), i.abortEarly) return f;
							l.shift();
							continue;
						}
						let v = [e, ...r.ancestors];
						for (let e of t.$_terms._exclusions) if (e.$_match(o, r.localize(_, v, e), i, { presence: "ignore" })) {
							if (f.push(n("array.excludes", {
								pos: a,
								value: o
							}, r.localize(_))), i.abortEarly) return f;
							m = !0, l.shift();
							break;
						}
						if (m) continue;
						if (t.$_terms.ordered.length) {
							if (l.length) {
								let s = l.shift(), u = s.$_validate(o, r.localize(_, v, s), i);
								if (!u.errors) if (s._flags.result === "strip") c.fastSplice(e, a), --a, --p;
								else if (!t._flags.sparse && u.value === void 0) {
									if (f.push(n("array.sparse", {
										key: g,
										path: _,
										pos: a,
										value: void 0
									}, r.localize(_))), i.abortEarly) return f;
									continue;
								} else e[a] = u.value;
								else if (f.push(...u.errors), i.abortEarly) return f;
								continue;
							} else if (!t.$_terms.items.length) {
								if (f.push(n("array.orderedLength", {
									pos: a,
									limit: t.$_terms.ordered.length
								})), i.abortEarly) return f;
								break;
							}
						}
						let y = [], b = s.length;
						for (let l = 0; l < b; ++l) {
							let u = r.localize(_, v, s[l]);
							u.snapshot();
							let d = s[l].$_validate(o, u, i);
							if (y[l] = d, !d.errors) {
								if (u.commit(), e[a] = d.value, h = !0, c.fastSplice(s, l), --l, --b, !t._flags.sparse && d.value === void 0 && (f.push(n("array.sparse", {
									key: g,
									path: _,
									pos: a,
									value: void 0
								}, r.localize(_))), i.abortEarly)) return f;
								break;
							}
							u.restore();
						}
						if (h) continue;
						let x = i.stripUnknown && !!i.stripUnknown.arrays || !1;
						b = u.length;
						for (let l of u) {
							let u, d = s.indexOf(l);
							if (d !== -1) u = y[d];
							else {
								let s = r.localize(_, v, l);
								if (s.snapshot(), u = l.$_validate(o, s, i), !u.errors) {
									s.commit(), l._flags.result === "strip" ? (c.fastSplice(e, a), --a, --p) : !t._flags.sparse && u.value === void 0 ? (f.push(n("array.sparse", {
										key: g,
										path: _,
										pos: a,
										value: void 0
									}, r.localize(_))), m = !0) : e[a] = u.value, h = !0;
									break;
								}
								s.restore();
							}
							if (b === 1) {
								if (x) {
									c.fastSplice(e, a), --a, --p, h = !0;
									break;
								}
								if (f.push(...u.errors), i.abortEarly) return f;
								m = !0;
								break;
							}
						}
						if (!m && (t.$_terms._inclusions.length || t.$_terms._requireds.length) && !h) {
							if (x) {
								c.fastSplice(e, a), --a, --p;
								continue;
							}
							if (f.push(n("array.includes", {
								pos: a,
								value: o
							}, r.localize(_))), i.abortEarly) return f;
						}
					}
					return s.length && c.fillMissedErrors(t, f, s, e, r, i), l.length && (c.fillOrderedErrors(t, f, l, e, r, i), f.length || c.fillDefault(l, e, r, i)), f.length ? f : e;
				},
				priority: !0,
				manifest: !1
			},
			length: {
				method(e) {
					return this.$_addRule({
						name: "length",
						args: { limit: e },
						operator: "="
					});
				},
				validate(e, t, { limit: n }, { name: r, operator: i, args: a }) {
					return o.compare(e.length, n, i) ? e : t.error("array." + r, {
						limit: a.limit,
						value: e
					});
				},
				jsonSchema(e, t) {
					return t.minItems = e.args.limit, t.maxItems = e.args.limit, t;
				},
				args: [{
					name: "limit",
					ref: !0,
					assert: o.limit,
					message: "must be a positive integer"
				}]
			},
			max: {
				method(e) {
					return this.$_addRule({
						name: "max",
						method: "length",
						args: { limit: e },
						operator: "<="
					});
				},
				jsonSchema(e, t) {
					return t.maxItems = e.args.limit, t;
				}
			},
			min: {
				method(e) {
					return this.$_addRule({
						name: "min",
						method: "length",
						args: { limit: e },
						operator: ">="
					});
				},
				jsonSchema(e, t) {
					return t.minItems = e.args.limit, t;
				}
			},
			ordered: { method(...e) {
				o.verifyFlat(e, "ordered");
				let t = this.$_addRule("items");
				for (let n = 0; n < e.length; ++n) {
					let r = o.tryWithPath(() => this.$_compile(e[n]), n, { append: !0 });
					c.validateSingle(r, t), t.$_mutateRegister(r), t.$_terms.ordered.push(r);
				}
				return t.$_mutateRebuild();
			} },
			single: { method(e) {
				let t = e === void 0 ? !0 : !!e;
				return n(!t || !this._flags._arrayItems, "Cannot specify single rule when array has array items"), this.$_setFlag("single", t);
			} },
			sort: {
				method(e = {}) {
					o.assertOptions(e, ["by", "order"]);
					let t = { order: e.order || "ascending" };
					return e.by && (t.by = s.ref(e.by, { ancestor: 0 }), n(!t.by.ancestor, "Cannot sort by ancestor")), this.$_addRule({
						name: "sort",
						args: { options: t }
					});
				},
				validate(e, { error: t, state: n, prefs: r, schema: i }, { options: a }) {
					let { value: o, errors: s } = c.sort(i, e, a, n, r);
					if (s) return s;
					for (let n = 0; n < e.length; ++n) if (e[n] !== o[n]) return t("array.sort", {
						order: a.order,
						by: a.by ? a.by.key : "value"
					});
					return e;
				},
				convert: !0
			},
			sparse: { method(e) {
				let t = e === void 0 ? !0 : !!e;
				return this._flags.sparse === t ? this : (t ? this.clone() : this.$_addRule("items")).$_setFlag("sparse", t, { clone: !1 });
			} },
			unique: {
				method(e, t = {}) {
					n(!e || typeof e == "function" || typeof e == "string", "comparator must be a function or a string"), o.assertOptions(t, ["ignoreUndefined", "separator"]);
					let r = {
						name: "unique",
						args: {
							options: t,
							comparator: e
						}
					};
					if (e) if (typeof e == "string") {
						let n = o.default(t.separator, ".");
						r.path = n ? e.split(n) : [e];
					} else r.comparator = e;
					return this.$_addRule(r);
				},
				validate(e, { state: t, error: a, schema: o }, { comparator: s, options: c }, { comparator: l, path: u }) {
					let d = {
						string: Object.create(null),
						number: Object.create(null),
						undefined: Object.create(null),
						boolean: Object.create(null),
						bigint: Object.create(null),
						object: /* @__PURE__ */ new Map(),
						function: /* @__PURE__ */ new Map(),
						custom: /* @__PURE__ */ new Map()
					}, f = l || r, p = c.ignoreUndefined;
					for (let r = 0; r < e.length; ++r) {
						let o = u ? i(e[r], u) : e[r], c = l ? d.custom : d[typeof o];
						if (n(c, "Failed to find unique map container for type", typeof o), c instanceof Map) {
							let n = c.entries(), i;
							for (; !(i = n.next()).done;) if (f(i.value[0], o)) {
								let n = t.localize([...t.path, r], [e, ...t.ancestors]), o = {
									pos: r,
									value: e[r],
									dupePos: i.value[1],
									dupeValue: e[i.value[1]]
								};
								return u && (o.path = s), a("array.unique", o, n);
							}
							c.set(o, r);
						} else {
							if ((!p || o !== void 0) && c[o] !== void 0) {
								let n = {
									pos: r,
									value: e[r],
									dupePos: c[o],
									dupeValue: e[c[o]]
								};
								return u && (n.path = s), a("array.unique", n, t.localize([...t.path, r], [e, ...t.ancestors]));
							}
							c[o] = r;
						}
					}
					return e;
				},
				jsonSchema(e, t) {
					return t.uniqueItems = !0, t;
				},
				args: ["comparator", "options"],
				multi: !0
			}
		},
		overrides: { isAsync() {
			if (this.$_terms.externals?.length) return !0;
			for (let e of this.$_terms.items) if (e.isAsync()) return !0;
			for (let e of this.$_terms.ordered) if (e.isAsync()) return !0;
			return !1;
		} },
		cast: { set: {
			from: Array.isArray,
			to(e, t) {
				return new Set(e);
			}
		} },
		rebuild(e) {
			e.$_terms._inclusions = [], e.$_terms._exclusions = [], e.$_terms._requireds = [];
			for (let t of e.$_terms.items) c.validateSingle(t, e), t._flags.presence === "required" ? e.$_terms._requireds.push(t) : t._flags.presence === "forbidden" ? e.$_terms._exclusions.push(t) : e.$_terms._inclusions.push(t);
			for (let t of e.$_terms.ordered) c.validateSingle(t, e);
		},
		manifest: { build(e, t) {
			return t.items && (e = e.items(...t.items)), t.ordered && (e = e.ordered(...t.ordered)), e;
		} },
		messages: {
			"array.base": "{{#label}} must be an array",
			"array.excludes": "{{#label}} contains an excluded value",
			"array.hasKnown": "{{#label}} does not contain at least one required match for type {:#patternLabel}",
			"array.hasUnknown": "{{#label}} does not contain at least one required match",
			"array.includes": "{{#label}} does not match any of the allowed types",
			"array.includesRequiredBoth": "{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)",
			"array.includesRequiredKnowns": "{{#label}} does not contain {{#knownMisses}}",
			"array.includesRequiredUnknowns": "{{#label}} does not contain {{#unknownMisses}} required value(s)",
			"array.length": "{{#label}} must contain {{#limit}} items",
			"array.max": "{{#label}} must contain less than or equal to {{#limit}} items",
			"array.min": "{{#label}} must contain at least {{#limit}} items",
			"array.orderedLength": "{{#label}} must contain at most {{#limit}} items",
			"array.sort": "{{#label}} must be sorted in {#order} order by {{#by}}",
			"array.sort.mismatching": "{{#label}} cannot be sorted due to mismatching types",
			"array.sort.unsupported": "{{#label}} cannot be sorted due to unsupported type {#type}",
			"array.sparse": "{{#label}} must not be a sparse array item",
			"array.unique": "{{#label}} contains a duplicate value"
		}
	}), c.fillMissedErrors = function(e, t, n, r, i, a) {
		let o = [], s = 0;
		for (let e of n) {
			let t = e._flags.label;
			t ? o.push(t) : ++s;
		}
		o.length ? s ? t.push(e.$_createError("array.includesRequiredBoth", r, {
			knownMisses: o,
			unknownMisses: s
		}, i, a)) : t.push(e.$_createError("array.includesRequiredKnowns", r, { knownMisses: o }, i, a)) : t.push(e.$_createError("array.includesRequiredUnknowns", r, { unknownMisses: s }, i, a));
	}, c.fillOrderedErrors = function(e, t, n, r, i, a) {
		let o = [];
		for (let e of n) e._flags.presence === "required" && o.push(e);
		o.length && c.fillMissedErrors(e, t, o, r, i, a);
	}, c.fillDefault = function(e, t, n, r) {
		let i = [], a = !0;
		for (let o = e.length - 1; o >= 0; --o) {
			let s = e[o], c = [t, ...n.ancestors], l = s.$_validate(void 0, n.localize(n.path, c, s), r).value;
			if (a) {
				if (l === void 0) continue;
				a = !1;
			}
			i.unshift(l);
		}
		i.length && t.push(...i);
	}, c.fastSplice = function(e, t) {
		let n = t;
		for (; n < e.length;) e[n++] = e[n];
		--e.length;
	}, c.validateSingle = function(e, t) {
		(e.type === "array" || e._flags._arrayItems) && (n(!t._flags.single, "Cannot specify array item with single rule enabled"), t.$_setFlag("_arrayItems", !0, { clone: !1 }));
	}, c.sort = function(e, t, n, r, i) {
		let a = n.order === "ascending" ? 1 : -1, o = -1 * a, s = a, l = (l, u) => {
			let d = c.compare(l, u, o, s);
			if (d !== null || (n.by && (l = n.by.resolve(l, r, i), u = n.by.resolve(u, r, i)), d = c.compare(l, u, o, s), d !== null)) return d;
			let f = typeof l;
			if (f !== typeof u) throw e.$_createError("array.sort.mismatching", t, null, r, i);
			if (f !== "number" && f !== "string") throw e.$_createError("array.sort.unsupported", t, { type: f }, r, i);
			return f === "number" ? (l - u) * a : l < u ? o : s;
		};
		try {
			return { value: t.slice().sort(l) };
		} catch (e) {
			return { errors: e };
		}
	}, c.compare = function(e, t, n, r) {
		return e === t ? 0 : e === void 0 ? 1 : t === void 0 ? -1 : e === null ? r : t === null ? n : null;
	};
})), ue = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = R(), i = P(), a = oe(), o = {};
	o.isBool = function(e) {
		return typeof e == "boolean";
	}, t.exports = r.extend({
		type: "boolean",
		flags: { sensitive: { default: !1 } },
		terms: {
			falsy: {
				init: null,
				manifest: "values"
			},
			truthy: {
				init: null,
				manifest: "values"
			}
		},
		coerce(e, { schema: t }) {
			if (typeof e != "boolean") {
				if (typeof e == "string") {
					let n = e.trim(), r = t._flags.sensitive ? n : n.toLowerCase();
					e = r === "true" ? !0 : r === "false" ? !1 : e;
				}
				return typeof e != "boolean" && (e = t.$_terms.truthy && t.$_terms.truthy.has(e, null, null, !t._flags.sensitive) || (t.$_terms.falsy && t.$_terms.falsy.has(e, null, null, !t._flags.sensitive) ? !1 : e)), { value: e };
			}
		},
		validate(e, { error: t }) {
			if (typeof e != "boolean") return {
				value: e,
				errors: t("boolean.base")
			};
		},
		rules: {
			truthy: { method(...e) {
				i.verifyFlat(e, "truthy");
				let t = this.clone();
				t.$_terms.truthy = t.$_terms.truthy || new a();
				for (let r = 0; r < e.length; ++r) {
					let i = e[r];
					n(i !== void 0, "Cannot call truthy with undefined"), t.$_terms.truthy.add(i);
				}
				return t;
			} },
			falsy: { method(...e) {
				i.verifyFlat(e, "falsy");
				let t = this.clone();
				t.$_terms.falsy = t.$_terms.falsy || new a();
				for (let r = 0; r < e.length; ++r) {
					let i = e[r];
					n(i !== void 0, "Cannot call falsy with undefined"), t.$_terms.falsy.add(i);
				}
				return t;
			} },
			sensitive: { method(e = !0) {
				return this.$_setFlag("sensitive", e);
			} }
		},
		cast: {
			number: {
				from: o.isBool,
				to(e, t) {
					return +!!e;
				}
			},
			string: {
				from: o.isBool,
				to(e, t) {
					return e ? "true" : "false";
				}
			}
		},
		manifest: { build(e, t) {
			return t.truthy && (e = e.truthy(...t.truthy)), t.falsy && (e = e.falsy(...t.falsy)), e;
		} },
		messages: { "boolean.base": "{{#label}} must be a boolean" }
	});
})), de = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = R(), i = P(), a = M(), o = { formats: [
		"iso",
		"javascript",
		"unix"
	] };
	o.isDate = function(e) {
		return e instanceof Date;
	}, t.exports = r.extend({
		type: "date",
		coerce: {
			from: ["number", "string"],
			method(e, { schema: t }) {
				return { value: o.parse(e, t._flags.format) || e };
			}
		},
		validate(e, { schema: t, error: n, prefs: r }) {
			if (e instanceof Date && !isNaN(e.getTime())) return;
			let i = t._flags.format;
			return !r.convert || !i || typeof e != "string" ? {
				value: e,
				errors: n("date.base")
			} : {
				value: e,
				errors: n("date.format", { format: i })
			};
		},
		jsonSchema(e, t, n, r) {
			return t.type = "string", t.format = "date-time", t;
		},
		rules: {
			compare: {
				method: !1,
				validate(e, t, { date: n }, { name: r, operator: a, args: o }) {
					let s = n === "now" ? Date.now() : n.getTime();
					return i.compare(e.getTime(), s, a) ? e : t.error("date." + r, {
						limit: o.date,
						value: e
					});
				},
				args: [{
					name: "date",
					ref: !0,
					normalize: (e) => e === "now" ? e : o.parse(e),
					assert: (e) => e !== null,
					message: "must have a valid date format"
				}]
			},
			format: { method(e) {
				return n(o.formats.includes(e), "Unknown date format", e), this.$_setFlag("format", e);
			} },
			greater: {
				method(e) {
					return this.$_addRule({
						name: "greater",
						method: "compare",
						args: { date: e },
						operator: ">"
					});
				},
				jsonSchema(e, t) {
					let n = e.args.date;
					return n instanceof Date && (t["x-constraint"] = {
						...t["x-constraint"],
						greater: n.toISOString()
					}), t;
				}
			},
			iso: { method() {
				return this.format("iso");
			} },
			less: {
				method(e) {
					return this.$_addRule({
						name: "less",
						method: "compare",
						args: { date: e },
						operator: "<"
					});
				},
				jsonSchema(e, t) {
					let n = e.args.date;
					return n instanceof Date && (t["x-constraint"] = {
						...t["x-constraint"],
						less: n.toISOString()
					}), t;
				}
			},
			max: {
				method(e) {
					return this.$_addRule({
						name: "max",
						method: "compare",
						args: { date: e },
						operator: "<="
					});
				},
				jsonSchema(e, t) {
					let n = e.args.date;
					return n instanceof Date && (t["x-constraint"] = {
						...t["x-constraint"],
						max: n.toISOString()
					}), t;
				}
			},
			min: {
				method(e) {
					return this.$_addRule({
						name: "min",
						method: "compare",
						args: { date: e },
						operator: ">="
					});
				},
				jsonSchema(e, t) {
					let n = e.args.date;
					return n instanceof Date && (t["x-constraint"] = {
						...t["x-constraint"],
						min: n.toISOString()
					}), t;
				}
			},
			timestamp: { method(e = "javascript") {
				return n(["javascript", "unix"].includes(e), "\"type\" must be one of \"javascript, unix\""), this.format(e);
			} }
		},
		cast: {
			number: {
				from: o.isDate,
				to(e, t) {
					return e.getTime();
				}
			},
			string: {
				from: o.isDate,
				to(e, { prefs: t }) {
					return a.date(e, t);
				}
			}
		},
		messages: {
			"date.base": "{{#label}} must be a valid date",
			"date.format": "{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format",
			"date.greater": "{{#label}} must be greater than {{:#limit}}",
			"date.less": "{{#label}} must be less than {{:#limit}}",
			"date.max": "{{#label}} must be less than or equal to {{:#limit}}",
			"date.min": "{{#label}} must be greater than or equal to {{:#limit}}",
			"date.format.iso": "ISO 8601 date",
			"date.format.javascript": "timestamp or number of milliseconds",
			"date.format.unix": "timestamp or number of seconds"
		}
	}), o.parse = function(e, t) {
		if (e instanceof Date) return e;
		if (typeof e != "string" && (isNaN(e) || !isFinite(e)) || /^\s*$/.test(e)) return null;
		if (t === "iso") return i.isIsoDate(e) ? o.date(e.toString()) : null;
		let n = e;
		if (typeof e == "string" && /^[+-]?\d+(\.\d+)?$/.test(e) && (e = parseFloat(e)), t) {
			if (t === "javascript") return o.date(1 * e);
			if (t === "unix") return o.date(1e3 * e);
			if (typeof n == "string") return null;
		}
		return o.date(e);
	}, o.date = function(e) {
		let t = new Date(e);
		return isNaN(t.getTime()) ? null : t;
	};
})), fe = /* @__PURE__ */ s(((e) => {
	var { assert: t } = E(), n = {};
	e.Sorter = class {
		constructor() {
			this._items = [], this.nodes = [];
		}
		add(e, n) {
			n ??= {};
			let r = [].concat(n.before ?? []), i = [].concat(n.after ?? []), a = n.group ?? "?", o = n.sort ?? 0;
			t(!r.includes(a), `Item cannot come before itself: ${a}`), t(!r.includes("?"), "Item cannot come before unassociated items"), t(!i.includes(a), `Item cannot come after itself: ${a}`), t(!i.includes("?"), "Item cannot come after unassociated items"), Array.isArray(e) || (e = [e]);
			for (let t of e) {
				let e = {
					seq: this._items.length,
					sort: o,
					before: r,
					after: i,
					group: a,
					node: t
				};
				this._items.push(e);
			}
			return n.manual || t(this._sort(), "item", a === "?" ? "" : `added into group ${a}`, "created a dependencies error"), this.nodes;
		}
		merge(e) {
			Array.isArray(e) || (e = [e]);
			for (let t of e) if (t) for (let e of t._items) this._items.push(Object.assign({}, e));
			this._items.sort(n.mergeSort);
			for (let e = 0; e < this._items.length; ++e) this._items[e].seq = e;
			return t(this._sort(), "merge created a dependencies error"), this.nodes;
		}
		sort() {
			return t(this._sort(), "sort created a dependencies error"), this.nodes;
		}
		_sort() {
			let e = {}, t = Object.create(null), n = Object.create(null);
			for (let r of this._items) {
				let i = r.seq, a = r.group;
				n[a] = n[a] ?? [], n[a].push(i), e[i] = r.before;
				for (let e of r.after) t[e] = t[e] ?? [], t[e].push(i);
			}
			for (let t in e) {
				let r = [];
				for (let i in e[t]) {
					let a = e[t][i];
					n[a] = n[a] ?? [], r.push(...n[a]);
				}
				e[t] = r;
			}
			for (let r in t) if (n[r]) for (let i of n[r]) e[i].push(...t[r]);
			let r = {};
			for (let t in e) {
				let n = e[t];
				for (let e of n) r[e] = r[e] ?? [], r[e].push(t);
			}
			let i = {}, a = [];
			for (let e = 0; e < this._items.length; ++e) {
				let t = e;
				if (r[e]) {
					t = null;
					for (let e = 0; e < this._items.length; ++e) {
						if (i[e] === !0) continue;
						r[e] || (r[e] = []);
						let n = r[e].length, a = 0;
						for (let t = 0; t < n; ++t) i[r[e][t]] && ++a;
						if (a === n) {
							t = e;
							break;
						}
					}
				}
				t !== null && (i[t] = !0, a.push(t));
			}
			if (a.length !== this._items.length) return !1;
			let o = {};
			for (let e of this._items) o[e.seq] = e;
			this._items = [], this.nodes = [];
			for (let e of a) {
				let t = o[e];
				this.nodes.push(t.node), this._items.push(t);
			}
			return !0;
		}
	}, n.mergeSort = (e, t) => e.sort === t.sort ? 0 : e.sort < t.sort ? -1 : 1;
})), z = /* @__PURE__ */ s(((e, t) => {
	var { applyToDefaults: n, assert: r, clone: i } = E(), a = fe(), o = R(), s = P(), c = I(), l = A(), u = j(), d = M(), f = { renameDefaults: {
		alias: !1,
		multiple: !1,
		override: !1
	} };
	t.exports = o.extend({
		type: "_keys",
		properties: { typeof: "object" },
		flags: { unknown: { default: void 0 } },
		terms: {
			dependencies: { init: null },
			keys: {
				init: null,
				manifest: { mapped: {
					from: "schema",
					to: "key"
				} }
			},
			patterns: { init: null },
			renames: { init: null }
		},
		args(e, t) {
			return e.keys(t);
		},
		jsonSchema(e, t, n, r) {
			if (t.type = "object", e.$_terms.keys) {
				t.properties = {};
				let i = [];
				for (let a of e.$_terms.keys) {
					let e = a.schema.$_jsonSchema(n, r);
					t.properties[a.key] = e, (a.schema._flags.presence === "required" || n === "output" && a.schema._flags.default !== void 0) && i.push(a.key);
				}
				i.length && (t.required = i.sort());
			}
			if (e.$_terms.patterns) {
				let i = {};
				for (let a of e.$_terms.patterns) a.regex ? i[a.regex.source] = a.rule.$_jsonSchema(n, r) : a.schema.type === "any" ? t.additionalProperties = a.rule.$_jsonSchema(n, r) : i[".*"] = a.rule.$_jsonSchema(n, r);
				Object.keys(i).length && (t.patternProperties = i);
			}
			return t.additionalProperties === void 0 && (e._flags.unknown === !0 || e._flags.unknown === void 0 && !e.$_terms.keys && !e.$_terms.patterns && !e._flags.only || (t.additionalProperties = !1)), t;
		},
		validate(e, { schema: t, error: n, state: r, prefs: i }) {
			if (!e || typeof e !== t.$_property("typeof") || Array.isArray(e)) return {
				value: e,
				errors: n("object.base", { type: t.$_property("typeof") })
			};
			if (!t.$_terms.renames && !t.$_terms.dependencies && !t.$_terms.keys && !t.$_terms.patterns && !t.$_terms.externals) return;
			e = f.clone(e, i);
			let a = [];
			if (t.$_terms.renames && !f.rename(t, e, r, i, a) || !t.$_terms.keys && !t.$_terms.patterns && !t.$_terms.dependencies) return {
				value: e,
				errors: a
			};
			let o = new Set(Object.keys(e));
			if (t.$_terms.keys) {
				let n = [e, ...r.ancestors];
				for (let s of t.$_terms.keys) {
					let t = s.key, c = e[t];
					o.delete(t);
					let l = r.localize([...r.path, t], n, s), u = s.schema.$_validate(c, l, i);
					if (u.errors) {
						if (i.abortEarly) return {
							value: e,
							errors: u.errors
						};
						u.value !== void 0 && (e[t] = u.value), a.push(...u.errors);
					} else s.schema._flags.result === "strip" || u.value === void 0 && c !== void 0 ? delete e[t] : u.value !== void 0 && (e[t] = u.value);
				}
			}
			if (o.size || t._flags._hasPatternMatch) {
				let n = f.unknown(t, e, o, a, r, i);
				if (n) return n;
			}
			if (t.$_terms.dependencies) for (let n of t.$_terms.dependencies) {
				if (n.key !== null && f.isPresent(n.options)(n.key.resolve(e, r, i, null, { shadow: !1 })) === !1) continue;
				let o = f.dependencies[n.rel](t, n, e, r, i);
				if (o) {
					let n = t.$_createError(o.code, e, o.context, r, i);
					if (i.abortEarly) return {
						value: e,
						errors: n
					};
					a.push(n);
				}
			}
			return {
				value: e,
				errors: a
			};
		},
		rules: {
			and: { method(...e) {
				return s.verifyFlat(e, "and"), f.dependency(this, "and", null, e);
			} },
			append: { method(e) {
				return e == null || Object.keys(e).length === 0 ? this : this.keys(e);
			} },
			assert: {
				method(e, t, n) {
					d.isTemplate(e) || (e = c.ref(e)), r(n === void 0 || typeof n == "string", "Message must be a string"), t = this.$_compile(t, { appendPath: !0 });
					let i = this.$_addRule({
						name: "assert",
						args: {
							subject: e,
							schema: t,
							message: n
						}
					});
					return i.$_mutateRegister(e), i.$_mutateRegister(t), i;
				},
				validate(e, { error: t, prefs: n, state: r }, { subject: i, schema: a, message: o }) {
					let s = i.resolve(e, r, n), c = u.isRef(i) ? i.absolute(r) : [];
					return a.$_match(s, r.localize(c, [e, ...r.ancestors], a), n) ? e : t("object.assert", {
						subject: i,
						message: o
					});
				},
				args: [
					"subject",
					"schema",
					"message"
				],
				multi: !0
			},
			instance: {
				method(e, t) {
					return r(typeof e == "function", "constructor must be a function"), t ||= e.name, this.$_addRule({
						name: "instance",
						args: {
							constructor: e,
							name: t
						}
					});
				},
				validate(e, t, { constructor: n, name: r }) {
					return e instanceof n ? e : t.error("object.instance", {
						type: r,
						value: e
					});
				},
				args: ["constructor", "name"]
			},
			keys: { method(e) {
				r(e === void 0 || typeof e == "object", "Object schema must be a valid object"), r(!s.isSchema(e), "Object schema cannot be a joi schema");
				let t = this.clone();
				if (!e) t.$_terms.keys = null;
				else if (!Object.keys(e).length) t.$_terms.keys = new f.Keys();
				else {
					t.$_terms.keys = t.$_terms.keys ? t.$_terms.keys.filter((t) => !e.hasOwnProperty(t.key)) : new f.Keys();
					for (let n in e) s.tryWithPath(() => t.$_terms.keys.push({
						key: n,
						schema: this.$_compile(e[n])
					}), n);
				}
				return t.$_mutateRebuild();
			} },
			length: {
				method(e) {
					return this.$_addRule({
						name: "length",
						args: { limit: e },
						operator: "="
					});
				},
				validate(e, t, { limit: n }, { name: r, operator: i, args: a }) {
					return s.compare(Object.keys(e).length, n, i) ? e : t.error("object." + r, {
						limit: a.limit,
						value: e
					});
				},
				jsonSchema(e, t) {
					return t.minProperties = e.args.limit, t.maxProperties = e.args.limit, t;
				},
				args: [{
					name: "limit",
					ref: !0,
					assert: s.limit,
					message: "must be a positive integer"
				}]
			},
			max: {
				method(e) {
					return this.$_addRule({
						name: "max",
						method: "length",
						args: { limit: e },
						operator: "<="
					});
				},
				jsonSchema(e, t) {
					return t.maxProperties = e.args.limit, t;
				}
			},
			min: {
				method(e) {
					return this.$_addRule({
						name: "min",
						method: "length",
						args: { limit: e },
						operator: ">="
					});
				},
				jsonSchema(e, t) {
					return t.minProperties = e.args.limit, t;
				}
			},
			nand: { method(...e) {
				return s.verifyFlat(e, "nand"), f.dependency(this, "nand", null, e);
			} },
			or: { method(...e) {
				return s.verifyFlat(e, "or"), f.dependency(this, "or", null, e);
			} },
			oxor: { method(...e) {
				return f.dependency(this, "oxor", null, e);
			} },
			pattern: { method(e, t, n = {}) {
				let i = e instanceof RegExp;
				i || (e = this.$_compile(e, { appendPath: !0 })), r(t !== void 0, "Invalid rule"), s.assertOptions(n, ["fallthrough", "matches"]), i && r(!e.flags.includes("g") && !e.flags.includes("y"), "pattern should not use global or sticky mode"), t = this.$_compile(t, { appendPath: !0 });
				let a = this.clone();
				a.$_terms.patterns = a.$_terms.patterns || [];
				let o = {
					[i ? "regex" : "schema"]: e,
					rule: t
				};
				return n.matches && (o.matches = this.$_compile(n.matches), o.matches.type !== "array" && (o.matches = o.matches.$_root.array().items(o.matches)), a.$_mutateRegister(o.matches), a.$_setFlag("_hasPatternMatch", !0, { clone: !1 })), n.fallthrough && (o.fallthrough = !0), a.$_terms.patterns.push(o), a.$_mutateRegister(t), a;
			} },
			ref: {
				method() {
					return this.$_addRule("ref");
				},
				validate(e, t) {
					return u.isRef(e) ? e : t.error("object.refType", { value: e });
				}
			},
			regex: {
				method() {
					return this.$_addRule("regex");
				},
				validate(e, t) {
					return e instanceof RegExp ? e : t.error("object.regex", { value: e });
				}
			},
			rename: { method(e, t, i = {}) {
				r(typeof e == "string" || e instanceof RegExp, "Rename missing the from argument"), r(typeof t == "string" || t instanceof d, "Invalid rename to argument"), r(t !== e, "Cannot rename key to same name:", e), s.assertOptions(i, [
					"alias",
					"ignoreUndefined",
					"override",
					"multiple"
				]);
				let a = this.clone();
				a.$_terms.renames = a.$_terms.renames || [];
				for (let t of a.$_terms.renames) r(t.from !== e, "Cannot rename the same key multiple times");
				return t instanceof d && a.$_mutateRegister(t), a.$_terms.renames.push({
					from: e,
					to: t,
					options: n(f.renameDefaults, i)
				}), a;
			} },
			schema: {
				method(e = "any") {
					return this.$_addRule({
						name: "schema",
						args: { type: e }
					});
				},
				validate(e, t, { type: n }) {
					return s.isSchema(e) && (n === "any" || e.type === n) ? e : t.error("object.schema", { type: n });
				}
			},
			unknown: { method(e) {
				return this.$_setFlag("unknown", e !== !1);
			} },
			with: { method(e, t, n = {}) {
				return f.dependency(this, "with", e, t, n);
			} },
			without: { method(e, t, n = {}) {
				return f.dependency(this, "without", e, t, n);
			} },
			xor: { method(...e) {
				return s.verifyFlat(e, "xor"), f.dependency(this, "xor", null, e);
			} }
		},
		overrides: {
			default(e, t) {
				return e === void 0 && (e = s.symbols.deepDefault), this.$_parent("default", e, t);
			},
			isAsync() {
				if (this.$_terms.externals?.length) return !0;
				if (this.$_terms.keys?.length) {
					for (let e of this.$_terms.keys) if (e.schema.isAsync()) return !0;
				}
				if (this.$_terms.patterns?.length) {
					for (let e of this.$_terms.patterns) if (e.rule.isAsync()) return !0;
				}
				return !1;
			}
		},
		rebuild(e) {
			if (e.$_terms.keys) {
				let t = new a.Sorter();
				for (let n of e.$_terms.keys) s.tryWithPath(() => t.add(n, {
					after: n.schema.$_rootReferences(),
					group: n.key
				}), n.key);
				e.$_terms.keys = new f.Keys(...t.nodes);
			}
		},
		manifest: { build(e, t) {
			if (t.keys && (e = e.keys(t.keys)), t.dependencies) for (let { rel: n, key: r = null, peers: i, options: a } of t.dependencies) e = f.dependency(e, n, r, i, a);
			if (t.patterns) for (let { regex: n, schema: r, rule: i, fallthrough: a, matches: o } of t.patterns) e = e.pattern(n || r, i, {
				fallthrough: a,
				matches: o
			});
			if (t.renames) for (let { from: n, to: r, options: i } of t.renames) e = e.rename(n, r, i);
			return e;
		} },
		messages: {
			"object.and": "{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}",
			"object.assert": "{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}",
			"object.base": "{{#label}} must be of type {{#type}}",
			"object.instance": "{{#label}} must be an instance of {{:#type}}",
			"object.length": "{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
			"object.max": "{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
			"object.min": "{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}",
			"object.missing": "{{#label}} must contain at least one of {{#peersWithLabels}}",
			"object.nand": "{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}",
			"object.oxor": "{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}",
			"object.pattern.match": "{{#label}} keys failed to match pattern requirements",
			"object.refType": "{{#label}} must be a Joi reference",
			"object.regex": "{{#label}} must be a RegExp object",
			"object.rename.multiple": "{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}",
			"object.rename.override": "{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists",
			"object.schema": "{{#label}} must be a Joi schema of {{#type}} type",
			"object.unknown": "{{#label}} is not allowed",
			"object.with": "{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}",
			"object.without": "{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}",
			"object.xor": "{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}"
		}
	}), f.clone = function(e, t) {
		if (typeof e == "object") {
			if (t.nonEnumerables) return i(e, { shallow: !0 });
			let n = Object.create(Object.getPrototypeOf(e));
			return Object.assign(n, e), n;
		}
		let n = function(...t) {
			return e.apply(this, t);
		};
		return n.prototype = i(e.prototype), Object.defineProperty(n, "name", {
			value: e.name,
			writable: !1
		}), Object.defineProperty(n, "length", {
			value: e.length,
			writable: !1
		}), Object.assign(n, e), n;
	}, f.dependency = function(e, t, n, i, a) {
		r(n === null || typeof n == "string", t, "key must be a strings"), a ||= i.length > 1 && typeof i[i.length - 1] == "object" ? i.pop() : {}, s.assertOptions(a, ["separator", "isPresent"]), i = [].concat(i);
		let o = s.default(a.separator, "."), l = [];
		for (let e of i) r(typeof e == "string", t, "peers must be strings"), l.push(c.ref(e, {
			separator: o,
			ancestor: 0,
			prefix: !1
		}));
		n !== null && (n = c.ref(n, {
			separator: o,
			ancestor: 0,
			prefix: !1
		}));
		let u = e.clone();
		return u.$_terms.dependencies = u.$_terms.dependencies || [], u.$_terms.dependencies.push(new f.Dependency(t, n, l, i, a)), u;
	}, f.dependencies = {
		and(e, t, n, r, i) {
			let a = [], o = [], s = t.peers.length, c = f.isPresent(t.options);
			for (let e of t.peers) c(e.resolve(n, r, i, null, { shadow: !1 })) === !1 ? a.push(e.key) : o.push(e.key);
			if (a.length !== s && o.length !== s) return {
				code: "object.and",
				context: {
					present: o,
					presentWithLabels: f.keysToLabels(e, o),
					missing: a,
					missingWithLabels: f.keysToLabels(e, a)
				}
			};
		},
		nand(e, t, n, r, i) {
			let a = [], o = f.isPresent(t.options);
			for (let e of t.peers) o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
			if (a.length !== t.peers.length) return;
			let s = t.paths[0], c = t.paths.slice(1);
			return {
				code: "object.nand",
				context: {
					main: s,
					mainWithLabel: f.keysToLabels(e, s),
					peers: c,
					peersWithLabels: f.keysToLabels(e, c)
				}
			};
		},
		or(e, t, n, r, i) {
			let a = f.isPresent(t.options);
			for (let e of t.peers) if (a(e.resolve(n, r, i, null, { shadow: !1 }))) return;
			return {
				code: "object.missing",
				context: {
					peers: t.paths,
					peersWithLabels: f.keysToLabels(e, t.paths)
				}
			};
		},
		oxor(e, t, n, r, i) {
			let a = [], o = f.isPresent(t.options);
			for (let e of t.peers) o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
			if (!a.length || a.length === 1) return;
			let s = {
				peers: t.paths,
				peersWithLabels: f.keysToLabels(e, t.paths)
			};
			return s.present = a, s.presentWithLabels = f.keysToLabels(e, a), {
				code: "object.oxor",
				context: s
			};
		},
		with(e, t, n, r, i) {
			let a = f.isPresent(t.options);
			for (let o of t.peers) if (a(o.resolve(n, r, i, null, { shadow: !1 })) === !1) return {
				code: "object.with",
				context: {
					main: t.key.key,
					mainWithLabel: f.keysToLabels(e, t.key.key),
					peer: o.key,
					peerWithLabel: f.keysToLabels(e, o.key)
				}
			};
		},
		without(e, t, n, r, i) {
			let a = f.isPresent(t.options);
			for (let o of t.peers) if (a(o.resolve(n, r, i, null, { shadow: !1 }))) return {
				code: "object.without",
				context: {
					main: t.key.key,
					mainWithLabel: f.keysToLabels(e, t.key.key),
					peer: o.key,
					peerWithLabel: f.keysToLabels(e, o.key)
				}
			};
		},
		xor(e, t, n, r, i) {
			let a = [], o = f.isPresent(t.options);
			for (let e of t.peers) o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
			if (a.length === 1) return;
			let s = {
				peers: t.paths,
				peersWithLabels: f.keysToLabels(e, t.paths)
			};
			return a.length === 0 ? {
				code: "object.missing",
				context: s
			} : (s.present = a, s.presentWithLabels = f.keysToLabels(e, a), {
				code: "object.xor",
				context: s
			});
		}
	}, f.keysToLabels = function(e, t) {
		return Array.isArray(t) ? t.map((t) => e.$_mapLabels(t)) : e.$_mapLabels(t);
	}, f.isPresent = function(e) {
		return typeof e.isPresent == "function" ? e.isPresent : (e) => e !== void 0;
	}, f.rename = function(e, t, n, r, i) {
		let a = {};
		for (let o of e.$_terms.renames) {
			let s = [], c = typeof o.from != "string";
			if (!c) Object.prototype.hasOwnProperty.call(t, o.from) && (t[o.from] !== void 0 || !o.options.ignoreUndefined) && s.push(o);
			else for (let e in t) {
				if (t[e] === void 0 && o.options.ignoreUndefined || e === o.to) continue;
				let n = o.from.exec(e);
				n && s.push({
					from: e,
					to: o.to,
					match: n
				});
			}
			for (let l of s) {
				let s = l.from, u = l.to;
				if (u instanceof d && (u = u.render(t, n, r, l.match)), s !== u) {
					if (!o.options.multiple && a[u] && (i.push(e.$_createError("object.rename.multiple", t, {
						from: s,
						to: u,
						pattern: c
					}, n, r)), r.abortEarly) || Object.prototype.hasOwnProperty.call(t, u) && !o.options.override && !a[u] && (i.push(e.$_createError("object.rename.override", t, {
						from: s,
						to: u,
						pattern: c
					}, n, r)), r.abortEarly)) return !1;
					t[s] === void 0 ? delete t[u] : t[u] = t[s], a[u] = !0, o.options.alias || delete t[s];
				}
			}
		}
		return !0;
	}, f.unknown = function(e, t, n, r, i, a) {
		if (e.$_terms.patterns) {
			let o = !1, s = e.$_terms.patterns.map((e) => {
				if (e.matches) return o = !0, [];
			}), c = [t, ...i.ancestors];
			for (let o of n) {
				let l = t[o], u = [...i.path, o];
				for (let d = 0; d < e.$_terms.patterns.length; ++d) {
					let f = e.$_terms.patterns[d];
					if (f.regex) {
						let e = f.regex.test(o);
						if (i.mainstay.tracer.debug(i, "rule", `pattern.${d}`, e ? "pass" : "error"), !e) continue;
					} else if (!f.schema.$_match(o, i.nest(f.schema, `pattern.${d}`), a)) continue;
					n.delete(o);
					let p = i.localize(u, c, {
						schema: f.rule,
						key: o
					}), m = f.rule.$_validate(l, p, a);
					if (m.errors) {
						if (a.abortEarly) return {
							value: t,
							errors: m.errors
						};
						r.push(...m.errors);
					}
					if (f.matches && s[d].push(o), t[o] = m.value, !f.fallthrough) break;
				}
			}
			if (o) for (let n = 0; n < s.length; ++n) {
				let o = s[n];
				if (!o) continue;
				let u = e.$_terms.patterns[n].matches, d = i.localize(i.path, c, u), f = u.$_validate(o, d, a);
				if (f.errors) {
					let n = l.details(f.errors, { override: !1 });
					n.matches = o;
					let s = e.$_createError("object.pattern.match", t, n, i, a);
					if (a.abortEarly) return {
						value: t,
						errors: s
					};
					r.push(s);
				}
			}
		}
		if (!(!n.size || !e.$_terms.keys && !e.$_terms.patterns)) {
			if (a.stripUnknown && e._flags.unknown === void 0 || a.skipFunctions) {
				let e = a.stripUnknown ? a.stripUnknown === !0 ? !0 : !!a.stripUnknown.objects : !1;
				for (let r of n) e ? (delete t[r], n.delete(r)) : typeof t[r] == "function" && n.delete(r);
			}
			if (!s.default(e._flags.unknown, a.allowUnknown)) for (let o of n) {
				let n = i.localize([...i.path, o], []), s = e.$_createError("object.unknown", t[o], { child: o }, n, a, { flags: !1 });
				if (a.abortEarly) return {
					value: t,
					errors: s
				};
				r.push(s);
			}
		}
	}, f.Dependency = class {
		constructor(e, t, n, r, i) {
			this.rel = e, this.key = t, this.peers = n, this.paths = r, this.options = i;
		}
		describe() {
			let e = {
				rel: this.rel,
				peers: this.paths
			};
			return this.key !== null && (e.key = this.key.key), this.peers[0].separator !== "." && (e.options = {
				...e.options,
				separator: this.peers[0].separator
			}), this.options.isPresent && (e.options = {
				...e.options,
				isPresent: this.options.isPresent
			}), e;
		}
	}, f.Keys = class extends Array {
		concat(e) {
			let t = this.slice(), n = /* @__PURE__ */ new Map();
			for (let e = 0; e < t.length; ++e) n.set(t[e].key, e);
			for (let r of e) {
				let e = r.key, i = n.get(e);
				i === void 0 ? t.push(r) : t[i] = {
					key: e,
					schema: t[i].schema.concat(r.schema)
				};
			}
			return t;
		}
	};
})), pe = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E();
	t.exports = z().extend({
		type: "function",
		properties: { typeof: "function" },
		rules: {
			arity: {
				method(e) {
					return n(Number.isSafeInteger(e) && e >= 0, "n must be a positive integer"), this.$_addRule({
						name: "arity",
						args: { n: e }
					});
				},
				validate(e, t, { n }) {
					return e.length === n ? e : t.error("function.arity", { n });
				}
			},
			class: {
				method() {
					return this.$_addRule("class");
				},
				validate(e, t) {
					return /^\s*class\s/.test(e.toString()) ? e : t.error("function.class", { value: e });
				}
			},
			minArity: {
				method(e) {
					return n(Number.isSafeInteger(e) && e > 0, "n must be a strict positive integer"), this.$_addRule({
						name: "minArity",
						args: { n: e }
					});
				},
				validate(e, t, { n }) {
					return e.length >= n ? e : t.error("function.minArity", { n });
				}
			},
			maxArity: {
				method(e) {
					return n(Number.isSafeInteger(e) && e >= 0, "n must be a positive integer"), this.$_addRule({
						name: "maxArity",
						args: { n: e }
					});
				},
				validate(e, t, { n }) {
					return e.length <= n ? e : t.error("function.maxArity", { n });
				}
			}
		},
		messages: {
			"function.arity": "{{#label}} must have an arity of {{#n}}",
			"function.class": "{{#label}} must be a class",
			"function.maxArity": "{{#label}} must have an arity lesser or equal to {{#n}}",
			"function.minArity": "{{#label}} must have an arity greater or equal to {{#n}}"
		}
	});
})), me = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = R(), i = P(), a = I(), o = A(), s = {};
	t.exports = r.extend({
		type: "link",
		properties: { schemaChain: !0 },
		terms: { link: {
			init: null,
			manifest: "single",
			register: !1
		} },
		args(e, t) {
			return e.ref(t);
		},
		jsonSchema(e, t, n, r) {
			if (!e.$_terms.link) return t;
			let { ref: i } = e.$_terms.link[0];
			return i.ancestor === "root" || i.ancestor > 0 ? (t.$ref = `#/${i.path.map((e) => `properties/${e}`).join("/")}`, t) : (i.path.length === 1 ? t.$ref = `#/$defs/${i.path[0]}` : t.$ref = `#/${i.path.slice(1).map((e) => `properties/${e}`).join("/")}`, t);
		},
		validate(e, { schema: t, state: r, prefs: i, error: a }) {
			n(t.$_terms.link, "Uninitialized link schema");
			let o = t._flags.maxRecursion;
			if (o !== void 0 && r.schemas.filter((e) => e.schema === t).length > o) return {
				value: e,
				errors: a("link.maxRecursion", { limit: o })
			};
			let c = s.generate(t, e, r, i), l = t.$_terms.link[0].ref;
			try {
				return c.$_validate(e, r.nest(c, `link:${l.display}:${c.type}`), i);
			} catch (t) {
				if (!(t instanceof RangeError)) throw t;
				return {
					value: e,
					errors: a("link.depth")
				};
			}
		},
		generate(e, t, n, r) {
			return s.generate(e, t, n, r);
		},
		rules: {
			ref: { method(e) {
				n(!this.$_terms.link, "Cannot reinitialize schema"), e = a.ref(e), n(e.type === "value" || e.type === "local", "Invalid reference type:", e.type), n(e.type === "local" || e.ancestor === "root" || e.ancestor > 0, "Link cannot reference itself");
				let t = this.clone();
				return t.$_terms.link = [{ ref: e }], t;
			} },
			relative: { method(e = !0) {
				return this.$_setFlag("relative", e);
			} },
			maxRecursion: { method(e) {
				return n(Number.isSafeInteger(e) && e >= 1, "limit must be a positive integer"), this.$_setFlag("maxRecursion", e);
			} }
		},
		messages: {
			"link.depth": "{{#label}} exceeds maximum recursion depth supported by the runtime",
			"link.maxRecursion": "{{#label}} exceeds maximum recursion depth of {{#limit}}"
		},
		overrides: { concat(e) {
			n(this.$_terms.link, "Uninitialized link schema"), n(i.isSchema(e), "Invalid schema object"), n(e.type !== "link", "Cannot merge type link with another link");
			let t = this.clone();
			return t.$_terms.whens || (t.$_terms.whens = []), t.$_terms.whens.push({ concat: e }), t.$_mutateRebuild();
		} },
		manifest: { build(e, t) {
			return n(t.link, "Invalid link description missing link"), e.ref(t.link);
		} }
	}), s.generate = function(e, t, n, r) {
		let i = n.mainstay.links.get(e);
		if (i) return i._generate(t, n, r).schema;
		let a = e.$_terms.link[0].ref, { perspective: o, path: c } = s.perspective(a, n);
		s.assert(o, "which is outside of schema boundaries", a, e, n, r);
		try {
			i = c.length ? o.$_reach(c) : o;
		} catch {
			s.assert(!1, "to non-existing schema", a, e, n, r);
		}
		return s.assert(i.type !== "link", "which is another link", a, e, n, r), e._flags.relative || n.mainstay.links.set(e, i), i._generate(t, n, r).schema;
	}, s.perspective = function(e, t) {
		if (e.type === "local") {
			for (let { schema: n, key: r } of t.schemas) {
				if ((n._flags.id || r) === e.path[0]) return {
					perspective: n,
					path: e.path.slice(1)
				};
				if (n.$_terms.shared) {
					for (let t of n.$_terms.shared) if (t._flags.id === e.path[0]) return {
						perspective: t,
						path: e.path.slice(1)
					};
				}
			}
			return {
				perspective: null,
				path: null
			};
		}
		return e.ancestor === "root" ? {
			perspective: t.schemas[t.schemas.length - 1].schema,
			path: e.path
		} : {
			perspective: t.schemas[e.ancestor] && t.schemas[e.ancestor].schema,
			path: e.path
		};
	}, s.assert = function(e, t, r, i, a, s) {
		e || n(!1, `"${o.label(i._flags, a, s)}" contains link reference "${r.display}" ${t}`);
	};
})), he = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = R(), i = P(), a = {
		numberRx: /^\s*[+-]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:e([+-]?\d+))?\s*$/i,
		precisionRx: /(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/,
		exponentialPartRegex: /[eE][+-]?\d+$/,
		leadingSignAndZerosRegex: /^[+-]?(0*)?/,
		dotRegex: /\./,
		trailingZerosRegex: /0+$/,
		decimalPlaces(e) {
			let t = e.toString(), n = t.indexOf("."), r = t.indexOf("e");
			return (n < 0 ? 0 : (r < 0 ? t.length : r) - n - 1) + (r < 0 ? 0 : Math.max(0, -parseInt(t.slice(r + 1))));
		}
	};
	t.exports = r.extend({
		type: "number",
		flags: { unsafe: { default: !1 } },
		coerce: {
			from: "string",
			method(e, { schema: t, error: n }) {
				if (!e.match(a.numberRx)) return;
				e = e.trim();
				let r = { value: parseFloat(e) };
				if (r.value === 0 && (r.value = 0), !t._flags.unsafe) if (e.match(/e/i)) {
					if (a.extractSignificantDigits(e) !== a.extractSignificantDigits(String(r.value))) return r.errors = n("number.unsafe"), r;
				} else {
					let t = r.value.toString();
					if (t.match(/e/i)) return r;
					if (t !== a.normalizeDecimal(e)) return r.errors = n("number.unsafe"), r;
				}
				return r;
			}
		},
		validate(e, { schema: t, error: n, prefs: r }) {
			if (e === Infinity || e === -Infinity) return {
				value: e,
				errors: n("number.infinity")
			};
			if (!i.isNumber(e)) return {
				value: e,
				errors: n("number.base")
			};
			let a = { value: e };
			if (r.convert) {
				let e = t.$_getRule("precision");
				if (e) {
					let t = 10 ** e.args.limit;
					a.value = Math.round(a.value * t) / t;
				}
			}
			return a.value === 0 && (a.value = 0), !t._flags.unsafe && (e > 2 ** 53 - 1 || e < -(2 ** 53 - 1)) && (a.errors = n("number.unsafe")), a;
		},
		rules: {
			compare: {
				method: !1,
				validate(e, t, { limit: n }, { name: r, operator: a, args: o }) {
					return i.compare(e, n, a) ? e : t.error("number." + r, {
						limit: o.limit,
						value: e
					});
				},
				args: [{
					name: "limit",
					ref: !0,
					assert: i.isNumber,
					message: "must be a number"
				}]
			},
			greater: {
				method(e) {
					return this.$_addRule({
						name: "greater",
						method: "compare",
						args: { limit: e },
						operator: ">"
					});
				},
				jsonSchema(e, t) {
					return t.exclusiveMinimum = e.args.limit, t;
				}
			},
			integer: {
				method() {
					return this.$_addRule("integer");
				},
				validate(e, t) {
					return Math.trunc(e) - e === 0 ? e : t.error("number.integer");
				},
				jsonSchema(e, t) {
					return t.type = "integer", t;
				}
			},
			less: {
				method(e) {
					return this.$_addRule({
						name: "less",
						method: "compare",
						args: { limit: e },
						operator: "<"
					});
				},
				jsonSchema(e, t) {
					return t.exclusiveMaximum = e.args.limit, t;
				}
			},
			max: {
				method(e) {
					return this.$_addRule({
						name: "max",
						method: "compare",
						args: { limit: e },
						operator: "<="
					});
				},
				jsonSchema(e, t) {
					return t.maximum = e.args.limit, t;
				}
			},
			min: {
				method(e) {
					return this.$_addRule({
						name: "min",
						method: "compare",
						args: { limit: e },
						operator: ">="
					});
				},
				jsonSchema(e, t) {
					return t.minimum = e.args.limit, t;
				}
			},
			multiple: {
				method(e) {
					let t = typeof e == "number" ? a.decimalPlaces(e) : null, n = 10 ** t;
					return this.$_addRule({
						name: "multiple",
						args: {
							base: e,
							baseDecimalPlace: t,
							pfactor: n
						}
					});
				},
				validate(e, t, { base: n, baseDecimalPlace: r, pfactor: i }, o) {
					return a.decimalPlaces(e) > r ? t.error("number.multiple", {
						multiple: o.args.base,
						value: e
					}) : Math.round(i * e) % Math.round(i * n) === 0 ? e : t.error("number.multiple", {
						multiple: o.args.base,
						value: e
					});
				},
				jsonSchema(e, t) {
					return t.multipleOf = e.args.base, t;
				},
				args: [
					{
						name: "base",
						ref: !0,
						assert: (e) => typeof e == "number" && isFinite(e) && e > 0,
						message: "must be a positive number"
					},
					"baseDecimalPlace",
					"pfactor"
				],
				multi: !0
			},
			negative: { method() {
				return this.sign("negative");
			} },
			port: {
				method() {
					return this.$_addRule("port");
				},
				validate(e, t) {
					return Number.isSafeInteger(e) && e >= 0 && e <= 65535 ? e : t.error("number.port");
				},
				jsonSchema(e, t) {
					return t.type = "integer", t.minimum = 0, t.maximum = 65535, t;
				}
			},
			positive: { method() {
				return this.sign("positive");
			} },
			precision: {
				method(e) {
					return n(Number.isSafeInteger(e), "limit must be an integer"), this.$_addRule({
						name: "precision",
						args: { limit: e }
					});
				},
				validate(e, t, { limit: n }) {
					let r = e.toString().match(a.precisionRx);
					return Math.max((r[1] ? r[1].length : 0) - (r[2] ? parseInt(r[2], 10) : 0), 0) <= n ? e : t.error("number.precision", {
						limit: n,
						value: e
					});
				},
				convert: !0
			},
			sign: {
				method(e) {
					return n(["negative", "positive"].includes(e), "Invalid sign", e), this.$_addRule({
						name: "sign",
						args: { sign: e }
					});
				},
				validate(e, t, { sign: n }) {
					return n === "negative" && e < 0 || n === "positive" && e > 0 ? e : t.error(`number.${n}`);
				},
				jsonSchema(e, t) {
					return e.args.sign === "positive" ? t.exclusiveMinimum = 0 : t.exclusiveMaximum = 0, t;
				}
			},
			unsafe: { method(e = !0) {
				return n(typeof e == "boolean", "enabled must be a boolean"), this.$_setFlag("unsafe", e);
			} }
		},
		cast: { string: {
			from: (e) => typeof e == "number",
			to(e, t) {
				return e.toString();
			}
		} },
		messages: {
			"number.base": "{{#label}} must be a number",
			"number.greater": "{{#label}} must be greater than {{#limit}}",
			"number.infinity": "{{#label}} cannot be infinity",
			"number.integer": "{{#label}} must be an integer",
			"number.less": "{{#label}} must be less than {{#limit}}",
			"number.max": "{{#label}} must be less than or equal to {{#limit}}",
			"number.min": "{{#label}} must be greater than or equal to {{#limit}}",
			"number.multiple": "{{#label}} must be a multiple of {{#multiple}}",
			"number.negative": "{{#label}} must be a negative number",
			"number.port": "{{#label}} must be a valid port",
			"number.positive": "{{#label}} must be a positive number",
			"number.precision": "{{#label}} must have no more than {{#limit}} decimal places",
			"number.unsafe": "{{#label}} must be a safe number"
		}
	}), a.extractSignificantDigits = function(e) {
		return e.replace(a.exponentialPartRegex, "").replace(a.dotRegex, "").replace(a.trailingZerosRegex, "").replace(a.leadingSignAndZerosRegex, "");
	}, a.normalizeDecimal = function(e) {
		return e = e.replace(/^\+/, "").replace(/\.0*$/, "").replace(/^(-?)\.([^\.]*)$/, "$10.$2").replace(/^(-?)0+([0-9])/, "$1$2"), e.includes(".") && e.endsWith("0") && (e = e.replace(/0+$/, "")), e === "-0" ? "0" : e;
	};
})), ge = /* @__PURE__ */ s(((e, t) => {
	t.exports = z().extend({
		type: "object",
		cast: { map: {
			from: (e) => e && typeof e == "object",
			to(e, t) {
				return new Map(Object.entries(e));
			}
		} }
	});
}));
//#endregion
//#region ../node_modules/.pnpm/@hapi+address@5.1.1/node_modules/@hapi/address/esm/errors.js
function B(e) {
	return {
		code: e,
		error: V[e]
	};
}
var V, H = o((() => {
	V = {
		EMPTY_STRING: "Address must be a non-empty string",
		FORBIDDEN_UNICODE: "Address contains forbidden Unicode characters",
		MULTIPLE_AT_CHAR: "Address cannot contain more than one @ character",
		MISSING_AT_CHAR: "Address must contain one @ character",
		EMPTY_LOCAL: "Address local part cannot be empty",
		ADDRESS_TOO_LONG: "Address too long",
		LOCAL_TOO_LONG: "Address local part too long",
		EMPTY_LOCAL_SEGMENT: "Address local part contains empty dot-separated segment",
		INVALID_LOCAL_CHARS: "Address local part contains invalid character",
		DOMAIN_NON_EMPTY_STRING: "Domain must be a non-empty string",
		DOMAIN_TOO_LONG: "Domain too long",
		DOMAIN_INVALID_UNICODE_CHARS: "Domain contains forbidden Unicode characters",
		DOMAIN_INVALID_CHARS: "Domain contains invalid character",
		DOMAIN_INVALID_TLDS_CHARS: "Domain contains invalid tld character",
		DOMAIN_SEGMENTS_COUNT: "Domain lacks the minimum required number of segments",
		DOMAIN_SEGMENTS_COUNT_MAX: "Domain contains too many segments",
		DOMAIN_FORBIDDEN_TLDS: "Domain uses forbidden TLD",
		DOMAIN_EMPTY_SEGMENT: "Domain contains empty dot-separated segment",
		DOMAIN_LONG_SEGMENT: "Domain contains dot-separated segment that is too long"
	};
}));
//#endregion
//#region ../node_modules/.pnpm/@hapi+address@5.1.1/node_modules/@hapi/address/esm/domain.js
function U(e) {
	return !!e.allow;
}
function W(e, t = {}) {
	if (!e) return B("DOMAIN_NON_EMPTY_STRING");
	if (typeof e != "string") throw Error("Invalid input: domain must be a string");
	if (e.length > 256) return B("DOMAIN_TOO_LONG");
	if (q.test(e)) {
		if (t.allowUnicode === !1) return B("DOMAIN_INVALID_UNICODE_CHARS");
		e = e.normalize("NFC");
	}
	if (be.test(e)) return B("DOMAIN_INVALID_CHARS");
	e = ve(e), t.allowFullyQualified && e[e.length - 1] === "." && (e = e.slice(0, -1));
	let n = t.minDomainSegments || K, r = e.split(".");
	if (r.length < n) return B("DOMAIN_SEGMENTS_COUNT");
	if (t.maxDomainSegments && r.length > t.maxDomainSegments) return B("DOMAIN_SEGMENTS_COUNT_MAX");
	let i = t.tlds;
	if (i) {
		let e = r[r.length - 1].toLowerCase();
		if (U(i)) {
			if (!i.allow.has(e)) return B("DOMAIN_FORBIDDEN_TLDS");
		} else if (i.deny.has(e)) return B("DOMAIN_FORBIDDEN_TLDS");
	}
	for (let e = 0; e < r.length; ++e) {
		let n = r[e];
		if (!n.length) return B("DOMAIN_EMPTY_SEGMENT");
		if (n.length > 63) return B("DOMAIN_LONG_SEGMENT");
		if (e < r.length - 1) {
			if (t.allowUnderscore) {
				if (!Ce.test(n)) return B("DOMAIN_INVALID_CHARS");
			} else if (!Se.test(n)) return B("DOMAIN_INVALID_CHARS");
		} else if (!xe.test(n)) return B("DOMAIN_INVALID_TLDS_CHARS");
	}
	return null;
}
function _e(e, t) {
	return !W(e, t);
}
function ve(e) {
	e.includes("%") && (e = e.replace(/%/g, "%25"));
	try {
		return new we(`http://${e}`).host;
	} catch {
		return e;
	}
}
function ye(e) {
	if (e) {
		if (typeof e.tlds != "object") throw Error("Invalid options: tlds must be a boolean or an object");
		if (U(e.tlds)) {
			if (!(e.tlds.allow instanceof Set)) throw Error("Invalid options: tlds.allow must be a Set object or true");
			if (e.tlds.deny) throw Error("Invalid options: cannot specify both tlds.allow and tlds.deny lists");
		} else if (!(e.tlds.deny instanceof Set)) throw Error("Invalid options: tlds.deny must be a Set object");
	}
}
var G, K, q, be, xe, Se, Ce, we, Te = o((() => {
	G = /* @__PURE__ */ u(x()), H(), K = 2, q = /[^\x00-\x7f]/, be = /[\x00-\x20@\:\/\\#!\$&\'\(\)\*\+,;=\?]/, xe = /^[a-zA-Z](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/, Se = /^[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/, Ce = /^[a-zA-Z0-9_](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/, we = G.URL || URL;
}));
//#endregion
//#region ../node_modules/.pnpm/@hapi+address@5.1.1/node_modules/@hapi/address/esm/email.js
function Ee(e, t) {
	return Oe(e, t);
}
function De(e, t) {
	return !Oe(e, t);
}
function Oe(e, t = {}) {
	if (typeof e != "string") throw Error("Invalid input: email must be a string");
	if (!e) return B("EMPTY_STRING");
	let n = !Me.test(e);
	if (!n) {
		if (t.allowUnicode === !1) return B("FORBIDDEN_UNICODE");
		e = e.normalize("NFC");
	}
	let r = e.split("@");
	if (r.length !== 2) return r.length > 2 ? B("MULTIPLE_AT_CHAR") : B("MISSING_AT_CHAR");
	let [i, a] = r;
	if (!i) return B("EMPTY_LOCAL");
	if (!t.ignoreLength) {
		if (e.length > 254) return B("ADDRESS_TOO_LONG");
		if (J.encode(i).length > 64) return B("LOCAL_TOO_LONG");
	}
	return ke(i, n) || W(a, t);
}
function ke(e, t) {
	let n = e.split(".");
	for (let e of n) {
		if (!e.length) return B("EMPTY_LOCAL_SEGMENT");
		if (t) {
			if (!Y.test(e)) return B("INVALID_LOCAL_CHARS");
			continue;
		}
		for (let t of e) {
			if (Y.test(t)) continue;
			let e = Ae(t);
			if (!Ne.test(e)) return B("INVALID_LOCAL_CHARS");
		}
	}
	return null;
}
function Ae(e) {
	return Array.from(J.encode(e), (e) => String.fromCharCode(e)).join("");
}
var je, Me, J, Y, Ne, Pe = o((() => {
	je = /* @__PURE__ */ u(x()), Te(), H(), Me = /[^\x00-\x7f]/, J = new (je.TextEncoder || TextEncoder)(), Y = /^[\w!#\$%&'\*\+\-/=\?\^`\{\|\}~]+$/, Ne = new RegExp([
		"(?:[\\xc2-\\xdf][\\x80-\\xbf])",
		"(?:\\xe0[\\xa0-\\xbf][\\x80-\\xbf])|(?:[\\xe1-\\xec][\\x80-\\xbf]{2})|(?:\\xed[\\x80-\\x9f][\\x80-\\xbf])|(?:[\\xee-\\xef][\\x80-\\xbf]{2})",
		"(?:\\xf0[\\x90-\\xbf][\\x80-\\xbf]{2})|(?:[\\xf1-\\xf3][\\x80-\\xbf]{3})|(?:\\xf4[\\x80-\\x8f][\\x80-\\xbf]{2})"
	].join("|"));
})), X, Fe, Ie = o((() => {
	b(), X = /* @__PURE__ */ u(m(), 1), x(), x(), v(), x(), S(), f(), x(), C(), x(), Fe = /* @__PURE__ */ u(w(), 1), x(), T(), x(), x(), y(), x(), h(), x(), p(), x();
}));
//#endregion
//#region ../node_modules/.pnpm/@hapi+address@5.1.1/node_modules/@hapi/address/esm/uri.js
function Le() {
	let e = {}, t = "\\dA-Fa-f", n = "[" + t + "]", r = "\\w-\\.~", i = "!\\$&'\\(\\)\\*\\+,;=", a = "%" + t, o = r + a + i + ":@", s = "[" + o + "]";
	e.ipv4address = "(?:(?:0{0,2}\\d|0?[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:0{0,2}\\d|0?[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";
	let c = n + "{1,4}", l = "(?:" + c + ":[\\dA-Fa-f]{1,4}|" + e.ipv4address + ")", u = "(?:" + c + ":){6}" + l, d = "::(?:" + c + ":){5}" + l, f = "(?:" + c + ")?::(?:[\\dA-Fa-f]{1,4}:){4}" + l, p = "(?:(?:" + c + ":){0,1}[\\dA-Fa-f]{1,4})?::(?:[\\dA-Fa-f]{1,4}:){3}" + l, m = "(?:(?:" + c + ":){0,2}[\\dA-Fa-f]{1,4})?::(?:[\\dA-Fa-f]{1,4}:){2}" + l, h = "(?:(?:" + c + ":){0,3}[\\dA-Fa-f]{1,4})?::[\\dA-Fa-f]{1,4}:" + l, g = "(?:(?:" + c + ":){0,4}[\\dA-Fa-f]{1,4})?::" + l;
	"" + c, "" + c, e.ipv4Cidr = "(?:\\d|[1-2]\\d|3[0-2])", e.ipv6Cidr = "(?:0{0,2}\\d|0?[1-9]\\d|1[01]\\d|12[0-8])", e.ipv6address = "(?:" + u + "|" + d + "|" + f + "|" + p + "|" + m + "|" + h + "|" + g + "|(?:(?:[\\dA-Fa-f]{1,4}:){0,5}[\\dA-Fa-f]{1,4})?::[\\dA-Fa-f]{1,4}|(?:(?:[\\dA-Fa-f]{1,4}:){0,6}[\\dA-Fa-f]{1,4})?::)", e.ipvFuture = "v" + n + "+\\.[\\w-\\.~!\\$&'\\(\\)\\*\\+,;=:]+", e.scheme = "[a-zA-Z][a-zA-Z\\d+-\\.]*", e.schemeRegex = new RegExp(e.scheme);
	let _ = "[" + r + a + i + ":]*", v = "\\[(?:" + e.ipv6address + "|" + e.ipvFuture + ")\\]";
	"" + r + a + i;
	let y = "(?:" + v + "|" + e.ipv4address + "|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=]{1,255})", b = "(?:" + _ + "@)?" + y + "(?::\\d*)?", x = "(?:" + _ + "@)?(" + y + ")(?::\\d*)?", S = s + "*", C = s + "+";
	"" + r + a + i;
	let w = "(?:\\/" + S + ")*", T = "\\/(?:" + C + w + ")?", E = C + w, D = "[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=@]+" + w, O = "(?:\\/\\/\\/" + S + w + ")";
	return e.hierPart = "(?:(?:\\/\\/" + b + w + ")|" + T + "|" + E + "|" + O + ")", e.hierPartCapture = "(?:(?:\\/\\/" + x + w + ")|" + T + "|" + E + ")", e.relativeRef = "(?:(?:\\/\\/" + b + w + ")|" + T + "|" + D + "|)", e.relativeRefCapture = "(?:(?:\\/\\/" + x + w + ")|" + T + "|" + D + "|)", e.query = "[" + o + "\\/\\?]*(?=#|$)", e.queryWithSquareBrackets = "[" + o + "\\[\\]\\/\\?]*(?=#|$)", e.fragment = "[" + o + "\\/\\?]*", e;
}
function Re(e) {
	let t = Z, n = "(?:\\?" + (e.allowQuerySquareBrackets ? t.queryWithSquareBrackets : t.query) + ")?(?:#" + t.fragment + ")?", r = e.domain ? t.relativeRefCapture : t.relativeRef;
	if (e.relativeOnly) return ze(r + n);
	let i = "";
	if (e.scheme) {
		(0, X.default)(e.scheme instanceof RegExp || typeof e.scheme == "string" || Array.isArray(e.scheme), "scheme must be a RegExp, String, or Array");
		let n = [].concat(e.scheme);
		(0, X.default)(n.length >= 1, "scheme must have at least 1 scheme specified");
		let r = [];
		for (let e = 0; e < n.length; ++e) {
			let i = n[e];
			(0, X.default)(i instanceof RegExp || typeof i == "string", "scheme at position " + e + " must be a RegExp or String"), i instanceof RegExp ? r.push(i.source.toString()) : ((0, X.default)(t.schemeRegex.test(i), "scheme at position " + e + " must be a valid scheme"), r.push((0, Fe.default)(i)));
		}
		i = r.join("|");
	}
	let a = "(?:" + (i ? "(?:" + i + ")" : t.scheme) + ":" + (e.domain ? t.hierPartCapture : t.hierPart) + ")";
	return ze((e.allowRelative ? "(?:" + a + "|" + r + ")" : a) + n, i);
}
function ze(e, t = null) {
	return e = `(?=.)(?!https?\:/(?:$|[^/]))(?!https?\:///)(?!https?\:[^/])${e}`, {
		raw: e,
		regex: RegExp(`^${e}$`),
		scheme: t
	};
}
function Be(e = {}) {
	return e.scheme || e.allowRelative || e.relativeOnly || e.allowQuerySquareBrackets || e.domain ? Re(e) : Ve;
}
var Z, Q, Ve, He = o((() => {
	Ie(), Z = Le(), Q = {
		v4Cidr: Z.ipv4Cidr,
		v6Cidr: Z.ipv6Cidr,
		ipv4: Z.ipv4address,
		ipv6: Z.ipv6address,
		ipvfuture: Z.ipvFuture
	}, Ve = Re({});
}));
//#endregion
//#region ../node_modules/.pnpm/@hapi+address@5.1.1/node_modules/@hapi/address/esm/ip.js
function Ue(e = {}) {
	let t = e.cidr || "optional";
	(0, X.default)([
		"required",
		"optional",
		"forbidden"
	].includes(t), "options.cidr must be one of required, optional, forbidden"), (0, X.default)(e.version === void 0 || typeof e.version == "string" || Array.isArray(e.version), "options.version must be a string or an array of string");
	let n = e.version || [
		"ipv4",
		"ipv6",
		"ipvfuture"
	];
	Array.isArray(n) || (n = [n]), (0, X.default)(n.length >= 1, "options.version must have at least 1 version specified");
	for (let e of n) (0, X.default)(typeof e == "string" && e === e.toLowerCase(), "Invalid options.version value"), (0, X.default)([
		"ipv4",
		"ipv6",
		"ipvfuture"
	].includes(e), "options.version contains unknown version " + e + " - must be one of ipv4, ipv6, ipvfuture");
	n = Array.from(new Set(n));
	let r = `(?:${n.map((e) => {
		if (t === "forbidden") return Q[e];
		let n = `\\/${e === "ipv4" ? Q.v4Cidr : Q.v6Cidr}`;
		return t === "required" ? `${Q[e]}${n}` : `${Q[e]}(?:${n})?`;
	}).join("|")})`, i = RegExp(`^${r}$`);
	return {
		cidr: t,
		versions: n,
		regex: i,
		raw: r
	};
}
var We = o((() => {
	Ie(), He();
})), Ge = /* @__PURE__ */ c({
	analyzeDomain: () => W,
	analyzeEmail: () => Ee,
	errorCodes: () => V,
	ipRegex: () => Ue,
	isDomainValid: () => _e,
	isEmailValid: () => De,
	uriDecode: () => Ke.uriDecode,
	uriRegex: () => Be,
	validateDomainOptions: () => ye
}), Ke, qe = o((() => {
	Te(), Pe(), H(), We(), He(), Ke = /* @__PURE__ */ u(x());
})), Je = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, escapeRegex: r } = E(), { isDomainValid: i, isEmailValid: a, ipRegex: o, uriRegex: s } = (qe(), d(Ge)), c = x(), l = R(), u = P(), f = {
		tlds: c.tlds instanceof Set ? { tlds: {
			allow: c.tlds,
			deny: null
		} } : !1,
		base64Regex: {
			true: {
				true: /^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}==|[\w\-]{3}=)?$/,
				false: /^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/
			},
			false: {
				true: /^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}(==)?|[\w\-]{3}=?)?$/,
				false: /^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}(==)?|[A-Za-z0-9+\/]{3}=?)?$/
			}
		},
		dataUriRegex: /^data:[\w+.-]+\/[\w+.-]+;((charset=[\w-]+|base64),)?(.*)$/,
		hexRegex: {
			withPrefix: /^0x[0-9a-f]+$/i,
			withOptionalPrefix: /^(?:0x)?[0-9a-f]+$/i,
			withoutPrefix: /^[0-9a-f]+$/i
		},
		ipRegex: o({ cidr: "forbidden" }).regex,
		isoDurationRegex: /^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/,
		guidBrackets: {
			"{": "}",
			"[": "]",
			"(": ")",
			"": ""
		},
		guidVersions: {
			uuidv1: "1",
			uuidv2: "2",
			uuidv3: "3",
			uuidv4: "4",
			uuidv5: "5",
			uuidv6: "6",
			uuidv7: "7",
			uuidv8: "8"
		},
		guidSeparators: new Set([
			void 0,
			!0,
			!1,
			"-",
			":"
		]),
		normalizationForms: [
			"NFC",
			"NFD",
			"NFKC",
			"NFKD"
		]
	};
	t.exports = l.extend({
		type: "string",
		flags: {
			insensitive: { default: !1 },
			truncate: { default: !1 }
		},
		terms: { replacements: { init: null } },
		coerce: {
			from: "string",
			method(e, { schema: t, state: n, prefs: r }) {
				let i = t.$_getRule("normalize");
				i && (e = e.normalize(i.args.form));
				let a = t.$_getRule("case");
				a && (e = a.args.direction === "upper" ? e.toLocaleUpperCase() : e.toLocaleLowerCase());
				let o = t.$_getRule("trim");
				if (o && o.args.enabled && (e = e.trim()), t.$_terms.replacements) for (let n of t.$_terms.replacements) e = e.replace(n.pattern, n.replacement);
				let s = t.$_getRule("hex");
				if (s && s.args.options.byteAligned && e.length % 2 != 0 && (e = `0${e}`), t.$_getRule("isoDate")) {
					let t = f.isoDate(e);
					t && (e = t);
				}
				if (t._flags.truncate) {
					let i = t.$_getRule("max");
					if (i) {
						let a = i.args.limit;
						if (u.isResolvable(a) && (a = a.resolve(e, n, r), !u.limit(a))) return {
							value: e,
							errors: t.$_createError("any.ref", a, {
								ref: i.args.limit,
								arg: "limit",
								reason: "must be a positive integer"
							}, n, r)
						};
						e = e.slice(0, a);
					}
				}
				return { value: e };
			}
		},
		validate(e, { schema: t, error: n }) {
			if (typeof e != "string") return {
				value: e,
				errors: n("string.base")
			};
			if (e === "") {
				let r = t.$_getRule("min");
				return r && r.args.limit === 0 ? void 0 : {
					value: e,
					errors: n("string.empty")
				};
			}
		},
		jsonSchema(e, t, n, r) {
			if (!e._valids?.has("") && !e._flags.only) {
				let n = e.$_getRule("min"), r = e.$_getRule("length");
				(!n || n.args.limit > 0) && (!r || r.args.limit > 0) && (t.minLength = 1);
			}
			return t;
		},
		rules: {
			alphanum: {
				method() {
					return this.$_addRule("alphanum");
				},
				validate(e, t) {
					return /^[a-zA-Z0-9]+$/.test(e) ? e : t.error("string.alphanum");
				}
			},
			base64: {
				method(e = {}) {
					return u.assertOptions(e, ["paddingRequired", "urlSafe"]), e = {
						urlSafe: !1,
						paddingRequired: !0,
						...e
					}, n(typeof e.paddingRequired == "boolean", "paddingRequired must be boolean"), n(typeof e.urlSafe == "boolean", "urlSafe must be boolean"), this.$_addRule({
						name: "base64",
						args: { options: e }
					});
				},
				validate(e, t, { options: n }) {
					return f.base64Regex[n.paddingRequired][n.urlSafe].test(e) ? e : t.error("string.base64");
				},
				jsonSchema(e, t) {
					return t.format = "base64", t;
				}
			},
			case: {
				method(e) {
					return n(["lower", "upper"].includes(e), "Invalid case:", e), this.$_addRule({
						name: "case",
						args: { direction: e }
					});
				},
				validate(e, t, { direction: n }) {
					return n === "lower" && e === e.toLocaleLowerCase() || n === "upper" && e === e.toLocaleUpperCase() ? e : t.error(`string.${n}case`);
				},
				convert: !0
			},
			creditCard: {
				method() {
					return this.$_addRule("creditCard");
				},
				validate(e, t) {
					let n = e.length, r = 0, i = 1;
					for (; n--;) {
						let t = e.charAt(n) * i;
						r += t - (t > 9) * 9, i ^= 3;
					}
					return r > 0 && r % 10 == 0 ? e : t.error("string.creditCard");
				}
			},
			dataUri: {
				method(e = {}) {
					return u.assertOptions(e, ["paddingRequired"]), e = {
						paddingRequired: !0,
						...e
					}, n(typeof e.paddingRequired == "boolean", "paddingRequired must be boolean"), this.$_addRule({
						name: "dataUri",
						args: { options: e }
					});
				},
				validate(e, t, { options: n }) {
					let r = e.match(f.dataUriRegex);
					return r && (!r[2] || r[2] !== "base64" || f.base64Regex[n.paddingRequired].false.test(r[3])) ? e : t.error("string.dataUri");
				},
				jsonSchema(e, t) {
					return t.format = "data-uri", t;
				}
			},
			domain: {
				method(e) {
					e && u.assertOptions(e, [
						"allowFullyQualified",
						"allowUnicode",
						"allowUnderscore",
						"maxDomainSegments",
						"minDomainSegments",
						"tlds"
					]);
					let t = f.addressOptions(e);
					return this.$_addRule({
						name: "domain",
						args: { options: e },
						address: t
					});
				},
				validate(e, t, n, { address: r }) {
					return i(e, r) ? e : t.error("string.domain");
				}
			},
			email: {
				method(e = {}) {
					u.assertOptions(e, [
						"allowFullyQualified",
						"allowUnicode",
						"ignoreLength",
						"maxDomainSegments",
						"minDomainSegments",
						"multiple",
						"separator",
						"tlds"
					]), n(e.multiple === void 0 || typeof e.multiple == "boolean", "multiple option must be an boolean");
					let t = f.addressOptions(e), i = RegExp(`\\s*[${e.separator ? r(e.separator) : ","}]\\s*`);
					return this.$_addRule({
						name: "email",
						args: { options: e },
						regex: i,
						address: t
					});
				},
				validate(e, t, { options: n }, { regex: r, address: i }) {
					let o = n.multiple ? e.split(r) : [e], s = [];
					for (let e of o) a(e, i) || s.push(e);
					return s.length ? t.error("string.email", {
						value: e,
						invalids: s
					}) : e;
				},
				jsonSchema(e, t) {
					return t.format = "email", t;
				}
			},
			guid: {
				alias: "uuid",
				method(e = {}) {
					u.assertOptions(e, [
						"version",
						"separator",
						"wrapper"
					]), n(e.wrapper === void 0 || typeof e.wrapper == "boolean" || typeof e.wrapper == "string" && typeof f.guidBrackets[e.wrapper] == "string", `"wrapper" must be true, false, or one of "${Object.keys(f.guidBrackets).filter(Boolean).join("\", \"")}"`);
					let t = "";
					if (e.version) {
						let r = [].concat(e.version);
						n(r.length >= 1, "version must have at least 1 valid version specified");
						let i = /* @__PURE__ */ new Set();
						for (let e = 0; e < r.length; ++e) {
							let a = r[e];
							n(typeof a == "string", "version at position " + e + " must be a string");
							let o = f.guidVersions[a.toLowerCase()];
							n(o, "version at position " + e + " must be one of " + Object.keys(f.guidVersions).join(", ")), n(!i.has(o), "version at position " + e + " must not be a duplicate"), t += o, i.add(o);
						}
					}
					n(f.guidSeparators.has(e.separator), "separator must be one of true, false, \"-\", or \":\"");
					let i = e.separator === void 0 ? "[:-]?" : e.separator === !0 ? "[:-]" : e.separator === !1 ? "[]?" : `\\${e.separator}`, a, o;
					e.wrapper === void 0 ? (a = "[\\[{\\(]?", o = "[\\]}\\)]?") : e.wrapper === !0 ? (a = "[\\[{\\(]", o = "[\\]}\\)]") : e.wrapper === !1 ? (a = "", o = "") : (a = r(e.wrapper), o = r(f.guidBrackets[e.wrapper]));
					let s = RegExp(`^(${a})[0-9A-F]{8}(${i})[0-9A-F]{4}\\2?[${t || "0-9A-F"}][0-9A-F]{3}\\2?[${t ? "89AB" : "0-9A-F"}][0-9A-F]{3}\\2?[0-9A-F]{12}(${o})$`, "i");
					return this.$_addRule({
						name: "guid",
						args: { options: e },
						regex: s
					});
				},
				validate(e, t, n, { regex: r }) {
					let i = r.exec(e);
					if (!i) return t.error("string.guid");
					let a = i[1], o = i[i.length - 1];
					return (a || o) && f.guidBrackets[a] !== o ? t.error("string.guid") : e;
				},
				jsonSchema(e, t) {
					return t.format = "uuid", t;
				}
			},
			hex: {
				method(e = {}) {
					return u.assertOptions(e, ["byteAligned", "prefix"]), e = {
						byteAligned: !1,
						prefix: !1,
						...e
					}, n(typeof e.byteAligned == "boolean", "byteAligned must be boolean"), n(typeof e.prefix == "boolean" || e.prefix === "optional", "prefix must be boolean or \"optional\""), this.$_addRule({
						name: "hex",
						args: { options: e }
					});
				},
				validate(e, t, { options: n }) {
					return (n.prefix === "optional" ? f.hexRegex.withOptionalPrefix : n.prefix === !0 ? f.hexRegex.withPrefix : f.hexRegex.withoutPrefix).test(e) ? n.byteAligned && e.length % 2 != 0 ? t.error("string.hexAlign") : e : t.error("string.hex");
				},
				jsonSchema(e, t) {
					return t.format = "hex", t;
				}
			},
			hostname: {
				method() {
					return this.$_addRule("hostname");
				},
				validate(e, t) {
					return i(e, { minDomainSegments: 1 }) || f.ipRegex.test(e) ? e : t.error("string.hostname");
				},
				jsonSchema(e, t) {
					return t.format = "hostname", t;
				}
			},
			insensitive: { method() {
				return this.$_setFlag("insensitive", !0);
			} },
			ip: {
				method(e = {}) {
					u.assertOptions(e, ["cidr", "version"]);
					let { cidr: t, versions: n, regex: r } = o(e), i = e.version ? n : void 0;
					return this.$_addRule({
						name: "ip",
						args: { options: {
							cidr: t,
							version: i
						} },
						regex: r
					});
				},
				validate(e, t, { options: n }, { regex: r }) {
					return r.test(e) ? e : n.version ? t.error("string.ipVersion", {
						value: e,
						cidr: n.cidr,
						version: n.version
					}) : t.error("string.ip", {
						value: e,
						cidr: n.cidr
					});
				},
				jsonSchema(e, t) {
					let n = e.args.options.version;
					return n && n.length === 1 ? t.format = n[0] : t.format = "ip", t;
				}
			},
			isoDate: {
				method() {
					return this.$_addRule("isoDate");
				},
				validate(e, { error: t }) {
					return f.isoDate(e) ? e : t("string.isoDate");
				},
				jsonSchema(e, t) {
					return t.format = "date-time", t;
				}
			},
			isoDuration: {
				method() {
					return this.$_addRule("isoDuration");
				},
				validate(e, t) {
					return f.isoDurationRegex.test(e) ? e : t.error("string.isoDuration");
				},
				jsonSchema(e, t) {
					return t.format = "duration", t;
				}
			},
			length: {
				method(e, t) {
					return f.length(this, "length", e, "=", t);
				},
				validate(e, t, { limit: n, encoding: r }, { name: i, operator: a, args: o }) {
					let s = r ? !1 : e.length;
					return u.compare(s, n, a) ? e : t.error("string." + i, {
						limit: o.limit,
						value: e,
						encoding: r
					});
				},
				jsonSchema(e, t) {
					return t.minLength = e.args.limit, t.maxLength = e.args.limit, t;
				},
				args: [{
					name: "limit",
					ref: !0,
					assert: u.limit,
					message: "must be a positive integer"
				}, "encoding"]
			},
			lowercase: { method() {
				return this.case("lower");
			} },
			max: {
				method(e, t) {
					return f.length(this, "max", e, "<=", t);
				},
				jsonSchema(e, t) {
					return t.maxLength = e.args.limit, t;
				},
				args: ["limit", "encoding"]
			},
			min: {
				method(e, t) {
					return f.length(this, "min", e, ">=", t);
				},
				jsonSchema(e, t) {
					return e.args.limit > 0 && (t.minLength = e.args.limit), t;
				},
				args: ["limit", "encoding"]
			},
			normalize: {
				method(e = "NFC") {
					return n(f.normalizationForms.includes(e), "normalization form must be one of " + f.normalizationForms.join(", ")), this.$_addRule({
						name: "normalize",
						args: { form: e }
					});
				},
				validate(e, { error: t }, { form: n }) {
					return e === e.normalize(n) ? e : t("string.normalize", {
						value: e,
						form: n
					});
				},
				convert: !0
			},
			pattern: {
				alias: "regex",
				method(e, t = {}) {
					n(e instanceof RegExp, "regex must be a RegExp"), n(!e.flags.includes("g") && !e.flags.includes("y"), "regex should not use global or sticky mode"), typeof t == "string" && (t = { name: t }), u.assertOptions(t, ["invert", "name"]);
					let r = [
						"string.pattern",
						t.invert ? ".invert" : "",
						t.name ? ".name" : ".base"
					].join("");
					return this.$_addRule({
						name: "pattern",
						args: {
							regex: e,
							options: t
						},
						errorCode: r
					});
				},
				validate(e, t, { regex: n, options: r }, { errorCode: i }) {
					return n.test(e) ^ r.invert ? e : t.error(i, {
						name: r.name,
						regex: n,
						value: e
					});
				},
				jsonSchema(e, t) {
					return t.pattern = e.args.regex.source, t;
				},
				args: ["regex", "options"],
				multi: !0
			},
			replace: { method(e, t) {
				typeof e == "string" && (e = new RegExp(r(e), "g")), n(e instanceof RegExp, "pattern must be a RegExp"), n(typeof t == "string", "replacement must be a String");
				let i = this.clone();
				return i.$_terms.replacements || (i.$_terms.replacements = []), i.$_terms.replacements.push({
					pattern: e,
					replacement: t
				}), i;
			} },
			token: {
				method() {
					return this.$_addRule("token");
				},
				validate(e, t) {
					return /^\w+$/.test(e) ? e : t.error("string.token");
				},
				jsonSchema(e, t) {
					return t.format = "token", t;
				}
			},
			trim: {
				method(e = !0) {
					return n(typeof e == "boolean", "enabled must be a boolean"), this.$_addRule({
						name: "trim",
						args: { enabled: e }
					});
				},
				validate(e, t, { enabled: n }) {
					return !n || e === e.trim() ? e : t.error("string.trim");
				},
				convert: !0
			},
			truncate: { method(e = !0) {
				return n(typeof e == "boolean", "enabled must be a boolean"), this.$_setFlag("truncate", e);
			} },
			uppercase: { method() {
				return this.case("upper");
			} },
			uri: {
				method(e = {}) {
					u.assertOptions(e, [
						"allowRelative",
						"allowQuerySquareBrackets",
						"domain",
						"relativeOnly",
						"scheme",
						"encodeUri"
					]), e.domain && u.assertOptions(e.domain, [
						"allowFullyQualified",
						"allowUnicode",
						"maxDomainSegments",
						"minDomainSegments",
						"tlds"
					]);
					let { regex: t, scheme: n } = s(e), r = e.domain ? f.addressOptions(e.domain) : null;
					return this.$_addRule({
						name: "uri",
						args: { options: e },
						regex: t,
						domain: r,
						scheme: n
					});
				},
				validate(e, t, { options: n }, { regex: r, domain: a, scheme: o }) {
					if (["http:/", "https:/"].includes(e)) return t.error("string.uri");
					let s = r.exec(e);
					if (!s && t.prefs.convert && n.encodeUri) {
						let t = encodeURI(e);
						s = r.exec(t), s && (e = t);
					}
					if (s) {
						let r = s[1] || s[2];
						return a && (!n.allowRelative || r) && !i(r, a) ? t.error("string.domain", { value: r }) : e;
					}
					return n.relativeOnly ? t.error("string.uriRelativeOnly") : n.scheme ? t.error("string.uriCustomScheme", {
						scheme: o,
						value: e
					}) : t.error("string.uri");
				},
				jsonSchema(e, t) {
					return t.format = "uri", t;
				}
			}
		},
		manifest: { build(e, t) {
			if (t.replacements) for (let { pattern: n, replacement: r } of t.replacements) e = e.replace(n, r);
			return e;
		} },
		messages: {
			"string.alphanum": "{{#label}} must only contain alpha-numeric characters",
			"string.base": "{{#label}} must be a string",
			"string.base64": "{{#label}} must be a valid base64 string",
			"string.creditCard": "{{#label}} must be a credit card",
			"string.dataUri": "{{#label}} must be a valid dataUri string",
			"string.domain": "{{#label}} must contain a valid domain name",
			"string.email": "{{#label}} must be a valid email",
			"string.empty": "{{#label}} is not allowed to be empty",
			"string.guid": "{{#label}} must be a valid GUID",
			"string.hex": "{{#label}} must only contain hexadecimal characters",
			"string.hexAlign": "{{#label}} hex decoded representation must be byte aligned",
			"string.hostname": "{{#label}} must be a valid hostname",
			"string.ip": "{{#label}} must be a valid ip address with a {{#cidr}} CIDR",
			"string.ipVersion": "{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR",
			"string.isoDate": "{{#label}} must be in iso format",
			"string.isoDuration": "{{#label}} must be a valid ISO 8601 duration",
			"string.length": "{{#label}} length must be {{#limit}} characters long",
			"string.lowercase": "{{#label}} must only contain lowercase characters",
			"string.max": "{{#label}} length must be less than or equal to {{#limit}} characters long",
			"string.min": "{{#label}} length must be at least {{#limit}} characters long",
			"string.normalize": "{{#label}} must be unicode normalized in the {{#form}} form",
			"string.token": "{{#label}} must only contain alpha-numeric and underscore characters",
			"string.pattern.base": "{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}",
			"string.pattern.name": "{{#label}} with value {:[.]} fails to match the {{#name}} pattern",
			"string.pattern.invert.base": "{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}",
			"string.pattern.invert.name": "{{#label}} with value {:[.]} matches the inverted {{#name}} pattern",
			"string.trim": "{{#label}} must not have leading or trailing whitespace",
			"string.uri": "{{#label}} must be a valid uri",
			"string.uriCustomScheme": "{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern",
			"string.uriRelativeOnly": "{{#label}} must be a valid relative uri",
			"string.uppercase": "{{#label}} must only contain uppercase characters"
		}
	}), f.addressOptions = function(e) {
		if (!e) return f.tlds || e;
		if (n(e.minDomainSegments === void 0 || Number.isSafeInteger(e.minDomainSegments) && e.minDomainSegments > 0, "minDomainSegments must be a positive integer"), n(e.maxDomainSegments === void 0 || Number.isSafeInteger(e.maxDomainSegments) && e.maxDomainSegments > 0, "maxDomainSegments must be a positive integer"), e.tlds === !1) return e;
		if (e.tlds === !0 || e.tlds === void 0) return n(f.tlds, "Built-in TLD list disabled"), Object.assign({}, e, f.tlds);
		n(typeof e.tlds == "object", "tlds must be true, false, or an object");
		let t = e.tlds.deny;
		if (t) return Array.isArray(t) && (e = Object.assign({}, e, { tlds: { deny: new Set(t) } })), n(e.tlds.deny instanceof Set, "tlds.deny must be an array, Set, or boolean"), n(!e.tlds.allow, "Cannot specify both tlds.allow and tlds.deny lists"), f.validateTlds(e.tlds.deny, "tlds.deny"), e;
		let r = e.tlds.allow;
		return r ? r === !0 ? (n(f.tlds, "Built-in TLD list disabled"), Object.assign({}, e, f.tlds)) : (Array.isArray(r) && (e = Object.assign({}, e, { tlds: { allow: new Set(r) } })), n(e.tlds.allow instanceof Set, "tlds.allow must be an array, Set, or boolean"), f.validateTlds(e.tlds.allow, "tlds.allow"), e) : {
			...e,
			tlds: !1
		};
	}, f.validateTlds = function(e, t) {
		for (let r of e) n(i(r, {
			minDomainSegments: 1,
			maxDomainSegments: 1
		}), `${t} must contain valid top level domain names`);
	}, f.isoDate = function(e) {
		if (!u.isIsoDate(e)) return null;
		/.*T.*[+-]\d\d$/.test(e) && (e += "00");
		let t = new Date(e);
		return isNaN(t.getTime()) ? null : t.toISOString();
	}, f.length = function(e, t, r, i, a) {
		return n(!a || !1, "Invalid encoding:", a), e.$_addRule({
			name: t,
			method: "length",
			args: {
				limit: r,
				encoding: a
			},
			operator: i
		});
	};
})), Ye = /* @__PURE__ */ s(((e, t) => {
	var { assert: n } = E(), r = R(), i = {};
	i.Map = class extends Map {
		slice() {
			return new i.Map(this);
		}
	}, t.exports = r.extend({
		type: "symbol",
		terms: { map: { init: new i.Map() } },
		coerce: { method(e, { schema: t, error: n }) {
			let r = t.$_terms.map.get(e);
			return r && (e = r), !t._flags.only || typeof e == "symbol" ? { value: e } : {
				value: e,
				errors: n("symbol.map", { map: t.$_terms.map })
			};
		} },
		validate(e, { error: t }) {
			if (typeof e != "symbol") return {
				value: e,
				errors: t("symbol.base")
			};
		},
		rules: { map: { method(e) {
			e && !e[Symbol.iterator] && typeof e == "object" && (e = Object.entries(e)), n(e && e[Symbol.iterator], "Iterable must be an iterable or object");
			let t = this.clone(), r = [];
			for (let i of e) {
				n(i && i[Symbol.iterator], "Entry must be an iterable");
				let [e, a] = i;
				n(typeof e != "object" && typeof e != "function" && typeof e != "symbol", "Key must not be of type object, function, or Symbol"), n(typeof a == "symbol", "Value must be a Symbol"), t.$_terms.map.set(e, a), r.push(a);
			}
			return t.valid(...r);
		} } },
		manifest: { build(e, t) {
			return t.map && (e = e.map(t.map)), e;
		} },
		jsonSchema(e, t, n, r) {
			let i = e.$_terms.map;
			return i.size ? { anyOf: Array.from(i.keys()).map((e) => ({ const: e })) } : {};
		},
		messages: {
			"symbol.base": "{{#label}} must be a symbol",
			"symbol.map": "{{#label}} must be one of {{#map}}"
		}
	});
})), $ = /* @__PURE__ */ s(((e, t) => {
	var { assert: n, clone: r } = E(), i = F(), a = P(), o = I(), s = A(), c = L(), l = x(), u = j(), d = M(), f = x(), p, m = {
		types: {
			alternatives: ce(),
			any: R(),
			array: le(),
			boolean: ue(),
			date: de(),
			function: pe(),
			link: me(),
			number: he(),
			object: ge(),
			string: Je(),
			symbol: Ye()
		},
		aliases: {
			alt: "alternatives",
			bool: "boolean",
			func: "function"
		}
	};
	m.root = function() {
		let e = { _types: new Set(Object.keys(m.types)) };
		for (let t of e._types) e[t] = function(...e) {
			return n(!e.length || [
				"alternatives",
				"link",
				"object"
			].includes(t), "The", t, "type does not allow arguments"), m.generate(this, m.types[t], e);
		};
		for (let t of [
			"allow",
			"custom",
			"disallow",
			"equal",
			"exist",
			"forbidden",
			"invalid",
			"not",
			"only",
			"optional",
			"options",
			"prefs",
			"preferences",
			"required",
			"strip",
			"valid",
			"when"
		]) e[t] = function(...e) {
			return this.any()[t](...e);
		};
		Object.assign(e, m.methods);
		for (let t in m.aliases) e[t] = e[m.aliases[t]];
		return e.x = e.expression, f.setup && f.setup(e), e;
	}, m.methods = {
		ValidationError: s.ValidationError,
		version: a.version,
		cache: i.provider,
		assert(e, t, ...n) {
			m.assert(e, t, !0, n);
		},
		attempt(e, t, ...n) {
			return m.assert(e, t, !1, n);
		},
		build(e) {
			return n(typeof l.build == "function", "Manifest functionality disabled"), l.build(this, e);
		},
		checkPreferences(e) {
			a.checkPreferences(e);
		},
		compile(e, t) {
			return o.compile(this, e, t);
		},
		defaults(e) {
			n(typeof e == "function", "modifier must be a function");
			let t = Object.assign({}, this);
			for (let r of t._types) {
				let i = e(t[r]());
				n(a.isSchema(i), "modifier must return a valid schema object"), t[r] = function(...e) {
					return m.generate(this, i, e);
				};
			}
			return t;
		},
		expression(...e) {
			return new d(...e);
		},
		extend(...e) {
			a.verifyFlat(e, "extend"), p ||= te(), n(e.length, "You need to provide at least one extension"), this.assert(e, p.extensions);
			let t = Object.assign({}, this);
			t._types = new Set(t._types);
			for (let r of e) {
				typeof r == "function" && (r = r(t)), this.assert(r, p.extension);
				let e = m.expandExtension(r, t);
				for (let r of e) {
					n(t[r.type] === void 0 || t._types.has(r.type), "Cannot override name", r.type);
					let e = r.base || this.any(), i = c.type(e, r);
					t._types.add(r.type), t[r.type] = function(...e) {
						return m.generate(this, i, e);
					};
				}
			}
			return t;
		},
		isError: s.ValidationError.isError,
		isExpression: d.isTemplate,
		isRef: u.isRef,
		isSchema: a.isSchema,
		in(...e) {
			return u.in(...e);
		},
		override: a.symbols.override,
		ref(...e) {
			return u.create(...e);
		},
		types() {
			let e = {};
			for (let t of this._types) e[t] = this[t]();
			for (let t in m.aliases) e[t] = this[t]();
			return e;
		}
	}, m.assert = function(e, t, n, i) {
		let o = i[0] instanceof Error || typeof i[0] == "string" ? i[0] : null, c = o === null ? i[0] : i[1], l = t.validate(e, a.preferences({ errors: { stack: !0 } }, c || {})), u = l.error;
		if (!u) return l.value;
		if (o instanceof Error) throw o;
		let d = n && typeof u.annotate == "function" ? u.annotate() : u.message;
		throw u instanceof s.ValidationError || (u = r(u)), u.message = o ? `${o} ${d}` : d, u;
	}, m.generate = function(e, t, r) {
		return n(e, "Must be invoked on a Joi instance."), t.$_root = e, !t._definition.args || !r.length ? t : t._definition.args(t, ...r);
	}, m.expandExtension = function(e, t) {
		if (typeof e.type == "string") return [e];
		let n = [];
		for (let r of t._types) if (e.type.test(r)) {
			let i = Object.assign({}, e);
			i.type = r, i.base = t[r](), n.push(i);
		}
		return n;
	}, t.exports = m.root();
}));
//#endregion
export default $();

//# sourceMappingURL=joi-browser.min.mjs.map