{"version":3,"file":"firedev.mjs","sources":["../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/symbols.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/validators.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/helpers/firedev-helpers.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/helpers/class-helpers.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/models.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/http/http-methods-decorators.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/http/http-params-decorators.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/http/http-decorators.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/classes/controller-decorator.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-injector.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-controller.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-crud-controller.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-class.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-entity.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/orm.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-abstract-entity.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/classes/repository-decorator.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-repository.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-provider.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/storage.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/ui/firedev-admin-mode-configuration/firedev-admin.service.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/dependency-injection/di-container.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/get-response-value.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/env.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-client.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-server.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-mock.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-strategy/index.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/realtime/realtime-core.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/classes/subscriber-decorator.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-subscriber-for-entity.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/endpoint-context.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/create-context.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-context.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base-subscriber.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/base-classes/base.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/classes/entity-decorator.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/decorators/classes/provider-decorator.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/inject.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/constants.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/lib/index.ts","../../../tmp-libs-for-dist-websql/firedev/projects/firedev/src/firedev.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/websql';\nimport { OrignalClassKey } from 'firedev-typeorm/websql';\nimport { SYMBOL } from 'typescript-class-helpers/websql';\n\nexport namespace Symbols {\n  export const ctxInClassOrClassObj = Symbol();\n  export const classNameStaticProperty: string = SYMBOL.ClassNameStaticProperty;\n  export const fullClassNameStaticProperty: string = `$$fullclassName$$`;\n  export const orignalClass: string = OrignalClassKey;\n  export const orignalClassClonesObj: string = `$$originalClassClonesObj$$`;\n  export const classMethodsNames: string = `$$classMethodsNames$$`;\n\n  export const REALTIME = {\n    NAMESPACE: (contextName: string) => `${contextName}:firedevRealtimeNsp`,\n    TABLE_CHANGE(contextName: string, tableName: string) {\n      return `${contextName}:listentablename${tableName}`;\n    },\n    /**\n     * for backendSocket.in(ROOM_NAME).emit(EVENT)\n     *\n     * Room names are uniqe..\n     * here I am limiting number of event for clients.\n     */\n    ROOM_NAME: {\n\n      CUSTOM(contextName: string, customEvent: string) {\n        return `${contextName}:roomcustomevnet${customEvent}`;\n      },\n      /**\n       * @LAST TODO\n       */\n      SUBSCRIBER_EVENT(\n        contextName: string,\n        className: string,\n        propertyName: string,\n      ) {\n        return `${contextName}:room${_.camelCase(className)}${propertyName}`.toLowerCase();\n      },\n      UPDATE_ENTITY(\n        contextName: string,\n        className: string,\n        entityId: number | string,\n      ) {\n        return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();\n      },\n      UPDATE_ENTITY_PROPERTY(\n        contextName: string,\n        className: string,\n        property: string,\n        entityId: number | string,\n      ) {\n        return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n      },\n\n      SUBSCRIBE: {\n        CUSTOM: (contextName:string) => `${contextName}:roomSubscribeCustomRoomEvent`,\n        ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityEvents`,\n        ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomSubscribeEntityPropertyEvents`,\n      },\n      UNSUBSCRIBE: {\n        CUSTOM:(contextName:string) => `${contextName}:roomUnsubscribeCustomRoomEvent`,\n        ENTITY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityEvents`,\n        ENTITY_PROPERTY_UPDATE_EVENTS:(contextName:string) => `${contextName}:roomUnsubscribeEntityPropertyEvents`,\n      },\n    },\n  };\n\n  export const metadata = {\n    className: `class:realname`,\n    options: {\n      runtimeController: `runtime:controller:options`,\n      controller: `controller:options`,\n      controllerMethod: `controller:method:options`,\n      entity: `entity:options`,\n      repository: `repository:options`,\n      provider: `provider:options`,\n      subscriber: `subscriber:options`,\n    },\n  };\n\n  export const old = {\n    HAS_TABLE_IN_DB: Symbol(),\n    MDC_KEY: `modeldataconfig`,\n    WEBSQL_REST_PROGRESS_FUN: Symbol(),\n    WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n    WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n    WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n\n    X_TOTAL_COUNT: `x-total-count`,\n    CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,\n    CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,\n    MAPPING_CONFIG_HEADER: `mappingheader`,\n    MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,\n    MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,\n    ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,\n    CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,\n    SOCKET_MSG: `socketmessageng2rest`,\n    ANGULAR: {\n      INPUT_NAMES: Symbol(),\n    },\n    ERROR_MESSAGES: {\n      CLASS_NAME_MATCH: `Please check if your \"class name\" matches  @Controller( className ) or @Entity( className )`,\n    },\n  };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/symbols.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Models } from './models';\n\nexport namespace Validators {\n\n  export const classNameVlidation = (className, target: Function) => {\n    setTimeout(() => {\n\n      if (_.isUndefined(className)) {\n        throw `[Firedev]\n      Please provide \"className\" property for each Controller and Entity:\n\n          @Firedev.Controller({ className: 'MyExampleCtrl'  })\n          class MyExampleCtrl {\n            ...\n          }\n\n          @Firedev.Entity({ className: 'MyExampleEntity'  })\n          class MyExampleEntity {\n            ...\n          }\n\n    Notice that minified javascript code does not preserve\n    Functions/Classes names -this is only solution to preserve classes names.\n\n        `;\n      }\n    });\n\n    return _.isUndefined(className) ? target.name : className;\n  };\n\n\n\n  export const checkIfMethodsWithReponseTYpeAlowed = (\n    methods: Models.MethodConfig[],\n    current: Models.MethodConfig,\n  ) => {\n    const defaultResponseType = 'text or JSON';\n    if (!current.responseType) {\n      return;\n    }\n    for (let index = 0; index < methods.length; index++) {\n      const m = methods[index];\n      if (m.path === current.path && m.responseType !== current.responseType) {\n        throw new Error(`\n  [firedev] you can have 2 methods with same path but differetn reponseType-s\n\n          ${m.methodName}( ... path: ${m.path} )  -> responseType: ${m.responseType || defaultResponseType}\n          ${current.methodName}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n    Please change path name on of the methods.\n\n        `);\n      }\n    }\n  };\n\n\n\n\n  export const validateClassFunctions = (\n    controllers: any[],\n    entities: any[],\n    proviers: any[],\n    repositories: any[],\n  ) => {\n    if (\n      _.isArray(controllers) &&\n      controllers.filter(f => !_.isFunction(f)).length > 0\n    ) {\n      console.error('controllers', controllers);\n      throw `\n\n  Incorect value for property \"controllers\" inside Firedev.Init(...)\n\n  `;\n    }\n\n    if (\n      _.isArray(entities) &&\n      entities.filter(f => !_.isFunction(f)).length > 0\n    ) {\n      console.error('entites', entities);\n      throw `\n\n  Incorect value for property \"entities\" inside Firedev.Init(...)\n\n  `;\n    }\n  };\n\n\n  export const preventUndefinedModel = (model, id) => {\n    if (_.isUndefined(model)) {\n      throw `Bad update by id, config, id: ${id}`;\n    }\n  };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/validators.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport * as JSON5 from 'json5';\nimport { Models } from '../models';\nimport { ClassHelpers } from './class-helpers';\n\nexport namespace FiredevHelpers {\n\n  export const fillUpTo = (s: string, nCharacters: number) => {\n    return _.times(nCharacters, n => {\n      if (s.charAt(n)) {\n        return s.charAt(n);\n      }\n      return ' ';\n    }).join('');\n  };\n\n\n\n  export const isGoodPath = (p: string) => {\n    return p && typeof p === 'string' && p.trim() !== '';\n  };\n\n\n\n  export const tryTransformParam = param => {\n    if (typeof param === 'string') {\n      let n = Number(param);\n      if (!isNaN(n)) return n;\n      const bool = param.trim().toLowerCase();\n      if (bool === 'true') {\n        return true;\n      }\n      if (bool === 'false') {\n        return false;\n      }\n      try {\n        const t = JSON5.parse(param);\n        return t;\n      } catch (e) {\n        return param;\n      }\n    }\n    return param;\n  };\n\n\n\n  export const getExpressPath = (\n    c: Models.RuntimeControllerConfig,\n    pathOrClassConfig: Models.MethodConfig,\n  ) => {\n    if (typeof pathOrClassConfig === 'string')\n      return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '');\n    return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '');\n  };\n\n\n\n  export const defaultType = value => {\n    if (typeof value === 'string') return '';\n    if (typeof value === 'boolean') return false;\n    if (Array.isArray(value)) return {};\n    if (typeof value === 'object') return {};\n  };\n\n\n\n  export const parseJSONwithStringJSONs = (\n    object: Object,\n    waring = false,\n  ): Object => {\n\n    if (!_.isObject(object)) {\n      if (waring) {\n        console.error(\n          `\n        parseJSONwithStringJSONs(...)\n        Parameter should be a object, but is ${typeof object}\n        `,\n          object,\n        );\n      }\n\n      return object;\n    }\n\n    let res = _.cloneDeep(object);\n\n    Object.keys(res).forEach(key => {\n      let isJson = false;\n      try {\n        const possibleJSON = JSON.parse(res[key]);\n        res[key] = possibleJSON;\n        isJson = true;\n      } catch (e) {\n        isJson = false;\n      }\n\n      if (isJson) {\n        res[key] = parseJSONwithStringJSONs(res[key], false);\n      }\n    });\n\n    return res;\n  };\n\n\n\n  export const isPlainFileOrFolder = filePath => {\n    return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n  };\n\n\n\n  export const ipcKeyNameResponse = (\n    target: Function,\n    methodConfig: Models.MethodConfig,\n    expressPath: string,\n  ) => {\n    return [\n      'response',\n      ClassHelpers.getName(target),\n      methodConfig.methodName,\n      methodConfig.type,\n      expressPath,\n    ].join('--');\n  };\n\n\n\n  export const ipcKeyNameRequest = (\n    target: Function,\n    methodConfig: Models.MethodConfig,\n    expressPath: string,\n  ) => {\n    return [\n      'request',\n      ClassHelpers.getName(target),\n      methodConfig.methodName,\n      methodConfig.type,\n      expressPath,\n    ].join('--');\n  };\n\n\n\n  export const websqlMocks = headers => {\n    const response: Express.Response = {\n      status(status: any) {\n\n        return {\n          send(send: any) {\n\n          },\n        };\n      },\n      setHeader(key: string, value: any) {\n\n        headers[key] = value;\n      },\n    };\n    const request: Express.Request = {};\n    return { request, response };\n  };\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/helpers/firedev-helpers.ts","\n\nimport { Symbols } from '../symbols';\nimport { Validators } from '../validators';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { FiredevControllerOptions } from '../decorators/classes/controller-decorator';\nimport { FiredevHelpers } from './firedev-helpers';\nimport { FiredevEntityOptions } from '../decorators/classes/entity-decorator';\nimport { CLASS } from 'typescript-class-helpers/websql';\n/* */\n/* */\n  \n\nexport namespace ClassHelpers {\n\n  /**\n   * TODO - repalce in every place when getting class fn from object\n   */\n  export const getClassFnFromObject = (json: Object) => {\n    if (_.isUndefined(json) || _.isNull(json)) {\n      return;\n    }\n    if (json.constructor) {\n      return json.constructor;\n    }\n    const p = Object.getPrototypeOf(json);\n    return p && p.constructor && p.constructor.name !== 'Object'\n      ? p.constructor\n      : void 0;\n  };\n\n\n\n  export const getName = (classFnOrObject: any): string => {\n\n    if (classFnOrObject instanceof FormData) {\n      return 'FormData';\n    }\n    if (!classFnOrObject) {\n      console.error('OBJECT OR CLASS', classFnOrObject);\n      throw new Error(`Cannot get name from this object or class.`);\n    }\n    return (\n      (classFnOrObject[Symbols.classNameStaticProperty]\n        ? classFnOrObject[Symbols.classNameStaticProperty]\n        : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||\n      CLASS.getName(classFnOrObject)\n    );\n  };\n\n\n  export const getOrginalClass = (classFnOrObject: any): any => {\n    const org = classFnOrObject[Symbols.orignalClass];\n    if (!org) {\n      return classFnOrObject;\n    }\n    return getOrginalClass(org);\n  };\n\n\n  export const getFullInternalName = (classFnOrObject: any): string => {\n\n\n    if (!classFnOrObject) {\n      throw new Error(`Cannot get name from: ${classFnOrObject}`);\n    }\n    return (\n      (classFnOrObject[Symbols.fullClassNameStaticProperty]\n        ? classFnOrObject[Symbols.fullClassNameStaticProperty]\n        : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||\n      void 0\n    );\n  };\n\n\n\n  export const getUniquKey = (classFnOrObject: any): string => {\n    const classFn = _.isFunction(classFnOrObject)\n      ? classFnOrObject\n      : classFnOrObject.constructor;\n    const config = Reflect.getMetadata(\n      Symbols.metadata.options.controller,\n      classFn,\n    ) as FiredevEntityOptions;\n    return config.uniqueKeyProp;\n  };\n\n\n\n  export const isContextClassObject = (obj: any): boolean => {\n    if (\n      !_.isObject(obj) ||\n      _.isArray(obj) ||\n      _.isRegExp(obj) ||\n      _.isBuffer(obj) ||\n      _.isArrayBuffer(obj)\n    ) {\n      return false;\n    }\n    if (_.isDate(obj)) {\n      return true;\n    }\n    const className = getName(obj);\n    return _.isString(className) && className !== 'Object';\n  };\n\n\n\n\n  export const setName = (target: Function, className: string): void => {\n\n    Validators.classNameVlidation(className, target);\n    target[Symbols.classNameStaticProperty] = className;\n  };\n\n\n\n  export const hasParentClassWithName = (\n    target: Function,\n    className: string,\n    targets = [],\n  ): boolean => {\n    if (!target) {\n      return false;\n    }\n    targets.push(target);\n    let targetProto = Object.getPrototypeOf(target);\n\n    if (\n      _.isFunction(targetProto) &&\n      ClassHelpers.getName(targetProto) === className\n    ) {\n\n      return true;\n    }\n    return hasParentClassWithName(targetProto, className, targets);\n  };\n\n\n\n  export const getControllerConfig = (\n    target: Function,\n  ): Models.ControllerConfig | undefined => {\n    const classMetadataOptions: FiredevControllerOptions = Reflect.getMetadata(\n      Symbols.metadata.options.controller,\n      target,\n    );\n    const classMetadata: Models.ControllerConfig = _.merge(\n      new Models.ControllerConfig(),\n      classMetadataOptions,\n    );\n\n\n    const methodNames = ClassHelpers.getMethodsNames(target); //  Object.getOwnPropertyNames(target.prototype);\n\n    for (const methodName of methodNames) {\n      const methodMetadata: Models.MethodConfig = Reflect.getMetadata(\n        Symbols.metadata.options.controllerMethod,\n        target,\n        methodName,\n      );\n\n      if (methodMetadata) {\n        classMetadata.methods[methodName] = methodMetadata;\n      }\n    }\n    return classMetadata;\n  };\n\n\n\n\n\n  const notAllowedAsMethodName = [\n    'length',\n    'name',\n    'arguments',\n    'caller',\n    'constructor',\n    'apply',\n    'bind',\n    'call',\n    'toString',\n    '__defineGetter__',\n    '__defineSetter__',\n    'hasOwnProperty',\n    '__lookupGetter__',\n    '__lookupSetter__',\n    'isPrototypeOf',\n    'propertyIsEnumerable',\n    'valueOf',\n    '__proto__',\n    'toLocaleString',\n  ];\n\n\n  export const getMethodsNames = (\n    classOrClassInstance: any,\n    allMethodsNames = [],\n  ): string[] => {\n    if (!classOrClassInstance) {\n      return allMethodsNames;\n    }\n\n    const isClassFunction = _.isFunction(classOrClassInstance);\n    const classFun = isClassFunction\n      ? classOrClassInstance\n      : Object.getPrototypeOf(classOrClassInstance);\n    const objectToCheck = isClassFunction\n      ? (classOrClassInstance as Function)?.prototype\n      : classOrClassInstance;\n    const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n    const properties = _.uniq([\n      ...Object.getOwnPropertyNames(objectToCheck || {}),\n      ...Object.getOwnPropertyNames(prototypeObj || {}),\n      ...Object.keys(objectToCheck || {}),\n      ...Object.keys(prototypeObj || {}),\n    ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n    properties\n      .filter(methodName => typeof objectToCheck[methodName] === 'function')\n      .forEach(p => allMethodsNames.push(p));\n\n    if (\n      !classFun ||\n      !classFun.constructor ||\n      classFun?.constructor?.name === 'Object'\n    ) {\n      return allMethodsNames;\n    }\n    return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n  };\n\n\n\n  export const getControllerConfigs = (\n    target: Function,\n    configs: Models.ControllerConfig[] = [],\n    callerTarget?: Function,\n  ): Models.RuntimeControllerConfig[] => {\n    if (!_.isFunction(target)) {\n      throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;\n    }\n\n    let config: Models.RuntimeControllerConfig;\n    const parentClass = Object.getPrototypeOf(target);\n    const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;\n    const isValidParent = _.isFunction(parentClass) && parentName !== '';\n\n    config = getControllerConfig(target);\n\n    configs.push(config);\n\n    return isValidParent\n      ? getControllerConfigs(parentClass, configs, target)\n      : configs;\n  };\n\n\n\n  export const getCalculatedPathFor = (target: Function) => {\n    const configs = getControllerConfigs(target);\n\n    const parentscalculatedPath = _.slice(configs, 1)\n      .reverse()\n      .map(bc => {\n        if (FiredevHelpers.isGoodPath(bc.path)) {\n          return bc.path;\n        }\n        return bc.className;\n      })\n      .join('/');\n\n    return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;\n  };\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/helpers/class-helpers.ts","\n\nimport { CoreModels } from 'tnp-core/websql';\nimport { Response, RequestHandler } from 'express';\nimport {   Response as ExpressResponse,   Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport type { FiredevControllerOptions } from './decorators/classes/controller-decorator';\nimport type { FiredevEntityOptions } from './decorators/classes/entity-decorator';\n\nexport namespace Models {\n  export type FrameworkMode =\n    | 'backend-frontend(tcp+udp)'\n    | 'remote-backend(tcp+udp)'\n    | 'backend-frontend(ipc-electron)'\n    | 'backend-frontend(websql)';\n\n\n  export enum ClassType {\n    ENTITY = 'ENTITY',\n    CONTROLLER = 'CONTROLLER',\n    REPOSITORY = 'REPOSITORY',\n    PROVIDER = 'PROVIDER',\n    SUBSCRIBER = 'SUBSCRIBER',\n  }\n\n  export const ClassTypeKey = {\n    [ClassType.ENTITY]: 'entities',\n    [ClassType.CONTROLLER]: 'controllers',\n    [ClassType.REPOSITORY]: 'repositories',\n    [ClassType.PROVIDER]: 'providers',\n    [ClassType.SUBSCRIBER]: 'subscribers',\n  } as {\n    [key in ClassType]: keyof ContextOptions<any, any, any, any, any, any>;\n  };\n\n\n\n\n  export type MiddlewareType = [Function, any[]];\n\n\n\n  export interface DatabaseConfig {\n    /**\n     * database name\n     */\n    database?: string;\n    /**\n     * only for file base db: sqlite, sqljs\n     */\n    location?: string;\n    synchronize: boolean;\n    dropSchema: boolean;\n    type?: CoreModels.DatabaseType;\n\n    autoSave: boolean; // TODO what is this ?\n    /**\n     * for websql db mode\n     */\n    useLocalForage?: boolean;\n    logging: boolean;\n\n    databasePort?: number;\n    databaseHost?: string;\n    databaseUsername?: string;\n    databasePassword?: string;\n  }\n\n\n\n\n  export type ISession = {\n    secret?: string;\n    saveUninitialized?: boolean;\n    /**\n     * max age of session\n     */\n    cookieMaxAge?: number;\n    secure?: boolean;\n    resave?: boolean;\n  };\n\n\n\n  export type ContectionOptionsLogs = {\n    http: boolean;\n    realtime: boolean;\n    framework: boolean;\n    db: boolean;\n  };\n  export interface ContextOptions<\n    CONTEXTS,\n    CONTROLLERS,\n    ENTITIES,\n    REPOSITORIES,\n    PROVIDERS,\n    SUBSCRIBERS,\n  > {\n    contextName: string;\n    host?: string;\n    /**\n   * frontend host only needed when we are using\n   * withCredentials for axios\n   * and session cookie\n   */\n    frontendHost?: string;\n    remoteHost?: string;\n    useIpcWhenElectron?: boolean;\n    contexts?: CONTEXTS;\n    controllers?: CONTROLLERS;\n    entities?: ENTITIES;\n    repositories?: REPOSITORIES;\n    providers?: PROVIDERS;\n    subscribers?: SUBSCRIBERS;\n    session?: ISession;\n    productionMode?: boolean;\n    abstract?: boolean;\n    logs?: boolean | ContectionOptionsLogs;\n    database?: boolean | DatabaseConfig;\n    disabledRealtime?: boolean;\n    https?: {\n      key: string;\n      cert: string;\n    };\n    publicAssets?: { serverPath: string; locationOnDisk: string }[];\n    middlewares?: MiddlewareType[];\n    /**\n     * @deprecated\n     * only for debugging purpose\n     */\n    override?: {\n      entities?: Function[];\n      controllers?: Function[];\n      repositories?: Function[];\n      providers?: Function[];\n      subscribers?: Function[];\n    };\n  }\n\n\n\n  export class DecoratorAbstractOpt {\n    className: string;\n  }\n\n\n\n  export class ParamConfig {\n    paramName: string;\n    paramType: CoreModels.ParamType;\n    index: number;\n    defaultType: any;\n    expireInSeconds?: number;\n  }\n\n\n\n  export class MethodConfig {\n    methodName: string;\n    /**\n     * path is global in express app\n     */\n    global?: boolean;\n    /**\n     * override default content type\n     */\n    contentType?: any;\n    /**\n     * override default axiso response type\n     */\n    responseType?: any;\n    path: string;\n    descriptor: PropertyDescriptor;\n    type: CoreModels.HttpMethod;\n\n    requestHandler: any;\n\n    parameters: { [paramName: string]: ParamConfig } = {};\n  }\n\n\n\n  export class ControllerConfig extends DecoratorAbstractOpt {\n    realtime?: boolean;\n    path: string;\n    uniqueKey?: string;\n    methods: { [methodName: string]: MethodConfig } = {};\n  }\n\n\n\n  export class RuntimeControllerConfig extends ControllerConfig {\n    calculatedPath?: string;\n    browserTransformFn?: (entity: any) => any;\n  }\n\n\n\n  export namespace Http {\n    export import Rest = ModelsNg2Rest;\n\n    export type ContextENDPOINT = { target: Function; initFN: Function };\n\n    export type FormlyFromType = 'material' | 'bootstrap';\n\n    export type ExpressContext<T> = (\n      req: ExpressRequest,\n      res: ExpressResponse,\n    ) => T;\n\n    export type SyncResponse<T> = string | T;\n\n    export type ResponseFuncOpt<T> = {\n      limitSize?: (\n        enties: Function | Function[],\n        include: string[],\n        exclude: string[],\n      ) => void;\n    };\n\n    export type SyncResponseFunc<T> = (\n      options?: ResponseFuncOpt<T>,\n    ) => SyncResponse<T>;\n    export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n    export interface ClientAction<T> {\n      received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n    }\n\n    export interface __Response<T> {\n\n      send?: MixResponse<T>;\n\n    }\n\n    export interface AsyncResponse<T> {\n      (\n        req?: ExpressRequest,\n        res?: ExpressResponse,\n      ): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n    }\n\n    export type Response<T = string> = (__Response<T> | AsyncResponse<T>) &\n      ClientAction<T> &\n      __Response<T>;\n\n    export class Errors {\n      public toString = (): string => {\n        return this.message;\n      };\n\n      private constructor(\n        public message: string,\n        private code: ModelsNg2Rest.HttpCode = 400,\n      ) {}\n\n      private static create(\n        message: string,\n        code: ModelsNg2Rest.HttpCode = 400,\n      ) {\n        return new Errors(message, code);\n      }\n\n      public static entityNotFound(entity?: Function) {\n        return Errors.create(\n          `Entity ${ClassHelpers.getName(entity)} not found`,\n        );\n      }\n\n      public static custom(\n        message: string,\n        code: ModelsNg2Rest.HttpCode = 400,\n      ) {\n        return Errors.create(message, code);\n      }\n    }\n\n\n    export interface AuthCallBack {\n      (methodReference: Function): RequestHandler;\n    }\n\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/models.ts","\n\nimport { CoreModels, _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nconst metaReq = (\n  method: Models.Http.Rest.HttpMethod,\n  path: string,\n  target: Function,\n  propertyKey: string,\n  descriptor: PropertyDescriptor,\n  pathOrOptions: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal: boolean,\n) => {\n  let options: FiredevHttpDecoratorOptions;\n  if (typeof pathOrOptions === 'object') {\n    options = pathOrOptions;\n    pathOrOptions = options.path as any;\n    pathIsGlobal = !!options.pathIsGlobal;\n    path = options.path;\n  } else {\n    options = { pathOrOptions, pathIsGlobal } as any;\n  }\n\n  const { overrideContentType, overridResponseType } = options;\n\n  let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n    Symbols.metadata.options.controllerMethod,\n    target.constructor,\n    propertyKey,\n  );\n  if (!methodConfig) {\n    methodConfig = new Models.MethodConfig();\n    Reflect.defineMetadata(\n      Symbols.metadata.options.controllerMethod,\n      methodConfig,\n      target.constructor,\n      propertyKey,\n    );\n  }\n\n  methodConfig.methodName = propertyKey;\n  methodConfig.type = method;\n  if (!path) {\n    let paramsPathConcatedPath = '';\n    for (const key in methodConfig.parameters) {\n      if (methodConfig.parameters.hasOwnProperty(key)) {\n        const element = methodConfig.parameters[key];\n        if (\n          element.paramType === 'Path' &&\n          _.isString(element.paramName) &&\n          element.paramName.trim().length > 0\n        ) {\n          paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;\n        }\n      }\n    }\n    methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`;\n  } else {\n    methodConfig.path = path;\n  }\n\n  methodConfig.descriptor = descriptor;\n  methodConfig.global = pathIsGlobal;\n  methodConfig.contentType = overrideContentType;\n  methodConfig.responseType = overridResponseType;\n  Reflect.defineMetadata(\n    Symbols.metadata.options.controllerMethod,\n    methodConfig,\n    target.constructor,\n    propertyKey,\n  );\n\n};\n\nexport interface FiredevHttpDecoratorOptions {\n  path?: string;\n  pathIsGlobal?: boolean;\n  overrideContentType?: CoreModels.ContentType;\n  overridResponseType?: ModelsNg2Rest.ResponseTypeAxios;\n}\n\nexport function GET(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'get',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\nexport function HEAD(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'head',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\nexport function POST(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'post',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\nexport function PUT(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'put',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\nexport function PATCH(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'patch',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\nexport function DELETE(\n  pathOrOptions?: string | FiredevHttpDecoratorOptions,\n  pathIsGlobal = false,\n) {\n  return function (\n    target: any,\n    propertyKey: string,\n    descriptor: PropertyDescriptor,\n  ) {\n    metaReq(\n      'delete',\n      pathOrOptions as string,\n      target,\n      propertyKey,\n      descriptor,\n      pathOrOptions,\n      pathIsGlobal,\n    );\n  };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/http/http-methods-decorators.ts","\n\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\n\nfunction metaParam(\n  param: Models.Http.Rest.ParamType,\n  name: string,\n  expire: number,\n  defaultValue = undefined,\n  target: Function,\n  propertyKey: string | symbol,\n  parameterIndex: number,\n) {\n  let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n    Symbols.metadata.options.controllerMethod,\n    target.constructor,\n    propertyKey,\n  );\n  if (!methodConfig) {\n    methodConfig = new Models.MethodConfig();\n    Reflect.defineMetadata(\n      Symbols.metadata.options.controllerMethod,\n      methodConfig,\n      target.constructor,\n      propertyKey,\n    );\n  }\n\n  const nameKey = name ? name : param;\n  const p = (methodConfig.parameters[nameKey] = !methodConfig.parameters[\n    nameKey\n  ]\n    ? new Models.ParamConfig()\n    : methodConfig.parameters[nameKey]);\n  p.index = parameterIndex;\n  p.paramName = name;\n  p.paramType = param;\n  p.defaultType = defaultValue;\n  p.expireInSeconds = expire;\n  Reflect.defineMetadata(\n    Symbols.metadata.options.controllerMethod,\n    methodConfig,\n    target.constructor,\n    propertyKey,\n  );\n\n}\n\nexport function Path(name: string) {\n  return function (\n    target: any,\n    propertyKey: string | symbol,\n    parameterIndex: number,\n  ) {\n    metaParam('Path', name, undefined, {}, target, propertyKey, parameterIndex);\n  };\n}\n\nexport function Query(name?: string) {\n  return function (\n    target: any,\n    propertyKey: string | symbol,\n    parameterIndex: number,\n  ) {\n    metaParam(\n      'Query',\n      name,\n      undefined,\n      {},\n      target,\n      propertyKey,\n      parameterIndex,\n    );\n  };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n  return function (\n    target: any,\n    propertyKey: string | symbol,\n    parameterIndex: number,\n  ) {\n    metaParam(\n      'Cookie',\n      name,\n      expireInSecond,\n      {},\n      target,\n      propertyKey,\n      parameterIndex,\n    );\n  };\n}\n\nexport function Header(name?: string) {\n  return function (\n    target: any,\n    propertyKey: string | symbol,\n    parameterIndex: number,\n  ) {\n    metaParam(\n      'Header',\n      name,\n      undefined,\n      {},\n      target,\n      propertyKey,\n      parameterIndex,\n    );\n  };\n}\n\nexport function Body(name?: string) {\n  return function (\n    target: any,\n    propertyKey: string | symbol,\n    parameterIndex: number,\n  ) {\n    metaParam('Body', name, undefined, {}, target, propertyKey, parameterIndex);\n  };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/http/http-params-decorators.ts","\n\nimport * as methods from './http-methods-decorators';\nimport * as params from './http-params-decorators';\n\nexport namespace Http {\n  export import GET = methods.GET;\n  export import POST = methods.POST;\n  export import PUT = methods.PUT;\n  export import DELETE = methods.DELETE;\n  export import PATCH = methods.PATCH;\n  export import HEAD = methods.HEAD;\n  export namespace Param {\n    export import Query = params.Query;\n    export import Path = params.Path;\n    export import Body = params.Body;\n    export import Cookie = params.Cookie;\n    export import Header = params.Header;\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/http/http-decorators.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function FiredevController(options?: FiredevControllerOptions) {\n  return function (constructor: Function) {\n    ClassHelpers.setName(constructor, options?.className);\n    Reflect.defineMetadata(\n      Symbols.metadata.options.controller,\n      options,\n      constructor,\n    );\n    Reflect.defineMetadata(\n      Symbols.metadata.className,\n      options?.className || constructor.name,\n      constructor,\n    );\n  };\n}\n\nexport class FiredevControllerOptions extends Models.DecoratorAbstractOpt {\n  /**\n   * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n   */\n  realtime?: boolean;\n  /**\n   * override default path for controller api\n   */\n  path?: string;\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/classes/controller-decorator.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\nimport { BaseClass } from './base-class';\n\n\nexport class BaseInjector<CloneT extends BaseClass = any> {\n  /**\n   * for proxy purposes\n   */\n  getOriginalPrototype: () => any;\n  /**\n   * for proxy purposes\n   */\n  getOriginalConstructor: () => any;\n\n\n  /**\n   * class initialization hook\n   * firedev after class instace creation\n   */\n  async _() {\n    const reposToInit = this.__repositories_to_init__;\n    for (const repo of reposToInit) {\n      await repo.__init(this);\n    }\n  }\n\n\n\n  /**\n   * Current endpoint context\n   */\n  get __endpoint_context__() {\n    return this[Symbols.ctxInClassOrClassObj] as EndpointContext;\n  }\n\n\n\n\n\n  /**\n   * inject crud repo for entity\n   */\n  injectRepo<T>(entityForCrud: new (...args: any[]) => T): BaseRepository<T> {\n    const repoProxy = this.__inject(void 0, {\n      localInstance: true,\n      resolveClassFromContext: 'BaseRepository',\n      locaInstanceConstructorArgs: [() => entityForCrud],\n    });\n    this.__repositories_to_init__.push(repoProxy as any);\n    return repoProxy as any;\n  }\n\n\n\n  injectCustomRepository<T>(\n    cutomRepositoryClass: new (...args: any[]) => T,\n  ): T {\n    const repoProxy = this.__inject<T>(cutomRepositoryClass, {\n      localInstance: true,\n      locaInstanceConstructorArgs: [\n        () => cutomRepositoryClass.prototype.entityClassResolveFn(),\n      ],\n    });\n    this.__repositories_to_init__.push(repoProxy as any);\n    return repoProxy;\n  }\n\n\n\n  /**\n   * aliast to .injectRepository()\n   */\n  injectCustomRepo<T>(cutomRepositoryClass: new (...args: any[]) => T): T {\n    const repoProxy = this.injectCustomRepository<T>(cutomRepositoryClass);\n    this.__repositories_to_init__.push(repoProxy as any);\n    return repoProxy;\n  }\n\n\n\n  injectController<T>(ctor: new (...args: any[]) => T): T {\n    return this.__inject<T>(ctor, { localInstance: false });\n  }\n\n\n\n\n  /**\n   * aliast to .injectController()\n   */\n  injectSubscriber<T>(ctor: new (...args: any[]) => T): T {\n    return this.__inject<T>(ctor, { localInstance: false });\n  }\n\n\n\n  /**\n   * aliast to .injectController()\n   */\n  injectCtrl<T>(ctor: new (...args: any[]) => T): T {\n    return this.injectController<T>(ctor);\n  }\n\n\n\n  /**\n   * global provider available in every context\n   */\n  injectGlobalProvider<T>(ctor: new (...args: any[]) => T): T {\n    return this.__inject<T>(ctor, { localInstance: false });\n  }\n\n\n\n  /**\n   * context scoped provider\n   * TODO\n   */\n  injectContextProvider<T>(ctor: new (...args: any[]) => T): T {\n    return this.__inject<T>(ctor, { localInstance: false });\n  }\n\n\n  /**\n   * Repositories to init (by controller)\n   */\n  protected __repositories_to_init__ = [] as BaseRepository<any>[];\n\n\n  /**\n   * Inject: Controllers, Providers, Repositories, Services, etc.\n   * TODO  addd nest js injecting\n   */\n  private __inject<T>(\n    ctor: new (...args: any[]) => T,\n    options?: {\n      /**\n       * (repositories are ONLY/ALWAYS local instances)\n       * If true, then local instance will be created\n       * controllers, providers can be local or global\n       */\n      localInstance: boolean;\n      resolveClassFromContext?: string;\n      locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n    },\n  ): T {\n    if (!options) {\n      options = {} as any;\n    }\n\n    const contextClassInstance = this;\n    return new Proxy(\n      {},\n      {\n        get: (__, propName) => {\n          const contextFromClass: EndpointContext =\n            ctor && ctor[Symbols.ctxInClassOrClassObj];\n\n          const resultContext: EndpointContext = contextFromClass\n            ? contextFromClass\n            : this.__endpoint_context__;\n\n          if (options.resolveClassFromContext) {\n            const resolvedClass = resultContext.getClassFunByClassName(\n              options.resolveClassFromContext,\n            );\n            ctor = resolvedClass as any;\n          }\n\n          if (resultContext) {\n            var instance: T = resultContext.inject(ctor, {\n              ...options,\n              contextClassInstance,\n            });\n            if (!instance) {\n              throw new Error(\n                `Not able to inject \"${\n                  ClassHelpers.getName(ctor) || ctor.name\n                }\" inside ` +\n                  `property \"${propName?.toString()}\" on  class \"${ClassHelpers.getName(\n                    this,\n                  )}\".\n\n              Please add \"${\n                ClassHelpers.getName(ctor) || ctor.name\n              }\" to (entites or contorllers or providers or repositories)\n\n              `,\n              );\n            }\n\n            const result =\n              typeof instance[propName] === 'function'\n                ? instance[propName].bind(instance)\n                : instance[propName];\n\n\n            return result;\n          }\n\n\n\n        },\n        set: (__, propName, value) => {\n          const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];\n          const resultContext: EndpointContext = contextFromClass\n            ? contextFromClass\n            : this.__endpoint_context__;\n\n          if (options.resolveClassFromContext) {\n            const resolvedClass = resultContext.getClassFunByClassName(\n              options.resolveClassFromContext,\n            );\n            ctor = resolvedClass as any;\n          }\n\n          if (resultContext) {\n            var instance: T = resultContext.inject(ctor, {\n              ...options,\n              contextClassInstance,\n            });\n            if (!instance) {\n              const classNameNotResolved =\n                ClassHelpers.getName(ctor) || ctor.name;\n              throw new Error(\n                `Not able to inject \"${classNameNotResolved}\" inside ` +\n                  `property \"${propName?.toString()}\" on  class \"${ClassHelpers.getName(\n                    this,\n                  )}\".\n\n              Please add \"${\n                ClassHelpers.getName(ctor) || ctor.name\n              }\" to (entites or contorllers or providers or repositories)\n\n              `,\n              );\n            }\n            instance[propName] = value;\n          }\n          return true;\n        },\n      },\n    ) as T;\n  }\n\n\n\n\n\n  public clone(override: Partial<CloneT>): CloneT {\n    const classFn = ClassHelpers.getClassFnFromObject(this);\n    const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n    return result;\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-injector.ts","\n\nimport { FiredevController } from '../decorators/classes/controller-decorator';\nimport { BaseInjector } from './base-injector';\n\n@FiredevController({ className: 'BaseController' })\nexport class BaseController extends BaseInjector {\n  /**\n   * init example data for db\n   */\n  initExampleDbData(): Promise<any> {\n    return void 0;\n  }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-controller.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { BaseController } from './base-controller';\nimport { BaseRepository } from './base-repository';\nimport {   GET,   PUT,   DELETE,   POST,   HEAD,   PATCH, } from '../decorators/http/http-methods-decorators';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Query, Path, Body } from '../decorators/http/http-params-decorators';\nimport { MySqlQuerySource } from 'firedev-type-sql/websql';\nimport { Models } from '../models';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport {   FiredevController,   FiredevControllerOptions, } from '../decorators/classes/controller-decorator';/* */\n/* */\n/* */\n\nimport { ClassHelpers } from '../helpers/class-helpers';\n\nimport { Validators } from '../validators';\nimport { FiredevEntityOptions } from '../decorators/classes/entity-decorator';\n\n\n/**\n * Please override property entityClassFn with entity class.\n */\n@FiredevController({ className: 'BaseCrudController' })\nexport abstract class BaseCrudController<Entity> extends BaseController {\n\n  protected db?: BaseRepository<Entity>;\n\n  /**\n   * Please provide entity as class propery entityClassFn:\n   * @returns class function\n   *\n   */\n  abstract entityClassResolveFn: () => any;\n\n\n\n  async _() {\n    if (!_.isFunction(this.entityClassResolveFn)) {\n      Helpers.warn(\n        `Skipping initing CRUD controller ${ClassHelpers.getName(\n          this,\n        )} because entityClassResolveFn is not provided.`,\n      );\n      return;\n    }\n\n    let entityClassFn = this.entityClassResolveFn();\n    this.db = this.injectRepo(entityClassFn);\n\n    if (entityClassFn) {\n      const configEntity = Reflect.getMetadata(\n        Symbols.metadata.options.entity,\n        ClassHelpers.getClassFnFromObject(this),\n      ) as FiredevEntityOptions;\n      if (configEntity?.createTable === false) {\n        Helpers.warn(\n          `Table for entity ${ClassHelpers.getName(\n            entityClassFn,\n          )} will not be created. Crud will not work properly.`,\n        );\n      }\n    } else {\n      Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(\n        this,\n      )}.\n\n      Please provide entity as class propery entityClassFn:\n\n      class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {\n\n        entityClassResolveFn = ()=> MyEntityClass;\n\n      }\n\n      `);\n    }\n    await super._();\n  }\n\n\n\n  @GET(`/:id/property/:property`)\n  bufforedChanges(\n    @Path(`id`) id: number | string,\n    @Path(`property`) property: string,\n    @Query('alreadyLength') alreadyLength?: number,\n  ): Models.Http.Response<string | any[]> {\n\n    return async (request, response) => {\n      const model = await this.db.getBy(id);\n      if (model === void 0) {\n        return;\n      }\n      Validators.preventUndefinedModel(model, id);\n      let value = model[property];\n      let result: any;\n      if (_.isString(value) || _.isArray(value)) {\n        result = (value as string).slice(alreadyLength);\n      }\n\n      return result;\n    };\n\n  }\n\n\n\n  @GET()\n  pagination(\n    @Query('pageNumber') pageNumber: number = 1,\n    @Query('pageSize') pageSize: number = 10,\n    @Query('search') search: string = '',\n  ): Models.Http.Response<Entity[]> {\n\n    return async (request, response) => {\n      if (this.db.repositoryExists) {\n        const query = {\n          page: pageNumber,\n          take: pageSize,\n          keyword: search,\n        };\n\n\n\n\n        const take = query.take || 10;\n        const page = query.page || 1;\n        const skip = (page - 1) * take;\n        const keyword = query.keyword || '';\n\n        const [result, total] = await this.db.findAndCount({\n\n\n          take: take,\n          skip: skip,\n        });\n\n        response?.setHeader(Symbols.old.X_TOTAL_COUNT, total);\n\n\n\n\n\n\n\n\n\n        return result as Entity[];\n      }\n      return [];\n    };\n\n  }\n\n\n\n  @GET()\n  getAll(): Models.Http.Response<Entity[]> {\n\n    return async (request, response) => {\n      if (this.db.repositoryExists) {\n        const { models, totalCount } = await this.db.getAll();\n        response?.setHeader(Symbols.old.X_TOTAL_COUNT, totalCount);\n        return models;\n      }\n      return [];\n    };\n\n  }\n\n\n\n  @GET(`/:id`)\n  getBy(@Path(`id`) id: number | string): Models.Http.Response<Entity> {\n\n    return async () => {\n      const model = await this.db.getBy(id);\n      return model;\n    };\n\n  }\n\n\n\n  @PUT(`/:id`)\n  updateById(\n    @Path(`id`) id: number | string,\n    @Body() item: Entity,\n  ): Models.Http.Response<Entity> {\n\n\n    return async () => {\n      const model = await this.db.updateById(id, item as any);\n      return model;\n    };\n\n  }\n\n\n\n  @PATCH(`/:id`)\n  patchById(\n    @Path(`id`) id: number | string,\n    @Body() item: Entity,\n  ): Models.Http.Response<Entity> {\n\n\n    return async () => {\n      const model = await this.db.updateById(id, item as any);\n      return model;\n    };\n\n  }\n\n\n\n  @PUT()\n  bulkUpdate(@Body() items: Entity[]): Models.Http.Response<Entity[]> {\n\n    return async () => {\n      if (!Array.isArray(items) || items?.length === 0) {\n        return [];\n      }\n      const { models } = await this.db.bulkUpdate(items);\n      return models;\n    };\n\n  }\n\n\n\n  @DELETE(`/:id`)\n  deleteById(@Path(`id`) id: number): Models.Http.Response<Entity> {\n\n    return async () => {\n      const model = await this.db.deleteById(id);\n      return model;\n    };\n\n  }\n\n\n\n  @DELETE(`/bulkDelete/:ids`)\n  bulkDelete(\n    @Path(`ids`) ids: (number | string)[],\n  ): Models.Http.Response<(number | string | Entity)[]> {\n\n    return async () => {\n      const models = await this.db.bulkDelete(ids);\n      return models;\n    };\n\n  }\n\n\n\n  @POST()\n  create(@Body() item: Entity): Models.Http.Response<Entity> {\n\n    return async () => {\n      const model = await this.db.create(item as any);\n      return model as Entity;\n    };\n\n  }\n\n\n\n  @POST()\n  bulkCreate(@Body() items: Entity): Models.Http.Response<Entity[]> {\n\n    return async () => {\n      const models = await this.db.bulkCreate(items as any);\n      return models as Entity[];\n    };\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-crud-controller.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\n\nimport { inject } from '@angular/core';\n\n\n\nexport class BaseClass<CloneT extends BaseClass = any> {\n\n  /**\n   * class initialization hook\n   * firedev after class instace creation\n   */\n  async _() {}\n\n\n\n  public clone(override: Partial<CloneT>): CloneT {\n    const classFn = ClassHelpers.getClassFnFromObject(this);\n    const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n    return result;\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-class.ts","\n\n\nimport { Entity } from 'firedev-typeorm/websql';\n\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { BaseClass } from './base-class';\n\nlet EntityDecorator = () => {\n  return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseEntity<\n  /**\n   * type for cloning\n   */\n  CloneT extends BaseClass = any,\n> extends BaseClass<CloneT> {}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-entity.ts","\n\n\nimport * as tsorm from 'firedev-typeorm/websql';\n\n\n\nexport namespace Orm {\n\n  export const Repository = tsorm.Repository;\n  export import Connection = tsorm.Connection;\n  export namespace ListenEvent {\n    export import AfterInsert = tsorm.AfterInsert;\n    export import AfterLoad = tsorm.AfterLoad;\n    export import AfterRecover = tsorm.AfterRecover;\n    export import AfterRemove = tsorm.AfterRemove;\n    export import AfterSoftRemove = tsorm.AfterSoftRemove;\n    export import AfterUpdate = tsorm.AfterUpdate;\n    export import BeforeInsert = tsorm.BeforeInsert;\n    export import BeforeRecover = tsorm.BeforeRecover;\n    export import BeforeRemove = tsorm.BeforeRemove;\n    export import BeforeSoftRemove = tsorm.BeforeSoftRemove;\n    export import BeforeUpdate = tsorm.BeforeUpdate;\n  }\n\n  export namespace Tree {\n    export import Children = tsorm.TreeChildren;\n    export import Parent = tsorm.TreeParent;\n  }\n  export namespace Column {\n    export import Generated = tsorm.PrimaryGeneratedColumn;\n    export import Primary = tsorm.PrimaryColumn;\n    export import Index = tsorm.Index;\n    export import CreateDate = tsorm.CreateDateColumn;\n    export import UpdateDate = tsorm.UpdateDateColumn;\n    export import DeleteDate = tsorm.DeleteDateColumn;\n    export import Custom = tsorm.Column;\n\n    /**\n     * 100 characters varchar\n     */\n    export const String = () =>\n      tsorm.Column({ type: 'varchar', length: 100, nullable: true });\n\n    export const Number = () =>\n      tsorm.Column({ type: 'int',  nullable: true });\n\n    export const DecimalNumber = () =>\n      tsorm.Column({ type: 'float',  nullable: true });\n\n\n    export const SimpleJson = () =>\n      tsorm.Column({ type: 'simple-json', nullable: true });\n\n    export const Boolean = (defaultValue: boolean) =>\n      tsorm.Column({ type: 'boolean', default: defaultValue });\n\n\n\n    export import Version = tsorm.VersionColumn;\n    export import Virtual = tsorm.VirtualColumn;\n  }\n\n  export namespace Join {\n    export import Table = tsorm.JoinTable;\n    export import Column = tsorm.JoinColumn;\n  }\n  export namespace Relation {\n    export import OneToMany = tsorm.OneToMany;\n    export import OneToOne = tsorm.OneToOne;\n    export import ManyToMany = tsorm.ManyToMany;\n    export import ManyToOne = tsorm.ManyToOne;\n  }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=firedev lib/orm.ts","\n\n\nimport { Entity } from 'firedev-typeorm/websql';\n\nimport { Orm } from '../orm';\nimport { BaseEntity } from './base-entity';\nimport type { BaseClass } from './base-class';\n\n\nlet EntityDecorator = () => {\n  return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseAbstractEntity<\n  CloneT extends BaseClass = any,\n> extends BaseEntity<CloneT> {\n\n  @Orm.Column.Generated()\n\n  id: string;\n\n\n  @Orm.Column.Version()\n\n  version: number;\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-abstract-entity.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport {   Repository as TypeormRepository,   EntityRepository, } from 'firedev-typeorm/websql';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/websql';\n\nexport function FiredevRepository(options: FiredevRepositoryOptions) {\n  return function (constructor: Function) {\n    Reflect.defineMetadata(\n      Symbols.metadata.options.repository,\n      options,\n      constructor,\n    );\n    Reflect.defineMetadata(\n      Symbols.metadata.className,\n      options?.className || constructor.name,\n      constructor,\n    );\n    ClassHelpers.setName(constructor, options?.className);\n  };\n}\n\nexport class FiredevRepositoryOptions<\n  T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/classes/repository-decorator.ts","\n\n\nimport type {\n  DataSource,\n  DeepPartial,\n  DeleteResult,\n  FindManyOptions,\n  FindOneOptions,\n  FindOptionsWhere,\n  InsertResult,\n\n  RemoveOptions,\n  Repository,\n  SaveOptions,\n  UpdateResult,\n} from 'firedev-typeorm';\n\nimport type { QueryDeepPartialEntity } from 'firedev-typeorm/lib/typeorm/query-builder/QueryPartialEntity';\n\nimport type { UpsertOptions } from 'firedev-typeorm/lib/typeorm/repository/UpsertOptions';\n\n\n\nimport type { DataSource as DataSourceType } from 'firedev-typeorm/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Helpers } from 'tnp-core/websql';\nimport { _ } from 'tnp-core/websql';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { MySqlQuerySource } from 'firedev-type-sql/websql';\nimport { FiredevRepository } from '../decorators/classes/repository-decorator';\nimport { BaseInjector } from './base-injector';\n\n\nconst INDEX_KEYS_NO_FOR_UPDATE = ['id'];\n\n@FiredevRepository({ className: 'BaseRepository' })\nexport abstract class BaseRepository<\n  Entity extends { id?: any },\n> extends BaseInjector {\n\n\n\n\n\n\n  abstract entityClassResolveFn: () => any;\n  constructor(\n\n    private __entityClassResolveFn: () => any,\n  ) {\n    super();\n    // @ts-ignore\n    this.entityClassResolveFn = __entityClassResolveFn;\n  }\n\n\n\n  private __dbQuery: MySqlQuerySource;\n\n  public get dbQuery(): MySqlQuerySource {\n\n    if (!this.__dbQuery) {\n      if (!this.__endpoint_context__) {\n        return; // TODO\n        throw new Error(\n          `[BaseRepository] Context not inited for class ${ClassHelpers.getName(\n            this,\n          )}`,\n        );\n      }\n      const connection = this.__endpoint_context__?.connection;\n      if (!connection) {\n        throw new Error(\n          `[BaseRepository] Database not inited for context ${this.__endpoint_context__?.contextName}`,\n        );\n      }\n      this.__dbQuery = new MySqlQuerySource(connection);\n    }\n    return this.__dbQuery;\n\n  }\n\n\n\n  public get connection(): DataSourceType {\n\n    return this.__endpoint_context__?.connection;\n\n  }\n\n\n\n\n  private __repository: Repository<Entity>;\n\n  protected get repository() {\n\n    return this.__repository;\n\n  }\n\n  /**\n   * target for repository\n   */\n  public get target(): Function {\n\n    return this?.repository?.target as any;\n\n  }\n\n  /**\n   * alias to repository\n   */\n  protected get repo() {\n\n    return this.repository;\n\n  }\n\n  public get repositoryExists(): boolean {\n\n    return !!this.__repository;\n\n  }\n\n\n\n\n\n  async __init(context?: any) {\n\n    if (this.__repository) {\n      return;\n    }\n    let entityClassFn: any = this.entityClassResolveFn();\n    if (!entityClassFn) {\n      Helpers.warn(\n        `Entity class not provided for repository ${ClassHelpers.getName(\n          this,\n        )}`,\n      );\n      return;\n    }\n    const ctx: EndpointContext = this.__endpoint_context__;\n    if (ctx.remoteHost) {\n      return;\n    }\n    const connection = ctx.connection;\n\n    if (!connection) {\n      throw new Error(`\n\n        Connection not found for context ${ctx.contextName}\n\n\n        Maybe you forgot to init database ?\n\n        Firedev.createContext({\n        ...\n        database:true\n        ...\n        })\n\n        `);\n    }\n\n    if (!entityClassFn) {\n      Helpers.warn(\n        `Entity class not found for repository ${ClassHelpers.getName(this)}`,\n      );\n      return;\n    }\n\n    this.__repository = (await connection.getRepository(\n      ClassHelpers.getOrginalClass(entityClassFn),\n    )) as any;\n\n\n\n\n\n\n  }\n\n\n\n  /**\n   * Checks if entity has an id.\n   * If entity composite compose ids, it will check them all.\n   */\n  hasId(entity: Entity): boolean {\n    return this.repo.hasId(entity);\n  }\n\n\n\n  /**\n   * Gets entity mixed id.\n   */\n  getId(entity: Entity): any {\n    return this.repo.getId(entity);\n  }\n\n\n\n  /**\n    Saves a given entity in the database.\n   * If entity does not exist in the database then inserts, otherwise updates.\n   */\n  async save(\n    item: Entity,\n    options?: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<Entity> {\n\n    let model = await this.repo.create(item);\n\n    model = await this.repo.save(model, options);\n    const { id } = model as any;\n\n    model = await this.repo.findOne({\n      where: { id } as any,\n    });\n\n    return model;\n\n  }\n\n  /**\n   * alias to save\n   * -> it will actuall create new entity in db\n   * in oposite to typeorm create method\n   */\n  async create(\n    item: Entity,\n    options?: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<Entity> {\n    return this.save(item, options);\n  }\n\n  async bulkSave(\n    items: Entity[],\n    options?: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<Entity[]> {\n\n    const models = [];\n    for (let index = 0; index < items.length; index++) {\n      const item = items[index];\n\n      const model = await this.save(item, options);\n      models.push(model);\n    }\n    return models;\n\n  }\n\n  async bulkCreate(\n    items: Entity[],\n    options?: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<Entity[]> {\n    return this.bulkSave(items, options);\n  }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  /**\n   * Saves all given entities in the database.\n   * If entities do not exist in the database then inserts, otherwise updates.\n   */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  /**\n   * Merges multiple entities (or entity-like objects) into a given entity.\n   */\n  merge(mergeIntoEntity: Entity, ...entityLikes: Entity[]): Entity {\n    return this.repo.merge(mergeIntoEntity, ...entityLikes);\n  }\n\n\n\n  /**\n   * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n   * it loads it (and everything related to it), replaces all values with the new ones from the given object\n   * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n   * replaced from the new object.\n   *\n   * Note that given entity-like object must have an entity id / primary key to find entity by.\n   * Returns undefined if entity with given id was not found.\n   */\n  preload(entityLike: Entity): Promise<Entity | undefined> {\n    return this.repo.preload(entityLike);\n  }\n\n\n\n\n  /**\n   * Removes a given entities from the database.\n   */\n  async remove(idOrEntity: number | string | Entity): Promise<Entity> {\n\n    if (_.isObject(idOrEntity)) {\n      idOrEntity = (idOrEntity as Entity).id;\n    }\n    const deletedEntity = await this.repo.findOne({\n      where: { id: idOrEntity } as any,\n    });\n\n    const idCopy = deletedEntity.id;\n    await this.repo.remove(deletedEntity);\n\n    deletedEntity.id = idCopy;\n    return deletedEntity;\n\n  }\n\n  /**\n   * alias to remove\n   */\n  async delete(idOrEntity: number | string | Entity): Promise<Entity> {\n    return this.remove(idOrEntity);\n  }\n\n  /**\n   * alias to removeById\n   */\n  async deleteById(id: number | string): Promise<Entity> {\n    return this.remove(id);\n  }\n  async bulkRemove(\n    idsOrEntities: (number | string | Entity)[],\n  ): Promise<Entity[]> {\n\n    idsOrEntities = idsOrEntities.map(id => {\n      return _.isObject(id) ? (id as Entity).id : id;\n    });\n\n    const models = [];\n    for (let index = 0; index < idsOrEntities.length; index++) {\n      const id = idsOrEntities[index];\n      const model = await this.remove(id);\n      models.push(model);\n    }\n    return models;\n\n  }\n\n  async bulkDelete(ids: (number | string | Entity)[]): Promise<Entity[]> {\n    return this.bulkRemove(ids);\n  }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  /**\n   * Records the delete date of all given entities.\n   */\n  softRemove<T extends Entity>(\n    entities: T[],\n    options: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<T[]>;\n  /**\n   * Records the delete date of all given entities.\n   */\n  softRemove<T extends Entity>(\n    entities: T[],\n    options?: SaveOptions,\n  ): Promise<(T & Entity)[]>;\n  /**\n   * Records the delete date of a given entity.\n   */\n  softRemove<T extends Entity>(\n    entity: T,\n    options: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<T>;\n  /**\n   * Records the delete date of a given entity.\n   */\n  softRemove<T extends Entity>(\n    entity: T,\n    options?: SaveOptions,\n  ): Promise<T & Entity> {\n    return this.repo.softRemove(entity, options);\n  }\n\n\n\n  /**\n   * Recovers all given entities in the database.\n   */\n  recover<T extends Entity>(\n    entities: T[],\n    options: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<T[]>;\n  /**\n   * Recovers all given entities in the database.\n   */\n  recover<T extends Entity>(\n    entities: T[],\n    options?: SaveOptions,\n  ): Promise<(T & Entity)[]>;\n  /**\n   * Recovers a given entity in the database.\n   */\n  recover<T extends Entity>(\n    entity: T,\n    options: SaveOptions & {\n      reload: false;\n    },\n  ): Promise<T>;\n  /**\n   * Recovers a given entity in the database.\n   */\n  recover<T extends Entity>(\n    entity: T,\n    options?: SaveOptions,\n  ): Promise<T & Entity> {\n    return this.repo.recover(entity, options);\n  }\n\n\n\n  /**\n   * Inserts a given entity into the database.\n   * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n   * Executes fast and efficient INSERT query.\n   * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n   */\n  insert(\n    entity: QueryDeepPartialEntity<Entity> | QueryDeepPartialEntity<Entity>[],\n  ): Promise<InsertResult> {\n    return this.repo.insert(entity);\n  }\n\n\n\n  async update(item: Entity) {\n\n    const { id } = item as any;\n    return await this.updateById(id, item);\n\n  }\n\n  async updateById(id: number | string, item: Entity) {\n\n    const allowedPropsToUpdate = [];\n    for (const key in item) {\n      if (\n        _.isObject(item) &&\n        item.hasOwnProperty(key) &&\n        typeof item[key] !== 'object' &&\n        !_.isUndefined(\n          this.repo.metadata.ownColumns.find(c => c.propertyName === key),\n        )\n      ) {\n        allowedPropsToUpdate.push(key);\n      }\n    }\n\n    for (let i = 0; i < allowedPropsToUpdate.length; i++) {\n      const key: string = allowedPropsToUpdate[i];\n      if (!INDEX_KEYS_NO_FOR_UPDATE.includes(key.toLowerCase())) {\n\n        const toSet = item[key];\n\n\n        await this.repo.update(\n          {\n            id,\n          } as any,\n          {\n            [key]: toSet,\n          } as any,\n        );\n\n\n\n\n\n      }\n    }\n    let model = await this.repo.findOne({\n      where: { id } as any,\n    });\n\n    return model;\n\n  }\n  async bulkUpdate(items: Entity[]) {\n\n    const models = [];\n    for (let index = 0; index < items.length; index++) {\n      const item = items[index];\n      const { id } = item as any; // TOOD\n      const model = await this.updateById(id, item);\n      models.push(model);\n    }\n    return { models };\n\n  }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  /**\n   * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n   * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n   * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n   */\n  upsert(\n    entityOrEntities:\n      | QueryDeepPartialEntity<Entity>\n      | QueryDeepPartialEntity<Entity>[],\n    conflictPathsOrOptions: string[] | UpsertOptions<Entity>,\n  ): Promise<InsertResult> {\n    return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);\n  }\n\n\n\n  /**\n   * Records the delete date of entities by a given criteria.\n   * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n   * Executes fast and efficient SOFT-DELETE query.\n   * Does not check if entity exist in the database.\n   */\n  softDelete(\n    criteria:\n      | string\n      | string[]\n      | number\n      | number[]\n      | Date\n      | Date[]\n\n\n      | FindOptionsWhere<Entity>,\n  ): Promise<UpdateResult> {\n    return this.repo.softDelete(criteria);\n  }\n\n\n\n  /**\n   * Restores entities by a given criteria.\n   * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n   * Executes fast and efficient SOFT-DELETE query.\n   * Does not check if entity exist in the database.\n   */\n  restore(\n    criteria:\n      | string\n      | string[]\n      | number\n      | number[]\n      | Date\n      | Date[]\n\n\n      | FindOptionsWhere<Entity>,\n  ): Promise<UpdateResult> {\n    return this.repo.restore(criteria);\n  }\n\n\n\n  /**\n   * Counts entities that match given options.\n   * Useful for pagination.\n   */\n  count(options?: FindManyOptions<Entity>): Promise<number> {\n    return this.repo.count(options);\n  }\n\n\n\n  /**\n   * Counts entities that match given conditions.\n   * Useful for pagination.\n   */\n  countBy(\n    where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n  ): Promise<number> {\n    return this.repo.countBy(where);\n  }\n\n\n\n  /**\n   * Finds entities that match given find options.\n   */\n  find(options?: FindManyOptions<Entity>): Promise<Entity[]> {\n    return this.repo.find(options);\n  }\n\n\n\n  /**\n   * Finds entities that match given find options.\n   */\n  findBy(\n    where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n  ): Promise<Entity[]> {\n    return this.repo.findBy(where);\n  }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  //\n  /**\n   * Finds entities that match given find options.\n   * Also counts all entities that match given conditions,\n   * but ignores pagination settings (from and take options).\n   */\n  findAndCount(options?: FindManyOptions<Entity>): Promise<[Entity[], number]> {\n    return this.repo.findAndCount(options);\n  }\n\n\n\n  /**\n   * Finds entities that match given WHERE conditions.\n   * Also counts all entities that match given conditions,\n   * but ignores pagination settings (from and take options).\n   */\n  findAndCountBy(\n    where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n  ): Promise<[Entity[], number]> {\n    return this.repo.findAndCountBy(where);\n  }\n\n\n\n  /**\n   * Finds entities with ids.\n   * Optionally find options or conditions can be applied.\n   *\n   * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:\n   *\n   * .findBy({\n   *     id: In([1, 2, 3])\n   * })\n   */\n  findByIds(ids: any[]): Promise<Entity[]> {\n    return this.repo.findByIds(ids);\n  }\n\n\n\n  /**\n   * Finds first entity by a given find options.\n   * If entity was not found in the database - returns null.\n   */\n  findOne(options: FindOneOptions<Entity>): Promise<Entity | null> {\n    return this.repo.findOne(options);\n  }\n\n\n\n  /**\n   * Finds first entity that matches given where condition.\n   * If entity was not found in the database - returns null.\n   */\n  findOneBy(\n    where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n  ): Promise<Entity | null> {\n    return this.repo.findOneBy(where);\n  }\n\n\n\n  /**\n   * Finds first entity that matches given id.\n   * If entity was not found in the database - returns null.\n   *\n   * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:\n   *\n   * .findOneBy({\n   *     id: 1 // where \"id\" is your primary column name\n   * })\n   */\n  findOneById(\n    id: number | string | Date,\n\n  ): Promise<Entity | null> {\n    return this.repo.findOneById(id);\n  }\n\n\n\n  /**\n   * Finds first entity by a given find options.\n   * If entity was not found in the database - rejects with error.\n   */\n  findOneOrFail(options: FindOneOptions<Entity>): Promise<Entity> {\n    return this.repo.findOneOrFail(options);\n  }\n\n\n\n  /**\n   * Finds first entity that matches given where condition.\n   * If entity was not found in the database - rejects with error.\n   */\n  findOneByOrFail(\n    where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n  ): Promise<Entity> {\n    return this.repo.findOneByOrFail(where);\n  }\n\n\n\n  /**\n   * Executes a raw SQL query and returns a raw database results.\n   * Raw query execution is supported only by relational databases (MongoDB is not supported).\n   */\n  query(query: string, parameters?: any[]): Promise<any> {\n    return this.repo.query(query, parameters);\n  }\n\n\n\n  /**\n   * Clears all the data from the given table/collection (truncates/drops it).\n   *\n   * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n   * @see https://stackoverflow.com/a/5972738/925151\n   */\n  clear(): Promise<void> {\n    return this.repo.clear();\n  }\n\n\n\n  /**\n   * Increments some column by provided value of the entities matched given conditions.\n   */\n  increment(\n    conditions: FindOptionsWhere<Entity>,\n    propertyPath: string,\n    value: number | string,\n  ): Promise<UpdateResult> {\n    return this.repo.increment(conditions, propertyPath, value);\n  }\n\n\n\n  /**\n   * Decrements some column by provided value of the entities matched given conditions.\n   */\n  decrement(\n    conditions: FindOptionsWhere<Entity>,\n    propertyPath: string,\n    value: number | string,\n  ): Promise<UpdateResult> {\n    return this.repo.decrement(conditions, propertyPath, value);\n  }\n\n\n\n  /**\n   * @deprecated use findAndCount instead\n   */\n  async getAll() {\n\n\n\n\n\n\n    const totalCount = await this.repo.count();\n    const models = await this.repo.find();\n\n\n    return { models, totalCount };\n\n  }\n\n\n\n  async getBy(id: number | string): Promise<Entity> {\n\n    const model = await await this.repo.findOne({\n      where: { id } as any,\n    });\n\n    return model;\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-repository.ts","\n\nimport { BaseInjector } from './base-injector';\n\nexport class BaseProvider extends BaseInjector {}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-provider.ts","\n\nimport { Helpers } from 'tnp-core/websql';\n\nexport const globalPublicStorage = Helpers.isBrowser ? window : global;\n\n ;({}); // @--end-of-file-for-module=firedev lib/storage.ts","\n\n\n\nimport { Stor } from 'firedev-storage/websql';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { Subject, take, takeUntil, tap } from 'rxjs';\nimport type { FiredevAdminModeConfigurationComponent } from './firedev-admin-mode-configuration.component';\nimport { globalPublicStorage } from '../../storage';\nimport { config } from 'tnp-config/websql';\nimport { Injectable } from '@angular/core';\n\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\n@Injectable({ providedIn: 'root' })\nexport class FiredevAdmin {\n  public scrollableEnabled = false; // TOOD false by default\n\n\n  private constructor() {\n\n    this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;\n  }\n  public static get Instance(): FiredevAdmin {\n    if (!globalPublicStorage[config.frameworkNames.firedev]) {\n      globalPublicStorage[config.frameworkNames.firedev] = new FiredevAdmin();\n    }\n    return globalPublicStorage[config.frameworkNames.firedev];\n  }\n\n\n\n  public cmp: FiredevAdminModeConfigurationComponent;\n  private onEditMode = new Subject();\n  onEditMode$ = this.onEditMode.asObservable();\n\n\n\n  // @ts-ignore\n  @Stor.property.in.localstorage.for(FiredevAdmin).withDefaultValue(false)\n  public adminPanelIsOpen: boolean;\n\n\n\n  // @ts-ignore\n  @Stor.property.in.localstorage.for(FiredevAdmin).withDefaultValue(false)\n  public draggablePopupMode: boolean;\n\n\n\n  // @ts-ignore\n  @Stor.property.in.localstorage.for(FiredevAdmin).withDefaultValue(false)\n  public draggablePopupModeFullScreen: boolean;\n\n\n\n  /**\n   * Property used in firedev\n   */ // @ts-ignore\n  @Stor.property.in.localstorage.for(FiredevAdmin).withDefaultValue(false)\n  public keepWebsqlDbDataAfterReload: boolean;\n\n\n\n  setEditMode(value: boolean) {\n    this.onEditMode.next(value);\n  }\n\n  setKeepWebsqlDbDataAfterReload(value: boolean) {\n\n\n\n    this.keepWebsqlDbDataAfterReload = value;\n  }\n\n  enabledTabs = [];\n\n  hide() {\n    this.draggablePopupMode = false;\n    this.adminPanelIsOpen = false;\n  }\n\n  show() {\n    this.draggablePopupMode = false;\n    this.adminPanelIsOpen = true;\n  }\n\n  logout() {}\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/ui/firedev-admin-mode-configuration/firedev-admin.service.ts","\n\nexport class DIFiredevContainer {\n  private static instances = new Map();\n\n  static resolve<T>(target: Function): T {\n    if (DIFiredevContainer.instances.has(target)) {\n      return DIFiredevContainer.instances.get(target);\n    }\n\n\n    const injections = []; //  tokens.map(token => Container.inject<any>(token));\n\n    const instance = new (target as any)(...injections);\n    DIFiredevContainer.instances.set(target, instance);\n    return instance;\n  }\n\n  static inject<T>(target: new (...args: any[]) => T): T {\n    return new Proxy(\n      {},\n      {\n        get: (_, propName) => {\n          let instance: T =\n            DIFiredevContainer.instances.get(target) ||\n            DIFiredevContainer.resolve(target);\n          return typeof instance[propName] === 'function'\n            ? instance[propName].bind(instance)\n            : instance[propName];\n        },\n        set: (_, propName, value) => {\n          let instance: T =\n            DIFiredevContainer.instances.get(target) ||\n            DIFiredevContainer.resolve(target);\n          instance[propName] = value;\n          return true;\n        },\n      },\n    ) as T;\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/dependency-injection/di-container.ts","\n\nimport { Models } from './models';\nimport {   Response as ExpressResponse,   Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { FiredevHelpers } from './helpers/firedev-helpers';\nimport { Helpers } from 'tnp-core/websql';\n\nexport const getResponseValue = <T>(\n  response: Models.Http.Response<T>,\n  options?: { req: ExpressRequest; res: ExpressResponse },\n): Promise<T> => {\n\n  const { req, res } = options || {};\n  return new Promise<T>(async (resolve, reject) => {\n\n    const resp: Models.Http.__Response<T> = response;\n    if (!response && response.send === undefined) {\n      console.error('[firedev] Bad response value for function');\n      resolve(undefined);\n    } else if (typeof response === 'function') {\n      const asyncResponse: Models.Http.AsyncResponse<T> = response as any;\n      try {\n        const result = await asyncResponse(req, res);\n        resolve(result as any);\n      } catch (e) {\n        console.error(e);\n        console.error('[firedev] Error during function call inside controller');\n        Helpers.renderError(e);\n        reject(e);\n      }\n    } else if (typeof response === 'object') {\n      try {\n        if (typeof response.send === 'function') {\n          const result = (response as any).send(req, res) as any;\n          resolve(result);\n        } else {\n          resolve(response.send as any);\n        }\n      } catch (error) {\n        console.error('[firedev] Bad synchonus function call ');\n        Helpers.renderError(error);\n        reject(error);\n      }\n    } else reject(`[firedev] Not recognized type of reposne ${response}`);\n\n  });\n\n};\n\n ;({}); // @--end-of-file-for-module=firedev lib/get-response-value.ts","\n\nimport { Helpers } from 'tnp-core/websql';\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\nexport { ENV };\n\n ;({}); // @--end-of-file-for-module=firedev lib/env.ts","\n\n\n/* */\n/* */\n  \nimport { _ } from 'tnp-core/websql';\nimport { Subscriber } from 'rxjs';\nimport { Symbols } from '../symbols';\nimport { Socket as SocketClient } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { RealtimeModels } from './realtime.models';\n\n\nexport class RealtimeSubsManager {\n  private isListening = false;\n  private observers: Subscriber<any>[] = [];\n  constructor(private options: RealtimeModels.SubsManagerOpt) {}\n\n\n  startListenIfNotStarted(\n    realtime: SocketClient<DefaultEventsMap, DefaultEventsMap>,\n  ) {\n    if (this.options.core.ctx.disabledRealtime) {\n      console.warn(`[Firedev][startListenIfNotStarted] sockets are disabled`);\n      return;\n    }\n\n    if (!realtime) {\n      console.warn(\n        `[Firedev][startListenIfNotStarted] invalid socket connection`,\n      );\n      return;\n    }\n\n    if (!this.isListening) {\n      const subscribeEvent = Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(\n        this.options.core.ctx.contextName,\n      );\n\n      this.isListening = true;\n\n      if (this.options.customEvent) {\n\n        realtime.emit(\n          subscribeEvent,\n          this.options.roomName,\n        );\n      } else {\n        if (_.isString(this.options.property)) {\n\n          realtime.emit(\n            Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n              this.options.core.ctx.contextName,\n            ),\n            this.options.roomName,\n          );\n        } else {\n\n          realtime.emit(\n            Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(\n              this.options.core.ctx.contextName,\n            ),\n            this.options.roomName,\n          );\n        }\n      }\n\n\n      realtime.on(this.options.roomName, data => {\n        this.update(data);\n      });\n    }\n  }\n\n\n\n  add(observer: Subscriber<any>) {\n\n    this.observers.push(observer);\n  }\n\n\n\n  remove(observer: Subscriber<any>) {\n\n    this.observers = this.observers.filter(obs => obs !== observer);\n    if (this.observers.length === 0) {\n\n      this.isListening = false;\n      const { core, customEvent, roomName, property } = this.options;\n\n      const realtime = core.FE_REALTIME;\n\n      if (customEvent) {\n        realtime.emit(\n          Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(\n            this.options.core.ctx.contextName,\n          ),\n          roomName,\n        );\n      } else {\n        if (_.isString(property)) {\n          realtime.emit(\n            Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n              this.options.core.ctx.contextName,\n            ),\n            roomName,\n          );\n        } else {\n          realtime.emit(\n            Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(\n              this.options.core.ctx.contextName,\n            ),\n            roomName,\n          );\n        }\n      }\n    }\n  }\n\n\n\n  private update(data: any) {\n\n    const ngZone = this.options.core.ctx.ngZone;\n\n\n    this.observers.forEach(observer => {\n\n      if (!observer.closed) {\n        if (ngZone) {\n          ngZone.run(() => {\n            observer.next(data);\n          });\n        } else {\n          observer.next(data);\n        }\n      }\n    });\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-subs-manager.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { Symbols } from '../symbols';\nimport { Observable } from 'rxjs';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { RealtimeSubsManager } from './realtime-subs-manager';\nimport { RealtimeModels } from './realtime.models';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Helpers } from 'tnp-core/websql';\n\n\nexport class RealtimeClient {\n  private subsmanagers: { [path: string]: RealtimeSubsManager } = {};\n  constructor(private core: RealtimeCore) {\n    this.core = core;\n    if (!core.ctx.disabledRealtime) {\n\n      this.init();\n\n    }\n  }\n\n\n  private init() {\n\n    const nspPath = {\n      global: this.core.pathFor(),\n      realtime: this.core.pathFor(\n        Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n      ),\n    };\n\n    this.core.ctx.logRealtime &&\n      console.info(\n        '[CLIENT] NAMESPACE GLOBAL ',\n        nspPath.global.href + ` host: ${this.core.ctx.host}`,\n      );\n\n    this.core.ctx.logRealtime &&\n      console.info(\n        '[CLIENT] NAMESPACE REALTIME',\n        nspPath.realtime.href + ` host: ${this.core.ctx.host}`,\n      );\n\n\n\n    this.core.FE = this.core.strategy.io(nspPath.global.origin, {\n      path: nspPath.global.pathname,\n    });\n\n    if (this.core.FE.on) {\n      this.core.FE.on('connect', () => {\n\n\n\n        console.info(\n          `[CLIENT] conented to GLOBAL namespace ${this.core.FE.id} of host: ${this.core.ctx.host}`,\n        );\n      });\n    }\n\n\n\n\n    this.core.FE_REALTIME = this.core.strategy.io(nspPath.realtime.origin, {\n      path: nspPath.realtime.pathname,\n    });\n\n    if (this.core.FE_REALTIME.on) {\n      this.core.FE_REALTIME.on('connect', () => {\n\n\n\n        console.info(\n          `[CLIENT] conented to REALTIME namespace ${this.core.FE_REALTIME.id} host: ${this.core.ctx.host}`,\n        );\n      });\n    }\n\n\n  }\n\n\n\n  /**\n   * Changes trigger on backend needs to be done manually.. example code:\n   *\n   * ...\n   * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n   * ...\n   */\n  listenChangesEntity(\n    entityClassFn: Function,\n    idOrUniqValue: any,\n    options: RealtimeModels.ChangeOption,\n  ) {\n    options = options || ({} as any);\n\n\n    const { property, customEvent } = options;\n    const className = !customEvent && ClassHelpers.getName(entityClassFn);\n\n    if (_.isString(property)) {\n      if (property.trim() === '') {\n        throw new Error(\n          `[Firedev][listenChangesEntity.. incorect property '' for ${className}`,\n        );\n      }\n    }\n\n\n    return new Observable(observer => {\n\n\n      if (this.core.ctx.disabledRealtime) {\n        console.error(`[Firedev][realtime rxjs] remove firedev config flag:\n\n        ...\n        disabledRealtime: true\n        ...\n\nto use socket realtime connection;\n        `);\n        return () => {\n\n        };\n      }\n\n      let roomName: string;\n\n      if (customEvent) {\n        roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(\n          this.core.ctx.contextName,\n          customEvent,\n        );\n      } else {\n        roomName = _.isString(property)\n          ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(\n              this.core.ctx.contextName,\n              className,\n              property,\n              idOrUniqValue,\n            )\n          : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(\n              this.core.ctx.contextName,\n              className,\n              idOrUniqValue,\n            );\n      }\n\n      const roomSubOptions: RealtimeModels.SubsManagerOpt = {\n        core: this.core,\n        property,\n        roomName,\n        customEvent,\n      };\n\n\n      const subManagerId = this.getRoomIdFrom(roomSubOptions);\n      if (!this.subsmanagers[subManagerId]) {\n        this.subsmanagers[subManagerId] = new RealtimeSubsManager(\n          roomSubOptions,\n        );\n      }\n      const inst = this.subsmanagers[subManagerId];\n      inst.add(observer);\n\n      inst.startListenIfNotStarted(this.core.FE_REALTIME);\n\n      return () => {\n        inst.remove(observer);\n      };\n    });\n  }\n\n\n\n\n  listenChangesEntityTable(entityClassFn: Function) {\n    const className = ClassHelpers.getName(entityClassFn);\n    return this.listenChangesEntity(entityClassFn, void 0, {\n      customEvent: Symbols.REALTIME.TABLE_CHANGE(\n        this.core.ctx.contextName,\n        className,\n      ),\n    });\n  }\n\n\n\n\n  /**\n   * Changes trigger on backend needs to be done manually.. example code:\n   *\n   * ...\n   * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n   * // or\n   * Context.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n   * ...\n   */\n  listenChangesEntityObj<T extends BaseEntity>(\n    entity: T,\n    options?: RealtimeModels.ChangeOption,\n  ) {\n    const classFn = ClassHelpers.getClassFnFromObject(entity);\n    const uniqueKey = ClassHelpers.getUniquKey(classFn);\n    return this.listenChangesEntity(classFn, entity[uniqueKey], options);\n  }\n\n\n\n  listenChangesCustomEvent(customEvent: string) {\n    return this.listenChangesEntity(void 0, void 0, {\n      customEvent,\n    });\n  }\n\n\n\n  private getRoomIdFrom(options: RealtimeModels.SubsManagerOpt) {\n    const url = new URL(options.core.ctx.host);\n    return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-client.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseEntity } from '../base-classes/base-entity';\n\n\nconst SOCKET_EVENT_DEBOUNCE = 500;\n\nexport class RealtimeServer {\n  private jobs = {};\n  constructor(private core: RealtimeCore) {\n    this.core = core;\n    if (!core.ctx.disabledRealtime) {\n\n      this.init();\n\n    }\n  }\n\n\n  private init() {\n\n\n\n    const nspPath = {\n      global: this.core.pathFor(),\n      realtime: this.core.pathFor(\n        Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n      ),\n    };\n\n\n\n\n    this.core.BE = new this.core.strategy.Server(this.core.ctx.serverTcpUdp, {\n      path: nspPath.global.pathname,\n\n      cors: {\n        origin: this.core.ctx.config.frontendHost,\n        methods: this.core.allHttpMethods,\n      },\n    });\n\n    this.core.ctx.logRealtime &&\n      console.info(\n        `CREATE GLOBAL NAMESPACE: '${this.core.BE.path()}' , path: '${\n          nspPath.global.pathname\n        }'`,\n      );\n\n    this.core.BE.on('connection', clientSocket => {\n      if (Helpers.isElectron) {\n        // @ts-ignore\n        this.core.BE.emit('connect'); // TODO QUICK_FIX\n      }\n      console.info(\n        `client conected to namespace \"${clientSocket.nsp?.name}\",  host: ${this.core.ctx.host}`,\n      );\n    });\n\n\n\n\n    this.core.BE_REALTIME = new this.core.strategy.Server(\n      this.core.ctx.serverTcpUdp,\n      {\n        path: nspPath.realtime.pathname,\n        cors: {\n          origin: this.core.ctx.config.frontendHost,\n          methods: this.core.allHttpMethods,\n        },\n      },\n    );\n\n    this.core.ctx.logRealtime &&\n      console.info(\n        `CREATE REALTIME NAMESPACE: '${this.core.BE_REALTIME.path()}' , path: '${\n          nspPath.realtime.pathname\n        }' `,\n      );\n\n    this.core.BE_REALTIME.on('connection', backendSocketForClient => {\n      console.info(\n        `client conected to namespace \"${backendSocketForClient.nsp?.name}\",  host: ${this.core.ctx.host}`,\n      );\n\n      if (Helpers.isElectron) {\n        // @ts-ignore\n        backendSocketForClient = this.core.BE_REALTIME; // TODO QUICK_FIX\n        this.core.BE_REALTIME.emit('connect');\n      }\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(this.core.ctx.contextName),\n        roomName => {\n          console.info(\n            `Joining room ${roomName} in namespace  REALTIME` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.join(roomName);\n        },\n      );\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(\n          this.core.ctx.contextName,\n        ),\n        roomName => {\n          console.info(\n            `Joining room ${roomName} in namespace  REALTIME` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.join(roomName);\n        },\n      );\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n          this.core.ctx.contextName,\n        ),\n        roomName => {\n          console.info(\n            `Joining room ${roomName} in namespace REALTIME ` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.join(roomName);\n        },\n      );\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(\n          this.core.ctx.contextName,\n        ),\n        roomName => {\n          console.info(\n            `Leaving room ${roomName} in namespace  REALTIME` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.leave(roomName);\n        },\n      );\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(\n          this.core.ctx.contextName,\n        ),\n        roomName => {\n          console.info(\n            `Leaving room ${roomName} in namespace REALTIME ` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.leave(roomName);\n        },\n      );\n\n      backendSocketForClient.on(\n        Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(\n          this.core.ctx.contextName,\n        ),\n        roomName => {\n          console.info(\n            `Leaving room ${roomName} in namespace REALTIME ` +\n              ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n          );\n          backendSocketForClient.leave(roomName);\n        },\n      );\n    });\n\n\n\n\n  }\n\n\n\n\n  private triggerChanges(\n    entityObjOrClass: Function,\n    property?: string,\n    valueOfUniquPropery?: number | string,\n    customEvent?: string,\n    customEventData?: any,\n  ) {\n\n\n\n    let roomName: string;\n\n    if (this.core.ctx.disabledRealtime) {\n      return;\n    }\n\n    if (customEvent) {\n      roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(\n        this.core.ctx.contextName,\n        customEvent,\n      );\n    } else {\n      let entityFn = entityObjOrClass as Function;\n      const enittyIsObject =\n        !_.isFunction(entityObjOrClass) && _.isObject(entityObjOrClass);\n\n      if (enittyIsObject) {\n        entityFn = ClassHelpers.getClassFnFromObject(entityObjOrClass);\n      }\n\n      const uniqueKey = ClassHelpers.getUniquKey(entityFn);\n\n      if (enittyIsObject) {\n        valueOfUniquPropery = entityObjOrClass[uniqueKey];\n      }\n\n      if (!valueOfUniquPropery) {\n        Helpers.error(\n          `[Firedev][Realtime] Entity without iD ! ${ClassHelpers.getName(\n            entityFn,\n          )} `,\n          true,\n          true,\n        );\n        return;\n      }\n\n      roomName = _.isString(property)\n        ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(\n            this.core.ctx.contextName,\n            ClassHelpers.getName(entityFn),\n            property,\n            valueOfUniquPropery,\n          )\n        : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(\n            this.core.ctx.contextName,\n            ClassHelpers.getName(entityFn),\n            valueOfUniquPropery,\n          );\n    }\n\n    const job = () => {\n      console.log(`Trigger realtime: ${this.core.ctx.contextName}/${roomName}`);\n      this.core.BE_REALTIME.in(roomName).emit(\n        roomName, // roomName == eventName in room na\n        customEventData ? customEventData : '',\n      );\n    };\n\n    if (!_.isFunction(this.jobs[roomName])) {\n      this.jobs[roomName] = _.debounce(() => {\n        job();\n      }, SOCKET_EVENT_DEBOUNCE);\n    }\n\n    this.jobs[roomName]();\n\n  }\n\n\n\n  public trigggerEntityChanges(\n    entityObjOrClass: Function,\n    idToTrigger?: number | string,\n  ) {\n    if (this.core.ctx.disabledRealtime) {\n      const className = ClassHelpers.getName(entityObjOrClass);\n\n      console.warn(\n        `[Firedev][TrigggerEntityChanges] Entity \"${className}' is not realtime`,\n      );\n      return;\n    }\n    this.triggerChanges(entityObjOrClass as any, void 0, idToTrigger);\n  }\n\n\n\n  public trigggerEntityPropertyChanges<ENTITY extends BaseEntity>(\n    entityObjOrClass: new (...args) => ENTITY,\n    property: keyof ENTITY | (keyof ENTITY)[],\n    idToTrigger?: number | string,\n  ) {\n    if (this.core.ctx.disabledRealtime) {\n      const className = ClassHelpers.getName(entityObjOrClass);\n\n      console.warn(\n        `[Firedev][TrigggerEntityPropertyChanges][property=${\n          property as string\n        }] Entity \"${className}' is not realtime`,\n      );\n      return;\n    }\n\n    if (_.isArray(property)) {\n      property.forEach(propertyFromArr => {\n        this.triggerChanges(\n          entityObjOrClass,\n          propertyFromArr as any,\n          idToTrigger,\n        );\n      });\n    } else {\n      this.triggerChanges(entityObjOrClass, property as any, idToTrigger);\n    }\n  }\n\n\n\n  public triggerCustomEvent(customEvent: string, dataToPush: any) {\n    this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);\n  }\n\n\n\n  public trigggerEntityTableChanges(entityClass: Function) {\n    const className = ClassHelpers.getName(entityClass);\n    if (this.core.ctx.disabledRealtime) {\n      console.warn(\n        `[Firedev][TrigggerEntityTableChanges] Entity \"${className}' is not realtime`,\n      );\n      return;\n    }\n\n    this.triggerChanges(\n      entityClass as any,\n      void 0,\n      void 0,\n      Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className),\n    );\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-server.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport type { Server } from 'socket.io';\nimport type { io } from 'socket.io-client';\n\nexport abstract class RealtimeStrategy {\n  constructor(protected ctx: EndpointContext) {}\n\n  private testTypes() {\n\n  }\n\n  abstract establishConnection(): void;\n\n  abstract readonly io: typeof io;\n  abstract readonly Server: typeof Server;\n  abstract toString(): string;\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy.ts","\n\nimport { EventListeners, Rooms } from './realtime-strategy-ipc.models';\n/* */\n/* */\n/* */\n  \n\nexport class IpcMainNamespace {\n  private rooms: Rooms = {};\n  private listeners: EventListeners = {};\n\n  constructor(public name: string) {}\n\n  on(\n    event: string,\n    callback: (event: Electron.IpcMainEvent, ...args: any[]) => void,\n  ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n    return (void 0);\n  }\n\n  off(\n    event: string,\n    callback?: (event: Electron.IpcMainEvent, ...args: any[]) => void,\n  ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n    return (void 0);\n  }\n\n  emit(event: string, ...args: any[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n    return (void 0);\n  }\n\n  to(room: string) {\n    return {\n      emit: (event: string, ...args: any[]) => {\n        const emitEvent = `(${this.name}) \"${event}\"`;\n\n\n\n\n        const allWindows = Electron.BrowserWindow.getAllWindows();\n        allWindows.forEach((win, index) => {\n          win.webContents.send(emitEvent, ...args);\n        });\n      },\n    };\n  }\n\n  in(room: string) {\n    return {\n      emit: (event: string, ...args: any[]) => {\n\n\n\n\n        const sendEventKey = `(${this.name}) \"${event}\"`;\n        const allWindows = Electron.BrowserWindow.getAllWindows();\n        allWindows.forEach((win, index) => {\n          win.webContents.send(sendEventKey, ...args);\n        });\n      },\n    };\n  }\n\n  join(webContents: Electron.WebContents, room: string) {\n    if (!this.rooms[room]) {\n      this.rooms[room] = new Set();\n    }\n    this.rooms[room].add(webContents);\n\n\n\n\n  }\n\n  leave(webContents: Electron.WebContents, room: string) {\n    if (this.rooms[room]) {\n      this.rooms[room].delete(webContents);\n      if (this.rooms[room].size === 0) {\n        delete this.rooms[room];\n      }\n    }\n\n\n\n\n  }\n\n  path() {\n    return this.name;\n  }\n\n  get nsp() {\n    const self = this;\n    return {\n      get name() {\n        return self.name;\n      },\n    };\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.ts","\n\nimport { IpcMainNamespace } from './realtime-strategy-ipc-main-namespace';\nimport { Namespaces } from './realtime-strategy-ipc.models';\n\nexport class ioIpcStrategy {\n  private namespaces: Namespaces = {\n    ' /': new IpcMainNamespace('/'),\n  };\n\n  constructor(public contextName: string) {\n\n  }\n\n  of(namespace: string): IpcMainNamespace {\n    if (!this.namespaces[namespace]) {\n      this.namespaces[namespace] = new IpcMainNamespace(namespace);\n    }\n    return this.namespaces[namespace];\n  }\n\n  on(\n    event: string,\n    callback: (event: Electron.IpcMainEvent, ...args: any[]) => void,\n  ) {\n    const eventKey = `(${this.contextName}) \"${event}\"`;\n\n    this.namespaces['/'].on(eventKey, callback);\n  }\n\n  emit(event: string, ...args: any[]) {\n    const eventKey = `(${this.contextName}) \"${event}\"`;\n\n    this.namespaces['/'].emit(eventKey, ...args);\n  }\n\n  path() {\n    return '/';\n  }\n\n  get nsp() {\n    return {\n      get name() {\n        return '/';\n      },\n    };\n  }\n\n  in(room: string) {\n    return {\n      emit: (event: string, ...args: any[]) => {\n\n        Object.values(this.namespaces).forEach(namespace => {\n          namespace.to(room).emit(event, ...args);\n        });\n      },\n    };\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.ts","\n\nimport { ipcRenderer } from 'electron';\n\nimport { RendererEventListeners } from './realtime-strategy-ipc.models';\nimport { Helpers } from 'tnp-core/websql';\n\nexport class IpcRendererNamespace {\n  ipcRenderer!: typeof ipcRenderer;\n  private listeners: RendererEventListeners = {};\n\n  constructor(public name: string) {\n    this.ipcRenderer = (window as any).require('electron').ipcRenderer;\n  }\n\n  on(eventName: string, callback: (event: any, ...args: any[]) => void) {\n    if (!this.listeners[eventName]) {\n      this.listeners[eventName] = [];\n    }\n    this.listeners[eventName].push(callback);\n    const listenToEvent = `(${this.name}) \"${eventName}\"`;\n\n    this.ipcRenderer.on(listenToEvent, callback);\n    if (eventName === 'connect') {\n      this.emit('connection');\n    } else {\n      this.emit(eventName);\n    }\n  }\n\n  off(event: string, callback?: (event: any, ...args: any[]) => void) {\n    if (!this.listeners[event]) return;\n\n    if (callback) {\n      this.listeners[event] = this.listeners[event].filter(\n        listener => listener !== callback,\n      );\n    } else {\n      delete this.listeners[event];\n    }\n    const removeListener = `(${this.name}) \"${event}\"`;\n\n\n\n\n    this.ipcRenderer.removeListener(removeListener, callback);\n  }\n\n  emit(event: string, ...args: any[]) {\n    const emitEvent = `(${this.name}) \"${event}\"`;\n\n\n    this.ipcRenderer.send(emitEvent, ...args);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts","\n\nimport { IpcRendererNamespace } from './realtime-strategy-ipc-renderer-namespace';\n\nexport class IpcRendererWrapper {\n  private namespaces: { [namespace: string]: IpcRendererNamespace } = {\n    '/': new IpcRendererNamespace('/'),\n  };\n  private connected = false;\n\n  constructor(public contextName: string) {\n\n  }\n\n  of(namespace: string): IpcRendererNamespace {\n\n\n\n    if (!this.namespaces[namespace]) {\n      this.namespaces[namespace] = new IpcRendererNamespace(\n        namespace\n      );\n    }\n    return this.namespaces[namespace];\n  }\n\n  on(event: string, callback: (event: any, ...args: any[]) => void) {\n\n\n\n\n\n\n\n\n\n    this.namespaces['/'].on(event, callback);\n  }\n\n  emit(event: string, ...args: any[]) {\n\n\n\n    this.namespaces['/'].emit(event, ...args);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { ioIpcStrategy as IoIpcStrategy } from './realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper';\nimport { IpcRendererWrapper } from './realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper';\nimport type { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication between 2 processes in electron mode\n */\nexport class RealtimeStrategyIpc extends RealtimeStrategy {\n  toString(): string {\n    return 'ipc';\n  }\n  establishConnection(): void {\n    throw new Error('Method not implemented.');\n  }\n  constructor(protected ctx: EndpointContext) {\n    super(ctx);\n  }\n\n  contextsServers: { [contextName: string]: Server } = {};\n  contextsIO: { [contextName: string]: typeof io } = {};\n\n  get io() {\n\n    return ((__, { path: namespacePath }) => {\n      if (this.contextsIO[namespacePath]) {\n        return this.contextsIO[namespacePath];\n      }\n      const wrap = new IpcRendererWrapper(this.ctx.contextName);\n\n      const nsp = wrap.of(namespacePath);\n      this.contextsIO[namespacePath] = nsp as any;\n      return nsp;\n    }) as any;\n\n    return void 0;\n  }\n  get Server() {\n\n    return ((___, { path: namespacePath }) => {\n      if (this.contextsServers[namespacePath]) {\n        return this.contextsServers[namespacePath];\n      }\n      const wrap = new IoIpcStrategy(this.ctx.contextName);\n\n      const nsp = wrap.of(namespacePath);\n      this.contextsServers[namespacePath] = nsp as any;\n      return nsp;\n    }) as any;\n\n    return void 0;\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","\n\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Rooms } from \"./realtime-strategy-mock.models\";\nexport class MockNamespace {\n  private rooms: Rooms = {};\n  private sockets: Set<MockSocket> = new Set();\n\n  constructor(public name: string, public contextName: string) {}\n\n  on(event: string, callback: (socket: MockSocket) => void) {\n    if (event === 'connection') {\n      this.sockets.forEach(socket => callback(socket));\n    }\n  }\n\n  emit(event: string, data?: any) {\n    this.sockets.forEach(socket => socket.emit(event, data));\n  }\n\n  to(room: string) {\n    return {\n      emit: (event: string, data?: any) => {\n        if (this.rooms[room]) {\n          this.rooms[room].forEach(socket => socket.emit(event, data));\n        }\n      }\n    };\n  }\n\n  joinRoom(socket: MockSocket, room: string) {\n    if (!this.rooms[room]) {\n      this.rooms[room] = new Set();\n    }\n    this.rooms[room].add(socket);\n  }\n\n  leaveRoom(socket: MockSocket, room: string) {\n    if (this.rooms[room]) {\n      this.rooms[room].delete(socket);\n      if (this.rooms[room].size === 0) {\n        delete this.rooms[room];\n      }\n    }\n  }\n\n  addSocket(socket: MockSocket) {\n    this.sockets.add(socket);\n  }\n\n  removeSocket(socket: MockSocket) {\n    this.sockets.delete(socket);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nexport class MockSocket {\n  private listeners: EventListeners = {};\n\n  constructor(public id: string, private namespace: MockNamespace) {\n    this.namespace.addSocket(this);\n  }\n\n  on(event: string, callback: (data?: any) => void) {\n    if (!this.listeners[event]) {\n      this.listeners[event] = [];\n    }\n    this.listeners[event].push(callback);\n  }\n\n  off(event: string, callback?: (data?: any) => void) {\n    if (!this.listeners[event]) return;\n\n    if (callback) {\n      this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n    } else {\n      delete this.listeners[event];\n    }\n  }\n\n  emit(event: string, data?: any) {\n    if (this.listeners[event]) {\n      this.listeners[event].forEach(listener => listener(data));\n    }\n  }\n\n  join(room: string) {\n    this.namespace.joinRoom(this, room);\n  }\n\n  leave(room: string) {\n    this.namespace.leaveRoom(this, room);\n  }\n\n  disconnect() {\n    this.emit('disconnect');\n    this.namespace.removeSocket(this);\n    this.listeners = {};\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts","\n\nimport { MockNamespace } from \"./realtime-strategy-mock-namespaces\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { Namespaces } from \"./realtime-strategy-mock.models\";\n\nexport class MockServer {\n  private namespaces: Namespaces = {\n    '/': new MockNamespace('/', this.contextName)\n  };\n\n  constructor(public contextName: string) {}\n\n  of(namespace: string): MockNamespace {\n    if (!this.namespaces[namespace]) {\n      this.namespaces[namespace] = new MockNamespace(namespace, this.contextName);\n    }\n    return this.namespaces[namespace];\n  }\n\n  on(event: string, callback: (socket: MockSocket) => void) {\n    if (event === 'connection') {\n      this.namespaces['/'].on('connection', callback);\n    }\n  }\n\n  emit(event: string, data?: any) {\n    this.namespaces['/'].emit(event, data);\n  }\n\n  connect(id: string, namespace: string = '/'): MockSocket {\n    const ns = this.of(namespace);\n    const socket = new MockSocket(id, ns);\n    ns.on('connection', (socket: MockSocket) => {\n      socket.emit('connect');\n    });\n    return socket;\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts","\n\nimport { MockServer } from \"./realtime-strategy-mock-server\";\nimport { MockSocket } from \"./realtime-strategy-mock-socket\";\nimport { EventListeners } from \"./realtime-strategy-mock.models\";\n\n\nclass MockClientSocket {\n  private listeners: EventListeners = {};\n\n  constructor(private serverSocket: MockSocket, public contextName: string) {\n    serverSocket.on('message', (data) => this.emit('message', data));\n  }\n\n  on(event: string, callback: (data?: any) => void) {\n    if (!this.listeners[event]) {\n      this.listeners[event] = [];\n    }\n    this.listeners[event].push(callback);\n  }\n\n  off(event: string, callback?: (data?: any) => void) {\n    if (!this.listeners[event]) return;\n\n    if (callback) {\n      this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);\n    } else {\n      delete this.listeners[event];\n    }\n  }\n\n  emit(event: string, data?: any) {\n    this.serverSocket.emit(event, data);\n    if (this.listeners[event]) {\n      this.listeners[event].forEach(listener => listener(data));\n    }\n  }\n\n  disconnect() {\n    this.serverSocket.disconnect();\n    this.listeners = {};\n  }\n\n  join(room: string) {\n    this.serverSocket.join(room);\n  }\n\n  leave(room: string) {\n    this.serverSocket.leave(room);\n  }\n}\n\nexport function mockIo(server: MockServer) {\n  return (namespace: string = '/'): MockClientSocket => {\n    const socketId = Math.random().toString(36).substring(2);\n    const serverSocket = server.connect(socketId, namespace);\n    return new MockClientSocket(serverSocket, server.contextName);\n  };\n}\n\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts","\n\nexport * from './realtime-strategy-mock-server';\nexport * from './realtime-strategy-mock-client';\n\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts","\n\nimport { Server } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { MockServer, mockIo } from './realtime-strategy-mock-models'\n\n/**\n * Purpose:\n * - browser-browser communication mock (in websql mode)\n */\nexport class RealtimeStrategyMock extends RealtimeStrategy {\n  toString(): string {\n    return 'mock';\n  }\n\n\n  constructor(protected ctx: EndpointContext) {\n    super(ctx);\n  }\n\n  get Server() {\n    return MockServer as any;\n  };\n\n  get io() {\n    return mockIo as any;\n  }\n\n  establishConnection(): void {\n    throw new Error('Method not implemented.');\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-mock.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\n/* */\n/* */\n  \nimport { io } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication\n * - backend-backend communication\n */\nexport class RealtimeStrategySocketIO extends RealtimeStrategy {\n  toString(): string {\n    return 'socket-io';\n  }\n  constructor(protected ctx: EndpointContext) {\n    super(ctx);\n  }\n\n  get Server() {\n/* */\n/* */\n    return (void 0);\n  };\n\n  get io() {\n    return io;\n  }\n\n  establishConnection(): void {\n    throw new Error('Method not implemented.');\n  }\n}\n\n\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","\n\nexport * from './realtime-strategy';\nexport * from './realtime-strategy-ipc';\nexport * from './realtime-strategy-mock';\nexport * from './realtime-strategy-socket-io';\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-strategy/index.ts","\n\n\nimport { Socket as SocketClient } from 'socket.io-client';\nimport type { EndpointContext } from '../endpoint-context';\nimport { RealtimeClient } from './realtime-client';\nimport { RealtimeServer } from './realtime-server';\nimport type { RealtimeStrategy } from './realtime-strategy';\nimport {   RealtimeStrategyIpc,   RealtimeStrategyMock,   RealtimeStrategySocketIO, } from './realtime-strategy';/* */\n/* */\n/* */\n/* */\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { Server } from 'socket.io';\nimport { Helpers } from 'tnp-core/websql';\n\n\n/**\n * Realtime class\n * - mock (when browser-browser)\n * - sockets (from socket io when backend-browser)\n * - ipc (when electron is used or between processes)\n * - webworker (when webworker is used in browser or nodejs)\n */\nexport class RealtimeCore {\n\n  readonly allHttpMethods = [\n    'GET',\n    'POST',\n    'PUT',\n    'DELETE',\n    'PATCH',\n    'OPTIONS',\n    'HEAD',\n  ];\n  public readonly client: RealtimeClient;\n  public readonly server: RealtimeServer;\n  public readonly strategy: RealtimeStrategy;\n  /**\n   * global FE socket\n   */\n  public FE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n  /**\n   * socket for namespaces and rooms\n   */\n  public FE_REALTIME: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n  /**\n   * global BE socket\n   */\n  public BE: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;\n  /**\n   * socket for namespaces and rooms\n   */\n  public BE_REALTIME: Server<\n    DefaultEventsMap,\n    DefaultEventsMap,\n    DefaultEventsMap,\n    any\n  >;\n\n\n\n  constructor(public ctx: EndpointContext) {\n    this.strategy = this.resolveStrategy();\n    ctx.logFramework &&\n      console.log(`[firedev] realtime strategy: ${this.strategy}`);\n    this.client = new RealtimeClient(this);\n    this.server = new RealtimeServer(this);\n  }\n\n\n\n  private resolveStrategy(): RealtimeStrategy {\n    if (this.ctx.mode === 'backend-frontend(websql)') {\n      return new RealtimeStrategyMock(this.ctx);\n    }\n    if (this.ctx.mode === 'backend-frontend(ipc-electron)') {\n      return new RealtimeStrategyIpc(this.ctx);\n    }\n\n\n\n\n\n\n    return new RealtimeStrategySocketIO(this.ctx);\n  }\n\n\n\n  public pathFor(namespace?: string) {\n    const uri = this.ctx.uri;\n    let nsp = namespace ? namespace : '';\n    nsp = nsp === '/' ? '' : nsp;\n    const pathname = uri.pathname !== '/' ? uri.pathname : '';\n    let prefix = `firedevContext-`;\n    if (Helpers.isElectron) {\n      prefix = ``;\n    }\n    const href = `${uri.origin}${pathname}/${prefix}${nsp}`;\n\n    return new URL(href) as URL;\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/realtime/realtime-core.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/websql';\nimport type { BaseSubscriber } from '../../base-classes/base-subscriber';\n\nexport class FiredevSubscriberOptions<\n  T = any,\n> extends Models.DecoratorAbstractOpt {\n  allowedEvents?: (keyof T)[];\n}\n\nexport function FiredevSubscriber(options: FiredevSubscriberOptions) {\n  return function <T extends { new (...args: any[]): {} }>(constructor: T) {\n    Reflect.defineMetadata(\n      Symbols.metadata.options.repository,\n      options,\n      constructor,\n    );\n    Reflect.defineMetadata(\n      Symbols.metadata.className,\n      options?.className || constructor.name,\n      constructor,\n    );\n    ClassHelpers.setName(constructor, options?.className);\n    return class extends constructor {\n      constructor(...args: any[]) {\n        super(...args);\n\n\n        const methodNamesAll = ClassHelpers.getMethodsNames(\n          constructor.prototype,\n        );\n\n        const methodNames = methodNamesAll.filter(m => {\n          return (\n            !['__trigger_event__', 'clone'].includes(m) &&\n            !m.startsWith('_') &&\n            !m.startsWith('inject')\n          );\n        });\n\n\n        methodNames.forEach(methodName => {\n          const originalMethod = (this as any)[methodName];\n\n          (this as any)[methodName] = async (...methodArgs: any[]) => {\n            const result = originalMethod.apply(this, methodArgs);\n\n\n            if (result instanceof Promise) {\n              await result;\n            }\n\n\n            if (\n              options.allowedEvents === undefined ||\n              options.allowedEvents.includes(methodName)\n            ) {\n              // @ts-ignore\n              (this as BaseSubscriber).__trigger_event__(methodName as any);\n            }\n\n            return result;\n          };\n        });\n      }\n    } as any;\n  } as any;\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/classes/subscriber-decorator.ts","\n\nimport {   EntitySubscriberInterface,   RecoverEvent,   SoftRemoveEvent,   InsertEvent,   TransactionStartEvent,   TransactionCommitEvent,   TransactionRollbackEvent,   RemoveEvent,   UpdateEvent, } from 'firedev-typeorm/websql';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { FiredevSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@FiredevSubscriber({\n  className: 'BaseSubscriberForEntity',\n})\nexport abstract class BaseSubscriberForEntity<Entity = any>\n  extends BaseInjector\n  implements EntitySubscriberInterface\n{\n  abstract listenTo(): new (...args) => Entity;\n\n  /**\n   * Called after entity is loaded.\n   */\n  afterLoad(entity: any) {\n    console.log(`AFTER ENTITY LOADED: `, entity);\n  }\n\n  /**\n   * Called before query execution.\n   */\n  beforeQuery(event: any) {\n\n    console.log(`BEFORE QUERY: `, event.query);\n  }\n\n  /**\n   * Called after query execution.\n   */\n  afterQuery(event: any) {\n\n    console.log(`AFTER QUERY: `, event.query);\n  }\n\n  /**\n   * Called before entity insertion.\n   */\n  beforeInsert(event: InsertEvent<any>) {\n    console.log(`BEFORE ENTITY INSERTED: `, event.entity);\n  }\n\n  /**\n   * Called after entity insertion.\n   */\n  afterInsert(event: InsertEvent<any>) {\n    console.log(`AFTER ENTITY INSERTED: `, event.entity);\n  }\n\n  /**\n   * Called before entity update.\n   */\n  beforeUpdate(event: UpdateEvent<any>) {\n    console.log(`BEFORE ENTITY UPDATED: `, event.entity);\n  }\n\n  /**\n   * Called after entity update.\n   */\n  afterUpdate(event: UpdateEvent<any>) {\n    console.log(`AFTER ENTITY UPDATED: `, event.entity);\n  }\n\n  /**\n   * Called before entity removal.\n   */\n  beforeRemove(event: RemoveEvent<any>) {\n    console.log(\n      `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called after entity removal.\n   */\n  afterRemove(event: RemoveEvent<any>) {\n    console.log(\n      `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called before entity removal.\n   */\n  beforeSoftRemove(event: SoftRemoveEvent<any>) {\n    console.log(\n      `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called after entity removal.\n   */\n  afterSoftRemove(event: SoftRemoveEvent<any>) {\n    console.log(\n      `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called before entity recovery.\n   */\n  beforeRecover(event: RecoverEvent<any>) {\n    console.log(\n      `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called after entity recovery.\n   */\n  afterRecover(event: RecoverEvent<any>) {\n    console.log(\n      `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n      event.entity,\n    );\n  }\n\n  /**\n   * Called before transaction start.\n   */\n  beforeTransactionStart(event: TransactionStartEvent) {\n    console.log(`BEFORE TRANSACTION STARTED: `, event);\n  }\n\n  /**\n   * Called after transaction start.\n   */\n  afterTransactionStart(event: TransactionStartEvent) {\n    console.log(`AFTER TRANSACTION STARTED: `, event);\n  }\n\n  /**\n   * Called before transaction commit.\n   */\n  beforeTransactionCommit(event: TransactionCommitEvent) {\n    console.log(`BEFORE TRANSACTION COMMITTED: `, event);\n  }\n\n  /**\n   * Called after transaction commit.\n   */\n  afterTransactionCommit(event: TransactionCommitEvent) {\n    console.log(`AFTER TRANSACTION COMMITTED: `, event);\n  }\n\n  /**\n   * Called before transaction rollback.\n   */\n  beforeTransactionRollback(event: TransactionRollbackEvent) {\n    console.log(`BEFORE TRANSACTION ROLLBACK: `, event);\n  }\n\n  /**\n   * Called after transaction rollback.\n   */\n  afterTransactionRollback(event: TransactionRollbackEvent) {\n    console.log(`AFTER TRANSACTION ROLLBACK: `, event);\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-subscriber-for-entity.ts","\n\n/* eslint-disable @typescript-eslint/typedef */\n\n\nimport { EventSubscriber } from 'firedev-typeorm/websql';\nimport type {\n  TransactionRollbackEvent,\n  TransactionCommitEvent,\n  TransactionStartEvent,\n  RecoverEvent,\n  SoftRemoveEvent,\n  RemoveEvent,\n  UpdateEvent,\n  InsertEvent,\n} from 'firedev-typeorm';\nimport { Entity as TypeormEntity, Tree } from 'firedev-typeorm/websql';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\nimport { FiredevAdmin } from './ui/firedev-admin-mode-configuration/firedev-admin.service';\n\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Symbols } from './symbols';\nimport { _, Helpers } from 'tnp-core/websql';\nimport type { createContext } from './create-context';\nimport { DIFiredevContainer } from './dependency-injection/di-container';\nimport { FiredevControllerOptions } from './decorators/classes/controller-decorator';\nimport { FiredevHelpers } from './helpers/firedev-helpers';\nimport {   Mapping,   Models as ModelsNg2Rest,   Resource,   RestHeaders, } from 'ng2-rest/websql';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { JSON10 } from 'json10/websql';\nimport { path } from 'tnp-core/websql';\nimport { from, Subject } from 'rxjs';\nimport { EntityProcess } from './entity-process';\nimport { getResponseValue } from './get-response-value';\nimport type { Application } from 'express';\nimport axios from 'axios';\nimport type { NgZone } from '@angular/core';\n\nimport {   DataSource,   DataSourceOptions,   getMetadataArgsStorage, } from 'firedev-typeorm/websql';/* */\n/* */\n/* */\n/* */\n\nimport { FiredevEntityOptions } from './decorators/classes/entity-decorator';\nimport type { Server } from 'http';\nimport { ENV } from './env';\nimport type { BaseClass } from './base-classes/base-class';\nimport { RealtimeCore } from './realtime/realtime-core';\nimport { FiredevSubscriberOptions } from './decorators/classes/subscriber-decorator';\nimport { BaseSubscriberForEntity } from './base-classes/base-subscriber-for-entity';\n\n\nexport class EndpointContext {\n\n\n\n  private static ngZone: NgZone;\n\n  static initNgZone(ngZone: NgZone) {\n\n    this.ngZone = ngZone;\n\n  }\n  public static findForTraget(classFnOrObject: any): EndpointContext {\n    const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};\n    return (\n      classFnOrObject[Symbols.ctxInClassOrClassObj] ||\n      obj[Symbols.ctxInClassOrClassObj]\n    );\n  }\n\n\n\n\n\n  disabledRealtime: boolean = false;\n  /**\n   * check whether context is inited\n   * (with init() function )\n   */\n  public inited: boolean = false;\n\n\n  private readonly localInstaceObjSymbol = Symbol('localInstaceObjSymbol');\n\n\n  /**\n   * all instances of classes from context\n   * key is class name\n   */\n  public readonly allClassesInstances = {};\n\n\n\n  private readonly classInstancesByNameObj = {};\n\n\n\n  private readonly objWithClassesInstancesArr = {};\n\n\n\n  public readonly activeRoutes: {\n    routePath: string;\n    method: Models.Http.Rest.HttpMethod;\n  }[] = [];\n\n\n\n  private injectableTypesfromContexts = [\n    Models.ClassType.CONTROLLER,\n    Models.ClassType.PROVIDER,\n    Models.ClassType.REPOSITORY,\n    Models.ClassType.SUBSCRIBER,\n  ];\n\n\n  private allTypesfromContexts = [\n    ...this.injectableTypesfromContexts,\n    Models.ClassType.ENTITY,\n  ];\n\n\n  public expressApp: Application = {} as any;\n\n\n\n  public serverTcpUdp: Server;\n\n\n\n  databaseConfig?: Models.DatabaseConfig;\n  private autoGeneratedConfig?: Models.DatabaseConfig;\n\n\n\n  mode: Models.FrameworkMode;\n\n\n\n  session?: Models.ISession;\n\n\n\n  public connection: DataSource;\n\n\n\n  private entitiesTriggers = {};\n\n\n\n  private realtime: RealtimeCore;\n  get realtimeClient() {\n    return this.realtime.client;\n  }\n  get realtimeServer() {\n    return this.realtime.server;\n  }\n\n\n\n  /**\n   * available after init()\n   */\n  public config: Models.ContextOptions<any, any, any, any, any, any>;\n\n\n\n  get logHttp(): boolean {\n    if (_.isObject(this.config?.logs)) {\n      return !!(this.config.logs as Models.ContectionOptionsLogs).http;\n    }\n    return this.config?.logs === true;\n  }\n\n  get logRealtime(): boolean {\n    if (_.isObject(this.config?.logs)) {\n      return !!(this.config.logs as Models.ContectionOptionsLogs).realtime;\n    }\n    return this.config?.logs === true;\n  }\n\n  get logFramework(): boolean {\n    if (_.isObject(this.config?.logs)) {\n      return !!(this.config.logs as Models.ContectionOptionsLogs).framework;\n    }\n    return this.config?.logs === true;\n  }\n\n  get logDb(): boolean {\n    if (_.isObject(this.config?.logs)) {\n      return !!(this.config.logs as Models.ContectionOptionsLogs).db;\n    }\n    return this.config?.logs === true;\n  }\n\n\n\n\n\n  constructor(\n    private originalConfig: Models.ContextOptions<any, any, any, any, any, any>,\n    private configFn: (\n      env: any,\n    ) => Models.ContextOptions<any, any, any, any, any, any>,\n  ) {}\n\n\n\n  public async init(options?: { initFromRecrusiveContextResovle?: boolean }) {\n    const { initFromRecrusiveContextResovle } = options || {}; // TODO use it ?\n\n    this.inited = true;\n    this.config = this.configFn(ENV);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    if (this.config.host) {\n      this.mode = 'backend-frontend(tcp+udp)';\n\n      this.mode = 'backend-frontend(websql)';\n\n    }\n    if (this.config.remoteHost) {\n      if (this.config.host) {\n        Helpers.error(\n          `[firedev] You can't have remoteHost and host at the same time`,\n          false,\n          true,\n        );\n      }\n      this.mode = 'remote-backend(tcp+udp)';\n    }\n\n    if (this.config.useIpcWhenElectron && Helpers.isElectron) {\n      this.mode = 'backend-frontend(ipc-electron)';\n    }\n\n    if (!this.mode && !this.config.abstract) {\n      Helpers.error(\n        `[firedev] Context \"${this.contextName}\": You need to provide host or remoteHost or useIpcWhenElectron`,\n        false,\n        true,\n      );\n/* */\n/* */\n  \n    }\n\n\n\n    if (this.config.database === true) {\n      this.databaseConfig = this.getAutoGeneratedConfig();\n    } else if (_.isObject(this.config.database)) {\n      this.databaseConfig = _.cloneDeep(\n        this.config.database,\n      ) as Models.DatabaseConfig;\n    }\n\n\n\n    if (this.config.session) {\n      this.session = _.cloneDeep(this.config.session);\n      const oneHour = 1000 * 60 * 60 * 1; // 24;\n      if (!this.session.cookieMaxAge) {\n        this.session.cookieMaxAge = oneHour;\n      }\n\n      axios.defaults.withCredentials = true;\n    }\n\n\n\n    this.config.contexts = this.config.contexts || {};\n    this.config.entities = this.config.entities || {};\n    this.config.controllers = this.config.controllers || {};\n    this.config.repositories = this.config.repositories || {};\n    this.config.providers = this.config.providers || {};\n    this.config.subscribers = this.config.subscribers || {};\n\n    this.config.entities = {\n      ...(await this.getRecrusiveClassesfromContextsObj(\n        Models.ClassType.ENTITY,\n      )),\n      ...this.config.entities,\n    };\n\n    this.config.controllers = {\n      ...(await this.getRecrusiveClassesfromContextsObj(\n        Models.ClassType.CONTROLLER,\n      )),\n      ...this.config.controllers,\n    };\n\n    this.config.providers = {\n      ...(await this.getRecrusiveClassesfromContextsObj(\n        Models.ClassType.PROVIDER,\n      )),\n      ...this.config.providers,\n    };\n\n    this.config.subscribers = {\n      ...(await this.getRecrusiveClassesfromContextsObj(\n        Models.ClassType.SUBSCRIBER,\n      )),\n      ...this.config.subscribers,\n    };\n\n    this.config.repositories = {\n      ...(await this.getRecrusiveClassesfromContextsObj(\n        Models.ClassType.REPOSITORY,\n      )),\n      ...this.config.repositories,\n    };\n\n\n\n\n\n    this.config.controllers = this.cloneClassesObjWithNewMetadata({\n      classesInput: this.config.controllers,\n      config: this.config,\n      ctx: this,\n      classType: Models.ClassType.CONTROLLER,\n    });\n    this.config.repositories = this.cloneClassesObjWithNewMetadata({\n      classesInput: this.config.repositories,\n      config: this.config,\n      ctx: this,\n      classType: Models.ClassType.REPOSITORY,\n    });\n    this.config.providers = this.cloneClassesObjWithNewMetadata({\n      classesInput: this.config.providers,\n      config: this.config,\n      ctx: this,\n      classType: Models.ClassType.PROVIDER,\n    });\n    this.config.subscribers = this.cloneClassesObjWithNewMetadata({\n      classesInput: this.config.subscribers,\n      config: this.config,\n      ctx: this,\n      classType: Models.ClassType.SUBSCRIBER,\n    });\n\n\n\n    for (const classTypeName of this.injectableTypesfromContexts) {\n      this.classInstancesByNameObj[classTypeName] = {};\n      this.objWithClassesInstancesArr[classTypeName] = [];\n    }\n\n    for (const classTypeName of this.injectableTypesfromContexts) {\n      await this.createInstances(\n        this.config[Models.ClassTypeKey[classTypeName]],\n        classTypeName,\n      );\n    }\n\n\n\n    if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n    }\n\n\n\n    if (!this.config.abstract) {\n      this.disabledRealtime = !!this.config.disabledRealtime;\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n      this.realtime = new RealtimeCore(this);\n    }\n\n\n\n\n    if (this.config.abstract) {\n      this.logFramework &&\n        Helpers.info(\n          `[firedev] Create abstract context: ${this.config.contextName}`,\n        );\n    } else {\n      if (this.config.remoteHost) {\n        this.logFramework &&\n          Helpers.info(\n            `[firedev] Create context for remote host: ${this.config.remoteHost}`,\n          );\n      } else {\n        this.logFramework &&\n          Helpers.info(\n            `[firedev] Create context for host: ${this.config.host}`,\n          );\n      }\n    }\n\n\n\n    Object.keys(this.config).forEach(key => {\n      this.originalConfig[key] = this.config[key];\n    });\n  }\n\n\n\n  private getAutoGeneratedConfig(): Models.DatabaseConfig {\n\n    let databaseConfig: Models.DatabaseConfig;\n    if (Helpers.isRunningInDocker()) {\n      Helpers.info('Running in docker, using in mysql database');\n\n      databaseConfig = {\n        database: `tmp-db-${_.kebabCase(this.contextName)}.sqljs.db`,\n        type: 'mysql',\n        autoSave: true,\n        synchronize: true,\n        dropSchema: true,\n        logging: this.logDb,\n        databasePort: 3306,\n        databaseHost: 'localhost',\n        databaseUsername: 'root',\n        databasePassword: 'admin',\n      };\n    } else {\n      this.logFramework &&\n        Helpers.info(\n          `[firedev][database] Automatically resolving database config for mode ${this.mode}`,\n        );\n      switch (this.mode) {\n\n        case 'backend-frontend(ipc-electron)':\n          return {\n            location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,\n            type: 'sqljs',\n            autoSave: true,\n            synchronize: true,\n            dropSchema: true,\n            logging: this.logDb,\n          };\n          break;\n\n\n\n        case 'backend-frontend(websql)':\n          databaseConfig = {\n            location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,\n            type: 'sqljs',\n            useLocalForage: true, // !!window['localforage'], // TODO this need to be checked in runtime\n            autoSave: true,\n            synchronize: true,\n            dropSchema: true,\n            logging: this.logDb,\n          };\n\n          let keepWebsqlDbDataAfterReload = false;\n\n          keepWebsqlDbDataAfterReload =\n            FiredevAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n\n          if (keepWebsqlDbDataAfterReload) {\n            databaseConfig.dropSchema = false;\n            delete databaseConfig.synchronize; // false is not auto synchonize - from what I understand\n          } else {\n            databaseConfig.dropSchema = true;\n            databaseConfig.synchronize = true;\n          }\n\n          break;\n\n\n\n        case 'backend-frontend(tcp+udp)':\n          databaseConfig = {\n            database: `context-db-${_.kebabCase(this.contextName)}`,\n            location: `tmp-db-${_.kebabCase(this.contextName)}.sqlite`,\n            type: 'sqljs',\n            autoSave: true,\n            synchronize: true,\n            dropSchema: true,\n            logging: this.logDb,\n          };\n          break;\n\n      }\n    }\n    return databaseConfig;\n\n  }\n\n\n\n  get ngZone(): any {\n\n    return EndpointContext.ngZone;\n\n    return;\n  }\n\n\n\n  startServer() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n    return (void 0);\n  }\n\n\n\n  displayRoutes(app) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n  }\n\n\n\n  get modeAllowsDatabaseCreation() {\n    return (\n      this.mode === 'backend-frontend(tcp+udp)' ||\n      this.mode === 'backend-frontend(websql)' ||\n      this.mode === 'backend-frontend(ipc-electron)'\n    );\n  }\n\n\n\n\n  private cloneClassWithNewMetadata = <\n    T extends { new (...args: any[]): any },\n  >({\n    BaseClass,\n    className,\n    config,\n    ctx,\n    classType,\n  }: {\n    BaseClass: T;\n    className: string;\n    config: Models.ContextOptions<any, any, any, any, any, any>;\n    ctx: EndpointContext;\n    classType: Models.ClassType;\n  }): T => {\n\n    const cloneClass = () => {\n      if (\n        BaseClass[Symbols.fullClassNameStaticProperty] ===\n        `${ctx.contextName}.${className}`\n      ) {\n        return BaseClass;\n      }\n      return class extends BaseClass {\n\n\n        // @ts-ignore\n        static [Symbols.orignalClass] = BaseClass;\n\n        // @ts-ignore\n        static [Symbols.fullClassNameStaticProperty] = `${ctx.contextName}.${className}`;\n\n        // @ts-ignore\n        static [Symbols.classNameStaticProperty] = className;\n\n        static [Symbols.ctxInClassOrClassObj] = ctx;\n\n        static __getFullPathForClass__(arr = []) {\n          const name = this[Symbols.fullClassNameStaticProperty];\n          arr.push(name);\n          // @ts-ignore\n          if (\n            this[Symbols.orignalClass] && // @ts-ignore\n            this[Symbols.orignalClass].__getFullPathForClass__\n          ) {\n            // @ts-ignore\n            this[Symbols.orignalClass].__getFullPathForClass__(arr);\n          }\n          return arr.join('/');\n        }\n        static get fullPathForClass(): string {\n          return this.__getFullPathForClass__();\n        }\n        [Symbols.ctxInClassOrClassObj] = ctx;\n\n\n      };\n    };\n\n    const cloneClassFunction = cloneClass();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    return cloneClassFunction;\n  };\n\n\n\n\n\n  private cloneClassesObjWithNewMetadata = ({\n    classesInput,\n    config,\n    ctx,\n    classType,\n  }: {\n    classesInput: any;\n    config: Models.ContextOptions<any, any, any, any, any, any>;\n    ctx: EndpointContext;\n    classType: Models.ClassType;\n  }) => {\n    const classes = {};\n\n    for (const key of Object.keys(classesInput || {})) {\n      const BaseClass = classesInput[key];\n\n      if (!BaseClass) {\n        Helpers.error(`Class ${key} is not defined in context ${ctx.contextName}\n\n        Please check if you have correct import in context file\n\n        `);\n      }\n\n      var className = Reflect.getMetadata(\n        Symbols.metadata.className,\n        BaseClass,\n      );\n\n\n\n\n\n      className = className || key;\n      BaseClass[Symbols.classNameStaticProperty] = className;\n\n      const clonedClass = this.cloneClassWithNewMetadata({\n        BaseClass,\n        className,\n        config,\n        ctx,\n        classType,\n      });\n      classes[className] = clonedClass;\n    }\n    return classes;\n  };\n\n\n\n  private async getRecrusiveClassesfromContextsObj(\n    classType: Models.ClassType,\n  ) {\n    const arr = await this.getRecrusiveClassesfromContexts(classType);\n    return arr.reduce((acc, c) => {\n      acc[ClassHelpers.getName(c)] = c;\n      return acc;\n    }, {});\n  }\n\n  private async getRecrusiveClassesfromContexts(\n    classType: Models.ClassType,\n    arr = [],\n  ) {\n    const contexts = Object.values(this.config.contexts || {}) as ReturnType<\n      typeof createContext\n    >[];\n\n\n\n    for (const ctx of contexts) {\n\n      const ref = await ctx.__ref();\n\n      const classesInput = ref.getClassFunBy(classType);\n\n\n      const clonedClasses = Object.values(\n        this.cloneClassesObjWithNewMetadata({\n          classesInput,\n          config: this.config,\n          ctx: this,\n          classType,\n        }),\n      );\n\n      clonedClasses.forEach(c => arr.push(c));\n\n      await ref.getRecrusiveClassesfromContexts(classType, arr);\n    }\n    return arr as Function[];\n  }\n\n\n\n  getClassInstanceObjBy(classType: Models.ClassType): any {\n    return this.classInstancesByNameObj[classType];\n  }\n\n\n\n  private getClassesInstancesArrBy(classType: Models.ClassType): any[] {\n    return this.objWithClassesInstancesArr[classType];\n  }\n\n\n\n  inject<T>(\n    ctor: new (...args: any[]) => T,\n    options?: {\n      localInstance?: boolean;\n      contextClassInstance?: BaseClass;\n      locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n    },\n  ): T {\n    if (!options) {\n      options = {} as any;\n    }\n    const className = ClassHelpers.getName(ctor);\n\n    const locaInstanceConstructorArgs =\n      options.locaInstanceConstructorArgs || [];\n\n    if (this.isCLassType(Models.ClassType.REPOSITORY, ctor)) {\n      options.localInstance = true;\n    }\n\n    if (options?.localInstance) {\n      const ctxClassFn = this.getClassFunByClassName(className);\n      let entityName: string = '';\n\n      if (className === 'BaseRepository') {\n        const entityFn = locaInstanceConstructorArgs[0];\n        const entity = entityFn && entityFn();\n        entityName = entity && ClassHelpers.getName(entity);\n      }\n\n      if (!options.contextClassInstance[this.localInstaceObjSymbol]) {\n        options.contextClassInstance[this.localInstaceObjSymbol] = {};\n      }\n      const instanceKey = className + (entityName ? `.${entityName}` : '');\n      const existed =\n        options.contextClassInstance[this.localInstaceObjSymbol][instanceKey];\n      if (existed) {\n\n        return existed;\n      }\n\n      if (!ctxClassFn) {\n        throw new Error(`Not able to inject \"${className}\" inside context \"${this.contextName}\"\n\n        Make sure they share the same context or import context where \"${className}\" is defined.\n\n        `);\n      }\n\n      const injectedInstance = new (ctxClassFn as any)(\n        ...locaInstanceConstructorArgs,\n      );\n      options.contextClassInstance[this.localInstaceObjSymbol][instanceKey] =\n        injectedInstance;\n\n      return injectedInstance;\n    }\n\n    const contextScopeInstance = this.allClassesInstances[className];\n\n\n\n    return contextScopeInstance;\n  }\n\n  /**\n   * alias for inject\n   */\n  getInstanceBy<T>(ctor: new (...args: any[]) => T): T {\n    return this.inject(ctor, { localInstance: false });\n  }\n\n\n  checkIfContextInitialized() {\n    if (_.isUndefined(this.config)) {\n      throw new Error(`Please check if your context has been initilized.\n\n\n      await Context.initialize();\n\n\n\n      `);\n    }\n  }\n\n\n  getClassFunBy(classType: Models.ClassType) {\n    this.checkIfContextInitialized();\n    switch (classType) {\n      case Models.ClassType.CONTROLLER:\n        return this.config.controllers;\n      case Models.ClassType.ENTITY:\n        return this.config.entities;\n      case Models.ClassType.PROVIDER:\n        return this.config.providers;\n      case Models.ClassType.REPOSITORY:\n        return this.config.repositories;\n      case Models.ClassType.SUBSCRIBER:\n        return this.config.subscribers;\n    }\n  }\n\n  isCLassType(classType: Models.ClassType, classFn: Function): boolean {\n    return !!this.getClassFunBy(classType)[ClassHelpers.getName(classFn)];\n  }\n\n  /**\n   * Only for injectable types\n   * Only for classType: CONTROLLER, REPOSITORY, PROVIDER\n   */\n  getClassFunByClassName(className: string): Function {\n    for (const classTypeName of this.allTypesfromContexts) {\n      const classesForInjectableType =\n        this.config[Models.ClassTypeKey[classTypeName]];\n\n      if (classesForInjectableType[className]) {\n        return classesForInjectableType[className];\n      }\n    }\n  }\n\n  getClassFunByClass(classFunction: Function): Function {\n    const className = ClassHelpers.getName(classFunction);\n    return this.getClassFunByClassName(className);\n  }\n\n  getClassFunByArr(classType: Models.ClassType) {\n    return Object.values(this.getClassFunBy(classType) || {}) as Function[];\n  }\n\n\n\n  private async createInstances(classes: any, classType: Models.ClassType) {\n\n\n\n\n\n    for (const classFn of [\n\n      ...Object.values(classes),\n    ]) {\n      const instance = DIFiredevContainer.resolve(classFn as any) as any;\n      const classInstancesByNameObj = this.classInstancesByNameObj[classType];\n      const className = ClassHelpers.getName(classFn);\n\n      classInstancesByNameObj[className] = instance;\n\n      this.config[Models.ClassTypeKey[classType]][className] = classFn;\n      this.objWithClassesInstancesArr[classType].push(instance);\n      this.allClassesInstances[className] = instance;\n    }\n  }\n\n\n\n  async reinitControllers() {\n\n\n\n    const controllers = this.getClassesInstancesArrBy(\n      Models.ClassType.CONTROLLER,\n    );\n\n    for (const ctrl of controllers) {\n      if (_.isFunction(ctrl.initExampleDbData)) {\n        await Helpers.runSyncOrAsync({\n          functionFn: ctrl.initExampleDbData,\n          context: ctrl,\n        });\n      }\n    }\n\n\n\n  }\n  async initClasses() {\n    for (const classTypeName of [\n      Models.ClassType.PROVIDER,\n      Models.ClassType.REPOSITORY,\n      Models.ClassType.CONTROLLER,\n      Models.ClassType.ENTITY,\n    ]) {\n\n\n\n\n      for (const classFun of this.getClassFunByArr(classTypeName) as any[]) {\n        if (_.isFunction(classFun._)) {\n          await Helpers.runSyncOrAsync({\n            functionFn: classFun._,\n            context: classFun,\n          });\n\n\n\n\n\n\n        }\n      }\n\n\n\n\n    }\n\n    for (const classTypeName of [\n      Models.ClassType.PROVIDER,\n      Models.ClassType.REPOSITORY,\n      Models.ClassType.CONTROLLER,\n    ]) {\n\n\n\n\n      for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {\n        if (_.isFunction(ctrl._)) {\n          await Helpers.runSyncOrAsync({\n            functionFn: ctrl._,\n            context: ctrl,\n          });\n        }\n      }\n\n\n\n\n    }\n  }\n\n\n\n  isActiveOn(classInstance: object): boolean {\n    let contextRef: EndpointContext =\n      classInstance[Symbols.ctxInClassOrClassObj];\n    return this === contextRef;\n  }\n\n\n\n  get uri() {\n    const url = this.host\n      ? new URL(this.host)\n      : this.remoteHost\n        ? new URL(this.remoteHost)\n        : void 0;\n    return url;\n  }\n\n\n\n  get isHttpServer() {\n    return this.uri.protocol === 'https:';\n  }\n\n\n\n  /**\n   * ipc/udp needs this\n   */\n  public get contextName() {\n    return this.config.contextName;\n  }\n\n\n\n  public get publicAssets() {\n    return this.config?.publicAssets || [];\n  }\n\n\n\n  get isProductionMode() {\n    return this.config.productionMode;\n  }\n\n\n\n  get remoteHost() {\n    return this.config.remoteHost;\n  }\n\n\n\n  get host() {\n    return this.config.host;\n  }\n\n\n\n  get orgin() {\n    return this.uri?.origin;\n  }\n\n\n\n  async initSubscribers() {\n    return; // TODO\n\n    if (!this.connection?.initialize) {\n      return;\n    }\n    const subscribers = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);\n    for (const subscriber of subscribers) {\n      const options = Reflect.getMetadata(\n        Symbols.metadata.options.subscriber,\n        subscriber,\n      ) as FiredevSubscriberOptions;\n\n\n      EventSubscriber()(subscriber);\n    }\n\n    console.log(this.config.subscribers);\n\n\n\n    return;\n\n\n    const entities = this.getClassFunByArr(Models.ClassType.ENTITY);\n    for (let index = 0; index < entities.length; index++) {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    }\n\n  }\n\n\n\n  async initEntities() {\n\n    const entities = this.getClassFunByArr(Models.ClassType.ENTITY);\n    for (const entity of entities) {\n      const options = Reflect.getMetadata(\n        Symbols.metadata.options.entity,\n        entity,\n      ) as FiredevEntityOptions;\n      const createTable = _.isUndefined(options.createTable)\n        ? true\n        : options.createTable;\n      const nameForEntity = ClassHelpers.getName(entity);\n\n      if (_.isUndefined(options.createTable) ? true : options.createTable) {\n        this.logDb &&\n          console.info(\n            `[firedev][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n          );\n\n        TypeormEntity(nameForEntity)(entity);\n      } else {\n        this.logDb &&\n          console.info(\n            `[firedev][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n          );\n      }\n    }\n\n  }\n\n\n\n\n  async initDatabaseConnection() {\n\n    const entities = (\n      this.config.override?.entities\n        ? this.config.override.entities\n        : this.getClassFunByArr(Models.ClassType.ENTITY)\n    ).map(entityFn => {\n      return ClassHelpers.getOrginalClass(entityFn);\n    });\n\n    const subscribers = (\n      this.config.override?.subscribers\n        ? this.config.override.subscribers\n        : this.getClassFunByArr(Models.ClassType.SUBSCRIBER)\n    ).filter(f => f instanceof BaseSubscriberForEntity);\n\n    const dataSourceDbConfig = _.isObject(this.databaseConfig)\n      ? ({\n          type: this.databaseConfig.type,\n          port: this.databaseConfig.databasePort,\n          host: this.databaseConfig.databaseHost,\n          database: this.databaseConfig.database as any,\n          username: this.databaseConfig.databaseUsername,\n          password: this.databaseConfig.databasePassword,\n          useLocalForage: this.databaseConfig.useLocalForage,\n          entities,\n          subscribers,\n          synchronize: this.databaseConfig.synchronize,\n          autoSave: this.databaseConfig.autoSave,\n          dropSchema: this.databaseConfig.dropSchema,\n          logging: !!this.databaseConfig.logging,\n          location: this.databaseConfig.location,\n        } as DataSourceOptions)\n      : ({} as DataSourceOptions);\n\n\n\n\n    if (this.modeAllowsDatabaseCreation && this.databaseConfig) {\n      this.logDb &&\n        this.logFramework &&\n        Helpers.info('[firedev][database] prepare typeorm connection...');\n      try {\n        const connection = new DataSource(dataSourceDbConfig);\n        this.connection = connection;\n        await this.connection.initialize();\n      } catch (error) {\n        console.error(error?.message || error);\n      }\n\n      if (!this.connection?.isInitialized) {\n        console.log('WRONG CONFIG', dataSourceDbConfig);\n        throw new Error(`Something wrong with connection init in ${this.mode}`);\n/* */\n/* */\n  \n      }\n\n      (this.logDb || this.logFramework) &&\n        console.info(\n          `\n\n        CONTECTION OK for ${this.contextName} - ${this.mode}\n\n        [firedev][typeorm] db prepration done.. db initialize=${this.connection?.isInitialized}\n\n\n        `,\n          dataSourceDbConfig,\n        );\n\n\n\n\n\n\n\n\n\n\n    } else {\n      Helpers.info(`[firedev][typeorm] Not initing db for mode ${this.mode}`);\n    }\n\n  }\n\n\n\n\n  initMetadata() {\n    const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);\n\n    for (const controllerClassFn of allControllers) {\n      controllerClassFn[Symbols.classMethodsNames] =\n        ClassHelpers.getMethodsNames(controllerClassFn);\n      const configs = ClassHelpers.getControllerConfigs(controllerClassFn);\n\n      const classConfig: Models.RuntimeControllerConfig = configs[0];\n\n      const parentscalculatedPath = _.slice(configs, 1)\n        .reverse()\n        .map(bc => {\n          if (FiredevHelpers.isGoodPath(bc.path)) {\n            return bc.path;\n          }\n          return bc.className;\n        })\n        .join('/');\n\n      if (FiredevHelpers.isGoodPath(classConfig.path)) {\n        classConfig.calculatedPath = classConfig.path;\n      } else {\n        classConfig.calculatedPath =\n          `${parentscalculatedPath}/${ClassHelpers.getName(controllerClassFn)}`\n            .replace(/\\/\\//g, '/')\n            .split('/')\n            .reduce((acc, bc) => {\n              return _.last(acc) === bc ? acc : [...acc, bc];\n            }, [])\n            .join('/');\n      }\n\n      _.slice(configs, 1).forEach(bc => {\n        const alreadyIs = classConfig.methods;\n        const toMerge = _.cloneDeep(bc.methods);\n        for (const key in toMerge) {\n          if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n            const element = toMerge[key];\n            alreadyIs[key] = element;\n          }\n        }\n      });\n\n/* */\n/* */\n  \n        this.logHttp &&\n          console.groupCollapsed(\n            `[firedev][express-server] routes [${classConfig.className}]`,\n          );\n/* */\n/* */\n  \n\n\n      Object.keys(classConfig.methods).forEach(methodName => {\n        const methodConfig: Models.MethodConfig =\n          classConfig.methods[methodName];\n\n        const type: Models.Http.Rest.HttpMethod = methodConfig.type;\n        const expressPath = methodConfig.global\n          ? `/${methodConfig.path?.replace(/\\//, '')}`\n          : FiredevHelpers.getExpressPath(classConfig, methodConfig);\n\n\n        if (Helpers.isNode || Helpers.isWebSQL) {\n\n\n          const { routePath, method } = this.initServer(\n            type,\n            methodConfig,\n            classConfig,\n            expressPath,\n            controllerClassFn,\n          );\n\n          this.activeRoutes.push({\n            routePath,\n            method,\n          });\n\n        }\n\n        const shouldInitClient =\n          Helpers.isBrowser || this.remoteHost || Helpers.isWebSQL;\n\n        if (shouldInitClient) {\n\n\n\n\n\n\n\n          this.initClient(controllerClassFn, type, methodConfig, expressPath);\n        }\n      });\n\n/* */\n/* */\n  \n        this.logHttp && console.groupEnd();\n/* */\n/* */\n  \n    }\n  }\n\n\n\n  public writeActiveRoutes() {\n    const contexts: EndpointContext[] = [this];\n\n\n    const troutes = this.activeRoutes.map(({ method, routePath }) => {\n      return (\n        FiredevHelpers.fillUpTo(method.toUpperCase() + ':', 10) +\n        this.uri.href.replace(/\\/$/, '') +\n        routePath\n      );\n\n\n\n    });\n    const routes = [\n      ...['', `---------- FOR HOST ${this.uri.href} ----------`],\n      ...troutes,\n    ];\n    const fileName = path.join(\n/* */\n/* */\n  \n      `tmp-routes-${_.kebabCase(this.config.contextName)}.json`,\n    );\n\n    this.logFramework && console.log(`[firedev] routes file: ${fileName} `);\n\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n\n  }\n\n\n\n  public get middlewares(): Models.MiddlewareType[] {\n/* */\n/* */\n    return (void 0);\n  }\n\n\n\n  private initMidleware() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n  }\n\n\n\n  private initServer(\n\n    type: Models.Http.Rest.HttpMethod,\n    methodConfig: Models.MethodConfig,\n    classConfig: Models.RuntimeControllerConfig,\n    expressPath: string,\n    target: Function,\n\n  ): any {\n\n\n    const requestHandler =\n      methodConfig.requestHandler &&\n      typeof methodConfig.requestHandler === 'function'\n        ? methodConfig.requestHandler\n        : (req, res, next) => {\n            next();\n          };\n\n\n    const url = this.uri;\n\n\n    const getResult = async (resolvedParams, req, res) => {\n      const response: Models.Http.Response<any> =\n        methodConfig.descriptor.value.apply(\n          /**\n           * Context for method @GET,@PUT etc.\n           */\n          this.getInstanceBy(target as any),\n          /**\n           * Params for metjod @GET, @PUT etc.\n           */\n          resolvedParams,\n        );\n      let result = await getResponseValue(response, { req, res });\n      return result;\n    };\n\n\n    url.pathname = url.pathname.replace(/\\/$/, '');\n    expressPath = url.pathname.startsWith('/')\n      ? `${url.pathname}${expressPath}`\n      : expressPath;\n    expressPath = expressPath.replace(/\\/\\//g, '/');\n\n\n\n    if (Helpers.isElectron) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n    }\n\n    if (!this.remoteHost) {\n\n\n      if (Helpers.isWebSQL) {\n        if (!this.expressApp[type.toLowerCase()]) {\n          this.expressApp[type.toLowerCase()] = () => {};\n        }\n      }\n\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n    }\n\n    return {\n      routePath: expressPath,\n      method: methodConfig.type,\n    };\n  }\n\n\n\n  /**\n   * client can be browser or nodejs (when remote host)\n   */\n  private initClient(\n\n    target: Function,\n    type: Models.Http.Rest.HttpMethod,\n    methodConfig: Models.Http.Rest.MethodConfig,\n    expressPath: string,\n\n  ): void {\n    const ctx = this;\n\n    this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);\n\n\n    let storage: any;\n    if (Helpers.isBrowser) {\n      storage = window;\n    }\n/* */\n/* */\n/* */\n/* */\n  \n\n\n    const orgMethods = target.prototype[methodConfig.methodName];\n\n\n\n    if (Helpers.isElectron) {\n      target.prototype[methodConfig.methodName] = function (...args) {\n        const received = new Promise(async (resolve, reject) => {\n          const headers = {};\n          const { request, response } = FiredevHelpers.websqlMocks(headers);\n\n          Helpers.ipcRenderer.once(\n            FiredevHelpers.ipcKeyNameResponse(\n              target,\n              methodConfig,\n              expressPath,\n            ),\n            (event, responseData) => {\n              let res: any = responseData;\n              console.log({ responseData });\n              try {\n                const body = res;\n                res = new ModelsNg2Rest.HttpResponse(\n                  {\n                    body: void 0,\n                    isArray: void 0 as any,\n                    method: methodConfig.type,\n                    url: `${ctx.uri.origin}${\n                      '' // TODO express path\n                    }${methodConfig.path} `,\n                  },\n                  Helpers.isBlob(body) || _.isString(body)\n                    ? body\n                    : JSON.stringify(body),\n                  RestHeaders.from(headers),\n                  void 0,\n                  () => body,\n                );\n\n                resolve(res);\n              } catch (error) {\n                console.error(error);\n                reject(error);\n              }\n            },\n          );\n          Helpers.ipcRenderer.send(\n            FiredevHelpers.ipcKeyNameRequest(target, methodConfig, expressPath),\n            args,\n          );\n        });\n        received['observable'] = from(received);\n        return {\n          received,\n        };\n      };\n      return;\n    }\n\n\n\n\n\n\n    const MIN_TIMEOUT = 500;\n    const MIN_TIMEOUT_STEP = 200;\n    const timeout =\n      window[Symbols.old.WEBSQL_REST_PROGRESS_TIMEOUT] || MIN_TIMEOUT;\n\n    let updateFun: Subject<number> =\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n    if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN]) {\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN] = new Subject();\n    }\n    updateFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n\n    let startFun: Subject<void> =\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n    if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START]) {\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START] = new Subject();\n    }\n    startFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n\n    let doneFun: Subject<void> =\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n    if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE]) {\n      window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE] = new Subject();\n    }\n    doneFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n\n    let periodsToUpdate = 0;\n    if (timeout >= MIN_TIMEOUT) {\n      periodsToUpdate = Math.floor(timeout / MIN_TIMEOUT_STEP);\n    }\n\n\n\n    const periods = async () => {\n      startFun.next();\n      for (let n = 1; n <= periodsToUpdate; n++) {\n\n\n\n        let upValue = Math.round(((MIN_TIMEOUT_STEP * n) / timeout) * 100);\n        if (upValue > 100) {\n          upValue = 100;\n        }\n\n        updateFun.next(upValue);\n\n        await new Promise((resolve, reject) => {\n          setTimeout(() => {\n            resolve(void 0);\n          }, MIN_TIMEOUT_STEP);\n        });\n\n      }\n      doneFun.next();\n    };\n\n\n    target.prototype[methodConfig.methodName] = function (...args) {\n\n\n\n      const received = new Promise(async (resolve, reject) => {\n        const headers = {};\n        const { request, response } = FiredevHelpers.websqlMocks(headers);\n\n        let res: any;\n        try {\n          res = await Helpers.runSyncOrAsync({\n            functionFn: orgMethods,\n            context: this,\n            arrayOfParams: args,\n          });\n\n          if (typeof res === 'function') {\n            res = await Helpers.runSyncOrAsync({\n              functionFn: res,\n              context: this,\n              arrayOfParams: [request, response],\n            });\n          }\n\n          if (typeof res === 'function') {\n            res = await Helpers.runSyncOrAsync({\n              functionFn: res,\n              context: this,\n              arrayOfParams: [request, response],\n            });\n          }\n\n\n          if (typeof res === 'object' && res?.received) {\n            res = await res.received;\n          }\n\n          const body = res;\n\n          res = new ModelsNg2Rest.HttpResponse(\n            {\n              body: void 0,\n              isArray: void 0 as any,\n              method: methodConfig.type,\n              url: `${ctx.uri.origin}${\n                '' // TODO express path\n              }${methodConfig.path} `,\n            },\n            Helpers.isBlob(body) || _.isString(body)\n              ? body\n              : JSON.stringify(body),\n            RestHeaders.from(headers),\n            void 0,\n            () => body,\n          );\n\n\n\n\n\n          await periods();\n          resolve(res);\n        } catch (error) {\n          await periods();\n          console.error(error);\n\n\n\n          reject(error);\n        }\n      });\n      received['observable'] = from(received);\n\n      if (Helpers.isWebSQL) {\n        return {\n          received,\n        };\n      }\n    };\n    if (Helpers.isWebSQL) {\n      return;\n    }\n\n\n\n\n\n    target.prototype[methodConfig.methodName] = function (this: {}, ...args) {\n\n\n\n\n\n      if (!storage[Symbols.old.ENDPOINT_META_CONFIG])\n        storage[Symbols.old.ENDPOINT_META_CONFIG] = {};\n      if (!storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href])\n        storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href] = {};\n      const endpoints = storage[Symbols.old.ENDPOINT_META_CONFIG];\n      let rest: ModelsNg2Rest.ResourceModel<any, any>;\n      if (!endpoints[ctx.uri.href][expressPath]) {\n        let headers = {};\n        if (methodConfig.contentType && !methodConfig.responseType) {\n          rest = Resource.create(\n            ctx.uri.href,\n            expressPath,\n            Symbols.old.MAPPING_CONFIG_HEADER as any,\n            Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n            RestHeaders.from({\n              'Content-Type': methodConfig.contentType,\n              Accept: methodConfig.contentType,\n            }),\n          );\n        } else if (methodConfig.contentType && methodConfig.responseType) {\n          rest = Resource.create(\n            ctx.uri.href,\n            expressPath,\n            Symbols.old.MAPPING_CONFIG_HEADER as any,\n            Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n            RestHeaders.from({\n              'Content-Type': methodConfig.contentType,\n              Accept: methodConfig.contentType,\n              responsetypeaxios: methodConfig.responseType,\n            }),\n          );\n        } else if (!methodConfig.contentType && methodConfig.responseType) {\n          rest = Resource.create(\n            ctx.uri.href,\n            expressPath,\n            Symbols.old.MAPPING_CONFIG_HEADER as any,\n            Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n            RestHeaders.from({\n              responsetypeaxios: methodConfig.responseType,\n            }),\n          );\n        } else {\n          rest = Resource.create(\n            ctx.uri.href,\n            expressPath,\n            Symbols.old.MAPPING_CONFIG_HEADER as any,\n            Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n          );\n        }\n\n        endpoints[ctx.uri.href][expressPath] = rest;\n      } else {\n        rest = endpoints[ctx.uri.href][expressPath] as any;\n      }\n\n      const method = type.toLowerCase();\n      const isWithBody = method === 'put' || method === 'post';\n      const pathPrams = {};\n      let queryParams = {};\n      let bodyObject = {};\n      args.forEach((param, i) => {\n        let currentParam: Models.Http.Rest.ParamConfig = void 0 as any;\n\n        for (let pp in methodConfig.parameters) {\n          let v = methodConfig.parameters[pp];\n          if (v.index === i) {\n            currentParam = v;\n            break;\n          }\n        }\n\n        if (currentParam.paramType === 'Path') {\n          pathPrams[currentParam.paramName] = param;\n        }\n        if (currentParam.paramType === 'Query') {\n          if (currentParam.paramName) {\n            const mapping = Mapping.decode(param, !ctx.isProductionMode);\n            if (mapping) {\n              rest.headers.set(\n                `${Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName} `,\n                JSON.stringify(mapping),\n              );\n            }\n            queryParams[currentParam.paramName] = param;\n          } else {\n            const mapping = Mapping.decode(param, !ctx.isProductionMode);\n            if (mapping) {\n              rest.headers.set(\n                Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n                JSON.stringify(mapping),\n              );\n            }\n            queryParams = _.cloneDeep(param);\n          }\n        }\n        if (currentParam.paramType === 'Header') {\n          if (currentParam.paramName) {\n            if (currentParam.paramName === Symbols.old.MDC_KEY) {\n\n              rest.headers.set(\n                currentParam.paramName,\n                encodeURIComponent(JSON.stringify(param)),\n              );\n            } else {\n              rest.headers.set(currentParam.paramName, param);\n            }\n          } else {\n            for (let header in param) {\n              rest.headers.set(header, param[header]);\n            }\n          }\n        }\n        if (currentParam.paramType === 'Cookie') {\n          Resource.Cookies.write(\n            currentParam.paramName,\n            param,\n            currentParam.expireInSeconds,\n          );\n        }\n        if (currentParam.paramType === 'Body') {\n          if (currentParam.paramName) {\n            if (ClassHelpers.getName(bodyObject) === 'FormData') {\n              throw new Error(`[firedev - framework] Don use param names when posting / putting FormData.\n              Use this:\n\n(@Firedev.Http.Param.Body() formData: FormData) ...\n\n\ninstead\n\n  (@Firedev.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n`);\n            }\n            const mapping = Mapping.decode(param, !ctx.isProductionMode);\n            if (mapping) {\n              rest.headers.set(\n                `${Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName} `,\n                JSON.stringify(mapping),\n              );\n            }\n            bodyObject[currentParam.paramName] = param;\n          } else {\n            const mapping = Mapping.decode(param, !ctx.isProductionMode);\n            if (mapping) {\n              rest.headers.set(\n                Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n                JSON.stringify(mapping),\n              );\n            }\n            bodyObject = param;\n          }\n        }\n      });\n\n      if (\n        typeof bodyObject === 'object' &&\n        ClassHelpers.getName(bodyObject) !== 'FormData'\n      ) {\n        let circuralFromItem = [];\n        bodyObject = JSON10.parse(\n          JSON10.stringify(bodyObject, void 0, void 0, circs => {\n            circuralFromItem = circs;\n          }),\n        );\n        rest.headers.set(\n          Symbols.old.CIRCURAL_OBJECTS_MAP_BODY,\n          JSON10.stringify(circuralFromItem),\n        );\n      }\n\n      if (typeof queryParams === 'object') {\n        let circuralFromQueryParams = [];\n        queryParams = JSON10.parse(\n          JSON10.stringify(queryParams, void 0, void 0, circs => {\n            circuralFromQueryParams = circs;\n          }),\n        );\n\n        rest.headers.set(\n          Symbols.old.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n          JSON10.stringify(circuralFromQueryParams),\n        );\n      }\n\n\n      const httpResultObj = {\n        received: isWithBody\n          ? rest.model(pathPrams)[method](bodyObject, [queryParams])\n          : rest.model(pathPrams)[method]([queryParams]),\n      };\n      return httpResultObj;\n    };\n\n  }\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/endpoint-context.ts","\n\n\nimport { Helpers } from 'tnp-core/websql';\nimport { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\n\nimport { ENV } from './env';\n\nimport { FiredevAdmin } from './ui/firedev-admin-mode-configuration/firedev-admin.service';\n\n\n\n\n\n\nexport const createContext = <\n\n  CTX extends Record<string, object>,\n  CTRL extends Record<string, new (...args: any[]) => any>,\n  ENTITY extends Record<string, new (...args: any[]) => any>,\n  REPO extends Record<string, new (...args: any[]) => any>,\n  PROVIDER extends Record<string, new (...args: any[]) => any>,\n  SUBSCRIBER extends Record<string, new (...args: any[]) => any>,\n\n>(\n  configFn: (\n    env: any,\n  ) => Models.ContextOptions<CTX, CTRL, ENTITY, REPO, PROVIDER, SUBSCRIBER>,\n) => {\n  let config = configFn(ENV);\n\n\n\n\n\n  const endpointContextRef = new EndpointContext(config, configFn);\n\n\n\n\n\n  const res = {\n\n    types: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n      get controllers() {\n        return config.controllers;\n      },\n      get repositories() {\n        return config.repositories;\n      },\n      get providers() {\n        return config.providers;\n      },\n      get subscribers() {\n        return config.subscribers;\n      },\n    },\n\n\n    get contexts() {\n      return config.contexts;\n    },\n    get contextName() {\n      return config.contextName;\n    },\n\n\n    /**\n     * - get reference to internal context\n     */\n    async __ref() {\n      if (!endpointContextRef.inited) {\n        await endpointContextRef.init({\n          initFromRecrusiveContextResovle: true,\n        });\n      }\n      return endpointContextRef;\n    },\n    get __refSync() {\n      return endpointContextRef;\n    },\n    getClassInstance<T>(ctor: new (...args: any[]) => T): T {\n      return endpointContextRef.getInstanceBy(ctor);\n    },\n\n    getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T {\n      const classFun = endpointContextRef.getClassFunByClass(ctor);\n      return classFun as any;\n\n\n\n\n\n\n\n\n\n\n\n\n\n    },\n\n\n    /**\n     * - create controller instances for context\n     * - init database (if enable) + migation scripts\n     */\n    initialize: async (): Promise<EndpointContext> => {\n      return await new Promise(async (resolve, reject) => {\n        setTimeout(async () => {\n          await endpointContextRef.init();\n          if (config.abstract) {\n            throw new Error(`Abstract context can not be initialized`);\n          }\n          await endpointContextRef.initEntities();\n          await endpointContextRef.initSubscribers();\n          await endpointContextRef.initDatabaseConnection();\n\n\n\n\n\n          endpointContextRef.initMetadata();\n          endpointContextRef.startServer();\n\n          endpointContextRef.writeActiveRoutes();\n\n\n          await endpointContextRef.initClasses();\n          let keepWebsqlDbDataAfterReload = false;\n\n          keepWebsqlDbDataAfterReload =\n            FiredevAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n          if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {\n            Helpers.info(`[firedev] Keep websql data after reload`);\n          } else {\n            await endpointContextRef.reinitControllers();\n          }\n          resolve(endpointContextRef);\n        });\n      });\n    },\n\n  };\n  return res;\n};\n\n\n ;({}); // @--end-of-file-for-module=firedev lib/create-context.ts","\n\nimport { createContext } from '../create-context';\nimport { BaseRepository } from './base-repository';\n\nconst BaseContext = createContext(() => ({\n  contextName: 'BaseContext',\n  abstract: true,\n  repositories: {\n    // @ts-ignore\n    BaseRepository,\n  },\n}));\n\nexport { BaseContext };\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-context.ts","\n\nimport {   EntitySubscriberInterface,   RecoverEvent,   SoftRemoveEvent,   InsertEvent,   TransactionStartEvent,   TransactionCommitEvent,   TransactionRollbackEvent,   RemoveEvent,   UpdateEvent, } from 'firedev-typeorm/websql';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { FiredevSubscriber } from '../decorators/classes/subscriber-decorator';\n\n@FiredevSubscriber({\n  className: 'BaseSubscriber',\n})\nexport abstract class BaseSubscriber<Entity = any> extends BaseInjector {\n  protected __trigger_event__(eventName: keyof Entity) {\n    const ctx = this.__endpoint_context__;\n    console.log('Trigger event', eventName, ctx);\n\n  }\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base-subscriber.ts","\n\nimport * as controller from './base-controller';\nimport * as crudController from './base-crud-controller';\nimport * as entity from './base-entity';\nimport * as abstractEntity from './base-abstract-entity';\nimport * as repository from './base-repository';\nimport * as provider from './base-provider';\nimport * as baseclass from './base-class';\nimport * as baseContext from './base-context';\nimport * as baseSubscriber from './base-subscriber';\nimport * as baseSubscriberEntity from './base-subscriber-for-entity';\nexport namespace Base {\n  export import Controller = controller.BaseController;\n  export import CrudController = crudController.BaseCrudController;\n  export import Entity = entity.BaseEntity;\n  export import AbstractEntity = abstractEntity.BaseAbstractEntity;\n  export import Provider = provider.BaseProvider;\n  export import Class = baseclass.BaseClass;\n  export import Repository = repository.BaseRepository;\n  export import Subscriber = baseSubscriber.BaseSubscriber;\n  export import SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;\n  export const Context = baseContext.BaseContext;\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/base-classes/base.ts","\n\nimport { Mapping } from 'ng2-rest/websql';\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { Symbols } from '../../symbols';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\n\nimport { Entity as TypeormEntity, Tree } from 'firedev-typeorm/websql';\n\n\nexport function FiredevEntity<T = any>(options?: FiredevEntityOptions<T>) {\n  return function (constructor: Function) {\n    options = options || ({} as any);\n    options.uniqueKeyProp = options.uniqueKeyProp || ('id' as any);\n    ClassHelpers.setName(constructor, options?.className);\n\n    Mapping.DefaultModelWithMapping<T>(\n      options?.defaultModelValues || {},\n      _.merge(\n        options?.defaultModelMapping || {},\n        (options?.defaultModelMappingDeep || {}) as any,\n      ),\n    )(constructor);\n\n\n    Mapping.DefaultModelWithMapping<T>(void 0, {})(constructor);\n\n    Reflect.defineMetadata(\n      Symbols.metadata.options.entity,\n      options,\n      constructor,\n    );\n    Reflect.defineMetadata(\n      Symbols.metadata.className,\n      options?.className || constructor.name,\n      constructor,\n    );\n\n    TypeormEntity(options?.className)(constructor);\n\n    CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest\n  };\n}\n\nexport class FiredevEntityOptions<T = any> extends Models.DecoratorAbstractOpt {\n  /**\n   * default unique property is \"id\"\n   * for your entity it may be something else\n   */\n  uniqueKeyProp?: string;\n  createTable?: boolean;\n  defaultModelValues?: Mapping.ModelValue<T>;\n  defaultModelMapping?: Mapping.Mapping<T>;\n  defaultModelMappingDeep?: { [lodashPathes: string]: string | [string] };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/classes/entity-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function FiredevProvider<T = any>(options?: FiredevProviderOptions<T>) {\n  return function (constructor: Function) {\n    Reflect.defineMetadata(\n      Symbols.metadata.options.provider,\n      options,\n      constructor,\n    );\n    Reflect.defineMetadata(\n      Symbols.metadata.className,\n      options?.className || constructor.name,\n      constructor,\n    );\n    ClassHelpers.setName(constructor, options?.className || constructor.name);\n  };\n}\n\nexport class FiredevProviderOptions<\n  T = any,\n> extends Models.DecoratorAbstractOpt {\n\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/decorators/classes/provider-decorator.ts","\n\n\nimport { inject as angularInject } from '@angular/core';\n\nimport { Symbols } from './symbols';\nimport type { EndpointContext } from './endpoint-context';\nimport type { BaseInjector } from './base-classes/base-injector';\nimport { Observable, Subject } from 'rxjs';\nimport type { BaseClass } from './base-classes/base-class';\n\nexport const inject = <T>(entity: () => new (...args: any[]) => T): T => {\n  return new Proxy(\n    {},\n    {\n      get: (_, propName) => {\n        if (propName === 'hasOwnProperty') {\n          return () => false;\n        }\n\n        const ctor = entity();\n        const contextFromClass = ctor[\n          Symbols.ctxInClassOrClassObj\n        ] as EndpointContext;\n        const resultContext = contextFromClass;\n        if (resultContext) {\n          let instance = resultContext.inject(ctor) as BaseInjector;\n\n\n          if (propName === 'getOriginalPrototype') {\n            return () => Object.getPrototypeOf(instance);\n          }\n          if (propName === 'getOriginalConstructor') {\n            return () => instance.constructor;\n          }\n\n          const methods = ctor[Symbols.classMethodsNames] || [];\n          const isMethods = methods.includes(propName);\n\n          const methodOrProperty = isMethods\n            ? instance[propName].bind(instance)\n            : instance[propName];\n\n\n\n\n\n          return methodOrProperty;\n        }\n\n\n        return angularInject(ctor)[propName];\n\n      },\n    },\n  ) as T;\n};\n\nexport const injectController = inject;\n\nexport type SubscbtionEvent<T> = {\n  name: keyof T;\n  data: any;\n};\n\nexport const injectSubscriberEvents = <T>(\n  subscriberClassResolveFn: () => new (...args: any[]) => T,\n  eventName: keyof T,\n): Observable<SubscbtionEvent<T>> => {\n  const eventsSrc = new Subject<SubscbtionEvent<T>>();\n  const obs = eventsSrc.asObservable();\n\n  let isFirstSubscription = true;\n\n  const proxiedObservable = new Proxy(obs, {\n    get(target, prop, receiver) {\n      if (prop === 'subscribe') {\n        return (...args: any[]) => {\n          if (isFirstSubscription) {\n            isFirstSubscription = false;\n            const subscriberClassFN: typeof BaseClass =\n              subscriberClassResolveFn() as any;\n            const ctx = subscriberClassFN[\n              Symbols.ctxInClassOrClassObj\n            ] as EndpointContext;\n            if (!ctx) {\n              throw new Error(\n                `You are trying to inject class without context. Use context like this;\n\n              Firedev.injectSubscriberEvents( ()=> ` +\n                  `MyContext.getInstance(${subscriberClassFN?.name}), '${eventName as any}' )\n\n\n              `,\n              );\n            }\n            const subscriberInstance = ctx.getInstanceBy(subscriberClassFN);\n\n\n            console.log('First subscription, you can access arguments here:', {\n              subscriberClassFN,\n              eventName,\n            });\n\n          }\n          return target.subscribe(...args);\n        };\n      }\n      return Reflect.get(target, prop, receiver);\n    },\n  });\n\n  return proxiedObservable as Observable<SubscbtionEvent<T>>;\n};\n\n ;({}); // @--end-of-file-for-module=firedev lib/inject.ts","\n\nexport type FiredevEntityKeysToOmit =\n  | 'ctrl'\n  | 'clone'\n  | '__endpoint_context__'\n  | 'inject'\n  | '_';\n\n ;({}); // @--end-of-file-for-module=firedev lib/constants.ts","\n\nimport 'reflect-metadata';\nimport * as http from './decorators/http/http-decorators';\nimport * as base from './base-classes/base';\nimport * as controllerDecorator from './decorators/classes/controller-decorator';\nimport * as entityDecorator from './decorators/classes/entity-decorator';\nimport * as providerDecorator from './decorators/classes/provider-decorator';\nimport * as repositoryDecorator from './decorators/classes/repository-decorator';\nimport * as subscriberDecorator from './decorators/classes/subscriber-decorator';\nimport * as createContextFn from './create-context';\nimport * as orm from './orm';\nimport * as models from './models';\nimport * as coreHelpers from 'tnp-core/websql';\nimport * as injectFn from './inject';\nimport * as endpointContext from './endpoint-context';\nimport * as allSymbols from './symbols';\nimport * as getResponse from './get-response-value';\n\nimport { NgZone } from '@angular/core';\n\n\n\nexport { BaseRepository } from './base-classes/base-repository';\nexport { BaseController } from './base-classes/base-controller';\nexport { BaseProvider } from './base-classes/base-provider';\nexport { BaseSubscriber } from './base-classes/base-subscriber';\nexport { BaseEntity } from './base-classes/base-entity';\nexport { BaseContext } from './base-classes/base-context';\nexport { createContext } from './create-context';\nexport { inject } from './inject';\nexport { Models } from './models';\nexport * from './constants';\nexport { ClassHelpers } from './helpers/class-helpers';\n\n\nexport namespace Firedev {\n  export import Response = models.Models.Http.Response;\n  export import Http = http.Http;\n  export import Base = base.Base;\n  export import Orm = orm.Orm;\n\n  export const getResponseValue = getResponse.getResponseValue;\n\n\n  export import Controller = controllerDecorator.FiredevController;\n  export import Entity = entityDecorator.FiredevEntity;\n  export import Provider = providerDecorator.FiredevProvider;\n  export import Repository = repositoryDecorator.FiredevRepository;\n  export import Subscriber = subscriberDecorator.FiredevSubscriber;\n\n\n  /**\n   * @deprecated\n   */\n  export const isBrowser = coreHelpers.Helpers.isBrowser;\n  /**\n   * @deprecated\n   */\n  export const isNode = coreHelpers.Helpers.isNode;\n  /**\n   * @deprecated\n   */\n  export const isWebSQL = coreHelpers.Helpers.isWebSQL;\n  /**\n   * @deprecated\n   */\n  export const isElectron = coreHelpers.Helpers.isElectron;\n\n  export const createContext = createContextFn.createContext;\n\n  export const inject = injectFn.inject;\n\n\n\n\n  export const initNgZone = (ngZone: NgZone) => {\n    endpointContext.EndpointContext.initNgZone(ngZone);\n  };\n\n\n  export const symbols = allSymbols.Symbols;\n\n  /**\n   * @deprecated\n   * use createContext instead\n   */\n  export const init = async (options: {\n    host: string;\n    entities: Function[];\n    controllers: Function[];\n  }) => {\n    const BaseContext = (await import('./base-classes/base-context'))\n      .BaseContext;\n    const context = createContext(() => ({\n      contextName: 'default',\n      host: options.host,\n      contexts: { BaseContext },\n      database: true,\n      entities: Array.from(options.entities) as any,\n      controllers: Array.from(options.controllers) as any,\n    }));\n\n    await context.initialize();\n    return context;\n  };\n}\n\n ;({}); // @--end-of-file-for-module=firedev lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ModelsNg2Rest","methods.GET","methods.POST","methods.PUT","methods.DELETE","methods.PATCH","methods.HEAD","params.Query","params.Path","params.Body","params.Cookie","params.Header","EntityDecorator","ENV","IoIpcStrategy","TypeormEntity","controller.BaseController","crudController.BaseCrudController","entity.BaseEntity","abstractEntity.BaseAbstractEntity","provider.BaseProvider","baseclass.BaseClass","repository.BaseRepository","baseSubscriber.BaseSubscriber","baseSubscriberEntity.BaseSubscriberForEntity","baseContext.BaseContext","angularInject","http.Http","base.Base","orm.Orm","getResponse.getResponseValue","controllerDecorator.FiredevController","entityDecorator.FiredevEntity","providerDecorator.FiredevProvider","repositoryDecorator.FiredevRepository","subscriberDecorator.FiredevSubscriber","createContextFn.createContext","injectFn.inject","endpointContext.EndpointContext","allSymbols.Symbols"],"mappings":";;;;;;;;;;;;;;;;;;;AAMM,IAAW,OAAO,CAoGvB;AApGD,CAAA,UAAiB,OAAO,EAAA;IACT,OAAoB,CAAA,oBAAA,GAAG,MAAM,EAAE,CAAC;AAChC,IAAA,OAAA,CAAA,uBAAuB,GAAW,MAAM,CAAC,uBAAuB,CAAC;IACjE,OAA2B,CAAA,2BAAA,GAAW,mBAAmB,CAAC;IAC1D,OAAY,CAAA,YAAA,GAAW,eAAe,CAAC;IACvC,OAAqB,CAAA,qBAAA,GAAW,4BAA4B,CAAC;IAC7D,OAAiB,CAAA,iBAAA,GAAW,uBAAuB,CAAC;AAEpD,IAAA,OAAA,CAAA,QAAQ,GAAG;QACtB,SAAS,EAAE,CAAC,WAAmB,KAAK,CAAA,EAAG,WAAW,CAAqB,mBAAA,CAAA;QACvE,YAAY,CAAC,WAAmB,EAAE,SAAiB,EAAA;AACjD,YAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,SAAS,EAAE,CAAC;SACrD;AACD;;;;;AAKG;AACH,QAAA,SAAS,EAAE;YAET,MAAM,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC7C,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAmB,gBAAA,EAAA,WAAW,EAAE,CAAC;aACvD;AACD;;AAEG;AACH,YAAA,gBAAgB,CACd,WAAmB,EACnB,SAAiB,EACjB,YAAoB,EAAA;AAEpB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,YAAY,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aACpF;AACD,YAAA,aAAa,CACX,WAAmB,EACnB,SAAiB,EACjB,QAAyB,EAAA;AAEzB,gBAAA,OAAO,CAAG,EAAA,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC;aAChF;AACD,YAAA,sBAAsB,CACpB,WAAmB,EACnB,SAAiB,EACjB,QAAgB,EAChB,QAAyB,EAAA;gBAEzB,OAAO,CAAA,EAAG,WAAW,CAAQ,KAAA,EAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAG,EAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,EAAG,QAAQ,CAAE,CAAA,CAAC,WAAW,EAAE,CAAC;aACxG;AAED,YAAA,SAAS,EAAE;gBACT,MAAM,EAAE,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA+B,6BAAA,CAAA;gBAC7E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA4B,0BAAA,CAAA;gBACvF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAoC,kCAAA,CAAA;AACzG,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,MAAM,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAiC,+BAAA,CAAA;gBAC9E,oBAAoB,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAA8B,4BAAA,CAAA;gBACzF,6BAA6B,EAAC,CAAC,WAAkB,KAAK,CAAA,EAAG,WAAW,CAAsC,oCAAA,CAAA;AAC3G,aAAA;AACF,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,QAAQ,GAAG;AACtB,QAAA,SAAS,EAAE,CAAgB,cAAA,CAAA;AAC3B,QAAA,OAAO,EAAE;AACP,YAAA,iBAAiB,EAAE,CAA4B,0BAAA,CAAA;AAC/C,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,gBAAgB,EAAE,CAA2B,yBAAA,CAAA;AAC7C,YAAA,MAAM,EAAE,CAAgB,cAAA,CAAA;AACxB,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AAChC,YAAA,QAAQ,EAAE,CAAkB,gBAAA,CAAA;AAC5B,YAAA,UAAU,EAAE,CAAoB,kBAAA,CAAA;AACjC,SAAA;KACF,CAAC;AAEW,IAAA,OAAA,CAAA,GAAG,GAAG;QACjB,eAAe,EAAE,MAAM,EAAE;AACzB,QAAA,OAAO,EAAE,CAAiB,eAAA,CAAA;QAC1B,wBAAwB,EAAE,MAAM,EAAE;QAClC,8BAA8B,EAAE,MAAM,EAAE;QACxC,6BAA6B,EAAE,MAAM,EAAE;QACvC,4BAA4B,EAAE,MAAM,EAAE;AAEtC,QAAA,aAAa,EAAE,CAAe,aAAA,CAAA;AAC9B,QAAA,yBAAyB,EAAE,CAAiB,eAAA,CAAA;AAC5C,QAAA,gCAAgC,EAAE,CAAiB,eAAA,CAAA;AACnD,QAAA,qBAAqB,EAAE,CAAe,aAAA,CAAA;AACtC,QAAA,iCAAiC,EAAE,CAAc,YAAA,CAAA;AACjD,QAAA,kCAAkC,EAAE,CAAe,aAAA,CAAA;AACnD,QAAA,oBAAoB,EAAE,CAA0B,wBAAA,CAAA;AAChD,QAAA,uBAAuB,EAAE,CAA0B,wBAAA,CAAA;AACnD,QAAA,UAAU,EAAE,CAAsB,oBAAA,CAAA;AAClC,QAAA,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,EAAE;AACtB,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,gBAAgB,EAAE,CAA6F,2FAAA,CAAA;AAChH,SAAA;KACF,CAAC;AACJ,CAAC,EApGgB,OAAO,KAAP,OAAO,GAoGvB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvGD,IAAW,UAAU,CA+F1B;AA/FD,CAAA,UAAiB,UAAU,EAAA;AAEZ,IAAA,UAAA,CAAA,kBAAkB,GAAG,CAAC,SAAS,EAAE,MAAgB,KAAI;QAChE,UAAU,CAAC,MAAK;AAEd,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC5B,MAAM,CAAA;;;;;;;;;;;;;;;;SAgBL,CAAC;aACH;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;AAC5D,KAAC,CAAC;AAIW,IAAA,UAAA,CAAA,mCAAmC,GAAG,CACjD,OAA8B,EAC9B,OAA4B,KAC1B;QACF,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO;SACR;AACD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,YAAA,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,EAAE;gBACtE,MAAM,IAAI,KAAK,CAAC,CAAA;;;YAGZ,CAAC,CAAC,UAAU,CAAA,YAAA,EAAe,CAAC,CAAC,IAAI,CAAA,qBAAA,EAAwB,CAAC,CAAC,YAAY,IAAI,mBAAmB,CAAA;YAC9F,OAAO,CAAC,UAAU,CAAe,YAAA,EAAA,OAAO,CAAC,IAAI,CAAA,oBAAA,EAAuB,OAAO,CAAC,YAAY,CAAA;;;;AAI3F,QAAA,CAAA,CAAC,CAAC;aACJ;SACF;AACH,KAAC,CAAC;IAKW,UAAsB,CAAA,sBAAA,GAAG,CACpC,WAAkB,EAClB,QAAe,EACf,QAAe,EACf,YAAmB,KACjB;AACF,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YACtB,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACpD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAA;;;;GAIT,CAAC;SACC;AAED,QAAA,IACE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EACjD;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAA;;;;GAIT,CAAC;SACC;AACH,KAAC,CAAC;AAGW,IAAA,UAAA,CAAA,qBAAqB,GAAG,CAAC,KAAK,EAAE,EAAE,KAAI;AACjD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,CAAA,8BAAA,EAAiC,EAAE,CAAA,CAAE,CAAC;SAC7C;AACH,KAAC,CAAC;AACJ,CAAC,EA/FgB,UAAU,KAAV,UAAU,GA+F1B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/FD,IAAW,cAAc,CAgK9B;AAhKD,CAAA,UAAiB,cAAc,EAAA;AAEhB,IAAA,cAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,EAAE,WAAmB,KAAI;QACzD,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAG;AAC9B,YAAA,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,cAAA,CAAA,UAAU,GAAG,CAAC,CAAS,KAAI;AACtC,QAAA,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,KAAC,CAAC;IAIW,cAAiB,CAAA,iBAAA,GAAG,KAAK,IAAG;AACvC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,IAAI;gBACF,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,OAAO,CAAC,CAAC;aACV;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AAIW,IAAA,cAAA,CAAA,cAAc,GAAG,CAC5B,CAAiC,EACjC,iBAAsC,KACpC;QACF,IAAI,OAAO,iBAAiB,KAAK,QAAQ;AACvC,YAAA,OAAO,CAAG,EAAA,CAAC,CAAC,cAAc,GAAG,iBAAiB,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtE,QAAA,OAAO,GAAG,CAAC,CAAC,cAAc,CAAA,EAAG,iBAAiB,CAAC,IAAI,CAAE,CAAA,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,cAAW,CAAA,WAAA,GAAG,KAAK,IAAG;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;AAC3C,KAAC,CAAC;IAIW,cAAwB,CAAA,wBAAA,GAAG,CACtC,MAAc,EACd,MAAM,GAAG,KAAK,KACJ;QAEV,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,EAAE;gBACV,OAAO,CAAC,KAAK,CACX,CAAA;;AAEqC,6CAAA,EAAA,OAAO,MAAM,CAAA;SACnD,EACC,MAAM,CACP,CAAC;aACH;AAED,YAAA,OAAO,MAAM,CAAC;SACf;QAED,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,GAAG,KAAK,CAAC;aAChB;YAED,IAAI,MAAM,EAAE;AACV,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,eAAA,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aACtD;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,GAAG,CAAC;AACb,KAAC,CAAC;IAIW,cAAmB,CAAA,mBAAA,GAAG,QAAQ,IAAG;AAC5C,QAAA,OAAO,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzE,KAAC,CAAC;IAIW,cAAkB,CAAA,kBAAA,GAAG,CAChC,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,UAAU;AACV,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,cAAiB,CAAA,iBAAA,GAAG,CAC/B,MAAgB,EAChB,YAAiC,EACjC,WAAmB,KACjB;QACF,OAAO;YACL,SAAS;AACT,YAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAC5B,YAAA,YAAY,CAAC,UAAU;AACvB,YAAA,YAAY,CAAC,IAAI;YACjB,WAAW;AACZ,SAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,KAAC,CAAC;IAIW,cAAW,CAAA,WAAA,GAAG,OAAO,IAAG;AACnC,QAAA,MAAM,QAAQ,GAAqB;AACjC,YAAA,MAAM,CAAC,MAAW,EAAA;gBAEhB,OAAO;AACL,oBAAA,IAAI,CAAC,IAAS,EAAA;qBAEb;iBACF,CAAC;aACH;YACD,SAAS,CAAC,GAAW,EAAE,KAAU,EAAA;AAE/B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;SACF,CAAC;QACF,MAAM,OAAO,GAAoB,EAAE,CAAC;AACpC,QAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,KAAC,CAAC;AAEJ,CAAC,EAhKgB,cAAc,KAAd,cAAc,GAgK9B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC/JP;AACA;AAGM,IAAW,aAwQhB;AAxQD,CAAA,UAAiB,YAAY,EAAA;AAE3B;;AAEG;AACU,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,IAAY,KAAI;AACnD,QAAA,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ;cACxD,CAAC,CAAC,WAAW;cACb,KAAK,CAAC,CAAC;AACb,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,eAAoB,KAAY;AAEtD,QAAA,IAAI,eAAe,YAAY,QAAQ,EAAE;AACvC,YAAA,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0CAAA,CAA4C,CAAC,CAAC;SAC/D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC/C,cAAE,eAAe,CAAC,OAAO,CAAC,uBAAuB,CAAC;cAChD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACjE,YAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B;AACJ,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,eAAe,GAAG,CAAC,eAAoB,KAAS;QAC3D,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAC,CAAC;AAGW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CAAC,eAAoB,KAAY;QAGlE,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,CAAA,CAAE,CAAC,CAAC;SAC7D;AACD,QAAA,QACE,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;AACnD,cAAE,eAAe,CAAC,OAAO,CAAC,2BAA2B,CAAC;cACpD,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC;YACrE,KAAK,CAAC,EACN;AACJ,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,WAAW,GAAG,CAAC,eAAoB,KAAY;AAC1D,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;AAC3C,cAAE,eAAe;AACjB,cAAE,eAAe,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,CACgB,CAAC;QAC1B,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,GAAQ,KAAa;AACxD,QAAA,IACE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChB,YAAA,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACd,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EACpB;AACA,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,SAAS,GAAG,YAAA,CAAA,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACzD,KAAC,CAAC;AAKW,IAAA,YAAA,CAAA,OAAO,GAAG,CAAC,MAAgB,EAAE,SAAiB,KAAU;AAEnE,QAAA,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACjD,QAAA,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AACtD,KAAC,CAAC;IAIW,YAAsB,CAAA,sBAAA,GAAG,CACpC,MAAgB,EAChB,SAAiB,EACjB,OAAO,GAAG,EAAE,KACD;QACX,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,IACE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YACzB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,EAC/C;AAEA,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,YAAA,CAAA,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,mBAAmB,GAAG,CACjC,MAAgB,KACuB;AACvC,QAAA,MAAM,oBAAoB,GAA6B,OAAO,CAAC,WAAW,CACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,MAAM,CACP,CAAC;AACF,QAAA,MAAM,aAAa,GAA4B,CAAC,CAAC,KAAK,CACpD,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAC7B,oBAAoB,CACrB,CAAC;QAGF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,YAAA,MAAM,cAAc,GAAwB,OAAO,CAAC,WAAW,CAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,EACN,UAAU,CACX,CAAC;YAEF,IAAI,cAAc,EAAE;AAClB,gBAAA,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC;aACpD;SACF;AACD,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC;AAMF,IAAA,MAAM,sBAAsB,GAAG;QAC7B,QAAQ;QACR,MAAM;QACN,WAAW;QACX,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,MAAM;QACN,UAAU;QACV,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,eAAe;QACf,sBAAsB;QACtB,SAAS;QACT,WAAW;QACX,gBAAgB;KACjB,CAAC;IAGW,YAAe,CAAA,eAAA,GAAG,CAC7B,oBAAyB,EACzB,eAAe,GAAG,EAAE,KACR;QACZ,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,eAAe,CAAC;SACxB;QAED,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,eAAe;AAC9B,cAAE,oBAAoB;AACtB,cAAE,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,eAAe;cAChC,oBAAiC,EAAE,SAAS;cAC7C,oBAAoB,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;AAEhE,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,aAAa,IAAI,EAAE,CAAC;AAClD,YAAA,GAAG,MAAM,CAAC,mBAAmB,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;AACnC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,UAAU;AACP,aAAA,MAAM,CAAC,UAAU,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC;AACrE,aAAA,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,QAAA,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ,CAAC,WAAW;AACrB,YAAA,QAAQ,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,EACxC;AACA,YAAA,OAAO,eAAe,CAAC;SACxB;AACD,QAAA,OAAO,YAAA,CAAA,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;AAC3E,KAAC,CAAC;IAIW,YAAoB,CAAA,oBAAA,GAAG,CAClC,MAAgB,EAChB,UAAqC,EAAE,EACvC,YAAuB,KACa;QACpC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAA,wEAAA,EAA2E,MAAM,CAAA,CAAE,CAAC;SAC3F;AAED,QAAA,IAAI,MAAsC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5E,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;AAErE,QAAA,MAAM,GAAG,YAAA,CAAA,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAErC,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErB,QAAA,OAAO,aAAa;cAChB,aAAA,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;cAClD,OAAO,CAAC;AACd,KAAC,CAAC;AAIW,IAAA,YAAA,CAAA,oBAAoB,GAAG,CAAC,MAAgB,KAAI;AACvD,QAAA,MAAM,OAAO,GAAG,YAAA,CAAA,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,aAAA,OAAO,EAAE;aACT,GAAG,CAAC,EAAE,IAAG;YACR,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBACtC,OAAO,EAAE,CAAC,IAAI,CAAC;aAChB;YACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,SAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAA,EAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;AACrE,KAAC,CAAC;AAEJ,CAAC,EAxQgB,YAAY,KAAZ,YAAY,GAwQ5B,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnRP;AACA;AAOM,IAAW,OAoRhB;AApRD,CAAA,UAAiB,MAAM,EAAA;AAQrB,IAAA,IAAY,SAMX,CAAA;AAND,IAAA,CAAA,UAAY,SAAS,EAAA;AACnB,QAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,QAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,QAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,KAAC,EANW,SAAS,GAAT,MAAS,CAAA,SAAA,KAAT,gBAAS,GAMpB,EAAA,CAAA,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA,YAAY,GAAG;AAC1B,QAAA,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU;AAC9B,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;AACrC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,cAAc;AACtC,QAAA,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACjC,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa;KAGtC,CAAC;AA4GF,IAAA,MAAa,oBAAoB,CAAA;AAEhC,KAAA;AAFY,IAAA,MAAA,CAAA,oBAAoB,uBAEhC,CAAA;AAID,IAAA,MAAa,WAAW,CAAA;AAMvB,KAAA;AANY,IAAA,MAAA,CAAA,WAAW,cAMvB,CAAA;AAID,IAAA,MAAa,YAAY,CAAA;AAAzB,QAAA,WAAA,GAAA;YAoBE,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;SACvD;AAAA,KAAA;AArBY,IAAA,MAAA,CAAA,YAAY,eAqBxB,CAAA;IAID,MAAa,gBAAiB,SAAQ,oBAAoB,CAAA;AAA1D,QAAA,WAAA,GAAA;;YAIE,IAAO,CAAA,OAAA,GAA2C,EAAE,CAAC;SACtD;AAAA,KAAA;AALY,IAAA,MAAA,CAAA,gBAAgB,mBAK5B,CAAA;IAID,MAAa,uBAAwB,SAAQ,gBAAgB,CAAA;AAG5D,KAAA;AAHY,IAAA,MAAA,CAAA,uBAAuB,0BAGnC,CAAA;AAID,IAAA,IAAiB,IAAI,CAqFpB;AArFD,IAAA,CAAA,UAAiB,IAAI,EAAA;QACL,IAAI,CAAA,IAAA,GAAGA,QAAa,CAAC;AA+CnC,QAAA,MAAa,MAAM,CAAA;YAKjB,WACS,CAAA,OAAe,EACd,IAAA,GAA+B,GAAG,EAAA;gBADnC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;gBACd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA8B;gBANrC,IAAQ,CAAA,QAAA,GAAG,MAAa;oBAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,iBAAC,CAAC;aAKE;AAEI,YAAA,OAAO,MAAM,CACnB,OAAe,EACf,OAA+B,GAAG,EAAA;AAElC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAClC;YAEM,OAAO,cAAc,CAAC,MAAiB,EAAA;AAC5C,gBAAA,OAAO,MAAM,CAAC,MAAM,CAClB,CAAU,OAAA,EAAA,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,UAAA,CAAY,CACnD,CAAC;aACH;AAEM,YAAA,OAAO,MAAM,CAClB,OAAe,EACf,OAA+B,GAAG,EAAA;gBAElC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACrC;AACF,SAAA;AA7BY,QAAA,IAAA,CAAA,MAAM,SA6BlB,CAAA;AAQH,KAAC,EArFgB,IAAI,GAAJ,MAAI,CAAA,IAAA,KAAJ,WAAI,GAqFpB,EAAA,CAAA,CAAA,CAAA;AAEH,CAAC,EApRgB,MAAM,KAAN,MAAM,GAoRtB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC7RP,MAAM,OAAO,GAAG,CACd,MAAmC,EACnC,IAAY,EACZ,MAAgB,EAChB,WAAmB,EACnB,UAA8B,EAC9B,aAAmD,EACnD,YAAqB,KACnB;AACF,IAAA,IAAI,OAAoC,CAAC;AACzC,IAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;QACrC,OAAO,GAAG,aAAa,CAAC;AACxB,QAAA,aAAa,GAAG,OAAO,CAAC,IAAW,CAAC;AACpC,QAAA,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;AACL,QAAA,OAAO,GAAG,EAAE,aAAa,EAAE,YAAY,EAAS,CAAC;KAClD;AAED,IAAA,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAE7D,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC;AACtC,IAAA,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,sBAAsB,GAAG,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;YACzC,IAAI,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,IACE,OAAO,CAAC,SAAS,KAAK,MAAM;AAC5B,oBAAA,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC7B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACnC;oBACA,sBAAsB,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAA,CAAE,CAAC;iBACzE;aACF;SACF;QACD,YAAY,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,WAAW,CAAG,EAAA,sBAAsB,EAAE,CAAC;KAChE;SAAM;AACL,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,IAAA,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;AACnC,IAAA,YAAY,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAC/C,IAAA,YAAY,CAAC,YAAY,GAAG,mBAAmB,CAAC;AAChD,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC,CAAC;SASc,GAAG,CACjB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,MAAM,EACN,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,GAAG,CACjB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,KAAK,EACL,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,KAAK,CACnB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,OAAO,EACP,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CACpB,aAAoD,EACpD,YAAY,GAAG,KAAK,EAAA;AAEpB,IAAA,OAAO,UACL,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;AAE9B,QAAA,OAAO,CACL,QAAQ,EACR,aAAuB,EACvB,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5MP,SAAS,SAAS,CAChB,KAAiC,EACjC,IAAY,EACZ,MAAc,EACd,YAAY,GAAG,SAAS,EACxB,MAAgB,EAChB,WAA4B,EAC5B,cAAsB,EAAA;IAEtB,IAAI,YAAY,GAAwB,OAAO,CAAC,WAAW,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;IACF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;KACH;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACpC,IAAA,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CACpE,OAAO,CACR;AACC,UAAE,IAAI,MAAM,CAAC,WAAW,EAAE;UACxB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,IAAA,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;AACzB,IAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;AACnB,IAAA,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AACpB,IAAA,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC;AAC7B,IAAA,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC;AAC3B,IAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EACzC,YAAY,EACZ,MAAM,CAAC,WAAW,EAClB,WAAW,CACZ,CAAC;AAEJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAY,EAAA;AAC/B,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,KAAK,CAAC,IAAa,EAAA;AACjC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,OAAO,EACP,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;SAEe,MAAM,CAAC,IAAY,EAAE,iBAAyB,IAAI,EAAA;AAChE,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,MAAM,CAAC,IAAa,EAAA;AAClC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,EAAE,EACF,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,IAAI,CAAC,IAAa,EAAA;AAChC,IAAA,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB,EAAA;AAEtB,QAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC9E,KAAC,CAAC;AACJ,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtHD,IAAW,IAAI,CAcpB;AAdD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AACpB,IAAA,IAAA,CAAA,GAAG,GAAGC,GAAW,CAAC;AAClB,IAAA,IAAA,CAAA,MAAM,GAAGC,MAAc,CAAC;AACxB,IAAA,IAAA,CAAA,KAAK,GAAGC,KAAa,CAAC;AACtB,IAAA,IAAA,CAAA,IAAI,GAAGC,IAAY,CAAC;AAClC,IAAA,IAAiB,KAAK,CAMrB;AAND,IAAA,CAAA,UAAiB,KAAK,EAAA;AACN,QAAA,KAAA,CAAA,KAAK,GAAGC,KAAY,CAAC;AACrB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,IAAI,GAAGC,IAAW,CAAC;AACnB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvB,QAAA,KAAA,CAAA,MAAM,GAAGC,MAAa,CAAC;AACvC,KAAC,EANgB,KAAK,GAAL,IAAK,CAAA,KAAA,KAAL,UAAK,GAMrB,EAAA,CAAA,CAAA,CAAA;AACH,CAAC,EAdgB,IAAI,KAAJ,IAAI,GAcpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACfD,SAAU,iBAAiB,CAAC,OAAkC,EAAA;AAClE,IAAA,OAAO,UAAU,WAAqB,EAAA;QACpC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,wBAAyB,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AASxE,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCtBM,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;AAuHE;;AAEG;QACO,IAAwB,CAAA,wBAAA,GAAG,EAA2B,CAAC;KAkIlE;AAjPC;;;AAGG;AACH,IAAA,MAAM,CAAC,GAAA;AACL,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAClD,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;AAID;;AAEG;AACH,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAoB,CAAC;KAC9D;AAMD;;AAEG;AACH,IAAA,UAAU,CAAI,aAAwC,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,uBAAuB,EAAE,gBAAgB;AACzC,YAAA,2BAA2B,EAAE,CAAC,MAAM,aAAa,CAAC;AACnD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAgB,CAAC;KACzB;AAID,IAAA,sBAAsB,CACpB,oBAA+C,EAAA;AAE/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAI,oBAAoB,EAAE;AACvD,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,2BAA2B,EAAE;AAC3B,gBAAA,MAAM,oBAAoB,CAAC,SAAS,CAAC,oBAAoB,EAAE;AAC5D,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID;;AAEG;AACH,IAAA,gBAAgB,CAAI,oBAA+C,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAI,oBAAoB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC;AACrD,QAAA,OAAO,SAAS,CAAC;KAClB;AAID,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAKD;;AAEG;AACH,IAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;AAEG;AACH,IAAA,UAAU,CAAI,IAA+B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAI,IAAI,CAAC,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,oBAAoB,CAAI,IAA+B,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AAID;;;AAGG;AACH,IAAA,qBAAqB,CAAI,IAA+B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;AASD;;;AAGG;IACK,QAAQ,CACd,IAA+B,EAC/B,OASC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAI;gBACpB,MAAM,gBAAgB,GACpB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBAE7C,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EACE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAW,SAAA,CAAA;4BACT,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;oBAED,MAAM,MAAM,GACV,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;0BACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,0BAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAGzB,oBAAA,OAAO,MAAM,CAAC;iBACf;aAIF;YACD,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC3B,MAAM,gBAAgB,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAoB,gBAAgB;AACrD,sBAAE,gBAAgB;AAClB,sBAAE,IAAI,CAAC,oBAAoB,CAAC;AAE9B,gBAAA,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACnC,MAAM,aAAa,GAAG,aAAa,CAAC,sBAAsB,CACxD,OAAO,CAAC,uBAAuB,CAChC,CAAC;oBACF,IAAI,GAAG,aAAoB,CAAC;iBAC7B;gBAED,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,QAAQ,GAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3C,wBAAA,GAAG,OAAO;wBACV,oBAAoB;AACrB,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,MAAM,oBAAoB,GACxB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1C,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,oBAAA,EAAuB,oBAAoB,CAAW,SAAA,CAAA;4BACpD,CAAa,UAAA,EAAA,QAAQ,EAAE,QAAQ,EAAE,CAAA,aAAA,EAAgB,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAA;;4BAGH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IACrC,CAAA;;AAEC,cAAA,CAAA,CACA,CAAC;qBACH;AACD,oBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;iBAC5B;AACD,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;AAMM,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnQA,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,YAAY,CAAA;AAC9C;;AAEG;IACH,iBAAiB,GAAA;QACf,OAAO,KAAK,CAAC,CAAC;KACf;EAGF;AATY,cAAc,GAAA,UAAA,CAAA;AAD1B,IAAA,iBAAiB,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACtC,CAAA,EAAA,cAAc,CAS1B,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;AAEG;AAEI,IAAe,kBAAkB,GAAjC,MAAe,kBAA2B,SAAQ,cAAc,CAAA;AAarE,IAAA,MAAM,CAAC,GAAA;QACL,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,iCAAA,EAAoC,YAAY,CAAC,OAAO,CACtD,IAAI,CACL,CAAgD,8CAAA,CAAA,CAClD,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YACjB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAChB,CAAC;AAC1B,YAAA,IAAI,YAAY,EAAE,WAAW,KAAK,KAAK,EAAE;AACvC,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,iBAAA,EAAoB,YAAY,CAAC,OAAO,CACtC,aAAa,CACd,CAAoD,kDAAA,CAAA,CACtD,CAAC;aACH;SACF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,CAAA,yCAAA,EAA4C,YAAY,CAAC,OAAO,CAC5E,IAAI,CACL,CAAA;;;;AAIO,YAAA,EAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;AAMjC,MAAA,CAAA,CAAC,CAAC;SACJ;AACD,QAAA,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;KACjB;AAKD,IAAA,eAAe,CACD,EAAmB,EACb,QAAgB,EACV,aAAsB,EAAA;AAG9C,QAAA,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAI;YACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtC,YAAA,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;gBACpB,OAAO;aACR;AACD,YAAA,UAAU,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5C,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5B,YAAA,IAAI,MAAW,CAAC;AAChB,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzC,gBAAA,MAAM,GAAI,KAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;aACjD;AAED,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;KAEH;IAKD,UAAU,CACa,aAAqB,CAAC,EACxB,WAAmB,EAAE,EACvB,SAAiB,EAAE,EAAA;AAGpC,QAAA,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAI;AACjC,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AAC5B,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,OAAO,EAAE,MAAM;iBAChB,CAAC;AAKF,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AAC9B,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC;AAC/B,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;AAEpC,gBAAA,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;AAGjD,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC,CAAC;gBAEH,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAUtD,gBAAA,OAAO,MAAkB,CAAC;aAC3B;AACD,YAAA,OAAO,EAAE,CAAC;AACZ,SAAC,CAAC;KAEH;IAKD,MAAM,GAAA;AAEJ,QAAA,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAI;AACjC,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;AAC5B,gBAAA,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;gBACtD,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC3D,gBAAA,OAAO,MAAM,CAAC;aACf;AACD,YAAA,OAAO,EAAE,CAAC;AACZ,SAAC,CAAC;KAEH;AAKD,IAAA,KAAK,CAAa,EAAmB,EAAA;QAEnC,OAAO,YAAW;YAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtC,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KAEH;IAKD,UAAU,CACI,EAAmB,EACvB,IAAY,EAAA;QAIpB,OAAO,YAAW;AAChB,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAW,CAAC,CAAC;AACxD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KAEH;IAKD,SAAS,CACK,EAAmB,EACvB,IAAY,EAAA;QAIpB,OAAO,YAAW;AAChB,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAW,CAAC,CAAC;AACxD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KAEH;AAKD,IAAA,UAAU,CAAS,KAAe,EAAA;QAEhC,OAAO,YAAW;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE;AAChD,gBAAA,OAAO,EAAE,CAAC;aACX;AACD,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;KAEH;AAKD,IAAA,UAAU,CAAa,EAAU,EAAA;QAE/B,OAAO,YAAW;YAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC3C,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KAEH;AAKD,IAAA,UAAU,CACK,GAAwB,EAAA;QAGrC,OAAO,YAAW;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;KAEH;AAKD,IAAA,MAAM,CAAS,IAAY,EAAA;QAEzB,OAAO,YAAW;YAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAW,CAAC,CAAC;AAChD,YAAA,OAAO,KAAe,CAAC;AACzB,SAAC,CAAC;KAEH;AAKD,IAAA,UAAU,CAAS,KAAa,EAAA;QAE9B,OAAO,YAAW;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAY,CAAC,CAAC;AACtD,YAAA,OAAO,MAAkB,CAAC;AAC5B,SAAC,CAAC;KAEH;CAEF,CAAA;AArMC,UAAA,CAAA;IADC,GAAG,CAAC,yBAAyB,CAAC;AAE5B,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;AACV,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAU,QAAA,CAAA,CAAC,CAAA;AAChB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,eAAe,CAAC,CAAA;;;;AAkBxB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;AAEH,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,YAAY,CAAC,CAAA;AACnB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,UAAU,CAAC,CAAA;AACjB,IAAA,OAAA,CAAA,CAAA,EAAA,KAAK,CAAC,QAAQ,CAAC,CAAA;;;;AAyCjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;;;;AAYL,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AACL,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOhB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,GAAG,CAAC,MAAM,CAAC;AAET,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;AAEX,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;IACV,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AASR,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,GAAG,EAAE;IACM,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAUjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,MAAM,CAAC;AACH,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAI,EAAA,CAAA,CAAC,CAAA;;;;AAOrB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;IADC,MAAM,CAAC,kBAAkB,CAAC;AAExB,IAAA,OAAA,CAAA,CAAA,EAAA,IAAI,CAAC,CAAK,GAAA,CAAA,CAAC,CAAA;;;;AAQb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACC,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AADC,IAAA,IAAI,EAAE;IACK,OAAA,CAAA,CAAA,EAAA,IAAI,EAAE,CAAA;;;;AAOjB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AA9PmB,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,iBAAiB,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AACjC,CAAA,EAAA,kBAAkB,CAgQvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCrRM,SAAS,CAAA;AAEpB;;;AAGG;IACH,MAAM,CAAC,GAAA,GAAK;AAIL,IAAA,KAAK,CAAC,QAAyB,EAAA;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE5E,QAAA,OAAO,MAAM,CAAC;KACf;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvBP,IAAIC,iBAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAGFA,iBAAe,GAAG,MAAM,CAAC;AAIlB,IAAe,UAAU,GAAzB,MAAe,UAKpB,SAAQ,SAAiB,CAAA;EAAG;AALR,UAAU,GAAA,UAAA,CAAA;AAD/B,IAAAA,iBAAe,EAAE;AACI,CAAA,EAAA,UAAU,CAKF,CAAA;AAE7B,CAAC;AAAA,CAAC,EAAE,EAAE;;AClBD,IAAW,GAAG,CAmEnB;AAnED,CAAA,UAAiB,GAAG,EAAA;AAEL,IAAA,GAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7B,IAAA,GAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAC5C,IAAA,IAAiB,WAAW,CAY3B;AAZD,IAAA,CAAA,UAAiB,WAAW,EAAA;AACZ,QAAA,WAAA,CAAA,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AAChC,QAAA,WAAA,CAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5B,QAAA,WAAA,CAAA,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAClC,QAAA,WAAA,CAAA,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AAChC,QAAA,WAAA,CAAA,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;AACxC,QAAA,WAAA,CAAA,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AAChC,QAAA,WAAA,CAAA,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAClC,QAAA,WAAA,CAAA,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AACpC,QAAA,WAAA,CAAA,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAClC,QAAA,WAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAC1C,QAAA,WAAA,CAAA,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAClD,KAAC,EAZgB,WAAW,GAAX,GAAW,CAAA,WAAA,KAAX,eAAW,GAY3B,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAiB,IAAI,CAGpB;AAHD,IAAA,CAAA,UAAiB,IAAI,EAAA;AACL,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AAC1C,KAAC,EAHgB,IAAI,GAAJ,GAAI,CAAA,IAAA,KAAJ,QAAI,GAGpB,EAAA,CAAA,CAAA,CAAA;AACD,IAAA,IAAiB,MAAM,CAgCtB;AAhCD,IAAA,CAAA,UAAiB,MAAM,EAAA;AACP,QAAA,MAAA,CAAA,SAAS,GAAG,KAAK,CAAC,sBAAsB,CAAC;AACzC,QAAA,MAAA,CAAA,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AAC9B,QAAA,MAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACpB,QAAA,MAAA,CAAA,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACpC,QAAA,MAAA,CAAA,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACpC,QAAA,MAAA,CAAA,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACpC,QAAA,MAAA,CAAA,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAEpC;;AAEG;QACU,MAAM,CAAA,MAAA,GAAG,MACpB,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpD,QAAA,MAAA,CAAA,MAAM,GAAG,MACpB,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpC,QAAA,MAAA,CAAA,aAAa,GAAG,MAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAGtC,QAAA,MAAA,CAAA,UAAU,GAAG,MACxB,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAO,CAAA,OAAA,GAAG,CAAC,YAAqB,KAC3C,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAI7C,QAAA,MAAA,CAAA,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AAC9B,QAAA,MAAA,CAAA,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AAC9C,KAAC,EAhCgB,MAAM,GAAN,GAAM,CAAA,MAAA,KAAN,UAAM,GAgCtB,EAAA,CAAA,CAAA,CAAA;AAED,IAAA,IAAiB,IAAI,CAGpB;AAHD,IAAA,CAAA,UAAiB,IAAI,EAAA;AACL,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AAC1C,KAAC,EAHgB,IAAI,GAAJ,GAAI,CAAA,IAAA,KAAJ,QAAI,GAGpB,EAAA,CAAA,CAAA,CAAA;AACD,IAAA,IAAiB,QAAQ,CAKxB;AALD,IAAA,CAAA,UAAiB,QAAQ,EAAA;AACT,QAAA,QAAA,CAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5B,QAAA,QAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC1B,QAAA,QAAA,CAAA,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAC9B,QAAA,QAAA,CAAA,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAC5C,KAAC,EALgB,QAAQ,GAAR,GAAQ,CAAA,QAAA,KAAR,YAAQ,GAKxB,EAAA,CAAA,CAAA,CAAA;AAEH,CAAC,EAnEgB,GAAG,KAAH,GAAG,GAmEnB,EAAA,CAAA,CAAA,CAAA;AAIA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpEP,IAAI,eAAe,GAAG,MAAK;AACzB,IAAA,OAAO,CAAC,MAAW,KAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAGF,eAAe,GAAG,MAAM,CAAC;AAIlB,IAAe,kBAAkB,GAAjC,MAAe,kBAEpB,SAAQ,UAAkB,CAAA;CAU3B,CAAA;AANC,UAAA,CAAA;AAFC,IAAA,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;;AAEZ,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKX,UAAA,CAAA;AAFC,IAAA,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;;AAEL,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAXI,kBAAkB,GAAA,UAAA,CAAA;AADvC,IAAA,eAAe,EAAE;AACI,CAAA,EAAA,kBAAkB,CAYvC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtBD,SAAU,iBAAiB,CAAC,OAAiC,EAAA;AACjE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACxD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,wBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAAG,CAAA;AAEvC,CAAC;AAAA,CAAC,EAAE,EAAE;;ACGP,MAAM,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC;AAGjC,IAAe,cAAc,GAA7B,MAAe,cAEpB,SAAQ,YAAY,CAAA;AAQpB,IAAA,WAAA,CAEU,sBAAiC,EAAA;AAEzC,QAAA,KAAK,EAAE,CAAC;QAFA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAW;;AAIzC,QAAA,IAAI,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;KACpD;AAMD,IAAA,IAAW,OAAO,GAAA;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,gBAAA,OAAO;AACP,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,8CAAA,EAAiD,YAAY,CAAC,OAAO,CACnE,IAAI,CACL,CAAE,CAAA,CACJ,CAAC;aACH;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CACb,CAAoD,iDAAA,EAAA,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAE,CAAA,CAC7F,CAAC;aACH;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;KAEvB;AAID,IAAA,IAAW,UAAU,GAAA;AAEnB,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC;KAE9C;AAOD,IAAA,IAAc,UAAU,GAAA;QAEtB,OAAO,IAAI,CAAC,YAAY,CAAC;KAE1B;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;AAEf,QAAA,OAAO,IAAI,EAAE,UAAU,EAAE,MAAa,CAAC;KAExC;AAED;;AAEG;AACH,IAAA,IAAc,IAAI,GAAA;QAEhB,OAAO,IAAI,CAAC,UAAU,CAAC;KAExB;AAED,IAAA,IAAW,gBAAgB,GAAA;AAEzB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;KAE5B;IAMD,MAAM,MAAM,CAAC,OAAa,EAAA;AAExB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;SACR;AACD,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,yCAAA,EAA4C,YAAY,CAAC,OAAO,CAC9D,IAAI,CACL,CAAE,CAAA,CACJ,CAAC;YACF,OAAO;SACR;AACD,QAAA,MAAM,GAAG,GAAoB,IAAI,CAAC,oBAAoB,CAAC;AACvD,QAAA,IAAI,GAAG,CAAC,UAAU,EAAE;YAClB,OAAO;SACR;AACD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAElC,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,CAAA;;AAEqB,yCAAA,EAAA,GAAG,CAAC,WAAW,CAAA;;;;;;;;;;;AAWjD,QAAA,CAAA,CAAC,CAAC;SACN;QAED,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,sCAAA,EAAyC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAE,CAAA,CACtE,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,YAAY,IAAI,MAAM,UAAU,CAAC,aAAa,CACjD,YAAY,CAAC,eAAe,CAAC,aAAa,CAAC,CAC5C,CAAQ,CAAC;KAOX;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,KAAK,CAAC,MAAc,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;AAID;;;AAGG;AACH,IAAA,MAAM,IAAI,CACR,IAAY,EACZ,OAEC,EAAA;QAGD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7C,QAAA,MAAM,EAAE,EAAE,EAAE,GAAG,KAAY,CAAC;AAE5B,QAAA,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAS;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KAEd;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,CACV,IAAY,EACZ,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACjC;AAED,IAAA,MAAM,QAAQ,CACZ,KAAe,EACf,OAEC,EAAA;QAGD,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,MAAM,CAAC;KAEf;AAED,IAAA,MAAM,UAAU,CACd,KAAe,EACf,OAEC,EAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACtC;AAiBD;;;AAGG;AAwCH;;AAEG;AACH,IAAA,KAAK,CAAC,eAAuB,EAAE,GAAG,WAAqB,EAAA;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;KACzD;AAID;;;;;;;;AAQG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtC;AAKD;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;AAE/C,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC1B,YAAA,UAAU,GAAI,UAAqB,CAAC,EAAE,CAAC;SACxC;QACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,YAAA,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAS;AACjC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEtC,QAAA,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC;AAC1B,QAAA,OAAO,aAAa,CAAC;KAEtB;AAED;;AAEG;IACH,MAAM,MAAM,CAAC,UAAoC,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAChC;AAED;;AAEG;IACH,MAAM,UAAU,CAAC,EAAmB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACxB;IACD,MAAM,UAAU,CACd,aAA2C,EAAA;AAG3C,QAAA,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,IAAG;AACrC,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAI,EAAa,CAAC,EAAE,GAAG,EAAE,CAAC;AACjD,SAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACzD,YAAA,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,MAAM,CAAC;KAEf;IAED,MAAM,UAAU,CAAC,GAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAC7B;AAgED;;AAEG;IACH,UAAU,CACR,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C;AA6BD;;AAEG;IACH,OAAO,CACL,MAAS,EACT,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;AACH,IAAA,MAAM,CACJ,MAAyE,EAAA;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACjC;IAID,MAAM,MAAM,CAAC,IAAY,EAAA;AAEvB,QAAA,MAAM,EAAE,EAAE,EAAE,GAAG,IAAW,CAAC;QAC3B,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAExC;AAED,IAAA,MAAM,UAAU,CAAC,EAAmB,EAAE,IAAY,EAAA;QAEhD,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IACE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC7B,CAAC,CAAC,CAAC,WAAW,CACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,CAChE,EACD;AACA,gBAAA,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAA,MAAM,GAAG,GAAW,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE;AAEzD,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAGxB,gBAAA,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CACpB;oBACE,EAAE;iBACI,EACR;oBACE,CAAC,GAAG,GAAG,KAAK;AACN,iBAAA,CACT,CAAC;aAMH;SACF;QACD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,KAAK,EAAE,EAAE,EAAE,EAAS;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KAEd;IACD,MAAM,UAAU,CAAC,KAAe,EAAA;QAE9B,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,YAAA,MAAM,EAAE,EAAE,EAAE,GAAG,IAAW,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QACD,OAAO,EAAE,MAAM,EAAE,CAAC;KAEnB;AA8BD;;;;AAIG;IACH,MAAM,CACJ,gBAEoC,EACpC,sBAAwD,EAAA;QAExD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;KACnE;AAID;;;;;AAKG;AACH,IAAA,UAAU,CACR,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACvC;AAID;;;;;AAKG;AACH,IAAA,OAAO,CACL,QAS4B,EAAA;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACpC;AAID;;;AAGG;AACH,IAAA,KAAK,CAAC,OAAiC,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CACL,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjC;AAID;;AAEG;AACH,IAAA,IAAI,CAAC,OAAiC,EAAA;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;AAID;;AAEG;AACH,IAAA,MAAM,CACJ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;;AAgBD;;;;AAIG;AACH,IAAA,YAAY,CAAC,OAAiC,EAAA;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KACxC;AAID;;;;AAIG;AACH,IAAA,cAAc,CACZ,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AAID;;;;;;;;;AASG;AACH,IAAA,SAAS,CAAC,GAAU,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KACjC;AAID;;;AAGG;AACH,IAAA,OAAO,CAAC,OAA+B,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC;AAID;;;AAGG;AACH,IAAA,SAAS,CACP,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACnC;AAID;;;;;;;;;AASG;AACH,IAAA,WAAW,CACT,EAA0B,EAAA;QAG1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KAClC;AAID;;;AAGG;AACH,IAAA,aAAa,CAAC,OAA+B,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACzC;AAID;;;AAGG;AACH,IAAA,eAAe,CACb,KAA4D,EAAA;QAE5D,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACzC;AAID;;;AAGG;IACH,KAAK,CAAC,KAAa,EAAE,UAAkB,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAC3C;AAID;;;;;AAKG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KAC1B;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,SAAS,CACP,UAAoC,EACpC,YAAoB,EACpB,KAAsB,EAAA;AAEtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;AAID;;AAEG;AACH,IAAA,MAAM,MAAM,GAAA;QAOV,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAGtC,QAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;KAE/B;IAID,MAAM,KAAK,CAAC,EAAmB,EAAA;QAE7B,MAAM,KAAK,GAAG,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAS;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KAEd;EAEF;AAv3BqB,cAAc,GAAA,UAAA,CAAA;AADnC,IAAA,iBAAiB,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;;AAC7B,CAAA,EAAA,cAAc,CAu3BnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC15BD,MAAO,YAAa,SAAQ,YAAY,CAAA;AAAG,CAAA;AAEhD,CAAC;AAAA,CAAC,EAAE,EAAE;;ACFA,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,CAAC;AAAA,CAAC,EAAE,EAAE;;ACOP,MAAMC,KAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;MAGjD,YAAY,CAAA;AAIvB,IAAA,WAAA,GAAA;AAHO,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC;AAiBzB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAyC7C,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QAtDf,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAACA,KAAG,EAAE,qBAAqB,CAAC;KACvD;AACM,IAAA,WAAW,QAAQ,GAAA;QACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACvD,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;SACzE;QACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KAC3D;AAoCD,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,8BAA8B,CAAC,KAAc,EAAA;AAI3C,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;KAC1C;IAID,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;AAED,IAAA,MAAM,MAAK;8GAxEA,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA,CAAA,EAAA;;AA0BvB,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACvC,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM1B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AACrC,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAM5B,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAC3B,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQtC,UAAA,CAAA;AADN,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAC5B,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FA7CjC,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;AA6EjC,CAAC;AAAA,CAAC,EAAE,EAAE;;MC1FM,kBAAkB,CAAA;AACd,IAAA,SAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,EAAA;IAErC,OAAO,OAAO,CAAI,MAAgB,EAAA;QAChC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACjD;AAGD,QAAA,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAK,MAAc,CAAC,GAAG,UAAU,CAAC,CAAC;QACpD,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACnD,QAAA,OAAO,QAAQ,CAAC;KACjB;IAED,OAAO,MAAM,CAAI,MAAiC,EAAA;AAChD,QAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,YAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;gBACnB,IAAI,QAAQ,GACV,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,oBAAA,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,gBAAA,OAAO,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;sBAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACxB;YACD,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,KAAI;gBAC1B,IAAI,QAAQ,GACV,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,oBAAA,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC3B,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CACG,CAAC;KACR;;AAGF,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCA,MAAM,gBAAgB,GAAG,CAC9B,QAAiC,EACjC,OAAuD,KACzC;IAEd,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,OAAO,CAAI,OAAO,OAAO,EAAE,MAAM,KAAI;QAE9C,MAAM,IAAI,GAA8B,QAAQ,CAAC;QACjD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,CAAC,SAAS,CAAC,CAAC;SACpB;AAAM,aAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;YACzC,MAAM,aAAa,GAAiC,QAAe,CAAC;AACpE,YAAA,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC7C,OAAO,CAAC,MAAa,CAAC,CAAC;aACxB;YAAC,OAAO,CAAC,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;AACxE,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,CAAC,CAAC,CAAC;aACX;SACF;AAAM,aAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACvC,YAAA,IAAI;AACF,gBAAA,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;oBACvC,MAAM,MAAM,GAAI,QAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAQ,CAAC;oBACvD,OAAO,CAAC,MAAM,CAAC,CAAC;iBACjB;qBAAM;AACL,oBAAA,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,CAAC;iBAC/B;aACF;YAAC,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACxD,gBAAA,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;aACf;SACF;;AAAM,YAAA,MAAM,CAAC,CAAA,yCAAA,EAA4C,QAAQ,CAAA,CAAE,CAAC,CAAC;AAExE,KAAC,CAAC,CAAC;AAEL,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AChDP,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAI7D,CAAC;AAAA,CAAC,EAAE,EAAE;;ACLP;AACA;MAUa,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,OAAsC,EAAA;QAAtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAFlD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;KACoB;AAG9D,IAAA,uBAAuB,CACrB,QAA0D,EAAA;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,uDAAA,CAAyD,CAAC,CAAC;YACxE,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,4DAAA,CAA8D,CAC/D,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,CAAC;AAEF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBAE5B,QAAQ,CAAC,IAAI,CACX,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAErC,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;qBAAM;AAEL,oBAAA,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,CAAC;iBACH;aACF;YAGD,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAG;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;SACJ;KACF;AAID,IAAA,GAAG,CAAC,QAAyB,EAAA;AAE3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAID,IAAA,MAAM,CAAC,QAAyB,EAAA;AAE9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAE/B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAE/D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAElC,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;aACH;iBAAM;AACL,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACxB,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,6BAA6B,CAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;qBAAM;oBACL,QAAQ,CAAC,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,oBAAoB,CACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAClC,EACD,QAAQ,CACT,CAAC;iBACH;aACF;SACF;KACF;AAIO,IAAA,MAAM,CAAC,IAAS,EAAA;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAG5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAEhC,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpB,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,qBAAC,CAAC,CAAC;iBACJ;qBAAM;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MClIM,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAY,CAAA,YAAA,GAA4C,EAAE,CAAC;AAEjE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;SAEb;KACF;IAGO,IAAI,GAAA;AAEV,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CACtD;SACF,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACrD,CAAC;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,6BAA6B,EAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CACvD,CAAC;AAIJ,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1D,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAI9B,OAAO,CAAC,IAAI,CACV,CAAA,sCAAA,EAAyC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAC1F,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;AAKD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrE,YAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;AAChC,SAAA,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;gBAIvC,OAAO,CAAC,IAAI,CACV,CAAA,wCAAA,EAA2C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA,CAClG,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;KAGF;AAID;;;;;;AAMG;AACH,IAAA,mBAAmB,CACjB,aAAuB,EACvB,aAAkB,EAClB,OAAoC,EAAA;AAEpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;AAGjC,QAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1B,gBAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,SAAS,CAAA,CAAE,CACxE,CAAC;aACH;SACF;AAGD,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAG/B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;;;;;;;AAOb,QAAA,CAAA,CAAC,CAAC;AACH,gBAAA,OAAO,MAAK;AAEZ,iBAAC,CAAC;aACH;AAED,YAAA,IAAI,QAAgB,CAAC;YAErB,IAAI,WAAW,EAAE;AACf,gBAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,WAAW,CACZ,CAAC;aACH;iBAAM;AACL,gBAAA,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;sBAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,QAAQ,EACR,aAAa,CACd;sBACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,EACT,aAAa,CACd,CAAC;aACP;AAED,YAAA,MAAM,cAAc,GAAkC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ;gBACR,QAAQ;gBACR,WAAW;aACZ,CAAC;YAGF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,mBAAmB,CACvD,cAAc,CACf,CAAC;aACH;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEpD,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxB,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAKD,IAAA,wBAAwB,CAAC,aAAuB,EAAA;QAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;AACrD,YAAA,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,SAAS,CACV;AACF,SAAA,CAAC,CAAC;KACJ;AAKD;;;;;;;;AAQG;IACH,sBAAsB,CACpB,MAAS,EACT,OAAqC,EAAA;QAErC,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;KACtE;AAID,IAAA,wBAAwB,CAAC,WAAmB,EAAA;QAC1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE;YAC9C,WAAW;AACZ,SAAA,CAAC,CAAC;KACJ;AAIO,IAAA,aAAa,CAAC,OAAsC,EAAA;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAA,CAAE,CAAC;KACpH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC3NP,MAAM,qBAAqB,GAAG,GAAG,CAAC;MAErB,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,IAAkB,EAAA;QAAlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAD9B,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;SAEb;KACF;IAGO,IAAI,GAAA;AAIV,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CACtD;SACF,CAAC;QAKF,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvE,YAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAE7B,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY;AACzC,gBAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;AAClC,aAAA;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,CAAA,0BAAA,EAA6B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA,WAAA,EAC9C,OAAO,CAAC,MAAM,CAAC,QACjB,CAAA,CAAA,CAAG,CACJ,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,IAAG;AAC3C,YAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;gBAEtB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC9B;AACD,YAAA,OAAO,CAAC,IAAI,CACV,iCAAiC,YAAY,CAAC,GAAG,EAAE,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CACzF,CAAC;AACJ,SAAC,CAAC,CAAC;QAKH,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAC1B;AACE,YAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;AAC/B,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY;AACzC,gBAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;AAClC,aAAA;AACF,SAAA,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,IAAI,CACV,CAAA,4BAAA,EAA+B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA,WAAA,EACzD,OAAO,CAAC,QAAQ,CAAC,QACnB,CAAA,EAAA,CAAI,CACL,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,sBAAsB,IAAG;AAC9D,YAAA,OAAO,CAAC,IAAI,CACV,iCAAiC,sBAAsB,CAAC,GAAG,EAAE,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CACnG,CAAC;AAEF,YAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;gBAEtB,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACvC;YAED,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EACtE,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,aAAC,CACF,CAAC;YAEF,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC1B,EACD,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,aAAC,CACF,CAAC;YAEF,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC1B,EACD,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,aAAC,CACF,CAAC;YAEF,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC1B,EACD,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAC,CACF,CAAC;YAEF,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,oBAAoB,CACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC1B,EACD,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAC,CACF,CAAC;YAEF,sBAAsB,CAAC,EAAE,CACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,6BAA6B,CAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAC1B,EACD,QAAQ,IAAG;AACT,gBAAA,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,QAAQ,CAAyB,uBAAA,CAAA;AAC/C,oBAAA,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,CAC9D,CAAC;AACF,gBAAA,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAC,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;KAKJ;IAKO,cAAc,CACpB,gBAA0B,EAC1B,QAAiB,EACjB,mBAAqC,EACrC,WAAoB,EACpB,eAAqB,EAAA;AAKrB,QAAA,IAAI,QAAgB,CAAC;QAErB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,OAAO;SACR;QAED,IAAI,WAAW,EAAE;AACf,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,WAAW,CACZ,CAAC;SACH;aAAM;YACL,IAAI,QAAQ,GAAG,gBAA4B,CAAC;AAC5C,YAAA,MAAM,cAAc,GAClB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAElE,IAAI,cAAc,EAAE;AAClB,gBAAA,QAAQ,GAAG,YAAY,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;aAChE;YAED,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAErD,IAAI,cAAc,EAAE;AAClB,gBAAA,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;aACnD;YAED,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,OAAO,CAAC,KAAK,CACX,CAA2C,wCAAA,EAAA,YAAY,CAAC,OAAO,CAC7D,QAAQ,CACT,GAAG,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;gBACF,OAAO;aACR;AAED,YAAA,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;kBAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC9B,QAAQ,EACR,mBAAmB,CACpB;kBACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EACzB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC9B,mBAAmB,CACpB,CAAC;SACP;QAED,MAAM,GAAG,GAAG,MAAK;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrC,QAAQ;YACR,eAAe,GAAG,eAAe,GAAG,EAAE,CACvC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAK;AACpC,gBAAA,GAAG,EAAE,CAAC;aACP,EAAE,qBAAqB,CAAC,CAAC;SAC3B;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;KAEvB;IAIM,qBAAqB,CAC1B,gBAA0B,EAC1B,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEzD,YAAA,OAAO,CAAC,IAAI,CACV,4CAA4C,SAAS,CAAA,iBAAA,CAAmB,CACzE,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,gBAAuB,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;KACnE;AAIM,IAAA,6BAA6B,CAClC,gBAAyC,EACzC,QAAyC,EACzC,WAA6B,EAAA;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEzD,OAAO,CAAC,IAAI,CACV,CAAA,kDAAA,EACE,QACF,CAAa,UAAA,EAAA,SAAS,CAAmB,iBAAA,CAAA,CAC1C,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,OAAO,CAAC,eAAe,IAAG;gBACjC,IAAI,CAAC,cAAc,CACjB,gBAAgB,EAChB,eAAsB,EACtB,WAAW,CACZ,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAe,EAAE,WAAW,CAAC,CAAC;SACrE;KACF;IAIM,kBAAkB,CAAC,WAAmB,EAAE,UAAe,EAAA;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;KACtE;AAIM,IAAA,0BAA0B,CAAC,WAAqB,EAAA;QACrD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAClC,YAAA,OAAO,CAAC,IAAI,CACV,iDAAiD,SAAS,CAAA,iBAAA,CAAmB,CAC9E,CAAC;YACF,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,CACjB,WAAkB,EAClB,KAAK,CAAC,EACN,KAAK,CAAC,EACN,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CACpE,CAAC;KACH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCzUe,gBAAgB,CAAA;AACpC,IAAA,WAAA,CAAsB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAAI;IAEtC,SAAS,GAAA;KAEhB;AAOF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBP;AACA;AACA;MAGa,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAHvB,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QAClB,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;KAEJ;IAEnC,EAAE,CACA,KAAa,EACb,QAAgE,EAAA;;;;;;;;;;AAWhE,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAED,GAAG,CACD,KAAa,EACb,QAAiE,EAAA;;;;;;;;;;;;;;AAejE,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;;;;;;;;AAQhC,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,IAAW,KAAI;gBACtC,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;gBAK9C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;gBAC1D,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;oBAChC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;AAC3C,iBAAC,CAAC,CAAC;aACJ;SACF,CAAC;KACH;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,IAAW,KAAI;gBAKtC,MAAM,YAAY,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;gBACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;gBAC1D,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;oBAChC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9C,iBAAC,CAAC,CAAC;aACJ;SACF,CAAC;KACH;IAED,IAAI,CAAC,WAAiC,EAAE,IAAY,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAKnC;IAED,KAAK,CAAC,WAAiC,EAAE,IAAY,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;SACF;KAKF;IAED,IAAI,GAAA;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAED,IAAA,IAAI,GAAG,GAAA;QACL,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;AACL,YAAA,IAAI,IAAI,GAAA;gBACN,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;SACF,CAAC;KACH;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MC9HM,aAAa,CAAA;AAKxB,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAJ9B,QAAA,IAAA,CAAA,UAAU,GAAe;AAC/B,YAAA,IAAI,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC;SAChC,CAAC;KAID;AAED,IAAA,EAAE,CAAC,SAAiB,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAC9D;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CACA,KAAa,EACb,QAAgE,EAAA;QAEhE,MAAM,QAAQ,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;AAEpD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;QAChC,MAAM,QAAQ,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;AAEpD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;KAC9C;IAED,IAAI,GAAA;AACF,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO;AACL,YAAA,IAAI,IAAI,GAAA;AACN,gBAAA,OAAO,GAAG,CAAC;aACZ;SACF,CAAC;KACH;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,IAAW,KAAI;AAEtC,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;AACjD,oBAAA,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;aACJ;SACF,CAAC;KACH;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCrDM,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAFvB,IAAS,CAAA,SAAA,GAA2B,EAAE,CAAC;QAG7C,IAAI,CAAC,WAAW,GAAI,MAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;KACpE;IAED,EAAE,CAAC,SAAiB,EAAE,QAA8C,EAAA;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA,CAAG,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC7C,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACzB;aAAM;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;KACF;IAED,GAAG,CAAC,KAAa,EAAE,QAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAClD,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAClC,CAAC;SACH;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,MAAM,cAAc,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAKnD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;QAChC,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,CAAG,CAAC;QAG9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCpDM,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAL9B,QAAA,IAAA,CAAA,UAAU,GAAkD;AAClE,YAAA,GAAG,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC;SACnC,CAAC;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAIzB;AAED,IAAA,EAAE,CAAC,SAAiB,EAAA;QAIlB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,oBAAoB,CACnD,SAAS,CACV,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8C,EAAA;AAU9D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AAIhC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3C;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtCP;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;IACvD,QAAQ,GAAA;AACN,QAAA,OAAO,KAAK,CAAC;KACd;IACD,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;QAI1C,IAAe,CAAA,eAAA,GAAsC,EAAE,CAAC;QACxD,IAAU,CAAA,UAAA,GAAyC,EAAE,CAAC;KAHrD;AAKD,IAAA,IAAI,EAAE,GAAA;QAEJ,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACvC;YACD,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAU,CAAC;AAC5C,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,EAAS;QAEV,OAAO,KAAK,CAAC,CAAC;KACf;AACD,IAAA,IAAI,MAAM,GAAA;QAER,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAI;AACvC,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;AACvC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;aAC5C;YACD,MAAM,IAAI,GAAG,IAAIC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAErD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,GAAU,CAAC;AACjD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,EAAS;QAEV,OAAO,KAAK,CAAC,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCvDM,aAAa,CAAA;IAIxB,WAAmB,CAAA,IAAY,EAAS,WAAmB,EAAA;QAAxC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAHnD,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,GAAG,EAAE,CAAC;KAEkB;IAE/D,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC1D;AAED,IAAA,EAAE,CAAC,IAAY,EAAA;QACb,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,KAAa,EAAE,IAAU,KAAI;AAClC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;iBAC9D;aACF;SACF,CAAC;KACH;IAED,QAAQ,CAAC,MAAkB,EAAE,IAAY,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,SAAS,CAAC,MAAkB,EAAE,IAAY,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;SACF;KACF;AAED,IAAA,SAAS,CAAC,MAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,MAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7B;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MCjDM,UAAU,CAAA;IAGrB,WAAmB,CAAA,EAAU,EAAU,SAAwB,EAAA;QAA5C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAe;QAFvD,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;QACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;QAChB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACtC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;MC7CM,UAAU,CAAA;AAKrB,IAAA,WAAA,CAAmB,WAAmB,EAAA;QAAnB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;AAJ9B,QAAA,IAAA,CAAA,UAAU,GAAe;YAC/B,GAAG,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;SAC9C,CAAC;KAEwC;AAE1C,IAAA,EAAE,CAAC,SAAiB,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7E;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnC;IAED,EAAE,CAAC,KAAa,EAAE,QAAsC,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SACjD;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACxC;AAED,IAAA,OAAO,CAAC,EAAU,EAAE,SAAA,GAAoB,GAAG,EAAA;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAkB,KAAI;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjCP,MAAM,gBAAgB,CAAA;IAGpB,WAAoB,CAAA,YAAwB,EAAS,WAAmB,EAAA;QAApD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAY;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;QAFhE,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAGrC,QAAA,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;KAClE;IAED,EAAE,CAAC,KAAa,EAAE,QAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;IAED,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC;SACzF;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAED,IAAI,CAAC,KAAa,EAAE,IAAU,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3D;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/B;AACF,CAAA;AAEK,SAAU,MAAM,CAAC,MAAkB,EAAA;AACvC,IAAA,OAAO,CAAC,SAAA,GAAoB,GAAG,KAAsB;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,IAAI,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAChE,KAAC,CAAC;AACJ,CAAC;AAGA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACvDN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACCP;;;AAGG;AACG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;IACxD,QAAQ,GAAA;AACN,QAAA,OAAO,MAAM,CAAC;KACf;AAGD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,UAAiB,CAAC;KAC1B;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,MAAa,CAAC;KACtB;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1BP;;;;AAIG;AACG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;IAC5D,QAAQ,GAAA;AACN,QAAA,OAAO,WAAW,CAAC;KACpB;AACD,IAAA,WAAA,CAAsB,GAAoB,EAAA;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QADS,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;KAEzC;AAED,IAAA,IAAI,MAAM,GAAA;;;AAGR,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;;AAED,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,EAAE,CAAC;KACX;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;AACF,CAAA;AAIA,CAAC;AAAA,CAAC,EAAE,EAAE;;AChCN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACWP;;;;;;AAMG;MACU,YAAY,CAAA;AAsCvB,IAAA,WAAA,CAAmB,GAAoB,EAAA;QAApB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAiB;AApC9B,QAAA,IAAA,CAAA,cAAc,GAAG;YACxB,KAAK;YACL,MAAM;YACN,KAAK;YACL,QAAQ;YACR,OAAO;YACP,SAAS;YACT,MAAM;SACP,CAAC;AA6BA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACvC,QAAA,GAAG,CAAC,YAAY;YACd,OAAO,CAAC,GAAG,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KACxC;IAIO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,0BAA0B,EAAE;AAChD,YAAA,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3C;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,gCAAgC,EAAE;AACtD,YAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1C;AAOD,QAAA,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/C;AAIM,IAAA,OAAO,CAAC,SAAkB,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AACrC,QAAA,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC1D,IAAI,MAAM,GAAG,CAAA,eAAA,CAAiB,CAAC;AAC/B,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,GAAG,EAAE,CAAC;SACb;AACD,QAAA,MAAM,IAAI,GAAG,CAAG,EAAA,GAAG,CAAC,MAAM,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,MAAM,CAAG,EAAA,GAAG,EAAE,CAAC;AAExD,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAQ,CAAC;KAC7B;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACnGM,MAAA,wBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEK,SAAU,iBAAiB,CAAC,OAAiC,EAAA;AACjE,IAAA,OAAO,UAAkD,WAAc,EAAA;AACrE,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,cAAc,WAAW,CAAA;AAC9B,YAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,gBAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBAGf,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CACjD,WAAW,CAAC,SAAS,CACtB,CAAC;gBAEF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG;oBAC5C,QACE,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AAClB,wBAAA,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EACvB;AACJ,iBAAC,CAAC,CAAC;AAGH,gBAAA,WAAW,CAAC,OAAO,CAAC,UAAU,IAAG;AAC/B,oBAAA,MAAM,cAAc,GAAI,IAAY,CAAC,UAAU,CAAC,CAAC;oBAEhD,IAAY,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,UAAiB,KAAI;wBACzD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAGtD,wBAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,4BAAA,MAAM,MAAM,CAAC;yBACd;AAGD,wBAAA,IACE,OAAO,CAAC,aAAa,KAAK,SAAS;4BACnC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC1C;;AAEC,4BAAA,IAAuB,CAAC,iBAAiB,CAAC,UAAiB,CAAC,CAAC;yBAC/D;AAED,wBAAA,OAAO,MAAM,CAAC;AAChB,qBAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;SACK,CAAC;AACX,KAAQ,CAAC;AACX,CAAC;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACtDA,IAAe,uBAAuB,GAAtC,MAAe,uBACpB,SAAQ,YAAY,CAAA;AAKpB;;AAEG;AACH,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;KAC9C;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAU,EAAA;QAEpB,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,CAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QAEnB,OAAO,CAAC,GAAG,CAAC,CAAA,aAAA,CAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,CAA0B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;QAClC,OAAO,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,CAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAuB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EACnD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,UAAA,CAAY,EAClD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAA2B,EAAA;AAC1C,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACxD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,eAAe,CAAC,KAA2B,EAAA;AACzC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,eAAA,CAAiB,EACvD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,KAAwB,EAAA;AACpC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,sBAAA,EAAyB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACrD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,qBAAA,EAAwB,KAAK,CAAC,QAAQ,CAAA,YAAA,CAAc,EACpD,KAAK,CAAC,MAAM,CACb,CAAC;KACH;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA4B,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,qBAAqB,CAAC,KAA4B,EAAA;AAChD,QAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,uBAAuB,CAAC,KAA6B,EAAA;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,sBAAsB,CAAC,KAA6B,EAAA;AAClD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,yBAAyB,CAAC,KAA+B,EAAA;AACvD,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,wBAAwB,CAAC,KAA+B,EAAA;AACtD,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;KACpD;CACF,CAAA;AA9JqB,uBAAuB,GAAA,UAAA,CAAA;AAH5C,IAAA,iBAAiB,CAAC;AACjB,QAAA,SAAS,EAAE,yBAAyB;KACrC,CAAC;AACoB,CAAA,EAAA,uBAAuB,CA8J5C,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjLP;MAoEa,eAAe,CAAA;IAM1B,OAAO,UAAU,CAAC,MAAc,EAAA;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KAEtB;IACM,OAAO,aAAa,CAAC,eAAoB,EAAA;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACrE,QAAA,QACE,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC7C,YAAA,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,EACjC;KACH;AAoFD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AACD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;AAWD,IAAA,IAAI,OAAO,GAAA;QACT,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,IAAI,CAAC;SAClE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,QAAQ,CAAC;SACtE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,SAAS,CAAC;SACvE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACjC,OAAO,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,IAAqC,CAAC,EAAE,CAAC;SAChE;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KACnC;IAMD,WACU,CAAA,cAAmE,EACnE,QAEgD,EAAA;QAHhD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqD;QACnE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAEwC;QAlI1D,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC;;;AAGG;QACI,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAGd,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAGzE;;;AAGG;QACa,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QAIxB,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC;QAI7B,IAA0B,CAAA,0BAAA,GAAG,EAAE,CAAC;QAIjC,IAAY,CAAA,YAAA,GAGtB,EAAE,CAAC;AAID,QAAA,IAAA,CAAA,2BAA2B,GAAG;YACpC,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;SAC5B,CAAC;AAGM,QAAA,IAAA,CAAA,oBAAoB,GAAG;YAC7B,GAAG,IAAI,CAAC,2BAA2B;YACnC,MAAM,CAAC,SAAS,CAAC,MAAM;SACxB,CAAC;QAGK,IAAU,CAAA,UAAA,GAAgB,EAAS,CAAC;QAyBnC,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAmdtB,QAAA,IAAA,CAAA,yBAAyB,GAAG,CAElC,EACA,SAAS,EACT,SAAS,EACT,MAAM,EACN,GAAG,EACH,SAAS,GAOV,KAAO;YAEN,MAAM,UAAU,GAAG,MAAK;;AACtB,gBAAA,IACE,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;AAC9C,oBAAA,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,SAAS,CAAA,CAAE,EACjC;AACA,oBAAA,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,cAAc,SAAS,CAAA;AAAvB,oBAAA,WAAA,GAAA;;wBA8BL,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAG,CAAC;qBAGtC;AA7BS,oBAAA,SAAA,EAAA,GAAA,OAAO,CAAC,YAAY,EAAA,EAAA,GAGpB,OAAO,CAAC,2BAA2B,EAGnC,EAAA,GAAA,OAAO,CAAC,uBAAuB,OAE/B,OAAO,CAAC,oBAAoB,EAkBnC,EAAA,GAAA,OAAO,CAAC,oBAAoB,CAAA,EAAA;;6BA1BtB,IAAsB,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;;6BAGnC,IAAqC,CAAA,EAAA,CAAA,GAAG,GAAG,GAAG,CAAC,WAAW,CAAI,CAAA,EAAA,SAAS,CAAE,CAApC,CAAqC,EAAA;;6BAG1E,IAAiC,CAAA,EAAA,CAAA,GAAG,SAAH,CAAa,EAAA;6BAE9C,IAA8B,CAAA,EAAA,CAAA,GAAG,GAAH,CAAO,EAAA;AAE5C,oBAAA,OAAO,uBAAuB,CAAC,GAAG,GAAG,EAAE,EAAA;wBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACvD,wBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEf,wBAAA,IACE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;4BAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,EAClD;;4BAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;yBACzD;AACD,wBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACtB;AACD,oBAAA,WAAW,gBAAgB,GAAA;AACzB,wBAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;qBACvC;iBAIF,CAAC;AACJ,aAAC,CAAC;AAEF,YAAA,MAAM,kBAAkB,GAAG,UAAU,EAAE,CAAC;AAoBxC,YAAA,OAAO,kBAAkB,CAAC;AAC5B,SAAC,CAAC;AAMM,QAAA,IAAA,CAAA,8BAA8B,GAAG,CAAC,EACxC,YAAY,EACZ,MAAM,EACN,GAAG,EACH,SAAS,GAMV,KAAI;YACH,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE;AACjD,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,GAAG,CAA8B,2BAAA,EAAA,GAAG,CAAC,WAAW,CAAA;;;;AAItE,QAAA,CAAA,CAAC,CAAC;iBACJ;AAED,gBAAA,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,SAAS,CACV,CAAC;AAMF,gBAAA,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC;AAC7B,gBAAA,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAC;AAEvD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC;oBACjD,SAAS;oBACT,SAAS;oBACT,MAAM;oBACN,GAAG;oBACH,SAAS;AACV,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;aAClC;AACD,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC;KA7hBE;IAIG,MAAM,IAAI,CAAC,OAAuD,EAAA;QACvE,MAAM,EAAE,+BAA+B,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AA+BjC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;AAExC,YAAA,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;SAExC;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;gBACpB,OAAO,CAAC,KAAK,CACX,CAAA,6DAAA,CAA+D,EAC/D,KAAK,EACL,IAAI,CACL,CAAC;aACH;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAA,+DAAA,CAAiE,EACvG,KAAK,EACL,IAAI,CACL,CAAC;;;SAIH;QAID,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACrD;aAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,SAAS,CAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CACI,CAAC;SAC5B;AAID,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;aACrC;AAED,YAAA,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;SACvC;AAID,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG;AACrB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CACxB,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;SACxB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;AACtB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAC1B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;SACzB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG;AACxB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG;AACzB,YAAA,IAAI,MAAM,IAAI,CAAC,kCAAkC,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AACF,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;SAC5B,CAAC;QAMF,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC7D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC1D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;AACrC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;AACvC,SAAA,CAAC,CAAC;AAIH,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;SACrD;AAED,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC5D,YAAA,MAAM,IAAI,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,EAC/C,aAAa,CACd,CAAC;SACH;AAID,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,2BAA2B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;SAqBvE;AAID,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;;;;;YAOvD,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;SACxC;AAKD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY;gBACf,OAAO,CAAC,IAAI,CACV,CAAsC,mCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA,CAChE,CAAC;SACL;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAA6C,0CAAA,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA,CACtE,CAAC;aACL;iBAAM;AACL,gBAAA,IAAI,CAAC,YAAY;oBACf,OAAO,CAAC,IAAI,CACV,CAAsC,mCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,CAAA,CACzD,CAAC;aACL;SACF;AAID,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACJ;IAIO,sBAAsB,GAAA;AAE5B,QAAA,IAAI,cAAqC,CAAC;AAC1C,QAAA,IAAI,OAAO,CAAC,iBAAiB,EAAE,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;AAE3D,YAAA,cAAc,GAAG;gBACf,QAAQ,EAAE,CAAU,OAAA,EAAA,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAW,SAAA,CAAA;AAC5D,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,KAAK;AACnB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,YAAY,EAAE,WAAW;AACzB,gBAAA,gBAAgB,EAAE,MAAM;AACxB,gBAAA,gBAAgB,EAAE,OAAO;aAC1B,CAAC;SACH;aAAM;AACL,YAAA,IAAI,CAAC,YAAY;gBACf,OAAO,CAAC,IAAI,CACV,CAAA,qEAAA,EAAwE,IAAI,CAAC,IAAI,CAAE,CAAA,CACpF,CAAC;AACJ,YAAA,QAAQ,IAAI,CAAC,IAAI;AAEf,gBAAA,KAAK,gCAAgC;oBACnC,OAAO;wBACL,QAAQ,EAAE,CAAU,OAAA,EAAA,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,MAAA,CAAA;AACzD,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE,IAAI,CAAC,KAAK;qBACpB,CAAC;oBACF,MAAM;AAIR,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,cAAc,GAAG;wBACf,QAAQ,EAAE,CAAU,OAAA,EAAA,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,MAAA,CAAA;AACzD,wBAAA,IAAI,EAAE,OAAO;wBACb,cAAc,EAAE,IAAI;AACpB,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE,IAAI,CAAC,KAAK;qBACpB,CAAC;oBAEF,IAAI,2BAA2B,GAAG,KAAK,CAAC;oBAExC,2BAA2B;AACzB,wBAAA,YAAY,CAAC,QAAQ,CAAC,2BAA2B,CAAC;oBAGpD,IAAI,2BAA2B,EAAE;AAC/B,wBAAA,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC,wBAAA,OAAO,cAAc,CAAC,WAAW,CAAC;qBACnC;yBAAM;AACL,wBAAA,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC;AACjC,wBAAA,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;qBACnC;oBAED,MAAM;AAIR,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,cAAc,GAAG;wBACf,QAAQ,EAAE,CAAc,WAAA,EAAA,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAA;wBACvD,QAAQ,EAAE,CAAU,OAAA,EAAA,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAS,OAAA,CAAA;AAC1D,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE,IAAI,CAAC,KAAK;qBACpB,CAAC;oBACF,MAAM;aAET;SACF;AACD,QAAA,OAAO,cAAc,CAAC;KAEvB;AAID,IAAA,IAAI,MAAM,GAAA;QAER,OAAO,eAAe,CAAC,MAAM,CAAC;QAE9B,OAAO;KACR;IAID,WAAW,GAAA;;;;;;;;;;;;;;AAcT,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;AAID,IAAA,aAAa,CAAC,GAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BhB;AAID,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,QACE,IAAI,CAAC,IAAI,KAAK,2BAA2B;YACzC,IAAI,CAAC,IAAI,KAAK,0BAA0B;AACxC,YAAA,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAC9C;KACH;IA6IO,MAAM,kCAAkC,CAC9C,SAA2B,EAAA;QAE3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;YAC3B,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AAEO,IAAA,MAAM,+BAA+B,CAC3C,SAA2B,EAC3B,GAAG,GAAG,EAAE,EAAA;AAER,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAEtD,CAAC;AAIJ,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAE1B,YAAA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAE9B,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAGlD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACjC,IAAI,CAAC,8BAA8B,CAAC;gBAClC,YAAY;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,GAAG,EAAE,IAAI;gBACT,SAAS;AACV,aAAA,CAAC,CACH,CAAC;AAEF,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,GAAG,CAAC,+BAA+B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;SAC3D;AACD,QAAA,OAAO,GAAiB,CAAC;KAC1B;AAID,IAAA,qBAAqB,CAAC,SAA2B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;KAChD;AAIO,IAAA,wBAAwB,CAAC,SAA2B,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;KACnD;IAID,MAAM,CACJ,IAA+B,EAC/B,OAIC,EAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAS,CAAC;SACrB;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7C,QAAA,MAAM,2BAA2B,GAC/B,OAAO,CAAC,2BAA2B,IAAI,EAAE,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;AACvD,YAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;SAC9B;AAED,QAAA,IAAI,OAAO,EAAE,aAAa,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,UAAU,GAAW,EAAE,CAAC;AAE5B,YAAA,IAAI,SAAS,KAAK,gBAAgB,EAAE;AAClC,gBAAA,MAAM,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBACtC,UAAU,GAAG,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC7D,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;aAC/D;AACD,YAAA,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,GAAG,CAAA,CAAA,EAAI,UAAU,CAAE,CAAA,GAAG,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,OAAO,GACX,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC;YACxE,IAAI,OAAO,EAAE;AAEX,gBAAA,OAAO,OAAO,CAAC;aAChB;YAED,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,SAAS,CAAqB,kBAAA,EAAA,IAAI,CAAC,WAAW,CAAA;;yEAEpB,SAAS,CAAA;;AAEzE,QAAA,CAAA,CAAC,CAAC;aACJ;YAED,MAAM,gBAAgB,GAAG,IAAK,UAAkB,CAC9C,GAAG,2BAA2B,CAC/B,CAAC;YACF,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC;AACnE,gBAAA,gBAAgB,CAAC;AAEnB,YAAA,OAAO,gBAAgB,CAAC;SACzB;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAIjE,QAAA,OAAO,oBAAoB,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,aAAa,CAAI,IAA+B,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;KACpD;IAGD,yBAAyB,GAAA;QACvB,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;AAOf,MAAA,CAAA,CAAC,CAAC;SACJ;KACF;AAGD,IAAA,aAAa,CAAC,SAA2B,EAAA;QACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACjC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/B,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAClC,YAAA,KAAK,MAAM,CAAC,SAAS,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SAClC;KACF;IAED,WAAW,CAAC,SAA2B,EAAE,OAAiB,EAAA;AACxD,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KACvE;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,SAAiB,EAAA;AACtC,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAA,MAAM,wBAAwB,GAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AAElD,YAAA,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE;AACvC,gBAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;aAC5C;SACF;KACF;AAED,IAAA,kBAAkB,CAAC,aAAuB,EAAA;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC/C;AAED,IAAA,gBAAgB,CAAC,SAA2B,EAAA;AAC1C,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAe,CAAC;KACzE;AAIO,IAAA,MAAM,eAAe,CAAC,OAAY,EAAE,SAA2B,EAAA;QAMrE,KAAK,MAAM,OAAO,IAAI;AAEpB,YAAA,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,SAAA,EAAE;YACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAc,CAAQ,CAAC;YACnE,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhD,YAAA,uBAAuB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAE9C,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACjE,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;SAChD;KACF;AAID,IAAA,MAAM,iBAAiB,GAAA;AAIrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC/C,MAAM,CAAC,SAAS,CAAC,UAAU,CAC5B,CAAC;AAEF,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC9B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACxC,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,IAAI,CAAC,iBAAiB;AAClC,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;aACJ;SACF;KAIF;AACD,IAAA,MAAM,WAAW,GAAA;QACf,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,MAAM;AACxB,SAAA,EAAE;YAKD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAU,EAAE;gBACpE,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC5B,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,QAAQ,CAAC,CAAC;AACtB,wBAAA,OAAO,EAAE,QAAQ;AAClB,qBAAA,CAAC,CAAC;iBAOJ;aACF;SAKF;QAED,KAAK,MAAM,aAAa,IAAI;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ;YACzB,MAAM,CAAC,SAAS,CAAC,UAAU;YAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;AAC5B,SAAA,EAAE;YAKD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE;gBAC/D,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBACxB,MAAM,OAAO,CAAC,cAAc,CAAC;wBAC3B,UAAU,EAAE,IAAI,CAAC,CAAC;AAClB,wBAAA,OAAO,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;iBACJ;aACF;SAKF;KACF;AAID,IAAA,UAAU,CAAC,aAAqB,EAAA;QAC9B,IAAI,UAAU,GACZ,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9C,OAAO,IAAI,KAAK,UAAU,CAAC;KAC5B;AAID,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;AACnB,cAAE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;cAClB,IAAI,CAAC,UAAU;AACf,kBAAE,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;kBACxB,KAAK,CAAC,CAAC;AACb,QAAA,OAAO,GAAG,CAAC;KACZ;AAID,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;KACvC;AAID;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;KAChC;AAID,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;KACxC;AAID,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;KACnC;AAID,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;KAC/B;AAID,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KACzB;AAID,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;KACzB;AAID,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,OAAO;AAEP,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE;YAChC,OAAO;SACR;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACnC,UAAU,CACiB,CAAC;AAG9B,YAAA,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC;SAC/B;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAIrC,OAAO;AAGP,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChE,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;SA2HrD;KAEF;AAID,IAAA,MAAM,YAAY,GAAA;AAEhB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChE,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,MAAM,CACiB,CAAC;YAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC;AACpD,kBAAE,IAAI;AACN,kBAAE,OAAO,CAAC,WAAW,CAAC;YACxB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnD,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE;AACnE,gBAAA,IAAI,CAAC,KAAK;oBACR,OAAO,CAAC,IAAI,CACV,CAAA,4CAAA,EAA+C,aAAa,CAAQ,KAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CACnF,CAAC;AAEJ,gBAAAC,MAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;aACtC;iBAAM;AACL,gBAAA,IAAI,CAAC,KAAK;oBACR,OAAO,CAAC,IAAI,CACV,CAAA,4CAAA,EAA+C,aAAa,CAAQ,KAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CACnF,CAAC;aACL;SACF;KAEF;AAKD,IAAA,MAAM,sBAAsB,GAAA;QAE1B,MAAM,QAAQ,GAAG,CACf,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ;AAC5B,cAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAC/B,cAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAClD,GAAG,CAAC,QAAQ,IAAG;AACf,YAAA,OAAO,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,CAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW;AAC/B,cAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;cAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EACtD,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,uBAAuB,CAAC,CAAC;QAEpD,MAAM,kBAAkB,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,cAAG;AACC,gBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;AAC9B,gBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY;AACtC,gBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY;AACtC,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAe;AAC7C,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAC9C,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAC9C,gBAAA,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc;gBAClD,QAAQ;gBACR,WAAW;AACX,gBAAA,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;AAC5C,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;AACtC,gBAAA,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;AAC1C,gBAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO;AACtC,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;AACjB,aAAA;cACtB,EAAwB,CAAC;QAK9B,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1D,YAAA,IAAI,CAAC,KAAK;AACR,gBAAA,IAAI,CAAC,YAAY;AACjB,gBAAA,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;AACpE,YAAA,IAAI;AACF,gBAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,gBAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;aACpC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;aACxC;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;AACnC,gBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;;;aAIzE;AAED,YAAA,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;gBAC9B,OAAO,CAAC,IAAI,CACV,CAAA;;AAEkB,0BAAA,EAAA,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,IAAI,CAAA;;gEAEK,IAAI,CAAC,UAAU,EAAE,aAAa,CAAA;;;SAGrF,EACC,kBAAkB,CACnB,CAAC;SAWL;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,CAAA,2CAAA,EAA8C,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;SACzE;KAEF;IAKD,YAAY,GAAA;AACV,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE1E,QAAA,KAAK,MAAM,iBAAiB,IAAI,cAAc,EAAE;AAC9C,YAAA,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,gBAAA,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,YAAY,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAErE,YAAA,MAAM,WAAW,GAAmC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/D,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,iBAAA,OAAO,EAAE;iBACT,GAAG,CAAC,EAAE,IAAG;gBACR,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBACtC,OAAO,EAAE,CAAC,IAAI,CAAC;iBAChB;gBACD,OAAO,EAAE,CAAC,SAAS,CAAC;AACtB,aAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YAEb,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC/C,gBAAA,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;aAC/C;iBAAM;AACL,gBAAA,WAAW,CAAC,cAAc;oBACxB,CAAG,EAAA,qBAAqB,IAAI,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAE,CAAA;AAClE,yBAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;yBACrB,KAAK,CAAC,GAAG,CAAC;AACV,yBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAI;wBAClB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;qBAChD,EAAE,EAAE,CAAC;yBACL,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;AAED,YAAA,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;AAC/B,gBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACxC,gBAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,oBAAA,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,wBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;qBAC1B;iBACF;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO;gBACV,OAAO,CAAC,cAAc,CACpB,CAAA,kCAAA,EAAqC,WAAW,CAAC,SAAS,CAAG,CAAA,CAAA,CAC9D,CAAC;;;AAMN,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;gBACpD,MAAM,YAAY,GAChB,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAElC,gBAAA,MAAM,IAAI,GAAgC,YAAY,CAAC,IAAI,CAAC;AAC5D,gBAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM;AACrC,sBAAE,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,CAAA;sBAC1C,cAAc,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAG7D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;oBAGtC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAC3C,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,iBAAiB,CAClB,CAAC;AAEF,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;wBACrB,SAAS;wBACT,MAAM;AACP,qBAAA,CAAC,CAAC;iBAEJ;AAED,gBAAA,MAAM,gBAAgB,GACpB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAE3D,IAAI,gBAAgB,EAAE;oBAQpB,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;iBACrE;AACH,aAAC,CAAC,CAAC;;;AAKD,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;;;SAItC;KACF;IAIM,iBAAiB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAsB,CAAC,IAAI,CAAC,CAAC;AAG3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAI;AAC9D,YAAA,QACE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAChC,gBAAA,SAAS,EACT;AAIJ,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,EAAE,EAAE,CAAuB,oBAAA,EAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA,WAAA,CAAa,CAAC;AAC1D,YAAA,GAAG,OAAO;SACX,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;;;AAIxB,QAAA,CAAA,WAAA,EAAc,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAO,KAAA,CAAA,CAC1D,CAAC;QAEF,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,CAA0B,uBAAA,EAAA,QAAQ,CAAG,CAAA,CAAA,CAAC,CAAC;;;;;;KASzE;AAID,IAAA,IAAW,WAAW,GAAA;;;AAGpB,QAAA,QAAQ,KAAK,CAAC,EAAE;KACjB;IAIO,aAAa,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwGpB;IAIO,UAAU,CAEhB,IAAiC,EACjC,YAAiC,EACjC,WAA2C,EAC3C,WAAmB,EACnB,MAAgB,EAAA;AAKhB,QAAA,MAAM,cAAc,GAClB,YAAY,CAAC,cAAc;AAC3B,YAAA,OAAO,YAAY,CAAC,cAAc,KAAK,UAAU;cAC7C,YAAY,CAAC,cAAc;cAC3B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACjB,gBAAA,IAAI,EAAE,CAAC;AACT,aAAC,CAAC;AAGR,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAGrB,MAAM,SAAS,GAAG,OAAO,cAAc,EAAE,GAAG,EAAE,GAAG,KAAI;YACnD,MAAM,QAAQ,GACZ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;AACjC;;AAEG;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,MAAa,CAAC;AACjC;;AAEG;AACH,YAAA,cAAc,CACf,CAAC;AACJ,YAAA,IAAI,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;AAGF,QAAA,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AACxC,cAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAA,EAAG,WAAW,CAAE,CAAA;cAC/B,WAAW,CAAC;QAChB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAIhD,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;SAuBvB;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAGpB,YAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,MAAK,GAAG,CAAC;iBAChD;aACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA2NF;QAED,OAAO;AACL,YAAA,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,YAAY,CAAC,IAAI;SAC1B,CAAC;KACH;AAID;;AAEG;AACK,IAAA,UAAU,CAEhB,MAAgB,EAChB,IAAiC,EACjC,YAA2C,EAC3C,WAAmB,EAAA;QAGnB,MAAM,GAAG,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,EAAE,WAAW,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,CAAC,CAAC;AAGtE,QAAA,IAAI,OAAY,CAAC;AACjB,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,OAAO,GAAG,MAAM,CAAC;SAClB;;;;;QAQD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAI7D,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;gBAC3D,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;oBACrD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,oBAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAElE,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,cAAc,CAAC,kBAAkB,CAC/B,MAAM,EACN,YAAY,EACZ,WAAW,CACZ,EACD,CAAC,KAAK,EAAE,YAAY,KAAI;wBACtB,IAAI,GAAG,GAAQ,YAAY,CAAC;AAC5B,wBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AAC9B,wBAAA,IAAI;4BACF,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB,4BAAA,GAAG,GAAG,IAAIf,QAAa,CAAC,YAAY,CAClC;gCACE,IAAI,EAAE,KAAK,CAAC;gCACZ,OAAO,EAAE,KAAK,CAAQ;gCACtB,MAAM,EAAE,YAAY,CAAC,IAAI;gCACzB,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAA,EACpB,EAAE;iCACD,EAAA,YAAY,CAAC,IAAI,CAAG,CAAA,CAAA;AACxB,6BAAA,EACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,kCAAE,IAAI;kCACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACxB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,EACN,MAAM,IAAI,CACX,CAAC;4BAEF,OAAO,CAAC,GAAG,CAAC,CAAC;yBACd;wBAAC,OAAO,KAAK,EAAE;AACd,4BAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACrB,MAAM,CAAC,KAAK,CAAC,CAAC;yBACf;AACH,qBAAC,CACF,CAAC;AACF,oBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CACtB,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EACnE,IAAI,CACL,CAAC;AACJ,iBAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,OAAO;oBACL,QAAQ;iBACT,CAAC;AACJ,aAAC,CAAC;YACF,OAAO;SACR;QAOD,MAAM,WAAW,GAAG,GAAG,CAAC;QACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,QAAA,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,WAAW,CAAC;QAElE,IAAI,SAAS,GACX,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YACjD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;SAC9D;QACD,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEzD,IAAI,QAAQ,GACV,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE;YACvD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;SACpE;QACD,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE9D,IAAI,OAAO,GACT,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE;YACtD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;SACnE;QACD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE5D,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,OAAO,IAAI,WAAW,EAAE;YAC1B,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC;SAC1D;AAID,QAAA,MAAM,OAAO,GAAG,YAAW;YACzB,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,EAAE,EAAE;AAIzC,gBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC;AACnE,gBAAA,IAAI,OAAO,GAAG,GAAG,EAAE;oBACjB,OAAO,GAAG,GAAG,CAAC;iBACf;AAED,gBAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAExB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;oBACpC,UAAU,CAAC,MAAK;AACd,wBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjB,EAAE,gBAAgB,CAAC,CAAC;AACvB,iBAAC,CAAC,CAAC;aAEJ;YACD,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,SAAC,CAAC;QAGF,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,EAAA;YAI3D,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,gBAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAElE,gBAAA,IAAI,GAAQ,CAAC;AACb,gBAAA,IAAI;AACF,oBAAA,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;AACjC,wBAAA,UAAU,EAAE,UAAU;AACtB,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,aAAa,EAAE,IAAI;AACpB,qBAAA,CAAC,CAAC;AAEH,oBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC7B,wBAAA,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;AACjC,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,OAAO,EAAE,IAAI;AACb,4BAAA,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AACnC,yBAAA,CAAC,CAAC;qBACJ;AAED,oBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC7B,wBAAA,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;AACjC,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,OAAO,EAAE,IAAI;AACb,4BAAA,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AACnC,yBAAA,CAAC,CAAC;qBACJ;oBAGD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,EAAE,QAAQ,EAAE;AAC5C,wBAAA,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;qBAC1B;oBAED,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,oBAAA,GAAG,GAAG,IAAIA,QAAa,CAAC,YAAY,CAClC;wBACE,IAAI,EAAE,KAAK,CAAC;wBACZ,OAAO,EAAE,KAAK,CAAQ;wBACtB,MAAM,EAAE,YAAY,CAAC,IAAI;wBACzB,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAA,EACpB,EAAE;yBACD,EAAA,YAAY,CAAC,IAAI,CAAG,CAAA,CAAA;AACxB,qBAAA,EACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,0BAAE,IAAI;0BACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACxB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,KAAK,CAAC,EACN,MAAM,IAAI,CACX,CAAC;oBAMF,MAAM,OAAO,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,CAAC;iBACd;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,OAAO,EAAE,CAAC;AAChB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAIrB,MAAM,CAAC,KAAK,CAAC,CAAC;iBACf;AACH,aAAC,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAExC,YAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,OAAO;oBACL,QAAQ;iBACT,CAAC;aACH;AACH,SAAC,CAAC;AACF,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,OAAO;SACR;QAMD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAoB,GAAG,IAAI,EAAA;YAMrE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,gBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC5D,YAAA,IAAI,IAA2C,CAAC;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;gBACzC,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC1D,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;AACjC,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AAChE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,cAAc,EAAE,YAAY,CAAC,WAAW;wBACxC,MAAM,EAAE,YAAY,CAAC,WAAW;wBAChC,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY,EAAE;AACjE,oBAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,EAC5C,WAAW,CAAC,IAAI,CAAC;wBACf,iBAAiB,EAAE,YAAY,CAAC,YAAY;AAC7C,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,IAAI,GAAG,QAAQ,CAAC,MAAM,CACpB,GAAG,CAAC,GAAG,CAAC,IAAI,EACZ,WAAW,EACX,OAAO,CAAC,GAAG,CAAC,qBAA4B,EACxC,OAAO,CAAC,GAAG,CAAC,yBAAgC,CAC7C,CAAC;iBACH;AAED,gBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;aAC7C;iBAAM;AACL,gBAAA,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAQ,CAAC;aACpD;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;YACzD,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACxB,gBAAA,IAAI,YAAY,GAAiC,KAAK,CAAQ,CAAC;AAE/D,gBAAA,KAAK,IAAI,EAAE,IAAI,YAAY,CAAC,UAAU,EAAE;oBACtC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;wBACjB,YAAY,GAAG,CAAC,CAAC;wBACjB,MAAM;qBACP;iBACF;AAED,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC3C;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,EAAE;AACtC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC1B,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC7E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC7C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAClC;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;AAElD,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,CAAC,SAAS,EACtB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;yBACH;6BAAM;4BACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;yBACjD;qBACF;yBAAM;AACL,wBAAA,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;AACxB,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACzC;qBACF;iBACF;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;AACvC,oBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,CACpB,YAAY,CAAC,SAAS,EACtB,KAAK,EACL,YAAY,CAAC,eAAe,CAC7B,CAAC;iBACH;AACD,gBAAA,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,EAAE;AACrC,oBAAA,IAAI,YAAY,CAAC,SAAS,EAAE;wBAC1B,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;4BACnD,MAAM,IAAI,KAAK,CAAC,CAAA;;;;;;;;AAQC,6BAAA,EAAA,YAAY,CAAC,SAAS,CAAA;;AAEpD,CAAA,CAAC,CAAC;yBACU;AACD,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAA,EAAG,YAAY,CAAC,SAAS,CAAG,CAAA,CAAA,EAC5E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;AACD,wBAAA,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;qBAC5C;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC7D,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;yBACH;wBACD,UAAU,GAAG,KAAK,CAAC;qBACpB;iBACF;AACH,aAAC,CAAC,CAAC;YAEH,IACE,OAAO,UAAU,KAAK,QAAQ;gBAC9B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAC/C;gBACA,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC1B,gBAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CACvB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACnD,gBAAgB,GAAG,KAAK,CAAC;iBAC1B,CAAC,CACH,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACnC,CAAC;aACH;AAED,YAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBACnC,IAAI,uBAAuB,GAAG,EAAE,CAAC;AACjC,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,IAAG;oBACpD,uBAAuB,GAAG,KAAK,CAAC;iBACjC,CAAC,CACH,CAAC;AAEF,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAC1C,CAAC;aACH;AAGD,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,QAAQ,EAAE,UAAU;AAClB,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1D,sBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;aACjD,CAAC;AACF,YAAA,OAAO,aAAa,CAAC;AACvB,SAAC,CAAC;KAEH;AAEF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC51EM,MAAA,aAAa,GAAG,CAU3B,QAEyE,KACvE;AACF,IAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAM3B,MAAM,kBAAkB,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAMjE,IAAA,MAAM,GAAG,GAAG;AAEV,QAAA,KAAK,EAAE;AAmBL,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACD,YAAA,IAAI,YAAY,GAAA;gBACd,OAAO,MAAM,CAAC,YAAY,CAAC;aAC5B;AACD,YAAA,IAAI,SAAS,GAAA;gBACX,OAAO,MAAM,CAAC,SAAS,CAAC;aACzB;AACD,YAAA,IAAI,WAAW,GAAA;gBACb,OAAO,MAAM,CAAC,WAAW,CAAC;aAC3B;AACF,SAAA;AAGD,QAAA,IAAI,QAAQ,GAAA;YACV,OAAO,MAAM,CAAC,QAAQ,CAAC;SACxB;AACD,QAAA,IAAI,WAAW,GAAA;YACb,OAAO,MAAM,CAAC,WAAW,CAAC;SAC3B;AAGD;;AAEG;AACH,QAAA,MAAM,KAAK,GAAA;AACT,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBAC9B,MAAM,kBAAkB,CAAC,IAAI,CAAC;AAC5B,oBAAA,+BAA+B,EAAE,IAAI;AACtC,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,IAAI,SAAS,GAAA;AACX,YAAA,OAAO,kBAAkB,CAAC;SAC3B;AACD,QAAA,gBAAgB,CAAI,IAA+B,EAAA;AACjD,YAAA,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC/C;AAED,QAAA,QAAQ,CAAI,IAA+B,EAAA;YACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAA,OAAO,QAAe,CAAC;SAcxB;AAGD;;;AAGG;QACH,UAAU,EAAE,YAAqC;YAC/C,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;gBACjD,UAAU,CAAC,YAAW;AACpB,oBAAA,MAAM,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAChC,oBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,wBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;qBAC5D;AACD,oBAAA,MAAM,kBAAkB,CAAC,YAAY,EAAE,CAAC;AACxC,oBAAA,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC3C,oBAAA,MAAM,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;oBAMlD,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBAClC,kBAAkB,CAAC,WAAW,EAAE,CAAC;oBAEjC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;AAGvC,oBAAA,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,2BAA2B,GAAG,KAAK,CAAC;oBAExC,2BAA2B;AACzB,wBAAA,YAAY,CAAC,QAAQ,CAAC,2BAA2B,CAAC;AAEpD,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,2BAA2B,EAAE;AAClD,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;qBACzD;yBAAM;AACL,wBAAA,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;qBAC9C;oBACD,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;SACJ;KAEF,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACb,EAAE;AAGD,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpKP,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO;AACvC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,YAAY,EAAE;;QAEZ,cAAc;AACf,KAAA;AACF,CAAA,CAAC,EAAE;AAIH,CAAC;AAAA,CAAC,EAAE,EAAE;;;;;;;ACGA,IAAe,cAAc,GAA7B,MAAe,cAA6B,SAAQ,YAAY,CAAA;AAC3D,IAAA,iBAAiB,CAAC,SAAuB,EAAA;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;KAE9C;EACF;AANqB,cAAc,GAAA,UAAA,CAAA;AAHnC,IAAA,iBAAiB,CAAC;AACjB,QAAA,SAAS,EAAE,gBAAgB;KAC5B,CAAC;AACoB,CAAA,EAAA,cAAc,CAMnC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACfD,IAAW,IAAI,CAWpB;AAXD,CAAA,UAAiB,IAAI,EAAA;AACL,IAAA,IAAA,CAAA,UAAU,GAAGgB,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,MAAM,GAAGC,UAAiB,CAAC;AAC3B,IAAA,IAAA,CAAA,cAAc,GAAGC,kBAAiC,CAAC;AACnD,IAAA,IAAA,CAAA,QAAQ,GAAGC,YAAqB,CAAC;AACjC,IAAA,IAAA,CAAA,KAAK,GAAGC,SAAmB,CAAC;AAC5B,IAAA,IAAA,CAAA,UAAU,GAAGC,cAAyB,CAAC;AACvC,IAAA,IAAA,CAAA,UAAU,GAAGC,cAA6B,CAAC;AAC3C,IAAA,IAAA,CAAA,mBAAmB,GAAGC,uBAA4C,CAAC;AACpE,IAAA,IAAA,CAAA,OAAO,GAAGC,WAAuB,CAAC;AACjD,CAAC,EAXgB,IAAI,KAAJ,IAAI,GAWpB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACbD,SAAU,aAAa,CAAU,OAAiC,EAAA;AACtE,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,GAAG,OAAO,IAAK,EAAU,CAAC;QACjC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAK,IAAY,CAAC;QAC/D,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAEtD,QAAA,OAAO,CAAC,uBAAuB,CAC7B,OAAO,EAAE,kBAAkB,IAAI,EAAE,EACjC,CAAC,CAAC,KAAK,CACL,OAAO,EAAE,mBAAmB,IAAI,EAAE,GACjC,OAAO,EAAE,uBAAuB,IAAI,EAAE,EACxC,CACF,CAAC,WAAW,CAAC,CAAC;QAGf,OAAO,CAAC,uBAAuB,CAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AAE5D,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC/B,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;QAEFV,MAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;QAE/C,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,oBAA8B,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAU7E,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACpDD,SAAU,eAAe,CAAU,OAAmC,EAAA;AAC1E,IAAA,OAAO,UAAU,WAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EACjC,OAAO,EACP,WAAW,CACZ,CAAC;AACF,QAAA,OAAO,CAAC,cAAc,CACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,EAC1B,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,EACtC,WAAW,CACZ,CAAC;AACF,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5E,KAAC,CAAC;AACJ,CAAC;AAEY,MAAA,sBAEX,SAAQ,MAAM,CAAC,oBAAoB,CAAA;AAEpC,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjBM,MAAA,MAAM,GAAG,CAAI,MAAuC,KAAO;AACtE,IAAA,OAAO,IAAI,KAAK,CACd,EAAE,EACF;AACE,QAAA,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAI;AACnB,YAAA,IAAI,QAAQ,KAAK,gBAAgB,EAAE;AACjC,gBAAA,OAAO,MAAM,KAAK,CAAC;aACpB;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;YACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC;YACvC,IAAI,aAAa,EAAE;gBACjB,IAAI,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAiB,CAAC;AAG1D,gBAAA,IAAI,QAAQ,KAAK,sBAAsB,EAAE;oBACvC,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;iBAC9C;AACD,gBAAA,IAAI,QAAQ,KAAK,wBAAwB,EAAE;AACzC,oBAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;iBACnC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE7C,MAAM,gBAAgB,GAAG,SAAS;sBAC9B,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,sBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAMvB,gBAAA,OAAO,gBAAgB,CAAC;aACzB;AAGD,YAAA,OAAOW,QAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;SAEtC;AACF,KAAA,CACG,CAAC;AACT,EAAE;AAEK,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAOhC,MAAM,sBAAsB,GAAG,CACpC,wBAAyD,EACzD,SAAkB,KACgB;AAClC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AACpD,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAErC,IAAI,mBAAmB,GAAG,IAAI,CAAC;AAE/B,IAAA,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;AACvC,QAAA,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAA;AACxB,YAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,gBAAA,OAAO,CAAC,GAAG,IAAW,KAAI;oBACxB,IAAI,mBAAmB,EAAE;wBACvB,mBAAmB,GAAG,KAAK,CAAC;AAC5B,wBAAA,MAAM,iBAAiB,GACrB,wBAAwB,EAAS,CAAC;wBACpC,MAAM,GAAG,GAAG,iBAAiB,CAC3B,OAAO,CAAC,oBAAoB,CACV,CAAC;wBACrB,IAAI,CAAC,GAAG,EAAE;4BACR,MAAM,IAAI,KAAK,CACb,CAAA;;AAEoC,mDAAA,CAAA;AAClC,gCAAA,CAAA,sBAAA,EAAyB,iBAAiB,EAAE,IAAI,CAAA,IAAA,EAAO,SAAgB,CAAA;;;AAG1E,cAAA,CAAA,CACA,CAAC;yBACH;wBACD,MAAM,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAGhE,wBAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE;4BAChE,iBAAiB;4BACjB,SAAS;AACV,yBAAA,CAAC,CAAC;qBAEJ;AACD,oBAAA,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,iBAAC,CAAC;aACH;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC5C;AACF,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,iBAAmD,CAAC;AAC7D,CAAC,CAAC;AAED,CAAC;AAAA,CAAC,EAAE,EAAE;;AC1GN,CAAC;AAAA,CAAC,EAAE,EAAE;;AC2BD,IAAW,QAsEhB;AAtED,CAAA,UAAiB,OAAO,EAAA;AAER,IAAA,OAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AACjB,IAAA,OAAA,CAAA,IAAI,GAAGC,IAAS,CAAC;AACjB,IAAA,OAAA,CAAA,GAAG,GAAGC,GAAO,CAAC;AAEf,IAAA,OAAA,CAAA,gBAAgB,GAAGC,gBAA4B,CAAC;AAG/C,IAAA,OAAA,CAAA,UAAU,GAAGC,iBAAqC,CAAC;AACnD,IAAA,OAAA,CAAA,MAAM,GAAGC,aAA6B,CAAC;AACvC,IAAA,OAAA,CAAA,QAAQ,GAAGC,eAAiC,CAAC;AAC7C,IAAA,OAAA,CAAA,UAAU,GAAGC,iBAAqC,CAAC;AACnD,IAAA,OAAA,CAAA,UAAU,GAAGC,iBAAqC,CAAC;AAGjE;;AAEG;AACU,IAAA,OAAA,CAAA,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;AACvD;;AAEG;AACU,IAAA,OAAA,CAAA,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD;;AAEG;AACU,IAAA,OAAA,CAAA,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrD;;AAEG;AACU,IAAA,OAAA,CAAA,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;AAE5C,IAAA,OAAA,CAAA,aAAa,GAAGC,aAA6B,CAAC;AAE9C,IAAA,OAAA,CAAA,MAAM,GAAGC,MAAe,CAAC;AAKzB,IAAA,OAAA,CAAA,UAAU,GAAG,CAAC,MAAc,KAAI;AAC3C,QAAAC,eAA+B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,KAAC,CAAC;AAGW,IAAA,OAAA,CAAA,OAAO,GAAGC,OAAkB,CAAC;AAE1C;;;AAGG;AACU,IAAA,OAAA,CAAA,IAAI,GAAG,OAAO,OAI1B,KAAI;QACH,MAAM,WAAW,GAAG,CAAC,MAAM,2DAAqC;AAC7D,aAAA,WAAW,CAAC;QACf,MAAM,OAAO,GAAG,OAAA,CAAA,aAAa,CAAC,OAAO;AACnC,YAAA,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,EAAE,WAAW,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAQ;YAC7C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAQ;AACpD,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;AACJ,CAAC,EAtEgB,OAAO,KAAP,OAAO,GAsEvB,EAAA,CAAA,CAAA,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;AC5GP;;AAEG;;;;"}