{"version":3,"file":"pkt-utils.mjs","sources":["../../../../packages/utils/src/validate/validate.ts","../../../../packages/utils/src/array/array.ts","../../../../packages/utils/src/other/convert.ts","../../../../packages/utils/src/other/checkbox.ts","../../../../packages/utils/src/other/other.ts","../../../../packages/utils/src/other/tree.ts","../../../../packages/utils/src/other/string.ts","../../../../packages/utils/src/other/generator.ts","../../../../packages/utils/src/other/object.ts","../../../../packages/utils/src/other/form.ts","../../../../packages/utils/src/other/compare.ts","../../../../packages/utils/src/pkt-utils.ts"],"sourcesContent":["import type { SafeAny } from '@pkt/utils/types';\n\n/**\n * Check if value is a function.\n */\nexport function isFunction(value: SafeAny): boolean {\n  return typeof value === 'function';\n}\n\n/**\n * Check if value is a valid JSON.\n */\nexport function isJson(value: SafeAny): boolean {\n  try {\n    JSON.parse(value);\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Check if value is a string primitive.\n */\nexport function isString(value: SafeAny): boolean {\n  return objToStr(value) === '[object String]';\n}\n\n/**\n * Check if value is a type primitive\n */\nexport function is(value: SafeAny, type: string): boolean {\n  return objToStr(value) === `[object ${type}]`;\n}\n\n/**\n * Check if value is a string primitive.\n *\n * isNonEmptyString(''); // -> false\n */\nexport function isNonEmptyString(value: string | null | undefined | SafeAny): boolean {\n  return typeof value === 'string' && value !== '';\n}\n\n/**\n * Check if value is undefined.\n *\n * isUndefined(void 0); // -> true\n */\nexport function isUndefined(value: undefined | SafeAny): boolean {\n  return value === undefined;\n}\n\nexport function isUndefinedOrEmptyString(value: undefined | string | SafeAny): boolean {\n  return value === undefined || value === '';\n}\n\n/**\n * Check if value is an Null.\n */\nexport function isNull(value: null | SafeAny): boolean {\n  return value === null;\n}\n\n/**\n * Check if value is null or undefined, the same as value == null.\n *\n * isNullOrUndefined(null); // -> true\n * isNullOrUndefined(undefined); // -> true\n * isNullOrUndefined(void 0); // -> true\n */\nexport function isNullOrUndefined(obj: null | undefined | SafeAny): boolean {\n  return obj === null || obj === undefined;\n}\n\n/**\n * Check if value is the language type of Object.\n *\n * isObject({}); // -> true\n * isObject([]); // -> true\n */\nexport function isObject(value: SafeAny): boolean {\n  return value instanceof Object;\n}\n\nexport function isObjectAndNotArray(value: SafeAny): boolean {\n  return isObject(value) && !Array.isArray(value);\n}\n\nexport function isObjectAndNotArrayNotNode(value: SafeAny): boolean {\n  return isObjectAndNotArray(value) && !isNode(value);\n}\n\nexport function isNode(value: SafeAny) {\n  return value instanceof Node;\n}\n\n/**\n * exists\n * @param obj\n * @returns boolean\n */\nexport function exists(obj: SafeAny): boolean {\n  return !isNullOrUndefined(obj);\n}\n\n/**\n * Check if value is classified as a Number primitive or object.\n */\nexport function isNum(value: string | SafeAny): boolean {\n  return /^((-?\\d+\\.\\d+)|(-?\\d+)|(-?\\.\\d+))$/.test(value.toString());\n}\n\n/**\n * Checks if value is classified as a Integer.\n */\nexport function isInt(value: number | SafeAny): boolean {\n  return isNum(value) && value % 1 === 0;\n}\n\n/**\n * Checks if value is classified as a Decimal.\n */\nexport function isDecimal(value: number | SafeAny): boolean {\n  return isNum(value) && !isInt(value);\n}\n\n/**\n * Check if number is odd.\n */\nexport function isOdd(value: number | SafeAny): boolean {\n  if (!isInt(value)) {\n    return false;\n  }\n  return value % 2 !== 0;\n}\n\n/**\n * Check if value is an IdCard.\n */\nexport function isIdCard(value: string): boolean {\n  return typeof value === 'string' && /(^\\d{15}$)|(^\\d{17}([0-9]|X)$)/i.test(value);\n}\n\n/**\n * Check if value is an Mobile.\n */\nexport function isMobile(value: string): boolean {\n  return (\n    typeof value === 'string' &&\n    /^(0|\\+?86|17951)?(13[0-9]|14[579]|15[0-9]|16[6]|17[1-3,5-8]|18[0-9]|19[189])[0-9]{8}$/.test(\n      value\n    )\n  );\n}\n\n/**\n * Check if value is an url address.\n */\nexport function isUrl(value: string): boolean {\n  // eslint-disable-next-line no-useless-escape\n  return /(((^https?:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w]*))?)$/.test(\n    value\n  );\n}\n\n/**\n * Check if value is an IP address.\n */\nexport function isIp(value: string): boolean {\n  const v4 =\n    '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n  const regV4 = new RegExp('^'.concat(v4, '$'));\n  const v6seg = '[a-fA-F\\\\d]{1,4}';\n  const v6 = [\n    '(',\n    '(?:'.concat(v6seg, ':){7}(?:').concat(v6seg, '|:)|'),\n    '(?:'.concat(v6seg, ':){6}(?:').concat(v4, '|:').concat(v6seg, '|:)|'),\n    '(?:'.concat(v6seg, ':){5}(?::').concat(v4, '|(:').concat(v6seg, '){1,2}|:)|'),\n    '(?:'\n      .concat(v6seg, ':){4}(?:(:')\n      .concat(v6seg, '){0,1}:')\n      .concat(v4, '|(:')\n      .concat(v6seg, '){1,3}|:)|'),\n    '(?:'\n      .concat(v6seg, ':){3}(?:(:')\n      .concat(v6seg, '){0,2}:')\n      .concat(v4, '|(:')\n      .concat(v6seg, '){1,4}|:)|'),\n    '(?:'\n      .concat(v6seg, ':){2}(?:(:')\n      .concat(v6seg, '){0,3}:')\n      .concat(v4, '|(:')\n      .concat(v6seg, '){1,5}|:)|'),\n    '(?:'\n      .concat(v6seg, ':){1}(?:(:')\n      .concat(v6seg, '){0,4}:')\n      .concat(v4, '|(:')\n      .concat(v6seg, '){1,6}|:)|'),\n    '(?::((?::'.concat(v6seg, '){0,5}:').concat(v4, '|(?::').concat(v6seg, '){1,7}|:))'),\n    ')(%[0-9a-zA-Z]{1,})?'\n  ].join('');\n  const regV6 = new RegExp('^'.concat(v6, '$'));\n\n  return regV4.test(value) || regV6.test(value);\n}\n\n/**\n * Loosely validate an email address.\n */\nexport function isEmail(value: string): boolean {\n  const regEmail = /.+@.+\\..+/;\n  return regEmail.test(value);\n}\n\nfunction objToStr(val: SafeAny): string {\n  const ObjToStr = Object.prototype.toString;\n  return ObjToStr.call(val);\n}\n","import { isObject, isNonEmptyString } from '../validate';\nimport type { SafeAny } from '@pkt/utils/types';\n\n/**\n * 数组转Json {'':''}\n * @param arr 数组\n * @param key 字段\n */\nexport function arrToJson(arr: SafeAny[], key = 'id'): SafeAny {\n  const pos = {} as SafeAny;\n\n  if (isNonEmptyString(key) === false) {\n    for (const no of arr) {\n      pos[no] = no;\n    }\n    return pos;\n  }\n\n  for (const no of arr) {\n    pos[no[key]] = no;\n  }\n  return pos;\n}\n\n/**\n *  数组转Json(json嵌套数组) {'':[]}\n * @param arr 数组\n * @param key 字段\n */\nexport function arrToJsonArr(arr: SafeAny[], key = 'id'): SafeAny {\n  const pos = {} as SafeAny;\n  for (const x of arr) {\n    if (!pos[x[key]]) {\n      pos[x[key]] = [];\n    }\n    pos[x[key]].push(x);\n  }\n\n  return pos;\n}\n\n/**\n * json转数组\n * @param value object数组\n */\nexport function jsonToArr(value: SafeAny): SafeAny[] {\n  if (!isObject(value)) {\n    return [];\n  }\n  const temps = [];\n  let temp = {};\n  for (const key in value) {\n    if (value.hasOwnProperty(key)) {\n      temp = value[key];\n      temps.push(temp);\n    }\n  }\n  return temps;\n}\n","import { isString, isNullOrUndefined } from '../validate/validate';\nimport type { SafeAny } from '@pkt/utils/types';\n\n/**\n * Convert value to a string.\n */\nexport function toString(value: SafeAny): string {\n  return isNullOrUndefined(value) ? '' : value.toString();\n}\n\nexport function toBoolean(\n  value: unknown,\n  defaultValue: boolean | null | undefined = false\n): boolean | null | undefined {\n  return isNullOrUndefined(value) ? defaultValue : `${value}` !== 'false';\n}\n\nexport function toNumber(value: unknown): number;\nexport function toNumber<D>(value: unknown, fallback: D): number | D;\nexport function toNumber(value: unknown, fallbackValue = 0): number {\n  return !isNaN(parseFloat(value as SafeAny)) && !isNaN(Number(value))\n    ? Number(value)\n    : fallbackValue;\n}\n\n/**\n * Returns the number of elements in the array by returning `value.length`.\n *\n * toLength([]); //=> 0\n * toLength([1, 2, 3]); //=> 3\n *\n * toLength(null); //=> NaN\n * toLength(undefined); //=> NaN\n */\nexport function toLength(value: SafeAny): number {\n  if (Array.isArray(value) === true || isString(value) === true) {\n    return value.length;\n  }\n  return NaN;\n}\n\n/**\n * Convert value to a Hash.\n * return string of length 5\n */\nexport function toHash(value: SafeAny): string {\n  const length = toLength(value);\n  if (isNaN(length) === true) {\n    return '';\n  }\n  const I64BIT_TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'.split('');\n  let hashNu = 5381;\n  let i = length - 1;\n  try {\n    if (isString(value) === true) {\n      for (; i > -1; i--) {\n        hashNu += (hashNu << 5) + value.charCodeAt(i);\n      }\n    } else {\n      for (; i > -1; i--) {\n        hashNu += (hashNu << 5) + value[i];\n      }\n    }\n    let rvalue = hashNu & 0x7fffffff;\n    let retValue = '';\n    do {\n      retValue += I64BIT_TABLE[rvalue & 0x3f];\n    } while ((rvalue >>= 6));\n    return retValue;\n  } catch (error) {\n    return '';\n  }\n}\n","import { jsonToArr } from '../array/index';\nimport { isObject } from '../validate';\nimport type { SafeAny } from '@pkt/utils/types';\n\n/**\n * 复选框(全选/多选)\n * @param id 唯一标识(默认ID)\n */\nexport function checkBox(id = 'id'): CheckResult {\n  const checkbox = {\n    isSelectAll: false,\n\n    /**\n     * 选中数量\n     */\n    selectCount: 0,\n\n    /**\n     * 获取已选中的ID数据\n     */\n    getIDS(): Array<SafeAny> {\n      const selects = [];\n      const selectvalue = checkbox.select.value;\n      for (const key in selectvalue) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (selectvalue.hasOwnProperty(key)) {\n          if (selectvalue[key]) {\n            selects.push(key);\n          }\n        }\n      }\n      return selects;\n    },\n\n    /**\n     * 清空所有选择\n     */\n    clear(): void {\n      checkbox.isSelectAll = false;\n      checkbox.selectCount = 0;\n      checkbox.select.value = {};\n    },\n\n    /**\n     * 单选\n     */\n    select: {\n      change(data: SafeAny): void {\n        const selects = veriArr(data);\n        if (selects.length < 1) {\n          checkbox.isSelectAll = false;\n          return;\n        }\n\n        const counts = [];\n        const selectvalue = checkbox.select.value;\n        for (const key in selectvalue) {\n          if (selectvalue.hasOwnProperty(key)) {\n            if (selectvalue[key]) {\n              counts.push(key);\n            }\n          }\n        }\n\n        checkbox.isSelectAll = selects.length === counts.length;\n        checkbox.selectCount = counts.length;\n      },\n\n      /**\n       * 选择的数据\n       * 格式 value: { ID:{true}, ID:{false}}\n       */\n      value: {} as SafeAny\n    },\n\n    /**\n     * 全选\n     */\n    selectAll: {\n      change(data: SafeAny): void {\n        const selects = veriArr(data);\n        if (selects.length < 1) {\n          checkbox.isSelectAll = false;\n          return;\n        }\n\n        // 全选\n        if (checkbox.isSelectAll) {\n          for (let i = selects.length; i--; ) {\n            checkbox.select.value[selects[i][id]] = true;\n          }\n        } else {\n          // 取消全选\n          for (let i = selects.length; i--; ) {\n            delete checkbox.select.value[selects[i][id]];\n          }\n        }\n\n        checkbox.selectCount = jsonToArr(checkbox.select.value).length;\n      }\n    }\n  };\n\n  return checkbox;\n}\nexport interface CheckResult {\n  isSelectAll: boolean;\n\n  /**\n   * 选中数量\n   */\n  selectCount: number;\n\n  /**\n   * 选中\n   */\n  select: {\n    value: SafeAny;\n    change(data: SafeAny): void;\n  };\n\n  /**\n   * 全选\n   */\n  selectAll: {\n    change(data: SafeAny): void;\n  };\n\n  /**\n   * 获取已选中的ID数据\n   */\n  getIDS(): Array<SafeAny>;\n\n  /**\n   * 清空所有选择\n   */\n  clear(): void;\n}\n\nfunction veriArr(data: SafeAny): Array<SafeAny> {\n  if (!data) {\n    return [];\n  }\n  if (Array.isArray(data)) {\n    return data;\n  }\n  if (isObject(data)) {\n    return jsonToArr(data);\n  }\n  return [];\n}\n","import type { SafeAny } from '@pkt/utils/types';\n\n/**\n * A no-operation function.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop(): void {}\n\n/**\n *\n * 获取浏览器的语言\n *\n * @returns 例如 `\"zh\"`\n */\nexport function getBrowserLang(): string | undefined {\n  if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n    return undefined;\n  }\n\n  // to avoid compiler mis-error.\n  const w: SafeAny = window;\n  let browserLang: SafeAny = w.navigator.languages ? w.navigator.languages[0] : null;\n  browserLang =\n    browserLang || w.navigator.language || w.navigator.browserLanguage || w.navigator.userLanguage;\n\n  if (browserLang.indexOf('-') !== -1) {\n    browserLang = browserLang.split('-')[0];\n  }\n\n  if (browserLang.indexOf('_') !== -1) {\n    browserLang = browserLang.split('_')[0];\n  }\n\n  return browserLang;\n}\n\n/**\n *\n * 获取浏览器的语言\n *\n * @returns 例如 `\"zh-CN\"`\n */\nexport function getBrowserCultureLang(): string | undefined {\n  if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n    return undefined;\n  }\n\n  // to avoid compiler mis-error.\n  const w: SafeAny = window;\n  let browserCultureLang: SafeAny = w.navigator.languages ? w.navigator.languages[0] : null;\n  browserCultureLang =\n    browserCultureLang ||\n    w.navigator.language ||\n    w.navigator.browserLanguage ||\n    w.navigator.userLanguage;\n\n  return browserCultureLang;\n}\n","import type { SafeAny } from '@pkt/utils/types';\n\n/**\n * 列表转树结构\n * @param arr 数组\n * @param id 条件id\n * @param pid 父级id\n * @param childName 子节点集合属性名\n * @returns T[]\n */\nexport function arrToTree<T = SafeAny>(\n  arr: SafeAny[],\n  id = 'id',\n  pid = 'parentId',\n  childName = 'children'\n): T[] {\n  const nodeMap = new Map();\n  const result: T[] = [];\n\n  for (const node of arr) {\n    node[childName] = node[childName] || [];\n    nodeMap.set(node[id], node);\n  }\n\n  for (const node of arr) {\n    const parent = nodeMap.get(node[pid]);\n    (parent ? parent[childName] : result).push(node);\n  }\n\n  return result;\n}\n\n/**\n * 树结构转列表\n * @param tree 树结构数据\n * @param childName 子节点集合属性名\n * @returns T[]\n */\nexport function treeToArr<T = SafeAny>(tree: SafeAny[], childName = 'children'): T[] {\n  const result = [...tree];\n\n  for (let i = 0; i < result.length; i++) {\n    if (!result[i][childName]) {\n      continue;\n    }\n    result.splice(i + 1, 0, ...result[i][childName]);\n  }\n  return result;\n}\n\n/**\n * 查找符合条件的单个节点\n * @param tree 树结构数据\n * @param func 条件\n * @param childName 子节点集合属性名\n * @returns T or null\n */\nexport function findTreeNode<T = SafeAny>(\n  tree: SafeAny[],\n  func: (n: T) => boolean,\n  childName = 'children'\n): T | null {\n  const list = [...tree];\n\n  for (const node of list) {\n    if (func(node)) {\n      return node;\n    }\n    node[childName] && list.push(...node[childName]);\n  }\n  return null;\n}\n\n/**\n * 查找符合条件的所有节点\n * @param tree 树结构数据\n * @param func 条件\n * @param childName 子节点集合属性名\n * @returns T[]\n */\nexport function findTreeNodeAll<T = SafeAny>(\n  tree: SafeAny[],\n  func: (n: T) => boolean,\n  childName = 'children'\n): T[] {\n  const list = [...tree];\n  const result = [];\n\n  for (const node of list) {\n    func(node) && result.push(node);\n    node[childName] && list.push(...node[childName]);\n  }\n  return result;\n}\n\n/**\n * 树结构遍历.\n * 对于所有节点node调用callback(node)，深度优先.\n * @param tree 树结构数据\n * @param func 条件\n * @param childName 子节点集合属性名\n */\nexport function forEachTreeNode<T = SafeAny>(\n  tree: SafeAny[],\n  func: (n: T) => void,\n  childName = 'children'\n): void {\n  const list = [...tree];\n\n  for (let i = 0; i < list.length; i++) {\n    func(list[i]);\n\n    list[i][childName] && list.splice(i + 1, 0, ...list[i][childName]);\n  }\n}\n\n/**\n * 删除符合条件的所有节点及其子节点.\n * @param tree 树结构数据\n * @param func 条件\n * @param childName 子节点集合属性名\n */\nexport function removeTreeNode<T = SafeAny>(\n  tree: SafeAny[],\n  func: (n: T) => boolean,\n  childName = 'children'\n): void {\n  const list = [tree];\n\n  while (list.length) {\n    const nodeList = list.shift();\n    const delList = nodeList?.reduce((r, n, idx) => (func(n) && r.push(idx), r), []);\n    delList.reverse();\n    delList.forEach((idx: number) => nodeList?.splice(idx, 1));\n\n    const childrenList = nodeList?.map(n => n[childName]).filter(l => l && l.length) ?? [];\n    list.push(...childrenList);\n  }\n}\n\n/**\n * 在指定oldNode前插入newNode.\n * 如果树中没有oldNode，则不会改变原数组.\n * @param tree 树结构数据\n * @param newNode 新节点\n * @param oldNode 指定节点\n * @param childName 子节点集合属性名\n */\nexport function insertTreeNodeBefore<T = SafeAny>(\n  tree: SafeAny[],\n  newNode: T,\n  oldNode: T,\n  childName = 'children'\n): void {\n  _insert<T>(tree, oldNode, newNode, childName, 0);\n}\n\n/**\n * 在指定oldNode后插入newNode.\n * 如果树中没有oldNode，则不会改变原数组.\n * @param tree 树结构数据\n * @param oldNode 指定节点\n * @param newNode 新节点\n * @param childName 子节点集合属性名\n */\nexport function insertTreeNodeAfter<T = SafeAny>(\n  tree: SafeAny[],\n  oldNode: T,\n  newNode: T,\n  childName = 'children'\n): void {\n  _insert<T>(tree, oldNode, newNode, childName, 1);\n}\n\nfunction _insert<T = SafeAny>(\n  tree: SafeAny[],\n  node: T,\n  targetNode: T,\n  childName: string,\n  after: number\n): void {\n  function insert(list: SafeAny[]) {\n    const idx = list.indexOf(node);\n    idx < 0\n      ? list.forEach(n => insert(n[childName] || []))\n      : list.splice(idx + after, 0, targetNode);\n  }\n  insert(tree);\n}\n","/**\n * 剔除字符串中所有空格及换行\n *\n * @param str 字符串\n */\nexport function trimAll(str?: string): string {\n  return (str ?? '').replace(/[\\s\\n]+/g, '');\n}\n\n/**\n *\n * 字符串插入变量值\n *\n * interpolate('Hello {0}',['World']); // -> Hello World\n *\n * interpolate('Hello{0}',['World']); // -> HelloWorld\n *\n * @param text 文本\n * @param params 参数\n * @returns string\n */\nexport function interpolate(text: string, params: string[]): string {\n  return text\n    .replace(/(['\"]?\\{\\s*(\\d+)\\s*\\}['\"]?)/g, (_, match, digit) => params[digit] ?? match)\n    .replace(/\\s+/g, ' ');\n}\n\n/**\n *\n * 查找并替换一个字符串\n *\n * Example\n *\n * replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string'\n *\n * @returns\n */\nexport function replaceAll(str: string, search: string, replacement: string): string {\n  const fix = search.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n  return str.replace(new RegExp(fix, 'g'), replacement);\n}\n\n/**\n *\n * 截断字符串\n *\n * @param str 字符串\n * @param maxLength 最大长度\n * @returns string\n */\nexport function truncateString(str: string, maxLength: number): string {\n  if (!str || !str.length || str.length <= maxLength) {\n    return str;\n  }\n\n  return str.substring(0, maxLength);\n}\n\n/**\n *\n * 截断字符串带后缀\n *\n * @param str 字符串\n * @param maxLength 最大长度\n * @param postfix 后缀(默认...)\n * @returns\n */\nexport function truncateStringWithPostfix(\n  str: string,\n  maxLength: number,\n  postfix?: string\n): string {\n  postfix = postfix || '...';\n\n  if (!str || !str.length || str.length <= maxLength) {\n    return str;\n  }\n\n  if (maxLength <= postfix.length) {\n    return postfix.substring(0, maxLength);\n  }\n\n  return str.substring(0, maxLength - postfix.length) + postfix;\n}\n\n/** 字符串翻转 */\nexport function reverseStr(str: string): string {\n  return str.split('').reverse().join('');\n}\n","import type { SafeAny } from '@pkt/utils/types';\n\n/**\n * 生成uuid\n * @returns string\n */\nexport function uuid(a?: SafeAny): string {\n  return a\n    ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\n    : `${1e7}${-1e3}${-4e3}${-8e3}${-1e11}`.replace(/[018]/g, uuid);\n}\n\n/**\n * 生成哈希值\n * @returns number\n */\nexport function generateHash(value: string): number {\n  let hashed = 0;\n  let charCode: number;\n\n  for (let i = 0; i < value.length; i++) {\n    charCode = value.charCodeAt(i);\n    hashed = (hashed << 5) - hashed + charCode;\n    hashed |= 0;\n  }\n  return hashed;\n}\n\n/**\n * 随机密码\n * @param length 长度\n * @returns string\n */\nexport function generatePassword(length = 8): string {\n  length = Math.min(Math.max(4, length), 128);\n\n  const lowers = 'abcdefghijklmnopqrstuvwxyz';\n  const uppers = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n  const numbers = '0123456789';\n  const specials = '!@#$%&*()_+{}<>?[]./';\n  const all = lowers + uppers + numbers + specials;\n\n  const getRandom = (chrSet: string) => chrSet[Math.floor(Math.random() * chrSet.length)];\n\n  const password = Array({ length });\n  password[0] = getRandom(lowers);\n  password[1] = getRandom(uppers);\n  password[2] = getRandom(numbers);\n  password[3] = getRandom(specials);\n\n  for (let i = 4; i < length; i++) {\n    password[i] = getRandom(all);\n  }\n\n  return password.sort(() => 0.5 - Math.random()).join('');\n}\n","import type { SafeAny } from '@pkt/utils/types';\nimport {\n  exists,\n  isNullOrUndefined,\n  isNode,\n  isObject,\n  isObjectAndNotArrayNotNode\n} from '../validate/validate';\nimport clone from 'just-clone';\n\n/**\n *\n * 复制/拷贝\n *\n * @returns\n */\nexport function copy(source: SafeAny): SafeAny {\n  return clone(source);\n}\n\n/**\n * 根据 object对象的path路径获取值\n *\n * const obj = {a: {aa: {aaa: 2}}, b: 4};\n *\n * get(obj, 'a.aa.aaa'); // 2\n * get(obj, ['a', 'aa', 'aaa']); // 2\n *\n * get(obj, 'b.bb.bbb'); // undefined\n * get(obj, ['b', 'bb', 'bbb']); // undefined\n *\n * get(obj.a, 'aa.aaa'); // 2\n * get(obj.a, ['aa', 'aaa']); // 2\n *\n * get(obj.b, 'bb.bbb'); // undefined\n * get(obj.b, ['bb', 'bbb']); // undefined\n *\n * get(obj.b, 'bb.bbb', 42); // 42\n * get(obj.b, ['bb', 'bbb'], 42); // 42\n *\n * get(null, 'a'); // undefined\n * get(undefined, ['a']); // undefined\n *\n * get(null, 'a', 42); // 42\n * get(undefined, ['a'], 42); // 42\n *\n * const obj = {a: {}};\n * const sym = Symbol();\n * obj.a[sym] = 4;\n * get(obj.a, sym); // 4\n * @param obj 对象\n * @param path 路径\n * @param defaultValue 默认值\n * @returns SafeAny\n */\nexport function deepGet(obj: SafeAny, path: string | string[], defaultValue?: unknown): SafeAny {\n  if (!obj) {\n    return defaultValue;\n  }\n  let props, prop;\n  if (Array.isArray(path)) {\n    props = path.slice(0);\n  }\n\n  if (typeof path === 'string') {\n    props = path.split('.');\n  } else if (typeof path === 'symbol') {\n    props = [path];\n  }\n\n  if (!Array.isArray(props)) {\n    throw new Error('props arg must be an array, a string or a symbol');\n  }\n  while (props.length) {\n    prop = props.shift();\n    if (!obj) {\n      return defaultValue;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    obj = obj[prop!];\n    if (obj === undefined) {\n      return defaultValue;\n    }\n  }\n  return obj;\n}\n\n/**\n * 根据 object对象的path路径设置值\n *\n * const obj1 = {};\n * set(obj1, 'a.aa.aaa', 4); // true\n * set(obj1, 'a.aa.aaa', 4); // true\n *\n * const obj2 = {};\n * set(obj2, ['a', 'aa', 'aaa'], 4); // true\n * obj2; // {a: {aa: {aaa: 4}}}\n *\n * const obj3 = {a: {aa: {aaa: 2}}};\n * set(obj3, 'a.aa.aaa', 3); // true\n * obj3; // {a: {aa: {aaa: 3}}}\n *\n * const obj4 = {a: {aa: {aaa: 2}}};\n * set(obj4, 'a.aa', {bbb: 7}); // false\n *\n * const obj5 = {a: {}};\n * const sym = Symbol();\n * set(obj5.a, sym, 7); // true\n * obj5; // {a: {Symbol(): 7}}\n *\n * @param obj 对象\n * @param path 路径\n * @param value 值\n * @returns boolean\n */\nexport function deepSet(obj: SafeAny, path: string | string[], value: unknown): boolean {\n  let props;\n  if (Array.isArray(path)) {\n    props = path.slice(0);\n  }\n\n  if (typeof path === 'string') {\n    props = path.split('.');\n  } else if (typeof path === 'symbol') {\n    props = [path];\n  }\n\n  if (!Array.isArray(props)) {\n    throw new Error('props arg must be an array, a string or a symbol');\n  }\n  const lastProp = props.pop();\n  if (!lastProp) {\n    return false;\n  }\n  prototypeCheck(lastProp);\n  let thisProp;\n  while ((thisProp = props.shift())) {\n    prototypeCheck(thisProp);\n    if (typeof obj[thisProp] === 'undefined') {\n      obj[thisProp] = {};\n    }\n    obj = obj[thisProp];\n    if (!obj || typeof obj !== 'object') {\n      return false;\n    }\n  }\n  obj[lastProp] = value;\n  return true;\n}\nfunction prototypeCheck(prop: string): void {\n  if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') {\n    throw new Error('setting of prototype values not supported');\n  }\n}\n\n/**\n *\n * 深度合并\n *\n * @returns\n */\nexport function deepMerge(target: SafeAny, source: SafeAny): SafeAny {\n  if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {\n    return deepMergeRecursively(target, source);\n  } else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {\n    return {};\n  } else {\n    return exists(source) ? source : target;\n  }\n}\n\n/**\n *\n * 递归深度合并\n *\n * @returns\n */\nfunction deepMergeRecursively(target: SafeAny, source: SafeAny): SafeAny {\n  const shouldNotRecurse =\n    isNullOrUndefined(target) ||\n    isNullOrUndefined(source) || // at least one not defined\n    Array.isArray(target) ||\n    Array.isArray(source) || // at least one array\n    !isObject(target) ||\n    !isObject(source) || // at least one not an object\n    isNode(target) ||\n    isNode(source); // at least one node\n\n  /**\n   * if we will not recurse any further,\n   * we will prioritize source if it is a defined value.\n   */\n  if (shouldNotRecurse) {\n    return exists(source) ? source : target;\n  }\n\n  const keysOfTarget = Object.keys(target);\n  const keysOfSource = Object.keys(source);\n  const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));\n  return [...uniqueKeys].reduce((retVal: SafeAny, key) => {\n    retVal[key] = deepMergeRecursively(target[key], source[key]);\n    return retVal;\n  }, {});\n}\n","import type { SafeAny } from '@pkt/utils/types';\nimport { isNum } from '../validate/validate';\n\n/**\n *\n * 映射枚举到选项\n *\n * @param _enum 枚举\n * @returns []\n */\nexport function mapEnumToOptions<T>(_enum: T): Options<T>[] {\n  const options: Options<T>[] = [];\n\n  for (const member in _enum)\n    if (!isNum(member)) {\n      options.push({\n        key: member,\n        value: _enum[member]\n      });\n    }\n\n  return options;\n}\n\nexport interface Options<T> {\n  key: Extract<keyof T, string>;\n  value: T[Extract<keyof T, string>];\n}\n\n/**\n * 浏览器内置uri解码`decodeURI()`函数的增强版，可以解码任何uri\n *\n * @param uri 地址\n * @returns uri\n */\nexport function superDecodeURI(uri: string): string {\n  if (!uri) {\n    return uri;\n  }\n  return decodeURI(uri).replace(/%([0-9a-f]{2})/gi, (found, charCode) =>\n    String.fromCharCode(parseInt(charCode, 16))\n  );\n}\n\n/**\n *\n * 将url中的参数解析为一个对象\n *\n * @param rawParam 格式为`var1=value1&var2=value2`\n * @returns 返回类似`{var1: \"value1\", var2: \"value2\"}`的对象\n */\nexport function parseUrlParam(rawParam: string): Record<string, unknown> {\n  const result = {} as SafeAny;\n  // eslint-disable-next-line no-extra-boolean-cast\n  if (!!rawParam) {\n    rawParam.split(/&/g).forEach(param => {\n      const parts = param.split(/=/);\n      result[superDecodeURI(parts[0])] = superDecodeURI(parts[1]);\n    });\n  }\n  return result;\n}\n","import type { SafeAny } from '@pkt/utils/types';\n\n/**\n *\n * 比较\n *\n * @description\n * primitives: value1 === value\n *\n * functions: value1.toString == value2.toString\n *\n * arrays: if length, sequence and values of properties are identical\n *\n * objects: if length, names and values of properties are identical\n *\n * @example\n * compare([[1, [2, 3]], [[1, [2, 3]]);=> true\n *\n * compare([[1, [2, 3], 4], [[1, [2, 3]]);=> false\n *\n * compare({a: 2, b: 3}, {a: 2, b: 3});=> true\n *\n * compare({a: 2, b: 3}, {b: 3, a: 2});=> true\n *\n * compare({a: 2, b: 3, c: 4}, {a: 2, b: 3});=> false\n *\n * compare({a: 2, b: 3}, {a: 2, b: 3, c: 4});=> false\n *\n * compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]);=> true\n *\n * @returns boolean\n */\nexport function compare(value1: SafeAny, value2: SafeAny): boolean {\n  if (value1 === value2) {\n    return true;\n  }\n\n  /* eslint-disable no-self-compare */\n  // if both values are NaNs return true\n  if (value1 !== value1 && value2 !== value2) {\n    return true;\n  }\n  if ({}.toString.call(value1) !== {}.toString.call(value2)) {\n    return false;\n  }\n  if (value1 !== Object(value1)) {\n    // non equal primitives\n    return false;\n  }\n  if (!value1) {\n    return false;\n  }\n  if (Array.isArray(value1)) {\n    return compareArrays(value1, value2);\n  }\n  if ({}.toString.call(value1) === '[object Set]') {\n    return compareArrays(Array.from(value1), Array.from(value2));\n  }\n  if ({}.toString.call(value1) === '[object Object]') {\n    return compareObjects(value1, value2);\n  } else {\n    return compareNativeSubtypes(value1, value2);\n  }\n}\n\nfunction compareNativeSubtypes(value1: SafeAny, value2: SafeAny): boolean {\n  // e.g. Function, RegExp, Date\n  return value1.toString() === value2.toString();\n}\n\n/**\n *\n * 比较数组\n *\n * @returns boolean\n */\nexport function compareArrays(value1: Array<SafeAny>, value2: Array<SafeAny>): boolean {\n  const len = value1.length;\n  if (len !== value2.length) {\n    return false;\n  }\n  let alike = true;\n  for (let i = 0; i < len; i++) {\n    if (!compare(value1[i], value2[i])) {\n      alike = false;\n      break;\n    }\n  }\n  return alike;\n}\n\n/**\n *\n * 比较Obj\n *\n * @returns boolean\n */\nexport function compareObjects(value1: SafeAny, value2: SafeAny): boolean {\n  const keys1 = Object.keys(value1).sort();\n  const keys2 = Object.keys(value2).sort();\n  const len = keys1.length;\n  if (len !== keys2.length) {\n    return false;\n  }\n  for (let i = 0; i < len; i++) {\n    const key1 = keys1[i];\n    const key2 = keys2[i];\n    if (!(key1 === key2 && compare(value1[key1], value2[key2]))) {\n      return false;\n    }\n  }\n  return true;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAEA;;AAEG;AACG,SAAU,UAAU,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU;AACpC;AAEA;;AAEG;AACG,SAAU,MAAM,CAAC,KAAc,EAAA;AACnC,IAAA,IAAI;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjB,QAAA,OAAO,IAAI;IACb;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,KAAK;IACd;AACF;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,KAAc,EAAA;AACrC,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,iBAAiB;AAC9C;AAEA;;AAEG;AACG,SAAU,EAAE,CAAC,KAAc,EAAE,IAAY,EAAA;IAC7C,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA,QAAA,EAAW,IAAI,GAAG;AAC/C;AAEA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,KAA0C,EAAA;IACzE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;AAClD;AAEA;;;;AAIG;AACG,SAAU,WAAW,CAAC,KAA0B,EAAA;IACpD,OAAO,KAAK,KAAK,SAAS;AAC5B;AAEM,SAAU,wBAAwB,CAAC,KAAmC,EAAA;AAC1E,IAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAC5C;AAEA;;AAEG;AACG,SAAU,MAAM,CAAC,KAAqB,EAAA;IAC1C,OAAO,KAAK,KAAK,IAAI;AACvB;AAEA;;;;;;AAMG;AACG,SAAU,iBAAiB,CAAC,GAA+B,EAAA;AAC/D,IAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;AAC1C;AAEA;;;;;AAKG;AACG,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,OAAO,KAAK,YAAY,MAAM;AAChC;AAEM,SAAU,mBAAmB,CAAC,KAAc,EAAA;AAChD,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACjD;AAEM,SAAU,0BAA0B,CAAC,KAAc,EAAA;IACvD,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACrD;AAEM,SAAU,MAAM,CAAC,KAAc,EAAA;IACnC,OAAO,KAAK,YAAY,IAAI;AAC9B;AAEA;;;;AAIG;AACG,SAAU,MAAM,CAAC,GAAY,EAAA;AACjC,IAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAChC;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAuB,EAAA;IAC3C,OAAO,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACpE;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAuB,EAAA;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;AACxC;AAEA;;AAEG;AACG,SAAU,SAAS,CAAC,KAAuB,EAAA;IAC/C,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAuB,EAAA;AAC3C,IAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC;AACxB;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,KAAa,EAAA;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC;AACnF;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,KAAa,EAAA;AACpC,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ;AACzB,QAAA,uFAAuF,CAAC,IAAI,CAC1F,KAAK,CACN;AAEL;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAa,EAAA;;AAEjC,IAAA,OAAO,uKAAuK,CAAC,IAAI,CACjL,KAAK,CACN;AACH;AAEA;;AAEG;AACG,SAAU,IAAI,CAAC,KAAa,EAAA;IAChC,MAAM,EAAE,GACN,gGAAgG;AAClG,IAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,kBAAkB;AAChC,IAAA,MAAM,EAAE,GAAG;QACT,GAAG;AACH,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QACrD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QACtE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9E;AACG,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY;AAC1B,aAAA,MAAM,CAAC,KAAK,EAAE,SAAS;AACvB,aAAA,MAAM,CAAC,EAAE,EAAE,KAAK;AAChB,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9B;AACG,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY;AAC1B,aAAA,MAAM,CAAC,KAAK,EAAE,SAAS;AACvB,aAAA,MAAM,CAAC,EAAE,EAAE,KAAK;AAChB,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9B;AACG,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY;AAC1B,aAAA,MAAM,CAAC,KAAK,EAAE,SAAS;AACvB,aAAA,MAAM,CAAC,EAAE,EAAE,KAAK;AAChB,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9B;AACG,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY;AAC1B,aAAA,MAAM,CAAC,KAAK,EAAE,SAAS;AACvB,aAAA,MAAM,CAAC,EAAE,EAAE,KAAK;AAChB,aAAA,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC;QACpF;AACD,KAAA,CAAC,IAAI,CAAC,EAAE,CAAC;AACV,IAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE7C,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AAEA;;AAEG;AACG,SAAU,OAAO,CAAC,KAAa,EAAA;IACnC,MAAM,QAAQ,GAAG,WAAW;AAC5B,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B;AAEA,SAAS,QAAQ,CAAC,GAAY,EAAA;AAC5B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;AAC1C,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B;;ACvNA;;;;AAIG;SACa,SAAS,CAAC,GAAc,EAAE,GAAG,GAAG,IAAI,EAAA;IAClD,MAAM,GAAG,GAAG,EAAa;AAEzB,IAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AACnC,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,YAAA,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;QACd;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;QACpB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IACnB;AACA,IAAA,OAAO,GAAG;AACZ;AAEA;;;;AAIG;SACa,YAAY,CAAC,GAAc,EAAE,GAAG,GAAG,IAAI,EAAA;IACrD,MAAM,GAAG,GAAG,EAAa;AACzB,IAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAChB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QAClB;QACA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB;AAEA,IAAA,OAAO,GAAG;AACZ;AAEA;;;AAGG;AACG,SAAU,SAAS,CAAC,KAAc,EAAA;AACtC,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,QAAA,OAAO,EAAE;IACX;IACA,MAAM,KAAK,GAAG,EAAE;IAChB,IAAI,IAAI,GAAG,EAAE;AACb,IAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;AACjB,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB;IACF;AACA,IAAA,OAAO,KAAK;AACd;;ACvDA;;AAEG;AACG,SAAU,QAAQ,CAAC,KAAc,EAAA;AACrC,IAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;AACzD;SAEgB,SAAS,CACvB,KAAc,EACd,eAA2C,KAAK,EAAA;AAEhD,IAAA,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;AACzE;SAIgB,QAAQ,CAAC,KAAc,EAAE,aAAa,GAAG,CAAC,EAAA;AACxD,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACjE,UAAE,MAAM,CAAC,KAAK;UACZ,aAAa;AACnB;AAEA;;;;;;;;AAQG;AACG,SAAU,QAAQ,CAAC,KAAc,EAAA;AACrC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC7D,OAAO,KAAK,CAAC,MAAM;IACrB;AACA,IAAA,OAAO,GAAG;AACZ;AAEA;;;AAGG;AACG,SAAU,MAAM,CAAC,KAAc,EAAA;AACnC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC9B,IAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;AAC1B,QAAA,OAAO,EAAE;IACX;IACA,MAAM,YAAY,GAAG,kEAAkE,CAAC,KAAK,CAAC,EAAE,CAAC;IACjG,IAAI,MAAM,GAAG,IAAI;AACjB,IAAA,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC;AAClB,IAAA,IAAI;AACF,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAClB,gBAAA,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C;QACF;aAAO;YACL,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACpC;QACF;AACA,QAAA,IAAI,MAAM,GAAG,MAAM,GAAG,UAAU;QAChC,IAAI,QAAQ,GAAG,EAAE;AACjB,QAAA,GAAG;AACD,YAAA,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AACzC,QAAA,CAAC,SAAS,MAAM,KAAK,CAAC;AACtB,QAAA,OAAO,QAAQ;IACjB;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,EAAE;IACX;AACF;;ACpEA;;;AAGG;AACG,SAAU,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAA;AAChC,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA,WAAW,EAAE,KAAK;AAElB;;AAEG;AACH,QAAA,WAAW,EAAE,CAAC;AAEd;;AAEG;QACH,MAAM,GAAA;YACJ,MAAM,OAAO,GAAG,EAAE;AAClB,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;AACzC,YAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;;AAE7B,gBAAA,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACnC,oBAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AACpB,wBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;oBACnB;gBACF;YACF;AACA,YAAA,OAAO,OAAO;QAChB,CAAC;AAED;;AAEG;QACH,KAAK,GAAA;AACH,YAAA,QAAQ,CAAC,WAAW,GAAG,KAAK;AAC5B,YAAA,QAAQ,CAAC,WAAW,GAAG,CAAC;AACxB,YAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;QAC5B,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,EAAE;AACN,YAAA,MAAM,CAAC,IAAa,EAAA;AAClB,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7B,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,oBAAA,QAAQ,CAAC,WAAW,GAAG,KAAK;oBAC5B;gBACF;gBAEA,MAAM,MAAM,GAAG,EAAE;AACjB,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;AACzC,gBAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,oBAAA,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACnC,wBAAA,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AACpB,4BAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;wBAClB;oBACF;gBACF;gBAEA,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;AACvD,gBAAA,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM;YACtC,CAAC;AAED;;;AAGG;AACH,YAAA,KAAK,EAAE;AACR,SAAA;AAED;;AAEG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,CAAC,IAAa,EAAA;AAClB,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7B,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,oBAAA,QAAQ,CAAC,WAAW,GAAG,KAAK;oBAC5B;gBACF;;AAGA,gBAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;oBACxB,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAAI;AAClC,wBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;oBAC9C;gBACF;qBAAO;;oBAEL,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAAI;AAClC,wBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9C;gBACF;AAEA,gBAAA,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM;YAChE;AACD;KACF;AAED,IAAA,OAAO,QAAQ;AACjB;AAmCA,SAAS,OAAO,CAAC,IAAa,EAAA;IAC5B,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClB,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC;IACxB;AACA,IAAA,OAAO,EAAE;AACX;;ACpJA;;AAEG;AACH;AACM,SAAU,IAAI,GAAA,EAAU;AAE9B;;;;;AAKG;SACa,cAAc,GAAA;AAC5B,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AAC5E,QAAA,OAAO,SAAS;IAClB;;IAGA,MAAM,CAAC,GAAY,MAAM;IACzB,IAAI,WAAW,GAAY,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAClF,WAAW;AACT,QAAA,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY;IAEhG,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QACnC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC;IAEA,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;QACnC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC;AAEA,IAAA,OAAO,WAAW;AACpB;AAEA;;;;;AAKG;SACa,qBAAqB,GAAA;AACnC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AAC5E,QAAA,OAAO,SAAS;IAClB;;IAGA,MAAM,CAAC,GAAY,MAAM;IACzB,IAAI,kBAAkB,GAAY,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IACzF,kBAAkB;QAChB,kBAAkB;YAClB,CAAC,CAAC,SAAS,CAAC,QAAQ;YACpB,CAAC,CAAC,SAAS,CAAC,eAAe;AAC3B,YAAA,CAAC,CAAC,SAAS,CAAC,YAAY;AAE1B,IAAA,OAAO,kBAAkB;AAC3B;;ACvDA;;;;;;;AAOG;AACG,SAAU,SAAS,CACvB,GAAc,EACd,EAAE,GAAG,IAAI,EACT,GAAG,GAAG,UAAU,EAChB,SAAS,GAAG,UAAU,EAAA;AAEtB,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE;IACzB,MAAM,MAAM,GAAQ,EAAE;AAEtB,IAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;QACtB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7B;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,QAAA,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;IAClD;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;AAKG;SACa,SAAS,CAAc,IAAe,EAAE,SAAS,GAAG,UAAU,EAAA;AAC5E,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;AAExB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;YACzB;QACF;AACA,QAAA,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClD;AACA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;AAMG;AACG,SAAU,YAAY,CAC1B,IAAe,EACf,IAAuB,EACvB,SAAS,GAAG,UAAU,EAAA;AAEtB,IAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AAEtB,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD;AACA,IAAA,OAAO,IAAI;AACb;AAEA;;;;;;AAMG;AACG,SAAU,eAAe,CAC7B,IAAe,EACf,IAAuB,EACvB,SAAS,GAAG,UAAU,EAAA;AAEtB,IAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD;AACA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;AAMG;AACG,SAAU,eAAe,CAC7B,IAAe,EACf,IAAoB,EACpB,SAAS,GAAG,UAAU,EAAA;AAEtB,IAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AAEtB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEb,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpE;AACF;AAEA;;;;;AAKG;AACG,SAAU,cAAc,CAC5B,IAAe,EACf,IAAuB,EACvB,SAAS,GAAG,UAAU,EAAA;AAEtB,IAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AAEnB,IAAA,OAAO,IAAI,CAAC,MAAM,EAAE;AAClB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAChF,OAAO,CAAC,OAAO,EAAE;AACjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,KAAK,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE1D,QAAA,MAAM,YAAY,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AACtF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;IAC5B;AACF;AAEA;;;;;;;AAOG;AACG,SAAU,oBAAoB,CAClC,IAAe,EACf,OAAU,EACV,OAAU,EACV,SAAS,GAAG,UAAU,EAAA;IAEtB,OAAO,CAAI,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAClD;AAEA;;;;;;;AAOG;AACG,SAAU,mBAAmB,CACjC,IAAe,EACf,OAAU,EACV,OAAU,EACV,SAAS,GAAG,UAAU,EAAA;IAEtB,OAAO,CAAI,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAClD;AAEA,SAAS,OAAO,CACd,IAAe,EACf,IAAO,EACP,UAAa,EACb,SAAiB,EACjB,KAAa,EAAA;IAEb,SAAS,MAAM,CAAC,IAAe,EAAA;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAA,GAAG,GAAG;AACJ,cAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC9C,cAAE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC;IAC7C;IACA,MAAM,CAAC,IAAI,CAAC;AACd;;AC5LA;;;;AAIG;AACG,SAAU,OAAO,CAAC,GAAY,EAAA;AAClC,IAAA,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC5C;AAEA;;;;;;;;;;;AAWG;AACG,SAAU,WAAW,CAAC,IAAY,EAAE,MAAgB,EAAA;AACxD,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK;AACnF,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB;AAEA;;;;;;;;;AASG;SACa,UAAU,CAAC,GAAW,EAAE,MAAc,EAAE,WAAmB,EAAA;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACzD,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC;AACvD;AAEA;;;;;;;AAOG;AACG,SAAU,cAAc,CAAC,GAAW,EAAE,SAAiB,EAAA;AAC3D,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE;AAClD,QAAA,OAAO,GAAG;IACZ;IAEA,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;AACpC;AAEA;;;;;;;;AAQG;SACa,yBAAyB,CACvC,GAAW,EACX,SAAiB,EACjB,OAAgB,EAAA;AAEhB,IAAA,OAAO,GAAG,OAAO,IAAI,KAAK;AAE1B,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE;AAClD,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE;QAC/B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;IACxC;AAEA,IAAA,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO;AAC/D;AAEA;AACM,SAAU,UAAU,CAAC,GAAW,EAAA;AACpC,IAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC;;ACtFA;;;AAGG;AACG,SAAU,IAAI,CAAC,CAAW,EAAA;AAC9B,IAAA,OAAO;UACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;UACnD,GAAG,GAAG,CAAA,EAAG,CAAC,GAAG,CAAA,EAAG,CAAC,GAAG,CAAA,EAAG,CAAC,GAAG,CAAA,EAAG,CAAC,IAAI,CAAA,CAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACnE;AAEA;;;AAGG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;IACxC,IAAI,MAAM,GAAG,CAAC;AACd,IAAA,IAAI,QAAgB;AAEpB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,QAAQ;QAC1C,MAAM,IAAI,CAAC;IACb;AACA,IAAA,OAAO,MAAM;AACf;AAEA;;;;AAIG;AACG,SAAU,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAA;AACzC,IAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC;IAE3C,MAAM,MAAM,GAAG,4BAA4B;IAC3C,MAAM,MAAM,GAAG,4BAA4B;IAC3C,MAAM,OAAO,GAAG,YAAY;IAC5B,MAAM,QAAQ,GAAG,sBAAsB;IACvC,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ;IAEhD,MAAM,SAAS,GAAG,CAAC,MAAc,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvF,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAEjC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;IAC9B;AAEA,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1D;;AC7CA;;;;;AAKG;AACG,SAAU,IAAI,CAAC,MAAe,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;SACa,OAAO,CAAC,GAAY,EAAE,IAAuB,EAAE,YAAsB,EAAA;IACnF,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,YAAY;IACrB;IACA,IAAI,KAAK,EAAE,IAAI;AACf,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvB;AAEA,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AAAO,SAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,QAAA,KAAK,GAAG,CAAC,IAAI,CAAC;IAChB;IAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,OAAO,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE;QACpB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,YAAY;QACrB;;AAEA,QAAA,GAAG,GAAG,GAAG,CAAC,IAAK,CAAC;AAChB,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,YAAA,OAAO,YAAY;QACrB;IACF;AACA,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;SACa,OAAO,CAAC,GAAY,EAAE,IAAuB,EAAE,KAAc,EAAA;AAC3E,IAAA,IAAI,KAAK;AACT,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvB;AAEA,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AAAO,SAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,QAAA,KAAK,GAAG,CAAC,IAAI,CAAC;IAChB;IAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,KAAK;IACd;IACA,cAAc,CAAC,QAAQ,CAAC;AACxB,IAAA,IAAI,QAAQ;IACZ,QAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG;QACjC,cAAc,CAAC,QAAQ,CAAC;QACxB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,WAAW,EAAE;AACxC,YAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QACpB;AACA,QAAA,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;QACnB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;IACF;AACA,IAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK;AACrB,IAAA,OAAO,IAAI;AACb;AACA,SAAS,cAAc,CAAC,IAAY,EAAA;AAClC,IAAA,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE;AAC1E,QAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;IAC9D;AACF;AAEA;;;;;AAKG;AACG,SAAU,SAAS,CAAC,MAAe,EAAE,MAAe,EAAA;IACxD,IAAI,0BAA0B,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE;AAC5E,QAAA,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;IAC7C;SAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjE,QAAA,OAAO,EAAE;IACX;SAAO;AACL,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM;IACzC;AACF;AAEA;;;;;AAKG;AACH,SAAS,oBAAoB,CAAC,MAAe,EAAE,MAAe,EAAA;AAC5D,IAAA,MAAM,gBAAgB,GACpB,iBAAiB,CAAC,MAAM,CAAC;AACzB,QAAA,iBAAiB,CAAC,MAAM,CAAC;AACzB,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AACrB,QAAA,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACrB,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjB,QAAA,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC;AACd,QAAA,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjB;;;AAGG;IACH,IAAI,gBAAgB,EAAE;AACpB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM;IACzC;IAEA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7D,IAAA,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,MAAe,EAAE,GAAG,KAAI;AACrD,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5D,QAAA,OAAO,MAAM;IACf,CAAC,EAAE,EAAE,CAAC;AACR;;ACxMA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAI,KAAQ,EAAA;IAC1C,MAAM,OAAO,GAAiB,EAAE;IAEhC,KAAK,MAAM,MAAM,IAAI,KAAK;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,KAAK,EAAE,KAAK,CAAC,MAAM;AACpB,aAAA,CAAC;QACJ;AAEF,IAAA,OAAO,OAAO;AAChB;AAOA;;;;;AAKG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;IACxC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAChE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAC5C;AACH;AAEA;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,QAAgB,EAAA;IAC5C,MAAM,MAAM,GAAG,EAAa;;AAE5B,IAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;QACd,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,YAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,OAAO,MAAM;AACf;;AC3DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACG,SAAU,OAAO,CAAC,MAAe,EAAE,MAAe,EAAA;AACtD,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,QAAA,OAAO,IAAI;IACb;;;IAIA,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE;AAC1C,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzD,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE;;AAE7B,QAAA,OAAO,KAAK;IACd;IACA,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,QAAA,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IACtC;IACA,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE;AAC/C,QAAA,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D;IACA,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,EAAE;AAClD,QAAA,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC;SAAO;AACL,QAAA,OAAO,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;IAC9C;AACF;AAEA,SAAS,qBAAqB,CAAC,MAAe,EAAE,MAAe,EAAA;;IAE7D,OAAO,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE;AAChD;AAEA;;;;;AAKG;AACG,SAAU,aAAa,CAAC,MAAsB,EAAE,MAAsB,EAAA;AAC1E,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM;AACzB,IAAA,IAAI,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE;AACzB,QAAA,OAAO,KAAK;IACd;IACA,IAAI,KAAK,GAAG,IAAI;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAClC,KAAK,GAAG,KAAK;YACb;QACF;IACF;AACA,IAAA,OAAO,KAAK;AACd;AAEA;;;;;AAKG;AACG,SAAU,cAAc,CAAC,MAAe,EAAE,MAAe,EAAA;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AACxC,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM;AACxB,IAAA,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3D,YAAA,OAAO,KAAK;QACd;IACF;AACA,IAAA,OAAO,IAAI;AACb;;AChHA;;AAEG;;;;"}