@rosoftlab/core 1.0.5-alpha-6 → 1.0.5-alpha-7

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.
@@ -15,9 +15,9 @@ import { Router, ActivatedRoute, UrlSegment, NavigationEnd } from '@angular/rout
15
15
  import * as i1$3 from '@ngx-translate/core';
16
16
  import { TranslateService, TranslateModule, TranslateLoader } from '@ngx-translate/core';
17
17
  import { parseISO } from 'date-fns';
18
+ import { __decorate, __metadata } from 'tslib';
18
19
  import { compare } from 'fast-json-patch';
19
20
  import queryString from 'query-string';
20
- import { __decorate, __metadata } from 'tslib';
21
21
 
22
22
  class Tokens {
23
23
  }
@@ -864,6 +864,22 @@ class MetadataStorage {
864
864
  const metadata = this.metadataMap.get(target) || {};
865
865
  return propertyKey ? metadata[`${key}:${propertyKey}`] : metadata[key];
866
866
  }
867
+ static getMergedMetadata(key, target) {
868
+ const chain = [];
869
+ let current = target;
870
+ while (current && current !== Object.prototype) {
871
+ chain.push(current);
872
+ current = Object.getPrototypeOf(current);
873
+ }
874
+ const merged = {};
875
+ for (let i = chain.length - 1; i >= 0; i--) {
876
+ const metadata = this.getMetadata(key, chain[i]);
877
+ if (metadata && typeof metadata === 'object') {
878
+ Object.assign(merged, metadata);
879
+ }
880
+ }
881
+ return Object.keys(merged).length ? merged : undefined;
882
+ }
867
883
  static setMetadata(key, value, target, propertyKey) {
868
884
  let metadata = this.metadataMap.get(target);
869
885
  if (!metadata) {
@@ -1154,16 +1170,16 @@ class BaseModel {
1154
1170
  return properties;
1155
1171
  }
1156
1172
  getModelPropertyNames(model) {
1157
- return MetadataStorage.getMetadata('AttributeMapping', model);
1173
+ return MetadataStorage.getMergedMetadata('AttributeMapping', model);
1158
1174
  }
1159
1175
  getModelRequiredPropertyNames(model) {
1160
- return MetadataStorage.getMetadata('AttributeRequired', model);
1176
+ return MetadataStorage.getMergedMetadata('AttributeRequired', model);
1161
1177
  }
1162
1178
  getModelDefaultPropertyValues(model) {
1163
- return MetadataStorage.getMetadata('AttributedefaultValue', model);
1179
+ return MetadataStorage.getMergedMetadata('AttributedefaultValue', model);
1164
1180
  }
1165
1181
  getModelSubGroupPropertyNames(model) {
1166
- return MetadataStorage.getMetadata('AttributeformSubGroup', model);
1182
+ return MetadataStorage.getMergedMetadata('AttributeformSubGroup', model);
1167
1183
  }
1168
1184
  getFromGroup(fb) {
1169
1185
  const props = Object.keys(this.getModelPropertyNames(this));
@@ -1230,6 +1246,10 @@ class BaseModel {
1230
1246
  return '';
1231
1247
  }
1232
1248
  }
1249
+ __decorate([
1250
+ Attribute({ serializedName: 'id' }),
1251
+ __metadata("design:type", Object)
1252
+ ], BaseModel.prototype, "id", void 0);
1233
1253
 
1234
1254
  class ErrorResponse {
1235
1255
  constructor(errors) {
@@ -1573,7 +1593,7 @@ class BaseDatastore {
1573
1593
  return properties;
1574
1594
  }
1575
1595
  getModelPropertyNames(model) {
1576
- return MetadataStorage.getMetadata('AttributeMapping', model);
1596
+ return MetadataStorage.getMergedMetadata('AttributeMapping', model);
1577
1597
  }
1578
1598
  getApiFieldMap(modelType) {
1579
1599
  return modelType.apiFieldMap || null;
@@ -1668,10 +1688,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
1668
1688
 
1669
1689
  let Employee = class Employee extends BaseModel {
1670
1690
  };
1671
- __decorate([
1672
- Attribute({ serializedName: 'id' }),
1673
- __metadata("design:type", String)
1674
- ], Employee.prototype, "id", void 0);
1675
1691
  __decorate([
1676
1692
  Attribute({ serializedName: 'userName', required: true }),
1677
1693
  __metadata("design:type", String)
@@ -1712,10 +1728,6 @@ Employee = __decorate([
1712
1728
 
1713
1729
  let Menu = class Menu extends BaseModel {
1714
1730
  };
1715
- __decorate([
1716
- Attribute({ serializedName: 'id' }),
1717
- __metadata("design:type", String)
1718
- ], Menu.prototype, "id", void 0);
1719
1731
  __decorate([
1720
1732
  Attribute({ serializedName: 'header' }),
1721
1733
  __metadata("design:type", String)
@@ -1769,10 +1781,6 @@ Menu = __decorate([
1769
1781
 
1770
1782
  let Right = class Right extends BaseModel {
1771
1783
  };
1772
- __decorate([
1773
- Attribute({ serializedName: 'id' }),
1774
- __metadata("design:type", String)
1775
- ], Right.prototype, "id", void 0);
1776
1784
  __decorate([
1777
1785
  Attribute({ serializedName: 'name' }),
1778
1786
  __metadata("design:type", String)
@@ -1822,10 +1830,6 @@ Right = __decorate([
1822
1830
 
1823
1831
  let Role = class Role extends BaseModel {
1824
1832
  };
1825
- __decorate([
1826
- Attribute({ serializedName: 'id' }),
1827
- __metadata("design:type", String)
1828
- ], Role.prototype, "id", void 0);
1829
1833
  __decorate([
1830
1834
  Attribute({ serializedName: 'name' }),
1831
1835
  __metadata("design:type", String)
@@ -1845,10 +1849,6 @@ let User = class User extends BaseModel {
1845
1849
  return this.firstName + ' ' + this.lastName;
1846
1850
  }
1847
1851
  };
1848
- __decorate([
1849
- Attribute({ serializedName: 'id' }),
1850
- __metadata("design:type", String)
1851
- ], User.prototype, "id", void 0);
1852
1852
  __decorate([
1853
1853
  Attribute({ serializedName: 'firstName' }),
1854
1854
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"rosoftlab-core.mjs","sources":["../../../../projects/rosoftlab/core/src/lib/auth/tokens.ts","../../../../projects/rosoftlab/core/src/lib/auth/auth.service.ts","../../../../projects/rosoftlab/core/src/lib/auth/user-manager.factory.ts","../../../../projects/rosoftlab/core/src/lib/auth/provide-auth.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.html","../../../../projects/rosoftlab/core/src/lib/interfaces/dialog.interface.ts","../../../../projects/rosoftlab/core/src/lib/tokens/dynamic-form-tokens.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-crud-implementation.ts","../../../../projects/rosoftlab/core/src/lib/tokens/datastore-token.ts","../../../../projects/rosoftlab/core/src/lib/services/base.service.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-form-edit.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-table-implementation.ts","../../../../projects/rosoftlab/core/src/lib/configurations.ts","../../../../projects/rosoftlab/core/src/lib/grid-layout-format.enum.ts","../../../../projects/rosoftlab/core/src/lib/constants/symbols.ts","../../../../projects/rosoftlab/core/src/lib/converters/date/date.converter.ts","../../../../projects/rosoftlab/core/src/lib/models/metadata-storage.ts","../../../../projects/rosoftlab/core/src/lib/decorators/attribute.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-datastore-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/models/base-meta.model.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-model-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/custom.type.decorator.ts","../../../../projects/rosoftlab/core/src/lib/services/cache.service.ts","../../../../projects/rosoftlab/core/src/lib/interceptors/cache.interceptor.ts","../../../../projects/rosoftlab/core/src/lib/models/base-query-data.ts","../../../../projects/rosoftlab/core/src/lib/models/base.model.ts","../../../../projects/rosoftlab/core/src/lib/models/error-response.model.ts","../../../../projects/rosoftlab/core/src/lib/models/rule.ts","../../../../projects/rosoftlab/core/src/lib/pipes/input-error.pipe.ts","../../../../projects/rosoftlab/core/src/lib/pipes/Nl2brPipe.pipe.ts","../../../../projects/rosoftlab/core/src/lib/services/base-datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/models/employee.ts","../../../../projects/rosoftlab/core/src/lib/models/menu.ts","../../../../projects/rosoftlab/core/src/lib/models/right.ts","../../../../projects/rosoftlab/core/src/lib/models/role.ts","../../../../projects/rosoftlab/core/src/lib/models/user.ts","../../../../projects/rosoftlab/core/src/lib/services/employee.service.ts","../../../../projects/rosoftlab/core/src/lib/services/local-file.service.ts","../../../../projects/rosoftlab/core/src/lib/services/role.service.ts","../../../../projects/rosoftlab/core/src/lib/services/route-history.service.ts","../../../../projects/rosoftlab/core/src/lib/services/translate-loader.service.ts","../../../../projects/rosoftlab/core/src/lib/services/user.service.ts","../../../../projects/rosoftlab/core/src/lib/providers.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-class-resolver.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-service-resolver.ts","../../../../projects/rosoftlab/core/src/lib/rsl-base-module.ts","../../../../projects/rosoftlab/core/src/lib/validators/pattern-validator.ts","../../../../projects/rosoftlab/core/src/lib/services/right.service.ts","../../../../projects/rosoftlab/core/src/lib/utils.ts","../../../../projects/rosoftlab/core/src/public-api.ts","../../../../projects/rosoftlab/core/src/rosoftlab-core.ts"],"sourcesContent":["export class Tokens {\n}\n// library/src/lib/auth/tokens.ts\nimport { InjectionToken } from '@angular/core';\nimport type { UserManagerSettings } from 'oidc-client-ts';\n\nexport const OIDC_CLIENT_SETTINGS = new InjectionToken<UserManagerSettings>('OIDC_CLIENT_SETTINGS');\nexport const OIDC_GUEST_CLIENT_SETTINGS = new InjectionToken<UserManagerSettings>('OIDC_GUEST_CLIENT_SETTINGS');\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport type { UserManagerSettings } from 'oidc-client-ts';\r\nimport { User, UserManager } from 'oidc-client-ts';\r\nimport { BehaviorSubject, Observable, firstValueFrom } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\r\nimport { OIDC_GUEST_CLIENT_SETTINGS } from './tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthService {\r\n // Observable navItem source\r\n private _authNavStatusSource = new BehaviorSubject<boolean>(false);\r\n // Observable navItem stream\r\n authNavStatus$ = this._authNavStatusSource.asObservable();\r\n\r\n // private manager = new UserManager(getClientSettings());\r\n private user: User | null | undefined;\r\n\r\n constructor(\r\n private manager: UserManager,\r\n private http: HttpClient,\r\n @Optional() @Inject(OIDC_GUEST_CLIENT_SETTINGS) private guestSettings?: UserManagerSettings\r\n ) {\r\n this.manager.getUser().then((user) => {\r\n this.user = user;\r\n this._authNavStatusSource.next(this.isAuthenticated());\r\n });\r\n }\r\n login() {\r\n this.manager.clearStaleState().then(() => {\r\n this.manager.signinRedirect();\r\n });\r\n }\r\n logout() {\r\n this.manager.clearStaleState().then(() => {\r\n this.manager.signoutRedirect();\r\n });\r\n }\r\n async completeAuthentication() {\r\n // console.log(\"completeAuthentication\")\r\n await this.manager.signinRedirectCallback().then((user) => {\r\n this.user = user;\r\n this._authNavStatusSource.next(this.isAuthenticated());\r\n });\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.user != null && !this.user.expired;\r\n }\r\n\r\n get authorizationHeaderValue(): string {\r\n return this.user != null ? `${this.user.token_type} ${this.user.access_token}` : '';\r\n }\r\n get getToken(): string {\r\n return this.user != null ? `${this.user.access_token}` : '';\r\n }\r\n get getId(): string | null {\r\n return this.user != null ? this.user.profile.sub : null;\r\n }\r\n get name(): string {\r\n return this.user != null ? this.user.profile?.['first_name'] + ' ' + this.user.profile?.['last_name'] : '';\r\n }\r\n get email(): string | null | undefined {\r\n return this.user != null ? this.user.profile?.email : '';\r\n }\r\n get firstName(): string {\r\n return this.user != null ? (this.user.profile as { [key: string]: any })['first_name'] : '';\r\n }\r\n set firstName(newValue: string) {\r\n this.user!.profile!['first_name'] = newValue;\r\n }\r\n get lastName(): string {\r\n return this.user != null ? (this.user.profile as { [key: string]: any })['last_name'] : '';\r\n }\r\n set lastName(newValue: string) {\r\n this.user!.profile!['last_name'] = newValue;\r\n }\r\n get userCode(): string {\r\n return this.user != null ? (this.user.profile?.['user_code'] as string) : '';\r\n }\r\n get roles(): string {\r\n return this.user != null ? (this.user.profile?.['roles'] as string) : '';\r\n }\r\n\r\n get organisationId(): string {\r\n return this.user != null ? (this.user.profile?.['organization_id'] as string) : '';\r\n }\r\n get organisationName(): string {\r\n return this.user != null ? (this.user.profile?.['organization_name'] as string) : '';\r\n }\r\n async signout() {\r\n await this.manager.signoutRedirect();\r\n }\r\n\r\n async loginWithGuest(): Promise<void> {\n const token = localStorage.getItem('guest_token');\n if (!token) {\n throw new Error('No guest token found in local storage');\n }\n const authUrlToUse = this.guestSettings?.authority || this.manager.settings.authority;\n const body = new URLSearchParams();\n body.set('grant_type', 'guest');\n body.set('guest_token', token);\n body.set('client_id', this.guestSettings?.client_id || this.manager.settings.client_id);\n body.set('scope', this.guestSettings?.scope || 'openid profile offline_access');\n\n await firstValueFrom(\n this.http.post(`${authUrlToUse}/connect/token`, body.toString(), {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n }).pipe(\n map((response: any) => {\n if (!response.access_token) {\n throw new Error('Login failed');\n }\n const expires_at = response.expires_in ? Math.floor(Date.now() / 1000) + response.expires_in : 0;\n const user = new User({\n id_token: response.id_token || '',\n session_state: null,\n access_token: response.access_token,\n refresh_token: response.refresh_token || '',\n token_type: response.token_type || 'Bearer',\n scope: response.scope || '',\n profile: {\n sub: 'guest', // Dummy sub for guest\n iss: authUrlToUse,\n aud: this.manager.settings.client_id,\n exp: expires_at,\n iat: Math.floor(Date.now() / 1000)\n } as any, // Cast to any to avoid strict typing\n expires_at: expires_at,\n userState: null\n });\n this.manager.storeUser(user);\n this.user = user;\n this._authNavStatusSource.next(this.isAuthenticated());\n })\n )\n );\n }\n}\n","// library/src/lib/auth/user-manager.factory.ts\nimport { inject } from '@angular/core';\nimport { UserManager } from 'oidc-client-ts';\nimport { OIDC_CLIENT_SETTINGS } from './tokens';\n\nexport function provideOidcUserManager() {\n return {\n provide: UserManager,\n useFactory: () => new UserManager(inject(OIDC_CLIENT_SETTINGS)),\n };\n}\n","// library/src/lib/auth/provide-auth.ts\nimport { Provider } from '@angular/core';\nimport type { UserManagerSettings } from 'oidc-client-ts';\nimport { OIDC_CLIENT_SETTINGS, OIDC_GUEST_CLIENT_SETTINGS } from './tokens';\nimport { provideOidcUserManager } from './user-manager.factory';\n\nexport function provideAuth(settings: UserManagerSettings, guest_settings?: UserManagerSettings): Provider[] {\n return [\n { provide: OIDC_CLIENT_SETTINGS, useValue: settings },\n { provide: OIDC_GUEST_CLIENT_SETTINGS, useValue: guest_settings },\n provideOidcUserManager()\n ];\n}\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-field-error-display',\r\n templateUrl: './field-error-display.component.html',\r\n styleUrls: ['./field-error-display.component.scss'],\r\n standalone: false\r\n})\r\nexport class FieldErrorDisplayComponent {\r\n\r\n @Input() errorMsg: string;\r\n @Input() displayError: boolean;\r\n\r\n}\r\n","<div *ngIf=\"displayError\" >\r\n <!-- <span class=\"glyphicon glyphicon-remove form-control-feedback fix-error-icon\"></span> -->\r\n <span class=\"sr-only\">(error)</span>\r\n <div class=\"error-msg\">\r\n {{ errorMsg }}\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.scss'],\r\n standalone: false\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-under-construction',\r\n templateUrl: './under-construction.component.html',\r\n styleUrls: ['./under-construction.component.scss'],\r\n standalone: false\r\n})\r\nexport class UnderConstructionComponent {\r\n\r\n constructor() { }\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>","// projects/rosoftlab/core/src/lib/interfaces/dialog.interface.ts\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface IDialogService {\n confirmDelete(): Observable<boolean>;\n confirm(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean>;\n showError(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean>;\n showSaveMessage(message?: string): void;\n // Add other common methods like 'open' or 'alert' if needed\n}\n\nexport const DIALOG_SERVICE_TOKEN = new InjectionToken<IDialogService>('DIALOG_SERVICE_TOKEN');\n","import { InjectionToken, Type } from '@angular/core';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nexport const MODEL_SERVICE = new InjectionToken<BaseService<BaseModel>>('MODEL_SERVICE');\r\nexport const MODEL_TOKEN = new InjectionToken<Type<BaseModel>>('MODEL_TOKEN');\r\n\r\nexport const RSL_FORM_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('RSL_FORM_IMPLEMENTATIONS_TOKEN');\r\n// // This token will store a map of string keys to Component Classes\r\n// export const TABLE_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('TABLE_IMPLEMENTATIONS_TOKEN');\r\n// export const CRUD_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('CRUD_IMPLEMENTATIONS_TOKEN');\r\n","import { Location } from '@angular/common';\r\nimport { Directive, HostBinding, inject, Input } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DIALOG_SERVICE_TOKEN } from '../interfaces/dialog.interface';\r\nimport { MODEL_SERVICE, MODEL_TOKEN } from '../tokens/dynamic-form-tokens';\r\n\r\n@Directive()\r\nexport abstract class BaseCrudImplementation<T = any> {\r\n // Access the Router without a constructor\r\n protected router = inject(Router);\r\n protected route = inject(ActivatedRoute);\r\n protected translate = inject(TranslateService);\r\n protected location = inject(Location);\r\n // Common Dependency Injection\r\n protected modelService = inject(MODEL_SERVICE, { optional: true });\r\n protected modelToken = inject(MODEL_TOKEN, { optional: true });\r\n protected dialogService = inject(DIALOG_SERVICE_TOKEN, { optional: true });\r\n\r\n @Input() model: T | null = null;\r\n @Input() modelName: string | null = null;\r\n @Input() dictPath: string | null = null; //rdict\r\n @Input() fileLayout: string = ''; //rdict\r\n @Input() idProperty: string = 'id';\r\n @Input() customInclude: string = null;\r\n @Input() changeUrlRoute: boolean = true;\r\n @Input() hostClass: string = '';\r\n @Input() modelFnConfig?: () => any[];\r\n public basePath: string = '';\r\n public title: string = '';\r\n\r\n protected baseForm = new FormGroup({});\r\n protected modelId: string;\r\n protected isEdit: boolean;\r\n protected isLoading = true;\r\n protected cancelRoute: string;\r\n protected editRoute: string;\r\n\r\n ngOnInit(): void {}\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return this.hostClass;\r\n }\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n protected getFromGroup(formGroup: FormGroup | string = null): FormGroup {\r\n if (!formGroup) return this.baseForm;\r\n if (formGroup instanceof FormGroup) return formGroup;\r\n return this.baseForm.controls[formGroup] as FormGroup;\r\n }\r\n validateAllFormFields(formGroup: FormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup);\r\n Object.keys(fg.controls).forEach((field) => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm(this.translate.instant('General.DiscardChanges'), null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach((prop) => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach((prop) => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\nimport type { DatastorePort } from '../services/datastore-port';\n\nexport const DATASTORE_PORT = new InjectionToken<DatastorePort>('DATASTORE_PORT');\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { BaseQueryData } from '../models/base-query-data';\nimport { BaseModel } from '../models/base.model';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort, ModelType } from './datastore-port';\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BaseService<T extends BaseModel> {\n public modelType: ModelType<T>;\n constructor(@Inject(DATASTORE_PORT) public datastore: DatastorePort) {\n }\n setModelType(modelType: ModelType<T>) {\r\n this.modelType = modelType;\r\n }\r\n\r\n get(id?: any, customInclude: string = ''): Observable<T> {\r\n const response = this.datastore.findRecord(this.modelType, id, { customInclude });\r\n return response;\r\n }\r\n\r\n getAll(page: number,\r\n pageSize: number,\r\n sort: string = '',\r\n filters: string = '',\r\n customInclude: string = ''): Observable<BaseQueryData<T>> {\r\n const response = this.datastore.findAll(this.modelType,\r\n {\r\n Page: page,\r\n PageSize: pageSize,\r\n Sorts: sort,\r\n Filters: filters,\r\n customInclude\r\n });\r\n return response;\r\n }\r\n delete(id: any): Observable<{}> {\r\n const response = this.datastore.deleteRecord(this.modelType, id);\r\n return response;\r\n }\r\n getCustom<U>(params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n return this.datastore.getCustom<U, T>(this.modelType, params, headers, customUrl, customResponseType);\r\n }\r\n postCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.postCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n patchCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.patchCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n // checkIfPropertyUnique(property: string, value: any): Observable<boolean> {\r\n\r\n // }\r\n\r\n save(docTypeOrFormGroup: T | UntypedFormGroup, id?: any, origModel?: T): Observable<T> {\n if (id == null) {\n let fromModel: T;\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\n } else {\n fromModel = docTypeOrFormGroup;\n }\n return this.datastore.saveRecord(fromModel.attributeMetadata, fromModel);\n } else {\n return this.patch(docTypeOrFormGroup, origModel, id);\n }\n }\n\n patch(docTypeOrFormGroup: T | UntypedFormGroup, origModel?: T, id?: any): Observable<T> {\n let fromModel: T;\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\n } else {\n fromModel = docTypeOrFormGroup;\n }\n return this.datastore.patchRecord(fromModel.attributeMetadata, fromModel, origModel);\n }\n\r\n newModel(data?: any): T {\n return new this.modelType(data);\n }\n\r\n toFormGroup(fb: UntypedFormBuilder, fromModel?: T): UntypedFormGroup {\r\n if (fromModel === undefined) {\r\n fromModel = this.newModel();\r\n }\r\n return fromModel.getFromGroup(fb);\r\n }\r\n\r\n fromFormGroup(formGroup: UntypedFormGroup, id?: any): T {\n // const saveModel = this.newModel(formGroup.getRawValue());\n // saveModel.id = id ? id : null;\n // return saveModel;\n const saveModel = this.newModel();\n saveModel.getModelFromFormGroup(formGroup)\n saveModel.id = id ? id : null;\n return saveModel;\n }\n serializeModel(model: T): any {\n return this.datastore.modelToEntity(model, model.attributeMetadata, true);\n }\n getSelectValues(property: string): Observable<any[]> {\r\n return null;\r\n }\r\n}\n","import { Location } from '@angular/common';\r\nimport { Component, Inject, InjectionToken, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nconst DialogSERVICE = new InjectionToken<string>('DialogService');\r\n@Component({\r\n selector: 'app-base.form.edit',\r\n template: '',\r\n standalone: false\r\n})\r\nexport abstract class BaseFormEditComponent<T extends BaseModel> implements OnInit {\r\n baseForm: UntypedFormGroup;\r\n modelId: string;\r\n model: T;\r\n isEdit: boolean;\r\n isLoading = true;\r\n cancelRoute: string;\r\n editRoute: string;\r\n public changeUrlRoute: boolean = true;\r\n constructor(\r\n protected fb: UntypedFormBuilder,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected modelService: BaseService<T>,\r\n @Inject(DialogSERVICE) protected dialogService: DialogService,\r\n protected translate: TranslateService,\r\n protected location: Location\r\n ) {\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initForm();\r\n }\r\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\r\n if (model === null) {\r\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\r\n this.isEdit = false;\r\n if (this.modelId) {\r\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\r\n this.isEdit = true;\r\n this.generateForm(value)\r\n }\r\n );\r\n } else {\r\n if (this.changeUrlRoute) {\r\n const addUrl = this.router.createUrlTree([]).toString();\r\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\r\n }\r\n // }\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n } else {\r\n this.modelId = model.id;\r\n this.isEdit = true;\r\n this.generateForm(model)\r\n }\r\n }\r\n generateForm(model?: T) {\r\n this.isLoading = false;\r\n this.modelId = model.id;\r\n this.model = model;\r\n this.baseForm = this.modelService.toFormGroup(this.fb, model);\r\n this.afterFormGenerated();\r\n }\r\n public afterFormGenerated() {\r\n\r\n }\r\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\r\n if (!formGroup)\r\n return this.baseForm;\r\n if (formGroup instanceof UntypedFormGroup)\r\n return formGroup;\r\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\r\n }\r\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const filedControl = fg.get(field)\r\n return !filedControl.valid && filedControl.touched;\r\n }\r\n\r\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return !fieldControl.valid && fieldControl.touched;\r\n }\r\n\r\n displayFieldCss(field: string) {\r\n return {\r\n 'has-error': this.isFieldValid(field),\r\n 'has-feedback': this.isFieldValid(field)\r\n };\r\n }\r\n onCancel() {\r\n this.router.navigate([this.cancelRoute]);\r\n }\r\n onSave() {\r\n this.saveModel(this.baseForm)\r\n }\r\n saveModel(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const that = this;\r\n if (fg) {\r\n if (fg.valid) {\r\n this.beforeSave(this.model).subscribe(_ => {\r\n this.modelService.save(this.baseForm, this.modelId, this.model).subscribe(\r\n (newModel: T) => {\r\n this.model = newModel;\r\n this.modelId = newModel.id;\r\n if (this.editRoute) {\r\n this.isEdit = true;\r\n if (this.changeUrlRoute) {\r\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\r\n this.location.replaceState(url);\r\n }\r\n }\r\n this.afterSave(newModel).subscribe((val: T) => {\r\n this.dialogService.showSaveMessage('Your changes were saved successfully.').subscribe(d => {\r\n fg.markAsPristine();\r\n });\r\n });\r\n },\r\n err => {\r\n this.serverErrors(err)\r\n });\r\n });\r\n } else {\r\n this.validateAllFormFields(formGroup);\r\n }\r\n }\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm('Discard changes ?', null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n getCustomErrorMessage(error: any, fieldLabel: string): string {\r\n return '';\r\n }\r\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\r\n }\r\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\r\n const fg = this.getFromGroup(formGroup)\r\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\r\n }\r\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\r\n const error = fieldControl.errors;\r\n const fieldLabel = this.translate.instant(filedTranslationKey);\r\n let rvalue = '';\r\n if (error !== null) {\r\n if (error['required'] === true) {\r\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\r\n }\r\n if (error['minlength']) {\r\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\r\n }\r\n if (error['email'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidEmail');\r\n }\r\n if (error['url'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidUrl');\r\n }\r\n if (error['serverError']) {\r\n rvalue = error['serverError'];\r\n }\r\n if (rvalue === '') {\r\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\r\n }\r\n }\r\n return rvalue;\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, OnInit, inject } from '@angular/core';\nimport { Router, UrlSegment } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DIALOG_SERVICE_TOKEN } from '../interfaces/dialog.interface';\nimport { Rule } from '../models/rule';\nimport { MODEL_SERVICE, MODEL_TOKEN } from '../tokens/dynamic-form-tokens';\n\n@Directive()\nexport abstract class BaseTableImplementation<T = any, TEditArgs = any, TRemoveArgs = any> implements OnInit {\n // Access the Router without a constructor\n protected router = inject(Router);\n protected translate = inject(TranslateService);\n // Common Dependency Injection\n protected dataService = inject(MODEL_SERVICE, { optional: true });\n protected modelToken = inject(MODEL_TOKEN, { optional: true });\n protected dialogService = inject(DIALOG_SERVICE_TOKEN, { optional: true });\n public basePath: string = '';\n public title: string = '';\n // --- Configuration Inputs (Your previous snapshot keys) ---\n @Input() model: T | null = null;\n @Input() dictPath: string | null = null; //rdict\n @Input() fileLayout: string = ''; //rdict\n @Input() idProperty: string = 'id';\n\n // Visibility & UI\n @Input() showHeader: boolean = true;\n @Input() showSearch: boolean = false;\n @Input() searchFields: string[] | null = null;\n\n // Data & Pagination\n @Input() pageable: boolean = false;\n @Input() pageSizes: number[] = [10, 20, 30, 50, 100];\n @Input() defaultSort: string | null = null;\n @Input() defaultSortDirection: 'asc' | 'desc' | null = null;\n @Input() defaultFilter: any = null;\n @Input() customInclude: string = null;\n // Actions & Rules\n @Input() hasAdd: boolean = true;\n @Input() canDelete: boolean = true;\n @Input() canEdit: boolean = true;\n @Input() deletePropertyName: string = 'name';\n @Input() deleteDisableRule: Rule[];\n\n // Edit Behavior\n @Input() editOnClick: boolean = false;\n @Input() editOnDblClick: boolean = false;\n @Input() editColumn: string | null = null;\n @Input() useView: boolean = false; //rdict\n\n @Input() hostClass: string = '';\n ngOnInit(): void {\n const urlTree = this.router.url.split('?')[0];\n const currentUrlSegments: UrlSegment[] = urlTree\n .split('/')\n .filter((segment) => segment !== '')\n .map((segment) => new UrlSegment(segment, {}));\n\n this.basePath = currentUrlSegments.map((segment) => segment.path).join('/');\n }\n @HostBinding('class')\n get hostClasses(): string {\n return this.hostClass;\n }\n // Mandatory method for every implementation (Kendo, Rdict, etc.)\n abstract loadData(): void;\n\n protected addHandler(): void {\n this.router.navigate([`${this.basePath}/add`]);\n }\n abstract editHandler(args: TEditArgs): void;\n protected edit(dataItem: any, column?: any): void {\n // 1. Resolve the dynamic ID value from the object\n const idValue = dataItem[this.idProperty];\n\n if (idValue) {\n // 2. Navigate using the resolved value\n this.router.navigate([`${this.basePath}/edit/${idValue}`]);\n } else {\n console.warn(`Property \"${this.idProperty}\" not found on data item:`, dataItem);\n }\n }\n /**\n * Abstract contract for removing items.\n * TRemoveArgs allows Kendo to use RemoveEvent, while others might use a simple ID.\n */\n abstract removeHandler(args: TRemoveArgs): void;\n\n /**\n * Shared delete logic that can be called by any implementation\n */\n protected delete(dataItem: any): void {\n const idValue = Reflect.get(dataItem, this.idProperty);\n\n const modelName = Reflect.get(dataItem, this.deletePropertyName);\n const message = this.translate.instant('Are you sure you want to delete this {{modelName}}?', { modelName });\n if (this.dialogService) {\n // Use the generic confirm method\n this.dialogService.confirmDelete().subscribe((confirmed) => {\n if (confirmed) this.performDelete(idValue);\n });\n } else if (confirm(message)) {\n // Fallback to browser confirm if no service is provided\n this.performDelete(idValue);\n }\n }\n abstract performDelete(id: any): void;\n abstract getCellValue(item: any, column: any): any;\n}\n","export class Configurations {\r\n public baseUrl: string;\r\n public authUrl: string;\r\n public apiVersion: string;\r\n\r\n constructor() {\r\n this.baseUrl = '';\r\n this.authUrl = '';\r\n this.apiVersion = 'api/v1';\r\n }\r\n\r\n}","export enum GridLayoutFormat {\r\n none,\r\n date,\r\n number,\r\n percent,\r\n picture\r\n}\r\n\r\nexport enum CellTextAlign {\r\n left = 'left',\r\n center = 'center',\r\n right = 'right',\r\n}","// tslint:disable-next-line:variable-name\nexport const AttributeMetadata: any = Symbol('AttributeMetadata');\n","import { parseISO } from 'date-fns';\r\nimport { PropertyConverter } from '../../interfaces/property-converter.interface';\r\n\r\nexport class DateConverter implements PropertyConverter {\r\n mask(value: any) {\r\n if (value instanceof Date && !isNaN(value.getTime())) {\r\n return value;\r\n }\r\n const d = parseISO(value);\r\n if (d instanceof Date && !isNaN(d.getTime())) {\r\n return d\r\n } else {\r\n return value;\r\n }\r\n }\r\n unmask(value: any) {\r\n // const result = format(value, 'YYYY-MM-DDTHH:mm:ssZ');\r\n return value;\r\n }\r\n}\r\n","export class MetadataStorage {\r\n private static metadataMap = new WeakMap<object, Record<string, any>>();\r\n \r\n static getMetadata(key: string, target: object, propertyKey?: string): any {\r\n const metadata = this.metadataMap.get(target) || {};\r\n return propertyKey ? metadata[`${key}:${propertyKey}`] : metadata[key];\r\n }\r\n \r\n static setMetadata(key: string, value: any, target: object, propertyKey?: string): void {\r\n let metadata = this.metadataMap.get(target);\r\n if (!metadata) {\r\n metadata = {};\r\n this.metadataMap.set(target, metadata);\r\n }\r\n if (propertyKey) {\r\n metadata[`${key}:${propertyKey}`] = value;\r\n } else {\r\n metadata[key] = value;\r\n }\r\n }\r\n }","import { AttributeMetadata } from '../constants/symbols';\r\nimport { DateConverter } from '../converters/date/date.converter';\r\nimport { AttributeDecoratorOptions } from '../interfaces/attribute-decorator-options.interface';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function Attribute(options: AttributeDecoratorOptions = {}): PropertyDecorator {\r\n return (target: any, propertyName: string) => {\r\n\r\n const converter = (dataType: any, value: any, forSerialisation = false): any => {\r\n let attrConverter;\r\n if (dataType) {\r\n if (options.converter) {\r\n attrConverter = options.converter;\r\n } else if (dataType === Date) {\r\n attrConverter = new DateConverter();\r\n } else {\r\n const datatype = new dataType();\r\n\r\n if (datatype.mask && datatype.unmask) {\r\n attrConverter = datatype;\r\n }\r\n }\r\n\r\n if (attrConverter) {\r\n if (!forSerialisation) {\r\n return attrConverter.mask(value);\r\n }\r\n return attrConverter.unmask(value);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n const saveAnnotations = () => {\r\n const metadata = MetadataStorage.getMetadata('Attribute', target) || {};\r\n\r\n metadata[propertyName] = {\r\n marked: true\r\n };\r\n\r\n MetadataStorage.setMetadata('Attribute', metadata, target);\r\n\r\n const mappingMetadata = MetadataStorage.getMetadata('AttributeMapping', target) || {};\r\n const serializedPropertyName = options.serializedName !== undefined ? options.serializedName : propertyName;\r\n mappingMetadata[serializedPropertyName] = propertyName;\r\n MetadataStorage.setMetadata('AttributeMapping', mappingMetadata, target);\r\n\r\n const requiredMetadata = MetadataStorage.getMetadata('AttributeRequired', target) || {};\r\n requiredMetadata[serializedPropertyName] = options.required !== undefined ? options.required : false;\r\n MetadataStorage.setMetadata('AttributeRequired', requiredMetadata, target);\r\n\r\n const defaultMetadata = MetadataStorage.getMetadata('AttributedefaultValue', target) || {};\r\n defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;\r\n MetadataStorage.setMetadata('AttributedefaultValue', defaultMetadata, target);\r\n\r\n const formSubGroupMetadata = MetadataStorage.getMetadata('AttributeformSubGroup', target) || {};\r\n formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;\r\n MetadataStorage.setMetadata('AttributeformSubGroup', formSubGroupMetadata, target);\r\n\r\n };\r\n\r\n const setMetadata = (\r\n hasDirtyAttributes: boolean,\r\n instance: any,\r\n oldValue: any,\r\n newValue: any,\r\n isNew: boolean\r\n ) => {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n\r\n if (!instance[AttributeMetadata]) {\r\n instance[AttributeMetadata] = {};\r\n }\r\n\r\n const propertyHasDirtyAttributes = typeof oldValue === 'undefined' && !isNew ? false : hasDirtyAttributes;\r\n\r\n instance[AttributeMetadata][propertyName] = {\r\n newValue,\r\n oldValue,\r\n serializedName: options.serializedName,\r\n hasDirtyAttributes: propertyHasDirtyAttributes,\r\n serialisationValue: converter(targetType, newValue, true)\r\n };\r\n };\r\n\r\n const getter = function () {\r\n return this['_' + (propertyName as string)];\r\n };\r\n\r\n const setter = function (newVal: any) {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n const convertedValue = converter(targetType, newVal);\r\n\r\n if (convertedValue !== this['_' + (propertyName as string)]) {\r\n setMetadata(true, this, this['_' + (propertyName as string)], newVal, !this.id);\r\n this['_' + (propertyName as string)] = convertedValue;\r\n }\r\n };\r\n\r\n if (delete target[propertyName]) {\r\n saveAnnotations();\r\n Object.defineProperty(target, propertyName, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function BaseDatastoreConfig(config: any = {}) {\r\n // tslint:disable-next-line:only-arrow-functions\r\n return (target: any) => {\r\n MetadataStorage.setMetadata('BaseDatastoreConfig', config, target);\r\n };\r\n}\r\n","export class BaseMetaModel {\r\n public links: Array<any>;\r\n public meta: any;\r\n\r\n constructor(response: any) {\r\n this.links = response.links || [];\r\n this.meta = response.meta;\r\n }\r\n}\r\n","import { BaseMetaModel } from '../models/base-meta.model';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function BaseModelConfig(config: any = {}) {\r\n return (target: any) => {\r\n if (typeof config['meta'] === 'undefined' || config['meta'] == null) {\r\n config['meta'] = BaseMetaModel;\r\n }\r\n\r\n MetadataStorage.setMetadata('BaseModelConfig', config, target);\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function CustomType(config: any = {}) {\r\n return (target: any, propertyName: string | symbol) => {\r\n const annotations = MetadataStorage.getMetadata('CustomType', target) || [];\r\n\r\n annotations.push({\r\n propertyName,\r\n relationship: config.key || propertyName\r\n });\r\n\r\n MetadataStorage.setMetadata('CustomType', annotations, target);\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheService {\r\n private cache: { [key: string]: { data: any, expiration: number } } = {};\r\n\r\n constructor() {}\r\n\r\n get(key: string): any {\r\n const cachedItem = this.cache[key];\r\n if (cachedItem && cachedItem.expiration > Date.now()) {\r\n return cachedItem.data;\r\n }\r\n this.delete(key);\r\n return null;\r\n }\r\n\r\n set(key: string, data: any, expiresInMs: number): void {\r\n const expiration = Date.now() + expiresInMs;\r\n this.cache[key] = { data, expiration };\r\n }\r\n\r\n delete(key: string): void {\r\n delete this.cache[key];\r\n }\r\n\r\n clearCacheContainingKeyword(keyword: string): void {\r\n const keysToDelete = Object.keys(this.cache).filter(key => key.includes(keyword));\r\n keysToDelete.forEach(key => this.delete(key));\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { CacheService } from '../services/cache.service';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n private cache: Map<string, { response: HttpResponse<any>, expiration: number }> = new Map();\r\n\r\n constructor(@Inject('CACHE_EXPIRATION_TIME') private expirationTime: number,\r\n private cacheService: CacheService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const bypassCache = request.params.get('bypassCache') || false;\r\n\r\n if (bypassCache || request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n if (!bypassCache) {\r\n const cachedResponse = this.cacheService.get(request.urlWithParams);\r\n if (cachedResponse) {\r\n return of(cachedResponse.clone());\r\n //return cachedResponse;\r\n }\r\n }\r\n\r\n return next.handle(request).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n this.cacheService.set(request.urlWithParams, event.clone(), this.expirationTime);\r\n }\r\n })\r\n );\r\n\r\n // const cachedItem = this.cache.get(request.url);\r\n\r\n // if (cachedItem && cachedItem.expiration > Date.now()) {\r\n // return of(cachedItem.response.clone());\r\n // }\r\n\r\n // return next.handle(request).pipe(\r\n // tap(event => {\r\n // if (event instanceof HttpResponse) {\r\n // this.cache.set(request.url, { response: event.clone(), expiration: Date.now() + this.expirationTime });\r\n // }\r\n // })\r\n // );\r\n }\r\n}","\r\nexport class BaseQueryData<T> {\r\n constructor(protected jsonApiModels: Array<T>, protected metaData?: any) { }\r\n\r\n public getModels(): T[] {\r\n return this.jsonApiModels;\r\n }\r\n\r\n public getMeta(): any {\r\n return this.metaData;\r\n }\r\n}\r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { AttributeMetadata } from '../constants/symbols';\nimport { ModelConfig } from '../interfaces/model-config.interface';\nimport type { ModelType } from '../services/datastore-port';\nimport { MetadataStorage } from './metadata-storage';\nexport class BaseModel {\n public highlighted: boolean;\n public id: any;\n [key: string]: any;\n\n // tslint:disable-next-line:variable-name\n constructor(data?: any) {\n if (data) {\n if (data.id) {\n this.id = data.id;\n }\n Object.assign(this, data);\n }\n }\n\n get attributeMetadata(): any {\n const attributesMetadata: any = this[AttributeMetadata];\n return attributesMetadata;\n }\n set attributeMetadata(val: any) {\r\n this[AttributeMetadata] = val;\r\n }\r\n get hasDirtyAttributes() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let hasDirtyAttributes = false;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n hasDirtyAttributes = true;\r\n break;\r\n }\r\n }\r\n }\r\n return hasDirtyAttributes;\r\n }\r\n\r\n rollbackAttributes(): void {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let metadata: any;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n if (attributesMetadata[propertyName].hasDirtyAttributes) {\r\n this[propertyName] = attributesMetadata[propertyName].oldValue;\r\n metadata = {\r\n hasDirtyAttributes: false,\r\n newValue: attributesMetadata[propertyName].oldValue,\r\n oldValue: undefined\r\n };\r\n attributesMetadata[propertyName] = metadata;\r\n }\r\n }\r\n }\r\n\r\n this[AttributeMetadata] = attributesMetadata;\r\n }\r\n\r\n get modelConfig(): ModelConfig {\n return MetadataStorage.getMetadata('BaseModelConfig', this.constructor);\n }\n\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\n return new modelType(data);\n }\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n public getModelPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeMapping', model);\r\n }\r\n public getModelRequiredPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeRequired', model);\r\n }\r\n public getModelDefaultPropertyValues(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributedefaultValue', model);\r\n }\r\n\r\n public getModelSubGroupPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeformSubGroup', model);\r\n }\r\n\r\n public getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const requiredProps = this.getModelRequiredPropertyNames(this);\r\n const defaultValues = this.getModelDefaultPropertyValues(this);\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const controlsConfig: any = {};\r\n const that = this;\r\n if (props) {\r\n props.forEach((property) => {\r\n const value = that[property] !== undefined ? that[property] : defaultValues[property];\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (requiredProps[property]) {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value, Validators.required));\r\n else controlsConfig[property] = [value, Validators.required];\r\n } else {\r\n if (formSubGroup) this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value));\r\n else controlsConfig[property] = value;\r\n }\r\n });\r\n }\r\n return fb.group(controlsConfig);\r\n }\r\n private getSubFromGroup(fb: UntypedFormBuilder, controlsConfig: any, subGroup: string): UntypedFormGroup {\r\n if (!controlsConfig[subGroup]) controlsConfig[subGroup] = fb.group({});\r\n return controlsConfig[subGroup];\r\n }\r\n\r\n public getModelFromFormGroup(formGroup: UntypedFormGroup, id?: any) {\r\n try {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const data: any = {};\r\n if (id) {\r\n data.id = id;\r\n }\r\n const that = this;\r\n if (props) {\r\n props.forEach((property) => {\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (!formSubGroup) data[property] = formGroup.controls[property].value ?? null;\r\n else data[property] = (formGroup.controls[formSubGroup] as UntypedFormGroup).controls[property].value ?? null;\r\n });\r\n }\r\n if (data) {\r\n if (id) {\r\n this.id = id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n } catch (error) {\r\n Object.assign(this, formGroup.value);\r\n }\r\n }\r\n\r\n getCellClass(property: string) {\n return '';\n }\n}\n","export interface JsonBaseError {\r\n id?: string;\r\n links ?: Array<any>;\r\n status ?: string;\r\n code ?: string;\r\n title ?: string;\r\n detail ?: string;\r\n source ?: {\r\n pointer ?: string;\r\n parameter ?: string\r\n };\r\n meta ?: any;\r\n}\r\n\r\nexport class ErrorResponse {\r\n errors?: JsonBaseError[] = [];\r\n\r\n constructor(errors ?: JsonBaseError[]) {\r\n if (errors) {\r\n this.errors = errors;\r\n }\r\n }\r\n}\r\n","export class Rule {\n rule: any;\n order: number;\n parameters: string[] = [];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'inputError',\r\n standalone: false\r\n})\r\nexport class InputErrorPipe implements PipeTransform {\r\n constructor(protected translate: TranslateService) {\r\n\r\n }\r\n transform(value: any, filedTranslationKey: any): string {\r\n let rvalue = '';\r\n if (value !== null) {\r\n if (value['invalid'] === true) {\r\n rvalue = 'ERROR.INVALID';\r\n }\r\n if (value['mustMatch'] === true) {\r\n rvalue = 'Account.Password.MustMach';\r\n }\r\n if (value['required'] === true) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.Required', { field });\r\n }\r\n if (value['minlength']) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.MinLength', { field, requiredLength: value.minlength.requiredLength });\r\n }\r\n }\r\n return rvalue;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nl2br',\r\n standalone: false\r\n})\r\nexport class Nl2brPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n // return value.replace(/\\n/g, '<br />');\r\n if (value) {\r\n value = value.replace(/(?:\\r\\n\\r\\n|\\r\\r|\\n\\n)/g, '</p><p>');\r\n return '<p>' + value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>') + '</p>';\r\n }\r\n return value;\r\n }\r\n}","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { compare } from 'fast-json-patch';\r\nimport queryString from 'query-string';\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { DatastoreConfig } from '../interfaces/datastore-config.interface';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseQueryData } from '../models/base-query-data';\nimport { BaseModel } from '../models/base.model';\nimport { MetadataStorage } from '../models/metadata-storage';\nimport { CacheService } from './cache.service';\nimport type { DatastorePort, ModelType } from './datastore-port';\n\r\n@Injectable()\r\nexport class BaseDatastore implements DatastorePort {\n protected config!: DatastoreConfig;\r\n // tslint:disable-next-line:variable-name\r\n private _store: { [type: string]: { [id: string]: BaseModel } } = {};\r\n // tslint:enable:max-line-length\r\n // tslint:disable-next-line:ban-types\r\n private toQueryString: Function = this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.toQueryString ?\r\n this.datastoreConfig.overrides.toQueryString : this._toQueryString;\r\n // tslint:enable:max-line-length\r\n\r\n private get getDirtyAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getDirtyAttributes) {\r\n return this.datastoreConfig.overrides.getDirtyAttributes;\r\n } else {\r\n return BaseDatastore.getDirtyAttributes;\r\n }\r\n }\r\n\r\n public get getAllAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getAllAttributes) {\r\n return this.datastoreConfig.overrides.getAllAttributes;\r\n } else {\r\n return BaseDatastore.getAllAttributes;\r\n }\r\n }\r\n\r\n // protected config: DatastoreConfig;\r\n\r\n private static getDirtyAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n private static getAllAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n protected cacheService: CacheService\r\n ) {\r\n }\r\n\r\n findAll<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<BaseQueryData<T>> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const htmlParams = this.buildParams(modelType, params);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n\r\n const response = this.httpClient.get(url,\r\n { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(\r\n map(res => this.extractQueryData(res, modelType)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n\r\n findRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id?: string,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (id) {\r\n url += '/' + id;\r\n }\r\n\r\n const htmlParams = this.buildParams(modelType, params);\r\n const response = this.httpClient.get(url, { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(map(res => this.entityToModel(res, modelType, undefined)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n getCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n if (!customResponseType)\r\n customResponseType = 'json';\r\n return this.httpClient.get<U>(url, { headers: customHeadhers, params: htmlParams, withCredentials: true, responseType: customResponseType });\r\n }\r\n\r\n postCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.post<U>(url, body, { headers: customHeadhers, params: htmlParams, reportProgress: true, withCredentials: true });\r\n }\r\n\r\n patchCustom<U, T extends BaseModel>(modelType: ModelType<T>,\n body: any,\n params?: any,\n headers?: HttpHeaders,\n customUrl?: string): Observable<U> {\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.patch<U>(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\n createRecord<T extends BaseModel>(modelType: ModelType<T>, data?: any): T {\n return new modelType(data);\n }\n\r\n saveRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata);\r\n\r\n if (model.id) {\r\n // tslint:disable-next-line:max-line-length\r\n httpCall = this.httpClient.patch(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n patchRecord<T extends BaseModel>(\n attributesMetadata: any, model: T,\n origModel?: T,\n params?: any,\n headers?: HttpHeaders,\n customUrl?: string\n ): Observable<T> {\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n let origData = { id: '' };\r\n if (origModel)\r\n origData = this.modelToEntity(origModel, origModel.attributeMetadata, true);\r\n const newData = this.modelToEntity(model, attributesMetadata, true);\r\n newData.id = origData.id;\r\n const patch = compare(origData, newData);\r\n if (patch.length > 0) {\r\n httpCall = this.httpClient.patch(url + '/' + model.id, patch, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Observable((observer: Observer<T>) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n }\r\n // getPatch<T extends BaseModel>(\r\n // model: T,\r\n // origModel: T): any {\r\n\r\n // }\r\n replaceRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata, true);\r\n\r\n if (model.id) {\r\n httpCall = this.httpClient.put(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n deleteRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id: string,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<{}> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (!url.includes('share')) {\r\n url = url + '/' + id;\r\n }\r\n // const idParam = new HttpParams().set('id', id);\r\n return this.httpClient.delete(url, { headers: customHeadhers, withCredentials: true })\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n return res;\r\n }\r\n ),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n public buildUrl<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n customUrl?: string\r\n ): string {\r\n\r\n if (customUrl) {\r\n return customUrl;\r\n }\r\n\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n\r\n const baseUrl = modelConfig.baseUrl || this.datastoreConfig.baseUrl;\r\n const apiVersion = modelConfig.apiVersion || this.datastoreConfig.apiVersion;\r\n const modelEndpointUrl: string = modelConfig.modelEndpointUrl || modelConfig.type;\r\n\r\n const url: string = [baseUrl, apiVersion, modelEndpointUrl].filter((x) => x).join('/');\r\n\r\n return url;\r\n }\r\n\r\n protected extractQueryData<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>\r\n ): BaseQueryData<T> {\r\n let result;\r\n const body: any = res;\r\n const models: T[] = [];\r\n\r\n for (const data of body.data) {\r\n const model = this.entityToModel(data, modelType, undefined);\r\n models.push(model);\r\n }\r\n\r\n result = new BaseQueryData(models, this.parseMeta(body, modelType));\r\n return result;\r\n }\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\n return new modelType(data);\n }\n\r\n protected handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n // console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n // console.error(\r\n // 'Backend returned code ${error.status}, ' +\r\n // 'body was: ${error.error}');\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(error);\r\n }\r\n\r\n protected parseMeta(body: any, modelType: ModelType<BaseModel>): any {\r\n const metaModel: any = MetadataStorage.getMetadata('BaseModelConfig', modelType).meta;\r\n return new metaModel(body);\r\n }\r\n\r\n protected resetMetadataAttributes<T extends BaseModel>(res: T, attributesMetadata: any, modelType: ModelType<T>) {\r\n // TODO check why is attributesMetadata from the arguments never used\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n metadata.hasDirtyAttributes = false;\r\n }\r\n }\r\n }\r\n\r\n if (res) {\r\n res.attributeMetadata = attributesMetadata;\r\n }\r\n return res;\r\n }\r\n\r\n public get datastoreConfig(): DatastoreConfig {\r\n const configFromDecorator: DatastoreConfig = MetadataStorage.getMetadata('BaseDatastoreConfig', this.constructor);\r\n return Object.assign(configFromDecorator, this.config);\r\n }\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\n const apiFieldMap = this.getApiFieldMap(modelType);\n if (apiFieldMap) {\n const properties: any = {};\n Object.keys(apiFieldMap).forEach((serializedName) => {\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\n properties[apiFieldMap[serializedName]] = attributes[serializedName];\n }\n });\n return properties;\n }\n\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\n const properties: any = {};\n\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\n }\n });\n\n return properties;\n }\n\n protected getModelPropertyNames(model: BaseModel) {\n return MetadataStorage.getMetadata('AttributeMapping', model);\n }\n\n protected getApiFieldMap<T extends BaseModel>(modelType: ModelType<T>): Record<string, string> | null {\n return (modelType as any).apiFieldMap || null;\n }\n\r\n public buildHeaders(customHeaders?: HttpHeaders): HttpHeaders {\r\n const headers: any = {\r\n Accept: 'application/json-patch+json',\r\n // 'Content-Type': 'application/vnd.api+json',\r\n 'Content-Type': 'application/json-patch+json'\r\n };\r\n if (customHeaders && customHeaders.keys().length) {\r\n // tslint:disable-next-line:variable-name\r\n Object.assign({}, headers, customHeaders.keys().map(header_name => {\r\n headers['' + header_name] = customHeaders.get(header_name);\r\n }));\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n public buildParams<T extends BaseModel>(modelType: ModelType<T>,\r\n params: any): HttpParams {\r\n let httpParams = new HttpParams();\r\n if (params) {\r\n Object.keys(params)\r\n .filter(key => {\r\n const v = params[key];\r\n return (Array.isArray(v) || typeof v === 'string') ?\r\n (v.length > 0) :\r\n (v !== null && v !== undefined);\r\n })\r\n .forEach(key => {\r\n httpParams = httpParams.set(key, params[key]);\r\n });\r\n }\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n httpParams = httpParams.set('bypassCache', modelConfig.bypassCache || false);\r\n return httpParams;\r\n }\r\n\r\n\r\n protected entityToModel<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ) {\r\n return this.extractRecordDataJson(res, modelType, model);\r\n }\r\n\r\n\r\n private extractRecordDataJson<T extends BaseModel>(\r\n res: Response,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ): T {\r\n const body: any = res;\r\n if (!body) {\r\n throw new Error('no body in response');\r\n }\r\n if (model) {\r\n Object.assign(model, body);\r\n }\r\n const deserializedModel = model || this.deserializeModel(modelType, body.data || body);\r\n return deserializedModel;\r\n }\r\n\r\n public modelToEntity<T extends BaseModel>(\r\n model: T,\r\n attributesMetadata: any,\r\n allAttributes: boolean = false\r\n ): any {\r\n let attributes;\r\n if (allAttributes) {\r\n attributes = this.getAllAttributes(attributesMetadata, model);\r\n } else {\r\n attributes = this.getDirtyAttributes(attributesMetadata, model);\r\n }\r\n // this.getRelationships(model, attributes);\r\n return attributes;\r\n }\r\n private _toQueryString(params: any): string {\r\n return queryString.stringify(params, { arrayFormat: 'bracket' });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Configurations } from '../configurations';\r\nimport { BaseDatastoreConfig, DatastoreConfig } from '../core';\r\nimport { BaseDatastore } from './base-datastore.service';\r\nimport { CacheService } from './cache.service';\r\n\r\n\r\n@Injectable()\r\n@BaseDatastoreConfig({ apiVersion: '', baseUrl: '' })\r\nexport class DatastoreCore extends BaseDatastore {\r\n private customConfig: DatastoreConfig\r\n constructor(http: HttpClient, cacheService: CacheService, private configExt: Configurations) {\r\n super(http, cacheService);\r\n this.customConfig = {\r\n apiVersion: this.configExt.apiVersion,\r\n baseUrl: this.configExt.baseUrl\r\n };\r\n this.config = this.customConfig;\r\n }\r\n}\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'employee'\r\n})\r\nexport class Employee extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n id: string;\r\n\r\n @Attribute({ serializedName: 'userName', required: true })\r\n userName: string;\r\n\r\n @Attribute({ serializedName: 'firstName', required: true })\r\n firstName: string;\r\n\r\n @Attribute({ serializedName: 'lastName', required: true })\r\n lastName: string;\r\n\r\n @Attribute({ serializedName: 'email', required: true })\r\n email: string;\r\n\r\n @Attribute({ serializedName: 'role', required: true })\r\n role: any;\r\n\r\n // Used for creating an employee ... need to see if I add here\r\n @Attribute({ serializedName: 'password' })\r\n password: string;\r\n\r\n @Attribute({ serializedName: 'confirmPassword' })\r\n confirmPassword: string;\r\n\r\n @Attribute({ serializedName: 'extraData' })\r\n extraData: string;\r\n\r\n}\r\n\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'user',\r\n modelEndpointUrl: 'user/menus'\r\n})\r\nexport class Menu extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'header' })\r\n header?: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n @Attribute({ serializedName: 'link' })\r\n link?: string;\r\n\r\n @Attribute({ serializedName: 'title' })\r\n title?: string;\r\n\r\n @Attribute({ serializedName: 'sublinks' })\r\n sublinks?: Menu[];\r\n\r\n @Attribute({ serializedName: 'target' })\r\n target?: string;\r\n\r\n @Attribute({ serializedName: 'external' })\r\n external?: boolean;\r\n\r\n @Attribute({ serializedName: 'description' })\r\n description?: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order?: number;\r\n\r\n @Attribute({ serializedName: 'translationKey' })\r\n translationKey!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color?: string;\r\n}\r\n\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'right',\r\n modelEndpointUrl: 'right'\r\n})\r\nexport class Right extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name!: string;\r\n\r\n @Attribute({ serializedName: 'rightKey' })\r\n rightKey!: string;\r\n\r\n @Attribute({ serializedName: 'pagePath' })\r\n pagePath!: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order!: number;\r\n\r\n @Attribute({ serializedName: 'isMenu' })\r\n isMenu!: boolean;\r\n\r\n @Attribute({ serializedName: 'resourceName' })\r\n resourceName!: string;\r\n\r\n @Attribute({ serializedName: 'parentId' })\r\n parentId!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color!: string;\r\n\r\n @Attribute({ serializedName: 'defaultRoles' })\r\n defaultRoles!: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n}\r\n","import { Attribute, BaseModelConfig } from '../core';\r\nimport { BaseModel } from './base.model';\r\n\r\n@BaseModelConfig({\r\n type: 'role'\r\n})\r\nexport class Role extends BaseModel {\r\n @Attribute({ serializedName: 'id' })\r\n id: string;\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name: string;\r\n\r\n @Attribute({ serializedName: 'roleDetail' })\r\n roleDetail: any;\r\n}\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n@BaseModelConfig({\r\n type: 'user'\r\n})\r\nexport class User extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'id' })\r\n override id!: string;\r\n\r\n @Attribute({ serializedName: 'firstName' })\r\n firstName!: string;\r\n\r\n @Attribute({ serializedName: 'lastName' })\r\n lastName!: string;\r\n\r\n @Attribute({ serializedName: 'email' })\r\n email!: string;\r\n\r\n get fullName(): string {\r\n return this.firstName + ' ' + this.lastName;\r\n }\r\n}\r\n\r\n","import { Inject, Injectable } from '@angular/core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Employee } from '../models';\nimport { BaseService } from './base.service';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmployeeService extends BaseService<Employee> {\r\n\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Employee);\n }\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalFileService {\r\n private cache: Map<string, ReplaySubject<any>> = new Map();\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getJsonData(jsonUrl: string): Observable<any> {\r\n if (this.cache.has(jsonUrl)) {\r\n return this.cache.get(jsonUrl)!.asObservable(); // Return cached data if available\r\n }\r\n\r\n const dataSubject = new ReplaySubject<any>(1); // Store the latest value\r\n this.cache.set(jsonUrl, dataSubject);\r\n\r\n this.http\r\n .get<any>(jsonUrl)\r\n .pipe(\r\n tap((data) => dataSubject.next(data)) // Cache the fetched data\r\n )\r\n .subscribe({\r\n next: (data) => console.log('Data loaded for', jsonUrl),\r\n error: (err) => console.error('Error loading JSON:', err)\r\n });\r\n\r\n return dataSubject.asObservable(); // Return observable\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Right } from '../core';\nimport { Role } from '../models/role';\nimport { BaseService } from './base.service';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleService extends BaseService<Role> {\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Role);\n }\n public getRoleRights(roleId: string): Observable<Right[]> {\r\n const url = `${this.datastore.buildUrl(Role)}/${roleId}/rights`;\r\n return this.getCustom<Right[]>(null, null, url);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteHistoryService {\n private previousUrl: string | null = null;\n private currentUrl: string | null = null;\n\n constructor(private router: Router) {\n // initialize currentUrl if router has already resolved one\n this.currentUrl = this.router.url;\n\n // listen to NavigationEnd events\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n // on each successful navigation, shift current→previous, then update current\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.urlAfterRedirects;\n });\n }\n\n public getPreviousUrl(): string | null {\n return this.previousUrl;\n }\n\n public getCurrentUrl(): string | null {\n return this.currentUrl;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Configurations } from '../configurations';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslateloaderService implements TranslateLoader {\r\n private _apiUrl = '';\r\n private headers: any = new HttpHeaders({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n constructor(private httpClient: HttpClient,\r\n config: Configurations) {\r\n console.log(config)\r\n if (config) {\r\n this._apiUrl = config.baseUrl;\r\n }\r\n }\r\n getTranslation(lang: string): Observable<any> {\r\n const url = this._apiUrl + '/api/v1/language/' + lang + '/translationlist';\r\n return this.httpClient.get(url, { headers: this.headers });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { BaseQueryData, BaseService, Menu, Right, User } from '../core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService extends BaseService<User> {\r\n userRights!: Right[];\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(User);\n }\n getRights(): Observable<BaseQueryData<Right>> {\r\n const url = `${this.datastore.buildUrl(User)}/rights`;\r\n const response = this.datastore.findAll(Right, null, null, url);\r\n return response;\r\n }\r\n hasRightForLink(link: string): boolean {\r\n if (this.userRights && link) {\r\n const right = this.userRights.find((f) => link.indexOf(f.pagePath) >= 0);\r\n return true;\r\n }\r\n return false;\r\n }\r\n getMenus(): Observable<BaseQueryData<Menu>> {\r\n const response = this.datastore.findAll(Menu);\r\n return response;\r\n }\r\n}\r\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport { BaseDatastore } from './services/base-datastore.service';\nimport { DatastoreCore } from './services/datastore.service';\nimport { DATASTORE_PORT } from './tokens/datastore-token';\nexport * from './services';\nexport const PROVIDERS: any[] = [\n BaseDatastore,\n DatastoreCore,\n { provide: DATASTORE_PORT, useExisting: DatastoreCore },\n DatePipe,\n DecimalPipe,\n PercentPipe\n];\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel } from '../core';\r\n\r\nexport function DynamicallyModelResolver<T extends BaseModel>(modelsImport: any, className: string | undefined = undefined): ResolveFn<T> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (className == undefined)\r\n className = route.paramMap.get('className');\r\n const instance = getInstance<T>(className, modelsImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${className}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<T>(className: string, modelsImport: any): Promise<T> {\r\n return modelsImport.then((module) => module[toProperCase(className)]);\r\n // return modelsImport.then((module) => ({ modelInstance: module[toProperCase(className)] })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel, BaseService } from '../core';\r\n\r\nexport function DynamicallyServiceResolver<T extends BaseModel, U extends BaseService<T>>(serviceImport: any, serviceName: string): ResolveFn<U> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const instance = getInstance<U>(serviceName, serviceImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${serviceName}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<U>(serviceName: string, serviceImport: any): Promise<U> {\r\n return serviceImport.then((module) => module[toProperCase(serviceName)]); // return Promise.all([serviceImport]).then(\r\n // (module) => ({\r\n // serviceInstance: module[toProperCase(serviceName)],\r\n // })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { Configurations } from './configurations';\r\nimport { PROVIDERS } from './providers';\r\nimport { TranslateloaderService } from './services/translate-loader.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useClass: TranslateloaderService,\r\n deps: [HttpClient]\r\n },\r\n // missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler },\r\n useDefaultLang: false,\r\n }),\r\n ReactiveFormsModule\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ],\r\n exports: [\r\n HttpClientModule,\r\n TranslateModule,\r\n ]\r\n})\r\nexport class RslBaseModule {\r\n public static forRoot(config: Configurations): ModuleWithProviders<RslBaseModule> {\r\n return {\r\n ngModule: RslBaseModule,\r\n providers: [\r\n PROVIDERS,\r\n { provide: Configurations, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class CustomValidators {\n static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n // if control is empty return no error\n return null;\n }\n\n // test the value of the control against the regexp supplied\n const valid = regex.test(control.value);\n\n // if true, return no error (no error), else return error passed in the second parameter\n return valid ? null : error;\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Right } from '../core';\nimport { BaseService } from './base.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RightService extends BaseService<Right> {\n\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Right);\n }\n\n}\n","export function readFileAsync(file: File): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n resolve(event.target.result);\r\n };\r\n\r\n reader.onerror = (event: any) => {\r\n reject(event.target.error);\r\n };\r\n\r\n reader.readAsArrayBuffer(file);\r\n });\r\n}\r\n\r\nexport function getValueFromJsonData(jsonData: any, key: string): any {\r\n // Convert the key and all JSON keys to lowercase\r\n const lowercaseKey = key.toLowerCase();\r\n const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());\r\n\r\n // Find the lowercase key in the lowercase keys array\r\n const index = lowercaseKeys.indexOf(lowercaseKey);\r\n\r\n // If found, use the original (proper case) key to access the value\r\n if (index !== -1) {\r\n const originalKey = Object.keys(jsonData)[index];\r\n return jsonData[originalKey];\r\n }\r\n\r\n // Key not found\r\n return undefined;\r\n}","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["User","i4","i1.CacheService","i1","i2.CacheService","i3.Configurations","i2.Configurations","getInstance","toProperCase"],"mappings":"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"}
1
+ {"version":3,"file":"rosoftlab-core.mjs","sources":["../../../../projects/rosoftlab/core/src/lib/auth/tokens.ts","../../../../projects/rosoftlab/core/src/lib/auth/auth.service.ts","../../../../projects/rosoftlab/core/src/lib/auth/user-manager.factory.ts","../../../../projects/rosoftlab/core/src/lib/auth/provide-auth.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.html","../../../../projects/rosoftlab/core/src/lib/interfaces/dialog.interface.ts","../../../../projects/rosoftlab/core/src/lib/tokens/dynamic-form-tokens.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-crud-implementation.ts","../../../../projects/rosoftlab/core/src/lib/tokens/datastore-token.ts","../../../../projects/rosoftlab/core/src/lib/services/base.service.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-form-edit.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-table-implementation.ts","../../../../projects/rosoftlab/core/src/lib/configurations.ts","../../../../projects/rosoftlab/core/src/lib/grid-layout-format.enum.ts","../../../../projects/rosoftlab/core/src/lib/constants/symbols.ts","../../../../projects/rosoftlab/core/src/lib/converters/date/date.converter.ts","../../../../projects/rosoftlab/core/src/lib/models/metadata-storage.ts","../../../../projects/rosoftlab/core/src/lib/decorators/attribute.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-datastore-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/models/base-meta.model.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-model-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/custom.type.decorator.ts","../../../../projects/rosoftlab/core/src/lib/services/cache.service.ts","../../../../projects/rosoftlab/core/src/lib/interceptors/cache.interceptor.ts","../../../../projects/rosoftlab/core/src/lib/models/base-query-data.ts","../../../../projects/rosoftlab/core/src/lib/models/base.model.ts","../../../../projects/rosoftlab/core/src/lib/models/error-response.model.ts","../../../../projects/rosoftlab/core/src/lib/models/rule.ts","../../../../projects/rosoftlab/core/src/lib/pipes/input-error.pipe.ts","../../../../projects/rosoftlab/core/src/lib/pipes/Nl2brPipe.pipe.ts","../../../../projects/rosoftlab/core/src/lib/services/base-datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/models/employee.ts","../../../../projects/rosoftlab/core/src/lib/models/menu.ts","../../../../projects/rosoftlab/core/src/lib/models/right.ts","../../../../projects/rosoftlab/core/src/lib/models/role.ts","../../../../projects/rosoftlab/core/src/lib/models/user.ts","../../../../projects/rosoftlab/core/src/lib/services/employee.service.ts","../../../../projects/rosoftlab/core/src/lib/services/local-file.service.ts","../../../../projects/rosoftlab/core/src/lib/services/role.service.ts","../../../../projects/rosoftlab/core/src/lib/services/route-history.service.ts","../../../../projects/rosoftlab/core/src/lib/services/translate-loader.service.ts","../../../../projects/rosoftlab/core/src/lib/services/user.service.ts","../../../../projects/rosoftlab/core/src/lib/providers.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-class-resolver.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-service-resolver.ts","../../../../projects/rosoftlab/core/src/lib/rsl-base-module.ts","../../../../projects/rosoftlab/core/src/lib/validators/pattern-validator.ts","../../../../projects/rosoftlab/core/src/lib/services/right.service.ts","../../../../projects/rosoftlab/core/src/lib/utils.ts","../../../../projects/rosoftlab/core/src/public-api.ts","../../../../projects/rosoftlab/core/src/rosoftlab-core.ts"],"sourcesContent":["export class Tokens {\n}\n// library/src/lib/auth/tokens.ts\nimport { InjectionToken } from '@angular/core';\nimport type { UserManagerSettings } from 'oidc-client-ts';\n\nexport const OIDC_CLIENT_SETTINGS = new InjectionToken<UserManagerSettings>('OIDC_CLIENT_SETTINGS');\nexport const OIDC_GUEST_CLIENT_SETTINGS = new InjectionToken<UserManagerSettings>('OIDC_GUEST_CLIENT_SETTINGS');\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport type { UserManagerSettings } from 'oidc-client-ts';\r\nimport { User, UserManager } from 'oidc-client-ts';\r\nimport { BehaviorSubject, Observable, firstValueFrom } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\r\nimport { OIDC_GUEST_CLIENT_SETTINGS } from './tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthService {\r\n // Observable navItem source\r\n private _authNavStatusSource = new BehaviorSubject<boolean>(false);\r\n // Observable navItem stream\r\n authNavStatus$ = this._authNavStatusSource.asObservable();\r\n\r\n // private manager = new UserManager(getClientSettings());\r\n private user: User | null | undefined;\r\n\r\n constructor(\r\n private manager: UserManager,\r\n private http: HttpClient,\r\n @Optional() @Inject(OIDC_GUEST_CLIENT_SETTINGS) private guestSettings?: UserManagerSettings\r\n ) {\r\n this.manager.getUser().then((user) => {\r\n this.user = user;\r\n this._authNavStatusSource.next(this.isAuthenticated());\r\n });\r\n }\r\n login() {\r\n this.manager.clearStaleState().then(() => {\r\n this.manager.signinRedirect();\r\n });\r\n }\r\n logout() {\r\n this.manager.clearStaleState().then(() => {\r\n this.manager.signoutRedirect();\r\n });\r\n }\r\n async completeAuthentication() {\r\n // console.log(\"completeAuthentication\")\r\n await this.manager.signinRedirectCallback().then((user) => {\r\n this.user = user;\r\n this._authNavStatusSource.next(this.isAuthenticated());\r\n });\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.user != null && !this.user.expired;\r\n }\r\n\r\n get authorizationHeaderValue(): string {\r\n return this.user != null ? `${this.user.token_type} ${this.user.access_token}` : '';\r\n }\r\n get getToken(): string {\r\n return this.user != null ? `${this.user.access_token}` : '';\r\n }\r\n get getId(): string | null {\r\n return this.user != null ? this.user.profile.sub : null;\r\n }\r\n get name(): string {\r\n return this.user != null ? this.user.profile?.['first_name'] + ' ' + this.user.profile?.['last_name'] : '';\r\n }\r\n get email(): string | null | undefined {\r\n return this.user != null ? this.user.profile?.email : '';\r\n }\r\n get firstName(): string {\r\n return this.user != null ? (this.user.profile as { [key: string]: any })['first_name'] : '';\r\n }\r\n set firstName(newValue: string) {\r\n this.user!.profile!['first_name'] = newValue;\r\n }\r\n get lastName(): string {\r\n return this.user != null ? (this.user.profile as { [key: string]: any })['last_name'] : '';\r\n }\r\n set lastName(newValue: string) {\r\n this.user!.profile!['last_name'] = newValue;\r\n }\r\n get userCode(): string {\r\n return this.user != null ? (this.user.profile?.['user_code'] as string) : '';\r\n }\r\n get roles(): string {\r\n return this.user != null ? (this.user.profile?.['roles'] as string) : '';\r\n }\r\n\r\n get organisationId(): string {\r\n return this.user != null ? (this.user.profile?.['organization_id'] as string) : '';\r\n }\r\n get organisationName(): string {\r\n return this.user != null ? (this.user.profile?.['organization_name'] as string) : '';\r\n }\r\n async signout() {\r\n await this.manager.signoutRedirect();\r\n }\r\n\r\n async loginWithGuest(): Promise<void> {\n const token = localStorage.getItem('guest_token');\n if (!token) {\n throw new Error('No guest token found in local storage');\n }\n const authUrlToUse = this.guestSettings?.authority || this.manager.settings.authority;\n const body = new URLSearchParams();\n body.set('grant_type', 'guest');\n body.set('guest_token', token);\n body.set('client_id', this.guestSettings?.client_id || this.manager.settings.client_id);\n body.set('scope', this.guestSettings?.scope || 'openid profile offline_access');\n\n await firstValueFrom(\n this.http.post(`${authUrlToUse}/connect/token`, body.toString(), {\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n }).pipe(\n map((response: any) => {\n if (!response.access_token) {\n throw new Error('Login failed');\n }\n const expires_at = response.expires_in ? Math.floor(Date.now() / 1000) + response.expires_in : 0;\n const user = new User({\n id_token: response.id_token || '',\n session_state: null,\n access_token: response.access_token,\n refresh_token: response.refresh_token || '',\n token_type: response.token_type || 'Bearer',\n scope: response.scope || '',\n profile: {\n sub: 'guest', // Dummy sub for guest\n iss: authUrlToUse,\n aud: this.manager.settings.client_id,\n exp: expires_at,\n iat: Math.floor(Date.now() / 1000)\n } as any, // Cast to any to avoid strict typing\n expires_at: expires_at,\n userState: null\n });\n this.manager.storeUser(user);\n this.user = user;\n this._authNavStatusSource.next(this.isAuthenticated());\n })\n )\n );\n }\n}\n","// library/src/lib/auth/user-manager.factory.ts\nimport { inject } from '@angular/core';\nimport { UserManager } from 'oidc-client-ts';\nimport { OIDC_CLIENT_SETTINGS } from './tokens';\n\nexport function provideOidcUserManager() {\n return {\n provide: UserManager,\n useFactory: () => new UserManager(inject(OIDC_CLIENT_SETTINGS)),\n };\n}\n","// library/src/lib/auth/provide-auth.ts\nimport { Provider } from '@angular/core';\nimport type { UserManagerSettings } from 'oidc-client-ts';\nimport { OIDC_CLIENT_SETTINGS, OIDC_GUEST_CLIENT_SETTINGS } from './tokens';\nimport { provideOidcUserManager } from './user-manager.factory';\n\nexport function provideAuth(settings: UserManagerSettings, guest_settings?: UserManagerSettings): Provider[] {\n return [\n { provide: OIDC_CLIENT_SETTINGS, useValue: settings },\n { provide: OIDC_GUEST_CLIENT_SETTINGS, useValue: guest_settings },\n provideOidcUserManager()\n ];\n}\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-field-error-display',\r\n templateUrl: './field-error-display.component.html',\r\n styleUrls: ['./field-error-display.component.scss'],\r\n standalone: false\r\n})\r\nexport class FieldErrorDisplayComponent {\r\n\r\n @Input() errorMsg: string;\r\n @Input() displayError: boolean;\r\n\r\n}\r\n","<div *ngIf=\"displayError\" >\r\n <!-- <span class=\"glyphicon glyphicon-remove form-control-feedback fix-error-icon\"></span> -->\r\n <span class=\"sr-only\">(error)</span>\r\n <div class=\"error-msg\">\r\n {{ errorMsg }}\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.scss'],\r\n standalone: false\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'rsl-under-construction',\r\n templateUrl: './under-construction.component.html',\r\n styleUrls: ['./under-construction.component.scss'],\r\n standalone: false\r\n})\r\nexport class UnderConstructionComponent {\r\n\r\n constructor() { }\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>","// projects/rosoftlab/core/src/lib/interfaces/dialog.interface.ts\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface IDialogService {\n confirmDelete(): Observable<boolean>;\n confirm(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean>;\n showError(content?: string, title?: string, confirmButtonText?: string, cancelButtonText?: string): Observable<boolean>;\n showSaveMessage(message?: string): void;\n // Add other common methods like 'open' or 'alert' if needed\n}\n\nexport const DIALOG_SERVICE_TOKEN = new InjectionToken<IDialogService>('DIALOG_SERVICE_TOKEN');\n","import { InjectionToken, Type } from '@angular/core';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nexport const MODEL_SERVICE = new InjectionToken<BaseService<BaseModel>>('MODEL_SERVICE');\r\nexport const MODEL_TOKEN = new InjectionToken<Type<BaseModel>>('MODEL_TOKEN');\r\n\r\nexport const RSL_FORM_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('RSL_FORM_IMPLEMENTATIONS_TOKEN');\r\n// // This token will store a map of string keys to Component Classes\r\n// export const TABLE_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('TABLE_IMPLEMENTATIONS_TOKEN');\r\n// export const CRUD_IMPLEMENTATIONS_TOKEN = new InjectionToken<Record<string, Type<any>>>('CRUD_IMPLEMENTATIONS_TOKEN');\r\n","import { Location } from '@angular/common';\r\nimport { Directive, HostBinding, inject, Input } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DIALOG_SERVICE_TOKEN } from '../interfaces/dialog.interface';\r\nimport { MODEL_SERVICE, MODEL_TOKEN } from '../tokens/dynamic-form-tokens';\r\n\r\n@Directive()\r\nexport abstract class BaseCrudImplementation<T = any> {\r\n // Access the Router without a constructor\r\n protected router = inject(Router);\r\n protected route = inject(ActivatedRoute);\r\n protected translate = inject(TranslateService);\r\n protected location = inject(Location);\r\n // Common Dependency Injection\r\n protected modelService = inject(MODEL_SERVICE, { optional: true });\r\n protected modelToken = inject(MODEL_TOKEN, { optional: true });\r\n protected dialogService = inject(DIALOG_SERVICE_TOKEN, { optional: true });\r\n\r\n @Input() model: T | null = null;\r\n @Input() modelName: string | null = null;\r\n @Input() dictPath: string | null = null; //rdict\r\n @Input() fileLayout: string = ''; //rdict\r\n @Input() idProperty: string = 'id';\r\n @Input() customInclude: string = null;\r\n @Input() changeUrlRoute: boolean = true;\r\n @Input() hostClass: string = '';\r\n @Input() modelFnConfig?: () => any[];\r\n public basePath: string = '';\r\n public title: string = '';\r\n\r\n protected baseForm = new FormGroup({});\r\n protected modelId: string;\r\n protected isEdit: boolean;\r\n protected isLoading = true;\r\n protected cancelRoute: string;\r\n protected editRoute: string;\r\n\r\n ngOnInit(): void {}\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return this.hostClass;\r\n }\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n protected getFromGroup(formGroup: FormGroup | string = null): FormGroup {\r\n if (!formGroup) return this.baseForm;\r\n if (formGroup instanceof FormGroup) return formGroup;\r\n return this.baseForm.controls[formGroup] as FormGroup;\r\n }\r\n validateAllFormFields(formGroup: FormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup);\r\n Object.keys(fg.controls).forEach((field) => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm(this.translate.instant('General.DiscardChanges'), null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach((prop) => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach((prop) => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\nimport type { DatastorePort } from '../services/datastore-port';\n\nexport const DATASTORE_PORT = new InjectionToken<DatastorePort>('DATASTORE_PORT');\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { BaseQueryData } from '../models/base-query-data';\nimport { BaseModel } from '../models/base.model';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort, ModelType } from './datastore-port';\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BaseService<T extends BaseModel> {\n public modelType: ModelType<T>;\n constructor(@Inject(DATASTORE_PORT) public datastore: DatastorePort) {\n }\n setModelType(modelType: ModelType<T>) {\r\n this.modelType = modelType;\r\n }\r\n\r\n get(id?: any, customInclude: string = ''): Observable<T> {\r\n const response = this.datastore.findRecord(this.modelType, id, { customInclude });\r\n return response;\r\n }\r\n\r\n getAll(page: number,\r\n pageSize: number,\r\n sort: string = '',\r\n filters: string = '',\r\n customInclude: string = ''): Observable<BaseQueryData<T>> {\r\n const response = this.datastore.findAll(this.modelType,\r\n {\r\n Page: page,\r\n PageSize: pageSize,\r\n Sorts: sort,\r\n Filters: filters,\r\n customInclude\r\n });\r\n return response;\r\n }\r\n delete(id: any): Observable<{}> {\r\n const response = this.datastore.deleteRecord(this.modelType, id);\r\n return response;\r\n }\r\n getCustom<U>(params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n return this.datastore.getCustom<U, T>(this.modelType, params, headers, customUrl, customResponseType);\r\n }\r\n postCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.postCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n patchCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.patchCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n // checkIfPropertyUnique(property: string, value: any): Observable<boolean> {\r\n\r\n // }\r\n\r\n save(docTypeOrFormGroup: T | UntypedFormGroup, id?: any, origModel?: T): Observable<T> {\n if (id == null) {\n let fromModel: T;\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\n } else {\n fromModel = docTypeOrFormGroup;\n }\n return this.datastore.saveRecord(fromModel.attributeMetadata, fromModel);\n } else {\n return this.patch(docTypeOrFormGroup, origModel, id);\n }\n }\n\n patch(docTypeOrFormGroup: T | UntypedFormGroup, origModel?: T, id?: any): Observable<T> {\n let fromModel: T;\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\n } else {\n fromModel = docTypeOrFormGroup;\n }\n return this.datastore.patchRecord(fromModel.attributeMetadata, fromModel, origModel);\n }\n\r\n newModel(data?: any): T {\n return new this.modelType(data);\n }\n\r\n toFormGroup(fb: UntypedFormBuilder, fromModel?: T): UntypedFormGroup {\r\n if (fromModel === undefined) {\r\n fromModel = this.newModel();\r\n }\r\n return fromModel.getFromGroup(fb);\r\n }\r\n\r\n fromFormGroup(formGroup: UntypedFormGroup, id?: any): T {\n // const saveModel = this.newModel(formGroup.getRawValue());\n // saveModel.id = id ? id : null;\n // return saveModel;\n const saveModel = this.newModel();\n saveModel.getModelFromFormGroup(formGroup)\n saveModel.id = id ? id : null;\n return saveModel;\n }\n serializeModel(model: T): any {\n return this.datastore.modelToEntity(model, model.attributeMetadata, true);\n }\n getSelectValues(property: string): Observable<any[]> {\r\n return null;\r\n }\r\n}\n","import { Location } from '@angular/common';\r\nimport { Component, Inject, InjectionToken, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nconst DialogSERVICE = new InjectionToken<string>('DialogService');\r\n@Component({\r\n selector: 'app-base.form.edit',\r\n template: '',\r\n standalone: false\r\n})\r\nexport abstract class BaseFormEditComponent<T extends BaseModel> implements OnInit {\r\n baseForm: UntypedFormGroup;\r\n modelId: string;\r\n model: T;\r\n isEdit: boolean;\r\n isLoading = true;\r\n cancelRoute: string;\r\n editRoute: string;\r\n public changeUrlRoute: boolean = true;\r\n constructor(\r\n protected fb: UntypedFormBuilder,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected modelService: BaseService<T>,\r\n @Inject(DialogSERVICE) protected dialogService: DialogService,\r\n protected translate: TranslateService,\r\n protected location: Location\r\n ) {\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initForm();\r\n }\r\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\r\n if (model === null) {\r\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\r\n this.isEdit = false;\r\n if (this.modelId) {\r\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\r\n this.isEdit = true;\r\n this.generateForm(value)\r\n }\r\n );\r\n } else {\r\n if (this.changeUrlRoute) {\r\n const addUrl = this.router.createUrlTree([]).toString();\r\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\r\n }\r\n // }\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n } else {\r\n this.modelId = model.id;\r\n this.isEdit = true;\r\n this.generateForm(model)\r\n }\r\n }\r\n generateForm(model?: T) {\r\n this.isLoading = false;\r\n this.modelId = model.id;\r\n this.model = model;\r\n this.baseForm = this.modelService.toFormGroup(this.fb, model);\r\n this.afterFormGenerated();\r\n }\r\n public afterFormGenerated() {\r\n\r\n }\r\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\r\n if (!formGroup)\r\n return this.baseForm;\r\n if (formGroup instanceof UntypedFormGroup)\r\n return formGroup;\r\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\r\n }\r\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const filedControl = fg.get(field)\r\n return !filedControl.valid && filedControl.touched;\r\n }\r\n\r\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return !fieldControl.valid && fieldControl.touched;\r\n }\r\n\r\n displayFieldCss(field: string) {\r\n return {\r\n 'has-error': this.isFieldValid(field),\r\n 'has-feedback': this.isFieldValid(field)\r\n };\r\n }\r\n onCancel() {\r\n this.router.navigate([this.cancelRoute]);\r\n }\r\n onSave() {\r\n this.saveModel(this.baseForm)\r\n }\r\n saveModel(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const that = this;\r\n if (fg) {\r\n if (fg.valid) {\r\n this.beforeSave(this.model).subscribe(_ => {\r\n this.modelService.save(this.baseForm, this.modelId, this.model).subscribe(\r\n (newModel: T) => {\r\n this.model = newModel;\r\n this.modelId = newModel.id;\r\n if (this.editRoute) {\r\n this.isEdit = true;\r\n if (this.changeUrlRoute) {\r\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\r\n this.location.replaceState(url);\r\n }\r\n }\r\n this.afterSave(newModel).subscribe((val: T) => {\r\n this.dialogService.showSaveMessage('Your changes were saved successfully.').subscribe(d => {\r\n fg.markAsPristine();\r\n });\r\n });\r\n },\r\n err => {\r\n this.serverErrors(err)\r\n });\r\n });\r\n } else {\r\n this.validateAllFormFields(formGroup);\r\n }\r\n }\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm('Discard changes ?', null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n getCustomErrorMessage(error: any, fieldLabel: string): string {\r\n return '';\r\n }\r\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\r\n }\r\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\r\n const fg = this.getFromGroup(formGroup)\r\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\r\n }\r\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\r\n const error = fieldControl.errors;\r\n const fieldLabel = this.translate.instant(filedTranslationKey);\r\n let rvalue = '';\r\n if (error !== null) {\r\n if (error['required'] === true) {\r\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\r\n }\r\n if (error['minlength']) {\r\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\r\n }\r\n if (error['email'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidEmail');\r\n }\r\n if (error['url'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidUrl');\r\n }\r\n if (error['serverError']) {\r\n rvalue = error['serverError'];\r\n }\r\n if (rvalue === '') {\r\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\r\n }\r\n }\r\n return rvalue;\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, OnInit, inject } from '@angular/core';\nimport { Router, UrlSegment } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DIALOG_SERVICE_TOKEN } from '../interfaces/dialog.interface';\nimport { Rule } from '../models/rule';\nimport { MODEL_SERVICE, MODEL_TOKEN } from '../tokens/dynamic-form-tokens';\n\n@Directive()\nexport abstract class BaseTableImplementation<T = any, TEditArgs = any, TRemoveArgs = any> implements OnInit {\n // Access the Router without a constructor\n protected router = inject(Router);\n protected translate = inject(TranslateService);\n // Common Dependency Injection\n protected dataService = inject(MODEL_SERVICE, { optional: true });\n protected modelToken = inject(MODEL_TOKEN, { optional: true });\n protected dialogService = inject(DIALOG_SERVICE_TOKEN, { optional: true });\n public basePath: string = '';\n public title: string = '';\n // --- Configuration Inputs (Your previous snapshot keys) ---\n @Input() model: T | null = null;\n @Input() dictPath: string | null = null; //rdict\n @Input() fileLayout: string = ''; //rdict\n @Input() idProperty: string = 'id';\n\n // Visibility & UI\n @Input() showHeader: boolean = true;\n @Input() showSearch: boolean = false;\n @Input() searchFields: string[] | null = null;\n\n // Data & Pagination\n @Input() pageable: boolean = false;\n @Input() pageSizes: number[] = [10, 20, 30, 50, 100];\n @Input() defaultSort: string | null = null;\n @Input() defaultSortDirection: 'asc' | 'desc' | null = null;\n @Input() defaultFilter: any = null;\n @Input() customInclude: string = null;\n // Actions & Rules\n @Input() hasAdd: boolean = true;\n @Input() canDelete: boolean = true;\n @Input() canEdit: boolean = true;\n @Input() deletePropertyName: string = 'name';\n @Input() deleteDisableRule: Rule[];\n\n // Edit Behavior\n @Input() editOnClick: boolean = false;\n @Input() editOnDblClick: boolean = false;\n @Input() editColumn: string | null = null;\n @Input() useView: boolean = false; //rdict\n\n @Input() hostClass: string = '';\n ngOnInit(): void {\n const urlTree = this.router.url.split('?')[0];\n const currentUrlSegments: UrlSegment[] = urlTree\n .split('/')\n .filter((segment) => segment !== '')\n .map((segment) => new UrlSegment(segment, {}));\n\n this.basePath = currentUrlSegments.map((segment) => segment.path).join('/');\n }\n @HostBinding('class')\n get hostClasses(): string {\n return this.hostClass;\n }\n // Mandatory method for every implementation (Kendo, Rdict, etc.)\n abstract loadData(): void;\n\n protected addHandler(): void {\n this.router.navigate([`${this.basePath}/add`]);\n }\n abstract editHandler(args: TEditArgs): void;\n protected edit(dataItem: any, column?: any): void {\n // 1. Resolve the dynamic ID value from the object\n const idValue = dataItem[this.idProperty];\n\n if (idValue) {\n // 2. Navigate using the resolved value\n this.router.navigate([`${this.basePath}/edit/${idValue}`]);\n } else {\n console.warn(`Property \"${this.idProperty}\" not found on data item:`, dataItem);\n }\n }\n /**\n * Abstract contract for removing items.\n * TRemoveArgs allows Kendo to use RemoveEvent, while others might use a simple ID.\n */\n abstract removeHandler(args: TRemoveArgs): void;\n\n /**\n * Shared delete logic that can be called by any implementation\n */\n protected delete(dataItem: any): void {\n const idValue = Reflect.get(dataItem, this.idProperty);\n\n const modelName = Reflect.get(dataItem, this.deletePropertyName);\n const message = this.translate.instant('Are you sure you want to delete this {{modelName}}?', { modelName });\n if (this.dialogService) {\n // Use the generic confirm method\n this.dialogService.confirmDelete().subscribe((confirmed) => {\n if (confirmed) this.performDelete(idValue);\n });\n } else if (confirm(message)) {\n // Fallback to browser confirm if no service is provided\n this.performDelete(idValue);\n }\n }\n abstract performDelete(id: any): void;\n abstract getCellValue(item: any, column: any): any;\n}\n","export class Configurations {\r\n public baseUrl: string;\r\n public authUrl: string;\r\n public apiVersion: string;\r\n\r\n constructor() {\r\n this.baseUrl = '';\r\n this.authUrl = '';\r\n this.apiVersion = 'api/v1';\r\n }\r\n\r\n}","export enum GridLayoutFormat {\r\n none,\r\n date,\r\n number,\r\n percent,\r\n picture\r\n}\r\n\r\nexport enum CellTextAlign {\r\n left = 'left',\r\n center = 'center',\r\n right = 'right',\r\n}","// tslint:disable-next-line:variable-name\nexport const AttributeMetadata: any = Symbol('AttributeMetadata');\n","import { parseISO } from 'date-fns';\r\nimport { PropertyConverter } from '../../interfaces/property-converter.interface';\r\n\r\nexport class DateConverter implements PropertyConverter {\r\n mask(value: any) {\r\n if (value instanceof Date && !isNaN(value.getTime())) {\r\n return value;\r\n }\r\n const d = parseISO(value);\r\n if (d instanceof Date && !isNaN(d.getTime())) {\r\n return d\r\n } else {\r\n return value;\r\n }\r\n }\r\n unmask(value: any) {\r\n // const result = format(value, 'YYYY-MM-DDTHH:mm:ssZ');\r\n return value;\r\n }\r\n}\r\n","export class MetadataStorage {\n private static metadataMap = new WeakMap<object, Record<string, any>>();\n \n static getMetadata(key: string, target: object, propertyKey?: string): any {\n const metadata = this.metadataMap.get(target) || {};\n return propertyKey ? metadata[`${key}:${propertyKey}`] : metadata[key];\n }\n\n static getMergedMetadata(key: string, target: object): any {\n const chain: object[] = [];\n let current: object | null = target;\n while (current && current !== Object.prototype) {\n chain.push(current);\n current = Object.getPrototypeOf(current);\n }\n\n const merged: any = {};\n for (let i = chain.length - 1; i >= 0; i--) {\n const metadata = this.getMetadata(key, chain[i]);\n if (metadata && typeof metadata === 'object') {\n Object.assign(merged, metadata);\n }\n }\n\n return Object.keys(merged).length ? merged : undefined;\n }\n \n static setMetadata(key: string, value: any, target: object, propertyKey?: string): void {\n let metadata = this.metadataMap.get(target);\n if (!metadata) {\n metadata = {};\n this.metadataMap.set(target, metadata);\r\n }\r\n if (propertyKey) {\r\n metadata[`${key}:${propertyKey}`] = value;\r\n } else {\r\n metadata[key] = value;\r\n }\r\n }\r\n }\n","import { AttributeMetadata } from '../constants/symbols';\r\nimport { DateConverter } from '../converters/date/date.converter';\r\nimport { AttributeDecoratorOptions } from '../interfaces/attribute-decorator-options.interface';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function Attribute(options: AttributeDecoratorOptions = {}): PropertyDecorator {\r\n return (target: any, propertyName: string) => {\r\n\r\n const converter = (dataType: any, value: any, forSerialisation = false): any => {\r\n let attrConverter;\r\n if (dataType) {\r\n if (options.converter) {\r\n attrConverter = options.converter;\r\n } else if (dataType === Date) {\r\n attrConverter = new DateConverter();\r\n } else {\r\n const datatype = new dataType();\r\n\r\n if (datatype.mask && datatype.unmask) {\r\n attrConverter = datatype;\r\n }\r\n }\r\n\r\n if (attrConverter) {\r\n if (!forSerialisation) {\r\n return attrConverter.mask(value);\r\n }\r\n return attrConverter.unmask(value);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n const saveAnnotations = () => {\r\n const metadata = MetadataStorage.getMetadata('Attribute', target) || {};\r\n\r\n metadata[propertyName] = {\r\n marked: true\r\n };\r\n\r\n MetadataStorage.setMetadata('Attribute', metadata, target);\r\n\r\n const mappingMetadata = MetadataStorage.getMetadata('AttributeMapping', target) || {};\r\n const serializedPropertyName = options.serializedName !== undefined ? options.serializedName : propertyName;\r\n mappingMetadata[serializedPropertyName] = propertyName;\r\n MetadataStorage.setMetadata('AttributeMapping', mappingMetadata, target);\r\n\r\n const requiredMetadata = MetadataStorage.getMetadata('AttributeRequired', target) || {};\r\n requiredMetadata[serializedPropertyName] = options.required !== undefined ? options.required : false;\r\n MetadataStorage.setMetadata('AttributeRequired', requiredMetadata, target);\r\n\r\n const defaultMetadata = MetadataStorage.getMetadata('AttributedefaultValue', target) || {};\r\n defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;\r\n MetadataStorage.setMetadata('AttributedefaultValue', defaultMetadata, target);\r\n\r\n const formSubGroupMetadata = MetadataStorage.getMetadata('AttributeformSubGroup', target) || {};\r\n formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;\r\n MetadataStorage.setMetadata('AttributeformSubGroup', formSubGroupMetadata, target);\r\n\r\n };\r\n\r\n const setMetadata = (\r\n hasDirtyAttributes: boolean,\r\n instance: any,\r\n oldValue: any,\r\n newValue: any,\r\n isNew: boolean\r\n ) => {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n\r\n if (!instance[AttributeMetadata]) {\r\n instance[AttributeMetadata] = {};\r\n }\r\n\r\n const propertyHasDirtyAttributes = typeof oldValue === 'undefined' && !isNew ? false : hasDirtyAttributes;\r\n\r\n instance[AttributeMetadata][propertyName] = {\r\n newValue,\r\n oldValue,\r\n serializedName: options.serializedName,\r\n hasDirtyAttributes: propertyHasDirtyAttributes,\r\n serialisationValue: converter(targetType, newValue, true)\r\n };\r\n };\r\n\r\n const getter = function () {\r\n return this['_' + (propertyName as string)];\r\n };\r\n\r\n const setter = function (newVal: any) {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n const convertedValue = converter(targetType, newVal);\r\n\r\n if (convertedValue !== this['_' + (propertyName as string)]) {\r\n setMetadata(true, this, this['_' + (propertyName as string)], newVal, !this.id);\r\n this['_' + (propertyName as string)] = convertedValue;\r\n }\r\n };\r\n\r\n if (delete target[propertyName]) {\r\n saveAnnotations();\r\n Object.defineProperty(target, propertyName, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function BaseDatastoreConfig(config: any = {}) {\r\n // tslint:disable-next-line:only-arrow-functions\r\n return (target: any) => {\r\n MetadataStorage.setMetadata('BaseDatastoreConfig', config, target);\r\n };\r\n}\r\n","export class BaseMetaModel {\r\n public links: Array<any>;\r\n public meta: any;\r\n\r\n constructor(response: any) {\r\n this.links = response.links || [];\r\n this.meta = response.meta;\r\n }\r\n}\r\n","import { BaseMetaModel } from '../models/base-meta.model';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function BaseModelConfig(config: any = {}) {\r\n return (target: any) => {\r\n if (typeof config['meta'] === 'undefined' || config['meta'] == null) {\r\n config['meta'] = BaseMetaModel;\r\n }\r\n\r\n MetadataStorage.setMetadata('BaseModelConfig', config, target);\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function CustomType(config: any = {}) {\r\n return (target: any, propertyName: string | symbol) => {\r\n const annotations = MetadataStorage.getMetadata('CustomType', target) || [];\r\n\r\n annotations.push({\r\n propertyName,\r\n relationship: config.key || propertyName\r\n });\r\n\r\n MetadataStorage.setMetadata('CustomType', annotations, target);\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheService {\r\n private cache: { [key: string]: { data: any, expiration: number } } = {};\r\n\r\n constructor() {}\r\n\r\n get(key: string): any {\r\n const cachedItem = this.cache[key];\r\n if (cachedItem && cachedItem.expiration > Date.now()) {\r\n return cachedItem.data;\r\n }\r\n this.delete(key);\r\n return null;\r\n }\r\n\r\n set(key: string, data: any, expiresInMs: number): void {\r\n const expiration = Date.now() + expiresInMs;\r\n this.cache[key] = { data, expiration };\r\n }\r\n\r\n delete(key: string): void {\r\n delete this.cache[key];\r\n }\r\n\r\n clearCacheContainingKeyword(keyword: string): void {\r\n const keysToDelete = Object.keys(this.cache).filter(key => key.includes(keyword));\r\n keysToDelete.forEach(key => this.delete(key));\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { CacheService } from '../services/cache.service';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n private cache: Map<string, { response: HttpResponse<any>, expiration: number }> = new Map();\r\n\r\n constructor(@Inject('CACHE_EXPIRATION_TIME') private expirationTime: number,\r\n private cacheService: CacheService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const bypassCache = request.params.get('bypassCache') || false;\r\n\r\n if (bypassCache || request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n if (!bypassCache) {\r\n const cachedResponse = this.cacheService.get(request.urlWithParams);\r\n if (cachedResponse) {\r\n return of(cachedResponse.clone());\r\n //return cachedResponse;\r\n }\r\n }\r\n\r\n return next.handle(request).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n this.cacheService.set(request.urlWithParams, event.clone(), this.expirationTime);\r\n }\r\n })\r\n );\r\n\r\n // const cachedItem = this.cache.get(request.url);\r\n\r\n // if (cachedItem && cachedItem.expiration > Date.now()) {\r\n // return of(cachedItem.response.clone());\r\n // }\r\n\r\n // return next.handle(request).pipe(\r\n // tap(event => {\r\n // if (event instanceof HttpResponse) {\r\n // this.cache.set(request.url, { response: event.clone(), expiration: Date.now() + this.expirationTime });\r\n // }\r\n // })\r\n // );\r\n }\r\n}","\r\nexport class BaseQueryData<T> {\r\n constructor(protected jsonApiModels: Array<T>, protected metaData?: any) { }\r\n\r\n public getModels(): T[] {\r\n return this.jsonApiModels;\r\n }\r\n\r\n public getMeta(): any {\r\n return this.metaData;\r\n }\r\n}\r\n","import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { AttributeMetadata } from '../constants/symbols';\r\nimport { Attribute } from '../core';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport type { ModelType } from '../services/datastore-port';\r\nimport { MetadataStorage } from './metadata-storage';\r\nexport class BaseModel<TId = string> {\n public highlighted: boolean;\n\n @Attribute({ serializedName: 'id' })\n public id: TId;\n \r\n [key: string]: any;\r\n\r\n // tslint:disable-next-line:variable-name\r\n constructor(data?: any) {\n if (data) {\n if (data.id) {\n this.id = data.id;\n }\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n get attributeMetadata(): any {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return attributesMetadata;\r\n }\r\n set attributeMetadata(val: any) {\r\n this[AttributeMetadata] = val;\r\n }\r\n get hasDirtyAttributes() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let hasDirtyAttributes = false;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n hasDirtyAttributes = true;\r\n break;\r\n }\r\n }\r\n }\r\n return hasDirtyAttributes;\r\n }\r\n\r\n rollbackAttributes(): void {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let metadata: any;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n if (attributesMetadata[propertyName].hasDirtyAttributes) {\r\n this[propertyName] = attributesMetadata[propertyName].oldValue;\r\n metadata = {\r\n hasDirtyAttributes: false,\r\n newValue: attributesMetadata[propertyName].oldValue,\r\n oldValue: undefined\r\n };\r\n attributesMetadata[propertyName] = metadata;\r\n }\r\n }\r\n }\r\n\r\n this[AttributeMetadata] = attributesMetadata;\r\n }\r\n\r\n get modelConfig(): ModelConfig {\r\n return MetadataStorage.getMetadata('BaseModelConfig', this.constructor);\r\n }\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\r\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\r\n return new modelType(data);\r\n }\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n public getModelPropertyNames(model: BaseModel<any>) {\n return MetadataStorage.getMergedMetadata('AttributeMapping', model);\n }\n public getModelRequiredPropertyNames(model: BaseModel<any>) {\n return MetadataStorage.getMergedMetadata('AttributeRequired', model);\n }\n public getModelDefaultPropertyValues(model: BaseModel<any>) {\n return MetadataStorage.getMergedMetadata('AttributedefaultValue', model);\n }\n\n public getModelSubGroupPropertyNames(model: BaseModel<any>) {\n return MetadataStorage.getMergedMetadata('AttributeformSubGroup', model);\n }\n\r\n public getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const requiredProps = this.getModelRequiredPropertyNames(this);\r\n const defaultValues = this.getModelDefaultPropertyValues(this);\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const controlsConfig: any = {};\r\n const that = this;\r\n if (props) {\r\n props.forEach((property) => {\r\n const value = that[property] !== undefined ? that[property] : defaultValues[property];\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (requiredProps[property]) {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value, Validators.required));\r\n else controlsConfig[property] = [value, Validators.required];\r\n } else {\r\n if (formSubGroup) this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value));\r\n else controlsConfig[property] = value;\r\n }\r\n });\r\n }\r\n return fb.group(controlsConfig);\r\n }\r\n private getSubFromGroup(fb: UntypedFormBuilder, controlsConfig: any, subGroup: string): UntypedFormGroup {\r\n if (!controlsConfig[subGroup]) controlsConfig[subGroup] = fb.group({});\r\n return controlsConfig[subGroup];\r\n }\r\n\r\n public getModelFromFormGroup(formGroup: UntypedFormGroup, id?: TId) {\n try {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const data: any = {};\r\n if (id) {\r\n data.id = id;\r\n }\r\n const that = this;\r\n if (props) {\r\n props.forEach((property) => {\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (!formSubGroup) data[property] = formGroup.controls[property].value ?? null;\r\n else data[property] = (formGroup.controls[formSubGroup] as UntypedFormGroup).controls[property].value ?? null;\r\n });\r\n }\r\n if (data) {\r\n if (id) {\r\n this.id = id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n } catch (error) {\r\n Object.assign(this, formGroup.value);\r\n }\r\n }\r\n\r\n getCellClass(property: string) {\r\n return '';\r\n }\r\n}\r\n","export interface JsonBaseError {\r\n id?: string;\r\n links ?: Array<any>;\r\n status ?: string;\r\n code ?: string;\r\n title ?: string;\r\n detail ?: string;\r\n source ?: {\r\n pointer ?: string;\r\n parameter ?: string\r\n };\r\n meta ?: any;\r\n}\r\n\r\nexport class ErrorResponse {\r\n errors?: JsonBaseError[] = [];\r\n\r\n constructor(errors ?: JsonBaseError[]) {\r\n if (errors) {\r\n this.errors = errors;\r\n }\r\n }\r\n}\r\n","export class Rule {\n rule: any;\n order: number;\n parameters: string[] = [];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'inputError',\r\n standalone: false\r\n})\r\nexport class InputErrorPipe implements PipeTransform {\r\n constructor(protected translate: TranslateService) {\r\n\r\n }\r\n transform(value: any, filedTranslationKey: any): string {\r\n let rvalue = '';\r\n if (value !== null) {\r\n if (value['invalid'] === true) {\r\n rvalue = 'ERROR.INVALID';\r\n }\r\n if (value['mustMatch'] === true) {\r\n rvalue = 'Account.Password.MustMach';\r\n }\r\n if (value['required'] === true) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.Required', { field });\r\n }\r\n if (value['minlength']) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.MinLength', { field, requiredLength: value.minlength.requiredLength });\r\n }\r\n }\r\n return rvalue;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nl2br',\r\n standalone: false\r\n})\r\nexport class Nl2brPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n // return value.replace(/\\n/g, '<br />');\r\n if (value) {\r\n value = value.replace(/(?:\\r\\n\\r\\n|\\r\\r|\\n\\n)/g, '</p><p>');\r\n return '<p>' + value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>') + '</p>';\r\n }\r\n return value;\r\n }\r\n}","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { compare } from 'fast-json-patch';\r\nimport queryString from 'query-string';\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { DatastoreConfig } from '../interfaces/datastore-config.interface';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseQueryData } from '../models/base-query-data';\nimport { BaseModel } from '../models/base.model';\nimport { MetadataStorage } from '../models/metadata-storage';\nimport { CacheService } from './cache.service';\nimport type { DatastorePort, ModelType } from './datastore-port';\n\r\n@Injectable()\r\nexport class BaseDatastore implements DatastorePort {\n protected config!: DatastoreConfig;\r\n // tslint:disable-next-line:variable-name\r\n private _store: { [type: string]: { [id: string]: BaseModel } } = {};\r\n // tslint:enable:max-line-length\r\n // tslint:disable-next-line:ban-types\r\n private toQueryString: Function = this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.toQueryString ?\r\n this.datastoreConfig.overrides.toQueryString : this._toQueryString;\r\n // tslint:enable:max-line-length\r\n\r\n private get getDirtyAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getDirtyAttributes) {\r\n return this.datastoreConfig.overrides.getDirtyAttributes;\r\n } else {\r\n return BaseDatastore.getDirtyAttributes;\r\n }\r\n }\r\n\r\n public get getAllAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getAllAttributes) {\r\n return this.datastoreConfig.overrides.getAllAttributes;\r\n } else {\r\n return BaseDatastore.getAllAttributes;\r\n }\r\n }\r\n\r\n // protected config: DatastoreConfig;\r\n\r\n private static getDirtyAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n private static getAllAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n protected cacheService: CacheService\r\n ) {\r\n }\r\n\r\n findAll<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<BaseQueryData<T>> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const htmlParams = this.buildParams(modelType, params);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n\r\n const response = this.httpClient.get(url,\r\n { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(\r\n map(res => this.extractQueryData(res, modelType)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n\r\n findRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id?: string,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (id) {\r\n url += '/' + id;\r\n }\r\n\r\n const htmlParams = this.buildParams(modelType, params);\r\n const response = this.httpClient.get(url, { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(map(res => this.entityToModel(res, modelType, undefined)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n getCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n if (!customResponseType)\r\n customResponseType = 'json';\r\n return this.httpClient.get<U>(url, { headers: customHeadhers, params: htmlParams, withCredentials: true, responseType: customResponseType });\r\n }\r\n\r\n postCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.post<U>(url, body, { headers: customHeadhers, params: htmlParams, reportProgress: true, withCredentials: true });\r\n }\r\n\r\n patchCustom<U, T extends BaseModel>(modelType: ModelType<T>,\n body: any,\n params?: any,\n headers?: HttpHeaders,\n customUrl?: string): Observable<U> {\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.patch<U>(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\n createRecord<T extends BaseModel>(modelType: ModelType<T>, data?: any): T {\n return new modelType(data);\n }\n\r\n saveRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata);\r\n\r\n if (model.id) {\r\n // tslint:disable-next-line:max-line-length\r\n httpCall = this.httpClient.patch(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n patchRecord<T extends BaseModel>(\n attributesMetadata: any, model: T,\n origModel?: T,\n params?: any,\n headers?: HttpHeaders,\n customUrl?: string\n ): Observable<T> {\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n let origData = { id: '' };\r\n if (origModel)\r\n origData = this.modelToEntity(origModel, origModel.attributeMetadata, true);\r\n const newData = this.modelToEntity(model, attributesMetadata, true);\r\n newData.id = origData.id;\r\n const patch = compare(origData, newData);\r\n if (patch.length > 0) {\r\n httpCall = this.httpClient.patch(url + '/' + model.id, patch, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Observable((observer: Observer<T>) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n }\r\n // getPatch<T extends BaseModel>(\r\n // model: T,\r\n // origModel: T): any {\r\n\r\n // }\r\n replaceRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata, true);\r\n\r\n if (model.id) {\r\n httpCall = this.httpClient.put(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n deleteRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id: string,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<{}> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (!url.includes('share')) {\r\n url = url + '/' + id;\r\n }\r\n // const idParam = new HttpParams().set('id', id);\r\n return this.httpClient.delete(url, { headers: customHeadhers, withCredentials: true })\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n return res;\r\n }\r\n ),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n public buildUrl<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n customUrl?: string\r\n ): string {\r\n\r\n if (customUrl) {\r\n return customUrl;\r\n }\r\n\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n\r\n const baseUrl = modelConfig.baseUrl || this.datastoreConfig.baseUrl;\r\n const apiVersion = modelConfig.apiVersion || this.datastoreConfig.apiVersion;\r\n const modelEndpointUrl: string = modelConfig.modelEndpointUrl || modelConfig.type;\r\n\r\n const url: string = [baseUrl, apiVersion, modelEndpointUrl].filter((x) => x).join('/');\r\n\r\n return url;\r\n }\r\n\r\n protected extractQueryData<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>\r\n ): BaseQueryData<T> {\r\n let result;\r\n const body: any = res;\r\n const models: T[] = [];\r\n\r\n for (const data of body.data) {\r\n const model = this.entityToModel(data, modelType, undefined);\r\n models.push(model);\r\n }\r\n\r\n result = new BaseQueryData(models, this.parseMeta(body, modelType));\r\n return result;\r\n }\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\n return new modelType(data);\n }\n\r\n protected handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n // console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n // console.error(\r\n // 'Backend returned code ${error.status}, ' +\r\n // 'body was: ${error.error}');\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(error);\r\n }\r\n\r\n protected parseMeta(body: any, modelType: ModelType<BaseModel>): any {\r\n const metaModel: any = MetadataStorage.getMetadata('BaseModelConfig', modelType).meta;\r\n return new metaModel(body);\r\n }\r\n\r\n protected resetMetadataAttributes<T extends BaseModel>(res: T, attributesMetadata: any, modelType: ModelType<T>) {\r\n // TODO check why is attributesMetadata from the arguments never used\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n metadata.hasDirtyAttributes = false;\r\n }\r\n }\r\n }\r\n\r\n if (res) {\r\n res.attributeMetadata = attributesMetadata;\r\n }\r\n return res;\r\n }\r\n\r\n public get datastoreConfig(): DatastoreConfig {\r\n const configFromDecorator: DatastoreConfig = MetadataStorage.getMetadata('BaseDatastoreConfig', this.constructor);\r\n return Object.assign(configFromDecorator, this.config);\r\n }\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\n const apiFieldMap = this.getApiFieldMap(modelType);\n if (apiFieldMap) {\n const properties: any = {};\n Object.keys(apiFieldMap).forEach((serializedName) => {\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\n properties[apiFieldMap[serializedName]] = attributes[serializedName];\n }\n });\n return properties;\n }\n\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\n const properties: any = {};\n\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\n }\n });\n\n return properties;\n }\n\n protected getModelPropertyNames(model: BaseModel) {\n return MetadataStorage.getMergedMetadata('AttributeMapping', model);\n }\n\n protected getApiFieldMap<T extends BaseModel>(modelType: ModelType<T>): Record<string, string> | null {\n return (modelType as any).apiFieldMap || null;\n }\n\r\n public buildHeaders(customHeaders?: HttpHeaders): HttpHeaders {\r\n const headers: any = {\r\n Accept: 'application/json-patch+json',\r\n // 'Content-Type': 'application/vnd.api+json',\r\n 'Content-Type': 'application/json-patch+json'\r\n };\r\n if (customHeaders && customHeaders.keys().length) {\r\n // tslint:disable-next-line:variable-name\r\n Object.assign({}, headers, customHeaders.keys().map(header_name => {\r\n headers['' + header_name] = customHeaders.get(header_name);\r\n }));\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n public buildParams<T extends BaseModel>(modelType: ModelType<T>,\r\n params: any): HttpParams {\r\n let httpParams = new HttpParams();\r\n if (params) {\r\n Object.keys(params)\r\n .filter(key => {\r\n const v = params[key];\r\n return (Array.isArray(v) || typeof v === 'string') ?\r\n (v.length > 0) :\r\n (v !== null && v !== undefined);\r\n })\r\n .forEach(key => {\r\n httpParams = httpParams.set(key, params[key]);\r\n });\r\n }\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n httpParams = httpParams.set('bypassCache', modelConfig.bypassCache || false);\r\n return httpParams;\r\n }\r\n\r\n\r\n protected entityToModel<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ) {\r\n return this.extractRecordDataJson(res, modelType, model);\r\n }\r\n\r\n\r\n private extractRecordDataJson<T extends BaseModel>(\r\n res: Response,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ): T {\r\n const body: any = res;\r\n if (!body) {\r\n throw new Error('no body in response');\r\n }\r\n if (model) {\r\n Object.assign(model, body);\r\n }\r\n const deserializedModel = model || this.deserializeModel(modelType, body.data || body);\r\n return deserializedModel;\r\n }\r\n\r\n public modelToEntity<T extends BaseModel>(\r\n model: T,\r\n attributesMetadata: any,\r\n allAttributes: boolean = false\r\n ): any {\r\n let attributes;\r\n if (allAttributes) {\r\n attributes = this.getAllAttributes(attributesMetadata, model);\r\n } else {\r\n attributes = this.getDirtyAttributes(attributesMetadata, model);\r\n }\r\n // this.getRelationships(model, attributes);\r\n return attributes;\r\n }\r\n private _toQueryString(params: any): string {\r\n return queryString.stringify(params, { arrayFormat: 'bracket' });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Configurations } from '../configurations';\r\nimport { BaseDatastoreConfig, DatastoreConfig } from '../core';\r\nimport { BaseDatastore } from './base-datastore.service';\r\nimport { CacheService } from './cache.service';\r\n\r\n\r\n@Injectable()\r\n@BaseDatastoreConfig({ apiVersion: '', baseUrl: '' })\r\nexport class DatastoreCore extends BaseDatastore {\r\n private customConfig: DatastoreConfig\r\n constructor(http: HttpClient, cacheService: CacheService, private configExt: Configurations) {\r\n super(http, cacheService);\r\n this.customConfig = {\r\n apiVersion: this.configExt.apiVersion,\r\n baseUrl: this.configExt.baseUrl\r\n };\r\n this.config = this.customConfig;\r\n }\r\n}\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'employee'\r\n})\r\nexport class Employee extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'userName', required: true })\r\n userName: string;\r\n\r\n @Attribute({ serializedName: 'firstName', required: true })\r\n firstName: string;\r\n\r\n @Attribute({ serializedName: 'lastName', required: true })\r\n lastName: string;\r\n\r\n @Attribute({ serializedName: 'email', required: true })\r\n email: string;\r\n\r\n @Attribute({ serializedName: 'role', required: true })\r\n role: any;\r\n\r\n // Used for creating an employee ... need to see if I add here\r\n @Attribute({ serializedName: 'password' })\r\n password: string;\r\n\r\n @Attribute({ serializedName: 'confirmPassword' })\r\n confirmPassword: string;\r\n\r\n @Attribute({ serializedName: 'extraData' })\r\n extraData: string;\r\n\r\n}\r\n\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'user',\r\n modelEndpointUrl: 'user/menus'\r\n})\r\nexport class Menu extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'header' })\r\n header?: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n @Attribute({ serializedName: 'link' })\r\n link?: string;\r\n\r\n @Attribute({ serializedName: 'title' })\r\n title?: string;\r\n\r\n @Attribute({ serializedName: 'sublinks' })\r\n sublinks?: Menu[];\r\n\r\n @Attribute({ serializedName: 'target' })\r\n target?: string;\r\n\r\n @Attribute({ serializedName: 'external' })\r\n external?: boolean;\r\n\r\n @Attribute({ serializedName: 'description' })\r\n description?: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order?: number;\r\n\r\n @Attribute({ serializedName: 'translationKey' })\r\n translationKey!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color?: string;\r\n}\r\n\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n\r\n@BaseModelConfig({\r\n type: 'right',\r\n modelEndpointUrl: 'right'\r\n})\r\nexport class Right extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name!: string;\r\n\r\n @Attribute({ serializedName: 'rightKey' })\r\n rightKey!: string;\r\n\r\n @Attribute({ serializedName: 'pagePath' })\r\n pagePath!: string;\r\n\r\n @Attribute({ serializedName: 'order' })\r\n order!: number;\r\n\r\n @Attribute({ serializedName: 'isMenu' })\r\n isMenu!: boolean;\r\n\r\n @Attribute({ serializedName: 'resourceName' })\r\n resourceName!: string;\r\n\r\n @Attribute({ serializedName: 'parentId' })\r\n parentId!: string;\r\n\r\n @Attribute({ serializedName: 'color' })\r\n color!: string;\r\n\r\n @Attribute({ serializedName: 'defaultRoles' })\r\n defaultRoles!: string;\r\n\r\n @Attribute({ serializedName: 'icon' })\r\n icon?: string;\r\n\r\n}\r\n","import { Attribute, BaseModelConfig } from '../core';\r\nimport { BaseModel } from './base.model';\r\n\r\n@BaseModelConfig({\r\n type: 'role'\r\n})\r\nexport class Role extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'name' })\r\n name: string;\r\n\r\n @Attribute({ serializedName: 'roleDetail' })\r\n roleDetail: any;\r\n}\r\n","import { Attribute, BaseModelConfig } from \"../core\";\r\nimport { BaseModel } from \"./base.model\";\r\n@BaseModelConfig({\r\n type: 'user'\r\n})\r\nexport class User extends BaseModel {\r\n\r\n @Attribute({ serializedName: 'firstName' })\r\n firstName!: string;\r\n\r\n @Attribute({ serializedName: 'lastName' })\r\n lastName!: string;\r\n\r\n @Attribute({ serializedName: 'email' })\r\n email!: string;\r\n\r\n get fullName(): string {\r\n return this.firstName + ' ' + this.lastName;\r\n }\r\n}\r\n\r\n","import { Inject, Injectable } from '@angular/core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Employee } from '../models';\nimport { BaseService } from './base.service';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmployeeService extends BaseService<Employee> {\r\n\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Employee);\n }\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalFileService {\r\n private cache: Map<string, ReplaySubject<any>> = new Map();\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getJsonData(jsonUrl: string): Observable<any> {\r\n if (this.cache.has(jsonUrl)) {\r\n return this.cache.get(jsonUrl)!.asObservable(); // Return cached data if available\r\n }\r\n\r\n const dataSubject = new ReplaySubject<any>(1); // Store the latest value\r\n this.cache.set(jsonUrl, dataSubject);\r\n\r\n this.http\r\n .get<any>(jsonUrl)\r\n .pipe(\r\n tap((data) => dataSubject.next(data)) // Cache the fetched data\r\n )\r\n .subscribe({\r\n next: (data) => console.log('Data loaded for', jsonUrl),\r\n error: (err) => console.error('Error loading JSON:', err)\r\n });\r\n\r\n return dataSubject.asObservable(); // Return observable\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Right } from '../core';\nimport { Role } from '../models/role';\nimport { BaseService } from './base.service';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleService extends BaseService<Role> {\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Role);\n }\n public getRoleRights(roleId: string): Observable<Right[]> {\r\n const url = `${this.datastore.buildUrl(Role)}/${roleId}/rights`;\r\n return this.getCustom<Right[]>(null, null, url);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteHistoryService {\n private previousUrl: string | null = null;\n private currentUrl: string | null = null;\n\n constructor(private router: Router) {\n // initialize currentUrl if router has already resolved one\n this.currentUrl = this.router.url;\n\n // listen to NavigationEnd events\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n // on each successful navigation, shift current→previous, then update current\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.urlAfterRedirects;\n });\n }\n\n public getPreviousUrl(): string | null {\n return this.previousUrl;\n }\n\n public getCurrentUrl(): string | null {\n return this.currentUrl;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Configurations } from '../configurations';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslateloaderService implements TranslateLoader {\r\n private _apiUrl = '';\r\n private headers: any = new HttpHeaders({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n constructor(private httpClient: HttpClient,\r\n config: Configurations) {\r\n console.log(config)\r\n if (config) {\r\n this._apiUrl = config.baseUrl;\r\n }\r\n }\r\n getTranslation(lang: string): Observable<any> {\r\n const url = this._apiUrl + '/api/v1/language/' + lang + '/translationlist';\r\n return this.httpClient.get(url, { headers: this.headers });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { BaseQueryData, BaseService, Menu, Right, User } from '../core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService extends BaseService<User> {\r\n userRights!: Right[];\r\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(User);\n }\n getRights(): Observable<BaseQueryData<Right>> {\r\n const url = `${this.datastore.buildUrl(User)}/rights`;\r\n const response = this.datastore.findAll(Right, null, null, url);\r\n return response;\r\n }\r\n hasRightForLink(link: string): boolean {\r\n if (this.userRights && link) {\r\n const right = this.userRights.find((f) => link.indexOf(f.pagePath) >= 0);\r\n return true;\r\n }\r\n return false;\r\n }\r\n getMenus(): Observable<BaseQueryData<Menu>> {\r\n const response = this.datastore.findAll(Menu);\r\n return response;\r\n }\r\n}\r\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport { BaseDatastore } from './services/base-datastore.service';\nimport { DatastoreCore } from './services/datastore.service';\nimport { DATASTORE_PORT } from './tokens/datastore-token';\nexport * from './services';\nexport const PROVIDERS: any[] = [\n BaseDatastore,\n DatastoreCore,\n { provide: DATASTORE_PORT, useExisting: DatastoreCore },\n DatePipe,\n DecimalPipe,\n PercentPipe\n];\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel } from '../core';\r\n\r\nexport function DynamicallyModelResolver<T extends BaseModel>(modelsImport: any, className: string | undefined = undefined): ResolveFn<T> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (className == undefined)\r\n className = route.paramMap.get('className');\r\n const instance = getInstance<T>(className, modelsImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${className}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<T>(className: string, modelsImport: any): Promise<T> {\r\n return modelsImport.then((module) => module[toProperCase(className)]);\r\n // return modelsImport.then((module) => ({ modelInstance: module[toProperCase(className)] })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel, BaseService } from '../core';\r\n\r\nexport function DynamicallyServiceResolver<T extends BaseModel, U extends BaseService<T>>(serviceImport: any, serviceName: string): ResolveFn<U> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const instance = getInstance<U>(serviceName, serviceImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${serviceName}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<U>(serviceName: string, serviceImport: any): Promise<U> {\r\n return serviceImport.then((module) => module[toProperCase(serviceName)]); // return Promise.all([serviceImport]).then(\r\n // (module) => ({\r\n // serviceInstance: module[toProperCase(serviceName)],\r\n // })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { Configurations } from './configurations';\r\nimport { PROVIDERS } from './providers';\r\nimport { TranslateloaderService } from './services/translate-loader.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useClass: TranslateloaderService,\r\n deps: [HttpClient]\r\n },\r\n // missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler },\r\n useDefaultLang: false,\r\n }),\r\n ReactiveFormsModule\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ],\r\n exports: [\r\n HttpClientModule,\r\n TranslateModule,\r\n ]\r\n})\r\nexport class RslBaseModule {\r\n public static forRoot(config: Configurations): ModuleWithProviders<RslBaseModule> {\r\n return {\r\n ngModule: RslBaseModule,\r\n providers: [\r\n PROVIDERS,\r\n { provide: Configurations, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class CustomValidators {\n static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n // if control is empty return no error\n return null;\n }\n\n // test the value of the control against the regexp supplied\n const valid = regex.test(control.value);\n\n // if true, return no error (no error), else return error passed in the second parameter\n return valid ? null : error;\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DATASTORE_PORT } from '../tokens/datastore-token';\nimport type { DatastorePort } from './datastore-port';\nimport { Right } from '../core';\nimport { BaseService } from './base.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RightService extends BaseService<Right> {\n\n constructor(@Inject(DATASTORE_PORT) datastore: DatastorePort) {\n super(datastore);\n this.setModelType(Right);\n }\n\n}\n","export function readFileAsync(file: File): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n resolve(event.target.result);\r\n };\r\n\r\n reader.onerror = (event: any) => {\r\n reject(event.target.error);\r\n };\r\n\r\n reader.readAsArrayBuffer(file);\r\n });\r\n}\r\n\r\nexport function getValueFromJsonData(jsonData: any, key: string): any {\r\n // Convert the key and all JSON keys to lowercase\r\n const lowercaseKey = key.toLowerCase();\r\n const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());\r\n\r\n // Find the lowercase key in the lowercase keys array\r\n const index = lowercaseKeys.indexOf(lowercaseKey);\r\n\r\n // If found, use the original (proper case) key to access the value\r\n if (index !== -1) {\r\n const originalKey = Object.keys(jsonData)[index];\r\n return jsonData[originalKey];\r\n }\r\n\r\n // Key not found\r\n return undefined;\r\n}","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["User","i4","i1.CacheService","i1","i2.CacheService","i3.Configurations","i2.Configurations","getInstance","toProperCase"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAAa,MAAM,CAAA;AAClB;MAKY,oBAAoB,GAAI,IAAI,cAAc,CAAsB,sBAAsB;MACtF,0BAA0B,GAAI,IAAI,cAAc,CAAsB,4BAA4B;;MCElG,WAAW,CAAA;AAStB,IAAA,WAAA,CACU,OAAoB,EACpB,IAAgB,EACgC,aAAmC,EAAA;QAFnF,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC4C,IAAa,CAAA,aAAA,GAAb,aAAa;;AAV/D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;AAElE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;QAUvD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AACnC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxD,SAAC,CAAC;;IAEJ,KAAK,GAAA;QACH,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC/B,SAAC,CAAC;;IAEJ,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAChC,SAAC,CAAC;;AAEJ,IAAA,MAAM,sBAAsB,GAAA;;AAE1B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxD,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;;AAGhD,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAG,EAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA,CAAE,GAAG,EAAE;;AAErF,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA,CAAE,GAAG,EAAE;;AAE7D,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI;;AAEzD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;;AAE5G,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE;;AAE1D,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAkC,CAAC,YAAY,CAAC,GAAG,EAAE;;IAE7F,IAAI,SAAS,CAAC,QAAgB,EAAA;QAC5B,IAAI,CAAC,IAAK,CAAC,OAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ;;AAE9C,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAkC,CAAC,WAAW,CAAC,GAAG,EAAE;;IAE5F,IAAI,QAAQ,CAAC,QAAgB,EAAA;QAC3B,IAAI,CAAC,IAAK,CAAC,OAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ;;AAE7C,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAY,GAAG,EAAE;;AAE9E,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAY,GAAG,EAAE;;AAG1E,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAY,GAAG,EAAE;;AAEpF,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAY,GAAG,EAAE;;AAEtF,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;;AAGtC,IAAA,MAAM,cAAc,GAAA;QAClB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;AAE1D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;AACrF,QAAA,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvF,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,+BAA+B,CAAC;AAE/E,QAAA,MAAM,cAAc,CAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAG,EAAA,YAAY,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC/D,YAAA,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC;SAC/D,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,QAAa,KAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;;YAEjC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC;AAChG,YAAA,MAAM,IAAI,GAAG,IAAIA,MAAI,CAAC;AACpB,gBAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;AACjC,gBAAA,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,QAAQ,CAAC,YAAY;AACnC,gBAAA,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE;AAC3C,gBAAA,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,QAAQ;AAC3C,gBAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;AAC3B,gBAAA,OAAO,EAAE;oBACP,GAAG,EAAE,OAAO;AACZ,oBAAA,GAAG,EAAE,YAAY;AACjB,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS;AACpC,oBAAA,GAAG,EAAE,UAAU;oBACf,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;AAC3B,iBAAA;AACR,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,SAAS,EAAE;AACZ,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;SACvD,CAAC,CACH,CACF;;AAhIQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,yEAYA,0BAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAZrC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA,CAAA;;2FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAa7B;;0BAAY,MAAM;2BAAC,0BAA0B;;;ACrBlD;SAKgB,sBAAsB,GAAA;IACpC,OAAO;AACL,QAAA,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;KAChE;AACH;;ACJgB,SAAA,WAAW,CAAC,QAA6B,EAAE,cAAoC,EAAA;IAC7F,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACrD,QAAA,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,cAAc,EAAE;AACjE,QAAA,sBAAsB;KACvB;AACH;;MCJa,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,oJCRvC,gQAOA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,CAAA,CAAA;;2FDCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,gQAAA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA;8BAIV,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,YAAY,EAAA,CAAA;sBAApB;;;MEHU,qBAAqB,CAAA;AAEhC,IAAA,WAAA,GAAA;;IAGA,QAAQ,GAAA;;8GALG,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+ECRlC,iIAIM,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA,CAAA,CAAA;;2FDIO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,iIAAA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA;;;MEER,0BAA0B,CAAA;AAErC,IAAA,WAAA,GAAA;8GAFW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,mFCRvC,0IAIM,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA,CAAA,CAAA;;2FDIO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,0IAAA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA;;;AENrB;MAYa,oBAAoB,GAAG,IAAI,cAAc,CAAiB,sBAAsB;;MCThF,aAAa,GAAG,IAAI,cAAc,CAAyB,eAAe;MAC1E,WAAW,GAAG,IAAI,cAAc,CAAkB,aAAa;MAE/D,8BAA8B,GAAG,IAAI,cAAc,CAA4B,gCAAgC;AAC5H;AACA;AACA;;MCCsB,sBAAsB,CAAA;AAD5C,IAAA,WAAA,GAAA;;AAGY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;QAE3B,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACxD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpD,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEjE,IAAK,CAAA,KAAA,GAAa,IAAI;QACtB,IAAS,CAAA,SAAA,GAAkB,IAAI;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAW,EAAE,CAAC;QACxB,IAAU,CAAA,UAAA,GAAW,IAAI;QACzB,IAAa,CAAA,aAAA,GAAW,IAAI;QAC5B,IAAc,CAAA,cAAA,GAAY,IAAI;QAC9B,IAAS,CAAA,SAAA,GAAW,EAAE;QAExB,IAAQ,CAAA,QAAA,GAAW,EAAE;QACrB,IAAK,CAAA,KAAA,GAAW,EAAE;AAEf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;QAG5B,IAAS,CAAA,SAAA,GAAG,IAAI;AAgF3B;AA5EC,IAAA,QAAQ;AACR,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS;;AAEhB,IAAA,SAAS,CAAC,KAAQ,EAAA;AACvB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;;AAGG,IAAA,UAAU,CAAC,KAAQ,EAAA;AACxB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;;IAEM,YAAY,CAAC,YAAgC,IAAI,EAAA;AACzD,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,QAAQ;QACpC,IAAI,SAAS,YAAY,SAAS;AAAE,YAAA,OAAO,SAAS;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAc;;IAEvD,qBAAqB,CAAC,YAAgC,IAAI,EAAA;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACvC,QAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;YAEzC,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;gBAClC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACpC,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAEvC,SAAC,CAAC;;IAEJ,aAAa,GAAA;;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxB,YAAA,OAAO,IAAI;;;;AAIb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;;AAEtG,IAAA,YAAY,CAAC,mBAA2B,EAAA;AACtC,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;;AAE/D,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;AACpB,gBAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM;AACzC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACnC,oBAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBAChC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC3C,IAAI,WAAW,EAAE;;4BAEf,WAAW,CAAC,SAAS,CAAC;gCACpB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;AAC9C,6BAAA,CAAC;;AAEN,qBAAC,CAAC;;qBACG;oBACL,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC1C,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC3C,IAAI,WAAW,EAAE;;4BAEf,WAAW,CAAC,SAAS,CAAC;gCACpB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;AAC9C,6BAAA,CAAC;;AAEN,qBAAC,CAAC;;;;;8GArGU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C;8BAYU,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAaG,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;;;MCtCT,cAAc,GAAG,IAAI,cAAc,CAAgB,gBAAgB;;MCUnE,WAAW,CAAA;AAEtB,IAAA,WAAA,CAA2C,SAAwB,EAAA;QAAxB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEpD,IAAA,YAAY,CAAC,SAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG5B,IAAA,GAAG,CAAC,EAAQ,EAAE,aAAA,GAAwB,EAAE,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;AACjF,QAAA,OAAO,QAAQ;;AAGjB,IAAA,MAAM,CAAC,IAAY,EACjB,QAAgB,EAChB,IAAA,GAAe,EAAE,EACjB,OAAkB,GAAA,EAAE,EACpB,aAAA,GAAwB,EAAE,EAAA;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EACpD;AACE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,OAAO,EAAE,OAAO;YAChB;AACD,SAAA,CAAC;AACJ,QAAA,OAAO,QAAQ;;AAEjB,IAAA,MAAM,CAAC,EAAO,EAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;AAChE,QAAA,OAAO,QAAQ;;AAEjB,IAAA,SAAS,CAAI,MAAY,EACvB,OAAqB,EACrB,SAAkB,EAClB,kBAAwB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAO,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,CAAC;;AAEvG,IAAA,UAAU,CACR,IAAS,EACT,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;;AAE1F,IAAA,WAAW,CACT,IAAS,EACT,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;;;;AAM3F,IAAA,IAAI,CAAC,kBAAwC,EAAE,EAAQ,EAAE,SAAa,EAAA;AACpE,QAAA,IAAI,EAAE,IAAI,IAAI,EAAE;AACd,YAAA,IAAI,SAAY;AAChB,YAAA,IAAI,kBAAkB,YAAY,gBAAgB,EAAE;gBAClD,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC;;iBACjD;gBACL,SAAS,GAAG,kBAAkB;;AAEhC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;;aACnE;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,CAAC;;;AAIxD,IAAA,KAAK,CAAC,kBAAwC,EAAE,SAAa,EAAE,EAAQ,EAAA;AACrE,QAAA,IAAI,SAAY;AAChB,QAAA,IAAI,kBAAkB,YAAY,gBAAgB,EAAE;YAClD,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC;;aACjD;YACL,SAAS,GAAG,kBAAkB;;AAEhC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC;;AAGtF,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;IAGjC,WAAW,CAAC,EAAsB,EAAE,SAAa,EAAA;AAC/C,QAAA,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;;AAE7B,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;;IAGnC,aAAa,CAAC,SAA2B,EAAE,EAAQ,EAAA;;;;AAIjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC;AAC1C,QAAA,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AAC7B,QAAA,OAAO,SAAS;;AAElB,IAAA,cAAc,CAAC,KAAQ,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC;;AAE3E,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,OAAO,IAAI;;AAxGF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAEF,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,cAAc;;;ACNpC,MAAM,aAAa,GAAG,IAAI,cAAc,CAAS,eAAe,CAAC;MAM3C,qBAAqB,CAAA;AASzC,IAAA,WAAA,CACY,EAAsB,EACtB,MAAc,EACd,KAAqB,EACrB,YAA4B,EACL,aAA4B,EACnD,SAA2B,EAC3B,QAAkB,EAAA;QANlB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAY,CAAA,YAAA,GAAZ,YAAY;QACW,IAAa,CAAA,aAAA,GAAb,aAAa;QACpC,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAXpB,IAAS,CAAA,SAAA,GAAG,IAAI;QAGT,IAAc,CAAA,cAAA,GAAY,IAAI;QAUnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;AAG1C,IAAA,SAAS,CAAC,KAAQ,EAAA;AACvB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;;AAGG,IAAA,UAAU,CAAC,KAAQ,EAAA;AACxB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;;IAEjB,QAAQ,CAAC,gBAAwB,EAAE,EAAE,aAAqB,IAAI,EAAE,QAAW,IAAI,EAAA;AAC7E,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU;AACnE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,KAAQ,KAAI;AACxE,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC1B,iBAAC,CACA;;iBACI;AACL,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;oBACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;;;gBAGxF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;;aAE5C;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;;AAG5B,IAAA,YAAY,CAAC,KAAS,EAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE;;IAEpB,kBAAkB,GAAA;;IAGjB,YAAY,CAAC,YAAuC,IAAI,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS;YACZ,OAAO,IAAI,CAAC,QAAQ;QACtB,IAAI,SAAS,YAAY,gBAAgB;AACvC,YAAA,OAAO,SAAS;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAqB;;IAE9D,qBAAqB,CAAC,YAAuC,IAAI,EAAA;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACvC,QAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;;YAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;gBACzC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACpC,iBAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;AAC9C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAEvC,SAAC,CAAC;;AAEJ,IAAA,YAAY,CAAC,KAAa,EAAE,SAAA,GAAuC,IAAI,EAAA;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACvC,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO;;AAGpD,IAAA,qBAAqB,CAAC,UAAkB,EAAE,KAAa,EAAE,YAAoB,WAAW,EAAA;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9E,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO;;AAGpD,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,OAAO;AACL,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACrC,YAAA,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;SACxC;;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAE1C,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAE/B,SAAS,CAAC,YAAuC,IAAI,EAAA;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI;QACjB,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,EAAE,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;oBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CACvE,CAAC,QAAW,KAAI;AACd,wBAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,wBAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE;AAC1B,wBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,4BAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,4BAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gCACvB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;AAChF,gCAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;;;wBAGnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAM,KAAI;AAC5C,4BAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;gCACxF,EAAE,CAAC,cAAc,EAAE;AACrB,6BAAC,CAAC;AACJ,yBAAC,CAAC;qBACH,EACD,GAAG,IAAG;AACJ,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,qBAAC,CAAC;AACN,iBAAC,CAAC;;iBACG;AACL,gBAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;;;;AAI3C,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;AACpB,gBAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM;AACzC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACnC,oBAAA,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAG;wBAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC3C,IAAI,WAAW,EAAE;;4BAEf,WAAW,CAAC,SAAS,CAAC;gCACpB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;AAC9C,6BAAA,CAAC;;AAEN,qBAAC,CAAC;;qBACG;oBACL,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC1C,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG;wBAClB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC3C,IAAI,WAAW,EAAE;;4BAEf,WAAW,CAAC,SAAS,CAAC;gCACpB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;AAC9C,6BAAA,CAAC;;AAEN,qBAAC,CAAC;;;;;IAKV,aAAa,GAAA;;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxB,YAAA,OAAO,IAAI;;;;AAIb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,EAAE,SAAS,CAAC;;AAEzE,IAAA,YAAY,CAAC,mBAA2B,EAAA;AACtC,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;;IAE/D,qBAAqB,CAAC,KAAU,EAAE,UAAkB,EAAA;AAClD,QAAA,OAAO,EAAE;;IAEX,wBAAwB,CAAC,UAAkB,EAAE,KAAa,EAAE,mBAA2B,EAAE,YAAoB,WAAW,EAAA;QACtH,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9E,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,CAAC;;AAExE,IAAA,eAAe,CAAC,KAAa,EAAE,mBAA2B,EAAE,YAAuC,IAAI,EAAA;QACrG,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;;IAEzE,uBAAuB,CAAC,YAAiB,EAAE,mBAA2B,EAAA;AACpE,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC9D,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;AAC9B,gBAAA,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;;AAElF,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;gBACtB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;;AAEnI,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC3B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,CAAC;;AAE/D,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACzB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC;;AAE7D,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;AACxB,gBAAA,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;;AAE/B,YAAA,IAAI,MAAM,KAAK,EAAE,EAAE;gBACjB,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC;;;AAG1D,QAAA,OAAO,MAAM;;AA9NK,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kIAc/B,aAAa,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAdH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+EAH7B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGM,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAeI,MAAM;2BAAC,aAAa;;;MCrBH,uBAAuB,CAAA;AAD7C,IAAA,WAAA,GAAA;;AAGY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;;QAEpC,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpD,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnE,IAAQ,CAAA,QAAA,GAAW,EAAE;QACrB,IAAK,CAAA,KAAA,GAAW,EAAE;;QAEhB,IAAK,CAAA,KAAA,GAAa,IAAI;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAW,EAAE,CAAC;QACxB,IAAU,CAAA,UAAA,GAAW,IAAI;;QAGzB,IAAU,CAAA,UAAA,GAAY,IAAI;QAC1B,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAY,CAAA,YAAA,GAAoB,IAAI;;QAGpC,IAAQ,CAAA,QAAA,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,SAAS,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;QAC3C,IAAW,CAAA,WAAA,GAAkB,IAAI;QACjC,IAAoB,CAAA,oBAAA,GAA0B,IAAI;QAClD,IAAa,CAAA,aAAA,GAAQ,IAAI;QACzB,IAAa,CAAA,aAAA,GAAW,IAAI;;QAE5B,IAAM,CAAA,MAAA,GAAY,IAAI;QACtB,IAAS,CAAA,SAAA,GAAY,IAAI;QACzB,IAAO,CAAA,OAAA,GAAY,IAAI;QACvB,IAAkB,CAAA,kBAAA,GAAW,MAAM;;QAInC,IAAW,CAAA,WAAA,GAAY,KAAK;QAC5B,IAAc,CAAA,cAAA,GAAY,KAAK;QAC/B,IAAU,CAAA,UAAA,GAAkB,IAAI;AAChC,QAAA,IAAA,CAAA,OAAO,GAAY,KAAK,CAAC;QAEzB,IAAS,CAAA,SAAA,GAAW,EAAE;AA0DhC;IAzDC,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,kBAAkB,GAAiB;aACtC,KAAK,CAAC,GAAG;aACT,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,KAAK,EAAE;AAClC,aAAA,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE7E,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS;;IAKb,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAM,IAAA,CAAA,CAAC,CAAC;;IAGtC,IAAI,CAAC,QAAa,EAAE,MAAY,EAAA;;QAExC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAEzC,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAS,MAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;;aACrD;YACL,OAAO,CAAC,IAAI,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,UAAU,CAA2B,yBAAA,CAAA,EAAE,QAAQ,CAAC;;;AASnF;;AAEG;AACO,IAAA,MAAM,CAAC,QAAa,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;AAEtD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAChE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qDAAqD,EAAE,EAAE,SAAS,EAAE,CAAC;AAC5G,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;YAEtB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACzD,gBAAA,IAAI,SAAS;AAAE,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC5C,aAAC,CAAC;;AACG,aAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;;AAE3B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;;8GA9FX,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C;8BAYU,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAWG,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;;;MC3DT,cAAc,CAAA;AAKzB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;AAG7B;;ICXW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACX,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA;;ACZD;AACO,MAAM,iBAAiB,GAAQ,MAAM,CAAC,mBAAmB,CAAC;;MCEpD,aAAa,CAAA;AACxB,IAAA,IAAI,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC;;aACH;AACL,YAAA,OAAO,KAAK;;;AAGhB,IAAA,MAAM,CAAC,KAAU,EAAA;;AAEf,QAAA,OAAO,KAAK;;AAEf;;MCnBY,eAAe,CAAA;AACT,IAAA,SAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAA+B,CAAC;AAExE,IAAA,OAAO,WAAW,CAAC,GAAW,EAAE,MAAc,EAAE,WAAoB,EAAA;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;AACnD,QAAA,OAAO,WAAW,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAA,CAAA,EAAI,WAAW,CAAE,CAAA,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;;AAGxE,IAAA,OAAO,iBAAiB,CAAC,GAAW,EAAE,MAAc,EAAA;QAClD,MAAM,KAAK,GAAa,EAAE;QAC1B,IAAI,OAAO,GAAkB,MAAM;QACnC,OAAO,OAAO,IAAI,OAAO,KAAK,MAAM,CAAC,SAAS,EAAE;AAC9C,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACnB,YAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;;QAG1C,MAAM,MAAM,GAAQ,EAAE;AACtB,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC5C,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;;;AAInC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS;;IAGxD,OAAO,WAAW,CAAC,GAAW,EAAE,KAAU,EAAE,MAAc,EAAE,WAAoB,EAAA;QAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;;QAExC,IAAI,WAAW,EAAE;YACf,QAAQ,CAAC,GAAG,GAAG,CAAA,CAAA,EAAI,WAAW,CAAE,CAAA,CAAC,GAAG,KAAK;;aACpC;AACL,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK;;;;;AC/Bb,SAAA,SAAS,CAAC,OAAA,GAAqC,EAAE,EAAA;AAC/D,IAAA,OAAO,CAAC,MAAW,EAAE,YAAoB,KAAI;QAE3C,MAAM,SAAS,GAAG,CAAC,QAAa,EAAE,KAAU,EAAE,gBAAgB,GAAG,KAAK,KAAS;AAC7E,YAAA,IAAI,aAAa;YACjB,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,oBAAA,aAAa,GAAG,OAAO,CAAC,SAAS;;AAC5B,qBAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC5B,oBAAA,aAAa,GAAG,IAAI,aAAa,EAAE;;qBAC9B;AACL,oBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;oBAE/B,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;wBACpC,aAAa,GAAG,QAAQ;;;gBAI5B,IAAI,aAAa,EAAE;oBACjB,IAAI,CAAC,gBAAgB,EAAE;AACrB,wBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAElC,oBAAA,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;;;AAGtC,YAAA,OAAO,KAAK;AACd,SAAC;QAED,MAAM,eAAe,GAAG,MAAK;AAC3B,YAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE;YAEvE,QAAQ,CAAC,YAAY,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAE;aACT;YAED,eAAe,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;AAE1D,YAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE;AACrF,YAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,KAAK,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,YAAY;AAC3G,YAAA,eAAe,CAAC,sBAAsB,CAAC,GAAG,YAAY;YACtD,eAAe,CAAC,WAAW,CAAC,kBAAkB,EAAE,eAAe,EAAE,MAAM,CAAC;AAExE,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,EAAE;AACvF,YAAA,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,KAAK;YACpG,eAAe,CAAC,WAAW,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAE1E,YAAA,MAAM,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,EAAE;AAC1F,YAAA,eAAe,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI;YAC1G,eAAe,CAAC,WAAW,CAAC,uBAAuB,EAAE,eAAe,EAAE,MAAM,CAAC;AAE7E,YAAA,MAAM,oBAAoB,GAAG,eAAe,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,EAAE;AAC/F,YAAA,oBAAoB,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI;YAC/G,eAAe,CAAC,WAAW,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC;AAEpF,SAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAClB,kBAA2B,EAC3B,QAAa,EACb,QAAa,EACb,QAAa,EACb,KAAc,KACZ;AACF,YAAA,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;AAEnF,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAChC,gBAAA,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE;;AAGlC,YAAA,MAAM,0BAA0B,GAAG,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,kBAAkB;AAEzG,YAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,GAAG;gBAC1C,QAAQ;gBACR,QAAQ;gBACR,cAAc,EAAE,OAAO,CAAC,cAAc;AACtC,gBAAA,kBAAkB,EAAE,0BAA0B;gBAC9C,kBAAkB,EAAE,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI;aACzD;AACH,SAAC;AAED,QAAA,MAAM,MAAM,GAAG,YAAA;AACb,YAAA,OAAO,IAAI,CAAC,GAAG,GAAI,YAAuB,CAAC;AAC7C,SAAC;QAED,MAAM,MAAM,GAAG,UAAU,MAAW,EAAA;AAClC,YAAA,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;YACnF,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;YAEpD,IAAI,cAAc,KAAK,IAAI,CAAC,GAAG,GAAI,YAAuB,CAAC,EAAE;AAC3D,gBAAA,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,GAAI,YAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/E,gBAAA,IAAI,CAAC,GAAG,GAAI,YAAuB,CAAC,GAAG,cAAc;;AAEzD,SAAC;AAED,QAAA,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE;AAC/B,YAAA,eAAe,EAAE;AACjB,YAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE;AAC1C,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,YAAY,EAAE;AACf,aAAA,CAAC;;AAEN,KAAC;AACH;;AC3GgB,SAAA,mBAAmB,CAAC,MAAA,GAAc,EAAE,EAAA;;IAElD,OAAO,CAAC,MAAW,KAAI;QACrB,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;AACpE,KAAC;AACH;;MCPa,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAY,QAAa,EAAA;QACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;;AAE5B;;ACLe,SAAA,eAAe,CAAC,MAAA,GAAc,EAAE,EAAA;IAC9C,OAAO,CAAC,MAAW,KAAI;AACrB,QAAA,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACnE,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,aAAa;;QAGhC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC;AAChE,KAAC;AACH;;ACTgB,SAAA,UAAU,CAAC,MAAA,GAAc,EAAE,EAAA;AACvC,IAAA,OAAO,CAAC,MAAW,EAAE,YAA6B,KAAI;AAClD,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE;QAE3E,WAAW,CAAC,IAAI,CAAC;YACb,YAAY;AACZ,YAAA,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI;AAC/B,SAAA,CAAC;QAEF,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC;AAClE,KAAC;AACL;;MCRa,YAAY,CAAA;AAGvB,IAAA,WAAA,GAAA;QAFQ,IAAK,CAAA,KAAA,GAAyD,EAAE;;AAIxE,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACpD,OAAO,UAAU,CAAC,IAAI;;AAExB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAChB,QAAA,OAAO,IAAI;;AAGb,IAAA,GAAG,CAAC,GAAW,EAAE,IAAS,EAAE,WAAmB,EAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE;;AAGxC,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAGxB,IAAA,2BAA2B,CAAC,OAAe,EAAA;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjF,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;8GAzBpC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCGY,gBAAgB,CAAA;IAG3B,WAAqD,CAAA,cAAsB,EACjE,YAA0B,EAAA;QADiB,IAAc,CAAA,cAAA,GAAd,cAAc;QACzD,IAAY,CAAA,YAAA,GAAZ,YAAY;AAHd,QAAA,IAAA,CAAA,KAAK,GAAqE,IAAI,GAAG,EAAE;;IAK3F,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,KAAK;QAE9D,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;QAG7B,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;YACnE,IAAI,cAAc,EAAE;AAClB,gBAAA,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;;;;AAKrC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,YAAY,YAAY,EAAE;AACjC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC;;SAEnF,CAAC,CACH;;;;;;;;;;;;;AA3BQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAGP,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAHhC,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAIc,MAAM;2BAAC,uBAAuB;;;MCThC,aAAa,CAAA;IACxB,WAAsB,CAAA,aAAuB,EAAY,QAAc,EAAA;QAAjD,IAAa,CAAA,aAAA,GAAb,aAAa;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAE1D,SAAS,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAGpB,OAAO,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ;;AAEvB;;MCLY,SAAS,CAAA;;AASpB,IAAA,WAAA,CAAY,IAAU,EAAA;QACpB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;;AAEnB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;;;AAI7B,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,MAAM,kBAAkB,GAAQ,IAAI,CAAC,iBAAiB,CAAC;AACvD,QAAA,OAAO,kBAAkB;;IAE3B,IAAI,iBAAiB,CAAC,GAAQ,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG;;AAE/B,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,MAAM,kBAAkB,GAAQ,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,kBAAkB,GAAG,KAAK;AAC9B,QAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACnD,gBAAA,MAAM,QAAQ,GAAQ,kBAAkB,CAAC,YAAY,CAAC;AAEtD,gBAAA,IAAI,QAAQ,CAAC,kBAAkB,EAAE;oBAC/B,kBAAkB,GAAG,IAAI;oBACzB;;;;AAIN,QAAA,OAAO,kBAAkB;;IAG3B,kBAAkB,GAAA;AAChB,QAAA,MAAM,kBAAkB,GAAQ,IAAI,CAAC,iBAAiB,CAAC;AACvD,QAAA,IAAI,QAAa;AACjB,QAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACnD,gBAAA,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC,kBAAkB,EAAE;oBACvD,IAAI,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,QAAQ;AAC9D,oBAAA,QAAQ,GAAG;AACT,wBAAA,kBAAkB,EAAE,KAAK;AACzB,wBAAA,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,QAAQ;AACnD,wBAAA,QAAQ,EAAE;qBACX;AACD,oBAAA,kBAAkB,CAAC,YAAY,CAAC,GAAG,QAAQ;;;;AAKjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,kBAAkB;;AAG9C,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC;;IAG/D,gBAAgB,CAAsB,SAAuB,EAAE,IAAS,EAAA;QAChF,IAAI,GAAG,IAAI,CAAC,uCAAuC,CAAC,SAAS,EAAE,IAAI,CAAC;AACpE,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC;;IAGlB,uCAAuC,CAAsB,SAAuB,EAAE,UAAe,EAAA;QAC7G,MAAM,4BAA4B,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC;QACpF,MAAM,UAAU,GAAQ,EAAE;QAE1B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;AACnE,YAAA,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;gBACnF,UAAU,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC;;AAEzF,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU;;AAGZ,IAAA,qBAAqB,CAAC,KAAqB,EAAA;QAChD,OAAO,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC;;AAE9D,IAAA,6BAA6B,CAAC,KAAqB,EAAA;QACxD,OAAO,eAAe,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,KAAK,CAAC;;AAE/D,IAAA,6BAA6B,CAAC,KAAqB,EAAA;QACxD,OAAO,eAAe,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,CAAC;;AAGnE,IAAA,6BAA6B,CAAC,KAAqB,EAAA;QACxD,OAAO,eAAe,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,CAAC;;AAGnE,IAAA,YAAY,CAAC,EAAsB,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;QAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;QACpE,MAAM,cAAc,GAAQ,EAAE;QAC9B,MAAM,IAAI,GAAG,IAAI;QACjB,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;gBACrF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,IAAI;AAC1D,gBAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AAC3B,oBAAA,IAAI,YAAY;wBACd,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;;wBAChH,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;;qBACvD;AACL,oBAAA,IAAI,YAAY;wBAAE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;AAC3G,wBAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,KAAK;;AAEzC,aAAC,CAAC;;AAEJ,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;;AAEzB,IAAA,eAAe,CAAC,EAAsB,EAAE,cAAmB,EAAE,QAAgB,EAAA;AACnF,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,QAAA,OAAO,cAAc,CAAC,QAAQ,CAAC;;IAG1B,qBAAqB,CAAC,SAA2B,EAAE,EAAQ,EAAA;AAChE,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,mBAAmB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;YACpE,MAAM,IAAI,GAAQ,EAAE;YACpB,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,EAAE,GAAG,EAAE;;YAEd,MAAM,IAAI,GAAG,IAAI;YACjB,IAAI,KAAK,EAAE;AACT,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;oBACzB,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,IAAI;AAC1D,oBAAA,IAAI,CAAC,YAAY;AAAE,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,IAAI;;AACzE,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,IAAI;AAC/G,iBAAC,CAAC;;YAEJ,IAAI,IAAI,EAAE;gBACR,IAAI,EAAE,EAAE;AACN,oBAAA,IAAI,CAAC,EAAE,GAAG,EAAE;;AAEd,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;;;QAE3B,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;;;AAIxC,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,OAAO,EAAE;;AAEZ;AAvJQ,UAAA,CAAA;AADN,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;;AACrB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;MCIJ,aAAa,CAAA;AAGxB,IAAA,WAAA,CAAY,MAAyB,EAAA;QAFrC,IAAM,CAAA,MAAA,GAAqB,EAAE;QAG3B,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;;AAGzB;;MCtBY,IAAI,CAAA;AAAjB,IAAA,WAAA,GAAA;QAGI,IAAU,CAAA,UAAA,GAAa,EAAE;;AAC5B;;MCGY,cAAc,CAAA;AACzB,IAAA,WAAA,CAAsB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS;;IAG/B,SAAS,CAAC,KAAU,EAAE,mBAAwB,EAAA;QAC5C,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,GAAG,eAAe;;AAE1B,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;gBAC/B,MAAM,GAAG,2BAA2B;;AAEtC,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/D,gBAAA,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,CAAC;;AAEtE,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;gBAC/D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;;;AAGzH,QAAA,OAAO,MAAM;;8GAtBJ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCAY,SAAS,CAAA;IAEpB,SAAS,CAAC,KAAU,EAAE,IAAU,EAAA;;QAE9B,IAAI,KAAK,EAAE;YACT,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC;AAC3D,YAAA,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,MAAM;;AAElE,QAAA,OAAO,KAAK;;8GARH,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCUY,aAAa,CAAA;;AAWxB,IAAA,IAAY,kBAAkB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC;AACpB,eAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB;;aACnD;YACL,OAAO,aAAa,CAAC,kBAAkB;;;AAI3C,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC;AACpB,eAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB;;aACjD;YACL,OAAO,aAAa,CAAC,gBAAgB;;;;IAMjC,OAAO,kBAAkB,CAAC,kBAAuB,EAAA;QACvD,MAAM,SAAS,GAAQ,EAAE;AAEzB,QAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACnD,gBAAA,MAAM,QAAQ,GAAQ,kBAAkB,CAAC,YAAY,CAAC;AAEtD,gBAAA,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AAC/B,oBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,GAAG,YAAY;AAC9F,oBAAA,SAAS,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC,QAAQ;;;;AAI9G,QAAA,OAAO,SAAS;;IAGV,OAAO,gBAAgB,CAAC,kBAAuB,EAAA;QACrD,MAAM,SAAS,GAAQ,EAAE;AAEzB,QAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACnD,gBAAA,MAAM,QAAQ,GAAQ,kBAAkB,CAAC,YAAY,CAAC;AACtD,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,GAAG,YAAY;AAC9F,gBAAA,SAAS,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC,QAAQ;;;AAG5G,QAAA,OAAO,SAAS;;IAGlB,WACY,CAAA,UAAsB,EACtB,YAA0B,EAAA;QAD1B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;;QA3DhB,IAAM,CAAA,MAAA,GAAoD,EAAE;;;AAG5D,QAAA,IAAA,CAAA,aAAa,GAAa,IAAI,CAAC,eAAe,CAAC;AAClD,eAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa;AAC/C,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;;AA0DpE,IAAA,OAAO,CACL,SAAuB,EACvB,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;QAElB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;QACtD,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EACtC,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE;aACrE,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EACjD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;AACH,QAAA,OAAO,QAAQ;;IAIjB,UAAU,CACR,SAAuB,EACvB,EAAW,EACX,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;QAElB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACrD,IAAI,EAAE,EAAE;AACN,YAAA,GAAG,IAAI,GAAG,GAAG,EAAE;;QAGjB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE;aAC7G,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAC7D,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;AACH,QAAA,OAAO,QAAQ;;IAGjB,SAAS,CAAyB,SAAuB,EACvD,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAClB,kBAAwB,EAAA;QACxB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;AACtD,QAAA,IAAI,CAAC,kBAAkB;YACrB,kBAAkB,GAAG,MAAM;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;;IAG9I,UAAU,CAAyB,SAAuB,EACxD,IAAS,EACT,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;QAClB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;IAGzI,WAAW,CAAyB,SAAuB,EACzD,IAAS,EACT,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;QAClB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;IAEpH,YAAY,CAAsB,SAAuB,EAAE,IAAU,EAAA;AACnE,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC;;IAG5B,UAAU,CACR,kBAAuB,EAAE,KAAQ,EACjC,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAClB,UAAgB,EAAA;AAEhB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAA2B;AACnD,QAAA,MAAM,WAAW,GAAgB,KAAK,CAAC,WAAW;QAClD,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;AAEtD,QAAA,IAAI,QAAyB;AAE7B,QAAA,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAExE,QAAA,IAAI,KAAK,CAAC,EAAE,EAAE;;AAEZ,YAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;aAC/H;YACL,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;AAGpH,QAAA,OAAO;AACJ,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC;AAClD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,CAAC;YAC7E,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;SAC3C,CAAC,EACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;;IAGL,WAAW,CACT,kBAAuB,EAAE,KAAQ,EACjC,SAAa,EACb,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAAA;AAElB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAA2B;AACnD,QAAA,MAAM,WAAW,GAAgB,KAAK,CAAC,WAAW;QAClD,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;AAEtD,QAAA,IAAI,QAAyB;AAC7B,QAAA,IAAI,QAAQ,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,QAAA,IAAI,SAAS;AACX,YAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAC7E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC;AACnE,QAAA,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;AACxC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAErI,YAAA,OAAO;AACJ,iBAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,gBAAA,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC;AAClD,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,CAAC;gBAC7E,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;aAC3C,CAAC,EACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;;aACE;AACL,YAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAqB,KAAI;AAC9C,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpB,QAAQ,CAAC,QAAQ,EAAE;AACrB,aAAC,CAAC;;;;;;;IAQN,aAAa,CACX,kBAAuB,EAAE,KAAQ,EACjC,MAAY,EACZ,OAAqB,EACrB,SAAkB,EAClB,UAAgB,EAAA;AAEhB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAA2B;AACnD,QAAA,MAAM,WAAW,GAAgB,KAAK,CAAC,WAAW;QAClD,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;AAEtD,QAAA,IAAI,QAAyB;AAE7B,QAAA,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC;AAE9E,QAAA,IAAI,KAAK,CAAC,EAAE,EAAE;AACZ,YAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;aAC7H;YACL,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;AAGpH,QAAA,OAAO;AACJ,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC;AAClD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,CAAC;YAC7E,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;SAC3C,CAAC,EACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;;AAIL,IAAA,YAAY,CACV,SAAuB,EACvB,EAAU,EACV,OAAqB,EACrB,SAAkB,EAAA;QAElB,MAAM,cAAc,GAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9D,IAAI,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1B,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;;;AAGtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE;AAClF,aAAA,IAAI,CACH,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC;AAClD,YAAA,OAAO,GAAG;SACX,CACA,EACD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;;IAGE,QAAQ,CACb,SAAuB,EACvB,SAAkB,EAAA;QAGlB,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,SAAS;;QAGlB,MAAM,WAAW,GAAgB,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC;QAE1F,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO;QACnE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU;QAC5E,MAAM,gBAAgB,GAAW,WAAW,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI;QAEjF,MAAM,GAAG,GAAW,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEtF,QAAA,OAAO,GAAG;;IAGF,gBAAgB,CACxB,GAAQ,EACR,SAAuB,EAAA;AAEvB,QAAA,IAAI,MAAM;QACV,MAAM,IAAI,GAAQ,GAAG;QACrB,MAAM,MAAM,GAAQ,EAAE;AAEtB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC;AAC5D,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGpB,QAAA,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACnE,QAAA,OAAO,MAAM;;IAGL,gBAAgB,CAAsB,SAAuB,EAAE,IAAS,EAAA;QAChF,IAAI,GAAG,IAAI,CAAC,uCAAuC,CAAC,SAAS,EAAE,IAAI,CAAC;AACpE,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC;;AAGlB,IAAA,WAAW,CAAC,KAAwB,EAAA;AAC5C,QAAA,IAAI,KAAK,CAAC,KAAK,YAAY,UAAU,EAAE;;;;aAGhC;;;;;;;;AAQP,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;IAGhB,SAAS,CAAC,IAAS,EAAE,SAA+B,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAQ,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,IAAI;AACrF,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC;;AAGlB,IAAA,uBAAuB,CAAsB,GAAM,EAAE,kBAAuB,EAAE,SAAuB,EAAA;;AAG7G,QAAA,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE;AAC7C,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACnD,gBAAA,MAAM,QAAQ,GAAQ,kBAAkB,CAAC,YAAY,CAAC;AAEtD,gBAAA,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AAC/B,oBAAA,QAAQ,CAAC,kBAAkB,GAAG,KAAK;;;;QAKzC,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,iBAAiB,GAAG,kBAAkB;;AAE5C,QAAA,OAAO,GAAG;;AAGZ,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,MAAM,mBAAmB,GAAoB,eAAe,CAAC,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC;QACjH,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC;;IAG9C,uCAAuC,CAAsB,SAAuB,EAAE,UAAe,EAAA;QAC7G,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAClD,IAAI,WAAW,EAAE;YACf,MAAM,UAAU,GAAQ,EAAE;YAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;AAClD,gBAAA,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;oBACnF,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC;;AAExE,aAAC,CAAC;AACF,YAAA,OAAO,UAAU;;QAGnB,MAAM,4BAA4B,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC;QACpF,MAAM,UAAU,GAAQ,EAAE;QAE1B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;AACnE,YAAA,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE;gBACnF,UAAU,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC;;AAEzF,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU;;AAGT,IAAA,qBAAqB,CAAC,KAAgB,EAAA;QAC9C,OAAO,eAAe,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC;;AAG3D,IAAA,cAAc,CAAsB,SAAuB,EAAA;AACnE,QAAA,OAAQ,SAAiB,CAAC,WAAW,IAAI,IAAI;;AAGxC,IAAA,YAAY,CAAC,aAA2B,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAQ;AACnB,YAAA,MAAM,EAAE,6BAA6B;;AAErC,YAAA,cAAc,EAAE;SACjB;QACD,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;;AAEhD,YAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,IAAG;AAChE,gBAAA,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;aAC3D,CAAC,CAAC;;AAEL,QAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;;IAG1B,WAAW,CAAsB,SAAuB,EAC7D,MAAW,EAAA;AACX,QAAA,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE;QACjC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM;iBACf,MAAM,CAAC,GAAG,IAAG;AACZ,gBAAA,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACrB,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC/C,qBAAC,CAAC,CAAC,MAAM,GAAG,CAAC;qBACZ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC;AACnC,aAAC;iBACA,OAAO,CAAC,GAAG,IAAG;AACb,gBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,aAAC,CAAC;;QAEN,MAAM,WAAW,GAAgB,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC;AAC1F,QAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC;AAC5E,QAAA,OAAO,UAAU;;AAIT,IAAA,aAAa,CACrB,GAAQ,EACR,SAAuB,EACvB,KAAS,EAAA;QAET,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC;;AAIlD,IAAA,qBAAqB,CAC3B,GAAa,EACb,SAAuB,EACvB,KAAS,EAAA;QAET,MAAM,IAAI,GAAQ,GAAG;QACrB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;;QAExC,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;;AAE5B,QAAA,MAAM,iBAAiB,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;AACtF,QAAA,OAAO,iBAAiB;;AAGnB,IAAA,aAAa,CAClB,KAAQ,EACR,kBAAuB,EACvB,gBAAyB,KAAK,EAAA;AAE9B,QAAA,IAAI,UAAU;QACd,IAAI,aAAa,EAAE;YACjB,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC;;aACxD;YACL,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,KAAK,CAAC;;;AAGjE,QAAA,OAAO,UAAU;;AAEX,IAAA,cAAc,CAAC,MAAW,EAAA;AAChC,QAAA,OAAO,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;;8GA5dvD,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACJM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,aAAa,CAAA;AAE5C,IAAA,WAAA,CAAY,IAAgB,EAAE,YAA0B,EAAU,SAAyB,EAAA;AACvF,QAAA,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC;QADqC,IAAS,CAAA,SAAA,GAAT,SAAS;QAEvE,IAAI,CAAC,YAAY,GAAG;AAChB,YAAA,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU;AACrC,YAAA,OAAO,EAAG,IAAI,CAAC,SAAS,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;;8GAR1B,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;AAAb,aAAa,GAAA,UAAA,CAAA;IADzB,mBAAmB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;qCAG/B,UAAU,EAAgB,YAAY,EAAqB,cAAc,CAAA;AAFlF,CAAA,EAAA,aAAa,CAUzB;2FAVY,aAAa,EAAA,UAAA,EAAA,CAAA;kBAFzB;;;ACFM,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS,CAAA;;AAGnC,UAAA,CAAA;IADC,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACzC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;IADC,SAAS,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACzC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;IADC,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACzC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;IADC,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AACzC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;IADC,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAC5C,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAIV,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACzB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;;AACzB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;AAGxB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;;AACzB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAzBT,QAAQ,GAAA,UAAA,CAAA;AAHpB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE;KACT;AACY,CAAA,EAAA,QAAQ,CA2BpB;;AC1BM,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS,CAAA;;AAG/B,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGhB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGhB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACvB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAGxB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAjCN,IAAI,GAAA,UAAA,CAAA;AAJhB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,gBAAgB,EAAE;KACrB;AACY,CAAA,EAAA,IAAI,CAkChB;;AClCM,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,SAAS,CAAA;;AAGhC,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGd,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;;AACvB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAGtB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAGf,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAGtB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACxB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AA9BL,KAAK,GAAA,UAAA,CAAA;AAJjB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,gBAAgB,EAAE;KACrB;AACY,CAAA,EAAA,KAAK,CAgCjB;;ACjCM,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS,CAAA;;AAGjC,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;;AACzB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAGb,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;;AAC5B,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AANL,IAAI,GAAA,UAAA,CAAA;AAHhB,IAAA,eAAe,CAAC;AACf,QAAA,IAAI,EAAE;KACP;AACY,CAAA,EAAA,IAAI,CAOhB;;ACRM,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,SAAS,CAAA;AAW/B,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;;;AAT/C,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,SAAS,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;;AACxB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AATN,IAAI,GAAA,UAAA,CAAA;AAHhB,IAAA,eAAe,CAAC;AACb,QAAA,IAAI,EAAE;KACT;AACY,CAAA,EAAA,IAAI,CAchB;;ACVK,MAAO,eAAgB,SAAQ,WAAqB,CAAA;AAExD,IAAA,WAAA,CAAoC,SAAwB,EAAA;QAC1D,KAAK,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;;AAJlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAEN,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,cAAc;;;MCHvB,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAFhB,QAAA,IAAA,CAAA,KAAK,GAAoC,IAAI,GAAG,EAAE;;AAI1D,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,YAAY,EAAE,CAAC;;QAGjD,MAAM,WAAW,GAAG,IAAI,aAAa,CAAM,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AAEpC,QAAA,IAAI,CAAC;aACF,GAAG,CAAM,OAAO;AAChB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC;AACvD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG;AACzD,SAAA,CAAC;AAEJ,QAAA,OAAO,WAAW,CAAC,YAAY,EAAE,CAAC;;8GAvBzB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACIK,MAAO,WAAY,SAAQ,WAAiB,CAAA;AAChD,IAAA,WAAA,CAAoC,SAAwB,EAAA;QAC1D,KAAK,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;AAElB,IAAA,aAAa,CAAC,MAAc,EAAA;AACjC,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,SAAS;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAU,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;;AAPtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBACF,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AADvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAEc,MAAM;2BAAC,cAAc;;;MCLvB,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;QAHlB,IAAW,CAAA,WAAA,GAAkB,IAAI;QACjC,IAAU,CAAA,UAAA,GAAkB,IAAI;;QAItC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;QAGjC,IAAI,CAAC,MAAM,CAAC;aACT,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC;AACpD,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;;AAElC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,iBAAiB;AAC3C,SAAC,CAAC;;IAGC,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;;IAGlB,aAAa,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;;8GAvBb,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEY,sBAAsB,CAAA;IAMjC,WAAoB,CAAA,UAAsB,EACxC,MAAsB,EAAA;QADJ,IAAU,CAAA,UAAA,GAAV,UAAU;QALtB,IAAO,CAAA,OAAA,GAAG,EAAE;QACZ,IAAO,CAAA,OAAA,GAAQ,IAAI,WAAW,CAAC;AACrC,YAAA,MAAM,EAAE,kBAAkB;AAC1B,YAAA,cAAc,EAAE;AACjB,SAAA,CAAC;AAGA,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACnB,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;;;AAGjC,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,mBAAmB,GAAG,IAAI,GAAG,kBAAkB;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;;8GAfjD,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACGK,MAAO,WAAY,SAAQ,WAAiB,CAAA;AAEhD,IAAA,WAAA,CAAoC,SAAwB,EAAA;QAC1D,KAAK,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;IAEzB,SAAS,GAAA;AACP,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,OAAA,CAAS;AACrD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;AAC/D,QAAA,OAAO,QAAQ;;AAEjB,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxE,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;IAEd,QAAQ,GAAA;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7C,QAAA,OAAO,QAAQ;;AApBN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAEF,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,cAAc;;;ACPvB,MAAA,SAAS,GAAU;IAC9B,aAAa;IACb,aAAa;AACb,IAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE;IACvD,QAAQ;IACR,WAAW;IACX;;;SCRc,wBAAwB,CAAsB,YAAiB,EAAE,YAAgC,SAAS,EAAA;AACtH,IAAA,OAAO,CAAC,KAA6B,EAAE,KAA0B,KAAI;QACjE,IAAI,SAAS,IAAI,SAAS;YACtB,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAC/C,MAAM,QAAQ,GAAGC,aAAW,CAAI,SAAS,EAAE,YAAY,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,CAAA,CAAE,CAAC;;AAEtD,QAAA,OAAO,QAAQ;AACnB,KAAC;AACL;AAEA,SAASA,aAAW,CAAI,SAAiB,EAAE,YAAiB,EAAA;AACxD,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAACC,cAAY,CAAC,SAAS,CAAC,CAAC,CAAC;;;AAGzE;AAEA,SAASA,cAAY,CAAC,GAAW,EAAA;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAW,KAAI;AACzC,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACvE,KAAC,CAAC;AACN;;ACtBgB,SAAA,0BAA0B,CAAgD,aAAkB,EAAE,WAAmB,EAAA;AAC/H,IAAA,OAAO,CAAC,KAA6B,EAAE,KAA0B,KAAI;QACnE,MAAM,QAAQ,GAAG,WAAW,CAAI,WAAW,EAAE,aAAa,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,CAAA,CAAE,CAAC;;AAEtD,QAAA,OAAO,QAAQ;AACjB,KAAC;AACH;AAEA,SAAS,WAAW,CAAI,WAAmB,EAAE,aAAkB,EAAA;AAC7D,IAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;;;;AAK3E;AAEA,SAAS,YAAY,CAAC,GAAW,EAAA;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAW,KAAI;AAC3C,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACrE,KAAC,CAAC;AACJ;;MCMa,aAAa,CAAA;IACjB,OAAO,OAAO,CAAC,MAAsB,EAAA;QAC1C,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;gBACT,SAAS;AACT,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM;AAC5C;SACF;;8GARQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EApBtB,OAAA,EAAA,CAAA,YAAY,EAUZL,IAAA,CAAA,eAAA,EAAA,mBAAmB,aAMnB,gBAAgB;YAChB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EARb,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAdC,YAAY;YACZ,eAAe,CAAC,OAAO,CAAC;AACtB,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE,CAAC,UAAU;AAClB,iBAAA;;AAED,gBAAA,cAAc,EAAE,KAAK;aACtB,CAAC;AACF,YAAA,mBAAmB,EAMnB,gBAAgB;YAChB,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAGN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAtBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe,CAAC,OAAO,CAAC;AACtB,4BAAA,MAAM,EAAE;AACN,gCAAA,OAAO,EAAE,eAAe;AACxB,gCAAA,QAAQ,EAAE,sBAAsB;gCAChC,IAAI,EAAE,CAAC,UAAU;AAClB,6BAAA;;AAED,4BAAA,cAAc,EAAE,KAAK;yBACtB,CAAC;wBACF;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe;AAChB;AACF,iBAAA;;;MC5BY,gBAAgB,CAAA;AAC3B,IAAA,OAAO,gBAAgB,CAAC,KAAa,EAAE,KAAuB,EAAA;QAC5D,OAAO,CAAC,OAAwB,KAA4B;AAC1D,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;;AAElB,gBAAA,OAAO,IAAI;;;YAIb,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;YAGvC,OAAO,KAAK,GAAG,IAAI,GAAG,KAAK;AAC7B,SAAC;;AAEJ;;ACRK,MAAO,YAAc,SAAQ,WAAkB,CAAA;AAEnD,IAAA,WAAA,CAAoC,SAAwB,EAAA;QAC1D,KAAK,CAAC,SAAS,CAAC;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;AAJf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAEH,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,cAAc;;;ACX9B,SAAU,aAAa,CAAC,IAAU,EAAA;IACpC,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,QAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAU,KAAI;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,SAAC;AAED,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAU,KAAI;AAC5B,YAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9B,SAAC;AAED,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAClC,KAAC,CAAC;AACN;AAEgB,SAAA,oBAAoB,CAAC,QAAa,EAAE,GAAW,EAAA;;AAE3D,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;;IAGrE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;;AAGjD,IAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACd,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAChD,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC;;;AAIhC,IAAA,OAAO,SAAS;AACpB;;AChCA;;AAEG;;ACFH;;AAEG;;;;"}
@@ -9,8 +9,8 @@ export declare abstract class BaseCrudImplementation<T = any> {
9
9
  protected route: ActivatedRoute;
10
10
  protected translate: TranslateService;
11
11
  protected location: Location;
12
- protected modelService: import("@rosoftlab/core").BaseService<import("@rosoftlab/core").BaseModel>;
13
- protected modelToken: import("@angular/core").Type<import("@rosoftlab/core").BaseModel>;
12
+ protected modelService: import("@rosoftlab/core").BaseService<import("@rosoftlab/core").BaseModel<string>>;
13
+ protected modelToken: import("@angular/core").Type<import("@rosoftlab/core").BaseModel<string>>;
14
14
  protected dialogService: import("../interfaces/dialog.interface").IDialogService;
15
15
  model: T | null;
16
16
  modelName: string | null;
@@ -6,8 +6,8 @@ import * as i0 from "@angular/core";
6
6
  export declare abstract class BaseTableImplementation<T = any, TEditArgs = any, TRemoveArgs = any> implements OnInit {
7
7
  protected router: Router;
8
8
  protected translate: TranslateService;
9
- protected dataService: import("@rosoftlab/core").BaseService<import("@rosoftlab/core").BaseModel>;
10
- protected modelToken: import("@angular/core").Type<import("@rosoftlab/core").BaseModel>;
9
+ protected dataService: import("@rosoftlab/core").BaseService<import("@rosoftlab/core").BaseModel<string>>;
10
+ protected modelToken: import("@angular/core").Type<import("@rosoftlab/core").BaseModel<string>>;
11
11
  protected dialogService: import("../interfaces/dialog.interface").IDialogService;
12
12
  basePath: string;
13
13
  title: string;
@@ -1,9 +1,9 @@
1
1
  import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
2
2
  import { ModelConfig } from '../interfaces/model-config.interface';
3
3
  import type { ModelType } from '../services/datastore-port';
4
- export declare class BaseModel {
4
+ export declare class BaseModel<TId = string> {
5
5
  highlighted: boolean;
6
- id: any;
6
+ id: TId;
7
7
  [key: string]: any;
8
8
  constructor(data?: any);
9
9
  get attributeMetadata(): any;
@@ -13,12 +13,12 @@ export declare class BaseModel {
13
13
  get modelConfig(): ModelConfig;
14
14
  protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any): T;
15
15
  protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any): any;
16
- getModelPropertyNames(model: BaseModel): any;
17
- getModelRequiredPropertyNames(model: BaseModel): any;
18
- getModelDefaultPropertyValues(model: BaseModel): any;
19
- getModelSubGroupPropertyNames(model: BaseModel): any;
16
+ getModelPropertyNames(model: BaseModel<any>): any;
17
+ getModelRequiredPropertyNames(model: BaseModel<any>): any;
18
+ getModelDefaultPropertyValues(model: BaseModel<any>): any;
19
+ getModelSubGroupPropertyNames(model: BaseModel<any>): any;
20
20
  getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup;
21
21
  private getSubFromGroup;
22
- getModelFromFormGroup(formGroup: UntypedFormGroup, id?: any): void;
22
+ getModelFromFormGroup(formGroup: UntypedFormGroup, id?: TId): void;
23
23
  getCellClass(property: string): string;
24
24
  }
@@ -1,6 +1,5 @@
1
1
  import { BaseModel } from "./base.model";
2
2
  export declare class Employee extends BaseModel {
3
- id: string;
4
3
  userName: string;
5
4
  firstName: string;
6
5
  lastName: string;
@@ -1,6 +1,5 @@
1
1
  import { BaseModel } from "./base.model";
2
2
  export declare class Menu extends BaseModel {
3
- id: string;
4
3
  header?: string;
5
4
  icon?: string;
6
5
  link?: string;
@@ -1,5 +1,6 @@
1
1
  export declare class MetadataStorage {
2
2
  private static metadataMap;
3
3
  static getMetadata(key: string, target: object, propertyKey?: string): any;
4
+ static getMergedMetadata(key: string, target: object): any;
4
5
  static setMetadata(key: string, value: any, target: object, propertyKey?: string): void;
5
6
  }
@@ -1,6 +1,5 @@
1
1
  import { BaseModel } from "./base.model";
2
2
  export declare class Right extends BaseModel {
3
- id: string;
4
3
  name: string;
5
4
  rightKey: string;
6
5
  pagePath: string;
@@ -1,6 +1,5 @@
1
1
  import { BaseModel } from './base.model';
2
2
  export declare class Role extends BaseModel {
3
- id: string;
4
3
  name: string;
5
4
  roleDetail: any;
6
5
  }
@@ -1,6 +1,5 @@
1
1
  import { BaseModel } from "./base.model";
2
2
  export declare class User extends BaseModel {
3
- id: string;
4
3
  firstName: string;
5
4
  lastName: string;
6
5
  email: string;
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken, Type } from '@angular/core';
2
2
  import { BaseModel } from '../models/base.model';
3
3
  import { BaseService } from '../services/base.service';
4
- export declare const MODEL_SERVICE: InjectionToken<BaseService<BaseModel>>;
5
- export declare const MODEL_TOKEN: InjectionToken<Type<BaseModel>>;
4
+ export declare const MODEL_SERVICE: InjectionToken<BaseService<BaseModel<string>>>;
5
+ export declare const MODEL_TOKEN: InjectionToken<Type<BaseModel<string>>>;
6
6
  export declare const RSL_FORM_IMPLEMENTATIONS_TOKEN: InjectionToken<Record<string, Type<any>>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosoftlab/core",
3
- "version": "1.0.5-alpha-6",
3
+ "version": "1.0.5-alpha-7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.8",
6
6
  "@angular/core": "^19.2.8",