@decaf-ts/for-nest 0.12.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -5
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/cjs/auth/AuthInterceptor.cjs +3 -11
- package/lib/cjs/auth/AuthInterceptor.cjs.map +1 -1
- package/lib/cjs/auth/AuthMiddleware.cjs +51 -0
- package/lib/cjs/auth/AuthMiddleware.cjs.map +1 -0
- package/lib/cjs/auth/DecafAuthHandler.cjs +8 -3
- package/lib/cjs/auth/DecafAuthHandler.cjs.map +1 -1
- package/lib/cjs/auth/DecafAuthModule.cjs +6 -1
- package/lib/cjs/auth/DecafAuthModule.cjs.map +1 -1
- package/lib/cjs/auth/constants.cjs +3 -1
- package/lib/cjs/auth/constants.cjs.map +1 -1
- package/lib/cjs/auth/decorators.cjs +4 -0
- package/lib/cjs/auth/decorators.cjs.map +1 -1
- package/lib/cjs/auth/index.cjs +1 -0
- package/lib/cjs/auth/index.cjs.map +1 -1
- package/lib/cjs/decaf-model/FromModelController.cjs +6 -0
- package/lib/cjs/decaf-model/FromModelController.cjs.map +1 -1
- package/lib/cjs/events-module/DecafStreamModule.cjs +13 -2
- package/lib/cjs/events-module/DecafStreamModule.cjs.map +1 -1
- package/lib/cjs/events-module/EventsController.cjs +28 -5
- package/lib/cjs/events-module/EventsController.cjs.map +1 -1
- package/lib/cjs/events-module/EventsSubscriptionController.cjs +81 -0
- package/lib/cjs/events-module/EventsSubscriptionController.cjs.map +1 -0
- package/lib/cjs/events-module/ObserverSubscriptionRegistry.cjs +51 -0
- package/lib/cjs/events-module/ObserverSubscriptionRegistry.cjs.map +1 -0
- package/lib/cjs/events-module/constant.cjs +2 -1
- package/lib/cjs/events-module/constant.cjs.map +1 -1
- package/lib/cjs/events-module/index.cjs +3 -0
- package/lib/cjs/events-module/index.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs +3 -31
- package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs.map +1 -1
- package/lib/cjs/module.cjs +1 -1
- package/lib/cjs/module.cjs.map +1 -1
- package/lib/cjs/request/contextualize.cjs +46 -0
- package/lib/cjs/request/contextualize.cjs.map +1 -0
- package/lib/cjs/request/index.cjs +1 -0
- package/lib/cjs/request/index.cjs.map +1 -1
- package/lib/esm/auth/AuthInterceptor.js +4 -12
- package/lib/esm/auth/AuthInterceptor.js.map +1 -1
- package/lib/esm/auth/AuthMiddleware.js +42 -0
- package/lib/esm/auth/AuthMiddleware.js.map +1 -0
- package/lib/esm/auth/DecafAuthHandler.js +8 -3
- package/lib/esm/auth/DecafAuthHandler.js.map +1 -1
- package/lib/esm/auth/DecafAuthModule.js +7 -2
- package/lib/esm/auth/DecafAuthModule.js.map +1 -1
- package/lib/esm/auth/constants.js +2 -0
- package/lib/esm/auth/constants.js.map +1 -1
- package/lib/esm/auth/decorators.js +4 -1
- package/lib/esm/auth/decorators.js.map +1 -1
- package/lib/esm/auth/index.js +1 -0
- package/lib/esm/auth/index.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.js +8 -2
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/events-module/DecafStreamModule.js +14 -3
- package/lib/esm/events-module/DecafStreamModule.js.map +1 -1
- package/lib/esm/events-module/EventsController.js +30 -7
- package/lib/esm/events-module/EventsController.js.map +1 -1
- package/lib/esm/events-module/EventsSubscriptionController.js +72 -0
- package/lib/esm/events-module/EventsSubscriptionController.js.map +1 -0
- package/lib/esm/events-module/ObserverSubscriptionRegistry.js +43 -0
- package/lib/esm/events-module/ObserverSubscriptionRegistry.js.map +1 -0
- package/lib/esm/events-module/constant.js +1 -0
- package/lib/esm/events-module/constant.js.map +1 -1
- package/lib/esm/events-module/index.js +3 -0
- package/lib/esm/events-module/index.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +3 -31
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +1 -1
- package/lib/esm/module.js +1 -1
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/request/contextualize.js +42 -0
- package/lib/esm/request/contextualize.js.map +1 -0
- package/lib/esm/request/index.js +1 -0
- package/lib/esm/request/index.js.map +1 -1
- package/lib/types/auth/AuthMiddleware.d.cts +9 -0
- package/lib/types/auth/AuthMiddleware.d.mts +9 -0
- package/lib/types/auth/DecafAuthHandler.d.cts +6 -4
- package/lib/types/auth/DecafAuthHandler.d.mts +6 -4
- package/lib/types/auth/DecafAuthModule.d.cts +3 -2
- package/lib/types/auth/DecafAuthModule.d.mts +3 -2
- package/lib/types/auth/constants.d.cts +2 -0
- package/lib/types/auth/constants.d.mts +2 -0
- package/lib/types/auth/decorators.d.cts +1 -0
- package/lib/types/auth/decorators.d.mts +1 -0
- package/lib/types/auth/index.d.cts +1 -0
- package/lib/types/auth/index.d.mts +1 -0
- package/lib/types/events-module/DecafStreamModule.d.cts +2 -1
- package/lib/types/events-module/DecafStreamModule.d.mts +2 -1
- package/lib/types/events-module/EventsController.d.cts +6 -2
- package/lib/types/events-module/EventsController.d.mts +6 -2
- package/lib/types/events-module/EventsSubscriptionController.d.cts +17 -0
- package/lib/types/events-module/EventsSubscriptionController.d.mts +17 -0
- package/lib/types/events-module/ObserverSubscriptionRegistry.d.cts +13 -0
- package/lib/types/events-module/ObserverSubscriptionRegistry.d.mts +13 -0
- package/lib/types/events-module/constant.d.cts +1 -0
- package/lib/types/events-module/constant.d.mts +1 -0
- package/lib/types/events-module/index.d.cts +3 -0
- package/lib/types/events-module/index.d.mts +3 -0
- package/lib/types/index.d.cts +3 -3
- package/lib/types/index.d.mts +3 -3
- package/lib/types/request/contextualize.d.cts +2 -0
- package/lib/types/request/contextualize.d.mts +2 -0
- package/lib/types/request/index.d.cts +1 -0
- package/lib/types/request/index.d.mts +1 -0
- package/lib/types/types.d.cts +7 -2
- package/lib/types/types.d.mts +7 -2
- package/package.json +1 -1
package/dist/for-nest.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{apply as e,Metadata as t,Decoration as r,DecorationKeys as o}from"@decaf-ts/decoration";import{InjectablesKeys as s,DefaultInjectablesConfig as i}from"@decaf-ts/injectable-decorators";import{Delete as n,Patch as a,Put as c,Post as p,Get as u,applyDecorators as d,createParamDecorator as l,InternalServerErrorException as f,Injectable as h,Scope as m,Inject as g,Optional as y,UseInterceptors as v,SetMetadata as b,Query as E,Module as A,Controller as P,Param as O,Response as R,Catch as w,NotFoundException as T,NotAcceptableException as S,HttpException as D,UnauthorizedException as x,ForbiddenException as _,BadRequestException as C,ConflictException as $,UnprocessableEntityException as q,UseFilters as I,Logger as N,Global as k,Sse as M}from"@nestjs/common";import{Model as F,ValidationKeys as L,ModelBuilder as U}from"@decaf-ts/decorator-validation";import{isOperationBlocked as B,PreparedStatementKeys as j,UUID as G,Adapter as H,UnsupportedError as W,OrderDirection as z,ModelService as Q,AuthorizationError as Y,Service as J,Repository as X,TransactionOperationKeys as V,Context as K,PersistenceKeys as Z,ForbiddenError as ee,DefaultAdapterFlags as te,injectableServiceKey as re,PersistenceService as oe}from"@decaf-ts/core";import{isArray as se,isString as ie,pickBy as ne,negate as ae}from"lodash";import{ApiExcludeEndpoint as ce,ApiParam as pe,ApiBearerAuth as ue,ApiSecurity as de,ApiQuery as le,ApiOperation as fe,ApiOkResponse as he,ApiNoContentResponse as me,ApiTags as ge,ApiExtraModels as ye,ApiBody as ve,ApiCreatedResponse as be,getSchemaPath as Ee,ApiBadRequestResponse as Ae,ApiUnprocessableEntityResponse as Pe,ApiNotFoundResponse as Oe,DocumentBuilder as Re,SwaggerModule as we}from"@nestjs/swagger";import{OperationKeys as Te,BulkCrudOperationKeys as Se,InternalError as De,BaseError as xe,DBKeys as _e,BadRequestError as Ce,ConflictError as $e,ValidationError as qe}from"@decaf-ts/db-decorators";import{__decorate as Ie,__param as Ne,__metadata as ke}from"tslib";import{REQUEST as Me,Reflector as Fe,APP_INTERCEPTOR as Le,ModuleRef as Ue,ContextIdFactory as Be,RouterModule as je}from"@nestjs/core";import{Logging as Ge,toPascalCase as He,toKebabCase as We,LoggedEnvironment as ze}from"@decaf-ts/logging";import{RequestContext as Qe,AuthHandler as Ye,DecafController as Je,ModelControllerFactory as Xe,requestToContextTransformer as Ve}from"@decaf-ts/for-http/server";import{tap as Ke,Observable as Ze,interval as et,merge as tt}from"rxjs";import{readFileSync as rt}from"fs";import*as ot from"path";import st from"yaml";import{tap as it,map as nt}from"rxjs/operators";const at="swagger",ct={API_OPERATION:at+"/apiOperation",API_RESPONSE:at+"/apiResponse",API_PRODUCES:at+"/apiProduces",API_CONSUMES:at+"/apiConsumes",API_TAGS:at+"/apiUseTags",API_CALLBACKS:at+"/apiCallbacks",API_PARAMETERS:at+"/apiParameters",API_HEADERS:at+"/apiHeaders",API_MODEL_PROPERTIES:at+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:at+"/apiModelPropertiesArray",API_SECURITY:at+"/apiSecurity",API_EXCLUDE_ENDPOINT:at+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:at+"/apiExcludeController",API_EXTRA_MODELS:at+"/apiExtraModels",API_EXTENSION:at+"/apiExtension",API_SCHEMA:at+"/apiSchema",API_DEFAULT_GETTER:at+"/apiDefaultGetter",API_LINK:at+"/apiLink"};function pt(e,t){if(!e)return[e,t];if(t)return[e,t];const r=se(e);return[r?e[0]:e,r]}const ut=e=>void 0===e;function dt(e){if("function"==typeof e)return dt(e());if(Array.isArray(e))return e;if("object"!=typeof e)return[];const t=Object.values(e).filter(e=>"number"==typeof e).map(e=>e.toString());return Object.keys(e).filter(e=>!t.includes(e)).map(t=>e[t])}function lt(e){return e.filter(ie).length>0?"string":"number"}function ft(e,t,r=!0){return(o,s)=>{const i=Reflect.getMetadata(ct.API_MODEL_PROPERTIES_ARRAY,o)||[],n=":"+s;i.includes(n)||Reflect.defineMetadata(ct.API_MODEL_PROPERTIES_ARRAY,[...i,":"+s],o);const a=Reflect.getMetadata(e,o,s);if(a){const i=ne(t,ae(ut)),n=r?{...a,...i}:{...i,...a};Reflect.defineMetadata(e,n,o,s)}else{const r=o?.constructor?._OPENAPI_METADATA_FACTORY?.()[s]?.type??Reflect.getMetadata("design:type",o,s);Reflect.defineMetadata(e,{type:r,required:!1,...ne(t,ae(ut))},o,s)}}}function ht(e={}){return mt(e)}function mt(e={},t=!0){const[r,o]=pt(e.type,e.isArray);if((s=e={...e,type:r,isArray:o}).isArray&&"enum"in s&&void 0!==s.enum){e.type="array";const t=dt(e.enum);e.items={type:lt(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=dt(e.enum);e.enum=t,e.type=lt(t)}var s;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),ft(ct.API_MODEL_PROPERTIES,e,t)}function gt(t,r,o){const s={GET:[Te.READ,u],POST:[Te.CREATE,p],PUT:[Te.UPDATE,c],PATCH:[Te.UPDATE,a],DELETE:[Te.DELETE,n]},[i,d]=s[r],l=vt(r,o);return l?B(t,l.kind,l.value)?e(ce()):e(d(o)):B(t,i)?e(ce()):e(d(o))}function yt(t,r,o){const s={GET:[Se.READ_ALL,u],POST:[Se.CREATE_ALL,p],PUT:[Se.UPDATE_ALL,c],PATCH:[Se.UPDATE_ALL,a],DELETE:[Se.DELETE_ALL,n]},[i,d]=s[r],l=o?vt(r,o):void 0;return l?B(t,l.kind,l.value)?e(ce()):e(d(o)):B(t,"bulk",i)?e(ce()):e(d(o))}function vt(e,t){if(!t)return;const r=t.replace(/^\/+|\/+$/g,""),o={"listBy/:key":j.LIST_BY,"paginateBy/:key/:page":j.PAGE_BY,"find/:value":j.FIND,"page/:value":j.PAGE,"findOneBy/:key/:value":j.FIND_ONE_BY,"findBy/:key/:value":j.FIND_BY,"statement/:method/*args":"statement","countOf/:field":j.COUNT_OF,"maxOf/:field":j.MAX_OF,"minOf/:field":j.MIN_OF,"avgOf/:field":j.AVG_OF,"sumOf/:field":j.SUM_OF,"distinctOf/:field":j.DISTINCT_OF,"groupOf/:field":j.GROUP_OF};if(r.startsWith("query/"))return{kind:"query",value:r.replace(/^query\//,"")};const s=o[r];return s?{kind:"statement",value:s}:"GET"===e&&""===r?{kind:"crud",value:Te.READ}:void 0}function bt(e=[]){const t=e.map(e=>pe({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return d(...t)}const Et=l((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),s=o.class;if(!s)throw new f(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new s(e)):new s(r):r}),At=l((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},s=e??Object.keys(o),i=s.map(e=>o[e]);return{raw:o,valuesInOrder:i,keysInOrder:s}});function Pt(e=[]){const t=e.map(e=>e.name);return At(t)}const Ot=l((e,t)=>{const r={...t.switchToHttp().getRequest().query??{}};if(void 0!==r.limit){const e=Number(r.limit);Number.isNaN(e)||(r.limit=e)}if(void 0!==r.offset){const e=Number(r.offset);Number.isNaN(e)||(r.offset=e)}if(void 0!==r.bookmark){const e=Number(r.bookmark);r.bookmark=Number.isNaN(e)?r.bookmark:e}return r}),Rt="DecafModuleOptions",wt="DecafAdapter",Tt="DecafTaskService",St="DecafRoute",Dt=Symbol("DecafHandlers"),xt="DecafExpose",_t="DecafControllerConfig",Ct=Symbol("decaf:context");function $t(...e){return r=>(t.set(r,xt,!e.length||e),r)}function qt(e){return r=>(t.set(r,_t,e),r)}const It=Symbol("AUTH_HANDLER"),Nt="auth:meta",kt="isPublic",Mt="requiredRoles",Ft="skipModelRoles";let Lt=class extends Qe{constructor(e){super({headersOf:e=>e?.headers||void 0},e),this.req=e,this.uuid=G.instance.generate(),this.request=e}get headers(){return this.getOrUndefined("headers")}put(e){let t;try{t=this.get("overrides")}catch(e){t={}}this.accumulate({overrides:Object.assign(t,e)})}};Lt=Ie([h({scope:m.REQUEST}),Ne(0,g(Me)),ke("design:paramtypes",[Object])],Lt);let Ut=class{constructor(e,t,r){this.reflector=e,this.requestContext=t,this.authHandler=r}async intercept(e,t){const r=Ge.for(this).for(this.intercept),o=this.reflector.getAllAndOverride(kt,[e.getHandler(),e.getClass()]),s=this.reflector.get(Nt,e.getHandler())??this.reflector.get(Nt,e.getClass()),i=this.reflector.getAllAndOverride(Mt,[e.getHandler(),e.getClass()]),n=this.reflector.getAllAndOverride(Ft,[e.getHandler(),e.getClass()])?void 0:s;r.verbose("Intercepted request"+(s?" for "+s:"")),o?r.debug("Public route \u2014 skipping auth"):this.authHandler?await this.authHandler.authorize(e,n,i,this.requestContext):r.debug("No auth handler registered"),await this.applyTransformers();const a=this.requestContext.getOrUndefined("user"),c=this.requestContext.getOrUndefined("organization");if(a||c){const e=this.requestContext.get("logger").for({user:a,organization:c});this.requestContext.accumulate({logger:e})}return t.handle()}async applyTransformers(){const e=H.flavoursToTransform();if(e)for(const t of e){const e=H.transformerFor(t);if(!e)continue;const r=e.from?e:new e,o=await r.from(this.requestContext);o&&this.requestContext.accumulate(o)}}};function Bt(e){const t=e?"string"==typeof e?e:e.name:void 0,r=[ue(),v(Ut)];return t&&r.push(b(Nt,t)),d(...r)}function jt(){return d(b(kt,!0))}function Gt(...e){return d(de("bearer"),b(Mt,e),v(Ut))}function Ht(e){const t={GET:u,POST:p,PUT:c,PATCH:a,DELETE:n}[e];if(!t)throw new W(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}Ut=Ie([h({scope:m.REQUEST}),Ne(2,y()),Ne(2,g(It)),ke("design:paramtypes",[Fe,Lt,Object])],Ut);const Wt=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function zt(e,t,r,o=!1){const s=Ht(r),i=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(Wt),n=[];return"GET"===r&&o&&n.push(le({name:"direction",required:!1,enum:z,description:"the sort order when applicable"}),le({name:"limit",required:!1,description:"limit or page size when applicable"}),le({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[s(t),...i.map(pe),...n,fe({summary:`Retrieve records using according to "${e}".`}),he({description:"Result successfully retrieved."}),me({description:"No content returned by the method."})],params:[Pt(i),E()]}}function Qt(e,t,r,o){const s=e?.prototype??e;o.method.forEach(e=>e(s,t,r)),o.params?.forEach((e,r)=>e(s,t,r))}function Yt(e,t,...r){if(e instanceof Q)return"function"==typeof e[t]?e[t](...r):e.statement(t,...r);if("function"==typeof e[t])return e[t](...r);throw new De(`Persistence method "${t}" not found on ${e?.constructor?.name}`)}function Jt(e){return async function(t,r){const o=this.log.for(e);try{o.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:s,limit:i,offset:n}=r;return await Yt(this.persistence(this.ctx),e,...t.valuesInOrder,s,i,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),i=`Custom query "${e}" failed`,(s=t)instanceof xe?s:new De(s instanceof Error?`${i}: ${s.message}`:i)}var s,i}}function Xt(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}class Vt extends Ye{parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}extractFromAuth(e){const t=e.switchToHttp().getRequest(),r=this.parseRequest(t);if(!r)throw new Y("Unauthenticated");return{user:r,roles:[r]}}}class Kt extends Vt{}var Zt;let er=Zt=class{static forRoot(e={}){const t=[Ut];return e.handler&&(t.push(e.handler),t.push({provide:It,useClass:e.handler})),e.global&&t.push({provide:Le,useExisting:Ut}),{module:Zt,global:e.global??!1,providers:t,exports:[Ut,It]}}};var tr;er=Zt=Ie([A({})],er);let rr=tr=class{constructor(e,t){this.handlers=e,this.context=t}async exec(e,t){Ge.for(tr.name).for(this.exec).debug(`CONTEXT ${this.context.uuid} running ${this.handlers.length} handlers for request ${e.method} ${e.url}`);for(const r of this.handlers)await r.handle(this.context,e,t)}};rr=tr=Ie([h({scope:m.REQUEST}),Ne(0,g(Dt)),ke("design:paramtypes",[Array,Lt])],rr);let or=class{constructor(e){this.ctx=e}intercept(e,t){let r=e.switchToHttp().getResponse();return t.handle().pipe(Ke(e=>{r=this.ctx.toResponse(r)}))}};or=Ie([h(),ke("design:paramtypes",[Lt])],or);class sr extends Je{constructor(e,t){super(e),this.clientContext=e}}class ir extends sr{constructor(e,t){super(e,t),this.clientContext=e}persistence(e){if(!this._persistence)try{this._persistence=J.get(this.class)}catch{try{this._persistence=Q.getService(this.class)}catch{this._persistence=X.forModel(this.class)}}const t=(e??this.clientContext).toOverrides();return e?this._persistence instanceof X?this._persistence.override(t):this._persistence.for(t):this._persistence}}const nr=new Map;function ar(e,r,o=new Set){if(!V.includes(e))return r;const s=(e=>(nr.has(e)||nr.set(e,new WeakMap),nr.get(e)))(e),i=s.get(r);if(i)return i;const n=[Te.UPDATE,Se.UPDATE_ALL].includes(e);class a{}s.set(r,a),Object.defineProperty(a,"name",{value:`${He(r.name)}${He(e)}DTO`});const c=(()=>{try{return F.pk(r)}catch{return}})(),p=c?F.pkProps(r):void 0,u=c?Reflect.getMetadata("design:type",r.prototype,c):void 0,d=u===Number||u===BigInt,l=!!p?.generated||!!c&&(F.generatedBySequence(r,c)||lr(r,c)||d),f=Array.from(new Set(t.properties(r)||[])),h=new Set(F.relations(r)||[]),m=[];for(const e of f)e&&(h.has(e)||e===c&&!n&&l||e!==c&&lr(r,e)||m.push(e));for(const e of m){const t=fr(r,e),o=!!t?.[L.REQUIRED],s=hr(r,e)??Reflect.getMetadata("design:type",r.prototype,e),i={required:o};s&&(i.type=s),ht(i)(a.prototype,e);const n=Reflect.getMetadata("design:type",r.prototype,e)??s;void 0!==n&&Reflect.defineMetadata("design:type",n,a.prototype,e),Object.defineProperty(a.prototype,e,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}for(const s of h){const i=t.relations(r,s);if(!i)throw new De(`Metadata for relation ${s} not found`);let c=i.class;if("function"!=typeof c||c.name||(c=c()),!c||"function"!=typeof c)throw new De(`Type for relation ${s} not found`);if(!F.get(c.name))continue;const p=t.validationFor(r,s),u=!!p?.[L.LIST],d=!!p?.[L.REQUIRED];if(o.has(c)){pr(a,s,dr(c),u,d);continue}const l=ar(e,c,new Set(o).add(r));n?ur(a,s,c,l,u,d):cr(a,s,l,u,d)}return a}function cr(e,t,r,o,s){ht({type:r,required:s,isArray:o})(e.prototype,t),Reflect.defineMetadata("design:type",o?Array:r,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function pr(e,t,r,o,s){ht(o?{type:"array",items:{type:r},required:s}:{type:"integer"===r?Number:String,required:s})(e.prototype,t),Reflect.defineMetadata("design:type",o?Array:"integer"===r?Number:String,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function ur(e,t,r,o,s,i){const n=Reflect.getMetadata(ct.API_EXTRA_MODELS,e)||[];n.includes(o)||Reflect.defineMetadata(ct.API_EXTRA_MODELS,[...n,o],e);const a=[{$ref:"#/components/schemas/"+o.name},{type:dr(r)}];ht(s?{type:"array",required:i,oneOf:a}:{type:Object,required:i,oneOf:a})(e.prototype,t),Reflect.defineMetadata("design:type",s?Array:Object,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function dr(e){try{const t=F.pkProps(e),r=t?.type;return r===Number||r===BigInt?"integer":"string"}catch{return"string"}}function lr(e,t){let r=e;for(;r&&r!==Object&&r!==Function;){if(F.generated(r,t))return!0;r=Object.getPrototypeOf(r)}return!1}function fr(e,r){let o=e;for(;o&&o!==Object&&o!==Function;){const e=t.validationFor(o,r);if(e)return e;o=Object.getPrototypeOf(o)}}function hr(e,r){let o=e;for(;o&&o!==Object&&o!==Function;){const e=t.type(o,r);if(e)return e;o=Object.getPrototypeOf(o)}}H.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.innerGet(Symbol.for("transformers"),r)}).bind(H),H.flavoursToTransform=(()=>{const e=t.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(H),K.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};const mr=U.prototype;if(mr.decorateClass||(mr.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),mr.Auth=function(e){return this.decorateClass(Bt(e))},!mr.__hasClassDecoratorSupport){const e=mr.build;mr.build=function(){let t=e.call(this);const r=this._classDecorators;if(r?.length)for(const e of r){const r=e(t);r&&(t=r)}return t},mr.__hasClassDecoratorSupport=!0}var gr;class yr{static{this.log=Ge.for(yr.name)}static toDecafError(e,t){return e instanceof xe?e:new De(e instanceof Error?`${t}: ${e.message}`:t)}static getPersistence(e){try{return J.get(e)}catch(t){try{return Q.getService(e)}catch(t){return X.forModel(e)}}}static createQueryRoutesFromRepository(e,r=Z.QUERY){const o=e instanceof Q?e.repo:e,s=t.get(o.constructor,t.key(Z.QUERY))??{},i=t.get(e.constructor,t.key(St))??{};class n extends ir{get class(){throw new De("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(i)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),o=yr.createComplexQueryHandler(e);yr.defineMethod(n,e,o);const s=Ht(t.httpMethod)(r||void 0),i=yr.getQueryDecorators(e,r,t.httpMethod);yr.applyDecorators(n,e,[s,...i])}for(const[e,t]of Object.entries(s)){const o=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),s=yr.createComplexQueryHandler(e);yr.defineMethod(n,e,s);const i=Ht("GET")(o||void 0),a=yr.getQueryDecorators(e,o,"GET",!0);yr.applyDecorators(n,e,[i,...a])}return n}static create(e,r,o){const s=yr.log.for(yr.create),i=F.tableName(e),n=We(i),a=e.name,c=yr.getPersistence(e),p=c instanceof Q?c.repo:c,u=t.get(e,t.key(_t)),d=r?.[e.name],l={...o||{},...u||{},...d||{}},f=Xe.create(e,p,l).__routes__,{getPK:h,apiProperties:m,path:g}=yr.getRouteParametersFromModel(e);s.debug(`Creating controller for model: ${a} with ${f?.length??0} factory routes`);const y=l.auth;let v=gr=class extends ir{static get class(){return e}get class(){return e}constructor(t){super(t,gr.name),this.pk=F.pk(e),s.info(`Registering dynamic controller for model: ${this.class.name} route: /${n}`)}};var E;if(v=gr=Ie([P(n),ge(a),ye(e),ke("design:paramtypes",[Lt])],v),E=v,y?.public?jt()(E):y?.roles?.length?Gt(...y.roles)(E):Bt(e)(E),y?.skipModelRoles&&b(Ft,!0)(E),f){const t=[...f].sort((e,t)=>{const r=e.path.split("/").filter(Boolean),o=t.path.split("/").filter(Boolean),s=r.filter(e=>e.startsWith(":")).length,i=o.filter(e=>e.startsWith(":")).length,n=r.length-s,a=o.length-i;return n!==a?a-n:s!==i?s-i:0});for(const r of t){const t=r.implementation?.name||r.method.toLowerCase(),o=yr.matchRoute(t,r,g,m,h,e,a);if(!o)continue;const{methodName:s,handler:i,decorators:n,paramDecorators:c}=o;if(yr.defineMethod(v,s,i)){const e=Ht(r.method)(r.path.replace(/^\/+|\/+$/g,"")||void 0);yr.applyDecorators(v,s,[e,...n],c)}}}return v}static getRouteParametersFromModel(e){const r=F.pk(e),o=t.get(e,t.key(_e.COMPOSED,r)),s=o?.args??[],i=Array.isArray(s)&&s.length>0?Array.from(new Set([...s])):Array.from(new Set([r])),n=t.description(e)??"";return{path:":"+i.join("/:"),description:n,apiProperties:i.map(r=>({name:r,description:t.description(e,r),required:!0,type:String})),getPK:(...e)=>o?.separator?e.join(o.separator):e.join("")}}static routeParamDecorators(e){let t=0;return e.split("/").filter(Boolean).flatMap(e=>e.startsWith(":")||e.startsWith("*")?[{decorator:O(e.slice(1)),index:t++}]:[])}static defineMethod(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1,configurable:!0,enumerable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}static applyDecorators(e,t,r,o=[]){const s=e?.prototype??e,i=Object.getOwnPropertyDescriptor(s,t);r.forEach(e=>e(s,t,i)),o.forEach(({decorator:e,index:r})=>e(s,t,r))}static matchRoute(e,t,r,o,s,i,n){const{method:a,path:c}=t,p=c.replace(/^\/+|\/+$/g,""),u=t.implementation;if("POST"===a&&""===p)return yr.createRegistration("create",u,yr.createCreateDecorators(i,n),[{decorator:Et(),index:0},{decorator:R({passthrough:!0}),index:1}]);if("POST"===a&&"bulk"===p)return yr.createRegistration("createAll",u,yr.bulkCreateDecorators(i,n),[{decorator:Et(),index:0},{decorator:R({passthrough:!0}),index:1}]);if("GET"===a&&"bulk"===p)return yr.createRegistration("readAll",u,yr.bulkReadDecorators(i,n),[{decorator:E("ids"),index:0}]);if("PUT"===a&&"bulk"===p)return yr.createRegistration("updateAll",u,yr.bulkUpdateDecorators(i,n,o),[{decorator:Et(),index:0},{decorator:R({passthrough:!0}),index:1}]);if("DELETE"===a&&"bulk"===p)return yr.createRegistration("deleteAll",u,yr.bulkDeleteDecorators(i,n,o),[{decorator:E("ids"),index:0},{decorator:R({passthrough:!0}),index:1}]);if("GET"===a&&p===r)return yr.createRegistration("read",u,yr.readDecorators(i,n,o,r),yr.routeParamDecorators(p));if("PUT"===a&&p===r){const e=yr.routeParamDecorators(p);return yr.createRegistration("update",u,yr.updateDecorators(i,n,o,r),[{decorator:Et(),index:0},...e.map(({decorator:e,index:t})=>({decorator:e,index:t+1}))])}if("DELETE"===a&&p===r){const e=yr.routeParamDecorators(p);return yr.createRegistration("delete",u,yr.deleteDecorators(i,n,o,r),e)}const d=p.split("/").filter(Boolean);if(d.length>0&&d.every(e=>e.startsWith(":"))&&p!==r){const e=d.map(e=>e.slice(1)).map(e=>({name:e,description:e+" parameter",required:!0,type:String})),t=d.map(e=>e.slice(1)).join("And"),r=yr.routeParamDecorators(p);if("GET"===a)return yr.createRegistration("readBy"+t,u,yr.readDecorators(i,n,e,p),r);if("PUT"===a)return yr.createRegistration("updateBy"+t,u,yr.updateDecorators(i,n,e,p),[{decorator:Et(),index:0},...r.map(({decorator:e,index:t})=>({decorator:e,index:t+1}))]);if("DELETE"===a)return yr.createRegistration("deleteBy"+t,u,yr.deleteDecorators(i,n,e,p),r)}if("GET"===a&&"statement/:method/*args"===p)return yr.createRegistration("statement",u,yr.statementDecorators(i,n),[{decorator:O("method"),index:0},{decorator:O("args"),index:1},{decorator:Ot(),index:2}]);if("GET"===a&&"findOneBy/:key/:value"===p)return yr.createRegistration("findOneBy",u,yr.statementShortcutDecorators(i,n,p,j.FIND_ONE_BY),yr.statementShortcutParams(p));const l={"listBy/:key":j.LIST_BY,"paginateBy/:key/:page":j.PAGE_BY,"find/:value":j.FIND,"page/:value":j.PAGE,"findOneBy/:key/:value":j.FIND_ONE_BY,"findBy/:key/:value":j.FIND_BY,"countOf/:field":j.COUNT_OF,"maxOf/:field":j.MAX_OF,"minOf/:field":j.MIN_OF,"avgOf/:field":j.AVG_OF,"sumOf/:field":j.SUM_OF,"distinctOf/:field":j.DISTINCT_OF,"groupOf/:field":j.GROUP_OF}[p];if(l&&"GET"===a)return yr.createRegistration(yr.statementMethodName(p),u,yr.statementShortcutDecorators(i,n,p,l),yr.statementShortcutParams(p));if("GET"===a&&p.startsWith("query/")){const e=p.replace(/^query\//,"").split("/")[0];return yr.createRegistration(e,u,yr.getQueryDecorators(e,p,"GET",!0),yr.complexQueryParams(p))}const f=p.split("/").filter(Boolean),h=new Set(["listBy","findBy","findByPaginate","findOneBy","paginateBy","find","page","countOf","maxOf","minOf","avgOf","sumOf","distinctOf","groupOf","statement","bulk","query"]);if(f.length>0&&!p.startsWith("query/")&&!p.startsWith("statement/")&&!h.has(f[0])){const t=f.filter(e=>e.startsWith(":")).map(e=>e.slice(1)).map(e=>({name:e,description:e+" parameter for the query",required:!0,type:String}));return yr.createRegistration(e,u,[...t.map(e=>pe(e)),fe({summary:`Retrieve records using "${e}".`}),he({description:"Result successfully retrieved."}),me({description:"No content returned by the method."})],yr.routeParamDecorators(p))}}static createRegistration(e,t,r,o){return{methodName:e,handler:t,decorators:r,paramDecorators:o}}static statementMethodName(e){return e.split("/")[0]}static statementShortcutParams(e){const t=e.split("/").filter(e=>e.startsWith(":")),r=[];return t.forEach((e,t)=>{const o=e.replace(":","");r.push({decorator:O(o),index:t})}),(e.startsWith("listBy/")||e.startsWith("paginateBy/")||e.startsWith("find/")||e.startsWith("page/"))&&r.push({decorator:Ot(),index:t.length}),r}static complexQueryParams(e){const t=e.split("/").filter(e=>e.startsWith(":")),r=[];return t.forEach((e,t)=>{const o=e.replace(":","");r.push({decorator:O(o),index:t})}),e.startsWith("query/")&&r.push({decorator:Ot(),index:t.length}),r}static createComplexQueryHandler(e){return async function t(...r){const o=this.log?.for?.(t);try{o&&o.debug(`Invoking custom query "${e}"`);const{ctx:s}=(await this.logCtx([],e,!0)).for(t),i=this.persistence(s),n=yr.normalizeQueryArgs(r);if(i?.repo&&"function"==typeof i.repo[e])return i.repo[e](...n);if("function"==typeof i[e])return i[e](...n);if(i?.query&&"function"==typeof i.query)return i.query(e,...n);if("function"==typeof i.statement)return i.statement(e,...n,s);throw new De(`Persistence method "${e}" not found on ${i?.constructor?.name}`)}catch(t){throw o&&o.error(`Custom query "${e}" failed`,t),yr.toDecafError(t,`Custom query "${e}" failed`)}}}static extractQueryArgs(e){if(0===e.length)return e;const t=e[e.length-1];if(t&&"object"==typeof t&&!Array.isArray(t)){const t=e.pop(),r=void 0!==t.direction,o=void 0!==t.limit,s=void 0!==t.offset;if(!r&&!o&&!s)return e;const i=[];return r?i.push(t.direction):(o||s)&&i.push(void 0),o&&i.push(t.limit),s&&i.push(t.offset),[...e,...i]}return e}static normalizeQueryArgs(e){const t=yr.extractQueryArgs(e);if(0===t.length)return t;const r=t[t.length-1];if(!r||"object"!=typeof r||Array.isArray(r))return t;const o=r;return void 0!==o.direction||void 0!==o.limit||void 0!==o.offset||void 0!==o.bookmark?(t.pop(),void 0!==o.direction&&t.push(o.direction),void 0!==o.limit&&t.push(o.limit),void 0!==o.offset&&t.push(o.offset),void 0!==o.bookmark&&t.push(o.bookmark),t):(t.pop(),t)}static createCreateDecorators(e,t){return[gt(e,"POST"),fe({summary:`Create a new ${t}.`}),ve({description:"Payload for "+t,type:ar(Te.CREATE,e)}),be({description:t+" created successfully.",schema:{$ref:Ee(e)}}),Ae({description:"Payload validation failed."}),Pe({description:"Repository rejected the provided payload."})]}static bulkCreateDecorators(e,t){return[gt(e,"POST","bulk"),fe({summary:`Create a new ${t}.`}),ve({description:"Payload for "+t,schema:{type:"array",items:{$ref:Ee(e)}}}),be({description:t+" created successfully.",schema:{type:"array",items:{$ref:Ee(e)}}}),Ae({description:"Payload validation failed."}),Pe({description:"Repository rejected the provided payload."})]}static bulkReadDecorators(e,t){return[gt(e,"GET","bulk"),fe({summary:`Retrieve ${t} records by ids.`}),le({name:"ids",required:!0,type:"array"}),he({description:t+" retrieved successfully.",schema:{type:"array",items:{$ref:Ee(e)}}}),Oe({description:`No ${t} record matches the provided identifier.`})]}static bulkUpdateDecorators(e,t,r){return[gt(e,"PUT","bulk"),bt(r),fe({summary:`Replace existing ${t} records with new payloads.`}),ve({description:"Payload for replacing existing records of "+t,schema:{type:"array",$ref:Ee(ar(Te.UPDATE,e))}}),he({description:t+" updated successfully.",schema:{type:"array",items:{$ref:Ee(e)}}}),Oe({description:`No ${t} record matches the provided identifier.`}),Ae({description:"Payload validation failed."})]}static bulkDeleteDecorators(e,t,r){return[gt(e,"DELETE","bulk"),bt(r),fe({summary:`Delete ${t} records by ids.`}),le({name:"ids",required:!0,type:"array"}),he({description:t+" deleted successfully.",schema:{type:"array",items:{$ref:Ee(e)}}}),Oe({description:`No ${t} record matches the provided identifier.`})]}static readDecorators(e,t,r,o){return[gt(e,"GET",o),bt(r),fe({summary:`Retrieve a ${t} record by id.`}),he({description:t+" retrieved successfully.",schema:{$ref:Ee(e)}}),Oe({description:`No ${t} record matches the provided identifier.`})]}static updateDecorators(e,t,r,o){return[gt(e,"PUT",o),bt(r),fe({summary:`Replace an existing ${t} record with a new payload.`}),ve({description:"Payload for replacing an existing record of "+t,type:ar(Te.UPDATE,e)}),he({description:t+" updated successfully.",schema:{$ref:Ee(e)}}),Oe({description:`No ${t} record matches the provided identifier.`}),Ae({description:"Payload validation failed."})]}static deleteDecorators(e,t,r,o){return[gt(e,"DELETE",o),bt(r),fe({summary:`Delete a ${t} record by id.`}),he({description:t+" deleted successfully.",schema:{$ref:Ee(e)}}),Oe({description:`No ${t} record matches the provided identifier.`})]}static statementDecorators(e,t){return[gt(e,"GET","statement/:method/*args"),fe({summary:`Executes a prepared statement on ${t}.`}),pe({name:"method",description:"the prepared statement to execute"}),pe({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),le({name:"direction",required:!0,enum:z,description:"the sort order when applicable"}),le({name:"limit",required:!0,description:"limit or page size when applicable"}),le({name:"offset",required:!0,description:"offset or bookmark when applicable"}),he({description:t+" listed found."}),Oe({description:`No ${t} record matches the provided identifier.`})]}static statementShortcutDecorators(e,t,r,o){const s=[gt(e,"GET",r),fe({summary:`Retrieve ${t} records.`}),he({description:t+" retrieved successfully."})];return r.split("/").filter(e=>e.startsWith(":")).forEach(e=>{const t=e.replace(":","");s.push(pe({name:t,description:`The ${t} parameter`}))}),(r.startsWith("listBy/")||r.startsWith("paginateBy/")||r.startsWith("find/")||r.startsWith("page/"))&&s.push(le({name:"direction",required:!0,enum:z,description:"the sort order"})),(r.startsWith("paginateBy/")||r.startsWith("page/"))&&s.push(le({name:"limit",required:!1,description:"page size"}),le({name:"offset",required:!1,description:"page number"}),le({name:"bookmark",required:!1,description:"bookmark for cursor pagination"})),(r.startsWith("findOneBy/")||r.startsWith("findBy/"))&&s.push(Oe({description:`No ${t} record matches the provided identifier.`})),o!==j.COUNT_OF&&o!==j.AVG_OF&&o!==j.SUM_OF||s.push(he({description:`Result for ${t}.`,type:Number})),o===j.DISTINCT_OF&&s.push(he({description:`Distinct values for ${t}.`,type:[String]})),s}static getQueryDecorators(e,t,r,o=!1){var s;const i=[...(s=t,s.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1))).map(e=>({name:e,description:e+" parameter for the query",required:!0,type:String})).map(e=>pe(e)),fe({summary:`Retrieve records using "${e}".`}),he({description:"Result successfully retrieved."}),me({description:"No content returned by the method."})];return"GET"===r&&o&&i.push(le({name:"direction",required:!1,enum:z,description:"the sort order when applicable"}),le({name:"limit",required:!1,description:"limit or page size"}),le({name:"offset",required:!1,description:"offset or bookmark"})),i}}function vr(e){var r;let o=class{static{r=this}static{this.log=Ge.for(r.name).for(e)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>Q.forModel(e)}))}static isExposed(r,o){const s=o?.[r.name],i=void 0!==s?s:t.get(r,t.key(xt));return void 0===i||!0===i||!!Array.isArray(i)&&i.includes(e)}static forRoot(e,t={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const s=H.models(e).filter(e=>this.isExposed(e,t.controllerExposure));for(const e of s)Q.forModel(e);let i=[];t.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),i=this.createModelServices(s),o.info(`Auto-services completed. ${i.length} services initialized.`));const n={};!1===t.aggregations&&(n.allowGroupingQueries=!1);const a=s.map(e=>yr.create(e,t.controllerConfig,n));return o.info(`Generated ${a.length} controllers`),{module:r,controllers:a,providers:[...i]}}};return o=r=Ie([A({})],o),Object.assign(o,"name",{value:"DecafModule"+e}),o}r.for(s.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,i):i),h({scope:t.singleton?m.DEFAULT:m.REQUEST,durable:!t.singleton||void 0}))}).apply(),r.for(s.INJECT).extend({decorator:(e,t)=>(t,r,o)=>g(e||t)(t,r,o)}).apply(),r.for(L.REQUIRED).extend(ht({required:!0})).apply(),r.for(L.MAX).extend({decorator:e=>ht({maximum:e,required:!1})}).apply(),r.for(L.MIN).extend({decorator:e=>ht({minimum:e,required:!1})}).apply(),r.for(L.MAX_LENGTH).extend({decorator:e=>ht({maxLength:e,required:!1})}).apply(),r.for(L.MIN_LENGTH).extend({decorator:e=>ht({minLength:e,required:!1})}).apply(),r.for(L.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),ht({type:e,required:!1})(t,r))}).apply(),r.for(L.DATE).extend({decorator:e=>ht({type:String,format:"date-time",required:!1})}).apply(),r.for(L.ENUM).extend({decorator:e=>ht({enum:Array.isArray(e)?e:Object.values(e),required:!1})}).apply(),r.for(L.PATTERN).extend({decorator:e=>ht({pattern:"string"==typeof e?e:e.source,required:!1})}).apply(),r.for(Z.COLUMN).extend({decorator:e=>ht({name:e,required:!1})}).apply(),r.for(o.DESCRIPTION).extend({decorator:e=>ht({description:e,required:!1})}).apply(),r.for(Z.AUTH).extend({decorator:Bt}).apply();class br extends ee{constructor(e){super(e,br.name)}}class Er extends xe{constructor(e){super(Er.name,e,429)}}const Ar=new Map([[x,e=>new Y(e)],[_,e=>new ee(e)],[C,e=>new Ce(e)],[$,e=>new $e(e)],[q,e=>new qe(e)]]);let Pr=class{constructor(e){this.moduleRef=e}async catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),s=r.getRequest(),i="production"===ze.env;let n;if(e instanceof T||e instanceof W)n=(e=new S(e.message)).getStatus();else if(!(e instanceof xe)){const t=this.decafErrorFor(e);t?e=t(e.message):429===e.status?e=new Er(e.message):e instanceof D?n=e.getStatus():e=new De(e.message)}await this.logError(s,e),o.status(e.code||n).json({status:e.code||n,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:s.url,method:s.method})}decafErrorFor(e){for(const[t,r]of Ar)if(e instanceof t)return r}async logError(e,t){const r=`Unhandled error on ${e?.method} ${e?.url}`;try{(await this.resolveLogger(e)).error(r,t)}catch{try{Ge.get().error(r,t)}catch{}}}async resolveLogger(e){if(this.moduleRef)try{const t=Be.getByRequest(e),r=await this.moduleRef.resolve(Lt,t,{strict:!1});if(r?.logger)return r.logger}catch{}return Ge.get()}};function Or(){return I(new Pr)}function Rr(){return v(or)}Pr=Ie([w(),h(),Ne(0,y()),ke("design:paramtypes",[Ue])],Pr);const wr={path:"docs",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},topbarBgColor:"#000000"};class Tr{constructor(e){this.options={...e}}customCSS(){let e="";return this.options.topbarIconPath&&(e+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),e+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||wr.topbarBgColor}; }\n `}getCustomOptions(){const e={};return this.options.faviconPath&&(e.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...e,customCss:this.customCSS(),swaggerOptions:{persistAuthorization:this.options.persistAuthorization}}}b64(e,t=!1){const r=ot.join(this.options.assetsPath||"",e),o=rt(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}class Sr{constructor(e,t){this.app=e,this.options=t}createDocument(){const e=this.options.path?this.options.description+""+`<br><br><a href="${this.options.openApiJsonPath}">OpenAPI JSON Spec</a> | `+`<a href="${this.options.openApiYamlPath}">OpenAPI YAML Spec</a>`:this.options.description,t=(new Re).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||wr.auth).build();return we.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}registerOpenApiRoute(e,t,r){if(!e)return;const o=this.app.getHttpAdapter();e=e.startsWith("/")?e:"/"+e,o.get(e,(e,s)=>{o.reply(s,r(),200,{"Content-Type":t})})}setupSwagger(){const e=this.createDocument(),t=new Tr({title:this.options.title,path:this.options.path||wr.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});we.setup(this.options.path||wr.path,this.app,e,{...t.getCustomOptions(),jsonDocumentUrl:this.options.openApiJsonPath?""+this.options.openApiJsonPath:void 0,yamlDocumentUrl:this.options.openApiYamlPath?""+this.options.openApiYamlPath:void 0}),this.registerOpenApiRoute(this.options.openApiJsonPath,"application/json",()=>e),this.registerOpenApiRoute(this.options.openApiYamlPath,"application/x-yaml",()=>st.stringify(e))}}class Dr{static get logger(){return this._logger||(this._logger=new N("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new N("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new br(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(o),this}static useHelmet(e){try{const t=require("helmet");this.app.use(t(e)),this.logger.log("Helmet middleware enabled successfully.")}catch{this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(e){return new Sr(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor,openApiJsonPath:e.openApiJsonPath,openApiYamlPath:e.openApiYamlPath}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...e){return this.app.useGlobalFilters(...e.length>0?e:[new Pr(this.app.get(Ue,{strict:!1}))]),this}static useGlobalInterceptors(...e){return e.length>0&&this.app.useGlobalInterceptors(...e),this}static async start(e=Number(process.env.PORT)||3e3,t=void 0,r=!0){this.app.listen(e,t).then(async()=>{if(r){const e=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+e)}})}}var xr;let _r=xr=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){const t={headers:e.headers,overrides:{}},r=(e=>{const t=e.headers;function r(e){if(e)return(Array.isArray(e)?e[0]:e).split(",").map(e=>e.trim()).filter(Boolean)[0]}return r(t?.["x-forwarded-for"])??r(t?.["x-real-ip"])??r(t?.["X-Forwarded-For"])??r(t?.["X-Real-IP"])??e.ip})(e),o=Ge.get().for({ip:r});this.requestContext.accumulate(Object.assign({},te,{logger:o,timestamp:new Date,operation:`${e.method} ${e.url}`},t))}async intercept(e,t){const r=e.switchToHttp().getRequest(),o=e.switchToHttp().getResponse(),s=Ge.for(xr).for(this.intercept);return s.debug(`CONTEXT ${this.requestContext.uuid} - request: ${r.method} ${r.url}`),await this.contextualize(r),s.debug(`CONTEXT ${this.requestContext.uuid} contextualized - request: ${r.method} ${r.url}`),await this.executor.exec(r,o),s.debug(`CONTEXT ${this.requestContext.uuid} executors finished - request: ${r.method} ${r.url}`),t.handle()}};_r=xr=Ie([h({scope:m.REQUEST}),ke("design:paramtypes",[Lt,rr])],_r);const Cr=new Map;function $r(){return Array.from(Cr.values())}function qr(e,t){Cr.has(e)||Cr.set(e,{provide:e,useFactory:t})}function Ir(e){return(t,r,o)=>{let s=e;if(void 0===s){const e=Reflect.getMetadata("design:paramtypes",t)||[];s=e[o]}if(void 0===s)throw new De(`@Service() could not determine an injection type for parameter ${o} of ${t.name}. Provide an explicit argument, e.g. @Service(SomeService).`);const i="string"!=typeof s&&"function"==typeof(n=s)&&n.prototype instanceof F;var n;const a=i?s.name+"Service":re(s);return qr(a,()=>{if(i)try{return J.get(s)}catch{return Q.forModel(s)}return J.get(s)}),g(a)(t,r,o)}}function Nr(e,t){return(r,o,s)=>{const i=((e,t)=>t?`${e.name}Repository@${t}`:e.name+"Repository")(e,t);return qr(i,()=>X.forModel(e,t)),g(i)(r,o,s)}}var kr;let Mr=class{static{kr=this}static get persistence(){if(!this._persistence)throw new De("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=Ge.for(kr)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static forRoot(e){const t=this.log.for(this.forRoot),r=$r();return{module:kr,providers:[{provide:Rt,useValue:e},{provide:wt,useValue:this.persistence?.client},{provide:Dt,useFactory:()=>e.handlers?.map(e=>(t.info("Registered request handler: "+e.name),new e))??[]},Lt,rr,{provide:Le,useClass:_r},...r],exports:[Rt,wt,Dt,Lt,rr,...r.map(e=>e.provide)]}}static async bootPersistence(e){const t=this.log.for(this.bootPersistence);if(!this._persistence){const r=e.conf.map(([e,t,...r])=>r.pop()?[e,t,...r]:[e,t]);this._persistence=new oe,await this._persistence.boot(r);const o=this._persistence.client;for(let t=0;t<o.length;t++){const r=e.conf[t];let s=r.slice(2,r.length).pop();if(!s||!s.from){const e=H.transformerFor(o[t].flavour);if(!e)throw new De(`No transformer found for flavour ${o[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);try{s=e.from?e:new e}catch(e){throw new De(`Failed to boot transformer for ${o[t].flavour}: ${e}`)}}Ve(o[t].flavour)(s)}if(t.info("persistence layer created successfully!"),e.initialization)try{await e.initialization()}catch(e){throw new De("Failed to initialize application: "+e)}}return this.persistence.client}async onApplicationShutdown(){const e=kr.log.for(this.onApplicationShutdown),t=this.moduleRef.get(wt);for(const r of t)try{r&&(e.info("Shutting down "+r.toString()),await r.shutdown())}catch(t){e.error("Failed to shutdown application",t)}try{await J.shutdown()}catch(t){e.error("Failed to shutdown services",t)}}};Mr=kr=Ie([k(),A({}),Ne(0,g(Rt)),ke("design:paramtypes",[Object,Ue])],Mr);const Fr=Symbol("LISTENING_ADAPTERS_FLAVOURS");var Lr;let Ur=Lr=class extends sr{constructor(e,t){super(e,Lr.name),this.adapters=t.map(e=>H.get(e))}listen(){const e=Ge.for(Lr.name),t=new Ze(t=>{const r=("B-"+Math.random().toString(36).slice(2,8)).toUpperCase();e.info(`Creating SSE observer: ${r} for client ${this.clientContext.uuid}`);const o=new class{constructor(){this.observerId=r}refresh(...r){return e.debug(`SSE observer ${this.observerId} received refresh event`),Promise.resolve().then(()=>{const o=(e=>{const[t,r,o,s]=e;return[t?.name??t,r,o,Array.isArray(s)?s.map(e=>{try{return"function"==typeof e.serialize?e.serialize():"string"==typeof e?e:JSON.stringify(e)}catch(e){return}}):s&&"function"==typeof s.serialize?s.serialize():"string"==typeof s?s:JSON.stringify(s)]})(r);t.next({type:"message",data:o}),e.debug(`SSE observer ${this.observerId} event pushed to client`)})}};e.verbose(`Registering observer ${r} across ${this.adapters.length} adapter(s)`);for(const t of this.adapters){const s=t?.constructor?.name??"UnknownAdapter";try{e.debug(`Registering observer ${r} in adapter ${s}`),t.observe(o)}catch(t){e.debug(`Failed to register observer ${r} in adapter ${s}: ${t?.message||t}`),e.error(t)}}return()=>{e.debug("Cleaning up SSE observer "+r);for(const t of this.adapters){const s=t?.constructor?.name??"UnknownAdapter";try{e.debug(`Unregistering observer ${r} from adapter ${s}`),t.unObserve(o)}catch(t){e.debug(`Failed during cleanup of observer ${r} in adapter ${s}: ${t?.message||t}`),e.error(t)}}}}),r=et(15e3).pipe(it(()=>{e.debug("Sending heartbeat")}),nt(()=>({type:"heartbeat",data:{ts:(new Date).toISOString()}})));return tt(t,r)}listenForModel(e){const t=Ge.for(Lr.name);return new Ze(e=>{const r=new class{refresh(...t){return Promise.resolve().then(()=>{e.next({data:t})})}};try{for(const e of this.adapters)e.observe(r)}catch(t){e.error("Failed to observe event: "+(t.message||t))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(e){t.error(e)}}})}};var Br;Ie([M(),ke("design:type",Function),ke("design:paramtypes",[]),ke("design:returntype",Ze)],Ur.prototype,"listen",null),Ie([M("/:model"),Ne(0,E("model")),ke("design:type",Function),ke("design:paramtypes",[String]),ke("design:returntype",Ze)],Ur.prototype,"listenForModel",null),Ur=Lr=Ie([P(),Ne(1,g(Fr)),ke("design:paramtypes",[Lt,Array])],Ur);let jr=Br=class{static forFlavours(e,t="events"){return{module:Br,controllers:[Ur],imports:[je.register([{path:t.replace(/^\//,""),module:Br}])],providers:[Lt,{provide:Fr,useValue:e??[]}]}}};var Gr;jr=Br=Ie([A({})],jr);let Hr=Gr=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r}=e,o=(await Mr.bootPersistence(e)).map(e=>e.flavour),s=[Mr.forRoot(e)];return t&&o.forEach(t=>{s.push(vr(t).forRoot(t,{autoServices:r,controllerExposure:e.controllerExposure,controllerConfig:e.controllerConfig,aggregations:e.aggregations}))}),e.observerOptions?.enableObserverEvents&&s.push(jr.forFlavours(e.observerOptions.observerFlavours||o)),{module:Gr,imports:s}}};async function Wr(){}function zr(e){const t=F.get(e);if(!t)throw new De("Failed to find repository for "+e);return X.forModel(t)}Hr=Gr=Ie([A({})],Hr);const Qr="##VERSION##",Yr="##COMMIT##",Jr="##FULL_VERSION##",Xr="##PACKAGE##";t.allowReregistration(!0),t.registerLibrary(Xr,Qr),t.allowReregistration(!1);export{It as AUTH_HANDLER,Nt as AUTH_META_KEY,gt as ApiOperationFromModel,bt as ApiParamsFromModel,ht as ApiProperty,Bt as Auth,Ut as AuthInterceptor,yt as BulkApiOperationFromModel,Yr as COMMIT,br as CorsError,wt as DECAF_ADAPTER_ID,Ct as DECAF_CONTEXT_KEY,_t as DECAF_CONTROLLER_CONFIG,xt as DECAF_EXPOSE,Dt as DECAF_HANDLERS,Rt as DECAF_MODULE_OPTIONS,St as DECAF_ROUTE,Tt as DECAF_TASK_SERVICE_ID,ct as DECORATORS,at as DECORATORS_PREFIX,Vt as DecafAuthHandler,er as DecafAuthModule,Et as DecafBody,sr as DecafController,Mr as DecafCoreModule,Pr as DecafExceptionFilter,rr as DecafHandlerExecutor,ir as DecafModelController,Hr as DecafModule,Pt as DecafParams,Lt as DecafRequestContext,_r as DecafRequestHandlerInterceptor,or as DecafResponseInterceptor,Kt as DecafRoleAuthHandler,jr as DecafStreamModule,ar as DtoFor,Ur as EventsController,Jr as FULL_VERSION,yr as FromModelController,kt as IS_PUBLIC_KEY,Dr as NestBootstraper,Xr as PACKAGE_NAME,jt as Public,Mt as REQUIRED_ROLES_KEY,Nr as Repository,Gt as RequireRoles,Ft as SKIP_MODEL_ROLES_KEY,Ir as Service,Sr as SwaggerBuilder,Or as UseDecafFilter,Rr as UseDecafHeaders,Qr as VERSION,Qt as applyApiDecorators,qt as controllerConfig,mt as createApiPropertyDecorator,ft as createPropertyDecorator,Jt as createRouteHandler,Xt as defineRouteMethod,$t as expose,zt as getApiDecorators,lt as getEnumType,dt as getEnumValues,vr as getModuleFor,$r as getRegisteredDecafProviders,ut as isUndefined,zr as repoForModel,Yt as resolvePersistenceMethod,Wr as runMigrations};
|
|
1
|
+
import{apply as e,Metadata as t,Decoration as r,DecorationKeys as o}from"@decaf-ts/decoration";import{InjectablesKeys as s,DefaultInjectablesConfig as i}from"@decaf-ts/injectable-decorators";import{Delete as n,Patch as a,Put as c,Post as p,Get as u,applyDecorators as d,createParamDecorator as l,InternalServerErrorException as f,Injectable as h,Scope as m,Inject as g,Optional as y,UseInterceptors as b,SetMetadata as v,Query as E,Module as A,RequestMethod as O,Controller as P,Param as R,Response as w,Catch as T,NotFoundException as S,NotAcceptableException as D,HttpException as x,UnauthorizedException as _,ForbiddenException as C,BadRequestException as $,ConflictException as I,UnprocessableEntityException as q,UseFilters as N,Logger as M,Global as k,Sse as F,Body as L}from"@nestjs/common";import{Model as U,ValidationKeys as j,ModelBuilder as B}from"@decaf-ts/decorator-validation";import{isOperationBlocked as G,PreparedStatementKeys as H,UUID as W,Adapter as z,UnsupportedError as Q,OrderDirection as Y,ModelService as J,DefaultAdapterFlags as X,AuthorizationError as V,Service as K,Repository as Z,TransactionOperationKeys as ee,Context as te,PersistenceKeys as re,ForbiddenError as oe,injectableServiceKey as se,PersistenceService as ie}from"@decaf-ts/core";import{isArray as ne,isString as ae,pickBy as ce,negate as pe}from"lodash";import{ApiExcludeEndpoint as ue,ApiParam as de,ApiBearerAuth as le,ApiSecurity as fe,ApiQuery as he,ApiOperation as me,ApiOkResponse as ge,ApiNoContentResponse as ye,ApiTags as be,ApiExtraModels as ve,ApiBody as Ee,ApiCreatedResponse as Ae,getSchemaPath as Oe,ApiBadRequestResponse as Pe,ApiUnprocessableEntityResponse as Re,ApiNotFoundResponse as we,DocumentBuilder as Te,SwaggerModule as Se}from"@nestjs/swagger";import{OperationKeys as De,BulkCrudOperationKeys as xe,InternalError as _e,BaseError as Ce,DBKeys as $e,BadRequestError as Ie,ConflictError as qe,ValidationError as Ne}from"@decaf-ts/db-decorators";import{__decorate as Me,__param as ke,__metadata as Fe}from"tslib";import{REQUEST as Le,Reflector as Ue,APP_INTERCEPTOR as je,ModuleRef as Be,ContextIdFactory as Ge,RouterModule as He}from"@nestjs/core";import{Logging as We,toPascalCase as ze,toKebabCase as Qe,LoggedEnvironment as Ye}from"@decaf-ts/logging";import{RequestContext as Je,AuthHandler as Xe,DecafController as Ve,ModelControllerFactory as Ke,requestToContextTransformer as Ze}from"@decaf-ts/for-http/server";import{tap as et,Observable as tt,interval as rt,merge as ot}from"rxjs";import{readFileSync as st}from"fs";import*as it from"path";import nt from"yaml";import{tap as at,map as ct}from"rxjs/operators";const pt="swagger",ut={API_OPERATION:pt+"/apiOperation",API_RESPONSE:pt+"/apiResponse",API_PRODUCES:pt+"/apiProduces",API_CONSUMES:pt+"/apiConsumes",API_TAGS:pt+"/apiUseTags",API_CALLBACKS:pt+"/apiCallbacks",API_PARAMETERS:pt+"/apiParameters",API_HEADERS:pt+"/apiHeaders",API_MODEL_PROPERTIES:pt+"/apiModelProperties",API_MODEL_PROPERTIES_ARRAY:pt+"/apiModelPropertiesArray",API_SECURITY:pt+"/apiSecurity",API_EXCLUDE_ENDPOINT:pt+"/apiExcludeEndpoint",API_EXCLUDE_CONTROLLER:pt+"/apiExcludeController",API_EXTRA_MODELS:pt+"/apiExtraModels",API_EXTENSION:pt+"/apiExtension",API_SCHEMA:pt+"/apiSchema",API_DEFAULT_GETTER:pt+"/apiDefaultGetter",API_LINK:pt+"/apiLink"};function dt(e,t){if(!e)return[e,t];if(t)return[e,t];const r=ne(e);return[r?e[0]:e,r]}const lt=e=>void 0===e;function ft(e){if("function"==typeof e)return ft(e());if(Array.isArray(e))return e;if("object"!=typeof e)return[];const t=Object.values(e).filter(e=>"number"==typeof e).map(e=>e.toString());return Object.keys(e).filter(e=>!t.includes(e)).map(t=>e[t])}function ht(e){return e.filter(ae).length>0?"string":"number"}function mt(e,t,r=!0){return(o,s)=>{const i=Reflect.getMetadata(ut.API_MODEL_PROPERTIES_ARRAY,o)||[],n=":"+s;i.includes(n)||Reflect.defineMetadata(ut.API_MODEL_PROPERTIES_ARRAY,[...i,":"+s],o);const a=Reflect.getMetadata(e,o,s);if(a){const i=ce(t,pe(lt)),n=r?{...a,...i}:{...i,...a};Reflect.defineMetadata(e,n,o,s)}else{const r=o?.constructor?._OPENAPI_METADATA_FACTORY?.()[s]?.type??Reflect.getMetadata("design:type",o,s);Reflect.defineMetadata(e,{type:r,required:!1,...ce(t,pe(lt))},o,s)}}}function gt(e={}){return yt(e)}function yt(e={},t=!0){const[r,o]=dt(e.type,e.isArray);if((s=e={...e,type:r,isArray:o}).isArray&&"enum"in s&&void 0!==s.enum){e.type="array";const t=ft(e.enum);e.items={type:ht(t),enum:t},delete e.enum}else if("enum"in e&&void 0!==e.enum){const t=ft(e.enum);e.enum=t,e.type=ht(t)}var s;return Array.isArray(e.type)&&(e.type="array",e.items={type:"array",items:{type:e.type[0]}}),mt(ut.API_MODEL_PROPERTIES,e,t)}function bt(t,r,o){const s={GET:[De.READ,u],POST:[De.CREATE,p],PUT:[De.UPDATE,c],PATCH:[De.UPDATE,a],DELETE:[De.DELETE,n]},[i,d]=s[r],l=Et(r,o);return l?G(t,l.kind,l.value)?e(ue()):e(d(o)):G(t,i)?e(ue()):e(d(o))}function vt(t,r,o){const s={GET:[xe.READ_ALL,u],POST:[xe.CREATE_ALL,p],PUT:[xe.UPDATE_ALL,c],PATCH:[xe.UPDATE_ALL,a],DELETE:[xe.DELETE_ALL,n]},[i,d]=s[r],l=o?Et(r,o):void 0;return l?G(t,l.kind,l.value)?e(ue()):e(d(o)):G(t,"bulk",i)?e(ue()):e(d(o))}function Et(e,t){if(!t)return;const r=t.replace(/^\/+|\/+$/g,""),o={"listBy/:key":H.LIST_BY,"paginateBy/:key/:page":H.PAGE_BY,"find/:value":H.FIND,"page/:value":H.PAGE,"findOneBy/:key/:value":H.FIND_ONE_BY,"findBy/:key/:value":H.FIND_BY,"statement/:method/*args":"statement","countOf/:field":H.COUNT_OF,"maxOf/:field":H.MAX_OF,"minOf/:field":H.MIN_OF,"avgOf/:field":H.AVG_OF,"sumOf/:field":H.SUM_OF,"distinctOf/:field":H.DISTINCT_OF,"groupOf/:field":H.GROUP_OF};if(r.startsWith("query/"))return{kind:"query",value:r.replace(/^query\//,"")};const s=o[r];return s?{kind:"statement",value:s}:"GET"===e&&""===r?{kind:"crud",value:De.READ}:void 0}function At(e=[]){const t=e.map(e=>de({name:e.name,description:e.description??"Path parameter: "+e.name,required:e.required??!0,type:e.type??String}));return d(...t)}const Ot=l((e,t)=>{const r=t.switchToHttp().getRequest().body,o=t.getClass(),s=o.class;if(!s)throw new f(`ModelConstructor not found on controller ${o.name}. Ensure the controller was created via FromModelController.`);return r?Array.isArray(r)?r.map(e=>new s(e)):new s(r):r}),Pt=l((e,t)=>{const r=t.switchToHttp().getRequest(),o=r?.params??{},s=e??Object.keys(o),i=s.map(e=>o[e]);return{raw:o,valuesInOrder:i,keysInOrder:s}});function Rt(e=[]){const t=e.map(e=>e.name);return Pt(t)}const wt=l((e,t)=>{const r={...t.switchToHttp().getRequest().query??{}};if(void 0!==r.limit){const e=Number(r.limit);Number.isNaN(e)||(r.limit=e)}if(void 0!==r.offset){const e=Number(r.offset);Number.isNaN(e)||(r.offset=e)}if(void 0!==r.bookmark){const e=Number(r.bookmark);r.bookmark=Number.isNaN(e)?r.bookmark:e}return r}),Tt="DecafModuleOptions",St="DecafAdapter",Dt="DecafTaskService",xt="DecafRoute",_t=Symbol("DecafHandlers"),Ct="DecafExpose",$t="DecafControllerConfig",It=Symbol("decaf:context");function qt(...e){return r=>(t.set(r,Ct,!e.length||e),r)}function Nt(e){return r=>(t.set(r,$t,e),r)}const Mt=Symbol("AUTH_HANDLER"),kt="auth:meta",Ft="isPublic",Lt="requiredRoles",Ut="requiredNamespaces",jt="skipModelRoles",Bt="skipModelNamespaces";let Gt=class extends Je{constructor(e){super({headersOf:e=>e?.headers||void 0},e),this.req=e,this.uuid=W.instance.generate(),this.request=e}get headers(){return this.getOrUndefined("headers")}put(e){let t;try{t=this.get("overrides")}catch(e){t={}}this.accumulate({overrides:Object.assign(t,e)})}};Gt=Me([h({scope:m.REQUEST}),ke(0,g(Le)),Fe("design:paramtypes",[Object])],Gt);let Ht=class{constructor(e,t,r){this.reflector=e,this.requestContext=t,this.authHandler=r}async intercept(e,t){const r=We.for(this).for(this.intercept),o=this.reflector.getAllAndOverride(Ft,[e.getHandler(),e.getClass()]),s=this.reflector.get(kt,e.getHandler())??this.reflector.get(kt,e.getClass()),i=this.reflector.getAllAndOverride(Lt,[e.getHandler(),e.getClass()]),n=this.reflector.getAllAndOverride(Ut,[e.getHandler(),e.getClass()]),a=this.reflector.getAllAndOverride(jt,[e.getHandler(),e.getClass()]),c=this.reflector.getAllAndOverride(Bt,[e.getHandler(),e.getClass()]),p=a?void 0:s;return r.verbose("Intercepted request"+(s?" for "+s:"")),o?r.debug("Public route \u2014 skipping auth"):this.authHandler?await this.authHandler.authorize(e,p,i,n,c,this.requestContext):r.debug("No auth handler registered"),await this.applyTransformers(),t.handle()}async applyTransformers(){const e=z.flavoursToTransform();if(e)for(const t of e){const e=z.transformerFor(t);if(!e)continue;const r=e.from?e:new e,o=await r.from(this.requestContext);o&&this.requestContext.accumulate(o)}}};function Wt(e){const t=e?"string"==typeof e?e:e.name:void 0,r=[le(),b(Ht)];return t&&r.push(v(kt,t)),d(...r)}function zt(){return d(v(Ft,!0))}function Qt(...e){return d(fe("bearer"),v(Lt,e),b(Ht))}function Yt(...e){return d(fe("bearer"),v(Ut,e),b(Ht))}function Jt(e){const t={GET:u,POST:p,PUT:c,PATCH:a,DELETE:n}[e];if(!t)throw new Q(`Unsupported HTTP verb "${e}". No NestJS decorator mapping was found.`);return t}Ht=Me([h({scope:m.REQUEST}),ke(2,y()),ke(2,g(Mt)),Fe("design:paramtypes",[Ue,Gt,Object])],Ht);const Xt=e=>({name:e,description:e+" parameter for the query",required:!0,type:String});function Vt(e,t,r,o=!1){const s=Jt(r),i=(e=>e.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1)))(t).map(Xt),n=[];return"GET"===r&&o&&n.push(he({name:"direction",required:!1,enum:Y,description:"the sort order when applicable"}),he({name:"limit",required:!1,description:"limit or page size when applicable"}),he({name:"offset",required:!1,description:"offset or bookmark when applicable"})),{method:[s(t),...i.map(de),...n,me({summary:`Retrieve records using according to "${e}".`}),ge({description:"Result successfully retrieved."}),ye({description:"No content returned by the method."})],params:[Rt(i),E()]}}function Kt(e,t,r,o){const s=e?.prototype??e;o.method.forEach(e=>e(s,t,r)),o.params?.forEach((e,r)=>e(s,t,r))}function Zt(e,t,...r){if(e instanceof J)return"function"==typeof e[t]?e[t](...r):e.statement(t,...r);if("function"==typeof e[t])return e[t](...r);throw new _e(`Persistence method "${t}" not found on ${e?.constructor?.name}`)}function er(e){return async function(t,r){const o=this.log.for(e);try{o.debug(`Invoking persistence method "${e}" given parameters: ${JSON.stringify(t.valuesInOrder)}`);const{direction:s,limit:i,offset:n}=r;return await Zt(this.persistence(this.ctx),e,...t.valuesInOrder,s,i,n)}catch(t){throw o.error(`Custom query "${e}" failed`,t),i=`Custom query "${e}" failed`,(s=t)instanceof Ce?s:new _e(s instanceof Error?`${i}: ${s.message}`:i)}var s,i}}function tr(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}const rr="__decafRequestContextContextualized";function or(e,t){if(e.getOrUndefined(rr))return!1;const r={headers:t.headers,overrides:{}},o=(e=>{const t=e.headers;function r(e){if(e)return(Array.isArray(e)?e[0]:e).split(",").map(e=>e.trim()).filter(Boolean)[0]}return r(t?.["x-forwarded-for"])??r(t?.["x-real-ip"])??r(t?.["X-Forwarded-For"])??r(t?.["X-Real-IP"])??e.ip})(t),s=e.getOrUndefined("logger"),i=o?(s??We.get()).for({ip:o}):s??We.get();return e.accumulate(Object.assign({},X,{logger:i,timestamp:new Date,operation:`${t.method} ${t.url}`},r,{[rr]:!0})),!0}let sr=class{constructor(e,t){this.authHandler=e,this.requestContext=t}async use(e,t,r){if(or(this.requestContext,e),this.authHandler)try{await this.authHandler.prime(e,this.requestContext)}catch{}await r()}};sr=Me([h({scope:m.REQUEST}),ke(0,y()),ke(0,g(Mt)),Fe("design:paramtypes",[Object,Gt])],sr);class ir extends Xe{isPublicRequest(e){return!1}parseRequest(e){const t=e.headers.authorization?.split(" ")[1];return t}requestFromContext(e){return e.switchToHttp().getRequest()}extractFromRequest(e){const t=this.parseRequest(e);if(!t)throw new V("Unauthenticated");return{user:t,roles:[t]}}}class nr extends ir{}var ar;let cr=ar=class{static forRoot(e={}){const t=[Ht,sr];return e.handler&&(t.push(e.handler),t.push({provide:Mt,useClass:e.handler})),e.global&&t.push({provide:je,useExisting:Ht}),{module:ar,global:e.global??!1,providers:t,exports:[Ht,sr,Mt]}}configure(e){e.apply(sr).forRoutes({path:"*",method:O.ALL})}};var pr;cr=ar=Me([A({})],cr);let ur=pr=class{constructor(e,t){this.handlers=e,this.context=t}async exec(e,t){We.for(pr.name).for(this.exec).debug(`CONTEXT ${this.context.uuid} running ${this.handlers.length} handlers for request ${e.method} ${e.url}`);for(const r of this.handlers)await r.handle(this.context,e,t)}};ur=pr=Me([h({scope:m.REQUEST}),ke(0,g(_t)),Fe("design:paramtypes",[Array,Gt])],ur);let dr=class{constructor(e){this.ctx=e}intercept(e,t){let r=e.switchToHttp().getResponse();return t.handle().pipe(et(e=>{r=this.ctx.toResponse(r)}))}};dr=Me([h(),Fe("design:paramtypes",[Gt])],dr);class lr extends Ve{constructor(e,t){super(e),this.clientContext=e}}class fr extends lr{constructor(e,t){super(e,t),this.clientContext=e}persistence(e){if(!this._persistence)try{this._persistence=K.get(this.class)}catch{try{this._persistence=J.getService(this.class)}catch{this._persistence=Z.forModel(this.class)}}const t=(e??this.clientContext).toOverrides();return e?this._persistence instanceof Z?this._persistence.override(t):this._persistence.for(t):this._persistence}}const hr=new Map;function mr(e,r,o=new Set){if(!ee.includes(e))return r;const s=(e=>(hr.has(e)||hr.set(e,new WeakMap),hr.get(e)))(e),i=s.get(r);if(i)return i;const n=[De.UPDATE,xe.UPDATE_ALL].includes(e);class a{}s.set(r,a),Object.defineProperty(a,"name",{value:`${ze(r.name)}${ze(e)}DTO`});const c=(()=>{try{return U.pk(r)}catch{return}})(),p=c?U.pkProps(r):void 0,u=c?Reflect.getMetadata("design:type",r.prototype,c):void 0,d=u===Number||u===BigInt,l=!!p?.generated||!!c&&(U.generatedBySequence(r,c)||Er(r,c)||d),f=Array.from(new Set(t.properties(r)||[])),h=new Set(U.relations(r)||[]),m=[];for(const e of f)e&&(h.has(e)||e===c&&!n&&l||e!==c&&Er(r,e)||m.push(e));for(const e of m){const t=Ar(r,e),o=!!t?.[j.REQUIRED],s=Or(r,e)??Reflect.getMetadata("design:type",r.prototype,e),i={required:o};s&&(i.type=s),gt(i)(a.prototype,e);const n=Reflect.getMetadata("design:type",r.prototype,e)??s;void 0!==n&&Reflect.defineMetadata("design:type",n,a.prototype,e),Object.defineProperty(a.prototype,e,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}for(const s of h){const i=t.relations(r,s);if(!i)throw new _e(`Metadata for relation ${s} not found`);let c=i.class;if("function"!=typeof c||c.name||(c=c()),!c||"function"!=typeof c)throw new _e(`Type for relation ${s} not found`);if(!U.get(c.name))continue;const p=t.validationFor(r,s),u=!!p?.[j.LIST],d=!!p?.[j.REQUIRED];if(o.has(c)){yr(a,s,vr(c),u,d);continue}const l=mr(e,c,new Set(o).add(r));n?br(a,s,c,l,u,d):gr(a,s,l,u,d)}return a}function gr(e,t,r,o,s){gt({type:r,required:s,isArray:o})(e.prototype,t),Reflect.defineMetadata("design:type",o?Array:r,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function yr(e,t,r,o,s){gt(o?{type:"array",items:{type:r},required:s}:{type:"integer"===r?Number:String,required:s})(e.prototype,t),Reflect.defineMetadata("design:type",o?Array:"integer"===r?Number:String,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function br(e,t,r,o,s,i){const n=Reflect.getMetadata(ut.API_EXTRA_MODELS,e)||[];n.includes(o)||Reflect.defineMetadata(ut.API_EXTRA_MODELS,[...n,o],e);const a=[{$ref:"#/components/schemas/"+o.name},{type:vr(r)}];gt(s?{type:"array",required:i,oneOf:a}:{type:Object,required:i,oneOf:a})(e.prototype,t),Reflect.defineMetadata("design:type",s?Array:Object,e.prototype,t),Object.defineProperty(e.prototype,t,{value:void 0,writable:!0,enumerable:!0,configurable:!0})}function vr(e){try{const t=U.pkProps(e),r=t?.type;return r===Number||r===BigInt?"integer":"string"}catch{return"string"}}function Er(e,t){let r=e;for(;r&&r!==Object&&r!==Function;){if(U.generated(r,t))return!0;r=Object.getPrototypeOf(r)}return!1}function Ar(e,r){let o=e;for(;o&&o!==Object&&o!==Function;){const e=t.validationFor(o,r);if(e)return e;o=Object.getPrototypeOf(o)}}function Or(e,r){let o=e;for(;o&&o!==Object&&o!==Function;){const e=t.type(o,r);if(e)return e;o=Object.getPrototypeOf(o)}}z.transformerFor=(e=>{const r="string"==typeof e?e:e.alias;return t.innerGet(Symbol.for("transformers"),r)}).bind(z),z.flavoursToTransform=(()=>{const e=t.innerGet(Symbol.for("transformers"));if(e)return Object.keys(e)}).bind(z),te.prototype.toResponse=function(e){const t=this.pending();return t&&e.header("x-pending-task",JSON.stringify(t)),e};const Pr=B.prototype;if(Pr.decorateClass||(Pr.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),Pr.Auth=function(e){return this.decorateClass(Wt(e))},!Pr.__hasClassDecoratorSupport){const e=Pr.build;Pr.build=function(){let t=e.call(this);const r=this._classDecorators;if(r?.length)for(const e of r){const r=e(t);r&&(t=r)}return t},Pr.__hasClassDecoratorSupport=!0}var Rr;class wr{static{this.log=We.for(wr.name)}static toDecafError(e,t){return e instanceof Ce?e:new _e(e instanceof Error?`${t}: ${e.message}`:t)}static getPersistence(e){try{return K.get(e)}catch(t){try{return J.getService(e)}catch(t){return Z.forModel(e)}}}static createQueryRoutesFromRepository(e,r=re.QUERY){const o=e instanceof J?e.repo:e,s=t.get(o.constructor,t.key(re.QUERY))??{},i=t.get(e.constructor,t.key(xt))??{};class n extends fr{get class(){throw new _e("Method not implemented.")}constructor(e,t){super(e,t)}}for(const[e,t]of Object.entries(i)){const r=[t.path.replace(/^\/+|\/+$/g,"")].filter(e=>e&&e.trim()).join("/"),o=wr.createComplexQueryHandler(e);wr.defineMethod(n,e,o);const s=Jt(t.httpMethod)(r||void 0),i=wr.getQueryDecorators(e,r,t.httpMethod);wr.applyDecorators(n,e,[s,...i])}for(const[e,t]of Object.entries(s)){const o=[r,e,...(t.fields??[]).map(e=>":"+e)].filter(e=>e&&e.trim()).join("/"),s=wr.createComplexQueryHandler(e);wr.defineMethod(n,e,s);const i=Jt("GET")(o||void 0),a=wr.getQueryDecorators(e,o,"GET",!0);wr.applyDecorators(n,e,[i,...a])}return n}static create(e,r,o){const s=wr.log.for(wr.create),i=U.tableName(e),n=Qe(i),a=e.name,c=wr.getPersistence(e),p=c instanceof J?c.repo:c,u=t.get(e,t.key($t)),d=r?.[e.name],l={...o||{},...u||{},...d||{}},f=Ke.create(e,p,l).__routes__,{getPK:h,apiProperties:m,path:g}=wr.getRouteParametersFromModel(e);s.debug(`Creating controller for model: ${a} with ${f?.length??0} factory routes`);const y=l.auth;let b=Rr=class extends fr{static get class(){return e}get class(){return e}constructor(t){super(t,Rr.name),this.pk=U.pk(e),s.info(`Registering dynamic controller for model: ${this.class.name} route: /${n}`)}};var E;if(b=Rr=Me([P(n),be(a),ve(e),Fe("design:paramtypes",[Gt])],b),E=b,y?.public?zt()(E):y?.roles?.length?Qt(...y.roles)(E):Wt(e)(E),y?.namespaces?.length&&Yt(...y.namespaces)(E),y?.skipModelRoles&&v(jt,!0)(E),y?.skipModelNamespaces&&v(Bt,!0)(E),f){const t=[...f].sort((e,t)=>{const r=e.path.split("/").filter(Boolean),o=t.path.split("/").filter(Boolean),s=r.filter(e=>e.startsWith(":")).length,i=o.filter(e=>e.startsWith(":")).length,n=r.length-s,a=o.length-i;return n!==a?a-n:s!==i?s-i:0});for(const r of t){const t=r.implementation?.name||r.method.toLowerCase(),o=wr.matchRoute(t,r,g,m,h,e,a);if(!o)continue;const{methodName:s,handler:i,decorators:n,paramDecorators:c}=o;if(wr.defineMethod(b,s,i)){const e=Jt(r.method)(r.path.replace(/^\/+|\/+$/g,"")||void 0);wr.applyDecorators(b,s,[e,...n],c)}}}return b}static getRouteParametersFromModel(e){const r=U.pk(e),o=t.get(e,t.key($e.COMPOSED,r)),s=o?.args??[],i=Array.isArray(s)&&s.length>0?Array.from(new Set([...s])):Array.from(new Set([r])),n=t.description(e)??"";return{path:":"+i.join("/:"),description:n,apiProperties:i.map(r=>({name:r,description:t.description(e,r),required:!0,type:String})),getPK:(...e)=>o?.separator?e.join(o.separator):e.join("")}}static routeParamDecorators(e){let t=0;return e.split("/").filter(Boolean).flatMap(e=>e.startsWith(":")||e.startsWith("*")?[{decorator:R(e.slice(1)),index:t++}]:[])}static defineMethod(e,t,r){return Object.defineProperty(e.prototype||e,t,{value:r,writable:!1,configurable:!0,enumerable:!1}),Object.getOwnPropertyDescriptor(e.prototype||e,t)}static applyDecorators(e,t,r,o=[]){const s=e?.prototype??e,i=Object.getOwnPropertyDescriptor(s,t);r.forEach(e=>e(s,t,i)),o.forEach(({decorator:e,index:r})=>e(s,t,r))}static matchRoute(e,t,r,o,s,i,n){const{method:a,path:c}=t,p=c.replace(/^\/+|\/+$/g,""),u=t.implementation;if("POST"===a&&""===p)return wr.createRegistration("create",u,wr.createCreateDecorators(i,n),[{decorator:Ot(),index:0},{decorator:w({passthrough:!0}),index:1}]);if("POST"===a&&"bulk"===p)return wr.createRegistration("createAll",u,wr.bulkCreateDecorators(i,n),[{decorator:Ot(),index:0},{decorator:w({passthrough:!0}),index:1}]);if("GET"===a&&"bulk"===p)return wr.createRegistration("readAll",u,wr.bulkReadDecorators(i,n),[{decorator:E("ids"),index:0}]);if("PUT"===a&&"bulk"===p)return wr.createRegistration("updateAll",u,wr.bulkUpdateDecorators(i,n,o),[{decorator:Ot(),index:0},{decorator:w({passthrough:!0}),index:1}]);if("DELETE"===a&&"bulk"===p)return wr.createRegistration("deleteAll",u,wr.bulkDeleteDecorators(i,n,o),[{decorator:E("ids"),index:0},{decorator:w({passthrough:!0}),index:1}]);if("GET"===a&&p===r)return wr.createRegistration("read",u,wr.readDecorators(i,n,o,r),wr.routeParamDecorators(p));if("PUT"===a&&p===r){const e=wr.routeParamDecorators(p);return wr.createRegistration("update",u,wr.updateDecorators(i,n,o,r),[{decorator:Ot(),index:0},...e.map(({decorator:e,index:t})=>({decorator:e,index:t+1}))])}if("DELETE"===a&&p===r){const e=wr.routeParamDecorators(p);return wr.createRegistration("delete",u,wr.deleteDecorators(i,n,o,r),e)}const d=p.split("/").filter(Boolean);if(d.length>0&&d.every(e=>e.startsWith(":"))&&p!==r){const e=d.map(e=>e.slice(1)).map(e=>({name:e,description:e+" parameter",required:!0,type:String})),t=d.map(e=>e.slice(1)).join("And"),r=wr.routeParamDecorators(p);if("GET"===a)return wr.createRegistration("readBy"+t,u,wr.readDecorators(i,n,e,p),r);if("PUT"===a)return wr.createRegistration("updateBy"+t,u,wr.updateDecorators(i,n,e,p),[{decorator:Ot(),index:0},...r.map(({decorator:e,index:t})=>({decorator:e,index:t+1}))]);if("DELETE"===a)return wr.createRegistration("deleteBy"+t,u,wr.deleteDecorators(i,n,e,p),r)}if("GET"===a&&"statement/:method/*args"===p)return wr.createRegistration("statement",u,wr.statementDecorators(i,n),[{decorator:R("method"),index:0},{decorator:R("args"),index:1},{decorator:wt(),index:2}]);if("GET"===a&&"findOneBy/:key/:value"===p)return wr.createRegistration("findOneBy",u,wr.statementShortcutDecorators(i,n,p,H.FIND_ONE_BY),wr.statementShortcutParams(p));const l={"listBy/:key":H.LIST_BY,"paginateBy/:key/:page":H.PAGE_BY,"find/:value":H.FIND,"page/:value":H.PAGE,"findOneBy/:key/:value":H.FIND_ONE_BY,"findBy/:key/:value":H.FIND_BY,"countOf/:field":H.COUNT_OF,"maxOf/:field":H.MAX_OF,"minOf/:field":H.MIN_OF,"avgOf/:field":H.AVG_OF,"sumOf/:field":H.SUM_OF,"distinctOf/:field":H.DISTINCT_OF,"groupOf/:field":H.GROUP_OF}[p];if(l&&"GET"===a)return wr.createRegistration(wr.statementMethodName(p),u,wr.statementShortcutDecorators(i,n,p,l),wr.statementShortcutParams(p));if("GET"===a&&p.startsWith("query/")){const e=p.replace(/^query\//,"").split("/")[0];return wr.createRegistration(e,u,wr.getQueryDecorators(e,p,"GET",!0),wr.complexQueryParams(p))}const f=p.split("/").filter(Boolean),h=new Set(["listBy","findBy","findByPaginate","findOneBy","paginateBy","find","page","countOf","maxOf","minOf","avgOf","sumOf","distinctOf","groupOf","statement","bulk","query"]);if(f.length>0&&!p.startsWith("query/")&&!p.startsWith("statement/")&&!h.has(f[0])){const t=f.filter(e=>e.startsWith(":")).map(e=>e.slice(1)).map(e=>({name:e,description:e+" parameter for the query",required:!0,type:String}));return wr.createRegistration(e,u,[...t.map(e=>de(e)),me({summary:`Retrieve records using "${e}".`}),ge({description:"Result successfully retrieved."}),ye({description:"No content returned by the method."})],wr.routeParamDecorators(p))}}static createRegistration(e,t,r,o){return{methodName:e,handler:t,decorators:r,paramDecorators:o}}static statementMethodName(e){return e.split("/")[0]}static statementShortcutParams(e){const t=e.split("/").filter(e=>e.startsWith(":")),r=[];return t.forEach((e,t)=>{const o=e.replace(":","");r.push({decorator:R(o),index:t})}),(e.startsWith("listBy/")||e.startsWith("paginateBy/")||e.startsWith("find/")||e.startsWith("page/"))&&r.push({decorator:wt(),index:t.length}),r}static complexQueryParams(e){const t=e.split("/").filter(e=>e.startsWith(":")),r=[];return t.forEach((e,t)=>{const o=e.replace(":","");r.push({decorator:R(o),index:t})}),e.startsWith("query/")&&r.push({decorator:wt(),index:t.length}),r}static createComplexQueryHandler(e){return async function t(...r){const o=this.log?.for?.(t);try{o&&o.debug(`Invoking custom query "${e}"`);const{ctx:s}=(await this.logCtx([],e,!0)).for(t),i=this.persistence(s),n=wr.normalizeQueryArgs(r);if(i?.repo&&"function"==typeof i.repo[e])return i.repo[e](...n);if("function"==typeof i[e])return i[e](...n);if(i?.query&&"function"==typeof i.query)return i.query(e,...n);if("function"==typeof i.statement)return i.statement(e,...n,s);throw new _e(`Persistence method "${e}" not found on ${i?.constructor?.name}`)}catch(t){throw o&&o.error(`Custom query "${e}" failed`,t),wr.toDecafError(t,`Custom query "${e}" failed`)}}}static extractQueryArgs(e){if(0===e.length)return e;const t=e[e.length-1];if(t&&"object"==typeof t&&!Array.isArray(t)){const t=e.pop(),r=void 0!==t.direction,o=void 0!==t.limit,s=void 0!==t.offset;if(!r&&!o&&!s)return e;const i=[];return r?i.push(t.direction):(o||s)&&i.push(void 0),o&&i.push(t.limit),s&&i.push(t.offset),[...e,...i]}return e}static normalizeQueryArgs(e){const t=wr.extractQueryArgs(e);if(0===t.length)return t;const r=t[t.length-1];if(!r||"object"!=typeof r||Array.isArray(r))return t;const o=r;return void 0!==o.direction||void 0!==o.limit||void 0!==o.offset||void 0!==o.bookmark?(t.pop(),void 0!==o.direction&&t.push(o.direction),void 0!==o.limit&&t.push(o.limit),void 0!==o.offset&&t.push(o.offset),void 0!==o.bookmark&&t.push(o.bookmark),t):(t.pop(),t)}static createCreateDecorators(e,t){return[bt(e,"POST"),me({summary:`Create a new ${t}.`}),Ee({description:"Payload for "+t,type:mr(De.CREATE,e)}),Ae({description:t+" created successfully.",schema:{$ref:Oe(e)}}),Pe({description:"Payload validation failed."}),Re({description:"Repository rejected the provided payload."})]}static bulkCreateDecorators(e,t){return[bt(e,"POST","bulk"),me({summary:`Create a new ${t}.`}),Ee({description:"Payload for "+t,schema:{type:"array",items:{$ref:Oe(e)}}}),Ae({description:t+" created successfully.",schema:{type:"array",items:{$ref:Oe(e)}}}),Pe({description:"Payload validation failed."}),Re({description:"Repository rejected the provided payload."})]}static bulkReadDecorators(e,t){return[bt(e,"GET","bulk"),me({summary:`Retrieve ${t} records by ids.`}),he({name:"ids",required:!0,type:"array"}),ge({description:t+" retrieved successfully.",schema:{type:"array",items:{$ref:Oe(e)}}}),we({description:`No ${t} record matches the provided identifier.`})]}static bulkUpdateDecorators(e,t,r){return[bt(e,"PUT","bulk"),At(r),me({summary:`Replace existing ${t} records with new payloads.`}),Ee({description:"Payload for replacing existing records of "+t,schema:{type:"array",$ref:Oe(mr(De.UPDATE,e))}}),ge({description:t+" updated successfully.",schema:{type:"array",items:{$ref:Oe(e)}}}),we({description:`No ${t} record matches the provided identifier.`}),Pe({description:"Payload validation failed."})]}static bulkDeleteDecorators(e,t,r){return[bt(e,"DELETE","bulk"),At(r),me({summary:`Delete ${t} records by ids.`}),he({name:"ids",required:!0,type:"array"}),ge({description:t+" deleted successfully.",schema:{type:"array",items:{$ref:Oe(e)}}}),we({description:`No ${t} record matches the provided identifier.`})]}static readDecorators(e,t,r,o){return[bt(e,"GET",o),At(r),me({summary:`Retrieve a ${t} record by id.`}),ge({description:t+" retrieved successfully.",schema:{$ref:Oe(e)}}),we({description:`No ${t} record matches the provided identifier.`})]}static updateDecorators(e,t,r,o){return[bt(e,"PUT",o),At(r),me({summary:`Replace an existing ${t} record with a new payload.`}),Ee({description:"Payload for replacing an existing record of "+t,type:mr(De.UPDATE,e)}),ge({description:t+" updated successfully.",schema:{$ref:Oe(e)}}),we({description:`No ${t} record matches the provided identifier.`}),Pe({description:"Payload validation failed."})]}static deleteDecorators(e,t,r,o){return[bt(e,"DELETE",o),At(r),me({summary:`Delete a ${t} record by id.`}),ge({description:t+" deleted successfully.",schema:{$ref:Oe(e)}}),we({description:`No ${t} record matches the provided identifier.`})]}static statementDecorators(e,t){return[bt(e,"GET","statement/:method/*args"),me({summary:`Executes a prepared statement on ${t}.`}),de({name:"method",description:"the prepared statement to execute"}),de({name:"args",description:"concatenated list of arguments the prepared statement can accept"}),he({name:"direction",required:!0,enum:Y,description:"the sort order when applicable"}),he({name:"limit",required:!0,description:"limit or page size when applicable"}),he({name:"offset",required:!0,description:"offset or bookmark when applicable"}),ge({description:t+" listed found."}),we({description:`No ${t} record matches the provided identifier.`})]}static statementShortcutDecorators(e,t,r,o){const s=[bt(e,"GET",r),me({summary:`Retrieve ${t} records.`}),ge({description:t+" retrieved successfully."})];return r.split("/").filter(e=>e.startsWith(":")).forEach(e=>{const t=e.replace(":","");s.push(de({name:t,description:`The ${t} parameter`}))}),(r.startsWith("listBy/")||r.startsWith("paginateBy/")||r.startsWith("find/")||r.startsWith("page/"))&&s.push(he({name:"direction",required:!0,enum:Y,description:"the sort order"})),(r.startsWith("paginateBy/")||r.startsWith("page/"))&&s.push(he({name:"limit",required:!1,description:"page size"}),he({name:"offset",required:!1,description:"page number"}),he({name:"bookmark",required:!1,description:"bookmark for cursor pagination"})),(r.startsWith("findOneBy/")||r.startsWith("findBy/"))&&s.push(we({description:`No ${t} record matches the provided identifier.`})),o!==H.COUNT_OF&&o!==H.AVG_OF&&o!==H.SUM_OF||s.push(ge({description:`Result for ${t}.`,type:Number})),o===H.DISTINCT_OF&&s.push(ge({description:`Distinct values for ${t}.`,type:[String]})),s}static getQueryDecorators(e,t,r,o=!1){var s;const i=[...(s=t,s.split("/").filter(e=>e.startsWith(":")).map(e=>e.slice(1))).map(e=>({name:e,description:e+" parameter for the query",required:!0,type:String})).map(e=>de(e)),me({summary:`Retrieve records using "${e}".`}),ge({description:"Result successfully retrieved."}),ye({description:"No content returned by the method."})];return"GET"===r&&o&&i.push(he({name:"direction",required:!1,enum:Y,description:"the sort order when applicable"}),he({name:"limit",required:!1,description:"limit or page size"}),he({name:"offset",required:!1,description:"offset or bookmark"})),i}}function Tr(e){var r;let o=class{static{r=this}static{this.log=We.for(r.name).for(e)}static createModelServices(e){return e.map(e=>({provide:e.name+"Service",useFactory:()=>J.forModel(e)}))}static isExposed(r,o){const s=o?.[r.name],i=void 0!==s?s:t.get(r,t.key(Ct));return void 0===i||!0===i||!!Array.isArray(i)&&i.includes(e)}static forRoot(e,t={}){const o=this.log.for(this.forRoot);o.info("Generating controllers for flavour...");const s=z.models(e).filter(e=>this.isExposed(e,t.controllerExposure));for(const e of s)J.forModel(e);let i=[];t.autoServices&&(o.info("Auto-services enabled. Initializing service generation."),i=this.createModelServices(s),o.info(`Auto-services completed. ${i.length} services initialized.`));const n={};!1===t.aggregations&&(n.allowGroupingQueries=!1);const a=s.map(e=>wr.create(e,t.controllerConfig,n));return o.info(`Generated ${a.length} controllers`),{module:r,controllers:a,providers:[...i]}}};return o=r=Me([A({})],o),Object.assign(o,"name",{value:"DecafModule"+e}),o}r.for(s.INJECTABLE).extend({decorator:(e,t)=>(t=t||("object"==typeof e?Object.assign(e,i):i),h({scope:t.singleton?m.DEFAULT:m.REQUEST,durable:!t.singleton||void 0}))}).apply(),r.for(s.INJECT).extend({decorator:(e,t)=>(t,r,o)=>g(e||t)(t,r,o)}).apply(),r.for(j.REQUIRED).extend(gt({required:!0})).apply(),r.for(j.MAX).extend({decorator:e=>gt({maximum:e,required:!1})}).apply(),r.for(j.MIN).extend({decorator:e=>gt({minimum:e,required:!1})}).apply(),r.for(j.MAX_LENGTH).extend({decorator:e=>gt({maxLength:e,required:!1})}).apply(),r.for(j.MIN_LENGTH).extend({decorator:e=>gt({minLength:e,required:!1})}).apply(),r.for(j.TYPE).extend({decorator:e=>(t,r)=>("function"!=typeof(e=Array.isArray(e)?e[0]:e)||e.name||(e=e()),gt({type:e,required:!1})(t,r))}).apply(),r.for(j.DATE).extend({decorator:e=>gt({type:String,format:"date-time",required:!1})}).apply(),r.for(j.ENUM).extend({decorator:e=>gt({enum:Array.isArray(e)?e:Object.values(e),required:!1})}).apply(),r.for(j.PATTERN).extend({decorator:e=>gt({pattern:"string"==typeof e?e:e.source,required:!1})}).apply(),r.for(re.COLUMN).extend({decorator:e=>gt({name:e,required:!1})}).apply(),r.for(o.DESCRIPTION).extend({decorator:e=>gt({description:e,required:!1})}).apply(),r.for(re.AUTH).extend({decorator:Wt}).apply();class Sr extends oe{constructor(e){super(e,Sr.name)}}class Dr extends Ce{constructor(e){super(Dr.name,e,429)}}const xr=new Map([[_,e=>new V(e)],[C,e=>new oe(e)],[$,e=>new Ie(e)],[I,e=>new qe(e)],[q,e=>new Ne(e)]]);let _r=class{constructor(e){this.moduleRef=e}async catch(e,t){const r=t.switchToHttp(),o=r.getResponse(),s=r.getRequest(),i="production"===Ye.env;let n;if(e instanceof S||e instanceof Q)n=(e=new D(e.message)).getStatus();else if(!(e instanceof Ce)){const t=this.decafErrorFor(e);t?e=t(e.message):429===e.status?e=new Dr(e.message):e instanceof x?n=e.getStatus():e=new _e(e.message)}await this.logError(s,e),o.status(e.code||n).json({status:e.code||n,error:i?e.name:e.message,timestamp:(new Date).toISOString(),path:s.url,method:s.method})}decafErrorFor(e){for(const[t,r]of xr)if(e instanceof t)return r}async logError(e,t){const r=`Unhandled error on ${e?.method} ${e?.url}`;try{(await this.resolveLogger(e)).error(r,t)}catch{try{We.get().error(r,t)}catch{}}}async resolveLogger(e){if(this.moduleRef)try{const t=Ge.getByRequest(e),r=await this.moduleRef.resolve(Gt,t,{strict:!1});if(r?.logger)return r.logger}catch{}return We.get()}};function Cr(){return N(new _r)}function $r(){return b(dr)}_r=Me([T(),h(),ke(0,y()),Fe("design:paramtypes",[Be])],_r);const Ir={path:"docs",auth:{type:"http",scheme:"bearer",bearerFormat:"JWT",name:"Authorization",description:"Enter JWT token",in:"header"},topbarBgColor:"#000000"};class qr{constructor(e){this.options={...e}}customCSS(){let e="";return this.options.topbarIconPath&&(e+=`.topbar-wrapper { content: url('data:image/png;base64,${this.b64(this.options.topbarIconPath)}'); width: 200px; height: auto; }\n`),e+`\n .topbar-wrapper svg { visibility: hidden; }\n .swagger-ui .topbar { background-color: ${this.options.topbarBgColor||Ir.topbarBgColor}; }\n `}getCustomOptions(){const e={};return this.options.faviconPath&&(e.customfavIcon=this.b64(this.options.faviconPath,!0)),{customSiteTitle:this.options.title,...e,customCss:this.customCSS(),swaggerOptions:{persistAuthorization:this.options.persistAuthorization}}}b64(e,t=!1){const r=it.join(this.options.assetsPath||"",e),o=st(r,{encoding:"base64"});return t?"data:image/png;base64,"+o:o}}class Nr{constructor(e,t){this.app=e,this.options=t}createDocument(){const e=this.options.path?this.options.description+""+`<br><br><a href="${this.options.openApiJsonPath}">OpenAPI JSON Spec</a> | `+`<a href="${this.options.openApiYamlPath}">OpenAPI YAML Spec</a>`:this.options.description,t=(new Te).setTitle(this.options.title).setDescription(e).setVersion(this.options.version||"0.0.1").addBearerAuth(this.options.auth||Ir.auth).build();return Se.createDocument(this.app,t,{extraModels:this.options.extraModels||[]})}registerOpenApiRoute(e,t,r){if(!e)return;const o=this.app.getHttpAdapter();e=e.startsWith("/")?e:"/"+e,o.get(e,(e,s)=>{o.reply(s,r(),200,{"Content-Type":t})})}setupSwagger(){const e=this.createDocument(),t=new qr({title:this.options.title,path:this.options.path||Ir.path,persistAuthorization:this.options.persistAuthorization??!0,assetsPath:this.options.assetsPath,faviconPath:this.options.faviconFilePath,topbarIconPath:this.options.topbarIconFilePath,topbarBgColor:this.options.topbarBgColor});Se.setup(this.options.path||Ir.path,this.app,e,{...t.getCustomOptions(),jsonDocumentUrl:this.options.openApiJsonPath?""+this.options.openApiJsonPath:void 0,yamlDocumentUrl:this.options.openApiYamlPath?""+this.options.openApiYamlPath:void 0}),this.registerOpenApiRoute(this.options.openApiJsonPath,"application/json",()=>e),this.registerOpenApiRoute(this.options.openApiYamlPath,"application/x-yaml",()=>nt.stringify(e))}}class Mr{static get logger(){return this._logger||(this._logger=new M("NestBootstrap")),this._logger}static initialize(e){return this.app=e,this}static enableLogger(e){return this._logger=e||new M("NestBootstrap"),this.app.useLogger(this._logger),this}static enableCors(e=[],t=["GET","POST","PUT","DELETE"]){const r="*"===e?"*":e.map(e=>e.trim().toLowerCase()),o={origin:(e,t)=>e?"*"===r||Array.isArray(r)&&r.includes(e.toLowerCase())?t(null,!0):void t(new Sr(`Origin ${e} not allowed`)):t(null,!0),credentials:!0,methods:t.join(",")};return this.app.enableCors(o),this}static useHelmet(e){try{const t=require("helmet");this.app.use(t(e)),this.logger.log("Helmet middleware enabled successfully.")}catch{this.logger.warn("Helmet not installed. Skipping middleware.")}return this}static setupSwagger(e){return new Nr(this.app,{title:e.title,description:e.description,version:e.version,path:e.path||"api",persistAuthorization:e.persistAuthorization??!0,assetsPath:e.assetsPath,faviconFilePath:e.faviconPath,topbarIconFilePath:e.topbarIconPath,topbarBgColor:e.topbarBgColor,openApiJsonPath:e.openApiJsonPath,openApiYamlPath:e.openApiYamlPath}).setupSwagger(),this}static useGlobalPipes(...e){return e.length>0&&this.app.useGlobalPipes(...e),this}static useGlobalFilters(...e){return this.app.useGlobalFilters(...e.length>0?e:[new _r(this.app.get(Be,{strict:!1}))]),this}static useGlobalInterceptors(...e){return e.length>0&&this.app.useGlobalInterceptors(...e),this}static async start(e=Number(process.env.PORT)||3e3,t=void 0,r=!0){this.app.listen(e,t).then(async()=>{if(r){const e=await this.app.getUrl();this.logger.log("\ud83d\ude80 Application is running at: "+e)}})}}var kr;let Fr=kr=class{constructor(e,t){this.requestContext=e,this.executor=t}async contextualize(e){or(this.requestContext,e)}async intercept(e,t){const r=e.switchToHttp().getRequest(),o=e.switchToHttp().getResponse(),s=We.for(kr).for(this.intercept);return s.debug(`CONTEXT ${this.requestContext.uuid} - request: ${r.method} ${r.url}`),await this.contextualize(r),s.debug(`CONTEXT ${this.requestContext.uuid} contextualized - request: ${r.method} ${r.url}`),await this.executor.exec(r,o),s.debug(`CONTEXT ${this.requestContext.uuid} executors finished - request: ${r.method} ${r.url}`),t.handle()}};Fr=kr=Me([h({scope:m.REQUEST}),Fe("design:paramtypes",[Gt,ur])],Fr);const Lr=new Map;function Ur(){return Array.from(Lr.values())}function jr(e,t){Lr.has(e)||Lr.set(e,{provide:e,useFactory:t})}function Br(e){return(t,r,o)=>{let s=e;if(void 0===s){const e=Reflect.getMetadata("design:paramtypes",t)||[];s=e[o]}if(void 0===s)throw new _e(`@Service() could not determine an injection type for parameter ${o} of ${t.name}. Provide an explicit argument, e.g. @Service(SomeService).`);const i="string"!=typeof s&&"function"==typeof(n=s)&&n.prototype instanceof U;var n;const a=i?s.name+"Service":se(s);return jr(a,()=>{if(i)try{return K.get(s)}catch{return J.forModel(s)}return K.get(s)}),g(a)(t,r,o)}}function Gr(e,t){return(r,o,s)=>{const i=((e,t)=>t?`${e.name}Repository@${t}`:e.name+"Repository")(e,t);return jr(i,()=>Z.forModel(e,t)),g(i)(r,o,s)}}var Hr;let Wr=class{static{Hr=this}static get persistence(){if(!this._persistence)throw new _e("Persistence service not initialized");return this._persistence}static get log(){return this._logger||(this._logger=We.for(Hr)),this._logger}constructor(e,t){this.options=e,this.moduleRef=t}static forRoot(e){const t=this.log.for(this.forRoot),r=Ur();return{module:Hr,providers:[{provide:Tt,useValue:e},{provide:St,useValue:this.persistence?.client},{provide:_t,useFactory:()=>e.handlers?.map(e=>(t.info("Registered request handler: "+e.name),new e))??[]},Gt,ur,{provide:je,useClass:Fr},...r],exports:[Tt,St,_t,Gt,ur,...r.map(e=>e.provide)]}}static async bootPersistence(e){const t=this.log.for(this.bootPersistence);if(!this._persistence){const r=e.conf.map(([e,t,...r])=>r.pop()?[e,t,...r]:[e,t]);this._persistence=new ie,await this._persistence.boot(r);const o=this._persistence.client;for(let t=0;t<o.length;t++){const r=e.conf[t];let s=r.slice(2,r.length).pop();if(!s||!s.from){const e=z.transformerFor(o[t].flavour);if(!e)throw new _e(`No transformer found for flavour ${o[t].flavour}. you should either @requestToContextTransformer or provide a transformer in the config`);try{s=e.from?e:new e}catch(e){throw new _e(`Failed to boot transformer for ${o[t].flavour}: ${e}`)}}Ze(o[t].flavour)(s)}if(t.info("persistence layer created successfully!"),e.initialization)try{await e.initialization()}catch(e){throw new _e("Failed to initialize application: "+e)}}return this.persistence.client}async onApplicationShutdown(){const e=Hr.log.for(this.onApplicationShutdown),t=this.moduleRef.get(St);for(const r of t)try{r&&(e.info("Shutting down "+r.toString()),await r.shutdown())}catch(t){e.error("Failed to shutdown application",t)}try{await K.shutdown()}catch(t){e.error("Failed to shutdown services",t)}}};Wr=Hr=Me([k(),A({}),ke(0,g(Tt)),Fe("design:paramtypes",[Object,Be])],Wr);const zr=Symbol("LISTENING_ADAPTERS_FLAVOURS"),Qr=Symbol("OBSERVER_EVENTS_OPTIONS");let Yr=class{constructor(){this.records=new Map}upsert(e,t=[]){const r={subscriberId:e,topics:new Set(t.filter(Boolean)),updatedAt:new Date};return this.records.set(e,r),r}remove(e){return this.records.delete(e)}get(e){return this.records.get(e)}topicsFor(e){return[...this.records.get(e)?.topics??[]]}matches(e,t){const r=this.records.get(e);return!!r&&!!r.topics.size&&(r.topics.has(t)||r.topics.has("*"))}};var Jr;Yr=Me([h()],Yr);let Xr=Jr=class extends lr{constructor(e,t,r,o){super(e,Jr.name),this.options=r,this.registry=o,this.adapters=t.map(e=>z.get(e))}listen(e){const t=We.for(Jr.name),r=!!this.options.subscriptionMode;if(r&&!e)throw new $("subscriberId is required when subscriptionMode is enabled");const o=e??"",s=new tt(e=>{const s=("B-"+Math.random().toString(36).slice(2,8)).toUpperCase();t.info(`Creating SSE observer: ${s} for client ${this.clientContext.uuid}`);const i=new class{constructor(){this.observerId=s}refresh(...r){return t.debug(`SSE observer ${this.observerId} received refresh event`),Promise.resolve().then(()=>{const o=(e=>{const[t,r,o,s]=e;return[t?.name??t,r,o,Array.isArray(s)?s.map(e=>{try{return"function"==typeof e.serialize?e.serialize():"string"==typeof e?e:JSON.stringify(e)}catch(e){return}}):s&&"function"==typeof s.serialize?s.serialize():"string"==typeof s?s:JSON.stringify(s)]})(r);e.next({type:"message",data:o}),t.debug(`SSE observer ${this.observerId} event pushed to client`)})}},n=r?(e,...t)=>{const r="string"==typeof e?e:e?.name??e?.constructor?.name;return!!r&&this.registry.matches(o,r)}:void 0;t.verbose(`Registering observer ${s} across ${this.adapters.length} adapter(s)`);for(const e of this.adapters){const r=e?.constructor?.name??"UnknownAdapter";try{t.debug(`Registering observer ${s} in adapter ${r}`),e.observe(i,n)}catch(e){t.debug(`Failed to register observer ${s} in adapter ${r}: ${e?.message||e}`),t.error(e)}}return()=>{t.debug("Cleaning up SSE observer "+s);for(const e of this.adapters){const r=e?.constructor?.name??"UnknownAdapter";try{t.debug(`Unregistering observer ${s} from adapter ${r}`),e.unObserve(i)}catch(e){t.debug(`Failed during cleanup of observer ${s} in adapter ${r}: ${e?.message||e}`),t.error(e)}}r&&this.registry.remove(o)}}),i=rt(15e3).pipe(at(()=>{t.debug("Sending heartbeat")}),ct(()=>({type:"heartbeat",data:{ts:(new Date).toISOString()}})));return ot(s,i)}listenForModel(e){const t=We.for(Jr.name);return new tt(e=>{const r=new class{refresh(...t){return Promise.resolve().then(()=>{e.next({data:t})})}};try{for(const e of this.adapters)e.observe(r)}catch(t){e.error("Failed to observe event: "+(t.message||t))}return()=>{try{for(const e of this.adapters)e.unObserve(r)}catch(e){t.error(e)}}})}};var Vr;Me([F(),ke(0,E("subscriberId")),Fe("design:type",Function),Fe("design:paramtypes",[String]),Fe("design:returntype",tt)],Xr.prototype,"listen",null),Me([F("/:model"),ke(0,E("model")),Fe("design:type",Function),Fe("design:paramtypes",[String]),Fe("design:returntype",tt)],Xr.prototype,"listenForModel",null),Xr=Jr=Me([P(),ke(1,g(zr)),ke(2,g(Qr)),Fe("design:paramtypes",[Gt,Array,Object,Yr])],Xr);let Kr=Vr=class extends lr{constructor(e,t,r){super(e,Vr.name),this.options=t,this.registry=r}async subscribe(e){if(!this.options.subscriptionMode)return{enabled:!1};const t=e?.subscriberId||await Promise.resolve(W.instance.generate()),r=Array.isArray(e?.topics)?e.topics:[],o=this.registry.upsert(t,r);return{subscriberId:o.subscriberId,topics:this.registry.topicsFor(o.subscriberId)}}unsubscribe(e){if(!this.options.subscriptionMode)return{enabled:!1};const t=e?.subscriberId;return t?{unsubscribed:this.registry.remove(t),subscriberId:t}:{unsubscribed:!1}}};var Zr;Me([p("subscribe"),ke(0,L()),Fe("design:type",Function),Fe("design:paramtypes",[Object]),Fe("design:returntype",Promise)],Kr.prototype,"subscribe",null),Me([p("unsubscribe"),ke(0,L()),Fe("design:type",Function),Fe("design:paramtypes",[Object]),Fe("design:returntype",Object)],Kr.prototype,"unsubscribe",null),Kr=Vr=Me([P(),ke(1,g(Qr)),Fe("design:paramtypes",[Gt,Object,Yr])],Kr);let eo=Zr=class{static forFlavours(e,t="events",r={}){const o=[Xr];return r.subscriptionMode&&o.push(Kr),{module:Zr,controllers:o,imports:[He.register([{path:t.replace(/^\//,""),module:Zr}])],providers:[Gt,Yr,{provide:zr,useValue:e??[]},{provide:Qr,useValue:r??{}}]}}};var to;eo=Zr=Me([A({})],eo);let ro=to=class{static async forRootAsync(e){const{autoControllers:t,autoServices:r}=e,o=(await Wr.bootPersistence(e)).map(e=>e.flavour),s=[Wr.forRoot(e)];return t&&o.forEach(t=>{s.push(Tr(t).forRoot(t,{autoServices:r,controllerExposure:e.controllerExposure,controllerConfig:e.controllerConfig,aggregations:e.aggregations}))}),e.observerOptions?.enableObserverEvents&&s.push(eo.forFlavours(e.observerOptions.observerFlavours||o,e.observerOptions.observerApiPath??"/events",e.observerOptions)),{module:to,imports:s}}};async function oo(){}function so(e){const t=U.get(e);if(!t)throw new _e("Failed to find repository for "+e);return Z.forModel(t)}ro=to=Me([A({})],ro);const io="##VERSION##",no="##COMMIT##",ao="##FULL_VERSION##",co="##PACKAGE##";t.allowReregistration(!0),t.registerLibrary(co,io),t.allowReregistration(!1);export{Mt as AUTH_HANDLER,kt as AUTH_META_KEY,bt as ApiOperationFromModel,At as ApiParamsFromModel,gt as ApiProperty,Wt as Auth,Ht as AuthInterceptor,sr as AuthMiddleware,vt as BulkApiOperationFromModel,no as COMMIT,Sr as CorsError,St as DECAF_ADAPTER_ID,It as DECAF_CONTEXT_KEY,$t as DECAF_CONTROLLER_CONFIG,Ct as DECAF_EXPOSE,_t as DECAF_HANDLERS,Tt as DECAF_MODULE_OPTIONS,xt as DECAF_ROUTE,Dt as DECAF_TASK_SERVICE_ID,ut as DECORATORS,pt as DECORATORS_PREFIX,ir as DecafAuthHandler,cr as DecafAuthModule,Ot as DecafBody,lr as DecafController,Wr as DecafCoreModule,_r as DecafExceptionFilter,ur as DecafHandlerExecutor,fr as DecafModelController,ro as DecafModule,Rt as DecafParams,Gt as DecafRequestContext,Fr as DecafRequestHandlerInterceptor,dr as DecafResponseInterceptor,nr as DecafRoleAuthHandler,eo as DecafStreamModule,mr as DtoFor,Xr as EventsController,Kr as EventsSubscriptionController,ao as FULL_VERSION,wr as FromModelController,Ft as IS_PUBLIC_KEY,zr as LISTENING_ADAPTERS_FLAVOURS,Mr as NestBootstraper,Qr as OBSERVER_EVENTS_OPTIONS,Yr as ObserverSubscriptionRegistry,co as PACKAGE_NAME,zt as Public,Ut as REQUIRED_NAMESPACES_KEY,Lt as REQUIRED_ROLES_KEY,Gr as Repository,Yt as RequireNamespaces,Qt as RequireRoles,Bt as SKIP_MODEL_NAMESPACES_KEY,jt as SKIP_MODEL_ROLES_KEY,Br as Service,Nr as SwaggerBuilder,Cr as UseDecafFilter,$r as UseDecafHeaders,io as VERSION,Kt as applyApiDecorators,or as contextualizeRequestContext,Nt as controllerConfig,yt as createApiPropertyDecorator,mt as createPropertyDecorator,er as createRouteHandler,tr as defineRouteMethod,qt as expose,Vt as getApiDecorators,ht as getEnumType,ft as getEnumValues,Tr as getModuleFor,Ur as getRegisteredDecafProviders,lt as isUndefined,so as repoForModel,Zt as resolvePersistenceMethod,oo as runMigrations};
|
|
2
2
|
//# sourceMappingURL=for-nest.js.map
|
package/dist/for-nest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-nest.js","sources":["../src/overrides/constants.ts","../src/overrides/helpers.ts","../src/overrides/decoration.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/constants.ts","../src/decaf-model/decorators/expose.ts","../src/decaf-model/decorators/controller-config.ts","../src/auth/constants.ts","../src/request/DecafRequestContext.ts","../src/auth/AuthInterceptor.ts","../src/auth/decorators.ts","../src/decaf-model/decorators/utils.ts","../src/decaf-model/utils.ts","../src/auth/DecafAuthHandler.ts","../src/auth/DecafAuthModule.ts","../src/request/DecafHandlerExecutor.ts","../src/request/DecafResponseInterceptor.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/overrides/ModelBuilderExtensions.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/errors/throttling.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decorators.ts","../src/core-module.ts","../src/events-module/constant.ts","../src/events-module/EventsController.ts","../src/events-module/utils.ts","../src/events-module/DecafStreamModule.ts","../src/module.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DECORATORS_PREFIX","DECORATORS","API_OPERATION","API_RESPONSE","API_PRODUCES","API_CONSUMES","API_TAGS","API_CALLBACKS","API_PARAMETERS","API_HEADERS","API_MODEL_PROPERTIES","API_MODEL_PROPERTIES_ARRAY","API_SECURITY","API_EXCLUDE_ENDPOINT","API_EXCLUDE_CONTROLLER","API_EXTRA_MODELS","API_EXTENSION","API_SCHEMA","API_DEFAULT_GETTER","API_LINK","getTypeIsArrayTuple","input","isArrayFlag","isInputArray","isArray","isUndefined","obj","getEnumValues","enumType","Array","numericValues","Object","values","filter","value","map","toString","keys","key","includes","getEnumType","isString","length","createPropertyDecorator","metakey","metadata","overrideExisting","target","propertyKey","properties","Reflect","getMetadata","defineMetadata","existingMetadata","newMetadata","pickBy","negate","metadataToSave","type","constructor","required","ApiProperty","options","createApiPropertyDecorator","opts","undefined","enum","enumValues","items","ApiOperationFromModel","ModelConstructor","verb","path","httpToCrud","GET","OperationKeys","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","resolveBlockTarget","coreIsOperationBlocked","kind","apply","ApiExcludeEndpoint","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","normalized","replace","statementTargets","PreparedStatementKeys","LIST_BY","PAGE_BY","FIND","PAGE","FIND_ONE_BY","FIND_BY","COUNT_OF","MAX_OF","MIN_OF","AVG_OF","SUM_OF","DISTINCT_OF","GROUP_OF","startsWith","statementValue","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","String","applyDecorators","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_TASK_SERVICE_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_EXPOSE","DECAF_CONTROLLER_CONFIG","DECAF_CONTEXT_KEY","expose","flavours","Metadata","set","controllerConfig","config","AUTH_HANDLER","AUTH_META_KEY","IS_PUBLIC_KEY","REQUIRED_ROLES_KEY","SKIP_MODEL_ROLES_KEY","DecafRequestContext","RequestContext","super","headersOf","request","headers","this","uuid","UUID","instance","generate","getOrUndefined","put","record","overrides","get","e","accumulate","assign","__decorate","Injectable","scope","Scope","REQUEST","__param","Inject","AuthInterceptor","reflector","requestContext","authHandler","intercept","next","log","Logging","for","isPublic","getAllAndOverride","getHandler","modelName","requiredRoles","effectiveModel","verbose","debug","authorize","applyTransformers","user","organization","childLog","logger","handle","Adapter","flavoursToTransform","flavour","transformer","transformerFor","from","Auth","model","resource","decs","ApiBearerAuth","UseInterceptors","push","SetMetadata","Public","RequireRoles","roles","ApiSecurity","HttpVerbToDecorator","decorator","UnsupportedError","Optional","Reflector","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","split","slice","extractPathParams","swaggerQueryParams","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","resolvePersistenceMethod","persistence","args","ModelService","statement","InternalError","createRouteHandler","async","pathParams","queryParams","JSON","stringify","direction","error","fallbackMessage","BaseError","Error","message","defineRouteMethod","ControllerClass","handler","defineProperty","writable","getOwnPropertyDescriptor","DecafAuthHandler","AuthHandler","parseRequest","userRole","authorization","extractFromAuth","AuthorizationError","DecafRoleAuthHandler","DecafAuthModule","DecafAuthModule_1","forRoot","providers","provide","useClass","global","APP_INTERCEPTOR","useExisting","module","exports","Module","DecafHandlerExecutor","DecafHandlerExecutor_1","handlers","context","exec","res","url","DecafResponseInterceptor","response","getResponse","pipe","tap","toResponse","DecafController","HttpDecafController","clientContext","_name","DecafModelController","_persistence","Service","getService","Repository","forModel","toOverrides","override","dtoCache","Map","DtoFor","op","stack","Set","TransactionOperationKeys","cache","has","WeakMap","getDtoCache","cached","isUpdateOp","DynamicDTO","toPascalCase","pkProp","Model","pk","pkPropsMetadata","pkProps","pkDesignType","pkTypeIsNumeric","BigInt","pkIsGenerated","generated","generatedBySequence","isPropertyGeneratedAcrossInheritance","allProps","relations","scalarProps","prop","validation","getValidationAcrossInheritance","isRequired","ValidationKeys","REQUIRED","typeHint","getTypeAcrossInheritance","apiOptions","designType","enumerable","configurable","relation","relationMeta","relationType","meta","validationFor","LIST","addRelationPkRef","getPkOpenApiType","relationDto","add","addRelationUpdate","addRelation","DtoClass","pkTypeName","extraModels","oneOfItems","$ref","oneOf","pkType","current","Function","getPrototypeOf","adapter","alias","bind","Context","pending","header","ModelBuilder","decorateClass","_classDecorators","__hasClassDecoratorSupport","originalBuild","build","result","call","decorated","FromModelController","toDecafError","getPersistence","ModelClazz","e2","createQueryRoutesFromRepository","prefix","PersistenceKeys","QUERY","repo","queryMethods","routeMethods","QueryController","entries","segment","trim","join","createComplexQueryHandler","defineMethod","httpDecorator","httpMethod","getQueryDecorators","objValues","fields","f","create","moduleConfigOverrides","globalDefaults","tableName","toKebabCase","modelClazzName","factoryPersistence","decoratorConfig","moduleOverride","mergedConfig","factoryRoutes","ModelControllerFactory","__routes__","getPK","apiProperties","pkPath","getRouteParametersFromModel","authConfig","auth","DynamicModelController","DynamicModelController_1","info","Controller","ApiTags","ApiExtraModels","public","skipModelRoles","sortedRoutes","sort","a","b","aSegments","Boolean","bSegments","aParamCount","s","bParamCount","aLiteralCount","bLiteralCount","route","implementation","toLowerCase","registration","matchRoute","registeredMethodName","paramDecorators","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","separator","routeParamDecorators","paramIndex","flatMap","Param","methodDecorators","normalizedPath","createRegistration","createCreateDecorators","Response","passthrough","bulkCreateDecorators","bulkReadDecorators","bulkUpdateDecorators","bulkDeleteDecorators","readDecorators","routeParams","updateDecorators","deleteDecorators","fallbackSegments","every","fallbackApiProps","suffix","statementDecorators","statementShortcutDecorators","statementShortcutParams","statementKey","statementMethodName","queryMethod","complexQueryParams","pathSegments","knownPrefixes","segments","seg","i","complexQuery","logCtx","spreadArgs","normalizeQueryArgs","extractQueryArgs","last","queryObj","pop","hasDirection","hasLimit","hasOffset","extras","ApiBody","ApiCreatedResponse","schema","getSchemaPath","ApiBadRequestResponse","ApiUnprocessableEntityResponse","ApiNotFoundResponse","base","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","useFactory","isExposed","exposure","trackedModels","controllerExposure","modelServices","autoServices","aggregations","allowGroupingQueries","controllers","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","CorsError","ForbiddenError","msg","ToManyRequestsError","HTTP_EXCEPTION_TO_DECAF_ERROR","UnauthorizedException","ForbiddenException","BadRequestException","BadRequestError","ConflictException","ConflictError","UnprocessableEntityException","ValidationError","DecafExceptionFilter","moduleRef","exception","host","isProduction","LoggedEnvironment","env","statusCode","NotFoundException","NotAcceptableException","getStatus","decafErrorFor","status","HttpException","logError","code","json","timestamp","Date","toISOString","factory","resolveLogger","contextId","ContextIdFactory","getByRequest","resolve","strict","UseDecafFilter","UseFilters","UseDecafHeaders","Catch","ModuleRef","SWAGGER_UI_CONSTANTS","scheme","bearerFormat","in","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","title","customCss","swaggerOptions","persistAuthorization","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","openApiJsonPath","openApiYamlPath","DocumentBuilder","setTitle","setDescription","setVersion","version","addBearerAuth","SwaggerModule","registerOpenApiRoute","contentType","bodyFactory","httpAdapter","getHttpAdapter","_req","reply","setupSwagger","document","swaggerUI","faviconFilePath","topbarIconFilePath","setup","jsonDocumentUrl","yamlDocumentUrl","YAML","NestBootstraper","_logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","corsOptions","origin","callback","credentials","methods","useHelmet","helmet","require","use","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","process","PORT","listen","then","getUrl","DecafRequestHandlerInterceptor","DecafRequestHandlerInterceptor_1","executor","contextualize","flags","ip","parseIpHeader","extractIp","DefaultAdapterFlags","operation","pendingProviders","getRegisteredDecafProviders","registerProvider","token","parameterIndex","resolved","paramTypes","asModel","injectableServiceKey","CoreService","modelRepositoryToken","CoreRepository","DecafCoreModule","DecafCoreModule_1","decafProviders","useValue","client","H","provider","bootPersistence","trimmed","conf","contr","PersistenceService","boot","clients","c","requestToContextTransformer","initialization","onApplicationShutdown","adapters","shutdown","Global","LISTENING_ADAPTERS_FLAVOURS","EventsController","EventsController_1","events$","Observable","observer","observerId","Math","random","toUpperCase","cb","refresh","Promise","modelConstr","id","payload","serialize","err","normalizeEventResponse","adapterName","observe","unObserve","heartbeat$","interval","ts","merge","listenForModel","Sse","DecafStreamModule","DecafStreamModule_1","forFlavours","imports","RouterModule","register","DecafModule","DecafModule_1","forRootAsync","autoControllers","observerOptions","enableObserverEvents","observerFlavours","runMigrations","repoForModel","m","VERSION","COMMIT","FULL_VERSION","PACKAGE_NAME","allowReregistration","registerLibrary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"for-nest.js","sources":["../src/overrides/constants.ts","../src/overrides/helpers.ts","../src/overrides/decoration.ts","../src/decaf-model/decorators/ApiOperationFromModel.ts","../src/decaf-model/decorators/ApiParamsFromModel.ts","../src/decaf-model/decorators/DecafBody.ts","../src/decaf-model/decorators/DecafParams.ts","../src/constants.ts","../src/decaf-model/decorators/expose.ts","../src/decaf-model/decorators/controller-config.ts","../src/auth/constants.ts","../src/request/DecafRequestContext.ts","../src/auth/AuthInterceptor.ts","../src/auth/decorators.ts","../src/decaf-model/decorators/utils.ts","../src/decaf-model/utils.ts","../src/request/contextualize.ts","../src/auth/AuthMiddleware.ts","../src/auth/DecafAuthHandler.ts","../src/auth/DecafAuthModule.ts","../src/request/DecafHandlerExecutor.ts","../src/request/DecafResponseInterceptor.ts","../src/controllers.ts","../src/factory/openapi/DtoBuilder.ts","../src/overrides/overrides.ts","../src/overrides/ModelBuilderExtensions.ts","../src/decaf-model/FromModelController.ts","../src/decaf-model/DecafModelModule.ts","../src/decoration.ts","../src/factory/errors/cors.ts","../src/factory/errors/throttling.ts","../src/factory/exceptions/DecafErrorFilter.ts","../src/factory/exceptions/decorators.ts","../src/factory/openapi/constants.ts","../src/factory/openapi/SwaggerCustomUI.ts","../src/factory/openapi/SwaggerBuilder.ts","../src/factory/NestBootstraper.ts","../src/interceptors/DecafRequestHandlerInterceptor.ts","../src/decorators.ts","../src/core-module.ts","../src/events-module/constant.ts","../src/events-module/ObserverSubscriptionRegistry.ts","../src/events-module/EventsController.ts","../src/events-module/utils.ts","../src/events-module/EventsSubscriptionController.ts","../src/events-module/DecafStreamModule.ts","../src/module.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DECORATORS_PREFIX","DECORATORS","API_OPERATION","API_RESPONSE","API_PRODUCES","API_CONSUMES","API_TAGS","API_CALLBACKS","API_PARAMETERS","API_HEADERS","API_MODEL_PROPERTIES","API_MODEL_PROPERTIES_ARRAY","API_SECURITY","API_EXCLUDE_ENDPOINT","API_EXCLUDE_CONTROLLER","API_EXTRA_MODELS","API_EXTENSION","API_SCHEMA","API_DEFAULT_GETTER","API_LINK","getTypeIsArrayTuple","input","isArrayFlag","isInputArray","isArray","isUndefined","obj","getEnumValues","enumType","Array","numericValues","Object","values","filter","value","map","toString","keys","key","includes","getEnumType","isString","length","createPropertyDecorator","metakey","metadata","overrideExisting","target","propertyKey","properties","Reflect","getMetadata","defineMetadata","existingMetadata","newMetadata","pickBy","negate","metadataToSave","type","constructor","required","ApiProperty","options","createApiPropertyDecorator","opts","undefined","enum","enumValues","items","ApiOperationFromModel","ModelConstructor","verb","path","httpToCrud","GET","OperationKeys","READ","Get","POST","CREATE","Post","PUT","UPDATE","Put","PATCH","Patch","DELETE","Delete","crudOp","HttpMethodDecorator","resolveBlockTarget","coreIsOperationBlocked","kind","apply","ApiExcludeEndpoint","BulkApiOperationFromModel","BulkCrudOperationKeys","READ_ALL","CREATE_ALL","UPDATE_ALL","DELETE_ALL","normalized","replace","statementTargets","PreparedStatementKeys","LIST_BY","PAGE_BY","FIND","PAGE","FIND_ONE_BY","FIND_BY","COUNT_OF","MAX_OF","MIN_OF","AVG_OF","SUM_OF","DISTINCT_OF","GROUP_OF","startsWith","statementValue","ApiParamsFromModel","props","decorators","p","ApiParamDec","name","description","String","applyDecorators","DecafBody","createParamDecorator","data","ctx","body","switchToHttp","getRequest","controller","getClass","ModelConstr","class","InternalServerErrorException","item","OrderedParams","order","req","original","params","orderList","ordered","k","raw","valuesInOrder","keysInOrder","DecafParams","DecafQuery","_","parsed","query","limit","n","Number","isNaN","offset","bookmark","DECAF_MODULE_OPTIONS","DECAF_ADAPTER_ID","DECAF_TASK_SERVICE_ID","DECAF_ROUTE","DECAF_HANDLERS","Symbol","DECAF_EXPOSE","DECAF_CONTROLLER_CONFIG","DECAF_CONTEXT_KEY","expose","flavours","Metadata","set","controllerConfig","config","AUTH_HANDLER","AUTH_META_KEY","IS_PUBLIC_KEY","REQUIRED_ROLES_KEY","REQUIRED_NAMESPACES_KEY","SKIP_MODEL_ROLES_KEY","SKIP_MODEL_NAMESPACES_KEY","DecafRequestContext","RequestContext","super","headersOf","request","headers","this","uuid","UUID","instance","generate","getOrUndefined","put","record","overrides","get","e","accumulate","assign","__decorate","Injectable","scope","Scope","REQUEST","__param","Inject","AuthInterceptor","reflector","requestContext","authHandler","intercept","next","log","Logging","for","isPublic","getAllAndOverride","getHandler","modelName","requiredRoles","requiredNamespaces","skipModelRoles","skipModelNamespaces","effectiveModel","verbose","debug","authorize","applyTransformers","handle","Adapter","flavoursToTransform","flavour","transformer","transformerFor","from","Auth","model","resource","decs","ApiBearerAuth","UseInterceptors","push","SetMetadata","Public","RequireRoles","roles","ApiSecurity","RequireNamespaces","namespaces","HttpVerbToDecorator","decorator","UnsupportedError","Optional","Reflector","apiParamSpec","getApiDecorators","methodName","routePath","httpVerb","includeQueryParams","NestHttpRouteDec","apiPathParams","split","slice","extractPathParams","swaggerQueryParams","ApiQuery","OrderDirection","method","ApiParam","ApiOperation","summary","ApiOkResponse","ApiNoContentResponse","Query","applyApiDecorators","descriptor","proto","prototype","forEach","d","index","resolvePersistenceMethod","persistence","args","ModelService","statement","InternalError","createRouteHandler","async","pathParams","queryParams","JSON","stringify","direction","error","fallbackMessage","BaseError","Error","message","defineRouteMethod","ControllerClass","handler","defineProperty","writable","getOwnPropertyDescriptor","REQUEST_CONTEXTUALIZED_KEY","contextualizeRequestContext","flags","ip","parseIpHeader","segment","trim","Boolean","extractIp","currentLog","logger","DefaultAdapterFlags","timestamp","Date","operation","url","AuthMiddleware","use","_res","prime","DecafAuthHandler","AuthHandler","isPublicRequest","_request","parseRequest","userRole","authorization","requestFromContext","extractFromRequest","AuthorizationError","user","DecafRoleAuthHandler","DecafAuthModule","DecafAuthModule_1","forRoot","providers","provide","useClass","global","APP_INTERCEPTOR","useExisting","module","exports","configure","consumer","forRoutes","RequestMethod","ALL","Module","DecafHandlerExecutor","DecafHandlerExecutor_1","handlers","context","exec","res","DecafResponseInterceptor","response","getResponse","pipe","tap","toResponse","DecafController","HttpDecafController","clientContext","_name","DecafModelController","_persistence","Service","getService","Repository","forModel","toOverrides","override","dtoCache","Map","DtoFor","op","stack","Set","TransactionOperationKeys","cache","has","WeakMap","getDtoCache","cached","isUpdateOp","DynamicDTO","toPascalCase","pkProp","Model","pk","pkPropsMetadata","pkProps","pkDesignType","pkTypeIsNumeric","BigInt","pkIsGenerated","generated","generatedBySequence","isPropertyGeneratedAcrossInheritance","allProps","relations","scalarProps","prop","validation","getValidationAcrossInheritance","isRequired","ValidationKeys","REQUIRED","typeHint","getTypeAcrossInheritance","apiOptions","designType","enumerable","configurable","relation","relationMeta","relationType","meta","validationFor","LIST","addRelationPkRef","getPkOpenApiType","relationDto","add","addRelationUpdate","addRelation","DtoClass","pkTypeName","extraModels","oneOfItems","$ref","oneOf","pkType","current","Function","getPrototypeOf","adapter","alias","bind","Context","pending","header","ModelBuilder","decorateClass","_classDecorators","__hasClassDecoratorSupport","originalBuild","build","result","call","decorated","FromModelController","toDecafError","getPersistence","ModelClazz","e2","createQueryRoutesFromRepository","prefix","PersistenceKeys","QUERY","repo","queryMethods","routeMethods","QueryController","entries","join","createComplexQueryHandler","defineMethod","httpDecorator","httpMethod","getQueryDecorators","objValues","fields","f","create","moduleConfigOverrides","globalDefaults","tableName","toKebabCase","modelClazzName","factoryPersistence","decoratorConfig","moduleOverride","mergedConfig","factoryRoutes","ModelControllerFactory","__routes__","getPK","apiProperties","pkPath","getRouteParametersFromModel","authConfig","auth","DynamicModelController","DynamicModelController_1","info","Controller","ApiTags","ApiExtraModels","public","sortedRoutes","sort","a","b","aSegments","bSegments","aParamCount","s","bParamCount","aLiteralCount","bLiteralCount","route","implementation","toLowerCase","registration","matchRoute","registeredMethodName","paramDecorators","composed","DBKeys","COMPOSED","composedKeys","uniqueKeys","separator","routeParamDecorators","paramIndex","flatMap","Param","methodDecorators","normalizedPath","createRegistration","createCreateDecorators","Response","passthrough","bulkCreateDecorators","bulkReadDecorators","bulkUpdateDecorators","bulkDeleteDecorators","readDecorators","routeParams","updateDecorators","deleteDecorators","fallbackSegments","every","fallbackApiProps","suffix","statementDecorators","statementShortcutDecorators","statementShortcutParams","statementKey","statementMethodName","queryMethod","complexQueryParams","pathSegments","knownPrefixes","segments","seg","i","complexQuery","logCtx","spreadArgs","normalizeQueryArgs","extractQueryArgs","last","queryObj","pop","hasDirection","hasLimit","hasOffset","extras","ApiBody","ApiCreatedResponse","schema","getSchemaPath","ApiBadRequestResponse","ApiUnprocessableEntityResponse","ApiNotFoundResponse","base","getModuleFor","DecafModelModule","DecafModelModule_1","createModelServices","models","useFactory","isExposed","exposure","trackedModels","controllerExposure","modelServices","autoServices","aggregations","allowGroupingQueries","controllers","Decoration","InjectablesKeys","INJECTABLE","extend","category","cfg","DefaultInjectablesConfig","singleton","DEFAULT","durable","INJECT","MAX","max","maximum","MIN","min","minimum","MAX_LENGTH","maxLength","MIN_LENGTH","minLength","TYPE","DATE","format","ENUM","PATTERN","pat","pattern","source","COLUMN","DecorationKeys","DESCRIPTION","AUTH","CorsError","ForbiddenError","msg","ToManyRequestsError","HTTP_EXCEPTION_TO_DECAF_ERROR","UnauthorizedException","ForbiddenException","BadRequestException","BadRequestError","ConflictException","ConflictError","UnprocessableEntityException","ValidationError","DecafExceptionFilter","moduleRef","exception","host","isProduction","LoggedEnvironment","env","statusCode","NotFoundException","NotAcceptableException","getStatus","decafErrorFor","status","HttpException","logError","code","json","toISOString","factory","resolveLogger","contextId","ContextIdFactory","getByRequest","resolve","strict","UseDecafFilter","UseFilters","UseDecafHeaders","Catch","ModuleRef","SWAGGER_UI_CONSTANTS","scheme","bearerFormat","in","topbarBgColor","SwaggerCustomUI","customCSS","css","topbarIconPath","b64","getCustomOptions","favicon","faviconPath","customSiteTitle","title","customCss","swaggerOptions","persistAuthorization","file","img","filePath","assetsPath","readFileSync","encoding","SwaggerBuilder","app","createDocument","openApiJsonPath","openApiYamlPath","DocumentBuilder","setTitle","setDescription","setVersion","version","addBearerAuth","SwaggerModule","registerOpenApiRoute","contentType","bodyFactory","httpAdapter","getHttpAdapter","_req","reply","setupSwagger","document","swaggerUI","faviconFilePath","topbarIconFilePath","setup","jsonDocumentUrl","yamlDocumentUrl","YAML","NestBootstraper","_logger","Logger","initialize","enableLogger","customLogger","useLogger","enableCors","origins","allowMethods","allowedOrigins","o","corsOptions","origin","callback","credentials","methods","useHelmet","helmet","require","warn","useGlobalPipes","pipes","useGlobalFilters","filters","useGlobalInterceptors","interceptors","start","port","process","PORT","listen","then","getUrl","DecafRequestHandlerInterceptor","DecafRequestHandlerInterceptor_1","executor","contextualize","pendingProviders","getRegisteredDecafProviders","registerProvider","token","parameterIndex","resolved","paramTypes","asModel","injectableServiceKey","CoreService","modelRepositoryToken","CoreRepository","DecafCoreModule","DecafCoreModule_1","decafProviders","useValue","client","H","provider","bootPersistence","trimmed","conf","contr","PersistenceService","boot","clients","c","requestToContextTransformer","initialization","onApplicationShutdown","adapters","shutdown","Global","LISTENING_ADAPTERS_FLAVOURS","OBSERVER_EVENTS_OPTIONS","ObserverSubscriptionRegistry","records","upsert","subscriberId","topics","updatedAt","remove","delete","topicsFor","matches","topic","size","EventsController","EventsController_1","registry","subscriptionMode","activeSubscriberId","events$","Observable","observer","observerId","Math","random","toUpperCase","cb","refresh","Promise","modelConstr","id","payload","serialize","err","normalizeEventResponse","_args","adapterName","observe","unObserve","heartbeat$","interval","ts","merge","listenForModel","Sse","__metadata","EventsSubscriptionController","EventsSubscriptionController_1","subscribe","enabled","unsubscribe","unsubscribed","Body","DecafStreamModule","DecafStreamModule_1","forFlavours","imports","RouterModule","register","DecafModule","DecafModule_1","forRootAsync","autoControllers","observerOptions","enableObserverEvents","observerFlavours","observerApiPath","runMigrations","repoForModel","m","VERSION","COMMIT","FULL_VERSION","PACKAGE_NAME","allowReregistration","registerLibrary"],"mappings":"ukFAAO,MAAMA,GAAoB,UACpBC,GAAa,CACxBC,cAAkBF,GAAH,gBACfG,aAAiBH,GAAH,eACdI,aAAiBJ,GAAH,eACdK,aAAiBL,GAAH,eACdM,SAAaN,GAAH,cACVO,cAAkBP,GAAH,gBACfQ,eAAmBR,GAAH,iBAChBS,YAAgBT,GAAH,cACbU,qBAAyBV,GAAH,sBACtBW,2BAA+BX,GAAH,2BAC5BY,aAAiBZ,GAAH,eACda,qBAAyBb,GAAH,sBACtBc,uBAA2Bd,GAAH,wBACxBe,iBAAqBf,GAAH,kBAClBgB,cAAkBhB,GAAH,gBACfiB,WAAejB,GAAH,aACZkB,mBAAuBlB,GAAH,oBACpBmB,SAAanB,GAAH,qBCuLIoB,GAEdC,EACAC,GAGA,IAAKD,EACH,MAAO,CAACA,EAAoBC,GAE9B,GAAIA,EAEF,MAAO,CAACD,EAAmBC,GAE7B,MAAMC,EAAeC,GAAQH,GAG7B,MAAO,CAFME,EAAeF,EAAM,GAAKA,EAEbE,EAC5B,CChNO,MAAME,GAAeC,QACX,IAARA,EAEH,SAAUC,GACdC,GAEA,GAAwB,mBAAbA,EACT,OAAOD,GAAcC,KAGvB,GAAIC,MAAML,QAAQI,GAChB,OAAOA,EAET,GAAwB,iBAAbA,EACT,MAAO,GAcT,MAAME,EAAgBC,OAAOC,OAAOJ,GACjCK,OAAQC,GAA2B,iBAAVA,GACzBC,IAAKD,GAAeA,EAAME,YAE7B,OAAOL,OAAOM,KAAKT,GAChBK,OAAQK,IAASR,EAAcS,SAASD,IACxCH,IAAKG,GAAQV,EAASU,GAC3B,CAEM,SAAUE,GAAYR,GAE1B,OADkBA,EAAOC,OAAOQ,IAAUC,OAAS,EAChC,SAAW,QAChC,CAEM,SAAUC,GACdC,EACAC,EACAC,GAAmB,GAEnB,MAAA,CAASC,EAAgBC,KACvB,MAAMC,EACJC,QAAQC,YAAYlD,GAAWU,2BAA4BoC,IAAW,GAElET,EAAM,IAAIU,EACXC,EAAWV,SAASD,IACvBY,QAAQE,eACNnD,GAAWU,2BACX,IAAIsC,EAAY,IAAID,GACpBD,GAGJ,MAAMM,EAAmBH,QAAQC,YAAYP,EAASG,EAAQC,GAC9D,GAAIK,EAAkB,CACpB,MAAMC,EAAcC,GAAOV,EAAUW,GAAO/B,KACtCgC,EAAiBX,EACnB,IACKO,KACAC,GAEL,IACKA,KACAD,GAGTH,QAAQE,eAAeR,EAASa,EAAgBV,EAAQC,EAC1D,KAAO,CACL,MAAMU,EAEJX,GAAQY,aAAmC,8BAAMX,IAAcU,MAC/DR,QAAQC,YAAY,cAAeJ,EAAQC,GAE7CE,QAAQE,eACNR,EACA,CACEc,OACAE,UAAU,KACPL,GAAOV,EAAUW,GAAO/B,MAE7BsB,EACAC,EAEJ,CACD,CACH,CAoCM,SAAUa,GACdC,EAA8B,IAE9B,OAAOC,GAA2BD,EACpC,CAEM,SAAUC,GACdD,EAA8B,GAC9BhB,GAAmB,GAEnB,MAAOY,EAAMlC,GAAWJ,GACtB0C,EAAQJ,KACRI,EAAQtC,SAQV,IA/BAwC,EAyBAF,EAAU,IACLA,EACHJ,OACAlC,YAtBOA,SAAW,SAAUwC,QAAsBC,IAAdD,EAAKE,KAyBjB,CACxBJ,EAAQJ,KAAO,QAEf,MAAMS,EAAaxC,GAAcmC,EAAQI,MACzCJ,EAAQM,MAAQ,CACdV,KAAMlB,GAAY2B,GAClBD,KAAMC,UAGDL,EAAQI,IACjB,MAAO,GAAI,SAAUJ,QAA4BG,IAAjBH,EAAQI,KAAoB,CAC1D,MAAMC,EAAaxC,GAAcmC,EAAQI,MAEzCJ,EAAQI,KAAOC,EACfL,EAAQJ,KAAOlB,GAAY2B,EAC7B,CA/CkB,IAClBH,EA0DA,OAVInC,MAAML,QAAQsC,EAAQJ,QACxBI,EAAQJ,KAAO,QACfI,EAAQM,MAAQ,CACdV,KAAM,QACNU,MAAO,CACLV,KAAMI,EAAQJ,KAAK,MAKlBf,GACL1C,GAAWS,qBACXoD,EACAhB,EAEJ,UChKgBuB,GACdC,EACAC,EACAC,GAEA,MAAMC,EAGF,CACFC,IAAK,CAACC,GAAcC,KAAMC,GAC1BC,KAAM,CAACH,GAAcI,OAAQC,GAC7BC,IAAK,CAACN,GAAcO,OAAQC,GAC5BC,MAAO,CAACT,GAAcO,OAAQG,GAC9BC,OAAQ,CAACX,GAAcW,OAAQC,KAG1BC,EAAQC,GAAuBhB,EAAWF,GAC3CxB,EAAS2C,GAAmBnB,EAAMC,GACxC,OAAOzB,EACH4C,EAAuBrB,EAAkBvB,EAAO6C,KAAa7C,EAAOb,OAClE2D,EAAMC,MACND,EAAMJ,EAAoBjB,IAC5BmB,EAAuBrB,EAAkBkB,GACvCK,EAAMC,MACND,EAAMJ,EAAoBjB,GAClC,UASgBuB,GACdzB,EACAC,EACAC,GAEA,MAAMC,EAGF,CACFC,IAAK,CAACsB,GAAsBC,SAAUpB,GACtCC,KAAM,CAACkB,GAAsBE,WAAYlB,GACzCC,IAAK,CAACe,GAAsBG,WAAYhB,GACxCC,MAAO,CAACY,GAAsBG,WAAYd,GAC1CC,OAAQ,CAACU,GAAsBI,WAAYb,KAGtCC,EAAQC,GAAuBhB,EAAWF,GAC3CxB,EAASyB,EAAOkB,GAAmBnB,EAAMC,QAAQP,EACvD,OAAOlB,EACH4C,EAAuBrB,EAAkBvB,EAAO6C,KAAa7C,EAAOb,OAClE2D,EAAMC,MACND,EAAMJ,EAAoBjB,IAC5BmB,EAAuBrB,EAAkB,OAAekB,GACtDK,EAAMC,MACND,EAAMJ,EAAoBjB,GAClC,CACA,SAASkB,GACPnB,EACAC,GAIA,IAAKA,EAAM,OAEX,MAAM6B,EAAa7B,EAAK8B,QAAQ,aAAc,IACxCC,EAA2C,CAC/C,cAAeC,EAAsBC,QACrC,wBAAyBD,EAAsBE,QAC/C,cAAeF,EAAsBG,KACrC,cAAeH,EAAsBI,KACrC,wBAAyBJ,EAAsBK,YAC/C,qBAAsBL,EAAsBM,QAC5C,0BAA2B,YAC3B,iBAAkBN,EAAsBO,SACxC,eAAgBP,EAAsBQ,OACtC,eAAgBR,EAAsBS,OACtC,eAAgBT,EAAsBU,OACtC,eAAgBV,EAAsBW,OACtC,oBAAqBX,EAAsBY,YAC3C,iBAAkBZ,EAAsBa,UAG1C,GAAIhB,EAAWiB,WAAW,UACxB,MAAO,CAAE1B,KAAM,QAAS1D,MAAOmE,EAAWC,QAAQ,WAAY,KAGhE,MAAMiB,EAAiBhB,EAAiBF,GACxC,OAAIkB,EACK,CAAE3B,KAAM,YAAa1D,MAAOqF,GAGxB,QAAThD,GAAiC,KAAf8B,EACb,CAAET,KAAM,OAAQ1D,MAAOyC,GAAcC,WAD9C,CAKF,CCnHM,SAAU4C,GACdC,EAA4B,IAE5B,MAAMC,EAAaD,EAAMtF,IAAKwF,GAC5BC,GAAY,CACVC,KAAMF,EAAEE,KACRC,YAAaH,EAAEG,aAAe,mBAAmBH,EAAEE,KACnDjE,SAAU+D,EAAE/D,WAAY,EAExBF,KAAMiE,EAAEjE,MAAQqE,UAGpB,OAAOC,KAAmBN,EAC5B,CClBO,MAAMO,GAAYC,EACvB,CAACC,EAAeC,KACd,MACMC,EADUD,EAAIE,eAAeC,aACdF,KAGfG,EAAaJ,EAAIK,WAEjBC,EAAeF,EAAmBG,MAExC,IAAKD,EACH,MAAM,IAAIE,EACR,4CAA4CJ,EAAWX,oEAI3D,OAAKQ,EAEDxG,MAAML,QAAQ6G,GACTA,EAAKlG,IAAK0G,GAAS,IAAIH,EAAYG,IAGrC,IAAIH,EAAYL,GANLA,ICZhBS,GAAgBZ,EACpB,CAACa,EAA6BX,KAC5B,MAAMY,EAAMZ,EAAIE,eAAeC,aACzBU,EAAYD,GAAKE,QAAU,GAC3BC,EAAYJ,GAAShH,OAAOM,KAAK4G,GACjCG,EAAUD,EAAUhH,IAAKkH,GAAMJ,EAASI,IAC9C,MAAO,CAAEC,IAAKL,EAAUM,cAAeH,EAASI,YAAaL,KAU3D,SAAUM,GACdhC,EAA4B,IAE5B,MAAMsB,EAAQtB,EAAMtF,IAAKwF,GAAMA,EAAEE,MACjC,OAAOiB,GAAcC,EACvB,CAEO,MAAMW,GAAaxB,EACxB,CAACyB,EAAYvB,KACX,MAGMwB,EAAc,IAHRxB,EAAIE,eAAeC,aACbsB,OAAS,CAAA,GAK3B,QAAqB5F,IAAjB2F,EAAOE,MAAqB,CAC9B,MAAMC,EAAIC,OAAOJ,EAAOE,OACnBE,OAAOC,MAAMF,KAAIH,EAAOE,MAAQC,EACvC,CAEA,QAAsB9F,IAAlB2F,EAAOM,OAAsB,CAC/B,MAAMH,EAAIC,OAAOJ,EAAOM,QACnBF,OAAOC,MAAMF,KAAIH,EAAOM,OAASH,EACxC,CAGA,QAAwB9F,IAApB2F,EAAOO,SAAwB,CACjC,MAAMJ,EAAIC,OAAOJ,EAAOO,UACxBP,EAAOO,SAAWH,OAAOC,MAAMF,GAAKH,EAAOO,SAAWJ,CACxD,CAEA,OAAOH,IC1DEQ,GAAuB,qBACvBC,GAAmB,eACnBC,GAAwB,mBAExBC,GAAc,aACdC,GAAiBC,OAAO,iBACxBC,GAAe,cACfC,GAA0B,wBAE1BC,GAAoBH,OAAO,iBCRlC,SAAUI,MAAUC,GACxB,OAAuB/H,IACrBgI,EAASC,IACPjI,EACA2H,IACCI,EAASpI,QAASoI,GAEd/H,EAEX,CCQM,SAAUkI,GAAiBC,GAC/B,OAA0CnI,IACxCgI,EAASC,IAAIjI,EAAQ4H,GAAyBO,GACvCnI,EAEX,OC1BaoI,GAAeV,OAAO,gBACtBW,GAAgB,YAChBC,GAAgB,WAChBC,GAAqB,gBACrBC,GAA0B,qBAC1BC,GAAuB,iBACvBC,GAA4B,sBCGlC,IAAMC,GAAN,cAGGC,GAIR,WAAAhI,CAA6BqF,GAC3B4C,MACE,CACEC,UAAYC,GAAsBA,GAAiBC,cAAW9H,GAEhE+E,GAL0CgD,KAAAhD,IAAAA,EAH9CgD,KAAAC,KAAOC,EAAKC,SAASC,WAUnBJ,KAAKF,QAAU9C,CACjB,CAEA,WAAI+C,GACF,OAAOC,KAAKK,eAAe,UAC7B,CAEA,GAAAC,CAAIC,GACF,IAAIC,EACJ,IACEA,EAAYR,KAAKS,IAAI,YACvB,CAAE,MAAOC,GACPF,EAAY,CAAA,CACd,CAEAR,KAAKW,WAAW,CACdH,UAAWzK,OAAO6K,OAAOJ,EAAWD,IAExC,GAhCWb,GAAmBmB,GAAA,CAD/BC,EAAW,CAAEC,MAAOC,EAAMC,UAQZC,GAAA,EAAAC,EAAOF,uCAPTvB,ICqBN,IAAM0B,GAAN,MACL,WAAAzJ,CACmB0J,EACEC,EACgCC,GAFlCvB,KAAAqB,UAAAA,EACErB,KAAAsB,eAAAA,EACgCtB,KAAAuB,YAAAA,CAClD,CAEH,eAAMC,CACJpF,EACAqF,GAEA,MAAMC,EAAMC,GAAQC,IAAI5B,MAAa4B,IAAI5B,KAAKwB,WAExCK,EAAW7B,KAAKqB,UAAUS,kBAA2BzC,GAAe,CACxEjD,EAAI2F,aACJ3F,EAAIK,aAGAuF,EACJhC,KAAKqB,UAAUZ,IACbrB,GACAhD,EAAI2F,eAEN/B,KAAKqB,UAAUZ,IAA0BrB,GAAehD,EAAIK,YAExDwF,EAAgBjC,KAAKqB,UAAUS,kBACnCxC,GACA,CAAClD,EAAI2F,aAAc3F,EAAIK,aAGnByF,EAAqBlC,KAAKqB,UAAUS,kBACxCvC,GACA,CAACnD,EAAI2F,aAAc3F,EAAIK,aAGnB0F,EAAiBnC,KAAKqB,UAAUS,kBACpCtC,GACA,CAACpD,EAAI2F,aAAc3F,EAAIK,aAGnB2F,EAAsBpC,KAAKqB,UAAUS,kBACzCrC,GACA,CAACrD,EAAI2F,aAAc3F,EAAIK,aAGnB4F,EAAiBF,OAAiBlK,EAAY+J,EAqBpD,OAnBAN,EAAIY,QAAQ,uBAAsBN,EAAY,QAAQA,EAAc,KAEhEH,EACFH,EAAIa,MAAM,qCACDvC,KAAKuB,kBACRvB,KAAKuB,YAAYiB,UACrBpG,EACAiG,EACAJ,EACAC,EACAE,EACApC,KAAKsB,gBAGPI,EAAIa,MAAM,oCAGNvC,KAAKyC,oBAEJhB,EAAKiB,QACd,CAEU,uBAAMD,GACd,MAAM3D,EAAW6D,EAAQC,sBACzB,GAAK9D,EAEL,IAAK,MAAM+D,KAAW/D,EAAU,CAC9B,MAAMgE,EAAcH,EAAQI,eAC1BF,GAEF,IAAKC,EAAa,SAClB,MAAM3C,EAAY2C,EAAoBE,KAClCF,EACA,IAAKA,EACHE,QAAa7C,EAAS6C,KAAKhD,KAAKsB,gBAClC0B,GAAMhD,KAAKsB,eAAeX,WAAWqC,EAC3C,CACF,GCtGI,SAAUC,GAAKC,GACnB,MAAMC,EAAWD,EACI,iBAAVA,EACLA,EACAA,EAAMrH,UACR5D,EACEmL,EAAO,CAACC,KAAiBC,EAAgBlC,KAE/C,OADI+B,GAAUC,EAAKG,KAAKC,EAAYpE,GAAe+D,IAC5CnH,KAAmBoH,EAC5B,UAEgBK,KACd,OAAOzH,EAAgBwH,EAAYnE,IAAe,GACpD,CAEM,SAAUqE,MAAgBC,GAC9B,OAAO3H,EACL4H,GAAY,UACZJ,EAAYlE,GAAoBqE,GAChCL,EAAgBlC,IAEpB,CAEM,SAAUyC,MAAqBC,GACnC,OAAO9H,EACL4H,GAAY,UACZJ,EAAYjE,GAAyBuE,GACrCR,EAAgBlC,IAEpB,CC5BM,SAAU2C,GACdxL,GAEA,MAQMyL,EARoE,CACxEtL,IAAKG,EACLC,KAAME,EACNC,IAAKE,EACLC,MAAOC,EACPC,OAAQC,GAGmBhB,GAE7B,IAAKyL,EACH,MAAM,IAAIC,EACR,0BAA0B1L,8CAI9B,OAAOyL,CACT,CFHa5C,GAAeP,GAAA,CAD3BC,EAAW,CAAEC,MAAOC,EAAMC,UAKtBC,GAAA,EAAAgD,KAAYhD,GAAA,EAAAC,EAAOhC,6BAFQgF,GACOzE,GAAmB3J,UAH7CqL,IGHb,MAOMgD,GAAgBvI,IAAY,CAChCA,OACAC,YAAgBD,EAAH,2BACbjE,UAAU,EACVF,KAAMqE,SAUF,SAAUsI,GACdC,EACAC,EACAC,EACAC,GAA8B,GAE9B,MAAMC,EAAmBX,GAAoBS,GACvCG,EA5BkB,CAACJ,GAClBA,EACJK,MAAM,KACN3O,OAAQ0F,GAAMA,EAAEL,WAAW,MAC3BnF,IAAKwF,GAAMA,EAAEkJ,MAAM,IAwBAC,CAAkBP,GAAWpO,IAAIiO,IAEjDW,EAAqB,GAsB3B,MArBiB,QAAbP,GAAsBC,GACxBM,EAAmBxB,KACjByB,GAAS,CACPnJ,KAAM,YACNjE,UAAU,EACVM,KAAM+M,EACNnJ,YAAa,mCAEfkJ,GAAS,CACPnJ,KAAM,QACNjE,UAAU,EACVkE,YAAa,uCAEfkJ,GAAS,CACPnJ,KAAM,SACNjE,UAAU,EACVkE,YAAa,wCAKZ,CACLoJ,OAAQ,CACNR,EAAiBH,MACdI,EAAcxO,IAAIgP,OAClBJ,EACHK,GAAa,CACXC,QAAS,wCAAwCf,QAEnDgB,GAAc,CACZxJ,YAAa,mCAEfyJ,GAAqB,CACnBzJ,YAAa,wCAGjBoB,OAAQ,CAACO,GAAYkH,GAAgBa,KAEzC,CAEM,SAAUC,GACd1O,EACAuN,EACAoB,EACAhK,GAEA,MAAMiK,EAAQ5O,GAAQ6O,WAAa7O,EACnC2E,EAAWwJ,OAAOW,QAASC,GAAMA,EAAEH,EAAOrB,EAAYoB,IACtDhK,EAAWwB,QAAQ2I,QAAQ,CAACC,EAAGC,IAAUD,EAAEH,EAAOrB,EAAYyB,GAChE,CAEM,SAAUC,GACdC,EACA3B,KACG4B,GAEH,GAAID,aAAuBE,EACzB,MAAmD,mBAApCF,EAAoB3B,GAC9B2B,EAAoB3B,MAAe4B,GACpCD,EAAYG,UAAU9B,KAAe4B,GAG3C,GAAgD,mBAApCD,EAAoB3B,GAC9B,OAAQ2B,EAAoB3B,MAAe4B,GAE7C,MAAM,IAAIG,GACR,uBAAuB/B,mBAA4B2B,GAAatO,aAAakE,OAEjF,CAEM,SAAUyK,GAAsBhC,GACpC,OAAOiC,eAELC,EACAC,GAEA,MAAM/E,EAAc1B,KAAK0B,IAAIE,IAAI0C,GAEjC,IACE5C,EAAIa,MACF,gCAAgC+B,wBAAiCoC,KAAKC,UAAUH,EAAWjJ,kBAE7F,MAAMqJ,UAAEA,EAAS9I,MAAEA,EAAKI,OAAEA,GAAWuI,EACrC,aAAaT,GACXhG,KAAKiG,YAAYjG,KAAK5D,KACtBkI,KACGkC,EAAWjJ,cACdqJ,EACA9I,EACAI,EAEJ,CAAE,MAAOwC,GAEP,MADAgB,EAAImF,MAAM,iBAAiBvC,YAAsB5D,GA7GjBoG,EA8GV,iBAAiBxC,aA9GvBuC,EA8GGnG,aA7GFqG,GAAkBF,EAChC,IAAIR,GACTQ,aAAiBG,MAAQ,GAAGF,MAAoBD,EAAMI,UAAYH,EA4GlE,CA/GJ,IAAsBD,EAAgBC,CAgHpC,CACF,UAEgBI,GACdC,EACA7C,EACA8C,GAWA,OATArR,OAAOsR,eACLF,EAAgBvB,WAAauB,EAC7B7C,EACA,CACEpO,MAAOkR,EACPE,UAAU,IAIPvR,OAAOwR,yBACZJ,EAAgBvB,WAAauB,EAC7B7C,EAEJ,CCxKA,MAAMkD,GAA6B,sCAE7B,SAAUC,GACdnG,EACAtE,GAEA,GAAIsE,EAAejB,eAAemH,IAChC,OAAO,EAGT,MACME,EAA0B,CAC9B3H,QAFc/C,EAAI+C,QAGlBS,UAAW,CAAA,GAGPmH,EAyBR,CAAmB3K,IACjB,MAAM+C,EAAU/C,EAAI+C,QACpB,SAAS6H,EAAc1R,GACrB,GAAKA,EAEL,OADkBL,MAAML,QAAQU,GAASA,EAAM,GAAKA,GAEjD0O,MAAM,KACNzO,IAAK0R,GAAYA,EAAQC,QACzB7R,OAAO8R,SAAS,EACrB,CACA,OACEH,EAAc7H,IAAU,qBACxB6H,EAAc7H,IAAU,eACxB6H,EAAc7H,IAAU,qBACxB6H,EAAc7H,IAAU,eACxB/C,EAAI2K,EAER,EA1CaK,CAAUhL,GACfiL,EAAa3G,EAAejB,eAAe,UAG3C6H,EAASP,GACVM,GAActG,GAAQlB,OAAOmB,IAAI,CAAE+F,OACpCM,GAActG,GAAQlB,MAgB1B,OAdAa,EAAeX,WACb5K,OAAO6K,OACL,CAAA,EACAuH,EACA,CACED,SACAE,UAAW,IAAIC,KACfC,UAAW,GAAGtL,EAAIkI,UAAUlI,EAAIuL,OAElCb,EACA,CAAEF,CAACA,KAA6B,MAI7B,CACT,CChCO,IAAMgB,GAAN,MACL,WAAA7Q,CAGmB4J,EACAD,GADAtB,KAAAuB,YAAAA,EACAvB,KAAAsB,eAAAA,CAChB,CAEH,SAAMmH,CAAIzL,EAAU0L,EAAWjH,GAE7B,GADAgG,GAA4BzH,KAAKsB,eAAgBtE,GAC7CgD,KAAKuB,YACP,UACQvB,KAAKuB,YAAYoH,MAAM3L,EAAKgD,KAAKsB,eACzC,CAAE,MAEF,OAEIG,GACR,GAlBW+G,GAAc3H,GAAA,CAD1BC,EAAW,CAAEC,MAAOC,EAAMC,UAGtBC,GAAA,EAAAgD,KACAhD,GAAA,EAAAC,EAAOhC,oCAEyBO,MALxB8I,ICAP,MAAOI,WAAyBC,GAKjB,eAAAC,CAAgBC,GACjC,OAAO,CACT,CAEU,YAAAC,CAAahM,GACrB,MAAMiM,EAAWjM,EAAI+C,QAAQmJ,eAAetE,MAAM,KAAK,GACvD,OAAOqE,CACT,CAEU,kBAAAE,CAAmB/M,GAC3B,OAAOA,EAAIE,eAAeC,YAC5B,CAEU,kBAAA6M,CAAmBpM,GAC3B,MAAMiM,EAAWjJ,KAAKgJ,aAAahM,GACnC,IAAKiM,EAAU,MAAM,IAAII,EAAmB,mBAC5C,MAAO,CAAEC,KAAML,EAAUtF,MAAO,CAACsF,GACnC,EAQI,MAAOM,WAA6BX,WC7BnC,IAAMY,GAAeC,GAArB,MACL,cAAOC,CACL5R,EAAkC,IAElC,MAAM6R,EAAwC,CAC5CvI,GACAoH,IAkBF,OAfI1Q,EAAQsP,UACVuC,EAAUpG,KAAKzL,EAAQsP,SACvBuC,EAAUpG,KAAK,CACbqG,QAASzK,GACT0K,SAAU/R,EAAQsP,WAIlBtP,EAAQgS,QACTH,EAAoBpG,KAAK,CACxBqG,QAASG,GACTC,YAAa5I,KAIV,CACL6I,OAAQR,GACRK,OAAQhS,EAAQgS,SAAU,EAC1BH,YACAO,QAAS,CAAC9I,GAAiBoH,GAAgBrJ,IAE/C,CAEA,SAAAgL,CAAUC,GACRA,EAASvQ,MAAM2O,IAAgB6B,UAAU,CAAE7R,KAAM,IAAK0M,OAAQoF,EAAcC,KAC9E,UAlCWf,GAAeC,GAAA5I,GAAA,CAD3B2J,EAAO,CAAA,IACKhB,ICqCN,IAAMiB,GAAoBC,GAA1B,MACL,WAAA/S,CAC2CgT,EACxBC,GADwB5K,KAAA2K,SAAAA,EACxB3K,KAAA4K,QAAAA,CAChB,CAEH,UAAMC,CAAK7N,EAAc8N,GACXnJ,GAAQC,IAAI8I,GAAqB7O,MAAM+F,IAAI5B,KAAK6K,MACxDtI,MACF,WAAWvC,KAAK4K,QAAQ3K,gBAAgBD,KAAK2K,SAASjU,+BAA+BsG,EAAIkI,UAAUlI,EAAIuL,OAEzG,IAAK,MAAMnB,KAAWpH,KAAK2K,eACnBvD,EAAQ1E,OAAO1C,KAAK4K,QAAS5N,EAAK8N,EAE5C,GAdWL,GAAoBC,GAAA7J,GAAA,CADhCC,EAAW,CAAEC,MAAOC,EAAMC,UAGtBC,GAAA,EAAAC,EAAO3C,mCACkBkB,MAHjB+K,ICzCN,IAAMM,GAAN,MACL,WAAApT,CAAsByE,GAAA4D,KAAA5D,IAAAA,CAA2B,CAEjD,SAAAoF,CAAUoJ,EAA2BnJ,GACnC,IAAIuJ,EAAWJ,EAAQtO,eAAe2O,cAEtC,OAAOxJ,EAAKiB,SAASwI,KAEnBC,GAAKhP,IACH6O,EAAWhL,KAAK5D,IAAIgP,WAAWJ,KAGrC,GAZWD,GAAwBlK,GAAA,CADpCC,4BAE4BpB,MADhBqL,ICIP,MAAgBM,WAGZC,GACR,WAAA3T,CACqB4T,EACnBC,GAEA5L,MAAM2L,GAHavL,KAAAuL,cAAAA,CAIrB,EAGI,MAAgBE,WAGZJ,GAGR,WAAA1T,CAC8B4T,EAC5BC,GAEA5L,MAAM2L,EAAeC,GAHOxL,KAAAuL,cAAAA,CAI9B,CAIA,WAAAtF,CAAY7J,GACV,IAAK4D,KAAK0L,aACR,IACE1L,KAAK0L,aAAeC,EAAQlL,IAAqBT,KAAKrD,MACxD,CAAE,MACA,IACEqD,KAAK0L,aAAevF,EAAayF,WAC/B5L,KAAKrD,MAET,CAAE,MACAqD,KAAK0L,aAAeG,EAAWC,SAAS9L,KAAKrD,MAC/C,CACF,CAEF,MACM6D,GADYpE,GAAO4D,KAAKuL,eACFQ,cAE5B,OAAO3P,EACH4D,KAAK0L,wBAAwBG,EAC3B7L,KAAK0L,aAAaM,SAASxL,GAC3BR,KAAK0L,aAAa9J,IAAIpB,GACxBR,KAAK0L,YACX,ECnDF,MAAMO,GAAW,IAAIC,IA8Bf,SAAUC,GACdC,EACAlJ,EACAmJ,EAA+B,IAAIC,KAEnC,IAAKC,GAAyBhW,SAAS6V,GACrC,OAAOlJ,EAGT,MAAMsJ,EA0RR,CACEJ,IAEKH,GAASQ,IAAIL,IAChBH,GAASjN,IAAIoN,EAAI,IAAIM,SAEhBT,GAASxL,IAAI2L,IAhSNO,CAAYP,GACpBQ,EAASJ,EAAM/L,IAAIyC,GACzB,GAAI0J,EAAQ,OAAOA,EAEnB,MAAMC,EAAa,CACjBlU,GAAcO,OACdc,GAAsBG,YACtB5D,SAAS6V,GAEX,MAAMU,GACNN,EAAMxN,IAAIkE,EAAO4J,GAEjB/W,OAAOsR,eAAeyF,EAAY,OAAQ,CACxC5W,MAAO,GAAG6W,GAAa7J,EAAMrH,QAAQkR,GAAaX,UAGpD,MAAMY,EAAS,MACb,IACE,OAAOC,EAAMC,GAAGhK,EAClB,CAAE,MACA,MACF,CACD,EANc,GAQTiK,EAAkBH,EAASC,EAAMG,QAAQlK,QAAgBjL,EACzDoV,EAAeL,EACjB9V,QAAQC,YAAY,cAAe+L,EAAM0C,UAAWoH,QACpD/U,EACEqV,EACJD,IAAiBrP,QAAUqP,IAAiBE,OACxCC,IACFL,GAAiBM,aAClBT,IACGC,EAAMS,oBAAoBxK,EAAc8J,IACxCW,GAAqCzK,EAAO8J,IAC5CM,GAGAM,EAAW/X,MAAMmN,KAAK,IAAIsJ,IAAIvN,EAAS9H,WAAWiM,IAAU,KAC5D2K,EAAY,IAAIvB,IAAaW,EAAMY,UAAU3K,IAAuB,IACpE4K,EAAwB,GAE9B,IAAK,MAAMC,KAAQH,EACZG,IACDF,EAAUpB,IAAIsB,IAEdA,IAASf,IAAWH,GAAcW,GAClCO,IAASf,GAAUW,GAAqCzK,EAAO6K,IAGnED,EAAYvK,KAAKwK,IAGnB,IAAK,MAAMA,KAAQD,EAAa,CAC9B,MAAME,EAAaC,GAA+B/K,EAAO6K,GACnDG,IAAeF,IAAaG,EAAeC,UAC3CC,EACJC,GAAyBpL,EAAO6K,IAChC7W,QAAQC,YAAY,cAAe+L,EAAM0C,UAAWmI,GAEhDQ,EAAgD,CACpD3W,SAAUsW,GAERG,IAAUE,EAAW7W,KAAO2W,GAEhCxW,GAAY0W,EAAZ1W,CAAwBiV,EAAWlH,UAAWmI,GAE9C,MAAMS,EACJtX,QAAQC,YAAY,cAAe+L,EAAM0C,UAAWmI,IAASM,OACrC,IAAfG,GACTtX,QAAQE,eACN,cACAoX,EACA1B,EAAWlH,UACXmI,GAIJhY,OAAOsR,eAAeyF,EAAWlH,UAAWmI,EAAM,CAChD7X,WAAO+B,EACPqP,UAAU,EACVmH,YAAY,EACZC,cAAc,GAElB,CAEA,IAAK,MAAMC,KAAYd,EAAW,CAChC,MAAMe,EAAe7P,EAAS8O,UAAU3K,EAAOyL,GAC/C,IAAKC,EACH,MAAM,IAAIvI,GAAc,yBAAyBsI,eAGnD,IAAIE,EACFD,EAAajS,MAIf,GAH4B,mBAAjBkS,GAAgCA,EAAahT,OACtDgT,EAAgBA,MAEbA,GAAwC,mBAAjBA,EAC1B,MAAM,IAAIxI,GAAc,qBAAqBsI,eAE/C,IAAK1B,EAAMxM,IAAIoO,EAAahT,MAC1B,SAGF,MAAMiT,EAAO/P,EAASgQ,cAAc7L,EAAOyL,GACrCnZ,IAAasZ,IAAeX,EAAea,MAC3Cd,IAAgBY,IAAeX,EAAeC,UAQpD,GAFmB/B,EAAMI,IAAIoC,GAEb,CAEdI,GAAiBnC,EAAY6B,EADVO,GAAiBL,GACerZ,EAAS0Y,GAC5D,QACF,CAEA,MAAMiB,EAAchD,GAAOC,EAAIyC,EAAc,IAAIvC,IAAID,GAAO+C,IAAIlM,IAE5D2J,EACFwC,GACEvC,EACA6B,EACAE,EACAM,EACA3Z,EACA0Y,GAGFoB,GAAYxC,EAAY6B,EAAUQ,EAAa3Z,EAAS0Y,EAE5D,CAEA,OAAOpB,CACT,CAEA,SAASwC,GACPC,EACAZ,EACAQ,EACA3Z,EACA0Y,GAOArW,GALsD,CACpDH,KAAMyX,EACNvX,SAAUsW,EACV1Y,WAEFqC,CAAwB0X,EAAS3J,UAAW+I,GAC5CzX,QAAQE,eACN,cACA5B,EAAUK,MAAQsZ,EAClBI,EAAS3J,UACT+I,GAEF5Y,OAAOsR,eAAekI,EAAS3J,UAAW+I,EAAU,CAClDzY,WAAO+B,EACPqP,UAAU,EACVmH,YAAY,EACZC,cAAc,GAElB,CAMA,SAASO,GACPM,EACAZ,EACAa,EACAha,EACA0Y,GAKArW,GAHsDrC,EACjD,CAAEkC,KAAM,QAASU,MAAO,CAAEV,KAAM8X,GAAc5X,SAAUsW,GACxD,CAAExW,KAAqB,YAAf8X,EAA2BxR,OAASjC,OAAQnE,SAAUsW,GACnErW,CAAwB0X,EAAS3J,UAAW+I,GAC5CzX,QAAQE,eACN,cACA5B,EAAUK,MAAwB,YAAf2Z,EAA2BxR,OAASjC,OACvDwT,EAAS3J,UACT+I,GAEF5Y,OAAOsR,eAAekI,EAAS3J,UAAW+I,EAAU,CAClDzY,WAAO+B,EACPqP,UAAU,EACVmH,YAAY,EACZC,cAAc,GAElB,CAEA,SAASW,GACPE,EACAZ,EACAE,EACAM,EACA3Z,EACA0Y,GAEA,MAAMuB,EACJvY,QAAQC,YAAYlD,GAAWc,iBAAkBwa,IAAa,GAC3DE,EAAYlZ,SAAS4Y,IACxBjY,QAAQE,eACNnD,GAAWc,iBACX,IAAI0a,EAAaN,GACjBI,GAIJ,MAEMG,EAAa,CAAC,CAAEC,KAFP,wBAAwBR,EAAYtT,MAEb,CAAEnE,KADrBwX,GAAiBL,KAOpChX,GAJsDrC,EACjD,CAAEkC,KAAM,QAASE,SAAUsW,EAAY0B,MAAOF,GAC9C,CAAEhY,KAAM3B,OAAQ6B,SAAUsW,EAAY0B,MAAOF,GAElD7X,CAAwB0X,EAAS3J,UAAW+I,GAC5CzX,QAAQE,eACN,cACA5B,EAAUK,MAAQE,OAClBwZ,EAAS3J,UACT+I,GAEF5Y,OAAOsR,eAAekI,EAAS3J,UAAW+I,EAAU,CAClDzY,WAAO+B,EACPqP,UAAU,EACVmH,YAAY,EACZC,cAAc,GAElB,CAEA,SAASQ,GAAiBL,GACxB,IACE,MAAM1B,EAAkBF,EAAMG,QAAQyB,GAChCgB,EAAS1C,GAAiBzV,KAChC,OAAImY,IAAW7R,QAAU6R,IAAWtC,OAAe,UAC5C,QACT,CAAE,MACA,MAAO,QACT,CACF,CAEA,SAASI,GACPzK,EACA6K,GAEA,IAAI+B,EAAe5M,EACnB,KAAO4M,GAAWA,IAAY/Z,QAAU+Z,IAAYC,UAAU,CAC5D,GAAI9C,EAAMQ,UAAUqC,EAAS/B,GAAc,OAAO,EAClD+B,EAAU/Z,OAAOia,eAAeF,EAClC,CACA,OAAO,CACT,CAEA,SAAS7B,GACP/K,EACA6K,GAEA,IAAI+B,EAAe5M,EACnB,KAAO4M,GAAWA,IAAY/Z,QAAU+Z,IAAYC,UAAU,CAC5D,MAAM/B,EAAajP,EAASgQ,cAAce,EAAS/B,GACnD,GAAIC,EAAY,OAAOA,EACvB8B,EAAU/Z,OAAOia,eAAeF,EAClC,CAEF,CAEA,SAASxB,GAAyBpL,EAAyB6K,GACzD,IAAI+B,EAAe5M,EACnB,KAAO4M,GAAWA,IAAY/Z,QAAU+Z,IAAYC,UAAU,CAC5D,MAAMrY,EAAOqH,EAASrH,KAAKoY,EAAS/B,GACpC,GAAIrW,EAAM,OAAOA,EACjBoY,EAAU/Z,OAAOia,eAAeF,EAClC,CAEF,CCvUCnN,EAAgBI,gBAEfkN,IACA,MAAMC,EACe,iBAAZD,EAAuBA,EAAWA,EAAQC,MACnD,OAAOnR,EAAmB,SAAEN,OAAOmD,IAAI,gBAAiBsO,EAC1D,GAAEC,KAAKxN,GAENA,EAAgBC,qBAAsB,KAGrC,MAAMkM,EAAO/P,EAAmB,SAAEN,OAAOmD,IAAI,iBAC7C,GAAKkN,EACL,OAAO/Y,OAAOM,KAAKyY,EACrB,GAAEqB,KAAKxN,GAENyN,GAAgBxK,UAAUwF,WAAa,SAEvBN,GACf,MAAMuF,EAAUrQ,KAAKqQ,UAErB,OADIA,GAASvF,EAAIwF,OAAO,iBAAkB5J,KAAKC,UAAU0J,IAClDvF,CACT,ECdA,MAAMlF,GAAY2K,EAAa3K,UAkB/B,GAdKA,GAAU4K,gBACb5K,GAAU4K,cAAgB,SAAUxM,GAKlC,OAJMhE,KAAayQ,mBAChBzQ,KAAayQ,iBAAmB,IAElCzQ,KAAayQ,iBAAiBlN,KAAKS,GAC7BhE,IACT,GAGF4F,GAAU3C,KAAO,SAAUC,GACzB,OAAOlD,KAAKwQ,cAAcvN,GAAKC,GACjC,GAEM0C,GAAkB8K,2BAA4B,CAClD,MAAMC,EAAgB/K,GAAUgL,MAChChL,GAAUgL,MAAQ,WAChB,IAAIC,EAASF,EAAcG,KAAK9Q,MAChC,MAAMtE,EAAcsE,KAAayQ,iBACjC,GAAI/U,GAAYhF,OACd,IAAK,MAAMsN,KAAatI,EAAY,CAClC,MAAMqV,EAAY/M,EAAU6M,GACxBE,IACFF,EAASE,EAEb,CAEF,OAAOF,CACT,EACCjL,GAAkB8K,4BAA6B,CAClD,cC0BaM,UACahR,KAAA0B,IAAMC,GAAQC,IAAIoP,GAAoBnV,KAAM,CAE5D,mBAAOoV,CACbpK,EACAC,GAEA,OAAID,aAAiBE,GAAkBF,EAChC,IAAIR,GACTQ,aAAiBG,MACb,GAAGF,MAAoBD,EAAMI,UAC7BH,EAER,CAEA,qBAAOoK,CACLC,GAEA,IACE,OAAOxF,EAAQlL,IAAqB0Q,EACtC,CAAE,MAAOzQ,GACP,IACE,OAAOyF,EAAayF,WAAWuF,EACjC,CAAE,MAAOC,GACP,OAAOvF,EAAWC,SAASqF,EAC7B,CACF,CACF,CAEA,sCAAOE,CACLpL,EACAqL,EAAiBC,GAAgBC,OAEjC,MAAMC,EACJxL,aAAuBE,EAAeF,EAAYwL,KAAOxL,EACrDyL,EACJ3S,EAAS0B,IACPgR,EAAK9Z,YACLoH,EAASzI,IAAIib,GAAgBC,SAC1B,CAAA,EAEDG,EACJ5S,EAAS0B,IACPwF,EAAYtO,YACZoH,EAASzI,IAAIiI,MACV,CAAA,EAEP,MAAMqT,UAAwBnG,GAC5B,SAAa,GACX,MAAM,IAAIpF,GAAc,0BAC1B,CACA,WAAA1O,CAAY4T,EAAoC1P,GAC9C+D,MAAM2L,EAAe1P,EACvB,EAGF,IAAK,MAAOyI,EAAYpH,KAAWnH,OAAO8b,QAAQF,GAAe,CAC/D,MAAMpN,EAAY,CAACrH,EAAO1E,KAAK8B,QAAQ,aAAc,KAClDrE,OAAQ4R,GAAoBA,GAAWA,EAAQC,QAC/CgK,KAAK,KAEF1K,EAAU4J,GAAoBe,0BAClCzN,GAEF0M,GAAoBgB,aAAaJ,EAAiBtN,EAAY8C,GAE9D,MAAM6K,EAAgBlO,GAAoB7G,EAAOgV,WAA3BnO,CACpBQ,QAAatM,GAETyD,EAAasV,GAAoBmB,mBACrC7N,EACAC,EACArH,EAAOgV,YAETlB,GAAoBhV,gBAAgB4V,EAAiBtN,EAAY,CAC/D2N,KACGvW,GAEP,CAEA,IAAK,MAAO4I,EAAY8N,KAAcrc,OAAO8b,QAAQH,GAAe,CAClE,MACMnN,EAAY,CAAC+M,EAAQhN,MADZ8N,EAAUC,QAAU,IACclc,IAAKmc,GAAM,IAAIA,IAC7Drc,OAAQ4R,GAAYA,GAAWA,EAAQC,QACvCgK,KAAK,KAEF1K,EAAU4J,GAAoBe,0BAClCzN,GAEF0M,GAAoBgB,aAAaJ,EAAiBtN,EAAY8C,GAE9D,MAAM6K,EAAgBlO,GAAoB,MAApBA,CACpBQ,QAAatM,GAETyD,EAAasV,GAAoBmB,mBACrC7N,EACAC,EACA,OACA,GAEFyM,GAAoBhV,gBAAgB4V,EAAiBtN,EAAY,CAC/D2N,KACGvW,GAEP,CAEA,OAAOkW,CACT,CAEO,aAAAW,CACL7V,EACA8V,EACAC,GAEA,MAAM/Q,EAAMsP,GAAoBtP,IAAIE,IAAIoP,GAAoBuB,QACtDG,EAAYzF,EAAMyF,UAAUhW,GAC5B6H,EAAYoO,GAAYD,GACxBE,EAAiBlW,EAAYb,KAC7BoK,EAAc+K,GAAoBE,eAAexU,GAKjDmW,EACJ5M,aAAuBE,EAAeF,EAAYwL,KAAOxL,EAErD6M,EAAkB/T,EAAS0B,IAC/B/D,EACAqC,EAASzI,IAAIqI,KAEToU,EAAiBP,IAAwB9V,EAAYb,MACrDmX,EAA6C,IAC7CP,GAAkB,CAAA,KAClBK,GAAmB,CAAA,KACnBC,GAAkB,CAAA,GAQlBE,EALoBC,GAAuBX,OAC/C7V,EACAmW,EACAG,GAE+CG,YAI3CC,MACJA,EAAKC,cACLA,EACA7a,KAAM8a,GACJtC,GAAoBuC,4BAA4B7W,GAEpDgF,EAAIa,MACF,kCAAkCqQ,UAAuBK,GAAevc,QAAU,oBAGpF,MAAM8c,EAAqCR,EAAaS,KAqBxD,IAGMC,EAAsBC,GAH5B,cAGqClI,GAGzB,gBAAW,GACnB,OAAO/O,CACT,CAEA,SAAa,GACX,OAAOA,CACT,CAEA,WAAA/E,CAAY4T,GACV3L,MAAM2L,EAAeoI,GAAuB9X,MAX7BmE,KAAAkN,GAAaD,EAAMC,GAAGxQ,GAYrCgF,EAAIkS,KACF,6CAA6C5T,KAAKrD,MAAMd,gBAAgB0I,IAE5E,GAtCF,IAAwBxN,EA2CxB,GArBM2c,EAAsBC,GAAA9S,GAAA,CAH3BgT,EAAWtP,GACXuP,GAAQlB,GACRmB,GAAerX,2BAYagD,MAXvBgU,GAtBkB3c,EAyCT2c,EAxCTF,GAAYQ,OACdvQ,KAAS1M,GACAyc,GAAY7P,OAAOjN,OAC5BgN,MAAgB8P,EAAW7P,MAA3BD,CAAkC3M,GAElCkM,GAAKvG,EAALuG,CAAkBlM,GAEhByc,GAAY1P,YAAYpN,QAC1BmN,MAAqB2P,EAAW1P,WAAhCD,CAA4C9M,GAE1Cyc,GAAYrR,gBACdqB,EAAYhE,IAAsB,EAAlCgE,CAAwCzM,GAEtCyc,GAAYpR,qBACdoB,EAAY/D,IAA2B,EAAvC+D,CAA6CzM,GA4B7Ckc,EAAe,CACjB,MAAMgB,EAAe,IAAIhB,GAAeiB,KAAK,CAACC,EAAGC,KAC/C,MAAMC,EAAYF,EAAE3b,KAAKoM,MAAM,KAAK3O,OAAO8R,SACrCuM,EAAYF,EAAE5b,KAAKoM,MAAM,KAAK3O,OAAO8R,SACrCwM,EAAcF,EAAUpe,OAAQue,GAAMA,EAAElZ,WAAW,MAAM5E,OACzD+d,EAAcH,EAAUre,OAAQue,GAAMA,EAAElZ,WAAW,MAAM5E,OACzDge,EAAgBL,EAAU3d,OAAS6d,EACnCI,EAAgBL,EAAU5d,OAAS+d,EACzC,OAAIC,IAAkBC,EACbA,EAAgBD,EACrBH,IAAgBE,EAAoBF,EAAcE,EAC/C,IAGT,IAAK,MAAMG,KAASX,EAAc,CAChC,MAAM3P,EACJsQ,EAAMC,gBAAgBhZ,MAAQ+Y,EAAM1P,OAAO4P,cACvCC,EAAe/D,GAAoBgE,WACvC1Q,EACAsQ,EACAtB,EACAD,EACAD,EACA1W,EACAkW,GAEF,IAAKmC,EAAc,SAEnB,MACEzQ,WAAY2Q,EAAoB7N,QAChCA,EAAO1L,WACPA,EAAUwZ,gBACVA,GACEH,EAQJ,GANmB/D,GAAoBgB,aACrC0B,EACAuB,EACA7N,GAGc,CACd,MAAM6K,EAAgBlO,GAAoB6Q,EAAM1P,OAA1BnB,CACpB6Q,EAAMpc,KAAK8B,QAAQ,aAAc,UAAOrC,GAE1C+Y,GAAoBhV,gBAClB0X,EACAuB,EACA,CAAChD,KAAkBvW,GACnBwZ,EAEJ,CACF,CACF,CAEA,OAAOxB,CACT,CAEA,kCAAOH,CACLpC,GAOA,MAAMjE,EAAKD,EAAMC,GAAGiE,GACdgE,EAAWpW,EAAS0B,IACxB0Q,EACApS,EAASzI,IAAI8e,GAAOC,SAAUnI,IAE1BoI,EAAeH,GAAUjP,MAAQ,GAEjCqP,EACJ1f,MAAML,QAAQ8f,IAAiBA,EAAa5e,OAAS,EACjDb,MAAMmN,KAAK,IAAIsJ,IAAI,IAAIgJ,KACvBzf,MAAMmN,KAAK,IAAIsJ,IAAI,CAACY,KAEpBpR,EAAciD,EAASjD,YAAYqV,IAAe,GAWxD,MAAO,CACL3Y,KAXW,IAAI+c,EAAWzD,KAAK,MAY/BhW,cACAuX,cAZwCkC,EAAWpf,IAAKG,IACjD,CACLuF,KAAMvF,EACNwF,YAAaiD,EAASjD,YAAYqV,EAAY7a,GAC9CsB,UAAU,EACVF,KAAMqE,UAQRqX,MAAO,IAAIlW,IACTiY,GAAUK,UAAYtY,EAAO4U,KAAKqD,EAASK,WAAatY,EAAO4U,KAAK,IAE1E,CAEQ,2BAAO2D,CACbjd,GAEA,IAAIkd,EAAa,EACjB,OAAOld,EACJoM,MAAM,KACN3O,OAAO8R,SACP4N,QAAS9N,GACJA,EAAQvM,WAAW,MAKnBuM,EAAQvM,WAAW,KAJd,CACL,CAAE0I,UAAW4R,EAAM/N,EAAQhD,MAAM,IAAYkB,MAAO2P,MAQjD,GAEb,CAEQ,mBAAO1D,CACbjb,EACAuN,EACA8C,GASA,OAPArR,OAAOsR,eAAetQ,EAAO6O,WAAa7O,EAAQuN,EAAY,CAC5DpO,MAAOkR,EACPE,UAAU,EACVoH,cAAc,EACdD,YAAY,IAGP1Y,OAAOwR,yBACZxQ,EAAO6O,WAAa7O,EACpBuN,EAEJ,CAEQ,sBAAOtI,CACbjF,EACAuN,EACAuR,EACAX,EAGK,IAEL,MAAMvP,EAAQ5O,GAAQ6O,WAAa7O,EAC7B2O,EAAa3P,OAAOwR,yBAAyB5B,EAAOrB,GAC1DuR,EAAiBhQ,QAASC,GAAMA,EAAEH,EAAOrB,EAAYoB,IACrDwP,EAAgBrP,QAAQ,EAAG7B,YAAW+B,WACpC/B,EAAU2B,EAAOrB,EAAYyB,GAEjC,CAEQ,iBAAOiP,CACb1Q,EACAsQ,EACAtB,EACAD,EACAD,EACA1W,EACAkW,GAYA,MAAM1N,OAAEA,EAAM1M,KAAEA,GAASoc,EACnBkB,EAAiBtd,EAAK8B,QAAQ,aAAc,IAC5C8M,EAAUwN,EAAMC,eAEtB,GAAe,SAAX3P,GAAwC,KAAnB4Q,EACvB,OAAO9E,GAAoB+E,mBACzB,SACA3O,EACA4J,GAAoBgF,uBAAuBtZ,EAAakW,GACxD,CACE,CAAE5O,UAAW/H,KAAoB8J,MAAO,GACxC,CAAE/B,UAAWiS,EAAS,CAAEC,aAAa,IAAgBnQ,MAAO,KAKlE,GAAe,SAAXb,GAAwC,SAAnB4Q,EACvB,OAAO9E,GAAoB+E,mBACzB,YACA3O,EACA4J,GAAoBmF,qBAAqBzZ,EAAakW,GACtD,CACE,CAAE5O,UAAW/H,KAAoB8J,MAAO,GACxC,CAAE/B,UAAWiS,EAAS,CAAEC,aAAa,IAAgBnQ,MAAO,KAKlE,GAAe,QAAXb,GAAuC,SAAnB4Q,EACtB,OAAO9E,GAAoB+E,mBACzB,UACA3O,EACA4J,GAAoBoF,mBAAmB1Z,EAAakW,GACpD,CAAC,CAAE5O,UAAWwB,EAAM,OAAeO,MAAO,KAI9C,GAAe,QAAXb,GAAuC,SAAnB4Q,EACtB,OAAO9E,GAAoB+E,mBACzB,YACA3O,EACA4J,GAAoBqF,qBAClB3Z,EACAkW,EACAS,GAEF,CACE,CAAErP,UAAW/H,KAAoB8J,MAAO,GACxC,CAAE/B,UAAWiS,EAAS,CAAEC,aAAa,IAAgBnQ,MAAO,KAKlE,GAAe,WAAXb,GAA0C,SAAnB4Q,EACzB,OAAO9E,GAAoB+E,mBACzB,YACA3O,EACA4J,GAAoBsF,qBAClB5Z,EACAkW,EACAS,GAEF,CACE,CAAErP,UAAWwB,EAAM,OAAeO,MAAO,GACzC,CAAE/B,UAAWiS,EAAS,CAAEC,aAAa,IAAgBnQ,MAAO,KAKlE,GAAe,QAAXb,GAAoB4Q,IAAmBxC,EACzC,OAAOtC,GAAoB+E,mBACzB,OACA3O,EACA4J,GAAoBuF,eAClB7Z,EACAkW,EACAS,EACAC,GAEFtC,GAAoByE,qBAAqBK,IAI7C,GAAe,QAAX5Q,GAAoB4Q,IAAmBxC,EAAQ,CACjD,MAAMkD,EACJxF,GAAoByE,qBAAqBK,GAC3C,OAAO9E,GAAoB+E,mBACzB,SACA3O,EACA4J,GAAoByF,iBAClB/Z,EACAkW,EACAS,EACAC,GAEF,CACE,CAAEtP,UAAW/H,KAAoB8J,MAAO,MACrCyQ,EAAYrgB,IAAI,EAAG6N,YAAW+B,YAAO,CACtC/B,YACA+B,MAAOA,EAAQ,MAIvB,CAEA,GAAe,WAAXb,GAAuB4Q,IAAmBxC,EAAQ,CACpD,MAAMkD,EACJxF,GAAoByE,qBAAqBK,GAC3C,OAAO9E,GAAoB+E,mBACzB,SACA3O,EACA4J,GAAoB0F,iBAClBha,EACAkW,EACAS,EACAC,GAEFkD,EAEJ,CAGA,MAAMG,EAAmBb,EAAelR,MAAM,KAAK3O,OAAO8R,SAI1D,GAFE4O,EAAiBjgB,OAAS,GAC1BigB,EAAiBC,MAAOpC,GAAMA,EAAElZ,WAAW,OAC1Bwa,IAAmBxC,EAAQ,CAC5C,MAAMuD,EAAmBF,EACtBxgB,IAAKqe,GAAMA,EAAE3P,MAAM,IACnB1O,IAAK0F,IAAI,CACRA,OACAC,YAAgBD,EAAH,aACbjE,UAAU,EACVF,KAAMqE,UAEJ+a,EAASH,EAAiBxgB,IAAKqe,GAAMA,EAAE3P,MAAM,IAAIiN,KAAK,OACtD0E,EACJxF,GAAoByE,qBAAqBK,GAC3C,GAAe,QAAX5Q,EACF,OAAO8L,GAAoB+E,mBACzB,SAASe,EACT1P,EACA4J,GAAoBuF,eAClB7Z,EACAkW,EACAiE,EACAf,GAEFU,GAGJ,GAAe,QAAXtR,EACF,OAAO8L,GAAoB+E,mBACzB,WAAWe,EACX1P,EACA4J,GAAoByF,iBAClB/Z,EACAkW,EACAiE,EACAf,GAEF,CACE,CAAE9R,UAAW/H,KAAoB8J,MAAO,MACrCyQ,EAAYrgB,IAAI,EAAG6N,YAAW+B,YAAO,CACtC/B,YACA+B,MAAOA,EAAQ,OAKvB,GAAe,WAAXb,EACF,OAAO8L,GAAoB+E,mBACzB,WAAWe,EACX1P,EACA4J,GAAoB0F,iBAClBha,EACAkW,EACAiE,EACAf,GAEFU,EAGN,CAEA,GAAe,QAAXtR,GAAuC,4BAAnB4Q,EACtB,OAAO9E,GAAoB+E,mBACzB,YACA3O,EACA4J,GAAoB+F,oBAAoBra,EAAakW,GACrD,CACE,CAAE5O,UAAW4R,EAAM,UAAkB7P,MAAO,GAC5C,CAAE/B,UAAW4R,EAAM,QAAgB7P,MAAO,GAC1C,CAAE/B,UAAWtG,KAAqBqI,MAAO,KAK/C,GAAe,QAAXb,GAAuC,0BAAnB4Q,EACtB,OAAO9E,GAAoB+E,mBACzB,YACA3O,EACA4J,GAAoBgG,4BAClBta,EACAkW,EACAkD,EACAtb,EAAsBK,aAExBmW,GAAoBiG,wBAAwBnB,IAIhD,MAgBMoB,EAhB0C,CAC9C,cAAe1c,EAAsBC,QACrC,wBAAyBD,EAAsBE,QAC/C,cAAeF,EAAsBG,KACrC,cAAeH,EAAsBI,KACrC,wBAAyBJ,EAAsBK,YAC/C,qBAAsBL,EAAsBM,QAC5C,iBAAkBN,EAAsBO,SACxC,eAAgBP,EAAsBQ,OACtC,eAAgBR,EAAsBS,OACtC,eAAgBT,EAAsBU,OACtC,eAAgBV,EAAsBW,OACtC,oBAAqBX,EAAsBY,YAC3C,iBAAkBZ,EAAsBa,UAGLya,GACrC,GAAIoB,GAA2B,QAAXhS,EAClB,OAAO8L,GAAoB+E,mBACzB/E,GAAoBmG,oBAAoBrB,GACxC1O,EACA4J,GAAoBgG,4BAClBta,EACAkW,EACAkD,EACAoB,GAEFlG,GAAoBiG,wBAAwBnB,IAIhD,GAAe,QAAX5Q,GAAoB4Q,EAAexa,WAAW,UAAW,CAC3D,MAAM8b,EAActB,EAAexb,QAAQ,WAAY,IAAIsK,MAAM,KAAK,GACtE,OAAOoM,GAAoB+E,mBACzBqB,EACAhQ,EACA4J,GAAoBmB,mBAClBiF,EACAtB,EACA,OACA,GAEF9E,GAAoBqG,mBAAmBvB,GAE3C,CAEA,MAAMwB,EAAexB,EAAelR,MAAM,KAAK3O,OAAO8R,SAChDwP,EAAgB,IAAIjL,IAAY,CACpC,SACA,SACA,iBACA,YACA,aACA,OACA,OACA,UACA,QACA,QACA,QACA,QACA,aACA,UACA,YACA,OACA,UAEF,GACEgL,EAAa5gB,OAAS,IACrBof,EAAexa,WAAW,YAC1Bwa,EAAexa,WAAW,gBAC1Bic,EAAc9K,IAAI6K,EAAa,IAChC,CACA,MAAM3S,EAAgB2S,EACnBrhB,OAAQue,GAAMA,EAAElZ,WAAW,MAC3BnF,IAAKqe,GAAMA,EAAE3P,MAAM,IACnB1O,IAAK0F,IAAI,CACRA,OACAC,YAAgBD,EAAH,2BACbjE,UAAU,EACVF,KAAMqE,UAGV,OAAOiV,GAAoB+E,mBACzBzR,EACA8C,EACA,IACKzC,EAAcxO,IAAKwF,GAAMwJ,GAASxJ,IACrCyJ,GAAa,CAAEC,QAAS,2BAA2Bf,QACnDgB,GAAc,CAAExJ,YAAa,mCAC7ByJ,GAAqB,CACnBzJ,YAAa,wCAGjBkV,GAAoByE,qBAAqBK,GAE7C,CAGF,CAEQ,yBAAOC,CACbzR,EACA8C,EACA1L,EACAwZ,GAEA,MAAO,CAAE5Q,aAAY8C,UAAS1L,aAAYwZ,kBAC5C,CAEQ,0BAAOiC,CAAoB3e,GAEjC,OADqBA,EAAKoM,MAAM,KAAK,EAEvC,CAEQ,8BAAOqS,CACbze,GAEA,MAAMgf,EAAWhf,EAAKoM,MAAM,KAAK3O,OAAQue,GAAMA,EAAElZ,WAAW,MACtD4B,EAAkE,GAaxE,OAZAsa,EAAS3R,QAAQ,CAAC4R,EAAKC,KACrB,MAAM7b,EAAO4b,EAAInd,QAAQ,IAAK,IAC9B4C,EAAOqG,KAAK,CAAES,UAAW4R,EAAM/Z,GAAckK,MAAO2R,OAGpDlf,EAAK8C,WAAW,YAChB9C,EAAK8C,WAAW,gBAChB9C,EAAK8C,WAAW,UAChB9C,EAAK8C,WAAW,WAEhB4B,EAAOqG,KAAK,CAAES,UAAWtG,KAAqBqI,MAAOyR,EAAS9gB,SAEzDwG,CACT,CAEQ,yBAAOma,CACb7e,GAEA,MAAMgf,EAAWhf,EAAKoM,MAAM,KAAK3O,OAAQue,GAAMA,EAAElZ,WAAW,MACtD4B,EAAkE,GAQxE,OAPAsa,EAAS3R,QAAQ,CAAC4R,EAAKC,KACrB,MAAM7b,EAAO4b,EAAInd,QAAQ,IAAK,IAC9B4C,EAAOqG,KAAK,CAAES,UAAW4R,EAAM/Z,GAAckK,MAAO2R,MAElDlf,EAAK8C,WAAW,WAClB4B,EAAOqG,KAAK,CAAES,UAAWtG,KAAqBqI,MAAOyR,EAAS9gB,SAEzDwG,CACT,CAEQ,gCAAO6U,CAA0BzN,GACvC,OAAOiC,eAAeoR,KAEjBzR,GAEH,MAAMxE,EAAW1B,KAAK0B,KAAKE,MAAM+V,GACjC,IACMjW,GAAKA,EAAIa,MAAM,0BAA0B+B,MAC7C,MAAMlI,IAAEA,UAAe4D,KAAK4X,OAAO,GAAItT,GAAY,IAAO1C,IACxD+V,GAEI1R,EAAcjG,KAAKiG,YAAY7J,GAC/Byb,EAAa7G,GAAoB8G,mBAAmB5R,GAC1D,GACED,GAAawL,MAC2B,mBAAjCxL,EAAYwL,KAAKnN,GAExB,OAAO2B,EAAYwL,KAAKnN,MAAeuT,GAEzC,GAAuC,mBAA5B5R,EAAY3B,GACrB,OAAO2B,EAAY3B,MAAeuT,GAEpC,GAAI5R,GAAapI,OAAsC,mBAAtBoI,EAAYpI,MAC3C,OAAOoI,EAAYpI,MAAMyG,KAAeuT,GAE1C,GAAqC,mBAA1B5R,EAAYG,UACrB,OAAOH,EAAYG,UAAU9B,KAAeuT,EAAYzb,GAE1D,MAAM,IAAIiK,GACR,uBAAuB/B,mBAA4B2B,GAAatO,aAAakE,OAEjF,CAAE,MAAO6E,GAEP,MADIgB,GAAKA,EAAImF,MAAM,iBAAiBvC,YAAsB5D,GACpDsQ,GAAoBC,aACxBvQ,EACA,iBAAiB4D,YAErB,CACF,CACF,CAEQ,uBAAOyT,CAAiB7R,GAC9B,GAAoB,IAAhBA,EAAKxP,OAAc,OAAOwP,EAC9B,MAAM8R,EAAO9R,EAAKA,EAAKxP,OAAS,GAChC,GAAIshB,GAAwB,iBAATA,IAAsBniB,MAAML,QAAQwiB,GAAO,CAC5D,MAAMC,EAAW/R,EAAKgS,MAChBC,OAAsClgB,IAAvBggB,EAASrR,UACxBwR,OAA8BngB,IAAnBggB,EAASna,MACpBua,OAAgCpgB,IAApBggB,EAAS/Z,OAC3B,IAAKia,IAAiBC,IAAaC,EAAW,OAAOnS,EACrD,MAAMoS,EAAgB,GAKtB,OAJIH,EAAcG,EAAO/U,KAAK0U,EAASrR,YAC9BwR,GAAYC,IAAWC,EAAO/U,UAAKtL,GACxCmgB,GAAUE,EAAO/U,KAAK0U,EAASna,OAC/Bua,GAAWC,EAAO/U,KAAK0U,EAAS/Z,QAC7B,IAAIgI,KAASoS,EACtB,CACA,OAAOpS,CACT,CAEQ,yBAAO4R,CAAmB5R,GAChC,MAAM7L,EAAa2W,GAAoB+G,iBAAiB7R,GACxD,GAA0B,IAAtB7L,EAAW3D,OAAc,OAAO2D,EAEpC,MAAM2d,EAAO3d,EAAWA,EAAW3D,OAAS,GAC5C,IAAKshB,GAAwB,iBAATA,GAAqBniB,MAAML,QAAQwiB,GACrD,OAAO3d,EAGT,MAAM4d,EAAWD,EAOjB,YALyB/f,IAAvBggB,EAASrR,gBACU3O,IAAnBggB,EAASna,YACW7F,IAApBggB,EAAS/Z,aACajG,IAAtBggB,EAAS9Z,UAOX9D,EAAW6d,WACgBjgB,IAAvBggB,EAASrR,WAAyBvM,EAAWkJ,KAAK0U,EAASrR,gBACxC3O,IAAnBggB,EAASna,OAAqBzD,EAAWkJ,KAAK0U,EAASna,YACnC7F,IAApBggB,EAAS/Z,QAAsB7D,EAAWkJ,KAAK0U,EAAS/Z,aAClCjG,IAAtBggB,EAAS9Z,UAAwB9D,EAAWkJ,KAAK0U,EAAS9Z,UACvD9D,IATLA,EAAW6d,MACJ7d,EASX,CAEQ,6BAAO2b,CACbtZ,EACAkW,GAEA,MAAO,CACLva,GAAsBqE,EAAa,QACnC0I,GAAa,CAAEC,QAAS,gBAAgBuN,OACxC2F,GAAQ,CACNzc,YAAa,eAAe8W,EAC5Blb,KAAMyU,GAAOxT,GAAcI,OAAQ2D,KAErC8b,GAAmB,CACjB1c,YAAgB8W,EAAH,yBACb6F,OAAQ,CAAE9I,KAAM+I,GAAchc,MAEhCic,GAAsB,CAAE7c,YAAa,+BACrC8c,GAA+B,CAC7B9c,YAAa,8CAGnB,CAEQ,2BAAOqa,CACbzZ,EACAkW,GAEA,MAAO,CACLva,GAAsBqE,EAAa,OAAQ,QAC3C0I,GAAa,CAAEC,QAAS,gBAAgBuN,OACxC2F,GAAQ,CACNzc,YAAa,eAAe8W,EAC5B6F,OAAQ,CACN/gB,KAAM,QACNU,MAAO,CAAEuX,KAAM+I,GAAchc,OAGjC8b,GAAmB,CACjB1c,YAAgB8W,EAAH,yBACb6F,OAAQ,CACN/gB,KAAM,QACNU,MAAO,CAAEuX,KAAM+I,GAAchc,OAGjCic,GAAsB,CAAE7c,YAAa,+BACrC8c,GAA+B,CAC7B9c,YAAa,8CAGnB,CAEQ,yBAAOsa,CACb1Z,EACAkW,GAEA,MAAO,CACLva,GAAsBqE,EAAa,MAAO,QAC1C0I,GAAa,CAAEC,QAAS,YAAYuN,sBACpC5N,GAAS,CAAEnJ,KAAM,MAAOjE,UAAU,EAAMF,KAAM,UAC9C4N,GAAc,CACZxJ,YAAgB8W,EAAH,2BACb6F,OAAQ,CACN/gB,KAAM,QACNU,MAAO,CAAEuX,KAAM+I,GAAchc,OAGjCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAGzB,CAEQ,2BAAOyD,CACb3Z,EACAkW,EACAS,GAEA,MAAO,CACLhb,GAAsBqE,EAAa,MAAO,QAC1ClB,GAAmB6X,GACnBjO,GAAa,CACXC,QAAS,oBAAoBuN,iCAE/B2F,GAAQ,CACNzc,YAAa,6CAA6C8W,EAC1D6F,OAAQ,CACN/gB,KAAM,QACNiY,KAAM+I,GAAcvM,GAAOxT,GAAcO,OAAQwD,OAGrD4I,GAAc,CACZxJ,YAAgB8W,EAAH,yBACb6F,OAAQ,CACN/gB,KAAM,QACNU,MAAO,CAAEuX,KAAM+I,GAAchc,OAGjCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAErB+F,GAAsB,CAAE7c,YAAa,+BAEzC,CAEQ,2BAAOwa,CACb5Z,EACAkW,EACAS,GAEA,MAAO,CACLhb,GAAsBqE,EAAa,SAAU,QAC7ClB,GAAmB6X,GACnBjO,GAAa,CAAEC,QAAS,UAAUuN,sBAClC5N,GAAS,CAAEnJ,KAAM,MAAOjE,UAAU,EAAMF,KAAM,UAC9C4N,GAAc,CACZxJ,YAAgB8W,EAAH,yBACb6F,OAAQ,CACN/gB,KAAM,QACNU,MAAO,CAAEuX,KAAM+I,GAAchc,OAGjCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAGzB,CAEQ,qBAAO2D,CACb7Z,EACAkW,EACAS,EACAC,GAEA,MAAO,CACLjb,GAAsBqE,EAAa,MAAO4W,GAC1C9X,GAAmB6X,GACnBjO,GAAa,CAAEC,QAAS,cAAcuN,oBACtCtN,GAAc,CACZxJ,YAAgB8W,EAAH,2BACb6F,OAAQ,CAAE9I,KAAM+I,GAAchc,MAEhCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAGzB,CAEQ,uBAAO6D,CACb/Z,EACAkW,EACAS,EACAC,GAEA,MAAO,CACLjb,GAAsBqE,EAAa,MAAO4W,GAC1C9X,GAAmB6X,GACnBjO,GAAa,CACXC,QAAS,uBAAuBuN,iCAElC2F,GAAQ,CACNzc,YAAa,+CAA+C8W,EAC5Dlb,KAAMyU,GAAOxT,GAAcO,OAAQwD,KAErC4I,GAAc,CACZxJ,YAAgB8W,EAAH,yBACb6F,OAAQ,CAAE9I,KAAM+I,GAAchc,MAEhCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAErB+F,GAAsB,CAAE7c,YAAa,+BAEzC,CAEQ,uBAAO4a,CACbha,EACAkW,EACAS,EACAC,GAEA,MAAO,CACLjb,GAAsBqE,EAAa,SAAU4W,GAC7C9X,GAAmB6X,GACnBjO,GAAa,CAAEC,QAAS,YAAYuN,oBACpCtN,GAAc,CACZxJ,YAAgB8W,EAAH,yBACb6F,OAAQ,CAAE9I,KAAM+I,GAAchc,MAEhCmc,GAAoB,CAClB/c,YAAa,MAAM8W,8CAGzB,CAEQ,0BAAOmE,CACbra,EACAkW,GAEA,MAAO,CACLva,GAAsBqE,EAAa,MAAO,2BAC1C0I,GAAa,CACXC,QAAS,oCAAoCuN,OAE/CzN,GAAS,CACPtJ,KAAM,SACNC,YAAa,sCAEfqJ,GAAS,CACPtJ,KAAM,OACNC,YACE,qEAEJkJ,GAAS,CACPnJ,KAAM,YACNjE,UAAU,EACVM,KAAM+M,EACNnJ,YAAa,mCAEfkJ,GAAS,CACPnJ,KAAM,QACNjE,UAAU,EACVkE,YAAa,uCAEfkJ,GAAS,CACPnJ,KAAM,SACNjE,UAAU,EACVkE,YAAa,uCAEfwJ,GAAc,CAAExJ,YAAgB8W,EAAH,mBAC7BiG,GAAoB,CAClB/c,YAAa,MAAM8W,8CAGzB,CAEQ,kCAAOoE,CACbta,EACAkW,EACApa,EACA0e,GAEA,MAAM4B,EAA6D,CACjEzgB,GAAsBqE,EAAa,MAAOlE,GAC1C4M,GAAa,CAAEC,QAAS,YAAYuN,eACpCtN,GAAc,CACZxJ,YAAgB8W,EAAH,8BAsEjB,OAlEiBpa,EAAKoM,MAAM,KAAK3O,OAAQue,GAAMA,EAAElZ,WAAW,MACnDuK,QAAS4R,IAChB,MAAM5b,EAAO4b,EAAInd,QAAQ,IAAK,IAC9Bwe,EAAKvV,KAAK4B,GAAS,CAAEtJ,OAAMC,YAAa,OAAOD,oBAI/CrD,EAAK8C,WAAW,YAChB9C,EAAK8C,WAAW,gBAChB9C,EAAK8C,WAAW,UAChB9C,EAAK8C,WAAW,WAEhBwd,EAAKvV,KACHyB,GAAS,CACPnJ,KAAM,YACNjE,UAAU,EACVM,KAAM+M,EACNnJ,YAAa,qBAIftD,EAAK8C,WAAW,gBAAkB9C,EAAK8C,WAAW,WACpDwd,EAAKvV,KACHyB,GAAS,CAAEnJ,KAAM,QAASjE,UAAU,EAAOkE,YAAa,cACxDkJ,GAAS,CACPnJ,KAAM,SACNjE,UAAU,EACVkE,YAAa,gBAEfkJ,GAAS,CACPnJ,KAAM,WACNjE,UAAU,EACVkE,YAAa,qCAKftD,EAAK8C,WAAW,eAAiB9C,EAAK8C,WAAW,aACnDwd,EAAKvV,KACHsV,GAAoB,CAClB/c,YAAa,MAAM8W,+CAMvBsE,IAAiB1c,EAAsBO,UACvCmc,IAAiB1c,EAAsBU,QACvCgc,IAAiB1c,EAAsBW,QAEvC2d,EAAKvV,KACH+B,GAAc,CACZxJ,YAAa,cAAc8W,KAC3Blb,KAAMsG,UAIRkZ,IAAiB1c,EAAsBY,aACzC0d,EAAKvV,KACH+B,GAAc,CACZxJ,YAAa,uBAAuB8W,KACpClb,KAAM,CAACqE,WAKN+c,CACT,CAEQ,yBAAO3G,CACb7N,EACAC,EACAC,EACAC,GAA8B,GAEJ,IAAC9I,EAa3B,MAAMD,EAAmE,KAb9CC,EAMa4I,EALtC5I,EACGiJ,MAAM,KACN3O,OAAQue,GAAMA,EAAElZ,WAAW,MAC3BnF,IAAKqe,GAAMA,EAAE3P,MAAM,KAE2B1O,IAAK0F,IAAI,CAC1DA,OACAC,YAAgBD,EAAH,2BACbjE,UAAU,EACVF,KAAMqE,UAIW5F,IAAKwF,GAAMwJ,GAASxJ,IACrCyJ,GAAa,CAAEC,QAAS,2BAA2Bf,QACnDgB,GAAc,CAAExJ,YAAa,mCAC7ByJ,GAAqB,CACnBzJ,YAAa,wCAyBjB,MArBiB,QAAb0I,GAAsBC,GACxB/I,EAAW6H,KACTyB,GAAS,CACPnJ,KAAM,YACNjE,UAAU,EACVM,KAAM+M,EACNnJ,YAAa,mCAEfkJ,GAAS,CACPnJ,KAAM,QACNjE,UAAU,EACVkE,YAAa,uBAEfkJ,GAAS,CACPnJ,KAAM,SACNjE,UAAU,EACVkE,YAAa,wBAKZJ,CACT,ECtuCI,SAAUqd,GAAalW,SAE3B,IAAMmW,EAAN,2BACkBhZ,KAAA0B,IAAMC,GAAQC,IAAIqX,EAAiBpd,MAAM+F,IAAIiB,EAAS,CAEtE,0BAAOqW,CACLC,GAEA,OAAOA,EAAOhjB,IAAK+M,IAAK,CACtB0G,QAAY1G,EAAMrH,KAAT,UACTud,WAAY,IAAMjT,EAAa2F,SAAS5I,KAE5C,CAEA,gBAAOmW,CACLnW,EACAoW,GAEA,MAAMtN,EAAWsN,IAAWpW,EAAMrH,MAC5B3F,OACgB,IAAb8V,EACHA,EACAjN,EAAS0B,IAAIyC,EAAOnE,EAASzI,IAAIoI,KAEvC,YAAqB,IAAVxI,IACG,IAAVA,KACAL,MAAML,QAAQU,IAAeA,EAAMK,SAASsM,EAElD,CAEA,cAAO6G,CACL7G,EACA/K,EAAuC,IAEvC,MAAM4J,EAAM1B,KAAK0B,IAAIE,IAAI5B,KAAK0J,SAC9BhI,EAAIkS,KAAK,yCAET,MAAM2F,EAAgB5W,EAAQwW,OAAOtW,GAAS5M,OAAQiN,GACpDlD,KAAKqZ,UAAUnW,EAAOpL,EAAQ0hB,qBAMhC,IAAK,MAAMtW,KAASqW,EAAepT,EAAa2F,SAAS5I,GAEzD,IAAIuW,EAA4B,GAC5B3hB,EAAQ4hB,eACVhY,EAAIkS,KAAK,2DACT6F,EAAgBzZ,KAAKkZ,oBAAoBK,GACzC7X,EAAIkS,KACF,4BAA4B6F,EAAc/iB,iCAI9C,MAAM+b,EAAwD,CAAA,GACjC,IAAzB3a,EAAQ6hB,eACVlH,EAAemH,sBAAuB,GAGxC,MAAMC,EAAcN,EAAcpjB,IAAK+M,GACrC8N,GAAoBuB,OAAOrP,EAAOpL,EAAQmH,iBAAkBwT,IAI9D,OAFA/Q,EAAIkS,KAAK,aAAaiG,EAAYnjB,sBAE3B,CACLuT,OAAQgP,EACRY,cACAlQ,UAAW,IACN8P,GAGT,GAKF,OA3EMT,EAAgBC,EAAApY,GAAA,CADrB2J,EAAO,CAAA,IACFwO,GAwENjjB,OAAO6K,OAAOoY,EAAkB,OAAQ,CACtC9iB,MAAO,cAAc2M,IAEhBmW,CACT,CC3EAc,EAAWlY,IAAImY,EAAgBC,YAC5BC,OAAO,CACNjW,UAAW,CACTkW,EACAC,KAEAA,EACEA,IACqB,iBAAbD,EACJnkB,OAAO6K,OACLsZ,EACAE,GAEFA,GACCtZ,EAAW,CAChBC,MAAOoZ,EAAIE,UAAYrZ,EAAMsZ,QAAUtZ,EAAMC,QAC7CsZ,SAASJ,EAAIE,gBAAYpiB,OAI9B4B,QAEHigB,EAAWlY,IAAImY,EAAgBS,QAC5BP,OAAO,CACNjW,UAAW,CACTkW,EAEAC,IAEO,CACLpjB,EACAC,EACA0O,IAEOvE,EAAO+Y,GAAanjB,EAApBoK,CACLpK,EACAC,EACA0O,KAKP7L,QAEHigB,EAAWlY,IAAIuM,EAAeC,UAC3B6L,OACCpiB,GAAY,CACVD,UAAU,KAGbiC,QAEHigB,EAAWlY,IAAIuM,EAAesM,KAC3BR,OAAO,CACNjW,UAA2B0W,GAClB7iB,GAAY,CAAE8iB,QAASD,EAAK9iB,UAAU,MAGhDiC,QAEHigB,EAAWlY,IAAIuM,EAAeyM,KAC3BX,OAAO,CACNjW,UAA2B6W,GAClBhjB,GAAY,CAAEijB,QAASD,EAAKjjB,UAAU,MAGhDiC,QAEHigB,EAAWlY,IAAIuM,EAAe4M,YAC3Bd,OAAO,CACNjW,UAAiC0W,GACxB7iB,GAAY,CAAEmjB,UAAWN,EAAK9iB,UAAU,MAGlDiC,QAEHigB,EAAWlY,IAAIuM,EAAe8M,YAC3BhB,OAAO,CACNjW,UAAiC6W,GACxBhjB,GAAY,CAAEqjB,UAAWL,EAAKjjB,UAAU,MAGlDiC,QAEHigB,EAAWlY,IAAIuM,EAAegN,MAC3BlB,OAAO,CACNjW,UACEtM,GAKO,CAACX,EAAgBgX,KAEF,mBADpBrW,EAAO7B,MAAML,QAAQkC,GAAQA,EAAK,GAAKA,IACJA,EAAKmE,OACtCnE,EAAQA,KACHG,GAAY,CACjBH,KAAMA,EACNE,UAAU,GAFLC,CAGJd,EAAQgX,MAIhBlU,QAsBHigB,EAAWlY,IAAIuM,EAAeiN,MAC3BnB,OAAO,CAENjW,UAA4BqX,GACnBxjB,GAAY,CACjBH,KAAMqE,OACNsf,OAAQ,YACRzjB,UAAU,MAKfiC,QAEHigB,EAAWlY,IAAIuM,EAAemN,MAC3BrB,OAAO,CACNjW,UAA8BlM,GAErBD,GAAY,CACjBK,KAFWrC,MAAML,QAAQsC,GAAWA,EAAU/B,OAAOC,OAAO8B,GAG5DF,UAAU,MAIfiC,QAEHigB,EAAWlY,IAAIuM,EAAeoN,SAC3BtB,OAAO,CACNjW,UAA+BwX,GACtB3jB,GAAY,CACjB4jB,QAAwB,iBAARD,EAAmBA,EAAMA,EAAIE,OAC7C9jB,UAAU,MAIfiC,QAEHigB,EAAWlY,IAAI2P,GAAgBoK,QAC5B1B,OAAO,CACNjW,UAA8BnI,GACrBhE,GAAY,CACjBgE,KAAMA,EACNjE,UAAU,MAIfiC,QAEHigB,EAAWlY,IAAIga,EAAeC,aAC3B5B,OAAO,CACNjW,UAAmClI,GAC1BjE,GAAY,CACjBiE,YAAaA,EACblE,UAAU,MAIfiC,QAEHigB,EAAWlY,IAAI2P,GAAgBuK,MAAM7B,OAAO,CAAEjW,UAAWf,KAAQpJ,QCnM3D,MAAOkiB,WAAkBC,GAC7B,WAAArkB,CAAYskB,GACVrc,MAAMqc,EAAKF,GAAUlgB,KACvB,ECHI,MAAOqgB,WAA4BnV,GACvC,WAAApP,CAAYskB,GACVrc,MAAMsc,GAAoBrgB,KAAMogB,EAAM,IACxC,EC+BF,MAAME,GAAgC,IAAIjQ,IAGxC,CACA,CAACkQ,EAAwBH,GAAQ,IAAI5S,EAAmB4S,IACxD,CAACI,EAAqBJ,GAAQ,IAAID,GAAeC,IACjD,CAACK,EAAsBL,GAAQ,IAAIM,GAAgBN,IACnD,CAACO,EAAoBP,GAAQ,IAAIQ,GAAcR,IAC/C,CAACS,EAA+BT,GAAQ,IAAIU,GAAgBV,MAKvD,IAAMW,GAAN,MACL,WAAAjlB,CAA2CklB,GAAA7c,KAAA6c,UAAAA,CAAwB,CAEnE,WAAM,CAAMC,EAAkBC,GAC5B,MAAM3gB,EAAM2gB,EAAKzgB,eACX0O,EAAW5O,EAAI6O,cACfnL,EAAU1D,EAAIG,aAEdygB,EAAyC,eAA1BC,GAAkBC,IACvC,IAAIC,EAEJ,GACEL,aAAqBM,GACrBN,aAAqB7Y,EAGrBkZ,GADAL,EAAY,IAAIO,EAAuBP,EAAU7V,UACEqW,iBAC9C,KAAMR,aAAqB/V,IAAY,CAC5C,MAAMkK,EAAejR,KAAKud,cAAcT,GACpC7L,EACF6L,EAAY7L,EAAa6L,EAAU7V,SACI,MAA7B6V,EAAkBU,OAC5BV,EAAY,IAAIZ,GAAoBY,EAAU7V,SACrC6V,aAAqBW,EAG9BN,EAAaL,EAAUQ,YAEvBR,EAAY,IAAIzW,GAAcyW,EAAU7V,QAE5C,OAEMjH,KAAK0d,SAAS5d,EAASgd,GAE7B9R,EAASwS,OAAQV,EAAwBa,MAAQR,GAAYS,KAAK,CAChEJ,OAASV,EAAwBa,MAAQR,EACzCtW,MAAOmW,EAAeF,EAAUjhB,KAAOihB,EAAU7V,QACjDmB,WAAW,IAAIC,MAAOwV,cACtBrlB,KAAMsH,EAAQyI,IACdrD,OAAQpF,EAAQoF,QAEpB,CAOU,aAAAqY,CACRT,GAEA,IAAK,MAAOplB,EAAMomB,KAAY3B,GAC5B,GAAIW,aAAqBplB,EAAM,OAAOomB,CAG1C,CAUU,cAAMJ,CACd5d,EACAgd,GAEA,MAAM7V,EAAU,sBAAsBnH,GAASoF,UAAUpF,GAASyI,MAClE,WACoBvI,KAAK+d,cAAcje,IACjC+G,MAAMI,EAAS6V,EACrB,CAAE,MACA,IACEnb,GAAQlB,MAAMoG,MAAMI,EAAS6V,EAC/B,CAAE,MAEF,CACF,CACF,CAaU,mBAAMiB,CACdje,GAEA,GAAIE,KAAK6c,UACP,IACE,MAAMmB,EAAYC,GAAiBC,aAAape,GAC1CwB,QAAuBtB,KAAK6c,UAAUsB,QAC1Cze,GACAse,EACA,CAAEI,QAAQ,IAEZ,GAAI9c,GAAgB4G,OAAQ,OAAO5G,EAAe4G,MACpD,CAAE,MAEF,CAEF,OAAOvG,GAAQlB,KACjB,YCxJc4d,KACd,OAAOC,EAAW,IAAI1B,GACxB,UAEgB2B,KACd,OAAOjb,EAAgByH,GACzB,CDoCa6R,GAAoB/b,GAAA,CAFhC2d,IACA1d,IAEcI,GAAA,EAAAgD,6BAA0Cua,MAD5C7B,IEnBN,MAAM8B,GAAuC,CAIlDlmB,KAAM,OAGNib,KAAM,CACJ/b,KAAM,OACNinB,OAAQ,SACRC,aAAc,MACd/iB,KAAM,gBACNC,YAAa,kBACb+iB,GAAI,UAGNC,cAAe,iBChCJC,GAUX,WAAApnB,CAAYG,GACVkI,KAAKlI,QAAU,IACVA,EAEP,CAEQ,SAAAknB,GACN,IAAIC,EAAM,GAKV,OAJIjf,KAAKlI,QAAQonB,iBAEfD,GAAO,yDADKjf,KAAKmf,IAAInf,KAAKlI,QAAQonB,sDAIlCD,EACA,0GAE4Cjf,KAAKlI,QAAQgnB,eAAiBJ,GAAqBI,0BAGnG,CAEA,gBAAAM,GACE,MAAMC,EAA+B,CAAA,EAKrC,OAJIrf,KAAKlI,QAAQwnB,cACfD,EAAuB,cAAIrf,KAAKmf,IAAInf,KAAKlI,QAAQwnB,aAAa,IAGzD,CACLC,gBAAiBvf,KAAKlI,QAAQ0nB,SAC3BH,EACHI,UAAWzf,KAAKgf,YAChBU,eAAgB,CACdC,qBAAsB3f,KAAKlI,QAAQ6nB,sBAGzC,CAEA,GAAAR,CAAIS,EAAcC,GAAe,GAC/B,MAAMC,EAAWtnB,GAAKsZ,KAAK9R,KAAKlI,QAAQioB,YAAc,GAAIH,GACpDT,EAAMa,GAAaF,EAAU,CAAEG,SAAU,WAC/C,OAAOJ,EAAM,yBAA2BV,EAAMA,CAChD,QC3DWe,GACX,WAAAvoB,CACmBwoB,EACAroB,GADAkI,KAAAmgB,IAAAA,EACAngB,KAAAlI,QAAAA,CAChB,CAEK,cAAAsoB,GACN,MAAMtkB,EAAckE,KAAKlI,QAAQU,KAC7BwH,KAAKlI,QAAQgE,YACb,GACA,oBAAoBkE,KAAKlI,QAAQuoB,4CACjC,YAAYrgB,KAAKlI,QAAQwoB,yCACzBtgB,KAAKlI,QAAQgE,YAEXoD,GAAS,IAAIqhB,IAChBC,SAASxgB,KAAKlI,QAAQ0nB,OACtBiB,eAAe3kB,GACf4kB,WAAW1gB,KAAKlI,QAAQ6oB,SAAW,SACnCC,cAAc5gB,KAAKlI,QAAQ2b,MAAQiL,GAAqBjL,MACxD7C,QAEH,OAAOiQ,GAAcT,eAAepgB,KAAKmgB,IAAKjhB,EAAQ,CACpDuQ,YAAazP,KAAKlI,QAAQ2X,aAAe,IAE7C,CAEQ,oBAAAqR,CACNtoB,EACAuoB,EACAC,GAEA,IAAKxoB,EAAM,OAEX,MAAMyoB,EAAcjhB,KAAKmgB,IAAIe,iBAC7B1oB,EAAOA,EAAK8C,WAAW,KAAO9C,EAAO,IAAIA,EACzCyoB,EAAYxgB,IAAIjI,EAAM,CAAC2oB,EAAWrW,KAChCmW,EAAYG,MAAMtW,EAAKkW,IAAe,IAAK,CACzC,eAAgBD,KAGtB,CAEO,YAAAM,GACL,MAAMC,EAAWthB,KAAKogB,iBAChBmB,EAAY,IAAIxC,GAAgB,CACpCS,MAAOxf,KAAKlI,QAAQ0nB,MACpBhnB,KAAMwH,KAAKlI,QAAQU,MAAQkmB,GAAqBlmB,KAChDmnB,qBAAsB3f,KAAKlI,QAAQ6nB,uBAAwB,EAC3DI,WAAY/f,KAAKlI,QAAQioB,WACzBT,YAAatf,KAAKlI,QAAQ0pB,gBAC1BtC,eAAgBlf,KAAKlI,QAAQ2pB,mBAC7B3C,cAAe9e,KAAKlI,QAAQgnB,gBAE9B+B,GAAca,MACZ1hB,KAAKlI,QAAQU,MAAQkmB,GAAqBlmB,KAC1CwH,KAAKmgB,IACLmB,EACA,IACKC,EAAUnC,mBACbuC,gBAAiB3hB,KAAKlI,QAAQuoB,gBAC1B,GAAGrgB,KAAKlI,QAAQuoB,qBAChBpoB,EACJ2pB,gBAAiB5hB,KAAKlI,QAAQwoB,gBAC1B,GAAGtgB,KAAKlI,QAAQwoB,qBAChBroB,IAIR+H,KAAK8gB,qBACH9gB,KAAKlI,QAAQuoB,gBACb,mBACA,IAAMiB,GAGRthB,KAAK8gB,qBACH9gB,KAAKlI,QAAQwoB,gBACb,qBACA,IAAMuB,GAAKlb,UAAU2a,GAEzB,QCiBWQ,GAcH,iBAAW5Z,GAKjB,OAJKlI,KAAK+hB,UAER/hB,KAAK+hB,QAAU,IAAIC,EAAO,kBAErBhiB,KAAK+hB,OACd,CAaA,iBAAOE,CAAW9B,GAEhB,OADAngB,KAAKmgB,IAAMA,EACJngB,IACT,CAcA,mBAAOkiB,CAAaC,GAGlB,OAFAniB,KAAK+hB,QAAUI,GAAgB,IAAIH,EAAO,iBAC1ChiB,KAAKmgB,IAAIiC,UAAUpiB,KAAK+hB,SACjB/hB,IACT,CAgBA,iBAAOqiB,CACLC,EAA0B,GAC1BC,EAAyB,CAAC,MAAO,OAAQ,MAAO,WAEhD,MAAMC,EACQ,MAAZF,EAAkB,IAAMA,EAAQnsB,IAAKssB,GAAMA,EAAE3a,OAAOgN,eAEhD4N,EAA2B,CAC/BC,OAAQ,CAACA,EAAQC,IAEVD,EAGgB,MAAnBH,GACC3sB,MAAML,QAAQgtB,IACbA,EAAejsB,SAASosB,EAAO7N,eAE1B8N,EAAS,MAAM,QAGxBA,EAAS,IAAI7G,GAAU,UAAU4G,kBAVbC,EAAS,MAAM,GAYrCC,aAAa,EACbC,QAASP,EAAazQ,KAAK,MAI7B,OADA9R,KAAKmgB,IAAIkC,WAAWK,GACb1iB,IACT,CAcA,gBAAO+iB,CAAUjrB,GACf,IAEE,MAAMkrB,EAASC,QAAQ,UACvBjjB,KAAKmgB,IAAI1X,IAAIua,EAAOlrB,IACpBkI,KAAKkI,OAAOxG,IAAI,0CAClB,CAAE,MACA1B,KAAKkI,OAAOgb,KAAK,6CACnB,CAEA,OAAOljB,IACT,CAcA,mBAAOqhB,CAAavpB,GAelB,OAdgB,IAAIooB,GAAelgB,KAAKmgB,IAAK,CAC3CX,MAAO1nB,EAAQ0nB,MACf1jB,YAAahE,EAAQgE,YACrB6kB,QAAS7oB,EAAQ6oB,QACjBnoB,KAAMV,EAAQU,MAAQ,MACtBmnB,qBAAsB7nB,EAAQ6nB,uBAAwB,EACtDI,WAAYjoB,EAAQioB,WACpByB,gBAAiB1pB,EAAQwnB,YACzBmC,mBAAoB3pB,EAAQonB,eAC5BJ,cAAehnB,EAAQgnB,cACvBuB,gBAAiBvoB,EAAQuoB,gBACzBC,gBAAiBxoB,EAAQwoB,kBAEnBe,eACDrhB,IACT,CAcA,qBAAOmjB,IAAkBC,GAEvB,OADIA,EAAM1sB,OAAS,GAAGsJ,KAAKmgB,IAAIgD,kBAAkBC,GAC1CpjB,IACT,CAkBA,uBAAOqjB,IAAoBC,GAMzB,OALAtjB,KAAKmgB,IAAIkD,oBACHC,EAAQ5sB,OAAS,EACjB4sB,EACA,CAAC,IAAI1G,GAAqB5c,KAAKmgB,IAAI1f,IAAIge,GAAW,CAAEL,QAAQ,OAE3Dpe,IACT,CAcA,4BAAOujB,IAAyBC,GAG9B,OAFIA,EAAa9sB,OAAS,GACxBsJ,KAAKmgB,IAAIoD,yBAAyBC,GAC7BxjB,IACT,CAgBA,kBAAayjB,CACXC,EAAe1lB,OAAO2lB,QAAQzG,IAAI0G,OAAS,IAC3C7G,OAA2B9kB,EAC3ByJ,GAAe,GAEf1B,KAAKmgB,IAAI0D,OAAOH,EAAM3G,GAAa+G,KAAKvd,UACtC,GAAI7E,EAAK,CACP,MAAM6G,QAAYvI,KAAKmgB,IAAI4D,SAC3B/jB,KAAKkI,OAAOxG,IAAI,2CAAiC6G,EACnD,GAEJ,SC3RK,IAAMyb,GAA8BC,GAApC,MACL,WAAAtsB,CACqB2J,EACA4iB,GADAlkB,KAAAsB,eAAAA,EACAtB,KAAAkkB,SAAAA,CAClB,CAEO,mBAAMC,CAAcnnB,GAC5ByK,GAA4BzH,KAAKsB,eAAgBtE,EACnD,CAEA,eAAMwE,CAAUoJ,EAA2BnJ,GACzC,MAAMzE,EAAM4N,EAAQtO,eAAeC,aAC7BuO,EAAMF,EAAQtO,eAAe2O,cAC7BvJ,EAAMC,GAAQC,IAAIqiB,IAAgCriB,IAAI5B,KAAKwB,WAajE,OAZAE,EAAIa,MACF,WAAWvC,KAAKsB,eAAerB,mBAAmBjD,EAAIkI,UAAUlI,EAAIuL,aAEhEvI,KAAKmkB,cAAcnnB,GACzB0E,EAAIa,MACF,WAAWvC,KAAKsB,eAAerB,kCAAkCjD,EAAIkI,UAAUlI,EAAIuL,aAG/EvI,KAAKkkB,SAASrZ,KAAK7N,EAAK8N,GAC9BpJ,EAAIa,MACF,WAAWvC,KAAKsB,eAAerB,sCAAsCjD,EAAIkI,UAAUlI,EAAIuL,OAElF9G,EAAKiB,QACd,GA3BWshB,GAA8BC,GAAApjB,GAAA,CAD1CC,EAAW,CAAEC,MAAOC,EAAMC,kCAGYvB,GACN+K,MAHpBuZ,IC3Cb,MAAMI,GAAmB,IAAIlY,aAQbmY,KACd,OAAOxuB,MAAMmN,KAAKohB,GAAiBpuB,SACrC,CAEA,SAASsuB,GAAiBC,EAAenL,GACnCgL,GAAiB3X,IAAI8X,IACzBH,GAAiBplB,IAAIulB,EAAO,CAAE3a,QAAS2a,EAAOnL,cAChD,CA8BM,SAAUzN,GAAQrV,GACtB,MAAO,CACLS,EACAC,EACAwtB,KAEA,IAAIC,EAAkDnuB,EACtD,QAAwB,IAAbmuB,EAA0B,CACnC,MAAMC,EACJxtB,QAAQC,YAAY,oBAAqBJ,IAAW,GACtD0tB,EAAWC,EAAWF,EACxB,CACA,QAAwB,IAAbC,EACT,MAAM,IAAIpe,GACR,kEAAkEme,QAAsBztB,EAA4B8E,mEAIxH,MAAM8oB,EAA8B,iBAAbF,GA7CD,mBADEvuB,EA8C2CuuB,IA7C/BvuB,EAAM0P,qBAAqBqH,EADnE,IAA4B/W,EA+CxB,MAAMquB,EAAQI,EACQF,EA3CR5oB,KAAT,UA4CD+oB,GAAqBH,GAezB,OAbAH,GAAiBC,EAAO,KACtB,GAAII,EACF,IACE,OAAOE,EAAYpkB,IAAIgkB,EACzB,CAAE,MACA,OAAOte,EAAa2F,SAAS2Y,EAC/B,CAEF,OACII,EAAYpkB,IAAIgkB,KAIftjB,EAAOojB,EAAPpjB,CAAcpK,EAAQC,EAAawtB,GAE9C,CAUM,SAAU3Y,GACd3I,EACAL,GAEA,MAAO,CACL9L,EACAC,EACAwtB,KAEA,MAAMD,EA7EV,EACErhB,EACAL,IAEOA,EAAU,GAAGK,EAAMrH,kBAAkBgH,IAAeK,EAAMrH,KAAT,aAyExCipB,CAAqB5hB,EAAOL,GAE1C,OADAyhB,GAAiBC,EAAO,IAAMQ,EAAejZ,SAAS5I,EAAOL,IACtD1B,EAAOojB,EAAPpjB,CAAcpK,EAAQC,EAAawtB,GAE9C,QC5FO,IAAMQ,GAAN,qBAOK,sBAAW/e,GACnB,IAAKjG,KAAK0L,aACR,MAAM,IAAIrF,GAAc,uCAC1B,OAAOrG,KAAK0L,YACd,CAEU,cAAWhK,GAEnB,OADK1B,KAAK+hB,UAAS/hB,KAAK+hB,QAAUpgB,GAAQC,IAAIqjB,KACvCjlB,KAAK+hB,OACd,CAEA,WAAApqB,CAEmBG,EACA+kB,GADA7c,KAAAlI,QAAAA,EACAkI,KAAA6c,UAAAA,CAChB,CAEH,cAAOnT,CAAQ5R,GACb,MAAM4J,EAAM1B,KAAK0B,IAAIE,IAAI5B,KAAK0J,SACxBwb,EAAiBb,KACvB,MAAO,CACLpa,OAAQgb,GACRtb,UAAW,CACT,CAAEC,QAASxL,GAAsB+mB,SAAUrtB,GAC3C,CAAE8R,QAASvL,GAAkB8mB,SAAUnlB,KAAKiG,aAAamf,QACzD,CACExb,QAASpL,GACT4a,WAAY,IACVthB,EAAQ6S,UAAUxU,IAAKkvB,IACrB3jB,EAAIkS,KAAK,+BAA+ByR,EAAExpB,MACnC,IAAIwpB,KACP,IAEV3lB,GACA+K,GACA,CACEb,QAASG,GACTF,SAAUma,OAETkB,GAELhb,QAAS,CACP9L,GACAC,GACAG,GACAkB,GACA+K,MACGya,EAAe/uB,IAAKmvB,GAAaA,EAAS1b,UAGnD,CAEA,4BAAa2b,CACXztB,GAEA,MAAM4J,EAAM1B,KAAK0B,IAAIE,IAAI5B,KAAKulB,iBAE9B,IAAKvlB,KAAK0L,aAAc,CACtB,MAAM8Z,EAAU1tB,EAAQ2tB,KAAKtvB,IAAI,EAAEuvB,EAAOvL,KAAQjU,KAC/BA,EAAKgS,MAEf,CAACwN,EAAOvL,KAAQjU,GADD,CAACwf,EAAOvL,IAGhCna,KAAK0L,aAAe,IAAIia,SAClB3lB,KAAK0L,aAAaka,KAAKJ,GAC7B,MAAMK,EAAU7lB,KAAK0L,aAAa0Z,OAClC,IAAK,IAAI1N,EAAI,EAAGA,EAAImO,EAAQnvB,OAAQghB,IAAK,CACvC,MAAMoO,EAAIhuB,EAAQ2tB,KAAK/N,GAEvB,IAAI5U,EADmBgjB,EAAEjhB,MAAM,EAAGihB,EAAEpvB,QACHwhB,MACjC,IACGpV,IACCA,EAAiDE,KACnD,CACA,MAAM0iB,EAAQ/iB,EAAQI,eAAe8iB,EAAQnO,GAAG7U,SAChD,IAAK6iB,EACH,MAAM,IAAIrf,GACR,oCAAoCwf,EAAQnO,GAAG7U,kGAEnD,IACEC,EAAe4iB,EAA2C1iB,KACtD0iB,EACA,IAAKA,CACX,CAAE,MAAOhlB,GACP,MAAM,IAAI2F,GACR,kCAAkCwf,EAAQnO,GAAG7U,YAAYnC,IAE7D,CACF,CACAqlB,GAA4BF,EAAQnO,GAAG7U,QAAvCkjB,CAAgDjjB,EAClD,CAGA,GAFApB,EAAIkS,KAAK,2CAEL9b,EAAQkuB,eACV,UACQluB,EAAQkuB,gBAChB,CAAE,MAAOtlB,GACP,MAAM,IAAI2F,GAAc,qCAAqC3F,EAC/D,CAEJ,CAEA,OAAOV,KAAKiG,YAAYmf,MAC1B,CAEA,2BAAMa,GACJ,MAAMvkB,EAAMujB,GAAgBvjB,IAAIE,IAAI5B,KAAKimB,uBACnCC,EACJlmB,KAAK6c,UAAUpc,IAASpC,IAC1B,IAAK,MAAM4R,KAAWiW,EACpB,IACMjW,IACFvO,EAAIkS,KAAK,iBAAiB3D,EAAQ7Z,kBAC5B6Z,EAAQkW,WAElB,CAAE,MAAOzlB,GACPgB,EAAImF,MAAM,iCAAkCnG,EAC9C,CACF,UACQiL,EAAQwa,UAChB,CAAE,MAAOzlB,GACPgB,EAAImF,MAAM,8BAA+BnG,EAC3C,CACF,GAlIWskB,GAAeC,GAAApkB,GAAA,CAF3BulB,IACA5b,EAAO,CAAA,GAoBHtJ,GAAA,EAAAC,EAAO/C,oCAEoBqgB,MArBnBuG,UC9BAqB,GAA8B5nB,OACzC,+BAGW6nB,GAA0B7nB,OAAO,2BCKvC,IAAM8nB,GAAN,MAAA,WAAA5uB,GACYqI,KAAAwmB,QAAU,IAAIta,GA8BjC,CA5BE,MAAAua,CAAOC,EAAsBC,EAAmB,IAC9C,MAAMpmB,EAAqC,CACzCmmB,eACAC,OAAQ,IAAIra,IAAIqa,EAAO1wB,OAAO8R,UAC9B6e,UAAW,IAAIve,MAGjB,OADArI,KAAKwmB,QAAQxnB,IAAI0nB,EAAcnmB,GACxBA,CACT,CAEA,MAAAsmB,CAAOH,GACL,OAAO1mB,KAAKwmB,QAAQM,OAAOJ,EAC7B,CAEA,GAAAjmB,CAAIimB,GACF,OAAO1mB,KAAKwmB,QAAQ/lB,IAAIimB,EAC1B,CAEA,SAAAK,CAAUL,GACR,MAAO,IAAK1mB,KAAKwmB,QAAQ/lB,IAAIimB,IAAeC,QAAU,GACxD,CAEA,OAAAK,CAAQN,EAAsBO,GAC5B,MAAM1mB,EAASP,KAAKwmB,QAAQ/lB,IAAIimB,GAChC,QAAKnmB,KACAA,EAAOomB,OAAOO,OACZ3mB,EAAOomB,OAAOla,IAAIwa,IAAU1mB,EAAOomB,OAAOla,IAAI,KACvD,UA9BW8Z,GAA4B1lB,GAAA,CADxCC,KACYylB,ICeN,IAAMY,GAAgBC,GAAtB,cAA+B/b,GAGpC,WAAA1T,CACE4T,EACqCzM,EACahH,EACjCuvB,GAEjBznB,MAAM2L,EAAe6b,GAAiBvrB,MAHYmE,KAAAlI,QAAAA,EACjCkI,KAAAqnB,SAAAA,EAGjBrnB,KAAKkmB,SAAWpnB,EAAS3I,IAAK0M,GAAaF,EAAgBlC,IAAIoC,GACjE,CAGA,MAAAghB,CAA8B6C,GAC5B,MAAMxe,EAASvG,GAAQC,IAAIwlB,GAAiBvrB,MACtCyrB,IAA2BtnB,KAAKlI,QAAQwvB,iBAC9C,GAAIA,IAAqBZ,EACvB,MAAM,IAAIpK,EACR,6DAGJ,MAAMiL,EAAqBb,GAAgB,GAErCc,EAAU,IAAIC,GAA0BC,IAC5C,MAAMC,GACJ,KAAKC,KAAKC,SAASzxB,SAAS,IAAIyO,MAAM,EAAG,IAAKijB,cAEhD5f,EAAO0L,KACL,0BAA0B+T,gBAAyB3nB,KAAKuL,cAActL,QAExE,MAAM8nB,EAAK,IAAA,MAAK,WAAApwB,GACdqI,KAAA2nB,WAAaA,CAaf,CAZE,OAAAK,IAAW9hB,GAIT,OAHAgC,EAAO3F,MACL,gBAAgBvC,KAAK2nB,qCAEhBM,QAAQ9J,UAAU2F,KAAK,KAC5B,MAAM3nB,EC9DZ,CAAiC+J,IACrC,MAAOgiB,EAAa5f,EAAW6f,EAAIC,GAAWliB,EA6B9C,MAAO,CA3BWgiB,GAAarsB,MAAQqsB,EA2BpB5f,EAAW6f,EAzBJtyB,MAAML,QAAQ4yB,GACpCA,EAAQjyB,IAAKuK,IACX,IACE,MAA2B,mBAAhBA,EAAE2nB,UAAiC3nB,EAAE2nB,YAK5B,iBAAN3nB,EAAiBA,EAAIgG,KAAKC,UAAUjG,EACpD,CAAE,MAAO4nB,GAEP,MACF,IAEFF,GAAwC,mBAAtBA,EAAQC,UACxBD,EAAQC,YACW,iBAAZD,EACLA,EACA1hB,KAAKC,UAAUyhB,GAQzB,ED+ByBG,CAAuBriB,GACpCwhB,EAASjmB,KAAK,CAAE/J,KAAM,UAAWyE,SACjC+L,EAAO3F,MACL,gBAAgBvC,KAAK2nB,sCAG3B,GAEI1xB,EAAqCqxB,EACvC,CAACpkB,KAA6BslB,KAC5B,MAAMvB,EACa,iBAAV/jB,EACHA,EACCA,GAAerH,MAASqH,GAAevL,aAAakE,KAC3D,QAAKorB,GACEjnB,KAAKqnB,SAASL,QAAQO,EAAoBN,SAEnDhvB,EAEJiQ,EAAO5F,QACL,wBAAwBqlB,YAAqB3nB,KAAKkmB,SAASxvB,qBAE7D,IAAK,MAAMuZ,KAAWjQ,KAAKkmB,SAAU,CACnC,MAAMuC,EAAcxY,GAAStY,aAAakE,MAAQ,iBAClD,IACEqM,EAAO3F,MACL,wBAAwBolB,gBAAyBc,KAEnDxY,EAAQyY,QAAQX,EAAI9xB,EACtB,CAAE,MAAOyK,GACPwH,EAAO3F,MACL,+BAA+BolB,gBAAyBc,MAAgB/nB,GAAGuG,SAAWvG,KAExFwH,EAAOrB,MAAMnG,EACf,CACF,CAEA,MAAO,KACLwH,EAAO3F,MAAM,4BAA4BolB,GAEzC,IAAK,MAAM1X,KAAWjQ,KAAKkmB,SAAU,CACnC,MAAMuC,EAAcxY,GAAStY,aAAakE,MAAQ,iBAClD,IACEqM,EAAO3F,MACL,0BAA0BolB,kBAA2Bc,KAEvDxY,EAAQ0Y,UAAUZ,EACpB,CAAE,MAAOrnB,GACPwH,EAAO3F,MACL,qCAAqColB,gBAAyBc,MAAgB/nB,GAAGuG,SAAWvG,KAE9FwH,EAAOrB,MAAMnG,EACf,CACF,CACI4mB,GACFtnB,KAAKqnB,SAASR,OAAOU,MAMrBqB,EAAaC,GADW,MACqB3d,KACjDC,GAAI,KACFjD,EAAO3F,MAAM,uBAEfpM,GACE,KAAA,CACEuB,KAAM,YACNyE,KAAM,CACJ2sB,IAAI,IAAIzgB,MAAOwV,mBAMvB,OAAOkL,GAAMvB,EAASoB,EACxB,CAIA,cAAAI,CAA+B9lB,GAC7B,MAAMgF,EAASvG,GAAQC,IAAIwlB,GAAiBvrB,MAE5C,OAAO,IAAI4rB,GAA0BC,IACnC,MAAMK,EAAK,IAAA,MACT,OAAAC,IAAW9hB,GACT,OAAO+hB,QAAQ9J,UAAU2F,KAAK,KAC5B4D,EAASjmB,KAAK,CAAEtF,KAAM+J,KAE1B,GAGF,IACE,IAAK,MAAM+J,KAAWjQ,KAAKkmB,SACzBjW,EAAQyY,QAAQX,EAEpB,CAAE,MAAOrnB,GACPgnB,EAAS7gB,MAAM,6BAA4BnG,EAAEuG,SAAWvG,GAC1D,CAEA,MAAO,KACL,IACE,IAAK,MAAMuP,KAAWjQ,KAAKkmB,SACzBjW,EAAQ0Y,UAAUZ,EAEtB,CAAE,MAAOrnB,GACPwH,EAAOrB,MAAMnG,EACf,IAGN,UAtIAG,GAAA,CADCooB,IACO/nB,GAAA,EAAAsE,EAAM,oGAAwCiiB,KAoGrDN,GAAAvhB,UAAA,SAAA,MAID/E,GAAA,CAFCooB,EAAI,WAEW/nB,GAAA,EAAAsE,EAAM,6FAAyBiiB,KA8B9CN,GAAAvhB,UAAA,iBAAA,MApJUuhB,GAAgBC,GAAAvmB,GAAA,CAD5BgT,IAMI3S,GAAA,EAAAC,EAAOklB,KACPnlB,GAAA,EAAAC,EAAOmlB,KAFO4C,GAAA,oBAAA,CAAAxpB,gBAGY6mB,MAPlBY,IETN,IAAMgC,GAA4BC,GAAlC,cAA2C/d,GAChD,WAAA1T,CACE4T,EACkDzT,EACjCuvB,GAEjBznB,MAAM2L,EAAe6d,GAA6BvtB,MAHAmE,KAAAlI,QAAAA,EACjCkI,KAAAqnB,SAAAA,CAGnB,CAGA,eAAMgC,CACIhtB,GAER,IAAK2D,KAAKlI,QAAQwvB,iBAChB,MAAO,CAAEgC,SAAS,GAEpB,MAAM5C,EACJrqB,GAAMqqB,oBAAuBuB,QAAQ9J,QAAQje,EAAKC,SAASC,YACvDumB,EAAS9wB,MAAML,QAAQ6G,GAAMsqB,QAAUtqB,EAAKsqB,OAAS,GACrDpmB,EAASP,KAAKqnB,SAASZ,OAAOC,EAAcC,GAClD,MAAO,CACLD,aAAcnmB,EAAOmmB,aACrBC,OAAQ3mB,KAAKqnB,SAASN,UAAUxmB,EAAOmmB,cAE3C,CAGA,WAAA6C,CAAoBltB,GAClB,IAAK2D,KAAKlI,QAAQwvB,iBAChB,MAAO,CAAEgC,SAAS,GAEpB,MAAM5C,EAAerqB,GAAMqqB,aAC3B,OAAKA,EAGE,CACL8C,aAAcxpB,KAAKqnB,SAASR,OAAOH,GACnCA,gBAJO,CAAE8C,cAAc,EAM3B,UA7BM3oB,GAAA,CADL7H,EAAK,aAEHkI,GAAA,EAAAuoB,kGAaFN,GAAAvjB,UAAA,YAAA,MAGD/E,GAAA,CADC7H,EAAK,eACOkI,GAAA,EAAAuoB,iGAYZN,GAAAvjB,UAAA,cAAA,MAvCUujB,GAA4BC,GAAAvoB,GAAA,CADxCgT,IAII3S,GAAA,EAAAC,EAAOmlB,KADO4C,GAAA,oBAAA,CAAAxpB,UAEY6mB,MAJlB4C,ICFN,IAAMO,GAAiBC,GAAvB,MACL,kBAAOC,CACL9qB,EACAtG,EAAe,SACfV,EAAiC,CAAA,GAEjC,MAAM+hB,EAAqB,CAACsN,IAI5B,OAHIrvB,EAAQwvB,kBACVzN,EAAYtW,KAAK4lB,IAEZ,CACLlf,OAAQ0f,GACR9P,cACAgQ,QAAS,CACPC,GAAaC,SAAS,CACpB,CACEvxB,KAAMA,EAAK8B,QAAQ,MAAO,IAC1B2P,OAAQ0f,OAIdhgB,UAAW,CACTjK,GACA6mB,GACA,CACE3c,QAASyc,GACTlB,SAAUrmB,GAAY,IAExB,CACE8K,QAAS0c,GACTnB,SAAUrtB,GAAW,CAAA,IAI7B,UAlCW4xB,GAAiBC,GAAA9oB,GAAA,CAD7B2J,EAAO,CAAA,IACKkf,ICFN,IAAMM,GAAWC,GAAjB,MACL,yBAAaC,CACXpyB,GAEA,MAAMqyB,gBAAEA,EAAezQ,aAAEA,GAAiB5hB,EAIpCgH,SADEkmB,GAAgBO,gBAAgBztB,IACd3B,IAAK8Z,GAAYA,EAAQpN,SAE7CgnB,EAOU,CAAC7E,GAAgBtb,QAAQ5R,IAyBzC,OAvBIqyB,GACFrrB,EAAS+G,QAAShD,IAChBgnB,EAAQtmB,KACNwV,GAAalW,GAAS6G,QAAQ7G,EAAS,CACrC6W,eACAF,mBAAoB1hB,EAAQ0hB,mBAC5Bva,iBAAkBnH,EAAQmH,iBAC1B0a,aAAc7hB,EAAQ6hB,kBAM1B7hB,EAAQsyB,iBAAiBC,sBAC3BR,EAAQtmB,KACNmmB,GAAkBE,YAChB9xB,EAAQsyB,gBAAgBE,kBAAoBxrB,EAC5ChH,EAAQsyB,gBAAgBG,iBAAmB,UAC3CzyB,EAAQsyB,kBAKP,CACLngB,OAAQggB,GACRJ,QAASA,EAEb,GAGKtjB,eAAeikB,KAAgC,CCxDhD,SAAUC,GAAavnB,GAC5B,MAAMwnB,EAAIzd,EAAMxM,IAAIyC,GACpB,IAAKwnB,EACJ,MAAM,IAAIrkB,GAAc,iCAAiCnD,GAE1D,OADa2I,EAAWC,SAAS4e,EAElC,CDCaV,GAAWC,GAAAppB,GAAA,CADvB2J,EAAO,CAAA,IACKwf,IEqCN,MAAMW,GAAU,cAQVC,GAAS,aAQTC,GAAe,mBAEfC,GAAe,cAE5B/rB,EAASgsB,qBAAoB,GAC7BhsB,EAASisB,gBAAgBF,GAAcH,IACvC5rB,EAASgsB,qBAAoB"}
|