@abp/ng.core 5.1.2 → 5.2.0-rc.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.core.mjs","sources":["../../../../packages/core/src/lib/abstracts/ng-model.component.ts","../../../../packages/core/src/lib/tokens/localization.token.ts","../../../../packages/core/src/lib/tokens/options.token.ts","../../../../packages/core/src/lib/utils/localization-utils.ts","../../../../packages/core/src/lib/utils/string-utils.ts","../../../../packages/core/src/lib/utils/common-utils.ts","../../../../packages/core/src/lib/utils/object-utils.ts","../../../../packages/core/src/lib/utils/internal-store-utils.ts","../../../../packages/core/src/lib/services/environment.service.ts","../../../../packages/core/src/lib/services/http-error-reporter.service.ts","../../../../packages/core/src/lib/services/rest.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.ts","../../../../packages/core/src/lib/services/config-state.service.ts","../../../../packages/core/src/lib/services/session-state.service.ts","../../../../packages/core/src/lib/services/localization.service.ts","../../../../packages/core/src/lib/utils/route-utils.ts","../../../../packages/core/src/lib/services/replaceable-components.service.ts","../../../../packages/core/src/lib/services/router-events.service.ts","../../../../packages/core/src/lib/utils/array-utils.ts","../../../../packages/core/src/lib/utils/tree-utils.ts","../../../../packages/core/src/lib/services/permission.service.ts","../../../../packages/core/src/lib/services/routes.service.ts","../../../../packages/core/src/lib/services/subscription.service.ts","../../../../packages/core/src/lib/components/dynamic-layout.component.ts","../../../../packages/core/src/lib/components/replaceable-route-container.component.ts","../../../../packages/core/src/lib/components/router-outlet.component.ts","../../../../packages/core/src/lib/constants/different-locales.ts","../../../../packages/core/src/lib/directives/autofocus.directive.ts","../../../../packages/core/src/lib/directives/debounce.directive.ts","../../../../packages/core/src/lib/directives/for.directive.ts","../../../../packages/core/src/lib/directives/form-submit.directive.ts","../../../../packages/core/src/lib/directives/init.directive.ts","../../../../packages/core/src/lib/directives/permission.directive.ts","../../../../packages/core/src/lib/directives/replaceable-template.directive.ts","../../../../packages/core/src/lib/directives/stop-propagation.directive.ts","../../../../packages/core/src/lib/handlers/oauth-configuration.handler.ts","../../../../packages/core/src/lib/handlers/routes.handler.ts","../../../../packages/core/src/lib/utils/http-utils.ts","../../../../packages/core/src/lib/tokens/lodaer-delay.token.ts","../../../../packages/core/src/lib/services/http-wait.service.ts","../../../../packages/core/src/lib/tokens/tenant-key.token.ts","../../../../packages/core/src/lib/interceptors/api.interceptor.ts","../../../../packages/core/src/lib/pipes/localization.pipe.ts","../../../../packages/core/src/lib/localization.module.ts","../../../../packages/core/src/lib/pipes/sort.pipe.ts","../../../../packages/core/src/lib/pipes/to-injector.pipe.ts","../../../../packages/core/src/lib/tokens/cookie-language-key.token.ts","../../../../packages/core/src/lib/providers/cookie-language.provider.ts","../../../../packages/core/src/lib/providers/locale.provider.ts","../../../../packages/core/src/lib/utils/auth-utils.ts","../../../../packages/core/src/lib/strategies/auth-flow.strategy.ts","../../../../packages/core/src/lib/utils/date-extensions.ts","../../../../packages/core/src/lib/services/auth.service.ts","../../../../packages/core/src/lib/tokens/app-config.token.ts","../../../../packages/core/src/lib/utils/environment-utils.ts","../../../../packages/core/src/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.ts","../../../../packages/core/src/lib/services/multi-tenancy.service.ts","../../../../packages/core/src/lib/utils/multi-tenancy-utils.ts","../../../../packages/core/src/lib/utils/initial-utils.ts","../../../../packages/core/src/lib/core.module.ts","../../../../packages/core/src/lib/guards/auth.guard.ts","../../../../packages/core/src/lib/guards/permission.guard.ts","../../../../packages/core/src/lib/models/dtos.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.ts","../../../../packages/core/src/lib/proxy/volo/abp/http/modeling/models.ts","../../../../packages/core/src/lib/services/content-projection.service.ts","../../../../packages/core/src/lib/utils/date-utils.ts","../../../../packages/core/src/lib/utils/factory-utils.ts","../../../../packages/core/src/lib/utils/file-utils.ts","../../../../packages/core/src/lib/utils/number-utils.ts","../../../../packages/core/src/lib/utils/form-utils.ts","../../../../packages/core/src/lib/utils/generator-utils.ts","../../../../packages/core/src/lib/strategies/cross-origin.strategy.ts","../../../../packages/core/src/lib/strategies/dom.strategy.ts","../../../../packages/core/src/lib/utils/lazy-load-utils.ts","../../../../packages/core/src/lib/services/dom-insertion.service.ts","../../../../packages/core/src/lib/services/resource-wait.service.ts","../../../../packages/core/src/lib/services/lazy-load.service.ts","../../../../packages/core/src/lib/tokens/list.token.ts","../../../../packages/core/src/lib/services/list.service.ts","../../../../packages/core/src/lib/services/router-wait.service.ts","../../../../packages/core/src/lib/services/track-by.service.ts","../../../../packages/core/src/lib/strategies/container.strategy.ts","../../../../packages/core/src/lib/strategies/content-security.strategy.ts","../../../../packages/core/src/lib/strategies/content.strategy.ts","../../../../packages/core/src/lib/strategies/context.strategy.ts","../../../../packages/core/src/lib/strategies/loading.strategy.ts","../../../../packages/core/src/lib/strategies/projection.strategy.ts","../../../../packages/core/src/lib/tokens/manage-profile.token.ts","../../../../packages/core/src/lib/validators/age.validator.ts","../../../../packages/core/src/lib/validators/credit-card.validator.ts","../../../../packages/core/src/lib/validators/range.validator.ts","../../../../packages/core/src/lib/validators/required.validator.ts","../../../../packages/core/src/lib/validators/string-length.validator.ts","../../../../packages/core/src/lib/validators/url.validator.ts","../../../../packages/core/src/lib/validators/index.ts","../../../../packages/core/src/public-api.ts","../../../../packages/core/src/abp-ng.core.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Injector, Input } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n// Not an abstract class on purpose. Do not change!\r\n@Component({ template: '' })\r\nexport class AbstractNgModelComponent<T = any, U = T> implements ControlValueAccessor {\r\n protected _value: T;\r\n protected cdRef: ChangeDetectorRef;\r\n onChange: (value: T) => void;\r\n onTouched: () => void;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n valueFn: (value: U, previousValue?: T) => T = value => value as any as T;\r\n\r\n @Input()\r\n valueLimitFn: (value: T, previousValue?: T) => any = value => false;\r\n\r\n @Input()\r\n set value(value: T) {\r\n value = this.valueFn(value as any as U, this._value);\r\n\r\n if (this.valueLimitFn(value, this._value) !== false || this.readonly) return;\r\n\r\n this._value = value;\r\n this.notifyValueChange();\r\n }\r\n\r\n get value(): T {\r\n return this._value || this.defaultValue;\r\n }\r\n\r\n get defaultValue(): T {\r\n return this._value;\r\n }\r\n\r\n constructor(public injector: Injector) {\r\n this.cdRef = injector.get(ChangeDetectorRef);\r\n }\r\n\r\n notifyValueChange(): void {\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n writeValue(value: T): void {\r\n this._value = this.valueLimitFn(value, this._value) || value;\r\n setTimeout(() => this.cdRef.markForCheck(), 0);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const LOCALIZATIONS = new InjectionToken('LOCALIZATIONS');\r\n\r\nexport function localizationContributor(localizations: ABP.Localization[]) {\r\n if (localizations) {\r\n localizations$.next([...localizations$.value, ...localizations]);\r\n }\r\n}\r\n\r\nexport const localizations$ = new BehaviorSubject([]);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const CORE_OPTIONS = new InjectionToken<ABP.Root>('CORE_OPTIONS');\r\n\r\nexport function coreOptionsFactory({ ...options }: ABP.Root) {\r\n return {\r\n ...options,\r\n } as ABP.Root;\r\n}\r\n","import { ApplicationLocalizationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\n\r\n// This will not be necessary when only Angukar 9.1+ is supported\r\nexport function getLocaleDirection(locale: string): 'ltr' | 'rtl' {\r\n return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(\r\n locale,\r\n )\r\n ? 'rtl'\r\n : 'ltr';\r\n}\r\n\r\nexport function createLocalizer(localization: ApplicationLocalizationConfigurationDto) {\r\n return (resourceName: string, key: string, defaultValue: string) => {\r\n if (resourceName === '_') return key;\r\n\r\n const resource = localization?.values?.[resourceName];\r\n\r\n if (!resource) return defaultValue;\r\n\r\n return resource[key] || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizerWithFallback(localization: ApplicationLocalizationConfigurationDto) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultValue: string) => {\r\n const { localized } = findLocalization(resourceNames, keys);\r\n return localized || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultKey: string | undefined) => {\r\n const { resourceName, key } = findLocalization(resourceNames, keys);\r\n return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;\r\n };\r\n}\r\n\r\nfunction createLocalizationFinder(localization: ApplicationLocalizationConfigurationDto) {\r\n const localize = createLocalizer(localization);\r\n\r\n return (resourceNames: string[], keys: string[]) => {\r\n resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);\r\n\r\n const resourceCount = resourceNames.length;\r\n const keyCount = keys.length;\r\n\r\n for (let i = 0; i < resourceCount; i++) {\r\n const resourceName = resourceNames[i];\r\n\r\n for (let j = 0; j < keyCount; j++) {\r\n const key = keys[j];\r\n const localized = localize(resourceName, key, null);\r\n if (localized) return { resourceName, key, localized };\r\n }\r\n }\r\n\r\n return { resourceName: undefined, key: undefined, localized: undefined };\r\n };\r\n}\r\n","export function createTokenParser(format: string) {\r\n return (str: string) => {\r\n const tokens: string[] = [];\r\n const regex = format.replace(/\\./g, '\\\\.').replace(/\\{\\s?([0-9a-zA-Z]+)\\s?\\}/g, (_, token) => {\r\n tokens.push(token);\r\n return '(.+)';\r\n });\r\n\r\n const matches = (str.match(regex) || []).slice(1);\r\n\r\n return matches.reduce((acc, v, i) => {\r\n const key = tokens[i];\r\n acc[key] = [...(acc[key] || []), v].filter(Boolean);\r\n return acc;\r\n }, {} as Record<string, string[]>);\r\n };\r\n}\r\n\r\nexport function interpolate(text: string, params: string[]) {\r\n return text\r\n .replace(/(['\"]?\\{\\s*(\\d+)\\s*\\}['\"]?)/g, (_, match, digit) => params[digit] ?? match)\r\n .replace(/\\s+/g, ' ');\r\n}\r\n\r\nexport function escapeHtmlChars(value: any) {\r\n return value && typeof value === 'string'\r\n ? value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n : value;\r\n}\r\n","export function noop() {\r\n const fn = function () {};\r\n return fn;\r\n}\r\n\r\nexport function isUndefinedOrEmptyString(value: unknown): boolean {\r\n return value === undefined || value === '';\r\n}\r\n\r\nexport function isNullOrUndefined(obj) {\r\n return obj === null || obj === undefined;\r\n}\r\n\r\nexport function exists(obj) {\r\n return !isNullOrUndefined(obj);\r\n}\r\n\r\nexport function isObject(obj) {\r\n return obj instanceof Object;\r\n}\r\n\r\nexport function isArray(obj) {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObjectAndNotArray(obj) {\r\n return isObject(obj) && !isArray(obj);\r\n}\r\n\r\nexport function isNode(obj) {\r\n return obj instanceof Node;\r\n}\r\n\r\nexport function isObjectAndNotArrayNotNode(obj) {\r\n return isObjectAndNotArray(obj) && !isNode(obj);\r\n}\r\n","import {\r\n exists,\r\n isArray,\r\n isNode,\r\n isNullOrUndefined,\r\n isObject,\r\n isObjectAndNotArrayNotNode,\r\n} from './common-utils';\r\n\r\nexport function deepMerge(target, source) {\r\n if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {\r\n return deepMergeRecursively(target, source);\r\n } else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {\r\n return {};\r\n } else {\r\n return exists(source) ? source : target;\r\n }\r\n}\r\n\r\nfunction deepMergeRecursively(target, source) {\r\n const shouldNotRecurse =\r\n isNullOrUndefined(target) ||\r\n isNullOrUndefined(source) || // at least one not defined\r\n isArray(target) ||\r\n isArray(source) || // at least one array\r\n !isObject(target) ||\r\n !isObject(source) || // at least one not an object\r\n isNode(target) ||\r\n isNode(source); // at least one node\r\n\r\n /**\r\n * if we will not recurse any further,\r\n * we will prioritize source if it is a defined value.\r\n */\r\n if (shouldNotRecurse) {\r\n return exists(source) ? source : target;\r\n }\r\n\r\n const keysOfTarget = Object.keys(target);\r\n const keysOfSource = Object.keys(source);\r\n const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));\r\n return [...uniqueKeys].reduce((retVal, key) => {\r\n retVal[key] = deepMergeRecursively(target[key], source[key]);\r\n return retVal;\r\n }, {});\r\n}\r\n","import compare from 'just-compare';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\r\nimport { DeepPartial } from '../models';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport class InternalStore<State> {\r\n private state$ = new BehaviorSubject<State>(this.initialState);\r\n\r\n private update$ = new Subject<DeepPartial<State>>();\r\n\r\n get state() {\r\n return this.state$.value;\r\n }\r\n\r\n sliceState = <Slice>(\r\n selector: (state: State) => Slice,\r\n compareFn: (s1: Slice, s2: Slice) => boolean = compare,\r\n ) => this.state$.pipe(map(selector), distinctUntilChanged(compareFn));\r\n\r\n sliceUpdate = <Slice>(\r\n selector: (state: DeepPartial<State>) => Slice,\r\n filterFn = (x: Slice) => x !== undefined,\r\n ) => this.update$.pipe(map(selector), filter(filterFn));\r\n\r\n constructor(private initialState: State) {}\r\n\r\n patch(state: Partial<State>) {\r\n let patchedState = state as State;\r\n\r\n if (typeof state === 'object' && !Array.isArray(state)) {\r\n patchedState = { ...this.state, ...state };\r\n }\r\n\r\n this.state$.next(patchedState);\r\n this.update$.next(patchedState as DeepPartial<State>);\r\n }\r\n\r\n deepPatch(state: DeepPartial<State>) {\r\n this.state$.next(deepMerge(this.state, state));\r\n this.update$.next(state);\r\n }\r\n\r\n set(state: State) {\r\n this.state$.next(state);\r\n this.update$.next(state as DeepPartial<State>);\r\n }\r\n\r\n reset() {\r\n this.set(this.initialState);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Apis, Environment } from '../models/environment';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nconst mapToApiUrl = (key: string) => (apis: Apis) =>\r\n (apis[key] || apis.default).url || apis.default.url;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EnvironmentService {\r\n private readonly store = new InternalStore({} as Environment);\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n\r\n getEnvironment$(): Observable<Environment> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getEnvironment(): Environment {\r\n return this.store.state;\r\n }\r\n\r\n getApiUrl(key: string) {\r\n return mapToApiUrl(key)(this.store.state.apis);\r\n }\r\n\r\n getApiUrl$(key: string) {\r\n return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));\r\n }\r\n\r\n setState(environment: Environment) {\r\n this.store.set(environment);\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpErrorReporterService {\r\n private _reporter$ = new Subject<HttpErrorResponse>();\r\n private _errors$ = new BehaviorSubject<HttpErrorResponse[]>([]);\r\n\r\n get reporter$() {\r\n return this._reporter$.asObservable();\r\n }\r\n\r\n get errors$() {\r\n return this._errors$.asObservable();\r\n }\r\n\r\n get errors() {\r\n return this._errors$.value;\r\n }\r\n\r\n reportError = (error: HttpErrorResponse) => {\r\n this._reporter$.next(error);\r\n this._errors$.next([...this.errors, error]);\r\n };\r\n}\r\n","import { HttpClient, HttpParameterCodec, HttpParams, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { Rest } from '../models/rest';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { isUndefinedOrEmptyString } from '../utils/common-utils';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { HttpErrorReporterService } from './http-error-reporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RestService {\r\n constructor(\r\n @Inject(CORE_OPTIONS) protected options: ABP.Root,\r\n protected http: HttpClient,\r\n protected environment: EnvironmentService,\r\n protected httpErrorReporter: HttpErrorReporterService,\r\n ) {}\r\n\r\n protected getApiFromStore(apiName: string): string {\r\n return this.environment.getApiUrl(apiName);\r\n }\r\n\r\n handleError(err: any): Observable<any> {\r\n this.httpErrorReporter.reportError(err);\r\n return throwError(err);\r\n }\r\n\r\n request<T, R>(\r\n request: HttpRequest<T> | Rest.Request<T>,\r\n config?: Rest.Config,\r\n api?: string,\r\n ): Observable<R> {\r\n config = config || ({} as Rest.Config);\r\n api = api || this.getApiFromStore(config.apiName);\r\n const { method, params, ...options } = request;\r\n const { observe = Rest.Observe.Body, skipHandleError } = config;\r\n\r\n return this.http\r\n .request<R>(method, api + request.url, {\r\n observe,\r\n ...(params && {\r\n params: this.getParams(params, config.httpParamEncoder),\r\n }),\r\n ...options,\r\n } as any)\r\n .pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));\r\n }\r\n\r\n private getParams(params: Rest.Params, encoder?: HttpParameterCodec): HttpParams {\r\n const httpParams = encoder ? new HttpParams({ encoder }) : new HttpParams();\r\n return Object.keys(params).reduce((acc, key) => {\r\n const value = params[key];\r\n\r\n if (isUndefinedOrEmptyString(value)) return acc;\r\n if (value === null && !this.options.sendNullsAsQueryParam) return acc;\r\n acc = acc.set(key, value);\r\n return acc;\r\n }, httpParams);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../../../services/rest.service';\r\nimport type { ApplicationConfigurationDto } from './models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApplicationConfigurationService {\r\n apiName = 'abp';\r\n\r\n get() {\r\n return this.restService.request<any, ApplicationConfigurationDto>(\r\n {\r\n method: 'GET',\r\n url: '/api/abp/application-configuration',\r\n },\r\n { apiName: this.apiName },\r\n );\r\n }\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map, switchMap, take } from 'rxjs/operators';\r\nimport { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigStateService {\r\n private readonly store = new InternalStore({} as ApplicationConfigurationDto);\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n\r\n private updateSubject = new Subject();\r\n\r\n constructor(private abpConfigService: AbpApplicationConfigurationService) {\r\n this.initUpdateStream();\r\n }\r\n\r\n private initUpdateStream() {\r\n this.updateSubject\r\n .pipe(switchMap(() => this.abpConfigService.get()))\r\n .subscribe(res => this.store.set(res));\r\n }\r\n\r\n refreshAppState() {\r\n this.updateSubject.next();\r\n return this.createOnUpdateStream(state => state).pipe(take(1));\r\n }\r\n\r\n getOne$(key: string) {\r\n return this.store.sliceState(state => state[key]);\r\n }\r\n\r\n getOne(key: string) {\r\n return this.store.state[key];\r\n }\r\n\r\n getAll$(): Observable<ApplicationConfigurationDto> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getAll(): ApplicationConfigurationDto {\r\n return this.store.state;\r\n }\r\n\r\n getDeep$(keys: string[] | string): Observable<any> {\r\n keys = splitKeys(keys);\r\n\r\n return this.store\r\n .sliceState(state => state)\r\n .pipe(\r\n map(state => {\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, state);\r\n }),\r\n );\r\n }\r\n\r\n getDeep(keys: string[] | string): any {\r\n keys = splitKeys(keys);\r\n\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, this.store.state);\r\n }\r\n\r\n getFeature(key: string) {\r\n return this.store.state.features?.values?.[key];\r\n }\r\n\r\n getFeature$(key: string) {\r\n return this.store.sliceState(state => state.features?.values?.[key]);\r\n }\r\n\r\n getFeatures(keys: string[]) {\r\n const { features } = this.store.state;\r\n if (!features) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n }\r\n\r\n getFeatures$(keys: string[]) {\r\n return this.store.sliceState(({ features }) => {\r\n if (!features?.values) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n });\r\n }\r\n\r\n getSetting(key: string) {\r\n return this.store.state.setting?.values?.[key];\r\n }\r\n\r\n getSetting$(key: string) {\r\n return this.store.sliceState(state => state.setting?.values?.[key]);\r\n }\r\n\r\n getSettings(keyword?: string) {\r\n const settings = this.store.state.setting?.values || {};\r\n\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce((acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n }, {});\r\n }\r\n\r\n getSettings$(keyword?: string) {\r\n return this.store\r\n .sliceState(state => state.setting?.values)\r\n .pipe(\r\n map((settings = {}) => {\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce((acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n }, {});\r\n }),\r\n );\r\n }\r\n}\r\n\r\nfunction splitKeys(keys: string[] | string): string[] {\r\n if (typeof keys === 'string') {\r\n keys = keys.split('.');\r\n }\r\n\r\n if (!Array.isArray(keys)) {\r\n throw new Error('The argument must be a dot string or an string array.');\r\n }\r\n\r\n return keys;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Session } from '../models/session';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SessionStateService {\r\n private readonly store = new InternalStore({} as Session.State);\r\n\r\n private updateLocalStorage = () => {\r\n localStorage.setItem('abpSession', JSON.stringify(this.store.state));\r\n };\r\n\r\n constructor(private configState: ConfigStateService) {\r\n this.init();\r\n this.setInitialLanguage();\r\n }\r\n\r\n private init() {\r\n const session = localStorage.getItem('abpSession');\r\n if (session) {\r\n this.store.set(JSON.parse(session));\r\n }\r\n\r\n this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);\r\n }\r\n\r\n private setInitialLanguage() {\r\n if (this.getLanguage()) return;\r\n\r\n this.configState\r\n .getDeep$('localization.currentCulture.cultureName')\r\n .pipe(\r\n filter(cultureName => !!cultureName),\r\n take(1),\r\n )\r\n .subscribe(lang => {\r\n if (lang.includes(';')) {\r\n lang = lang.split(';')[0];\r\n }\r\n\r\n this.setLanguage(lang);\r\n });\r\n }\r\n\r\n onLanguageChange$() {\r\n return this.store.sliceUpdate(state => state.language);\r\n }\r\n\r\n onTenantChange$() {\r\n return this.store.sliceUpdate(state => state.tenant);\r\n }\r\n\r\n getLanguage() {\r\n return this.store.state.language;\r\n }\r\n\r\n getLanguage$() {\r\n return this.store.sliceState(state => state.language);\r\n }\r\n\r\n getTenant() {\r\n return this.store.state.tenant;\r\n }\r\n\r\n getTenant$() {\r\n return this.store.sliceState(state => state.tenant);\r\n }\r\n\r\n setTenant(tenant: CurrentTenantDto) {\r\n if (compare(tenant, this.store.state.tenant)) return;\r\n\r\n this.store.set({ ...this.store.state, tenant });\r\n }\r\n\r\n setLanguage(language: string) {\r\n if (language === this.store.state.language) return;\r\n\r\n this.store.patch({ language });\r\n document.documentElement.setAttribute('lang', language);\r\n }\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { Injectable, Injector, isDevMode, Optional, SkipSelf } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, from, Observable, Subject } from 'rxjs';\r\nimport { filter, map, mapTo, switchMap } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { localizations$ } from '../tokens/localization.token';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';\r\nimport { interpolate } from '../utils/string-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalizationService {\r\n private latestLang = this.sessionState.getLanguage();\r\n private _languageChange$ = new Subject<string>();\r\n\r\n private uiLocalizations$ = new BehaviorSubject(\r\n new Map<string, Map<string, Record<string, string>>>(),\r\n );\r\n\r\n private localizations$ = new BehaviorSubject(new Map<string, Record<string, string>>());\r\n\r\n /**\r\n * Returns currently selected language\r\n */\r\n get currentLang(): string {\r\n return this.latestLang || this.sessionState.getLanguage();\r\n }\r\n\r\n get languageChange$(): Observable<string> {\r\n return this._languageChange$.asObservable();\r\n }\r\n\r\n constructor(\r\n private sessionState: SessionStateService,\r\n private injector: Injector,\r\n @Optional()\r\n @SkipSelf()\r\n otherInstance: LocalizationService,\r\n private configState: ConfigStateService,\r\n ) {\r\n if (otherInstance) throw new Error('LocalizationService should have only one instance.');\r\n\r\n this.listenToSetLanguage();\r\n this.initLocalizationValues();\r\n }\r\n\r\n private initLocalizationValues() {\r\n localizations$.subscribe(val => this.addLocalization(val));\r\n\r\n const remoteLocalizations$ = this.configState.getDeep$('localization.values') as Observable<\r\n Record<string, Record<string, string>>\r\n >;\r\n const currentLanguage$ = this.sessionState.getLanguage$();\r\n\r\n const uiLocalizations$ = combineLatest([currentLanguage$, this.uiLocalizations$]).pipe(\r\n map(([currentLang, localizations]) => localizations.get(currentLang)),\r\n );\r\n\r\n combineLatest([remoteLocalizations$, uiLocalizations$])\r\n .pipe(\r\n map(([remote, local]) => {\r\n if (remote) {\r\n if (!local) {\r\n local = new Map();\r\n }\r\n\r\n Object.entries(remote).forEach(entry => {\r\n const resourceName = entry[0];\r\n const remoteTexts = entry[1];\r\n let resource = local.get(resourceName) || {};\r\n resource = { ...resource, ...remoteTexts };\r\n\r\n local.set(resourceName, resource);\r\n });\r\n }\r\n\r\n return local;\r\n }),\r\n )\r\n .subscribe(val => this.localizations$.next(val));\r\n }\r\n\r\n addLocalization(localizations?: ABP.Localization[]) {\r\n if (!localizations) return;\r\n\r\n const localizationMap = this.uiLocalizations$.value;\r\n\r\n localizations.forEach(loc => {\r\n const cultureMap =\r\n localizationMap.get(loc.culture) || new Map<string, Record<string, string>>();\r\n\r\n loc.resources.forEach(res => {\r\n let resource: Record<string, string> = cultureMap.get(res.resourceName) || {};\r\n\r\n resource = { ...resource, ...res.texts };\r\n\r\n cultureMap.set(res.resourceName, resource);\r\n });\r\n\r\n localizationMap.set(loc.culture, cultureMap);\r\n });\r\n\r\n this.uiLocalizations$.next(localizationMap);\r\n }\r\n\r\n private listenToSetLanguage() {\r\n this.sessionState\r\n .onLanguageChange$()\r\n .pipe(\r\n filter(\r\n lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang,\r\n ),\r\n switchMap(lang => this.configState.refreshAppState().pipe(mapTo(lang))),\r\n switchMap(lang => from(this.registerLocale(lang).then(() => lang))),\r\n )\r\n .subscribe(lang => this._languageChange$.next(lang));\r\n }\r\n\r\n registerLocale(locale: string) {\r\n const { registerLocaleFn }: ABP.Root = this.injector.get(CORE_OPTIONS);\r\n\r\n return registerLocaleFn(locale).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n this.latestLang = locale;\r\n });\r\n }\r\n\r\n /**\r\n * Returns an observable localized text with the given interpolation parameters in current language.\r\n * @param key Localizaton key to replace with localized text\r\n * @param interpolateParams Values to interpolate\r\n */\r\n get(key: string | LocalizationWithDefault, ...interpolateParams: string[]): Observable<string> {\r\n return this.configState\r\n .getAll$()\r\n .pipe(map(state => this.getLocalization(state, key, ...interpolateParams)));\r\n }\r\n\r\n getResource(resourceName: string) {\r\n return this.localizations$.value.get(resourceName);\r\n }\r\n\r\n getResource$(resourceName: string) {\r\n return this.localizations$.pipe(map(res => res.get(resourceName)));\r\n }\r\n\r\n /**\r\n * Returns localized text with the given interpolation parameters in current language.\r\n * @param key Localization key to replace with localized text\r\n * @param interpolateParams Values to intepolate.\r\n */\r\n instant(key: string | LocalizationWithDefault, ...interpolateParams: string[]): string {\r\n return this.getLocalization(this.configState.getAll(), key, ...interpolateParams);\r\n }\r\n\r\n localize(resourceName: string, key: string, defaultValue: string): Observable<string> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizer),\r\n map(localize => localize(resourceName, key, defaultValue)),\r\n );\r\n }\r\n\r\n localizeSync(resourceName: string, key: string, defaultValue: string): string {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizer(localization)(resourceName, key, defaultValue);\r\n }\r\n\r\n localizeWithFallback(\r\n resourceNames: string[],\r\n keys: string[],\r\n defaultValue: string,\r\n ): Observable<string> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizerWithFallback),\r\n map(localizeWithFallback => localizeWithFallback(resourceNames, keys, defaultValue)),\r\n );\r\n }\r\n\r\n localizeWithFallbackSync(resourceNames: string[], keys: string[], defaultValue: string): string {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);\r\n }\r\n\r\n private getLocalization(\r\n state: ApplicationConfigurationDto,\r\n key: string | LocalizationWithDefault,\r\n ...interpolateParams: string[]\r\n ) {\r\n if (!key) key = '';\r\n let defaultValue: string;\r\n\r\n if (typeof key !== 'string') {\r\n defaultValue = key.defaultValue;\r\n key = key.key;\r\n }\r\n\r\n const keys = key.split('::') as string[];\r\n const warn = (message: string) => {\r\n if (isDevMode) console.warn(message);\r\n };\r\n\r\n if (keys.length < 2) {\r\n warn('The localization source separator (::) not found.');\r\n return defaultValue || (key as string);\r\n }\r\n if (!state.localization) return defaultValue || keys[1];\r\n\r\n const sourceName = keys[0] || state.localization.defaultResourceName;\r\n const sourceKey = keys[1];\r\n\r\n if (sourceName === '_') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n if (!sourceName) {\r\n warn(\r\n 'Localization source name is not specified and the defaultResourceName was not defined!',\r\n );\r\n\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n const source = this.localizations$.value.get(sourceName);\r\n if (!source) {\r\n warn('Could not find localization source: ' + sourceName);\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n let localization = source[sourceKey];\r\n if (typeof localization === 'undefined') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n interpolateParams = interpolateParams.filter(params => params != null);\r\n if (localization) localization = interpolate(localization, interpolateParams);\r\n\r\n if (typeof localization !== 'string') localization = '';\r\n\r\n return localization || defaultValue || (key as string);\r\n }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { PRIMARY_OUTLET, Router, UrlSegmentGroup } from '@angular/router';\r\nimport { ABP } from '../models/common';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { noop } from './common-utils';\r\nimport { TreeNode } from './tree-utils';\r\n\r\nexport function findRoute(routesService: RoutesService, path: string): TreeNode<ABP.Route> {\r\n const node = routesService.find(route => route.path === path);\r\n\r\n return node || path === '/'\r\n ? node\r\n : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');\r\n}\r\n\r\nexport function getRoutePath(router: Router, url = router.url) {\r\n const emptyGroup = { segments: [] } as UrlSegmentGroup;\r\n const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];\r\n\r\n return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');\r\n}\r\n\r\nexport function reloadRoute(router: Router, ngZone: NgZone) {\r\n const { shouldReuseRoute } = router.routeReuseStrategy;\r\n const setRouteReuse = (reuse: typeof shouldReuseRoute) => {\r\n router.routeReuseStrategy.shouldReuseRoute = reuse;\r\n };\r\n\r\n setRouteReuse(() => false);\r\n router.navigated = false;\r\n\r\n ngZone.run(async () => {\r\n await router.navigateByUrl(router.url).catch(noop);\r\n setRouteReuse(shouldReuseRoute);\r\n });\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { reloadRoute } from '../utils/route-utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReplaceableComponentsService {\r\n private readonly store: InternalStore<ReplaceableComponents.ReplaceableComponent[]>;\r\n\r\n get replaceableComponents$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n get replaceableComponents(): ReplaceableComponents.ReplaceableComponent[] {\r\n return this.store.state;\r\n }\r\n\r\n get onUpdate$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceUpdate(state => state);\r\n }\r\n\r\n constructor(private ngZone: NgZone, private router: Router) {\r\n this.store = new InternalStore([]);\r\n }\r\n\r\n add(replaceableComponent: ReplaceableComponents.ReplaceableComponent, reload?: boolean): void {\r\n const replaceableComponents = [...this.store.state];\r\n\r\n const index = replaceableComponents.findIndex(\r\n component => component.key === replaceableComponent.key,\r\n );\r\n\r\n if (index > -1) {\r\n replaceableComponents[index] = replaceableComponent;\r\n } else {\r\n replaceableComponents.push(replaceableComponent);\r\n }\r\n\r\n this.store.set(replaceableComponents);\r\n\r\n if (reload) reloadRoute(this.router, this.ngZone);\r\n }\r\n\r\n get(replaceableComponentKey: string): ReplaceableComponents.ReplaceableComponent {\r\n return this.replaceableComponents.find(component => component.key === replaceableComponentKey);\r\n }\r\n\r\n get$(replaceableComponentKey: string): Observable<ReplaceableComponents.ReplaceableComponent> {\r\n return this.replaceableComponents$.pipe(\r\n map(components => components.find(component => component.key === replaceableComponentKey)),\r\n );\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\nimport {\r\n NavigationCancel,\r\n NavigationEnd,\r\n NavigationError,\r\n NavigationStart,\r\n Router,\r\n RouterEvent,\r\n} from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport const NavigationEvent = {\r\n Cancel: NavigationCancel,\r\n End: NavigationEnd,\r\n Error: NavigationError,\r\n Start: NavigationStart,\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouterEvents {\r\n constructor(private router: Router) {}\r\n\r\n getEvents<T extends RouterEventConstructors>(...eventTypes: T) {\r\n type FilteredRouterEvent = T extends Type<infer Ctor>[] ? Ctor : never;\r\n\r\n const filterRouterEvents = (event: RouterEvent): event is FilteredRouterEvent =>\r\n eventTypes.some(type => event instanceof type);\r\n\r\n return this.router.events.pipe(filter(filterRouterEvents));\r\n }\r\n\r\n getNavigationEvents<T extends NavigationEventKeys>(...navigationEventKeys: T) {\r\n type FilteredNavigationEvent = T extends (infer Key)[]\r\n ? Key extends NavigationEventKey\r\n ? InstanceType<NavigationEventType[Key]>\r\n : never\r\n : never;\r\n\r\n const filterNavigationEvents = (event: RouterEvent): event is FilteredNavigationEvent =>\r\n navigationEventKeys.some(key => event instanceof NavigationEvent[key]);\r\n\r\n return this.router.events.pipe(filter(filterNavigationEvents));\r\n }\r\n\r\n getAllEvents() {\r\n return this.router.events;\r\n }\r\n\r\n getAllNavigationEvents() {\r\n const keys = Object.keys(NavigationEvent) as NavigationEventKeys;\r\n return this.getNavigationEvents(...keys);\r\n }\r\n}\r\n\r\ntype RouterEventConstructors = [Type<RouterEvent>, ...Type<RouterEvent>[]];\r\n\r\ntype NavigationEventKeys = [NavigationEventKey, ...NavigationEventKey[]];\r\n\r\ntype NavigationEventType = typeof NavigationEvent;\r\n\r\nexport type NavigationEventKey = keyof NavigationEventType;\r\n","export function pushValueTo<T>(array: T[]) {\r\n return (element: T) => {\r\n array.push(element);\r\n return array;\r\n };\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nexport class BaseTreeNode<T extends object> {\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n parent?: TreeNode<T>;\r\n\r\n constructor(props: T) {\r\n Object.assign(this, props);\r\n }\r\n\r\n static create<T extends object>(props: T) {\r\n return new BaseTreeNode<T>(props) as TreeNode<T>;\r\n }\r\n}\r\n\r\nexport function createTreeFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n parentKeySelector: typeof keySelector,\r\n valueMapper: (item: T) => R,\r\n) {\r\n const map = createMapFromList(list, keySelector, valueMapper);\r\n const tree: NodeValue<T, typeof valueMapper>[] = [];\r\n\r\n list.forEach(row => {\r\n const id = keySelector(row);\r\n const parentId = parentKeySelector(row);\r\n const node = map.get(id);\r\n\r\n if (!node) return;\r\n\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n (parent as any).children.push(node);\r\n (parent as any).isLeaf = false;\r\n (node as any).parent = parent;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n\r\n return tree;\r\n}\r\n\r\nexport function createMapFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n valueMapper: (item: T) => R,\r\n) {\r\n type Key = ReturnType<typeof keySelector>;\r\n type Value = NodeValue<T, typeof valueMapper>;\r\n const map = new Map<Key, Value>();\r\n list.forEach(row => map.set(keySelector(row), valueMapper(row)));\r\n return map;\r\n}\r\n\r\nexport function createTreeNodeFilterCreator<T extends object>(\r\n key: keyof T,\r\n mapperFn: (value: any) => string,\r\n) {\r\n return (search: string) => {\r\n const regex = new RegExp('.*' + search + '.*', 'i');\r\n\r\n return function collectNodes(nodes: TreeNode<T>[], matches = []) {\r\n for (const node of nodes) {\r\n if (regex.test(mapperFn(node[key]))) matches.push(node);\r\n\r\n if (node.children.length) collectNodes(node.children, matches);\r\n }\r\n\r\n return matches;\r\n };\r\n };\r\n}\r\n\r\nexport type TreeNode<T extends object> = {\r\n [K in keyof T]: T[K];\r\n} & {\r\n children: TreeNode<T>[];\r\n isLeaf: boolean;\r\n parent?: TreeNode<T>;\r\n};\r\n\r\ntype NodeKey = number | string | symbol | undefined | null;\r\n\r\ntype NodeValue<T extends object, F extends (...args: any) => any> = F extends undefined\r\n ? TreeNode<T>\r\n : ReturnType<F>;\r\n","import { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionService {\r\n constructor(protected configState: ConfigStateService) {}\r\n\r\n getGrantedPolicy$(key: string) {\r\n return this.getStream().pipe(\r\n map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)),\r\n );\r\n }\r\n\r\n getGrantedPolicy(key: string) {\r\n const policies = this.getSnapshot();\r\n return this.isPolicyGranted(key, policies);\r\n }\r\n\r\n filterItemsByPolicy<T extends ABP.HasPolicy>(items: Array<T>) {\r\n const policies = this.getSnapshot();\r\n return items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n );\r\n }\r\n\r\n filterItemsByPolicy$<T extends ABP.HasPolicy>(items: Array<T>) {\r\n return this.getStream().pipe(\r\n map(policies =>\r\n items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n protected isPolicyGranted(key: string, grantedPolicies: Record<string, boolean>) {\r\n if (!key) return true;\r\n\r\n const orRegexp = /\\|\\|/g;\r\n const andRegexp = /&&/g;\r\n\r\n // TODO: Allow combination of ANDs & ORs\r\n if (orRegexp.test(key)) {\r\n const keys = key.split('||').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.some(k => this.getPolicy(k.trim(), grantedPolicies));\r\n } else if (andRegexp.test(key)) {\r\n const keys = key.split('&&').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.every(k => this.getPolicy(k.trim(), grantedPolicies));\r\n }\r\n\r\n return this.getPolicy(key, grantedPolicies);\r\n }\r\n\r\n protected getStream() {\r\n return this.configState.getAll$().pipe(map(this.mapToPolicies));\r\n }\r\n\r\n protected getSnapshot() {\r\n return this.mapToPolicies(this.configState.getAll());\r\n }\r\n\r\n protected mapToPolicies(applicationConfiguration: ApplicationConfigurationDto) {\r\n return applicationConfiguration?.auth?.grantedPolicies || {};\r\n }\r\n\r\n protected getPolicy(key: string, grantedPolicies: Record<string, boolean>) {\r\n return grantedPolicies[key] || false;\r\n }\r\n}\r\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { pushValueTo } from '../utils/array-utils';\r\nimport { BaseTreeNode, createTreeFromList, TreeNode } from '../utils/tree-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { PermissionService } from './permission.service';\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport abstract class AbstractTreeService<T extends object> {\r\n abstract id: string;\r\n abstract parentId: string;\r\n abstract hide: (item: T) => boolean;\r\n abstract sort: (a: T, b: T) => number;\r\n\r\n private _flat$ = new BehaviorSubject<T[]>([]);\r\n private _tree$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n private _visible$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n\r\n get flat(): T[] {\r\n return this._flat$.value;\r\n }\r\n\r\n get flat$(): Observable<T[]> {\r\n return this._flat$.asObservable();\r\n }\r\n\r\n get tree(): TreeNode<T>[] {\r\n return this._tree$.value;\r\n }\r\n\r\n get tree$(): Observable<TreeNode<T>[]> {\r\n return this._tree$.asObservable();\r\n }\r\n\r\n get visible(): TreeNode<T>[] {\r\n return this._visible$.value;\r\n }\r\n\r\n get visible$(): Observable<TreeNode<T>[]> {\r\n return this._visible$.asObservable();\r\n }\r\n\r\n protected createTree(items: T[]): TreeNode<T>[] {\r\n return createTreeFromList<T, TreeNode<T>>(\r\n items,\r\n item => item[this.id],\r\n item => item[this.parentId],\r\n item => BaseTreeNode.create(item),\r\n );\r\n }\r\n\r\n private filterWith(setOrMap: Set<string> | Map<string, T>): T[] {\r\n return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));\r\n }\r\n\r\n private findItemsToRemove(set: Set<string>): Set<string> {\r\n return this._flat$.value.reduce((acc, item) => {\r\n if (!acc.has(item[this.parentId])) return acc;\r\n const childSet = new Set([item[this.id]]);\r\n const children = this.findItemsToRemove(childSet);\r\n return new Set([...acc, ...children]);\r\n }, set);\r\n }\r\n\r\n private publish(flatItems: T[], visibleItems: T[]): T[] {\r\n this._flat$.next(flatItems);\r\n this._tree$.next(this.createTree(flatItems));\r\n this._visible$.next(this.createTree(visibleItems));\r\n return flatItems;\r\n }\r\n\r\n add(items: T[]): T[] {\r\n const map = new Map<string, T>();\r\n items.forEach(item => map.set(item[this.id], item));\r\n\r\n const flatItems = this.filterWith(map);\r\n map.forEach(pushValueTo(flatItems));\r\n\r\n flatItems.sort(this.sort);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n find(predicate: (item: TreeNode<T>) => boolean, tree = this.tree): TreeNode<T> | null {\r\n return tree.reduce(\r\n (acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)),\r\n null,\r\n );\r\n }\r\n\r\n patch(identifier: string, props: Partial<T>): T[] | false {\r\n const flatItems = this._flat$.value;\r\n const index = flatItems.findIndex(item => item[this.id] === identifier);\r\n if (index < 0) return false;\r\n\r\n flatItems[index] = { ...flatItems[index], ...props };\r\n\r\n flatItems.sort(this.sort);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n refresh(): T[] {\r\n return this.add([]);\r\n }\r\n\r\n remove(identifiers: string[]): T[] {\r\n const set = new Set<string>();\r\n identifiers.forEach(id => set.add(id));\r\n\r\n const setToRemove = this.findItemsToRemove(set);\r\n const flatItems = this.filterWith(setToRemove);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n search(params: Partial<T>, tree = this.tree): TreeNode<T> | null {\r\n const searchKeys = Object.keys(params);\r\n\r\n return tree.reduce(\r\n (acc, node) =>\r\n acc\r\n ? acc\r\n : searchKeys.every(key => node[key] === params[key])\r\n ? node\r\n : this.search(params, node.children),\r\n null,\r\n );\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport abstract class AbstractNavTreeService<T extends ABP.Nav>\r\n extends AbstractTreeService<T>\r\n implements OnDestroy\r\n{\r\n private subscription: Subscription;\r\n private permissionService: PermissionService;\r\n readonly id = 'name';\r\n readonly parentId = 'parentName';\r\n readonly hide = (item: T) => item.invisible || !this.isGranted(item);\r\n readonly sort = (a: T, b: T) => {\r\n if (!Number.isInteger(a.order)) return 1;\r\n if (!Number.isInteger(b.order)) return -1;\r\n\r\n return a.order - b.order;\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n super();\r\n const configState = this.injector.get(ConfigStateService);\r\n this.subscription = configState\r\n .createOnUpdateStream(state => state)\r\n .subscribe(() => this.refresh());\r\n this.permissionService = injector.get(PermissionService);\r\n }\r\n\r\n protected isGranted({ requiredPolicy }: T): boolean {\r\n return this.permissionService.getGrantedPolicy(requiredPolicy);\r\n }\r\n\r\n hasChildren(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return Boolean(node?.children?.length);\r\n }\r\n\r\n hasInvisibleChild(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return node?.children?.some(child => child.invisible);\r\n }\r\n\r\n /* istanbul ignore next */\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RoutesService extends AbstractNavTreeService<ABP.Route> {}\r\n","import { Injectable } from '@angular/core';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport type { Observable, PartialObserver } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class SubscriptionService implements OnDestroy {\r\n private subscription = new Subscription();\r\n\r\n get isClosed() {\r\n return this.subscription.closed;\r\n }\r\n\r\n addOne<T>(\r\n source$: Observable<T>,\r\n next?: (value: T) => void,\r\n error?: (error: any) => void,\r\n ): Subscription;\r\n addOne<T>(source$: Observable<T>, observer?: PartialObserver<T>): Subscription;\r\n addOne<T>(\r\n source$: Observable<T>,\r\n nextOrObserver?: PartialObserver<T> | Next<T>,\r\n error?: (error: any) => void,\r\n ): Subscription {\r\n const subscription = source$.subscribe(nextOrObserver as Next<T>, error);\r\n this.subscription.add(subscription);\r\n return subscription;\r\n }\r\n\r\n closeAll() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n closeOne(subscription: Subscription | undefined | null) {\r\n this.removeOne(subscription);\r\n subscription.unsubscribe();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n removeOne(subscription: Subscription | undefined | null) {\r\n if (!subscription) return;\r\n this.subscription.remove(subscription);\r\n }\r\n\r\n reset() {\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n }\r\n}\r\n\r\ntype Next<T> = (value: T) => void;\r\n","import { Component, Injector, isDevMode, Optional, SkipSelf, Type } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { eLayoutType } from '../enums/common';\r\nimport { ABP } from '../models';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { LocalizationService } from '../services/localization.service';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { RouterEvents } from '../services/router-events.service';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\nimport { TreeNode } from '../utils/tree-utils';\r\n\r\n@Component({\r\n selector: 'abp-dynamic-layout',\r\n template: ` <ng-container *ngIf=\"isLayoutVisible\" [ngComponentOutlet]=\"layout\"></ng-container> `,\r\n providers: [SubscriptionService],\r\n})\r\nexport class DynamicLayoutComponent {\r\n layout: Type<any>;\r\n layoutKey: eLayoutType;\r\n\r\n // TODO: Consider a shared enum (eThemeSharedComponents) for known layouts\r\n readonly layouts = new Map([\r\n ['application', 'Theme.ApplicationLayoutComponent'],\r\n ['account', 'Theme.AccountLayoutComponent'],\r\n ['empty', 'Theme.EmptyLayoutComponent'],\r\n ]);\r\n\r\n isLayoutVisible = true;\r\n\r\n private router: Router;\r\n private route: ActivatedRoute;\r\n private routes: RoutesService;\r\n\r\n constructor(\r\n injector: Injector,\r\n private localizationService: LocalizationService,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n private routerEvents: RouterEvents,\r\n @Optional() @SkipSelf() dynamicLayoutComponent: DynamicLayoutComponent,\r\n ) {\r\n if (dynamicLayoutComponent) {\r\n if (isDevMode) console.warn('DynamicLayoutComponent must be used only in AppComponent.');\r\n return;\r\n }\r\n this.route = injector.get(ActivatedRoute);\r\n this.router = injector.get(Router);\r\n this.routes = injector.get(RoutesService);\r\n\r\n this.checkLayoutOnNavigationEnd();\r\n this.listenToLanguageChange();\r\n }\r\n\r\n private checkLayoutOnNavigationEnd() {\r\n const navigationEnd$ = this.routerEvents.getNavigationEvents('End');\r\n this.subscription.addOne(navigationEnd$, () => this.getLayout());\r\n }\r\n\r\n private getLayout() {\r\n let expectedLayout = (this.route.snapshot.data || {}).layout;\r\n\r\n if (!expectedLayout) {\r\n let node = findRoute(this.routes, getRoutePath(this.router));\r\n node = { parent: node } as TreeNode<ABP.Route>;\r\n\r\n while (node.parent) {\r\n node = node.parent;\r\n\r\n if (node.layout) {\r\n expectedLayout = node.layout;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!expectedLayout) expectedLayout = eLayoutType.empty;\r\n\r\n if (this.layoutKey === expectedLayout) return;\r\n\r\n const key = this.layouts.get(expectedLayout);\r\n this.layout = this.getComponent(key)?.component;\r\n this.layoutKey = expectedLayout;\r\n }\r\n\r\n private listenToLanguageChange() {\r\n this.subscription.addOne(this.localizationService.languageChange$, () => {\r\n this.isLayoutVisible = false;\r\n setTimeout(() => (this.isLayoutVisible = true), 0);\r\n });\r\n }\r\n\r\n private getComponent(key: string): ReplaceableComponents.ReplaceableComponent {\r\n return this.replaceableComponents.get(key);\r\n }\r\n}\r\n","import { Component, OnInit, Type } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Component({\r\n selector: 'abp-replaceable-route-container',\r\n template: `\r\n <ng-container *ngComponentOutlet=\"externalComponent || defaultComponent\"></ng-container>\r\n `,\r\n providers: [SubscriptionService],\r\n})\r\nexport class ReplaceableRouteContainerComponent implements OnInit {\r\n defaultComponent: Type<any>;\r\n\r\n componentKey: string;\r\n\r\n externalComponent: Type<any>;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;\r\n this.componentKey = (\r\n this.route.snapshot.data.replaceableComponent as ReplaceableComponents.RouteData\r\n ).key;\r\n\r\n const component$ = this.replaceableComponents\r\n .get$(this.componentKey)\r\n .pipe(distinctUntilChanged());\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.externalComponent = res.component;\r\n },\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'abp-router-outlet',\r\n template: ` <router-outlet></router-outlet> `,\r\n})\r\nexport class RouterOutletComponent {}\r\n","// Different locales from .NET\r\n// Key is .NET locale, value is Angular locale\r\n\r\nexport const differentLocales = {\r\n aa: 'en',\r\n 'aa-DJ': 'en',\r\n 'aa-ER': 'en',\r\n 'aa-ET': 'en',\r\n 'af-ZA': 'af',\r\n 'agq-CM': 'agq',\r\n 'ak-GH': 'ak',\r\n 'am-ET': 'am',\r\n 'ar-001': 'ar',\r\n arn: 'en',\r\n 'arn-CL': 'en',\r\n 'as-IN': 'as',\r\n 'asa-TZ': 'asa',\r\n 'ast-ES': 'ast',\r\n 'az-Cyrl-AZ': 'az-Cyrl',\r\n 'az-Latn-AZ': 'az-Latn',\r\n ba: 'ru',\r\n 'ba-RU': 'ru',\r\n 'bas-CM': 'bas',\r\n 'be-BY': 'be',\r\n 'bem-ZM': 'bem',\r\n 'bez-TZ': 'bez',\r\n 'bg-BG': 'bg',\r\n bin: 'en',\r\n 'bin-NG': 'en',\r\n 'bm-Latn': 'bm',\r\n 'bm-Latn-ML': 'bm',\r\n 'bn-BD': 'bn',\r\n 'bo-CN': 'bo',\r\n 'br-FR': 'br',\r\n 'brx-IN': 'brx',\r\n 'bs-Cyrl-BA': 'bs-Cyrl',\r\n 'bs-Latn-BA': 'bs-Latn',\r\n byn: 'en',\r\n 'byn-ER': 'en',\r\n 'ca-ES': 'ca',\r\n 'ca-ES-valencia': 'ca-ES-VALENCIA',\r\n 'ce-RU': 'ce',\r\n 'cgg-UG': 'cgg',\r\n 'chr-Cher': 'chr',\r\n 'chr-Cher-US': 'chr',\r\n co: 'en',\r\n 'co-FR': 'fr',\r\n 'cs-CZ': 'cs',\r\n 'cu-RU': 'cu',\r\n 'cy-GB': 'cy',\r\n 'da-DK': 'da',\r\n 'dav-KE': 'dav',\r\n 'de-DE': 'de',\r\n 'dje-NE': 'dje',\r\n 'dsb-DE': 'dsb',\r\n 'dua-CM': 'dua',\r\n dv: 'en',\r\n 'dv-MV': 'en',\r\n 'dyo-SN': 'dyo',\r\n 'dz-BT': 'dz',\r\n 'ebu-KE': 'ebu',\r\n 'ee-GH': 'ee',\r\n 'el-GR': 'el',\r\n 'en-029': 'en',\r\n 'en-ID': 'en',\r\n 'en-US': 'en',\r\n 'eo-001': 'en',\r\n 'es-ES': 'es',\r\n 'et-EE': 'et',\r\n 'eu-ES': 'eu',\r\n 'ewo-CM': 'ewo',\r\n 'fa-IR': 'fa',\r\n 'ff-Latn-SN': 'ff-Latn',\r\n 'ff-NG': 'ff',\r\n 'fi-FI': 'fi',\r\n 'fil-PH': 'fil',\r\n 'fo-FO': 'fo',\r\n 'fr-029': 'fr',\r\n 'fr-FR': 'fr',\r\n 'fur-IT': 'fur',\r\n 'fy-NL': 'fy',\r\n 'ga-IE': 'ga',\r\n 'gd-GB': 'gd',\r\n 'gl-ES': 'gl',\r\n gn: 'en',\r\n 'gn-PY': 'en',\r\n 'gsw-CH': 'gsw',\r\n 'gu-IN': 'gu',\r\n 'guz-KE': 'guz',\r\n 'gv-IM': 'gv',\r\n 'ha-Latn': 'ha',\r\n 'ha-Latn-GH': 'ha-GH',\r\n 'ha-Latn-NE': 'ha-NE',\r\n 'ha-Latn-NG': 'ha',\r\n 'haw-US': 'haw',\r\n 'he-IL': 'he',\r\n 'hi-IN': 'hi',\r\n 'hr-HR': 'hr',\r\n 'hsb-DE': 'hsb',\r\n 'hu-HU': 'hu',\r\n 'hy-AM': 'hy',\r\n 'ia-001': 'ia',\r\n 'ia-FR': 'ia',\r\n ibb: 'en',\r\n 'ibb-NG': 'en',\r\n 'id-ID': 'id',\r\n 'ig-NG': 'ig',\r\n 'ii-CN': 'ii',\r\n 'is-IS': 'is',\r\n 'it-IT': 'it',\r\n iu: 'en',\r\n 'iu-Cans': 'en',\r\n 'iu-Cans-CA': 'en',\r\n 'iu-Latn': 'en',\r\n 'iu-Latn-CA': 'en',\r\n 'ja-JP': 'ja',\r\n 'jgo-CM': 'jgo',\r\n 'jmc-TZ': 'jmc',\r\n 'jv-Java': 'jv',\r\n 'jv-Java-ID': 'jv',\r\n 'jv-Latn': 'jv',\r\n 'jv-Latn-ID': 'jv',\r\n 'ka-GE': 'ka',\r\n 'kab-DZ': 'kab',\r\n 'kam-KE': 'kam',\r\n 'kde-TZ': 'kde',\r\n 'kea-CV': 'kea',\r\n 'khq-ML': 'khq',\r\n 'ki-KE': 'ki',\r\n 'kk-KZ': 'kk',\r\n 'kkj-CM': 'kkj',\r\n 'kl-GL': 'kl',\r\n 'kln-KE': 'kln',\r\n 'km-KH': 'km',\r\n 'kn-IN': 'kn',\r\n 'ko-KR': 'ko',\r\n 'kok-IN': 'kok',\r\n kr: 'en',\r\n 'kr-NG': 'en',\r\n 'ks-Arab': 'ks',\r\n 'ks-Arab-IN': 'ks',\r\n 'ks-Deva': 'ks',\r\n 'ks-Deva-IN': 'ks',\r\n 'ksb-TZ': 'ksb',\r\n 'ksf-CM': 'ksf',\r\n 'ksh-DE': 'ksh',\r\n 'ku-Arab': 'ku',\r\n 'ku-Arab-IQ': 'ku',\r\n 'ku-Arab-IR': 'ku',\r\n 'kw-GB': 'kw',\r\n 'ky-KG': 'ky',\r\n la: 'en',\r\n 'la-001': 'en',\r\n 'lag-TZ': 'lag',\r\n 'lb-LU': 'lb',\r\n 'lg-UG': 'lg',\r\n 'lkt-US': 'lkt',\r\n 'ln-CD': 'ln',\r\n 'lo-LA': 'lo',\r\n 'lrc-IR': 'lrc',\r\n 'lt-LT': 'lt',\r\n 'lu-CD': 'lu',\r\n 'luo-KE': 'luo',\r\n 'luy-KE': 'luy',\r\n 'lv-LV': 'lv',\r\n 'mas-KE': 'mas',\r\n 'mer-KE': 'mer',\r\n 'mfe-MU': 'mfe',\r\n 'mg-MG': 'mg',\r\n 'mgh-MZ': 'mgh',\r\n 'mgo-CM': 'mgo',\r\n 'mi-NZ': 'mi',\r\n 'mk-MK': 'mk',\r\n 'ml-IN': 'ml',\r\n 'mn-Cyrl': 'mn',\r\n 'mn-MN': 'mn',\r\n 'mn-Mong': 'mn',\r\n 'mn-Mong-CN': 'mn',\r\n 'mn-Mong-MN': 'mn',\r\n mni: 'en',\r\n 'mni-IN': 'en',\r\n moh: 'en',\r\n 'moh-CA': 'en',\r\n 'mr-IN': 'mr',\r\n 'ms-MY': 'ms',\r\n 'mt-MT': 'mt',\r\n 'mua-CM': 'mua',\r\n 'my-MM': 'my',\r\n 'mzn-IR': 'mzn',\r\n 'naq-NA': 'naq',\r\n 'nb-NO': 'nb',\r\n\r\n 'nd-ZW': 'nd',\r\n 'ne-NP': 'ne',\r\n 'nl-NL': 'nl',\r\n 'nmg-CM': 'ngm',\r\n 'nn-NO': 'nn',\r\n 'nnh-CM': 'nnh',\r\n no: 'en',\r\n nqo: 'en',\r\n 'nqo-GN': 'en',\r\n nr: 'en',\r\n 'nr-ZA': 'en',\r\n nso: 'en',\r\n 'nso-ZA': 'en',\r\n 'nus-SS': 'nus',\r\n 'nyn-UG': 'nyn',\r\n oc: 'en',\r\n 'oc-FR': 'fr',\r\n 'om-ET': 'om',\r\n 'or-IN': 'or',\r\n 'os-GE': 'os',\r\n 'pa-Arab-PK': 'pa-Arab',\r\n 'pa-IN': 'pa',\r\n pap: 'en',\r\n 'pap-029': 'en',\r\n 'pl-PL': 'pl',\r\n 'prg-001': 'prg',\r\n prs: 'en',\r\n 'prs-AF': 'en',\r\n 'ps-AF': 'ps',\r\n 'pt-BR': 'pt',\r\n quc: 'en',\r\n 'quc-Latn': 'en',\r\n 'quc-Latn-GT': 'en',\r\n quz: 'en',\r\n 'quz-BO': 'en',\r\n 'quz-EC': 'en',\r\n 'quz-PE': 'en',\r\n 'rm-CH': 'rm',\r\n 'rn-BI': 'rn',\r\n 'ro-RO': 'ro',\r\n 'rof-TZ': 'rof',\r\n 'ru-RU': 'ru',\r\n 'rw-RW': 'rw',\r\n 'rwk-TZ': 'rwk',\r\n sa: 'en',\r\n 'sa-IN': 'en',\r\n 'sah-RU': 'sah',\r\n 'saq-KE': 'saq',\r\n 'sbp-TZ': 'en',\r\n 'sd-Arab': 'sd',\r\n 'sd-Arab-PK': 'sd',\r\n 'sd-Deva': 'sd',\r\n 'sd-Deva-IN': 'sd',\r\n 'se-NO': 'se',\r\n 'seh-MZ': 'seh',\r\n 'ses-ML': 'ses',\r\n 'sg-CF': 'sg',\r\n 'shi-Latn-MA': 'shi-Latn',\r\n 'shi-Tfng-MA': 'shi-Tfng',\r\n 'si-LK': 'si',\r\n 'sk-SK': 'sk',\r\n 'sl-SI': 'sl',\r\n sma: 'en',\r\n 'sma-NO': 'en',\r\n 'sma-SE': 'en',\r\n smj: 'en',\r\n 'smj-NO': 'en',\r\n 'smj-SE': 'en',\r\n 'smn-FI': 'en',\r\n sms: 'en',\r\n 'sms-FI': 'en',\r\n 'sn-Latn': 'sn',\r\n 'sn-Latn-ZW': 'sn',\r\n 'so-SO': 'so',\r\n 'sq-AL': 'so',\r\n 'sr-Cyrl-RS': 'sr-Cryl',\r\n 'sr-Latn-RS': 'sr-Latn',\r\n ss: 'en',\r\n 'ss-SZ': 'en',\r\n 'ss-ZA': 'en',\r\n ssy: 'en',\r\n 'ssy-ER': 'en',\r\n st: 'en',\r\n 'st-LS': 'en',\r\n 'st-ZA': 'en',\r\n 'sv-SE': 'sv',\r\n 'sw-TZ': 'sw',\r\n syr: 'en',\r\n 'syr-SY': 'en',\r\n 'ta-IN': 'ta',\r\n 'te-IN': 'te',\r\n 'teo-UG': 'teo',\r\n 'tg-Cyrl': 'tg',\r\n 'tg-Cyrl-TJ': 'tg',\r\n 'th-TH': 'th',\r\n 'ti-ET': 'ti',\r\n tig: 'en',\r\n 'tig-ER': 'en',\r\n 'tk-TM': 'tk',\r\n tn: 'en',\r\n 'tn-BW': 'en',\r\n 'tn-ZA': 'en',\r\n 'to-TO': 'to',\r\n 'tr-TR': 'tr',\r\n ts: 'en',\r\n 'ts-ZA': 'en',\r\n 'tt-RU': 'tt',\r\n 'twq-NE': 'twq',\r\n 'tzm-Arab': 'tzm',\r\n 'tzm-Arab-MA': 'tzm',\r\n 'tzm-Latn': 'tzm',\r\n 'tzm-Latn-DZ': 'tzm',\r\n 'tzm-Latn-MA': 'tzm',\r\n 'tzm-Tfng': 'tzm',\r\n 'tzm-Tfng-MA': 'tzm',\r\n 'ug-CN': 'ug',\r\n 'uk-UA': 'uk',\r\n 'ur-PK': 'ur',\r\n 'uz-Arab-AF': 'uz-Arab',\r\n 'uz-Cyrl-UZ': 'uz-Cyrl',\r\n 'uz-Latn-UZ': 'uz-Latn',\r\n 'vai-Latn-LR': 'vai-Latn',\r\n 'vai-Vaii-LR': 'vai-Vaii',\r\n ve: 'en',\r\n 've-ZA': 'en',\r\n 'vi-VN': 'vi',\r\n 'vo-001': 'vo',\r\n 'vun-TZ': 'vun',\r\n 'wae-CH': 'wae',\r\n wal: 'en',\r\n 'wal-ET': 'en',\r\n 'wo-SN': 'wo',\r\n 'xh-ZA': 'xh',\r\n 'xog-UG': 'xog',\r\n 'yav-CM': 'yav',\r\n 'yi-001': 'yi',\r\n 'yo-NG': 'yo',\r\n 'zgh-Tfng': 'zgh',\r\n 'zgh-Tfng-MA': 'zgh',\r\n 'zh-CN': 'zh',\r\n 'zh-HK': 'zh',\r\n 'zh-MO': 'zh',\r\n 'zh-SG': 'zh',\r\n 'zh-TW': 'zh',\r\n 'zu-ZA': 'zu',\r\n};\r\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[autofocus]',\r\n})\r\nexport class AutofocusDirective implements AfterViewInit {\r\n private _delay = 0;\r\n\r\n @Input('autofocus')\r\n set delay(val: number | string | undefined) {\r\n this._delay = Number(val) || 0;\r\n }\r\n\r\n get delay() {\r\n return this._delay;\r\n }\r\n\r\n constructor(private elRef: ElementRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.elRef.nativeElement.focus(), this.delay as number);\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[input.debounce]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class InputEventDebounceDirective implements OnInit {\r\n @Input() debounce = 300;\r\n\r\n @Output('input.debounce') readonly debounceEvent = new EventEmitter<Event>();\r\n\r\n constructor(private el: ElementRef, private subscription: SubscriptionService) {}\r\n\r\n ngOnInit(): void {\r\n const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));\r\n\r\n this.subscription.addOne(input$, (event: Event) => {\r\n this.debounceEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n IterableChangeRecord,\r\n IterableChanges,\r\n IterableDiffer,\r\n IterableDiffers,\r\n OnChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport clone from 'just-clone';\r\nimport compare from 'just-compare';\r\n\r\nexport type CompareFn<T = any> = (value: T, comparison: T) => boolean;\r\n\r\nclass AbpForContext {\r\n constructor(\r\n public $implicit: any,\r\n public index: number,\r\n public count: number,\r\n public list: any[],\r\n ) {}\r\n}\r\n\r\nclass RecordView {\r\n constructor(\r\n public record: IterableChangeRecord<any>,\r\n public view: EmbeddedViewRef<AbpForContext>,\r\n ) {}\r\n}\r\n\r\n@Directive({\r\n selector: '[abpFor]',\r\n})\r\nexport class ForDirective implements OnChanges {\r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n @Input('abpForOf')\r\n items: any[];\r\n\r\n @Input('abpForOrderBy')\r\n orderBy: string;\r\n\r\n @Input('abpForOrderDir')\r\n orderDir: 'ASC' | 'DESC';\r\n\r\n @Input('abpForFilterBy')\r\n filterBy: string;\r\n\r\n @Input('abpForFilterVal')\r\n filterVal: any;\r\n\r\n @Input('abpForTrackBy')\r\n trackBy;\r\n\r\n @Input('abpForCompareBy')\r\n compareBy: CompareFn;\r\n\r\n @Input('abpForEmptyRef')\r\n emptyRef: TemplateRef<any>;\r\n\r\n private differ: IterableDiffer<any>;\r\n\r\n private isShowEmptyRef: boolean;\r\n\r\n get compareFn(): CompareFn {\r\n return this.compareBy || compare;\r\n }\r\n\r\n get trackByFn(): TrackByFunction<any> {\r\n return this.trackBy || ((index: number, item: any) => (item as any).id || index);\r\n }\r\n\r\n constructor(\r\n private tempRef: TemplateRef<AbpForContext>,\r\n private vcRef: ViewContainerRef,\r\n private differs: IterableDiffers,\r\n ) {}\r\n\r\n private iterateOverAppliedOperations(changes: IterableChanges<any>) {\r\n const rw: RecordView[] = [];\r\n\r\n changes.forEachOperation(\r\n (record: IterableChangeRecord<any>, previousIndex: number, currentIndex: number) => {\r\n if (record.previousIndex == null) {\r\n const view = this.vcRef.createEmbeddedView(\r\n this.tempRef,\r\n new AbpForContext(null, -1, -1, this.items),\r\n currentIndex,\r\n );\r\n\r\n rw.push(new RecordView(record, view));\r\n } else if (currentIndex == null) {\r\n this.vcRef.remove(previousIndex);\r\n } else {\r\n const view = this.vcRef.get(previousIndex);\r\n this.vcRef.move(view, currentIndex);\r\n\r\n rw.push(new RecordView(record, view as EmbeddedViewRef<AbpForContext>));\r\n }\r\n },\r\n );\r\n\r\n for (let i = 0, l = rw.length; i < l; i++) {\r\n rw[i].view.context.$implicit = rw[i].record.item;\r\n }\r\n }\r\n\r\n private iterateOverAttachedViews(changes: IterableChanges<any>) {\r\n for (let i = 0, l = this.vcRef.length; i < l; i++) {\r\n const viewRef = this.vcRef.get(i) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.index = i;\r\n viewRef.context.count = l;\r\n viewRef.context.list = this.items;\r\n }\r\n\r\n changes.forEachIdentityChange((record: IterableChangeRecord<any>) => {\r\n const viewRef = this.vcRef.get(record.currentIndex) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.$implicit = record.item;\r\n });\r\n }\r\n\r\n private projectItems(items: any[]): void {\r\n if (!items.length && this.emptyRef) {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;\r\n this.isShowEmptyRef = true;\r\n this.differ = null;\r\n\r\n return;\r\n }\r\n\r\n if (this.emptyRef && this.isShowEmptyRef) {\r\n this.vcRef.clear();\r\n this.isShowEmptyRef = false;\r\n }\r\n\r\n if (!this.differ && items) {\r\n this.differ = this.differs.find(items).create(this.trackByFn);\r\n }\r\n\r\n if (this.differ) {\r\n const changes = this.differ.diff(items);\r\n\r\n if (changes) {\r\n this.iterateOverAppliedOperations(changes);\r\n this.iterateOverAttachedViews(changes);\r\n }\r\n }\r\n }\r\n\r\n private sortItems(items: any[]) {\r\n if (this.orderBy) {\r\n items.sort((a, b) =>\r\n a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0,\r\n );\r\n } else {\r\n items.sort();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n let items = clone(this.items) as any[];\r\n if (!Array.isArray(items)) return;\r\n\r\n const compareFn = this.compareFn;\r\n\r\n if (\r\n typeof this.filterBy !== 'undefined' &&\r\n typeof this.filterVal !== 'undefined' &&\r\n this.filterVal !== ''\r\n ) {\r\n items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));\r\n }\r\n\r\n switch (this.orderDir) {\r\n case 'ASC':\r\n this.sortItems(items);\r\n this.projectItems(items);\r\n break;\r\n\r\n case 'DESC':\r\n this.sortItems(items);\r\n items.reverse();\r\n this.projectItems(items);\r\n break;\r\n\r\n default:\r\n this.projectItems(items);\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Self,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\ntype Controls = { [key: string]: FormControl } | FormGroup[];\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'form[ngSubmit][formGroup]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class FormSubmitDirective implements OnInit {\r\n @Input()\r\n debounce = 200;\r\n\r\n @Input()\r\n notValidateOnSubmit: string | boolean;\r\n\r\n @Output() readonly ngSubmit = new EventEmitter();\r\n\r\n executedNgSubmit = false;\r\n\r\n constructor(\r\n @Self() private formGroupDirective: FormGroupDirective,\r\n private host: ElementRef<HTMLFormElement>,\r\n private cdRef: ChangeDetectorRef,\r\n private subscription: SubscriptionService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {\r\n this.markAsDirty();\r\n this.executedNgSubmit = true;\r\n });\r\n\r\n const keyup$ = fromEvent(this.host.nativeElement as HTMLElement, 'keyup').pipe(\r\n debounceTime(this.debounce),\r\n filter(event => !(event.target instanceof HTMLTextAreaElement)),\r\n filter((event: KeyboardEvent) => event && event.key === 'Enter'),\r\n );\r\n\r\n this.subscription.addOne(keyup$, () => {\r\n if (!this.executedNgSubmit) {\r\n this.host.nativeElement.dispatchEvent(\r\n new Event('submit', { bubbles: true, cancelable: true }),\r\n );\r\n }\r\n\r\n this.executedNgSubmit = false;\r\n });\r\n }\r\n\r\n markAsDirty() {\r\n const { form } = this.formGroupDirective;\r\n\r\n setDirty(form.controls as { [key: string]: FormControl });\r\n form.markAsDirty();\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n\r\nfunction setDirty(controls: Controls) {\r\n if (Array.isArray(controls)) {\r\n controls.forEach(group => {\r\n setDirty(group.controls as { [key: string]: FormControl });\r\n });\r\n return;\r\n }\r\n\r\n Object.keys(controls).forEach(key => {\r\n controls[key].markAsDirty();\r\n controls[key].updateValueAndValidity();\r\n });\r\n}\r\n","import { Directive, Output, EventEmitter, ElementRef, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({ selector: '[abpInit]' })\r\nexport class InitDirective implements AfterViewInit {\r\n @Output('abpInit') readonly init = new EventEmitter<ElementRef<any>>();\r\n\r\n constructor(private elRef: ElementRef) {}\r\n\r\n ngAfterViewInit() {\r\n this.init.emit(this.elRef);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { PermissionService } from '../services/permission.service';\r\n\r\n@Directive({\r\n selector: '[abpPermission]',\r\n})\r\nexport class PermissionDirective implements OnDestroy, OnChanges {\r\n @Input('abpPermission') condition: string | undefined;\r\n\r\n subscription!: Subscription;\r\n\r\n constructor(\r\n @Optional() private templateRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n private permissionService: PermissionService,\r\n private cdRef: ChangeDetectorRef,\r\n ) {}\r\n\r\n private check() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n this.subscription = this.permissionService\r\n .getGrantedPolicy$(this.condition || '')\r\n .pipe(distinctUntilChanged())\r\n .subscribe(isGranted => {\r\n this.vcRef.clear();\r\n if (isGranted) this.vcRef.createEmbeddedView(this.templateRef);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) this.subscription.unsubscribe();\r\n }\r\n\r\n ngOnChanges() {\r\n this.check();\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n Directive,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n selector: '[abpReplaceableTemplate]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class ReplaceableTemplateDirective implements OnInit, OnChanges {\r\n @Input('abpReplaceableTemplate')\r\n data: ReplaceableComponents.ReplaceableTemplateDirectiveInput<any, any>;\r\n\r\n providedData = {\r\n inputs: {},\r\n outputs: {},\r\n } as ReplaceableComponents.ReplaceableTemplateData<any, any>;\r\n\r\n context = {} as any;\r\n\r\n externalComponent!: Type<any>;\r\n\r\n defaultComponentRef: any;\r\n\r\n defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n\r\n initialized = false;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private templateRef: TemplateRef<any>,\r\n private cfRes: ComponentFactoryResolver,\r\n private vcRef: ViewContainerRef,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n ) {\r\n this.context = {\r\n initTemplate: (ref: any) => {\r\n this.resetDefaultComponent();\r\n this.defaultComponentRef = ref;\r\n this.setDefaultComponentInputs();\r\n },\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n const component$ = this.replaceableComponents\r\n .get$(this.data.componentKey)\r\n .pipe(\r\n filter(\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) =>\r\n !this.initialized || !compare(res.component, this.externalComponent),\r\n ),\r\n );\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.vcRef.clear();\r\n this.externalComponent = res.component;\r\n if (this.defaultComponentRef) {\r\n this.resetDefaultComponent();\r\n }\r\n\r\n if (res.component) {\r\n this.setProvidedData();\r\n const customInjector = Injector.create({\r\n providers: [{ provide: 'REPLACEABLE_DATA', useValue: this.providedData }],\r\n parent: this.injector,\r\n });\r\n this.vcRef.createComponent(\r\n this.cfRes.resolveComponentFactory(res.component),\r\n 0,\r\n customInjector,\r\n );\r\n } else {\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n\r\n this.initialized = true;\r\n },\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes?.data?.currentValue?.inputs && this.defaultComponentRef) {\r\n this.setDefaultComponentInputs();\r\n }\r\n }\r\n\r\n setDefaultComponentInputs() {\r\n if (!this.defaultComponentRef || (!this.data.inputs && !this.data.outputs)) return;\r\n\r\n if (this.data.inputs) {\r\n for (const key in this.data.inputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {\r\n if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {\r\n this.defaultComponentRef[key] = this.data.inputs[key].value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.data.outputs) {\r\n for (const key in this.data.outputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {\r\n if (!this.defaultComponentSubscriptions[key]) {\r\n this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(\r\n (value: any) => {\r\n this.data.outputs?.[key](value);\r\n },\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setProvidedData() {\r\n this.providedData = { outputs: {}, ...this.data, inputs: {} };\r\n\r\n if (!this.data.inputs) return;\r\n Object.defineProperties(this.providedData.inputs, {\r\n ...Object.keys(this.data.inputs).reduce(\r\n (acc, key) => ({\r\n ...acc,\r\n [key]: {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => this.data.inputs[key]?.value,\r\n ...(this.data.inputs[key]?.twoWay && {\r\n set: (newValue: any) => {\r\n this.data.inputs[key].value = newValue;\r\n this.data.outputs[`${key}Change`](newValue);\r\n },\r\n }),\r\n },\r\n }),\r\n {},\r\n ),\r\n });\r\n }\r\n\r\n resetDefaultComponent() {\r\n Object.keys(this.defaultComponentSubscriptions).forEach(key => {\r\n this.defaultComponentSubscriptions[key].unsubscribe();\r\n });\r\n this.defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n this.defaultComponentRef = null;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[click.stop]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class StopPropagationDirective implements OnInit {\r\n @Output('click.stop') readonly stopPropEvent = new EventEmitter<MouseEvent>();\r\n\r\n constructor(private el: ElementRef, private subscription: SubscriptionService) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), (event: MouseEvent) => {\r\n event.stopPropagation();\r\n this.stopPropEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport compare from 'just-compare';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthConfigurationHandler {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private environmentService: EnvironmentService,\r\n @Inject(CORE_OPTIONS) private options: ABP.Root,\r\n ) {\r\n this.listenToSetEnvironment();\r\n }\r\n\r\n private listenToSetEnvironment() {\r\n this.environmentService\r\n .createOnUpdateStream(state => state)\r\n .pipe(\r\n map(environment => environment.oAuthConfig),\r\n filter(config => !compare(config, this.options.environment.oAuthConfig)),\r\n )\r\n .subscribe(config => {\r\n this.oAuthService.configure(config);\r\n });\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ABP } from '../models';\r\nimport { RoutesService } from '../services/routes.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoutesHandler {\r\n constructor(private routes: RoutesService, @Optional() private router: Router) {\r\n this.addRoutes();\r\n }\r\n\r\n addRoutes() {\r\n this.router?.config?.forEach(({ path = '', data }) => {\r\n if (!data?.routes) return;\r\n\r\n if (Array.isArray(data.routes)) {\r\n this.routes.add(data.routes);\r\n return;\r\n }\r\n\r\n const routes = flatRoutes([{ path, ...data.routes }], { path: '' });\r\n this.routes.add(routes);\r\n });\r\n }\r\n}\r\n\r\nfunction flatRoutes(routes: RouteDef[], parent: any) {\r\n if (!routes) return [];\r\n\r\n return routes.reduce((acc, route) => {\r\n const { children, ...current } = {\r\n ...route,\r\n parentName: parent.name,\r\n path: (parent.path + '/' + route.path).replace(/\\/\\//g, '/'),\r\n };\r\n\r\n acc.push(current, ...flatRoutes(children, current));\r\n\r\n return acc;\r\n }, []);\r\n}\r\n\r\ntype RouteDef = ABP.Route & { children: RouteDef[] };\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\nexport function getPathName(url: string): string {\r\n const { pathname } = new URL(url, window.location.origin);\r\n return pathname;\r\n}\r\n\r\nexport class WebHttpUrlEncodingCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n\r\n decodeValue(v: string) {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LOADER_DELAY = new InjectionToken<number>('LOADER_DELAY');\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpRequest } from '@angular/common/http';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { getPathName } from '../utils/http-utils';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\n\r\nexport interface HttpWaitState {\r\n requests: HttpRequest<any>[];\r\n filteredRequests: Array<HttpRequestInfo>;\r\n}\r\nexport interface HttpRequestInfo {\r\n method: string;\r\n endpoint: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpWaitService {\r\n protected store = new InternalStore<HttpWaitState>({\r\n requests: [],\r\n filteredRequests: [],\r\n });\r\n\r\n private delay: number;\r\n private destroy$ = new Subject();\r\n\r\n constructor(injector: Injector) {\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n }\r\n\r\n getLoading() {\r\n return !!this.applyFilter(this.store.state.requests).length;\r\n }\r\n\r\n getLoading$() {\r\n return this.store\r\n .sliceState(({ requests }) => requests)\r\n .pipe(\r\n map(requests => !!this.applyFilter(requests).length),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n );\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ requests }) => !!this.applyFilter(requests).length);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ requests: [] });\r\n }\r\n\r\n addRequest(request: HttpRequest<any>) {\r\n this.store.patch({ requests: [...this.store.state.requests, request] });\r\n }\r\n\r\n deleteRequest(request: HttpRequest<any>) {\r\n const requests = this.store.state.requests.filter(r => r !== request);\r\n this.store.patch({ requests });\r\n }\r\n\r\n addFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = [\r\n ...this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n ),\r\n ...requests,\r\n ];\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n removeFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n );\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n private applyFilter(requests: HttpRequest<any>[]) {\r\n const { filteredRequests } = this.store.state;\r\n return requests.filter(\r\n ({ method, url }) =>\r\n !filteredRequests.find(filteredRequest =>\r\n this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) }),\r\n ),\r\n );\r\n }\r\n\r\n private isSameRequest(filteredRequest: HttpRequestInfo, request: HttpRequestInfo) {\r\n const { method, endpoint } = filteredRequest;\r\n return endpoint === request.endpoint && method === request.method;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const TENANT_KEY = new InjectionToken<string>('TENANT_KEY');\r\n","import { HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { HttpWaitService } from '../services/http-wait.service';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiInterceptor implements HttpInterceptor {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private sessionState: SessionStateService,\r\n private httpWaitService: HttpWaitService,\r\n @Inject(TENANT_KEY) private tenantKey: string,\r\n ) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler) {\r\n this.httpWaitService.addRequest(request);\r\n return next\r\n .handle(\r\n request.clone({\r\n setHeaders: this.getAdditionalHeaders(request.headers),\r\n }),\r\n )\r\n .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\r\n }\r\n\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders) {\r\n const headers = {} as any;\r\n\r\n const token = this.oAuthService.getAccessToken();\r\n if (!existingHeaders?.has('Authorization') && token) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n\r\n const lang = this.sessionState.getLanguage();\r\n if (!existingHeaders?.has('Accept-Language') && lang) {\r\n headers['Accept-Language'] = lang;\r\n }\r\n\r\n const tenant = this.sessionState.getTenant();\r\n if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {\r\n headers[this.tenantKey] = tenant.id;\r\n }\r\n\r\n return headers;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport { LocalizationService } from '../services/localization.service';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpLocalization',\r\n})\r\nexport class LocalizationPipe implements PipeTransform {\r\n constructor(private localization: LocalizationService) {}\r\n\r\n transform(\r\n value: string | LocalizationWithDefault = '',\r\n ...interpolateParams: (string | string[] | undefined)[]\r\n ): string {\r\n const params =\r\n interpolateParams.reduce((acc, val) => {\r\n if (!acc) {\r\n return val;\r\n }\r\n if (!val) {\r\n return acc;\r\n }\r\n return Array.isArray(val) ? [...acc, ...val] : [...acc, val];\r\n }, []) || [];\r\n return this.localization.instant(value, ...params);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { LocalizationPipe } from './pipes/localization.pipe';\r\n\r\n@NgModule({\r\n exports: [LocalizationPipe],\r\n declarations: [LocalizationPipe],\r\n})\r\nexport class LocalizationModule {}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nexport type SortOrder = 'asc' | 'desc';\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpSort',\r\n})\r\nexport class SortPipe implements PipeTransform {\r\n transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string): any {\r\n sortOrder = sortOrder && (sortOrder.toLowerCase() as any);\r\n\r\n if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value;\r\n\r\n let numberArray = [];\r\n let stringArray = [];\r\n\r\n if (!sortKey) {\r\n numberArray = value.filter(item => typeof item === 'number').sort();\r\n stringArray = value.filter(item => typeof item === 'string').sort();\r\n } else {\r\n numberArray = value\r\n .filter(item => typeof item[sortKey] === 'number')\r\n .sort((a, b) => a[sortKey] - b[sortKey]);\r\n stringArray = value\r\n .filter(item => typeof item[sortKey] === 'string')\r\n .sort((a, b) => {\r\n if (a[sortKey] < b[sortKey]) return -1;\r\n else if (a[sortKey] > b[sortKey]) return 1;\r\n else return 0;\r\n });\r\n }\r\n const sorted = [\r\n ...numberArray,\r\n ...stringArray,\r\n ...value.filter(\r\n item =>\r\n typeof (sortKey ? item[sortKey] : item) !== 'number' &&\r\n typeof (sortKey ? item[sortKey] : item) !== 'string',\r\n ),\r\n ];\r\n return sortOrder === 'asc' ? sorted : sorted.reverse();\r\n }\r\n}\r\n","import { InjectionToken, Injector, Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken<PipeTransform>(\r\n 'INJECTOR_PIPE_DATA_TOKEN',\r\n);\r\n\r\n@Pipe({\r\n name: 'toInjector',\r\n})\r\nexport class ToInjectorPipe implements PipeTransform {\r\n constructor(private injector: Injector) {}\r\n transform(\r\n value: any,\r\n token: InjectionToken<any> = INJECTOR_PIPE_DATA_TOKEN,\r\n name = 'ToInjectorPipe',\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n {\r\n provide: token,\r\n useValue: value,\r\n },\r\n ],\r\n parent: this.injector,\r\n name,\r\n });\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const COOKIE_LANGUAGE_KEY = new InjectionToken<string>('COOKIE_LANGUAGE_KEY', {\r\n factory: () => '.AspNetCore.Culture',\r\n});\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';\r\n\r\nexport function setLanguageToCookie(injector: Injector) {\r\n return () => {\r\n const sessionState = injector.get(SessionStateService);\r\n const document = injector.get(DOCUMENT);\r\n const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);\r\n sessionState.getLanguage$().subscribe(language => {\r\n const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);\r\n document.cookie = `${cookieLanguageKey}=${cookieValue}`;\r\n });\r\n };\r\n}\r\n\r\nexport const CookieLanguageProvider: Provider = {\r\n provide: APP_INITIALIZER,\r\n useFactory: setLanguageToCookie,\r\n deps: [Injector],\r\n multi: true,\r\n};\r\n","import { LOCALE_ID, Provider } from '@angular/core';\r\nimport { differentLocales } from '../constants/different-locales';\r\nimport { LocalizationService } from '../services/localization.service';\r\n\r\nexport class LocaleId extends String {\r\n constructor(private localizationService: LocalizationService) {\r\n super();\r\n }\r\n\r\n toString(): string {\r\n const { currentLang } = this.localizationService;\r\n return differentLocales[currentLang] || currentLang;\r\n }\r\n\r\n valueOf(): string {\r\n return this.toString();\r\n }\r\n}\r\n\r\nexport const LocaleProvider: Provider = {\r\n provide: LOCALE_ID,\r\n useClass: LocaleId,\r\n deps: [LocalizationService],\r\n};\r\n","import { Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { OAuthStorage, TokenResponse } from 'angular-oauth2-oidc';\r\nimport { pipe } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\n\r\nconst cookieKey = 'rememberMe';\r\nconst storageKey = 'passwordFlow';\r\n\r\nexport function pipeToLogin(\r\n params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>,\r\n injector: Injector,\r\n) {\r\n const configState = injector.get(ConfigStateService);\r\n const router = injector.get(Router);\r\n\r\n return pipe(\r\n switchMap(() => configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n}\r\n\r\nexport function setTokenResponseToStorage(injector: Injector, tokenRes: TokenResponse) {\r\n const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes;\r\n const storage = injector.get(OAuthStorage);\r\n\r\n storage.setItem('access_token', access_token);\r\n storage.setItem('refresh_token', refresh_token);\r\n storage.setItem('access_token_stored_at', '' + Date.now());\r\n\r\n if (grantedScopes) {\r\n storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' ')));\r\n }\r\n\r\n if (expires_in) {\r\n const expiresInMilliSeconds = expires_in * 1000;\r\n const now = new Date();\r\n const expiresAt = now.getTime() + expiresInMilliSeconds;\r\n storage.setItem('expires_at', '' + expiresAt);\r\n }\r\n}\r\n\r\nexport function setRememberMe(remember: boolean) {\r\n removeRememberMe();\r\n localStorage.setItem(storageKey, 'true');\r\n document.cookie = `${cookieKey}=true; path=/${\r\n remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''\r\n }`;\r\n}\r\n\r\nexport function removeRememberMe() {\r\n localStorage.removeItem(storageKey);\r\n document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injector } from '@angular/core';\r\nimport { Params, Router } from '@angular/router';\r\nimport {\r\n AuthConfig,\r\n OAuthErrorEvent,\r\n OAuthInfoEvent,\r\n OAuthService,\r\n OAuthStorage\r\n} from 'angular-oauth2-oidc';\r\nimport { from, Observable, of, pipe } from 'rxjs';\r\nimport { filter, switchMap, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\nimport { removeRememberMe, setRememberMe } from '../utils/auth-utils';\r\nimport { noop } from '../utils/common-utils';\r\n\r\nexport const oAuthStorage = localStorage;\r\n\r\nexport abstract class AuthFlowStrategy {\r\n abstract readonly isInternalAuth: boolean;\r\n\r\n protected httpErrorReporter: HttpErrorReporterService;\r\n protected environment: EnvironmentService;\r\n protected configState: ConfigStateService;\r\n protected oAuthService: OAuthService;\r\n protected oAuthConfig: AuthConfig;\r\n protected sessionState: SessionStateService;\r\n protected tenantKey: string;\r\n\r\n abstract checkIfInternalAuth(queryParams?: Params): boolean;\r\n abstract navigateToLogin(queryParams?: Params): void;\r\n abstract logout(queryParams?: Params): Observable<any>;\r\n abstract login(params?: LoginParams | Params): Observable<any>;\r\n\r\n private catchError = err => {\r\n this.httpErrorReporter.reportError(err);\r\n return of(null);\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n this.httpErrorReporter = injector.get(HttpErrorReporterService);\r\n this.environment = injector.get(EnvironmentService);\r\n this.configState = injector.get(ConfigStateService);\r\n this.oAuthService = injector.get(OAuthService);\r\n this.sessionState = injector.get(SessionStateService);\r\n this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;\r\n this.tenantKey = injector.get(TENANT_KEY);\r\n\r\n this.listenToOauthErrors();\r\n }\r\n\r\n async init(): Promise<any> {\r\n const shouldClear = shouldStorageClear(\r\n this.environment.getEnvironment().oAuthConfig.clientId,\r\n oAuthStorage,\r\n );\r\n if (shouldClear) clearOAuthStorage(oAuthStorage);\r\n\r\n this.oAuthService.configure(this.oAuthConfig);\r\n\r\n this.oAuthService.events\r\n .pipe(filter(event => event.type === 'token_refresh_error'))\r\n .subscribe(() => this.navigateToLogin());\r\n\r\n return this.oAuthService\r\n .loadDiscoveryDocument()\r\n .then(() => {\r\n if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.refreshToken();\r\n })\r\n .catch(this.catchError);\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());\r\n }\r\n\r\n protected listenToOauthErrors() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event instanceof OAuthErrorEvent),\r\n tap(() => clearOAuthStorage()),\r\n switchMap(() => this.configState.refreshAppState()),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n\r\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = false;\r\n\r\n async init() {\r\n return super\r\n .init()\r\n .then(() => this.oAuthService.tryLogin().catch(noop))\r\n .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n }\r\n\r\n checkIfInternalAuth(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return false;\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\r\n }\r\n\r\n login(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return of(null);\r\n }\r\n\r\n private getCultureParams(queryParams?: Params) {\r\n const lang = this.sessionState.getLanguage();\r\n const culture = { culture: lang, 'ui-culture': lang };\r\n return { ...(lang && culture), ...queryParams };\r\n }\r\n}\r\n\r\nexport class AuthPasswordFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = true;\r\n private cookieKey = 'rememberMe';\r\n private storageKey = 'passwordFlow';\r\n\r\n private listenToTokenExpiration() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(\r\n event =>\r\n event instanceof OAuthInfoEvent &&\r\n event.type === 'token_expires' &&\r\n event.info === 'access_token',\r\n ),\r\n )\r\n .subscribe(() => {\r\n if (this.oAuthService.getRefreshToken()) {\r\n this.refreshToken();\r\n } else {\r\n this.oAuthService.logOut();\r\n removeRememberMe();\r\n this.configState.refreshAppState().subscribe();\r\n }\r\n });\r\n }\r\n\r\n async init() {\r\n if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {\r\n this.oAuthService.logOut();\r\n }\r\n\r\n return super.init().then(() => this.listenToTokenExpiration());\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n router.navigate(['/account/login'], { queryParams });\r\n }\r\n\r\n checkIfInternalAuth() {\r\n return true;\r\n }\r\n\r\n login(params: LoginParams): Observable<any> {\r\n const tenant = this.sessionState.getTenant();\r\n\r\n return from(\r\n this.oAuthService.fetchTokenUsingPasswordFlow(\r\n params.username,\r\n params.password,\r\n new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }),\r\n ),\r\n ).pipe(this.pipeToLogin(params));\r\n }\r\n\r\n pipeToLogin(params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>) {\r\n const router = this.injector.get(Router);\r\n\r\n return pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n\r\n return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n router.navigateByUrl('/');\r\n removeRememberMe();\r\n }),\r\n );\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => {\r\n clearOAuthStorage();\r\n removeRememberMe();\r\n });\r\n }\r\n}\r\n\r\nexport const AUTH_FLOW_STRATEGY = {\r\n Code(injector: Injector) {\r\n return new AuthCodeFlowStrategy(injector);\r\n },\r\n Password(injector: Injector) {\r\n return new AuthPasswordFlowStrategy(injector);\r\n },\r\n};\r\n\r\nexport function clearOAuthStorage(storage: OAuthStorage = oAuthStorage) {\r\n const keys = [\r\n 'access_token',\r\n 'id_token',\r\n 'refresh_token',\r\n 'nonce',\r\n 'PKCE_verifier',\r\n 'expires_at',\r\n 'id_token_claims_obj',\r\n 'id_token_expires_at',\r\n 'id_token_stored_at',\r\n 'access_token_stored_at',\r\n 'granted_scopes',\r\n 'session_state',\r\n ];\r\n\r\n keys.forEach(key => storage.removeItem(key));\r\n}\r\n\r\nfunction shouldStorageClear(clientId: string, storage: OAuthStorage): boolean {\r\n const key = 'abpOAuthClientId';\r\n if (!storage.getItem(key)) {\r\n storage.setItem(key, clientId);\r\n return false;\r\n }\r\n\r\n const shouldClear = storage.getItem(key) !== clientId;\r\n if (shouldClear) storage.setItem(key, clientId);\r\n return shouldClear;\r\n}\r\n\r\nfunction getCookieValueByName(name: string) {\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? match[2] : '';\r\n}\r\n","export {};\r\n\r\ndeclare global {\r\n interface Date {\r\n toLocalISOString?: () => string;\r\n }\r\n}\r\n\r\nDate.prototype.toLocalISOString = function (this: Date): string {\r\n const timezoneOffset = this.getTimezoneOffset();\r\n\r\n return new Date(this.getTime() - timezoneOffset * 60000).toISOString();\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { AuthFlowStrategy, AUTH_FLOW_STRATEGY } from '../strategies/auth-flow.strategy';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n private strategy: AuthFlowStrategy;\r\n\r\n get isInternalAuth() {\r\n return this.strategy.isInternalAuth;\r\n }\r\n\r\n constructor(protected injector: Injector) {}\r\n\r\n async init() {\r\n const environmentService = this.injector.get(EnvironmentService);\r\n\r\n return environmentService\r\n .getEnvironment$()\r\n .pipe(\r\n map(env => env?.oAuthConfig),\r\n filter(oAuthConfig => !!oAuthConfig),\r\n tap(oAuthConfig => {\r\n this.strategy =\r\n oAuthConfig.responseType === 'code'\r\n ? AUTH_FLOW_STRATEGY.Code(this.injector)\r\n : AUTH_FLOW_STRATEGY.Password(this.injector);\r\n }),\r\n switchMap(() => from(this.strategy.init())),\r\n take(1),\r\n )\r\n .toPromise();\r\n }\r\n\r\n logout(queryParams?: Params): Observable<any> {\r\n return this.strategy.logout(queryParams);\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.strategy.navigateToLogin(queryParams);\r\n }\r\n\r\n login(params: LoginParams) {\r\n return this.strategy.login(params);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport type AppInitErrorFn = (error: any) => void;\r\n\r\nexport const APP_INIT_ERROR_HANDLERS = new InjectionToken<AppInitErrorFn[]>(\r\n 'APP_INIT_ERROR_HANDLERS',\r\n);\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injector } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { Environment, RemoteEnv } from '../models/environment';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport function getRemoteEnv(injector: Injector, environment: Partial<Environment>) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const { remoteEnv } = environment;\r\n const { headers = {}, method = 'GET', url } = remoteEnv || ({} as RemoteEnv);\r\n if (!url) return Promise.resolve();\r\n\r\n const http = injector.get(HttpClient);\r\n const httpErrorReporter = injector.get(HttpErrorReporterService);\r\n\r\n return http\r\n .request<Environment>(method, url, { headers })\r\n .pipe(\r\n catchError(err => {\r\n httpErrorReporter.reportError(err);\r\n return of(null);\r\n }), // TODO: Consider get handle function from a provider\r\n tap(env => environmentService.setState(mergeEnvironments(environment, env, remoteEnv))),\r\n )\r\n .toPromise();\r\n}\r\n\r\nfunction mergeEnvironments(\r\n local: Partial<Environment>,\r\n remote: any,\r\n config: RemoteEnv,\r\n): Environment {\r\n switch (config.mergeStrategy) {\r\n case 'deepmerge':\r\n return deepMerge(local, remote);\r\n case 'overwrite':\r\n case null:\r\n case undefined:\r\n return remote;\r\n default:\r\n return config.mergeStrategy(local, remote);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../services/rest.service';\r\nimport type { FindTenantResultDto } from '../../../volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpTenantService {\r\n apiName = 'abp';\r\n\r\n findTenantById = (id: string, headers: Record<string, string>) =>\r\n this.restService.request<any, FindTenantResultDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-id/${id}`,\r\n headers,\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n findTenantByName = (name: string, headers: Record<string, string>) =>\r\n this.restService.request<any, FindTenantResultDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-name/${name}`,\r\n headers,\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { AbpTenantService } from '../proxy/pages/abp/multi-tenancy';\r\nimport {\r\n CurrentTenantDto,\r\n FindTenantResultDto,\r\n} from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { RestService } from './rest.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MultiTenancyService {\r\n domainTenant: CurrentTenantDto = null;\r\n\r\n isTenantBoxVisible = true;\r\n\r\n apiName = 'abp';\r\n\r\n private setTenantToState = (tenant: FindTenantResultDto) => {\r\n this.sessionState.setTenant({ id: tenant.tenantId, name: tenant.name, isAvailable: true });\r\n return this.configStateService.refreshAppState().pipe(map(_ => tenant));\r\n };\r\n\r\n constructor(\r\n private restService: RestService,\r\n private sessionState: SessionStateService,\r\n private tenantService: AbpTenantService,\r\n private configStateService: ConfigStateService,\r\n @Inject(TENANT_KEY) public tenantKey: string,\r\n ) {}\r\n\r\n setTenantByName(tenantName: string) {\r\n return this.tenantService\r\n .findTenantByName(tenantName, { [this.tenantKey]: '' })\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n\r\n setTenantById(tenantId: string) {\r\n return this.tenantService\r\n .findTenantById(tenantId, { [this.tenantKey]: '' })\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport clone from 'just-clone';\r\n\r\nimport { tap } from 'rxjs/operators';\r\nimport { Environment } from '../models/environment';\r\n\r\nimport { FindTenantResultDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { MultiTenancyService } from '../services/multi-tenancy.service';\r\nimport { createTokenParser } from './string-utils';\r\n\r\nconst tenancyPlaceholder = '{0}';\r\n\r\nfunction getCurrentTenancyName(appBaseUrl: string): string {\r\n if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/';\r\n\r\n const parseTokens = createTokenParser(appBaseUrl);\r\n const token = tenancyPlaceholder.replace(/[}{]/g, '');\r\n return parseTokens(window.location.href)[token]?.[0];\r\n}\r\n\r\nfunction getCurrentTenancyNameFromUrl(tenantKey: string) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(tenantKey);\r\n}\r\n\r\nexport async function parseTenantFromUrl(injector: Injector) {\r\n const environmentService = injector.get(EnvironmentService);\r\n const multiTenancyService = injector.get(MultiTenancyService);\r\n\r\n const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';\r\n const tenancyName = getCurrentTenancyName(baseUrl);\r\n\r\n const hideTenantBox = () => {\r\n multiTenancyService.isTenantBoxVisible = false;\r\n };\r\n\r\n const setDomainTenant = (tenant: FindTenantResultDto) => {\r\n multiTenancyService.domainTenant = {\r\n id: tenant.tenantId,\r\n name: tenant.name,\r\n isAvailable: true,\r\n };\r\n };\r\n\r\n const setEnvironmentWithDomainTenant = (tenant: FindTenantResultDto) => {\r\n hideTenantBox();\r\n setDomainTenant(tenant);\r\n };\r\n\r\n if (tenancyName) {\r\n /**\r\n * We have to replace tenant name within the urls from environment,\r\n * because the code below will make a http request to find information about the domain tenant.\r\n * Before this request takes place, we need to replace placeholders aka \"{0}\".\r\n */\r\n replaceTenantNameWithinEnvironment(injector, tenancyName);\r\n return multiTenancyService\r\n .setTenantByName(tenancyName)\r\n .pipe(tap(setEnvironmentWithDomainTenant))\r\n .toPromise();\r\n } else {\r\n /**\r\n * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.\r\n */\r\n replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');\r\n\r\n const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey);\r\n if (tenantIdFromQueryParams) {\r\n return multiTenancyService.setTenantById(tenantIdFromQueryParams).toPromise();\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n}\r\n\r\nfunction replaceTenantNameWithinEnvironment(\r\n injector: Injector,\r\n tenancyName: string,\r\n placeholder = tenancyPlaceholder,\r\n) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const environment = clone(environmentService.getEnvironment()) as Environment;\r\n\r\n if (environment.application.baseUrl) {\r\n environment.application.baseUrl = environment.application.baseUrl.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n if (environment.oAuthConfig.redirectUri) {\r\n environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n environment.oAuthConfig.issuer = environment.oAuthConfig.issuer.replace(placeholder, tenancyName);\r\n\r\n Object.keys(environment.apis).forEach(api => {\r\n Object.keys(environment.apis[api]).forEach(key => {\r\n environment.apis[api][key] = environment.apis[api][key].replace(placeholder, tenancyName);\r\n });\r\n });\r\n\r\n return environmentService.setState(environment);\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { Injector } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { Environment } from '../models/environment';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { clearOAuthStorage } from '../strategies/auth-flow.strategy';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { APP_INIT_ERROR_HANDLERS } from '../tokens/app-config.token';\r\nimport { getRemoteEnv } from './environment-utils';\r\nimport { parseTenantFromUrl } from './multi-tenancy-utils';\r\n\r\nexport function getInitialData(injector: Injector) {\r\n const fn = async () => {\r\n const environmentService = injector.get(EnvironmentService);\r\n const configState = injector.get(ConfigStateService);\r\n const options = injector.get(CORE_OPTIONS) as ABP.Root;\r\n\r\n environmentService.setState(options.environment as Environment);\r\n await getRemoteEnv(injector, options.environment);\r\n await parseTenantFromUrl(injector);\r\n await injector.get(AuthService).init();\r\n\r\n if (options.skipGetAppConfiguration) return;\r\n\r\n return configState\r\n .refreshAppState()\r\n .pipe(\r\n tap(() => checkAccessToken(injector)),\r\n tap(() => {\r\n const currentTenant = configState.getOne('currentTenant') as CurrentTenantDto;\r\n injector.get(SessionStateService).setTenant(currentTenant);\r\n }),\r\n catchError(error => {\r\n const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);\r\n if (appInitErrorHandlers && appInitErrorHandlers.length) {\r\n appInitErrorHandlers.forEach(func => func(error));\r\n }\r\n\r\n return throwError(error);\r\n }),\r\n )\r\n .toPromise();\r\n };\r\n\r\n return fn;\r\n}\r\n\r\nexport function checkAccessToken(injector: Injector) {\r\n const configState = injector.get(ConfigStateService);\r\n const oAuth = injector.get(OAuthService);\r\n if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {\r\n clearOAuthStorage();\r\n }\r\n}\r\n\r\nexport function localeInitializer(injector: Injector) {\r\n const fn = () => {\r\n const sessionState = injector.get(SessionStateService);\r\n const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS);\r\n\r\n const lang = sessionState.getLanguage() || 'en';\r\n\r\n return new Promise((resolve, reject) => {\r\n registerLocaleFn(lang).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n\r\n return resolve('resolved');\r\n }, reject);\r\n });\r\n };\r\n\r\n return fn;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HttpClientXsrfModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AbstractNgModelComponent } from './abstracts/ng-model.component';\r\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\r\nimport { ReplaceableRouteContainerComponent } from './components/replaceable-route-container.component';\r\nimport { RouterOutletComponent } from './components/router-outlet.component';\r\nimport { AutofocusDirective } from './directives/autofocus.directive';\r\nimport { InputEventDebounceDirective } from './directives/debounce.directive';\r\nimport { ForDirective } from './directives/for.directive';\r\nimport { FormSubmitDirective } from './directives/form-submit.directive';\r\nimport { InitDirective } from './directives/init.directive';\r\nimport { PermissionDirective } from './directives/permission.directive';\r\nimport { ReplaceableTemplateDirective } from './directives/replaceable-template.directive';\r\nimport { StopPropagationDirective } from './directives/stop-propagation.directive';\r\nimport { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';\r\nimport { RoutesHandler } from './handlers/routes.handler';\r\nimport { ApiInterceptor } from './interceptors/api.interceptor';\r\nimport { LocalizationModule } from './localization.module';\r\nimport { ABP } from './models/common';\r\nimport { LocalizationPipe } from './pipes/localization.pipe';\r\nimport { SortPipe } from './pipes/sort.pipe';\r\nimport { ToInjectorPipe } from './pipes/to-injector.pipe';\r\nimport { CookieLanguageProvider } from './providers/cookie-language.provider';\r\nimport { LocaleProvider } from './providers/locale.provider';\r\nimport { LocalizationService } from './services/localization.service';\r\nimport { oAuthStorage } from './strategies/auth-flow.strategy';\r\nimport { localizationContributor, LOCALIZATIONS } from './tokens/localization.token';\r\nimport { coreOptionsFactory, CORE_OPTIONS } from './tokens/options.token';\r\nimport { TENANT_KEY } from './tokens/tenant-key.token';\r\nimport { noop } from './utils/common-utils';\r\nimport './utils/date-extensions';\r\nimport { getInitialData, localeInitializer } from './utils/initial-utils';\r\n\r\nexport function storageFactory(): OAuthStorage {\r\n return oAuthStorage;\r\n}\r\n\r\n/**\r\n * BaseCoreModule is the module that holds\r\n * all imports, declarations, exports, and entryComponents\r\n * but not the providers.\r\n * This module will be imported and exported by all others.\r\n */\r\n@NgModule({\r\n exports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n LocalizationModule,\r\n AbstractNgModelComponent,\r\n AutofocusDirective,\r\n DynamicLayoutComponent,\r\n ForDirective,\r\n FormSubmitDirective,\r\n InitDirective,\r\n InputEventDebounceDirective,\r\n PermissionDirective,\r\n ReplaceableRouteContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutletComponent,\r\n SortPipe,\r\n StopPropagationDirective,\r\n ToInjectorPipe,\r\n ],\r\n imports: [\r\n OAuthModule,\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n LocalizationModule,\r\n ],\r\n declarations: [\r\n AbstractNgModelComponent,\r\n AutofocusDirective,\r\n DynamicLayoutComponent,\r\n ForDirective,\r\n FormSubmitDirective,\r\n InitDirective,\r\n InputEventDebounceDirective,\r\n PermissionDirective,\r\n ReplaceableRouteContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutletComponent,\r\n SortPipe,\r\n StopPropagationDirective,\r\n ToInjectorPipe,\r\n ],\r\n providers: [LocalizationPipe]\r\n})\r\nexport class BaseCoreModule {}\r\n\r\n/**\r\n * RootCoreModule is the module that will be used at root level\r\n * and it introduces imports useful at root level (e.g. NGXS)\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule, LocalizationModule],\r\n imports: [\r\n BaseCoreModule,\r\n LocalizationModule,\r\n OAuthModule.forRoot(),\r\n HttpClientXsrfModule.withOptions({\r\n cookieName: 'XSRF-TOKEN',\r\n headerName: 'RequestVerificationToken',\r\n }),\r\n ],\r\n})\r\nexport class RootCoreModule {}\r\n\r\n/**\r\n * CoreModule is the module that is publicly available\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule],\r\n imports: [BaseCoreModule],\r\n})\r\nexport class CoreModule {\r\n static forRoot(options = {} as ABP.Root): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [\r\n LocaleProvider,\r\n CookieLanguageProvider,\r\n {\r\n provide: 'CORE_OPTIONS',\r\n useValue: options,\r\n },\r\n {\r\n provide: CORE_OPTIONS,\r\n useFactory: coreOptionsFactory,\r\n deps: ['CORE_OPTIONS'],\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useExisting: ApiInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [OAuthConfigurationHandler],\r\n useFactory: noop,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [Injector],\r\n useFactory: getInitialData,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [Injector],\r\n useFactory: localeInitializer,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [LocalizationService],\r\n useFactory: noop,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [RoutesHandler],\r\n useFactory: noop,\r\n },\r\n { provide: OAuthStorage, useFactory: storageFactory },\r\n { provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' },\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n static forChild(options = {} as ABP.Child): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nexport function ngxsStoragePluginSerialize(data) {\r\n return data;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, UrlTree } from '@angular/router';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(private oauthService: OAuthService, private authService: AuthService) {}\r\n\r\n canActivate(): Observable<boolean> | boolean | UrlTree {\r\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n this.authService.navigateToLogin();\r\n return false;\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { PermissionService } from '../services/permission.service';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PermissionGuard implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private routesService: RoutesService,\r\n private permissionService: PermissionService,\r\n private httpErrorReporter: HttpErrorReporterService,\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n let { requiredPolicy } = route.data || {};\r\n\r\n if (!requiredPolicy) {\r\n const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url));\r\n requiredPolicy = routeFound?.requiredPolicy;\r\n }\r\n\r\n if (!requiredPolicy) return of(true);\r\n\r\n return this.permissionService.getGrantedPolicy$(requiredPolicy).pipe(\r\n tap(access => {\r\n if (!access) {\r\n this.httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse);\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import { ABP } from './common';\r\n\r\nexport class ListResultDto<T> {\r\n items?: T[];\r\n\r\n constructor(initialValues: Partial<ListResultDto<T>> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class PagedResultDto<T> extends ListResultDto<T> {\r\n totalCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultDto<T>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class LimitedResultRequestDto {\r\n maxResultCount = 10;\r\n\r\n constructor(initialValues: Partial<LimitedResultRequestDto> = {}) {\r\n for (const key in initialValues) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(initialValues, key) &&\r\n initialValues[key] !== undefined\r\n ) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class PagedResultRequestDto extends LimitedResultRequestDto {\r\n skipCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class PagedAndSortedResultRequestDto extends PagedResultRequestDto {\r\n sorting?: string;\r\n\r\n constructor(initialValues: Partial<PagedAndSortedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class EntityDto<TKey = string> {\r\n id?: TKey;\r\n\r\n constructor(initialValues: Partial<EntityDto<TKey>> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityDto<TPrimaryKey = string> extends EntityDto<TPrimaryKey> {\r\n creationTime?: string | Date;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<CreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<CreationAuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class AuditedEntityDto<TPrimaryKey = string> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: string | Date;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<AuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class AuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends AuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n\r\n constructor(initialValues: Partial<AuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class FullAuditedEntityDto<TPrimaryKey = string> extends AuditedEntityDto<TPrimaryKey> {\r\n isDeleted?: boolean;\r\n deleterId?: string;\r\n deletionTime?: Date | string;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class FullAuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends FullAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n deleter?: TUserDto;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleObject {\r\n extraProperties: ABP.Dictionary<any>;\r\n\r\n constructor(initialValues: Partial<ExtensibleObject> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ExtensibleEntityDto<TKey = string> extends ExtensibleObject {\r\n id: TKey;\r\n\r\n constructor(initialValues: Partial<ExtensibleEntityDto<TKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleEntityDto<TPrimaryKey> {\r\n creationTime: Date | string;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleCreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: Date | string;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n lastModifier: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<ExtensibleCreationAuditedEntityWithUserDto<TPrimaryKey>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n isDeleted: boolean;\r\n deleterId?: string;\r\n deletionTime: Date | string;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleFullAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n lastModifier: TUserDto;\r\n deleter: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../../../services/rest.service';\r\nimport type {\r\n ApplicationApiDescriptionModel,\r\n ApplicationApiDescriptionModelRequestDto,\r\n} from '../../../http/modeling/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApiDefinitionService {\r\n apiName = 'abp';\r\n\r\n getByModel = (model: ApplicationApiDescriptionModelRequestDto) =>\r\n this.restService.request<any, ApplicationApiDescriptionModel>(\r\n {\r\n method: 'GET',\r\n url: '/api/abp/api-definition',\r\n params: { includeTypes: model.includeTypes },\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\nexport interface EntityExtensionDto {\r\n properties: Record<string, ExtensionPropertyDto>;\r\n configuration: Record<string, object>;\r\n}\r\n\r\nexport interface ExtensionEnumDto {\r\n fields: ExtensionEnumFieldDto[];\r\n localizationResource?: string;\r\n}\r\n\r\nexport interface ExtensionEnumFieldDto {\r\n name?: string;\r\n value: object;\r\n}\r\n\r\nexport interface ExtensionPropertyApiCreateDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyApiDto {\r\n onGet: ExtensionPropertyApiGetDto;\r\n onCreate: ExtensionPropertyApiCreateDto;\r\n onUpdate: ExtensionPropertyApiUpdateDto;\r\n}\r\n\r\nexport interface ExtensionPropertyApiGetDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyApiUpdateDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyAttributeDto {\r\n typeSimple?: string;\r\n config: Record<string, object>;\r\n}\r\n\r\nexport interface ExtensionPropertyDto {\r\n type?: string;\r\n typeSimple?: string;\r\n displayName: LocalizableStringDto;\r\n api: ExtensionPropertyApiDto;\r\n ui: ExtensionPropertyUiDto;\r\n attributes: ExtensionPropertyAttributeDto[];\r\n configuration: Record<string, object>;\r\n defaultValue: object;\r\n}\r\n\r\nexport interface ExtensionPropertyUiDto {\r\n onTable: ExtensionPropertyUiTableDto;\r\n onCreateForm: ExtensionPropertyUiFormDto;\r\n onEditForm: ExtensionPropertyUiFormDto;\r\n lookup: ExtensionPropertyUiLookupDto;\r\n}\r\n\r\nexport interface ExtensionPropertyUiFormDto {\r\n isVisible: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyUiLookupDto {\r\n url?: string;\r\n resultListPropertyName?: string;\r\n displayPropertyName?: string;\r\n valuePropertyName?: string;\r\n filterParamName?: string;\r\n}\r\n\r\nexport interface ExtensionPropertyUiTableDto {\r\n isVisible: boolean;\r\n}\r\n\r\nexport interface LocalizableStringDto {\r\n name?: string;\r\n resource?: string;\r\n}\r\n\r\nexport interface ModuleExtensionDto {\r\n entities: Record<string, EntityExtensionDto>;\r\n configuration: Record<string, object>;\r\n}\r\n\r\nexport interface ObjectExtensionsDto {\r\n modules: Record<string, ModuleExtensionDto>;\r\n enums: Record<string, ExtensionEnumDto>;\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\nexport interface ActionApiDescriptionModel {\r\n uniqueName?: string;\r\n name?: string;\r\n httpMethod?: string;\r\n url?: string;\r\n supportedVersions: string[];\r\n parametersOnMethod: MethodParameterApiDescriptionModel[];\r\n parameters: ParameterApiDescriptionModel[];\r\n returnValue: ReturnValueApiDescriptionModel;\r\n}\r\n\r\nexport interface ApplicationApiDescriptionModel {\r\n modules: Record<string, ModuleApiDescriptionModel>;\r\n types: Record<string, TypeApiDescriptionModel>;\r\n}\r\n\r\nexport interface ApplicationApiDescriptionModelRequestDto {\r\n includeTypes: boolean;\r\n}\r\n\r\nexport interface ControllerApiDescriptionModel {\r\n controllerName?: string;\r\n type?: string;\r\n interfaces: ControllerInterfaceApiDescriptionModel[];\r\n actions: Record<string, ActionApiDescriptionModel>;\r\n}\r\n\r\nexport interface ControllerInterfaceApiDescriptionModel {\r\n type?: string;\r\n}\r\n\r\nexport interface MethodParameterApiDescriptionModel {\r\n name?: string;\r\n typeAsString?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isOptional: boolean;\r\n defaultValue: object;\r\n}\r\n\r\nexport interface ModuleApiDescriptionModel {\r\n rootPath?: string;\r\n remoteServiceName?: string;\r\n controllers: Record<string, ControllerApiDescriptionModel>;\r\n}\r\n\r\nexport interface ParameterApiDescriptionModel {\r\n nameOnMethod?: string;\r\n name?: string;\r\n jsonName?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isOptional: boolean;\r\n defaultValue: object;\r\n constraintTypes: string[];\r\n bindingSourceId?: string;\r\n descriptorName?: string;\r\n}\r\n\r\nexport interface PropertyApiDescriptionModel {\r\n name?: string;\r\n jsonName?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isRequired: boolean;\r\n}\r\n\r\nexport interface ReturnValueApiDescriptionModel {\r\n type?: string;\r\n typeSimple?: string;\r\n}\r\n\r\nexport interface TypeApiDescriptionModel {\r\n baseType?: string;\r\n isEnum: boolean;\r\n enumNames: string[];\r\n enumValues: object[];\r\n genericArguments: string[];\r\n properties: PropertyApiDescriptionModel[];\r\n}\r\n","import { Injectable, Injector, TemplateRef, Type } from '@angular/core';\r\nimport { ProjectionStrategy } from '../strategies/projection.strategy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentProjectionService {\r\n constructor(private injector: Injector) {}\r\n\r\n projectContent<T extends Type<any> | TemplateRef<any>>(\r\n projectionStrategy: ProjectionStrategy<T>,\r\n injector = this.injector,\r\n ) {\r\n return projectionStrategy.injectContent(injector);\r\n }\r\n}\r\n","import { DateTimeFormatDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from '../services';\r\n\r\nexport function getShortDateFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return dateTimeFormat.shortDatePattern;\r\n}\r\n\r\nexport function getShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return dateTimeFormat.shortTimePattern.replace('tt', 'a');\r\n}\r\n\r\nexport function getShortDateShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat.shortTimePattern.replace('tt', 'a')}`;\r\n}\r\n","import {\r\n Compiler,\r\n Injector,\r\n ModuleWithProviders,\r\n NgModuleFactory,\r\n NgModuleRef,\r\n StaticProvider,\r\n Type,\r\n} from '@angular/core';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\n\r\nexport class LazyModuleFactory<T> extends NgModuleFactory<T> {\r\n get moduleType(): Type<T> {\r\n return this.moduleWithProviders.ngModule;\r\n }\r\n\r\n constructor(private moduleWithProviders: ModuleWithProviders<T>) {\r\n super();\r\n }\r\n\r\n create(parentInjector: Injector | null): NgModuleRef<T> {\r\n const injector = Injector.create({\r\n parent: parentInjector,\r\n providers: this.moduleWithProviders.providers as StaticProvider[],\r\n });\r\n\r\n const compiler = injector.get(Compiler);\r\n const factory = compiler.compileModuleSync(this.moduleType);\r\n\r\n return factory.create(injector);\r\n }\r\n}\r\n\r\nexport function featuresFactory(\r\n configState: ConfigStateService,\r\n featureKeys: string[],\r\n mapFn: (features) => any = features => features,\r\n) {\r\n return configState.getFeatures$(featureKeys).pipe(filter(Boolean), map(mapFn));\r\n}\r\n","export function downloadBlob(blob: Blob, filename: string) {\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement('a');\r\n\r\n link.href = blobUrl;\r\n link.download = filename;\r\n\r\n document.body.appendChild(link);\r\n\r\n link.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window,\r\n }),\r\n );\r\n\r\n document.body.removeChild(link);\r\n}\r\n","export function isNumber(value: string | number): boolean {\r\n return value == Number(value);\r\n}\r\n","import { ABP } from '../models/common';\r\nimport { isNumber } from './number-utils';\r\n\r\nexport function mapEnumToOptions<T>(_enum: T): ABP.Option<T>[] {\r\n const options: ABP.Option<T>[] = [];\r\n\r\n for (const member in _enum)\r\n if (!isNumber(member))\r\n options.push({\r\n key: member,\r\n value: _enum[member],\r\n });\r\n\r\n return options;\r\n}\r\n","export function uuid(a?: any): string {\r\n return a\r\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\r\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\r\n}\r\n\r\nexport function generateHash(value: string): number {\r\n let hashed = 0;\r\n let charCode: number;\r\n\r\n for (let i = 0; i < value.length; i++) {\r\n charCode = value.charCodeAt(i);\r\n hashed = (hashed << 5) - hashed + charCode;\r\n hashed |= 0;\r\n }\r\n return hashed;\r\n}\r\n\r\nexport function generatePassword(length = 8) {\r\n length = Math.min(Math.max(4, length), 128);\r\n\r\n const lowers = 'abcdefghijklmnopqrstuvwxyz';\r\n const uppers = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n const numbers = '0123456789';\r\n const specials = '!@#$%&*()_+{}<>?[]./';\r\n const all = lowers + uppers + numbers + specials;\r\n\r\n const getRandom = (chrSet: string) => chrSet[Math.floor(Math.random() * chrSet.length)];\r\n\r\n const password = Array({ length });\r\n password[0] = getRandom(lowers);\r\n password[1] = getRandom(uppers);\r\n password[2] = getRandom(numbers);\r\n password[3] = getRandom(specials);\r\n\r\n for (let i = 4; i < length; i++) {\r\n password[i] = getRandom(all);\r\n }\r\n\r\n return password.sort(() => 0.5 - Math.random()).join('');\r\n}\r\n","export class CrossOriginStrategy {\r\n constructor(public crossorigin: 'anonymous' | 'use-credentials', public integrity?: string) {}\r\n\r\n setCrossOrigin<T extends HTMLElement>(element: T) {\r\n if (this.integrity) element.setAttribute('integrity', this.integrity);\r\n element.setAttribute('crossorigin', this.crossorigin);\r\n }\r\n}\r\n\r\nexport class NoCrossOriginStrategy extends CrossOriginStrategy {\r\n setCrossOrigin() {}\r\n}\r\n\r\nexport const CROSS_ORIGIN_STRATEGY = {\r\n Anonymous(integrity?: string) {\r\n return new CrossOriginStrategy('anonymous', integrity);\r\n },\r\n UseCredentials(integrity?: string) {\r\n return new CrossOriginStrategy('use-credentials', integrity);\r\n },\r\n None() {\r\n return new NoCrossOriginStrategy(null);\r\n },\r\n};\r\n","export class DomStrategy {\r\n constructor(\r\n public target: HTMLElement = document.head,\r\n public position: InsertPosition = 'beforeend',\r\n ) {}\r\n\r\n insertElement<T extends HTMLElement>(element: T) {\r\n this.target.insertAdjacentElement(this.position, element);\r\n }\r\n}\r\n\r\nexport const DOM_STRATEGY = {\r\n AfterElement(element: HTMLElement) {\r\n return new DomStrategy(element, 'afterend');\r\n },\r\n AppendToBody() {\r\n return new DomStrategy(document.body, 'beforeend');\r\n },\r\n AppendToHead() {\r\n return new DomStrategy(document.head, 'beforeend');\r\n },\r\n BeforeElement(element: HTMLElement) {\r\n return new DomStrategy(element, 'beforebegin');\r\n },\r\n PrependToHead() {\r\n return new DomStrategy(document.head, 'afterbegin');\r\n },\r\n};\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { CrossOriginStrategy, CROSS_ORIGIN_STRATEGY } from '../strategies/cross-origin.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from '../strategies/dom.strategy';\r\n\r\nexport function fromLazyLoad<T extends Event>(\r\n element: HTMLScriptElement | HTMLLinkElement,\r\n domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n): Observable<T> {\r\n crossOriginStrategy.setCrossOrigin(element);\r\n domStrategy.insertElement(element);\r\n\r\n return new Observable((observer: Observer<T>) => {\r\n element.onload = (event: T) => {\r\n clearCallbacks(element);\r\n observer.next(event);\r\n observer.complete();\r\n };\r\n\r\n const handleError = createErrorHandler(observer, element);\r\n\r\n element.onerror = handleError;\r\n element.onabort = handleError;\r\n element.onemptied = handleError;\r\n element.onstalled = handleError;\r\n element.onsuspend = handleError;\r\n\r\n return () => {\r\n clearCallbacks(element);\r\n observer.complete();\r\n };\r\n });\r\n}\r\n\r\nfunction createErrorHandler(observer: Observer<Event>, element: HTMLElement) {\r\n return function (event: Event | string) {\r\n clearCallbacks(element);\r\n element.parentNode.removeChild(element);\r\n observer.error(event);\r\n };\r\n}\r\n\r\nfunction clearCallbacks(element: HTMLElement) {\r\n element.onload = null;\r\n element.onerror = null;\r\n element.onabort = null;\r\n element.onemptied = null;\r\n element.onstalled = null;\r\n element.onsuspend = null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ContentStrategy } from '../strategies/content.strategy';\r\nimport { generateHash } from '../utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DomInsertionService {\r\n private readonly inserted = new Set<number>();\r\n\r\n insertContent<T extends HTMLScriptElement | HTMLStyleElement>(\r\n contentStrategy: ContentStrategy<T>,\r\n ): T {\r\n const hash = generateHash(contentStrategy.content);\r\n\r\n if (this.inserted.has(hash)) return;\r\n\r\n const element = contentStrategy.insertElement();\r\n this.inserted.add(hash);\r\n\r\n return element;\r\n }\r\n\r\n removeContent(element: HTMLScriptElement | HTMLStyleElement) {\r\n const hash = generateHash(element.textContent);\r\n this.inserted.delete(hash);\r\n\r\n element.parentNode.removeChild(element);\r\n }\r\n\r\n has(content: string): boolean {\r\n const hash = generateHash(content);\r\n\r\n return this.inserted.has(hash);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nexport interface ResourceWaitState {\r\n resources: Set<string>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResourceWaitService {\r\n private store = new InternalStore<ResourceWaitState>({ resources: new Set() });\r\n\r\n getLoading() {\r\n return !!this.store.state.resources.size;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ resources }) => !!resources.size);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ resources }) => !!resources.size);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ resources: new Set() });\r\n }\r\n\r\n addResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.add(resource);\r\n this.store.patch({ resources });\r\n }\r\n\r\n deleteResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.delete(resource);\r\n this.store.patch({ resources });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { concat, Observable, of, throwError } from 'rxjs';\r\nimport { delay, retryWhen, shareReplay, take, tap } from 'rxjs/operators';\r\nimport { LoadingStrategy } from '../strategies';\r\nimport { ResourceWaitService } from './resource-wait.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LazyLoadService {\r\n readonly loaded = new Map<string, HTMLScriptElement | HTMLLinkElement | null>();\r\n\r\n constructor(private resourceWaitService: ResourceWaitService) {}\r\n\r\n load(strategy: LoadingStrategy, retryTimes?: number, retryDelay?: number): Observable<Event> {\r\n if (this.loaded.has(strategy.path)) return of(new CustomEvent('load'));\r\n this.resourceWaitService.addResource(strategy.path);\r\n return strategy.createStream().pipe(\r\n retryWhen(error$ =>\r\n concat(\r\n error$.pipe(delay(retryDelay), take(retryTimes)),\r\n throwError(new CustomEvent('error')),\r\n ),\r\n ),\r\n tap(() => {\r\n this.loaded.set(strategy.path, strategy.element);\r\n this.resourceWaitService.deleteResource(strategy.path);\r\n }),\r\n delay(100),\r\n shareReplay({ bufferSize: 1, refCount: true }),\r\n );\r\n }\r\n\r\n remove(path: string): boolean {\r\n const element = this.loaded.get(path);\r\n\r\n if (!element) return false;\r\n\r\n element.parentNode.removeChild(element);\r\n this.loaded.delete(path);\r\n return true;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken<number>('LIST_QUERY_DEBOUNCE_TIME');\r\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport {\r\n BehaviorSubject,\r\n MonoTypeOperatorFunction,\r\n Observable,\r\n of,\r\n ReplaySubject,\r\n Subject,\r\n} from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n filter,\r\n shareReplay,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { PagedResultDto } from '../models/dtos';\r\nimport { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';\r\n\r\n@Injectable()\r\nexport class ListService<QueryParamsType = ABP.PageQueryParams | any> implements OnDestroy {\r\n private _filter = '';\r\n set filter(value: string) {\r\n this._filter = value;\r\n this.get();\r\n }\r\n get filter(): string {\r\n return this._filter;\r\n }\r\n\r\n private _maxResultCount = 10;\r\n set maxResultCount(value: number) {\r\n this._maxResultCount = value;\r\n this.get();\r\n }\r\n get maxResultCount(): number {\r\n return this._maxResultCount;\r\n }\r\n\r\n private _skipCount = 0;\r\n private _page = 0;\r\n set page(value: number) {\r\n if (value === this._page) return;\r\n\r\n this._page = value;\r\n this.get();\r\n }\r\n get page(): number {\r\n return this._page;\r\n }\r\n\r\n private _sortKey = '';\r\n set sortKey(value: string) {\r\n this._sortKey = value;\r\n this.get();\r\n }\r\n get sortKey(): string {\r\n return this._sortKey;\r\n }\r\n\r\n private _sortOrder = '';\r\n set sortOrder(value: string) {\r\n this._sortOrder = value;\r\n this.get();\r\n }\r\n get sortOrder(): string {\r\n return this._sortOrder;\r\n }\r\n\r\n private _query$ = new ReplaySubject<QueryParamsType>(1);\r\n\r\n get query$(): Observable<QueryParamsType> {\r\n return this._query$\r\n .asObservable()\r\n .pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));\r\n }\r\n\r\n private _isLoading$ = new BehaviorSubject(false);\r\n\r\n private destroy$ = new Subject();\r\n\r\n private delay: MonoTypeOperatorFunction<QueryParamsType>;\r\n\r\n get isLoading$(): Observable<boolean> {\r\n return this._isLoading$.asObservable();\r\n }\r\n\r\n get = () => {\r\n this.resetPageWhenUnchanged();\r\n this.next();\r\n };\r\n\r\n getWithoutPageReset = () => {\r\n this.next();\r\n };\r\n\r\n constructor(injector: Injector) {\r\n const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);\r\n this.delay = delay ? debounceTime(delay) : tap();\r\n this.get();\r\n }\r\n\r\n hookToQuery<T>(\r\n streamCreatorCallback: QueryStreamCreatorCallback<T, QueryParamsType>,\r\n ): Observable<PagedResultDto<T>> {\r\n this._isLoading$.next(true);\r\n\r\n return this.query$.pipe(\r\n switchMap(query => streamCreatorCallback(query).pipe(catchError(() => of(null)))),\r\n filter(Boolean),\r\n tap(() => this._isLoading$.next(false)),\r\n shareReplay<any>({ bufferSize: 1, refCount: true }),\r\n takeUntil(this.destroy$),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n }\r\n\r\n private resetPageWhenUnchanged() {\r\n const skipCount = this._page * this._maxResultCount;\r\n\r\n if (skipCount === this._skipCount) {\r\n this._page = 0;\r\n this._skipCount = 0;\r\n } else this._skipCount = skipCount;\r\n }\r\n\r\n private next() {\r\n this._query$.next({\r\n filter: this._filter || undefined,\r\n maxResultCount: this._maxResultCount,\r\n skipCount: this._page * this._maxResultCount,\r\n sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,\r\n } as any as QueryParamsType);\r\n }\r\n}\r\n\r\nexport type QueryStreamCreatorCallback<T, QueryParamsType = ABP.PageQueryParams> = (\r\n query: QueryParamsType,\r\n) => Observable<PagedResultDto<T>>;\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { NavigationStart } from '@angular/router';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { RouterEvents } from './router-events.service';\r\n\r\nexport interface RouterWaitState {\r\n loading: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RouterWaitService {\r\n private store = new InternalStore<RouterWaitState>({ loading: false });\r\n private destroy$ = new Subject();\r\n private delay: number;\r\n constructor(private routerEvents: RouterEvents, injector: Injector) {\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n this.updateLoadingStatusOnNavigationEvents();\r\n }\r\n\r\n private updateLoadingStatusOnNavigationEvents() {\r\n this.routerEvents\r\n .getAllNavigationEvents()\r\n .pipe(\r\n map(event => event instanceof NavigationStart),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n )\r\n .subscribe(status => {\r\n this.setLoading(status);\r\n });\r\n }\r\n\r\n getLoading() {\r\n return this.store.state.loading;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ loading }) => loading);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ loading }) => loading);\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.store.patch({ loading });\r\n }\r\n}\r\n","import { Injectable, TrackByFunction } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\n\r\nexport const trackBy =\r\n <T = any>(key: keyof T): TrackByFunction<T> =>\r\n (_, item) =>\r\n item[key];\r\n\r\nexport const trackByDeep =\r\n <T = any>(\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n ...keys: T extends object ? O.Paths<T> : never\r\n ): TrackByFunction<T> =>\r\n (_, item) =>\r\n keys.reduce((acc, key) => acc[key], item);\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TrackByService<ItemType = any> {\r\n by = trackBy;\r\n\r\n byDeep = trackByDeep;\r\n}\r\n","import { ViewContainerRef } from '@angular/core';\r\n\r\nexport abstract class ContainerStrategy {\r\n constructor(public containerRef: ViewContainerRef) {}\r\n\r\n abstract getIndex(): number;\r\n\r\n prepare(): void {}\r\n}\r\n\r\nexport class ClearContainerStrategy extends ContainerStrategy {\r\n getIndex(): number {\r\n return 0;\r\n }\r\n\r\n prepare() {\r\n this.containerRef.clear();\r\n }\r\n}\r\n\r\nexport class InsertIntoContainerStrategy extends ContainerStrategy {\r\n constructor(containerRef: ViewContainerRef, private index: number) {\r\n super(containerRef);\r\n }\r\n\r\n getIndex() {\r\n return Math.min(Math.max(0, this.index), this.containerRef.length);\r\n }\r\n}\r\n\r\nexport const CONTAINER_STRATEGY = {\r\n Clear(containerRef: ViewContainerRef) {\r\n return new ClearContainerStrategy(containerRef);\r\n },\r\n Append(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, containerRef.length);\r\n },\r\n Prepend(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, 0);\r\n },\r\n Insert(containerRef: ViewContainerRef, index: number) {\r\n return new InsertIntoContainerStrategy(containerRef, index);\r\n },\r\n};\r\n","export abstract class ContentSecurityStrategy {\r\n constructor(public nonce?: string) {}\r\n\r\n abstract applyCSP(element: HTMLScriptElement | HTMLStyleElement): void;\r\n}\r\n\r\nexport class LooseContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor(nonce: string) {\r\n super(nonce);\r\n }\r\n\r\n applyCSP(element: HTMLScriptElement | HTMLStyleElement) {\r\n element.setAttribute('nonce', this.nonce);\r\n }\r\n}\r\n\r\nexport class NoContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor() {\r\n super();\r\n }\r\n\r\n applyCSP(_: HTMLScriptElement | HTMLStyleElement) {}\r\n}\r\n\r\nexport const CONTENT_SECURITY_STRATEGY = {\r\n Loose(nonce: string) {\r\n return new LooseContentSecurityStrategy(nonce);\r\n },\r\n None() {\r\n return new NoContentSecurityStrategy();\r\n },\r\n};\r\n","import { ContentSecurityStrategy, CONTENT_SECURITY_STRATEGY } from './content-security.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport type ElementOptions<T extends HTMLScriptElement | HTMLStyleElement = any> = Partial<{\r\n [key in keyof T]: T[key];\r\n}>;\r\n\r\nexport abstract class ContentStrategy<T extends HTMLScriptElement | HTMLStyleElement = any> {\r\n constructor(\r\n public content: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected contentSecurityStrategy: ContentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(),\r\n protected options: ElementOptions<T> = {},\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n insertElement(): T {\r\n const element = this.createElement();\r\n\r\n if (this.options && Object.keys(this.options).length > 0) {\r\n Object.keys(this.options).forEach(key => (element[key] = this.options[key]));\r\n }\r\n\r\n this.contentSecurityStrategy.applyCSP(element);\r\n this.domStrategy.insertElement(element);\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleContentStrategy extends ContentStrategy<HTMLStyleElement> {\r\n createElement(): HTMLStyleElement {\r\n const element = document.createElement('style');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class ScriptContentStrategy extends ContentStrategy<HTMLScriptElement> {\r\n createElement(): HTMLScriptElement {\r\n const element = document.createElement('script');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const CONTENT_STRATEGY = {\r\n AppendScriptToBody(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);\r\n },\r\n AppendScriptToHead(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n AppendStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n PrependStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);\r\n },\r\n};\r\n","import { ComponentRef, TemplateRef, Type } from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models';\r\n\r\nexport abstract class ContextStrategy<T = any> {\r\n constructor(public context: Partial<ContextType<T>>) {}\r\n\r\n setContext(componentRef?: ComponentRef<InferredInstanceOf<T>>): Partial<ContextType<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class NoContextStrategy<\r\n T extends Type<any> | TemplateRef<any> = any,\r\n> extends ContextStrategy<T> {\r\n constructor() {\r\n super(undefined);\r\n }\r\n}\r\n\r\nexport class ComponentContextStrategy<T extends Type<any> = any> extends ContextStrategy<T> {\r\n setContext(componentRef: ComponentRef<InferredInstanceOf<T>>): Partial<InferredInstanceOf<T>> {\r\n Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));\r\n componentRef.changeDetectorRef.detectChanges();\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class TemplateContextStrategy<T extends TemplateRef<any> = any> extends ContextStrategy<T> {\r\n setContext(): Partial<InferredContextOf<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport const CONTEXT_STRATEGY = {\r\n None<T extends Type<any> | TemplateRef<any> = any>() {\r\n return new NoContextStrategy<T>();\r\n },\r\n Component<T extends Type<any> = any>(context: Partial<InferredInstanceOf<T>>) {\r\n return new ComponentContextStrategy<T>(context);\r\n },\r\n Template<T extends TemplateRef<any> = any>(context: Partial<InferredContextOf<T>>) {\r\n return new TemplateContextStrategy<T>(context);\r\n },\r\n};\r\n\r\ntype ContextType<T> = T extends Type<infer U> | TemplateRef<infer U> ? U : never;\r\n","import { Observable, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { fromLazyLoad } from '../utils';\r\nimport { CrossOriginStrategy, CROSS_ORIGIN_STRATEGY } from './cross-origin.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport abstract class LoadingStrategy<T extends HTMLScriptElement | HTMLLinkElement = any> {\r\n element: T;\r\n\r\n constructor(\r\n public path: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n createStream<E extends Event>(): Observable<E> {\r\n this.element = this.createElement();\r\n\r\n return of(null).pipe(\r\n switchMap(() => fromLazyLoad<E>(this.element, this.domStrategy, this.crossOriginStrategy)),\r\n );\r\n }\r\n}\r\n\r\nexport class ScriptLoadingStrategy extends LoadingStrategy<HTMLScriptElement> {\r\n constructor(src: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(src, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLScriptElement {\r\n const element = document.createElement('script');\r\n element.src = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleLoadingStrategy extends LoadingStrategy<HTMLLinkElement> {\r\n constructor(href: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(href, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLLinkElement {\r\n const element = document.createElement('link');\r\n element.rel = 'stylesheet';\r\n element.href = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const LOADING_STRATEGY = {\r\n AppendScriptToBody(src: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.None(),\r\n );\r\n },\r\n AppendAnonymousScriptToBody(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n};\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n Injector,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models/utility';\r\nimport { ContainerStrategy, CONTAINER_STRATEGY } from './container.strategy';\r\nimport { ContextStrategy, CONTEXT_STRATEGY } from './context.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport abstract class ProjectionStrategy<T = any> {\r\n constructor(public content: T) {}\r\n\r\n abstract injectContent(injector: Injector): ComponentRefOrEmbeddedViewRef<T>;\r\n}\r\n\r\nexport class ComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n this.containerStrategy.prepare();\r\n\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const factory = resolver.resolveComponentFactory<InferredInstanceOf<T>>(this.content);\r\n\r\n const componentRef = this.containerStrategy.containerRef.createComponent(\r\n factory,\r\n this.containerStrategy.getIndex(),\r\n injector,\r\n );\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class RootComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n private domStrategy: DomStrategy = DOM_STRATEGY.AppendToBody(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n const appRef = injector.get(ApplicationRef);\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const componentRef = resolver\r\n .resolveComponentFactory<InferredInstanceOf<T>>(this.content)\r\n .create(injector);\r\n\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n appRef.attachView(componentRef.hostView);\r\n const element: HTMLElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\r\n this.domStrategy.insertElement(element);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class TemplateProjectionStrategy<T extends TemplateRef<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n templateRef: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(templateRef);\r\n }\r\n\r\n injectContent() {\r\n this.containerStrategy.prepare();\r\n\r\n const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(\r\n this.content,\r\n this.contextStrategy.context,\r\n this.containerStrategy.getIndex(),\r\n );\r\n embeddedViewRef.detectChanges();\r\n\r\n return embeddedViewRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport const PROJECTION_STRATEGY = {\r\n AppendComponentToBody<T extends Type<unknown>>(\r\n component: T,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new RootComponentProjectionStrategy<T>(\r\n component,\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n PrependComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n PrependTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n ProjectComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n ProjectTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n};\r\n\r\ntype ComponentRefOrEmbeddedViewRef<T> = T extends Type<infer U>\r\n ? ComponentRef<U>\r\n : T extends TemplateRef<infer C>\r\n ? EmbeddedViewRef<C>\r\n : never;\r\n","import { InjectionToken, inject } from '@angular/core';\r\nimport { EnvironmentService } from '../services/environment.service';\r\n\r\nexport const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken<() => void>(\r\n 'NAVIGATE_TO_MANAGE_PROFILE',\r\n {\r\n providedIn: 'root',\r\n factory: () => {\r\n const environment = inject(EnvironmentService);\r\n\r\n return () => {\r\n window.open(\r\n `${environment.getEnvironment().oAuthConfig.issuer}/Account/Manage?returnUrl=${\r\n window.location.href\r\n }`,\r\n '_self',\r\n );\r\n };\r\n },\r\n },\r\n);\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface MinAgeError {\r\n minAge: {\r\n age: number;\r\n };\r\n}\r\n\r\nexport interface MinAgeOptions {\r\n age?: number;\r\n}\r\n\r\nexport function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): MinAgeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidMinAge(control.value, age) ? null : { minAge: { age } };\r\n };\r\n}\r\n\r\nfunction isValidMinAge(value: string | number, minAge: number) {\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() - minAge);\r\n date.setHours(23, 59, 59, 999);\r\n\r\n return Number(new Date(value)) <= date.valueOf();\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface CreditCardError {\r\n creditCard: true;\r\n}\r\n\r\nexport function validateCreditCard(): ValidatorFn {\r\n return (control: AbstractControl): CreditCardError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidCreditCard(String(control.value)) ? null : { creditCard: true };\r\n };\r\n}\r\n\r\nfunction isValidCreditCard(value: string): boolean {\r\n value = value.replace(/[ -]/g, '');\r\n\r\n if (!/^[0-9]{13,19}$/.test(value)) return false;\r\n\r\n let checksum = 0;\r\n let multiplier = 1;\r\n\r\n for (let i = value.length; i > 0; i--) {\r\n const digit = Number(value[i - 1]) * multiplier;\r\n checksum += (digit % 10) + ~~(digit / 10);\r\n\r\n multiplier = (multiplier * 2) % 3;\r\n }\r\n\r\n return checksum % 10 === 0;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RangeError {\r\n range: {\r\n max: number;\r\n min: number;\r\n };\r\n}\r\n\r\nexport interface RangeOptions {\r\n maximum?: number;\r\n minimum?: number;\r\n}\r\n\r\nexport function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): RangeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = Number(control.value);\r\n return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum);\r\n };\r\n}\r\n\r\nfunction getMaxError(value: number, max: number, min: number): RangeError {\r\n return value > max ? { range: { max, min } } : null;\r\n}\r\n\r\nfunction getMinError(value: number, min: number, max: number): RangeError {\r\n return value < min ? { range: { min, max } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RequiredError {\r\n required: true;\r\n}\r\n\r\nexport interface RequiredOptions {\r\n allowEmptyStrings?: boolean;\r\n}\r\n\r\nexport function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): RequiredError | null => {\r\n return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true };\r\n };\r\n}\r\n\r\nfunction isValidRequired(value: any, allowEmptyStrings: boolean): boolean {\r\n if (value || value === 0 || value === false) return true;\r\n\r\n if (allowEmptyStrings && value === '') return true;\r\n\r\n return false;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface StringLengthError {\r\n maxlength?: {\r\n requiredLength: number;\r\n };\r\n minlength?: {\r\n requiredLength: number;\r\n };\r\n}\r\n\r\nexport interface StringLengthOptions {\r\n maximumLength?: number;\r\n minimumLength?: number;\r\n}\r\n\r\nexport function validateStringLength({\r\n maximumLength = Infinity,\r\n minimumLength = 0,\r\n}: StringLengthOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): StringLengthError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = String(control.value);\r\n\r\n return getMinLengthError(value, minimumLength) || getMaxLengthError(value, maximumLength);\r\n };\r\n}\r\n\r\nfunction getMaxLengthError(value: string, requiredLength: number): StringLengthError {\r\n return value.length > requiredLength ? { maxlength: { requiredLength } } : null;\r\n}\r\n\r\nfunction getMinLengthError(value: string, requiredLength: number): StringLengthError {\r\n return value.length < requiredLength ? { minlength: { requiredLength } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface UrlError {\r\n url: true;\r\n}\r\n\r\nexport function validateUrl(): ValidatorFn {\r\n return (control: AbstractControl): UrlError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidUrl(control.value) ? null : { url: true };\r\n };\r\n}\r\n\r\nfunction isValidUrl(value: string): boolean {\r\n if (/^http(s)?:\\/\\/[^/]/.test(value) || /^ftp:\\/\\/[^/]/.test(value)) {\r\n const a = document.createElement('a');\r\n a.href = value;\r\n return !!a.host;\r\n }\r\n\r\n return false;\r\n}\r\n","import { Validators } from '@angular/forms';\r\nimport { validateMinAge } from './age.validator';\r\nimport { validateCreditCard } from './credit-card.validator';\r\nimport { validateRange } from './range.validator';\r\nimport { validateRequired } from './required.validator';\r\nimport { validateStringLength } from './string-length.validator';\r\nimport { validateUrl } from './url.validator';\r\nexport * from './age.validator';\r\nexport * from './credit-card.validator';\r\nexport * from './range.validator';\r\nexport * from './required.validator';\r\nexport * from './string-length.validator';\r\nexport * from './url.validator';\r\n\r\nexport const AbpValidators = {\r\n creditCard: validateCreditCard,\r\n emailAddress: () => Validators.email,\r\n minAge: validateMinAge,\r\n range: validateRange,\r\n required: validateRequired,\r\n stringLength: validateStringLength,\r\n url: validateUrl,\r\n};\r\n","// export * from './lib/handlers';\r\nexport * from './lib/abstracts';\r\nexport * from './lib/components';\r\nexport * from './lib/constants';\r\nexport * from './lib/core.module';\r\nexport * from './lib/directives';\r\nexport * from './lib/enums';\r\nexport * from './lib/guards';\r\nexport * from './lib/interceptors';\r\nexport * from './lib/localization.module';\r\nexport * from './lib/models';\r\nexport * from './lib/pipes';\r\nexport * from './lib/proxy/pages/abp/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/api-exploring';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/http/modeling';\r\nexport * from './lib/proxy/volo/abp/localization';\r\nexport * from './lib/proxy/volo/abp/models';\r\nexport * from './lib/services';\r\nexport * from './lib/strategies';\r\nexport * from './lib/tokens';\r\nexport * from './lib/utils';\r\nexport * from './lib/validators';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA;MAEa,wBAAwB;IAoCnC,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAvBrC,YAAO,GAAuC,KAAK,IAAI,KAAiB,CAAC;QAGzE,iBAAY,GAAyC,KAAK,IAAI,KAAK,CAAC;QAqBlE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAC9C;IApBD,IACI,KAAK,CAAC,KAAQ;QAChB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE7E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC;KACzC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAMD,iBAAiB;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;IAED,UAAU,CAAC,KAAQ;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAC7D,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;KAChD;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAC,UAAmB;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;;qHA7DU,wBAAwB;yGAAxB,wBAAwB,8KADd,EAAE;2FACZ,wBAAwB;kBADpC,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;+FAQzB,QAAQ;sBADP,KAAK;gBAIN,QAAQ;sBADP,KAAK;gBAIN,OAAO;sBADN,KAAK;gBAIN,YAAY;sBADX,KAAK;gBAIF,KAAK;sBADR,KAAK;;;MCnBK,aAAa,GAAG,IAAI,cAAc,CAAC,eAAe,EAAE;SAEjD,uBAAuB,CAAC,aAAiC;IACvE,IAAI,aAAa,EAAE;QACjB,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;KAClE;AACH,CAAC;MAEY,cAAc,GAAG,IAAI,eAAe,CAAC,EAAE;;MCTvC,YAAY,GAAG,IAAI,cAAc,CAAW,cAAc,EAAE;SAEzD,kBAAkB,CAAC,EAAE,GAAG,OAAO,EAAY;IACzD,OAAO;QACL,GAAG,OAAO;KACC,CAAC;AAChB;;ACPA;SACgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,sGAAsG,CAAC,IAAI,CAChH,MAAM,CACP;UACG,KAAK;UACL,KAAK,CAAC;AACZ,CAAC;SAEe,eAAe,CAAC,YAAqD;IACnF,OAAO,CAAC,YAAoB,EAAE,GAAW,EAAE,YAAoB;QAC7D,IAAI,YAAY,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QAErC,MAAM,QAAQ,GAAG,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ;YAAE,OAAO,YAAY,CAAC;QAEnC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC;SAEe,2BAA2B,CAAC,YAAqD;IAC/F,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAEhE,OAAO,CAAC,aAAuB,EAAE,IAAc,EAAE,YAAoB;QACnE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC5D,OAAO,SAAS,IAAI,YAAY,CAAC;KAClC,CAAC;AACJ,CAAC;SAEe,kCAAkC,CAChD,YAAqD;IAErD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAEhE,OAAO,CAAC,aAAuB,EAAE,IAAc,EAAE,UAA8B;QAC7E,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,YAAY,GAAG,UAAU,GAAG,YAAY,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,YAAY,KAAK,GAAG,EAAE,CAAC;KAC5F,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,YAAqD;IACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAE/C,OAAO,CAAC,aAAuB,EAAE,IAAc;QAC7C,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7F,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACpD,IAAI,SAAS;oBAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;aACxD;SACF;QAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;KAC1E,CAAC;AACJ;;SChEgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,CAAC,GAAW;QACjB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,KAAK;YACvF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,MAAM,CAAC;SACf,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpD,OAAO,GAAG,CAAC;SACZ,EAAE,EAA8B,CAAC,CAAC;KACpC,CAAC;AACJ,CAAC;SAEe,WAAW,CAAC,IAAY,EAAE,MAAgB;IACxD,OAAO,IAAI;SACR,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;SACpF,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;SAEe,eAAe,CAAC,KAAU;IACxC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;UACrC,KAAK;aACF,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;UAC1B,KAAK,CAAC;AACZ;;SChCgB,IAAI;IAClB,MAAM,EAAE,GAAG,eAAc,CAAC;IAC1B,OAAO,EAAE,CAAC;AACZ,CAAC;SAEe,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;AAC7C,CAAC;SAEe,iBAAiB,CAAC,GAAG;IACnC,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC;AAC3C,CAAC;SAEe,MAAM,CAAC,GAAG;IACxB,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;SAEe,QAAQ,CAAC,GAAG;IAC1B,OAAO,GAAG,YAAY,MAAM,CAAC;AAC/B,CAAC;SAEe,OAAO,CAAC,GAAG;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;SAEe,mBAAmB,CAAC,GAAG;IACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;SAEe,MAAM,CAAC,GAAG;IACxB,OAAO,GAAG,YAAY,IAAI,CAAC;AAC7B,CAAC;SAEe,0BAA0B,CAAC,GAAG;IAC5C,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClD;;SC1BgB,SAAS,CAAC,MAAM,EAAE,MAAM;IACtC,IAAI,0BAA0B,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE;QAC5E,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7C;SAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;QACjE,OAAO,EAAE,CAAC;KACX;SAAM;QACL,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;KACzC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM;IAC1C,MAAM,gBAAgB,GACpB,iBAAiB,CAAC,MAAM,CAAC;QACzB,iBAAiB,CAAC,MAAM,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC;QACf,OAAO,CAAC,MAAM,CAAC;QACf,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjB,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC;QACd,MAAM,CAAC,MAAM,CAAC,CAAC;;;;;IAMjB,IAAI,gBAAgB,EAAE;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;KACzC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG;QACxC,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;KACf,EAAE,EAAE,CAAC,CAAC;AACT;;MCvCa,aAAa;IAmBxB,YAAoB,YAAmB;QAAnB,iBAAY,GAAZ,YAAY,CAAO;QAlB/B,WAAM,GAAG,IAAI,eAAe,CAAQ,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,YAAO,GAAG,IAAI,OAAO,EAAsB,CAAC;QAMpD,eAAU,GAAG,CACX,QAAiC,EACjC,YAA+C,OAAO,KACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,gBAAW,GAAG,CACZ,QAA8C,EAC9C,WAAW,CAAC,CAAQ,KAAK,CAAC,KAAK,SAAS,KACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;KAEb;IAd3C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;IAcD,KAAK,CAAC,KAAqB;QACzB,IAAI,YAAY,GAAG,KAAc,CAAC;QAElC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtD,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAkC,CAAC,CAAC;KACvD;IAED,SAAS,CAAC,KAAyB;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAED,GAAG,CAAC,KAAY;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAA2B,CAAC,CAAC;KAChD;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC7B;;;AC5CH,MAAM,WAAW,GAAG,CAAC,GAAW,KAAK,CAAC,IAAU,KAC9C,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;MAGzC,kBAAkB;IAD/B;QAEmB,UAAK,GAAG,IAAI,aAAa,CAAC,EAAiB,CAAC,CAAC;KAyB/D;IAvBC,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAC/B;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;KAC9C;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAChD;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC/E;IAED,QAAQ,CAAC,WAAwB;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC7B;;+GAzBU,kBAAkB;mHAAlB,kBAAkB,cADL,MAAM;2FACnB,kBAAkB;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCJrB,wBAAwB;IADrC;QAEU,eAAU,GAAG,IAAI,OAAO,EAAqB,CAAC;QAC9C,aAAQ,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAC;QAchE,gBAAW,GAAG,CAAC,KAAwB;YACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SAC7C,CAAC;KACH;IAhBC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC5B;;qHAdU,wBAAwB;yHAAxB,wBAAwB,cADX,MAAM;2FACnB,wBAAwB;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCUrB,WAAW;IACtB,YACkC,OAAiB,EACvC,IAAgB,EAChB,WAA+B,EAC/B,iBAA2C;QAHrB,YAAO,GAAP,OAAO,CAAU;QACvC,SAAI,GAAJ,IAAI,CAAY;QAChB,gBAAW,GAAX,WAAW,CAAoB;QAC/B,sBAAiB,GAAjB,iBAAiB,CAA0B;KACnD;IAEM,eAAe,CAAC,OAAe;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC5C;IAED,WAAW,CAAC,GAAQ;QAClB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,OAAO,CACL,OAAyC,EACzC,MAAoB,EACpB,GAAY;QAEZ,MAAM,GAAG,MAAM,IAAK,EAAkB,CAAC;QACvC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;QAC/C,MAAM,EAAE,OAAO,sBAAsB,eAAe,EAAE,GAAG,MAAM,CAAC;QAEhE,OAAO,IAAI,CAAC,IAAI;aACb,OAAO,CAAI,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;YACrC,OAAO;YACP,IAAI,MAAM,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;aACxD,CAAC;YACF,GAAG,OAAO;SACJ,CAAC;aACR,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzF;IAEO,SAAS,CAAC,MAAmB,EAAE,OAA4B;QACjE,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,wBAAwB,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;YAChD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB;gBAAE,OAAO,GAAG,CAAC;YACtE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,OAAO,GAAG,CAAC;SACZ,EAAE,UAAU,CAAC,CAAC;KAChB;;wGAhDU,WAAW,kBAEZ,YAAY;4GAFX,WAAW,cAFV,MAAM;2FAEP,WAAW;kBAHvB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;0BAGI,MAAM;2BAAC,YAAY;;;MCTX,kCAAkC;IAa7C,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAZ5C,YAAO,GAAG,KAAK,CAAC;KAYgC;IAVhD,GAAG;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAC7B;YACE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,oCAAoC;SAC1C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;KACH;;+HAXU,kCAAkC;mIAAlC,kCAAkC,cAFjC,MAAM;2FAEP,kCAAkC;kBAH9C,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCIY,kBAAkB;IAS7B,YAAoB,gBAAoD;QAApD,qBAAgB,GAAhB,gBAAgB,CAAoC;QARvD,UAAK,GAAG,IAAI,aAAa,CAAC,EAAiC,CAAC,CAAC;QAMtE,kBAAa,GAAG,IAAI,OAAO,EAAE,CAAC;QAGpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IARD,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAC/B;IAQO,gBAAgB;QACtB,IAAI,CAAC,aAAa;aACf,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;aAClD,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1C;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACnD;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;KAC9C;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;IAED,QAAQ,CAAC,IAAuB;QAC9B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK;aACd,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC;aAC1B,IAAI,CACH,GAAG,CAAC,KAAK;YACP,OAAQ,IAAiB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG;gBAC7C,IAAI,GAAG,EAAE;oBACP,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjB;gBAED,OAAO,SAAS,CAAC;aAClB,EAAE,KAAK,CAAC,CAAC;SACX,CAAC,CACH,CAAC;KACL;IAED,OAAO,CAAC,IAAuB;QAC7B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAQ,IAAiB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAG;YAC7C,IAAI,GAAG,EAAE;gBACP,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;aACjB;YAED,OAAO,SAAS,CAAC;SAClB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;KACjD;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;KACtE;IAED,WAAW,CAAC,IAAc;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KACjF;IAED,YAAY,CAAC,IAAc;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE;YACxC,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAAE,OAAO;YAE9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SACjF,CAAC,CAAC;KACJ;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;KAChD;IAED,WAAW,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;KACrE;IAED,WAAW,CAAC,OAAgB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC,OAAO;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;IAED,YAAY,CAAC,OAAgB;QAC3B,OAAO,IAAI,CAAC,KAAK;aACd,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;aAC1C,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,GAAG,EAAE;YAChB,IAAI,CAAC,OAAO;gBAAE,OAAO,QAAQ,CAAC;YAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEjF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG;gBAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACR,CAAC,CACH,CAAC;KACL;;+GAjIU,kBAAkB;mHAAlB,kBAAkB,cAFjB,MAAM;2FAEP,kBAAkB;kBAH9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;AAqID,SAAS,SAAS,CAAC,IAAuB;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;KAC1E;IAED,OAAO,IAAI,CAAC;AACd;;MC7Ia,mBAAmB;IAO9B,YAAoB,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;QANlC,UAAK,GAAG,IAAI,aAAa,CAAC,EAAmB,CAAC,CAAC;QAExD,uBAAkB,GAAG;YAC3B,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SACtE,CAAC;QAGA,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAEO,IAAI;QACV,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC3E;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAE/B,IAAI,CAAC,WAAW;aACb,QAAQ,CAAC,yCAAyC,CAAC;aACnD,IAAI,CACH,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,EACpC,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS,CAAC,IAAI;YACb,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB,CAAC,CAAC;KACN;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;KACxD;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;KACtD;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;KAClC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;KACvD;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;KAChC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;KACrD;IAED,SAAS,CAAC,MAAwB;QAChC,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO;QAErD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;KACjD;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO;QAEnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/B,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KACzD;;gHA1EU,mBAAmB;oHAAnB,mBAAmB,cAFlB,MAAM;2FAEP,mBAAmB;kBAH/B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCKY,mBAAmB;IAqB9B,YACU,YAAiC,EACjC,QAAkB,EAG1B,aAAkC,EAC1B,WAA+B;QAL/B,iBAAY,GAAZ,YAAY,CAAqB;QACjC,aAAQ,GAAR,QAAQ,CAAU;QAIlB,gBAAW,GAAX,WAAW,CAAoB;QA1BjC,eAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,qBAAgB,GAAG,IAAI,OAAO,EAAU,CAAC;QAEzC,qBAAgB,GAAG,IAAI,eAAe,CAC5C,IAAI,GAAG,EAA+C,CACvD,CAAC;QAEM,mBAAc,GAAG,IAAI,eAAe,CAAC,IAAI,GAAG,EAAkC,CAAC,CAAC;QAqBtF,IAAI,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAEzF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;;;;IApBD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KAC3D;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;IAgBO,sBAAsB;QAC5B,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAE3E,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE1D,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CACpF,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CACtE,CAAC;QAEF,aAAa,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;aACpD,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC;YAClB,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,KAAK,EAAE;oBACV,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;iBACnB;gBAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK;oBAClC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC7C,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;oBAE3C,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;iBACnC,CAAC,CAAC;aACJ;YAED,OAAO,KAAK,CAAC;SACd,CAAC,CACH;aACA,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACpD;IAED,eAAe,CAAC,aAAkC;QAChD,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAEpD,aAAa,CAAC,OAAO,CAAC,GAAG;YACvB,MAAM,UAAU,GACd,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAkC,CAAC;YAEhF,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG;gBACvB,IAAI,QAAQ,GAA2B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAE9E,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;gBAEzC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;aAC5C,CAAC,CAAC;YAEH,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC7C;IAEO,mBAAmB;QACzB,IAAI,CAAC,YAAY;aACd,iBAAiB,EAAE;aACnB,IAAI,CACH,MAAM,CACJ,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,yCAAyC,CAAC,KAAK,IAAI,CACrF,EACD,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACvE,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CACpE;aACA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACxD;IAED,cAAc,CAAC,MAAc;QAC3B,MAAM,EAAE,gBAAgB,EAAE,GAAa,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEvE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM;YACzC,IAAI,MAAM,EAAE,OAAO;gBAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC1B,CAAC,CAAC;KACJ;;;;;;IAOD,GAAG,CAAC,GAAqC,EAAE,GAAG,iBAA2B;QACvE,OAAO,IAAI,CAAC,WAAW;aACpB,OAAO,EAAE;aACT,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAC/E;IAED,WAAW,CAAC,YAAoB;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACpD;IAED,YAAY,CAAC,YAAoB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KACpE;;;;;;IAOD,OAAO,CAAC,GAAqC,EAAE,GAAG,iBAA2B;QAC3E,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAAC;KACnF;IAED,QAAQ,CAAC,YAAoB,EAAE,GAAW,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,eAAe,CAAC,EACpB,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAC3D,CAAC;KACH;IAED,YAAY,CAAC,YAAoB,EAAE,GAAW,EAAE,YAAoB;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC7D,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;KACvE;IAED,oBAAoB,CAClB,aAAuB,EACvB,IAAc,EACd,YAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,2BAA2B,CAAC,EAChC,GAAG,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CACrF,CAAC;KACH;IAED,wBAAwB,CAAC,aAAuB,EAAE,IAAc,EAAE,YAAoB;QACpF,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC7D,OAAO,2BAA2B,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACrF;IAEO,eAAe,CACrB,KAAkC,EAClC,GAAqC,EACrC,GAAG,iBAA2B;QAE9B,IAAI,CAAC,GAAG;YAAE,GAAG,GAAG,EAAE,CAAC;QACnB,IAAI,YAAoB,CAAC;QAEzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;YAChC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;SACf;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;QACzC,MAAM,IAAI,GAAG,CAAC,OAAe;YAC3B,IAAI,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAC1D,OAAO,YAAY,IAAK,GAAc,CAAC;SACxC;QACD,IAAI,CAAC,KAAK,CAAC,YAAY;YAAE,OAAO,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,UAAU,KAAK,GAAG,EAAE;YACtB,OAAO,YAAY,IAAI,SAAS,CAAC;SAClC;QAED,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CACF,wFAAwF,CACzF,CAAC;YAEF,OAAO,YAAY,IAAI,SAAS,CAAC;SAClC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,sCAAsC,GAAG,UAAU,CAAC,CAAC;YAC1D,OAAO,YAAY,IAAI,SAAS,CAAC;SAClC;QAED,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACvC,OAAO,YAAY,IAAI,SAAS,CAAC;SAClC;QAED,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;QACvE,IAAI,YAAY;YAAE,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAE9E,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,YAAY,GAAG,EAAE,CAAC;QAExD,OAAO,YAAY,IAAI,YAAY,IAAK,GAAc,CAAC;KACxD;;gHApOU,mBAAmB,0EA0Bb,mBAAmB;oHA1BzB,mBAAmB,cADN,MAAM;2FACnB,mBAAmB;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;gHA2Bf,mBAAmB;0BAFjC,QAAQ;;0BACR,QAAQ;;;SCjCG,SAAS,CAAC,aAA4B,EAAE,IAAY;IAClE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE9D,OAAO,IAAI,IAAI,IAAI,KAAK,GAAG;UACvB,IAAI;UACJ,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;AAC9E,CAAC;SAEe,YAAY,CAAC,MAAc,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG;IAC3D,MAAM,UAAU,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAqB,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAExE,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC;SAEe,WAAW,CAAC,MAAc,EAAE,MAAc;IACxD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACvD,MAAM,aAAa,GAAG,CAAC,KAA8B;QACnD,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACpD,CAAC;IAEF,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAEzB,MAAM,CAAC,GAAG,CAAC;QACT,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,aAAa,CAAC,gBAAgB,CAAC,CAAC;KACjC,CAAC,CAAC;AACL;;MC1Ba,4BAA4B;IAevC,YAAoB,MAAc,EAAU,MAAc;QAAtC,WAAM,GAAN,MAAM,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAQ;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;KACpC;IAdD,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;KAC9C;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;KAC/C;IAMD,GAAG,CAAC,oBAAgE,EAAE,MAAgB;QACpF,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAC3C,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,oBAAoB,CAAC,GAAG,CACxD,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,qBAAqB,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;SACrD;aAAM;YACL,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEtC,IAAI,MAAM;YAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;IAED,GAAG,CAAC,uBAA+B;QACjC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAC;KAChG;IAED,IAAI,CAAC,uBAA+B;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CACrC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAC,CAC3F,CAAC;KACH;;yHA7CU,4BAA4B;6HAA5B,4BAA4B,cADf,MAAM;2FACnB,4BAA4B;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,eAAe,GAAG;IAC7B,MAAM,EAAE,gBAAgB;IACxB,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;EACtB;MAGW,YAAY;IACvB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;KAAI;IAEtC,SAAS,CAAoC,GAAG,UAAa;QAG3D,MAAM,kBAAkB,GAAG,CAAC,KAAkB,KAC5C,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC5D;IAED,mBAAmB,CAAgC,GAAG,mBAAsB;QAO1E,MAAM,sBAAsB,GAAG,CAAC,KAAkB,KAChD,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,YAAY,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAChE;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3B;IAED,sBAAsB;QACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAwB,CAAC;QACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;KAC1C;;yGAhCU,YAAY;6GAAZ,YAAY,cADC,MAAM;2FACnB,YAAY;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;SClBlB,WAAW,CAAI,KAAU;IACvC,OAAO,CAAC,OAAU;QAChB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;KACd,CAAC;AACJ;;ACLA;MACa,YAAY;IAKvB,YAAY,KAAQ;QAJpB,aAAQ,GAAkB,EAAE,CAAC;QAC7B,WAAM,GAAG,IAAI,CAAC;QAIZ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC5B;IAED,OAAO,MAAM,CAAmB,KAAQ;QACtC,OAAO,IAAI,YAAY,CAAI,KAAK,CAAgB,CAAC;KAClD;CACF;SAEe,kBAAkB,CAChC,IAAS,EACT,WAAiC,EACjC,iBAAqC,EACrC,WAA2B;IAE3B,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAuC,EAAE,CAAC;IAEpD,IAAI,CAAC,OAAO,CAAC,GAAG;QACd,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,QAAQ,EAAE;YACZ,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACnB,MAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAc,CAAC,MAAM,GAAG,KAAK,CAAC;YAC9B,IAAY,CAAC,MAAM,GAAG,MAAM,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;SAEe,iBAAiB,CAC/B,IAAS,EACT,WAAiC,EACjC,WAA2B;IAI3B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAc,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC;SAEe,2BAA2B,CACzC,GAAY,EACZ,QAAgC;IAEhC,OAAO,CAAC,MAAc;QACpB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAEpD,OAAO,SAAS,YAAY,CAAC,KAAoB,EAAE,OAAO,GAAG,EAAE;YAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;oBAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;aAChE;YAED,OAAO,OAAO,CAAC;SAChB,CAAC;KACH,CAAC;AACJ;;MCnEa,iBAAiB;IAC5B,YAAsB,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;KAAI;IAEzD,iBAAiB,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1B,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CACnE,CAAC;KACH;IAED,gBAAgB,CAAC,GAAW;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC5C;IAED,mBAAmB,CAA0B,KAAe;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,MAAM,CACjB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CACpF,CAAC;KACH;IAED,oBAAoB,CAA0B,KAAe;QAC3D,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1B,GAAG,CAAC,QAAQ,IACV,KAAK,CAAC,MAAM,CACV,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CACpF,CACF,CACF,CAAC;KACH;IAES,eAAe,CAAC,GAAW,EAAE,eAAwC;QAC7E,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC;;QAGxB,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;SAClE;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;KAC7C;IAES,SAAS;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;KACjE;IAES,WAAW;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;KACtD;IAES,aAAa,CAAC,wBAAqD;QAC3E,OAAO,wBAAwB,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC;KAC9D;IAES,SAAS,CAAC,GAAW,EAAE,eAAwC;QACvE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;KACtC;;8GArEU,iBAAiB;kHAAjB,iBAAiB,cADJ,MAAM;2FACnB,iBAAiB;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACElC;MACsB,mBAAmB;IAAzC;QAMU,WAAM,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC,CAAC;QACtC,WAAM,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;QAChD,cAAS,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;KAoH5D;IAlHC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC7B;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;IAES,UAAU,CAAC,KAAU;QAC7B,OAAO,kBAAkB,CACvB,KAAK,EACL,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EACrB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAClC,CAAC;KACH;IAEO,UAAU,CAAC,QAAsC;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACvE;IAEO,iBAAiB,CAAC,GAAgB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;SACvC,EAAE,GAAG,CAAC,CAAC;KACT;IAEO,OAAO,CAAC,SAAc,EAAE,YAAiB;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;KAClB;IAED,GAAG,CAAC,KAAU;QACZ,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;KAC9C;IAED,IAAI,CAAC,SAAyC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;QAC9D,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,GAAG,EAAE,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EACzF,IAAI,CACL,CAAC;KACH;IAED,KAAK,CAAC,UAAkB,EAAE,KAAiB;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QAErD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;KAC9C;IAED,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACrB;IAED,MAAM,CAAC,WAAqB;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;KAC9C;IAED,MAAM,CAAC,MAAkB,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,GAAG,EAAE,IAAI,KACR,GAAG;cACC,GAAG;cACH,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;kBAClD,IAAI;kBACJ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxC,IAAI,CACL,CAAC;KACH;CACF;MAGqB,sBACpB,SAAQ,mBAAsB;IAe9B,YAAsB,QAAkB;QACtC,KAAK,EAAE,CAAC;QADY,aAAQ,GAAR,QAAQ,CAAU;QAV/B,OAAE,GAAG,MAAM,CAAC;QACZ,aAAQ,GAAG,YAAY,CAAC;QACxB,SAAI,GAAG,CAAC,IAAO,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,SAAI,GAAG,CAAC,CAAI,EAAE,CAAI;YACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YAE1C,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SAC1B,CAAC;QAIA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,WAAW;aAC5B,oBAAoB,CAAC,KAAK,IAAI,KAAK,CAAC;aACpC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAC1D;IAES,SAAS,CAAC,EAAE,cAAc,EAAK;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;KAChE;IAED,WAAW,CAAC,UAAkB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KACxC;IAED,iBAAiB,CAAC,UAAkB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC;QAC7D,OAAO,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;KACvD;;IAGD,WAAW;QACT,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;;mHA1CmB,sBAAsB;uHAAtB,sBAAsB;2FAAtB,sBAAsB;kBAD3C,UAAU;;MA+CE,aAAc,SAAQ,sBAAiC;;0GAAvD,aAAa;8GAAb,aAAa,cADA,MAAM;2FACnB,aAAa;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC/KrB,mBAAmB;IADhC;QAEU,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KA4C3C;IA1CC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;KACjC;IAQD,MAAM,CACJ,OAAsB,EACtB,cAA6C,EAC7C,KAA4B;QAE5B,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,cAAyB,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;KACrB;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAED,QAAQ,CAAC,YAA6C;QACpD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC7B,YAAY,CAAC,WAAW,EAAE,CAAC;KAC5B;IAED,WAAW;QACT,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAED,SAAS,CAAC,YAA6C;QACrD,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACxC;IAED,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KACxC;;gHA5CU,mBAAmB;oHAAnB,mBAAmB;2FAAnB,mBAAmB;kBAD/B,UAAU;;;MCaE,sBAAsB;IAiBjC,YACE,QAAkB,EACV,mBAAwC,EACxC,qBAAmD,EACnD,YAAiC,EACjC,YAA0B,EACV,sBAA8C;QAJ9D,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,0BAAqB,GAArB,qBAAqB,CAA8B;QACnD,iBAAY,GAAZ,YAAY,CAAqB;QACjC,iBAAY,GAAZ,YAAY,CAAc;;QAjB3B,YAAO,GAAG,IAAI,GAAG,CAAC;YACzB,CAAC,aAAa,EAAE,kCAAkC,CAAC;YACnD,CAAC,SAAS,EAAE,8BAA8B,CAAC;YAC3C,CAAC,OAAO,EAAE,4BAA4B,CAAC;SACxC,CAAC,CAAC;QAEH,oBAAe,GAAG,IAAI,CAAC;QAcrB,IAAI,sBAAsB,EAAE;YAC1B,IAAI,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACzF,OAAO;SACR;QACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEO,0BAA0B;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClE;IAEO,SAAS;QACf,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAyB,CAAC;YAE/C,OAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;gBAEnB,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC7B,MAAM;iBACP;aACF;SACF;QAED,IAAI,CAAC,cAAc;YAAE,cAAc,uBAAqB;QAExD,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc;YAAE,OAAO;QAE9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;KACjC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;YACjE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,UAAU,CAAC,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACpD,CAAC,CAAC;KACJ;IAEO,YAAY,CAAC,GAAW;QAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC5C;;mHA7EU,sBAAsB,4KAuBiB,sBAAsB;uGAvB7D,sBAAsB,6CAFtB,CAAC,mBAAmB,CAAC,0BADtB,sFAAsF;2FAGrF,sBAAsB;kBALlC,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,sFAAsF;oBAChG,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;+MAwBmD,sBAAsB;0BAArE,QAAQ;;0BAAI,QAAQ;;;MC3BZ,kCAAkC;IAO7C,YACU,KAAqB,EACrB,qBAAmD,EACnD,YAAiC;QAFjC,UAAK,GAAL,KAAK,CAAgB;QACrB,0BAAqB,GAArB,qBAAqB,CAA8B;QACnD,iBAAY,GAAZ,YAAY,CAAqB;KACvC;IAEJ,QAAQ;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;QACvF,IAAI,CAAC,YAAY,GACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAC1B,CAAC,GAAG,CAAC;QAEN,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB;aAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,UAAU,EACV,CAAC,MAAM,EAAgD;YACrD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;SACxC,CACF,CAAC;KACH;;+HA7BU,kCAAkC;mHAAlC,kCAAkC,0DAFlC,CAAC,mBAAmB,CAAC,0BAHtB;;GAET;2FAGU,kCAAkC;kBAP9C,SAAS;mBAAC;oBACT,QAAQ,EAAE,iCAAiC;oBAC3C,QAAQ,EAAE;;GAET;oBACD,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;;;MCPY,qBAAqB;;kHAArB,qBAAqB;sGAArB,qBAAqB,yDAFtB,mCAAmC;2FAElC,qBAAqB;kBAJjC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,mCAAmC;iBAC9C;;;ACLD;AACA;MAEa,gBAAgB,GAAG;IAC9B,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,gBAAgB,EAAE,gBAAgB;IAClC,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,IAAI;IACR,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IAEb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,SAAS;IACvB,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,KAAK;IAChB,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;;;MC1UF,kBAAkB;IAY7B,YAAoB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QAX7B,WAAM,GAAG,CAAC,CAAC;KAWsB;IATzC,IACI,KAAK,CAAC,GAAgC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAID,eAAe;QACb,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAe,CAAC,CAAC;KAC1E;;+GAhBU,kBAAkB;mGAAlB,kBAAkB;2FAAlB,kBAAkB;kBAJ9B,SAAS;mBAAC;;oBAET,QAAQ,EAAE,aAAa;iBACxB;iGAKK,KAAK;sBADR,KAAK;uBAAC,WAAW;;;MCCP,2BAA2B;IAKtC,YAAoB,EAAc,EAAU,YAAiC;QAAzD,OAAE,GAAF,EAAE,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAqB;QAJpE,aAAQ,GAAG,GAAG,CAAC;QAEW,kBAAa,GAAG,IAAI,YAAY,EAAS,CAAC;KAEI;IAEjF,QAAQ;QACN,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE3F,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAY;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC,CAAC,CAAC;KACJ;;wHAbU,2BAA2B;4GAA3B,2BAA2B,2HAF3B,CAAC,mBAAmB,CAAC;2FAErB,2BAA2B;kBALvC,SAAS;mBAAC;;oBAET,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;gIAEU,QAAQ;sBAAhB,KAAK;gBAE6B,aAAa;sBAA/C,MAAM;uBAAC,gBAAgB;;;ACK1B,MAAM,aAAa;IACjB,YACS,SAAc,EACd,KAAa,EACb,KAAa,EACb,IAAW;QAHX,cAAS,GAAT,SAAS,CAAK;QACd,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAO;KAChB;CACL;AAED,MAAM,UAAU;IACd,YACS,MAAiC,EACjC,IAAoC;QADpC,WAAM,GAAN,MAAM,CAA2B;QACjC,SAAI,GAAJ,IAAI,CAAgC;KACzC;CACL;MAKY,YAAY;IAsCvB,YACU,OAAmC,EACnC,KAAuB,EACvB,OAAwB;QAFxB,YAAO,GAAP,OAAO,CAA4B;QACnC,UAAK,GAAL,KAAK,CAAkB;QACvB,YAAO,GAAP,OAAO,CAAiB;KAC9B;IAZJ,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;KAClC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,KAAa,EAAE,IAAS,KAAM,IAAY,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC;KAClF;IAQO,4BAA4B,CAAC,OAA6B;QAChE,MAAM,EAAE,GAAiB,EAAE,CAAC;QAE5B,OAAO,CAAC,gBAAgB,CACtB,CAAC,MAAiC,EAAE,aAAqB,EAAE,YAAoB;YAC7E,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CACxC,IAAI,CAAC,OAAO,EACZ,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAC3C,YAAY,CACb,CAAC;gBAEF,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;aACvC;iBAAM,IAAI,YAAY,IAAI,IAAI,EAAE;gBAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;aAClC;iBAAM;gBACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAEpC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,IAAsC,CAAC,CAAC,CAAC;aACzE;SACF,CACF,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACzC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;SAClD;KACF;IAEO,wBAAwB,CAAC,OAA6B;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAmC,CAAC;YACpE,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;SACnC;QAED,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAiC;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAmC,CAAC;YACtF,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;SACzC,CAAC,CAAC;KACJ;IAEO,YAAY,CAAC,KAAY;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;YACvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,OAAO;SACR;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/D;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;aACxC;SACF;KACF;IAEO,SAAS,CAAC,KAAY;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KACd,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CACnF,CAAC;SACH;aAAM;YACL,KAAK,CAAC,IAAI,EAAE,CAAC;SACd;KACF;IAED,WAAW;QACT,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAU,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,IACE,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW;YACpC,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW;YACrC,IAAI,CAAC,SAAS,KAAK,EAAE,EACrB;YACA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9E;QAED,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,KAAK;gBACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAER,KAAK,MAAM;gBACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAER;gBACE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;KACF;;yGA3JU,YAAY;6FAAZ,YAAY;2FAAZ,YAAY;kBAHxB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;iBACrB;+JAIC,KAAK;sBADJ,KAAK;uBAAC,UAAU;gBAIjB,OAAO;sBADN,KAAK;uBAAC,eAAe;gBAItB,QAAQ;sBADP,KAAK;uBAAC,gBAAgB;gBAIvB,QAAQ;sBADP,KAAK;uBAAC,gBAAgB;gBAIvB,SAAS;sBADR,KAAK;uBAAC,iBAAiB;gBAIxB,OAAO;sBADN,KAAK;uBAAC,eAAe;gBAItB,SAAS;sBADR,KAAK;uBAAC,iBAAiB;gBAIxB,QAAQ;sBADP,KAAK;uBAAC,gBAAgB;;;MCtCZ,mBAAmB;IAW9B,YACkB,kBAAsC,EAC9C,IAAiC,EACjC,KAAwB,EACxB,YAAiC;QAHzB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAC9C,SAAI,GAAJ,IAAI,CAA6B;QACjC,UAAK,GAAL,KAAK,CAAmB;QACxB,iBAAY,GAAZ,YAAY,CAAqB;QAb3C,aAAQ,GAAG,GAAG,CAAC;QAKI,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAEjD,qBAAgB,GAAG,KAAK,CAAC;KAOrB;IAEJ,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAA4B,EAAE,OAAO,CAAC,CAAC,IAAI,CAC5E,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,CAAC,MAAM,YAAY,mBAAmB,CAAC,CAAC,EAC/D,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,CACjE,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CACnC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACzD,CAAC;aACH;YAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B,CAAC,CAAC;KACJ;IAED,WAAW;QACT,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEzC,QAAQ,CAAC,IAAI,CAAC,QAA0C,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;KAC5B;;gHAhDU,mBAAmB;oGAAnB,mBAAmB,qKAFnB,CAAC,mBAAmB,CAAC;2FAErB,mBAAmB;kBAL/B,SAAS;mBAAC;;oBAET,QAAQ,EAAE,2BAA2B;oBACrC,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;;0BAaI,IAAI;oIAVP,QAAQ;sBADP,KAAK;gBAIN,mBAAmB;sBADlB,KAAK;gBAGa,QAAQ;sBAA1B,MAAM;;AA4CT,SAAS,QAAQ,CAAC,QAAkB;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,QAAQ,CAAC,OAAO,CAAC,KAAK;YACpB,QAAQ,CAAC,KAAK,CAAC,QAA0C,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO;KACR;IAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG;QAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,CAAC;KACxC,CAAC,CAAC;AACL;;MClFa,aAAa;IAGxB,YAAoB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QAFT,SAAI,GAAG,IAAI,YAAY,EAAmB,CAAC;KAE9B;IAEzC,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;;0GAPU,aAAa;8FAAb,aAAa;2FAAb,aAAa;kBADzB,SAAS;mBAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;iGAEN,IAAI;sBAA/B,MAAM;uBAAC,SAAS;;;MCaN,mBAAmB;IAK9B,YACsB,WAA6B,EACzC,KAAuB,EACvB,iBAAoC,EACpC,KAAwB;QAHZ,gBAAW,GAAX,WAAW,CAAkB;QACzC,UAAK,GAAL,KAAK,CAAkB;QACvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,UAAK,GAAL,KAAK,CAAmB;KAC9B;IAEI,KAAK;QACX,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB;aACvC,iBAAiB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;aACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC5B,SAAS,CAAC,SAAS;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACxD;IAED,WAAW;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;gHAjCU,mBAAmB;oGAAnB,mBAAmB;2FAAnB,mBAAmB;kBAH/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;iBAC5B;;0BAOI,QAAQ;wIALa,SAAS;sBAAhC,KAAK;uBAAC,eAAe;;;MCMX,4BAA4B;IAmBvC,YACU,QAAkB,EAClB,WAA6B,EAC7B,KAA+B,EAC/B,KAAuB,EACvB,qBAAmD,EACnD,YAAiC;QALjC,aAAQ,GAAR,QAAQ,CAAU;QAClB,gBAAW,GAAX,WAAW,CAAkB;QAC7B,UAAK,GAAL,KAAK,CAA0B;QAC/B,UAAK,GAAL,KAAK,CAAkB;QACvB,0BAAqB,GAArB,qBAAqB,CAA8B;QACnD,iBAAY,GAAZ,YAAY,CAAqB;QArB3C,iBAAY,GAAG;YACb,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SAC+C,CAAC;QAE7D,YAAO,GAAG,EAAS,CAAC;QAMpB,kCAA6B,GAAG,EAAkC,CAAC;QAEnE,gBAAW,GAAG,KAAK,CAAC;QAUlB,IAAI,CAAC,OAAO,GAAG;YACb,YAAY,EAAE,CAAC,GAAQ;gBACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;aAClC;SACF,CAAC;KACH;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB;aAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aAC5B,IAAI,CACH,MAAM,CACJ,CAAC,MAAM,EAAgD,KACrD,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CACvE,CACF,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,UAAU,EACV,CAAC,MAAM,EAAgD;YACrD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC;YACvC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;YAED,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;oBACzE,MAAM,EAAE,IAAI,CAAC,QAAQ;iBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,eAAe,CACxB,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EACjD,CAAC,EACD,cAAc,CACf,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/D;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB,CACF,CAAC;KACH;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACnE,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;KACF;IAED,yBAAyB;QACvB,IAAI,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO;QAEnF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAClC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;oBAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;wBACxE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;qBAC7D;iBACF;aACF;SACF;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACnC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBAChE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,EAAE;wBAC5C,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,CAC/E,CAAC,KAAU;4BACT,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;yBACjC,CACF,CAAC;qBACH;iBACF;aACF;SACF;KACF;IAED,eAAe;QACb,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAC9B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,GAAG,MAAM;gBACb,GAAG,GAAG;gBACN,CAAC,GAAG,GAAG;oBACL,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;oBAClB,GAAG,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK;oBACvC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI;wBACnC,GAAG,EAAE,CAAC,QAAa;4BACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC;4BACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;yBAC7C;qBACF,CAAC;iBACH;aACF,CAAC,EACF,EAAE,CACH;SACF,CAAC,CAAC;KACJ;IAED,qBAAqB;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,GAAG;YACzD,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;SACvD,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,GAAG,EAAkC,CAAC;QACxE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACjC;;yHA5IU,4BAA4B;6GAA5B,4BAA4B,yGAF5B,CAAC,mBAAmB,CAAC;2FAErB,4BAA4B;kBAJxC,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;sQAGC,IAAI;sBADH,KAAK;uBAAC,wBAAwB;;;MChBpB,wBAAwB;IAGnC,YAAoB,EAAc,EAAU,YAAiC;QAAzD,OAAE,GAAF,EAAE,CAAY;QAAU,iBAAY,GAAZ,YAAY,CAAqB;QAF9C,kBAAa,GAAG,IAAI,YAAY,EAAc,CAAC;KAEG;IAEjF,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,KAAiB;YACpF,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC,CAAC,CAAC;KACJ;;qHAVU,wBAAwB;yGAAxB,wBAAwB,iFAFxB,CAAC,mBAAmB,CAAC;2FAErB,wBAAwB;kBALpC,SAAS;mBAAC;;oBAET,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,mBAAmB,CAAC;iBACjC;gIAEgC,aAAa;sBAA3C,MAAM;uBAAC,YAAY;;;MCCT,yBAAyB;IACpC,YACU,YAA0B,EAC1B,kBAAsC,EAChB,OAAiB;QAFvC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,uBAAkB,GAAlB,kBAAkB,CAAoB;QAChB,YAAO,GAAP,OAAO,CAAU;QAE/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEO,sBAAsB;QAC5B,IAAI,CAAC,kBAAkB;aACpB,oBAAoB,CAAC,KAAK,IAAI,KAAK,CAAC;aACpC,IAAI,CACH,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,EAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CACzE;aACA,SAAS,CAAC,MAAM;YACf,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC,CAAC;KACN;;sHAnBU,yBAAyB,+EAI1B,YAAY;0HAJX,yBAAyB,cAFxB,MAAM;2FAEP,yBAAyB;kBAHrC,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;0BAKI,MAAM;2BAAC,YAAY;;;MCPX,aAAa;IACxB,YAAoB,MAAqB,EAAsB,MAAc;QAAzD,WAAM,GAAN,MAAM,CAAe;QAAsB,WAAM,GAAN,MAAM,CAAQ;QAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,SAAS;QACP,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE;YAC/C,IAAI,CAAC,IAAI,EAAE,MAAM;gBAAE,OAAO;YAE1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,OAAO;aACR;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SACzB,CAAC,CAAC;KACJ;;0GAjBU,aAAa;8GAAb,aAAa,cAFZ,MAAM;2FAEP,aAAa;kBAHzB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;0BAE6C,QAAQ;;AAmBtD,SAAS,UAAU,CAAC,MAAkB,EAAE,MAAW;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK;QAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG;YAC/B,GAAG,KAAK;YACR,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SAC7D,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAEpD,OAAO,GAAG,CAAC;KACZ,EAAE,EAAE,CAAC,CAAC;AACT;;SCxCgB,WAAW,CAAC,GAAW;IACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;MAEY,uBAAuB;IAClC,SAAS,CAAC,CAAS;QACjB,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,WAAW,CAAC,CAAS;QACnB,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,SAAS,CAAC,CAAS;QACjB,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,WAAW,CAAC,CAAS;QACnB,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;KAC9B;;;MCpBU,YAAY,GAAG,IAAI,cAAc,CAAS,cAAc;;MCiBxD,eAAe;IAS1B,YAAY,QAAkB;QARpB,UAAK,GAAG,IAAI,aAAa,CAAgB;YACjD,QAAQ,EAAE,EAAE;YACZ,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QAGK,aAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QAG/B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;KAC9C;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;KAC7D;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK;aACd,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,CAAC;aACtC,IAAI,CACH,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EACpD,SAAS,CAAC,SAAS,IACjB,SAAS;cACL,IAAI,CAAC,KAAK,KAAK,CAAC;kBACd,EAAE,CAAC,IAAI,CAAC;kBACR,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;cAC/D,EAAE,CAAC,KAAK,CAAC,CACd,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAChC,CAAC;KACL;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;KACtF;IAED,YAAY;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;KACpC;IAED,UAAU,CAAC,OAAyB;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KACzE;IAED,aAAa,CAAC,OAAyB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAChC;IAED,SAAS,CAAC,OAA4C;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG;YACvB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CACzC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACnD;YACD,GAAG,QAAQ;SACZ,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;KACxC;IAED,YAAY,CAAC,OAA4C;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC/D,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACnD,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;KACxC;IAEO,WAAW,CAAC,QAA4B;QAC9C,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9C,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KACd,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,IACpC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5E,CACJ,CAAC;KACH;IAEO,aAAa,CAAC,eAAgC,EAAE,OAAwB;QAC9E,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QAC7C,OAAO,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;KACnE;;4GAlFU,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MChBY,UAAU,GAAG,IAAI,cAAc,CAAS,YAAY;;MCSpD,cAAc;IACzB,YACU,YAA0B,EAC1B,YAAiC,EACjC,eAAgC,EACZ,SAAiB;QAHrC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAqB;QACjC,oBAAe,GAAf,eAAe,CAAiB;QACZ,cAAS,GAAT,SAAS,CAAQ;KAC3C;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI;aACR,MAAM,CACL,OAAO,CAAC,KAAK,CAAC;YACZ,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC;SACvD,CAAC,CACH;aACA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KACtE;IAED,oBAAoB,CAAC,eAA6B;QAChD,MAAM,OAAO,GAAG,EAAS,CAAC;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,EAAE;YACnD,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;SAC9C;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE;YACpD,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;SACnC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,EAAE,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;SACrC;QAED,OAAO,OAAO,CAAC;KAChB;;2GAtCU,cAAc,4GAKf,UAAU;+GALT,cAAc,cAFb,MAAM;2FAEP,cAAc;kBAH1B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;0BAMI,MAAM;2BAAC,UAAU;;;MCRT,gBAAgB;IAC3B,YAAoB,YAAiC;QAAjC,iBAAY,GAAZ,YAAY,CAAqB;KAAI;IAEzD,SAAS,CACP,QAA0C,EAAE,EAC5C,GAAG,iBAAoD;QAEvD,MAAM,MAAM,GACV,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG;YAChC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,GAAG,CAAC;aACZ;YACD,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,GAAG,CAAC;aACZ;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;SAC9D,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;KACpD;;6GAlBU,gBAAgB;2GAAhB,gBAAgB;iHAAhB,gBAAgB;2FAAhB,gBAAgB;kBAJ5B,UAAU;;kBACV,IAAI;mBAAC;oBACJ,IAAI,EAAE,iBAAiB;iBACxB;;;MCAY,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBAFd,gBAAgB,aADrB,gBAAgB;gHAGf,kBAAkB;2FAAlB,kBAAkB;kBAJ9B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,YAAY,EAAE,CAAC,gBAAgB,CAAC;iBACjC;;;MCAY,QAAQ;IACnB,SAAS,CAAC,KAAY,EAAE,YAAgC,KAAK,EAAE,OAAgB;QAC7E,SAAS,GAAG,SAAS,IAAK,SAAS,CAAC,WAAW,EAAU,CAAC;QAE1D,IAAI,CAAC,KAAK,KAAK,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1E,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,EAAE;YACZ,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACpE,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;SACrE;aAAM;YACL,WAAW,GAAG,KAAK;iBAChB,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;iBACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,WAAW,GAAG,KAAK;iBAChB,MAAM,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;iBACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACT,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBAAE,OAAO,CAAC,CAAC,CAAC;qBAClC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBAAE,OAAO,CAAC,CAAC;;oBACtC,OAAO,CAAC,CAAC;aACf,CAAC,CAAC;SACN;QACD,MAAM,MAAM,GAAG;YACb,GAAG,WAAW;YACd,GAAG,WAAW;YACd,GAAG,KAAK,CAAC,MAAM,CACb,IAAI,IACF,QAAQ,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,QAAQ;gBACpD,QAAQ,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,QAAQ,CACvD;SACF,CAAC;QACF,OAAO,SAAS,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;KACxD;;qGAlCU,QAAQ;mGAAR,QAAQ;yGAAR,QAAQ;2FAAR,QAAQ;kBAJpB,UAAU;;kBACV,IAAI;mBAAC;oBACJ,IAAI,EAAE,SAAS;iBAChB;;;MCHY,wBAAwB,GAAG,IAAI,cAAc,CACxD,0BAA0B,EAC1B;MAKW,cAAc;IACzB,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAC1C,SAAS,CACP,KAAU,EACV,QAA6B,wBAAwB,EACrD,IAAI,GAAG,gBAAgB;QAEvB,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,IAAI;SACL,CAAC,CAAC;KACJ;;2GAjBU,cAAc;yGAAd,cAAc;2FAAd,cAAc;kBAH1B,IAAI;mBAAC;oBACJ,IAAI,EAAE,YAAY;iBACnB;;;MCNY,mBAAmB,GAAG,IAAI,cAAc,CAAS,qBAAqB,EAAE;IACnF,OAAO,EAAE,MAAM,qBAAqB;CACrC;;SCCe,mBAAmB,CAAC,QAAkB;IACpD,OAAO;QACL,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC5D,YAAY,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,QAAQ;YAC5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,QAAQ,QAAQ,QAAQ,EAAE,CAAC,CAAC;YACxE,QAAQ,CAAC,MAAM,GAAG,GAAG,iBAAiB,IAAI,WAAW,EAAE,CAAC;SACzD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAEM,MAAM,sBAAsB,GAAa;IAC9C,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,mBAAmB;IAC/B,IAAI,EAAE,CAAC,QAAQ,CAAC;IAChB,KAAK,EAAE,IAAI;CACZ;;MClBY,QAAS,SAAQ,MAAM;IAClC,YAAoB,mBAAwC;QAC1D,KAAK,EAAE,CAAC;QADU,wBAAmB,GAAnB,mBAAmB,CAAqB;KAE3D;IAED,QAAQ;QACN,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACjD,OAAO,gBAAgB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;KACrD;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;CACF;AAEM,MAAM,cAAc,GAAa;IACtC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,CAAC,mBAAmB,CAAC;CAC5B;;ACfD,MAAM,SAAS,GAAG,YAAY,CAAC;AAC/B,MAAM,UAAU,GAAG,cAAc,CAAC;SAElB,WAAW,CACzB,MAAuD,EACvD,QAAkB;IAElB,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,IAAI,CACT,SAAS,CAAC,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,EAC9C,GAAG,CAAC;QACF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KAC/D,CAAC,CACH,CAAC;AACJ,CAAC;SAEe,yBAAyB,CAAC,QAAkB,EAAE,QAAuB;IACnF,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IACnF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE3C,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAChD,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3D,IAAI,aAAa,EAAE;QACjB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC7E;IAED,IAAI,UAAU,EAAE;QACd,MAAM,qBAAqB,GAAG,UAAU,GAAG,IAAI,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,qBAAqB,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;KAC/C;AACH,CAAC;SAEe,aAAa,CAAC,QAAiB;IAC7C,gBAAgB,EAAE,CAAC;IACnB,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,GAAG,GAAG,SAAS,gBAC5B,QAAQ,GAAG,yCAAyC,GAAG,EACzD,EAAE,CAAC;AACL,CAAC;SAEe,gBAAgB;IAC9B,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,qDAAqD,CAAC;AACtF;;ACrCO,MAAM,YAAY,GAAG,YAAY,CAAC;MAEnB,gBAAgB;IAqBpC,YAAsB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QALhC,eAAU,GAAG,GAAG;YACtB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC;QAGA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,MAAM,IAAI;QACR,MAAM,WAAW,GAAG,kBAAkB,CACpC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,QAAQ,EACtD,YAAY,CACb,CAAC;QACF,IAAI,WAAW;YAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,MAAM;aACrB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;aAC3D,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,YAAY;aACrB,qBAAqB,EAAE;aACvB,IAAI,CAAC;YACJ,IAAI,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE;gBACnF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YAED,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3B;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;KAC1E;IAES,mBAAmB;QAC3B,IAAI,CAAC,YAAY,CAAC,MAAM;aACrB,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,EACjD,GAAG,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CACpD;aACA,SAAS,EAAE,CAAC;KAChB;CACF;MAEY,oBAAqB,SAAQ,gBAAgB;IAA1D;;QACW,mBAAc,GAAG,KAAK,CAAC;KAgCjC;IA9BC,MAAM,IAAI;QACR,OAAO,KAAK;aACT,IAAI,EAAE;aACN,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACpD,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;KAClF;IAED,eAAe,CAAC,WAAoB;QAClC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;KACxE;IAED,mBAAmB,CAAC,WAAoB;QACtC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;KACd;IAED,MAAM,CAAC,WAAoB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACzF;IAED,KAAK,CAAC,WAAoB;QACxB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB;IAEO,gBAAgB,CAAC,WAAoB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;KACjD;CACF;MAEY,wBAAyB,SAAQ,gBAAgB;IAA9D;;QACW,mBAAc,GAAG,IAAI,CAAC;QACvB,cAAS,GAAG,YAAY,CAAC;QACzB,eAAU,GAAG,cAAc,CAAC;KAkFrC;IAhFS,uBAAuB;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM;aACrB,IAAI,CACH,MAAM,CACJ,KAAK,IACH,KAAK,YAAY,cAAc;YAC/B,KAAK,CAAC,IAAI,KAAK,eAAe;YAC9B,KAAK,CAAC,IAAI,KAAK,cAAc,CAChC,CACF;aACA,SAAS,CAAC;YACT,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE;gBACvC,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC3B,gBAAgB,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;aAChD;SACF,CAAC,CAAC;KACN;IAED,MAAM,IAAI;QACR,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SAC5B;QAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;KAChE;IAED,eAAe,CAAC,WAAoB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC;KACb;IAED,KAAK,CAAC,MAAmB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAE7C,OAAO,IAAI,CACT,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAC3C,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,EACf,IAAI,WAAW,CAAC,EAAE,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CACjF,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;KAClC;IAED,WAAW,CAAC,MAAuD;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzC,OAAO,IAAI,CACT,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,EACnD,GAAG,CAAC;YACF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,WAAW;gBAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;SAC/D,CAAC,CACH,CAAC;KACH;IAED,MAAM,CAAC,WAAoB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACnE,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,EACnD,GAAG,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC1B,gBAAgB,EAAE,CAAC;SACpB,CAAC,CACH,CAAC;KACH;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;YAC5C,iBAAiB,EAAE,CAAC;YACpB,gBAAgB,EAAE,CAAC;SACpB,CAAC,CAAC;KACJ;CACF;AAEM,MAAM,kBAAkB,GAAG;IAChC,IAAI,CAAC,QAAkB;QACrB,OAAO,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KAC3C;IACD,QAAQ,CAAC,QAAkB;QACzB,OAAO,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;KAC/C;CACF,CAAC;SAEc,iBAAiB,CAAC,UAAwB,YAAY;IACpE,MAAM,IAAI,GAAG;QACX,cAAc;QACd,UAAU;QACV,eAAe;QACf,OAAO;QACP,eAAe;QACf,YAAY;QACZ,qBAAqB;QACrB,qBAAqB;QACrB,oBAAoB;QACpB,wBAAwB;QACxB,gBAAgB;QAChB,eAAe;KAChB,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAqB;IACjE,MAAM,GAAG,GAAG,kBAAkB,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACzB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;KACd;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;IACtD,IAAI,WAAW;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/B;;AC7PA,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG;IAChC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAEhD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACzE,CAAC;;MCDY,WAAW;IAOtB,YAAsB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAJ5C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;KACrC;IAID,MAAM,IAAI;QACR,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEjE,OAAO,kBAAkB;aACtB,eAAe,EAAE;aACjB,IAAI,CACH,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,CAAC,EAC5B,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,EACpC,GAAG,CAAC,WAAW;YACb,IAAI,CAAC,QAAQ;gBACX,WAAW,CAAC,YAAY,KAAK,MAAM;sBAC/B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;sBACtC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClD,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAC3C,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS,EAAE,CAAC;KAChB;IAED,MAAM,CAAC,WAAoB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC1C;IAED,eAAe,CAAC,WAAoB;QAClC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;KAC5C;IAED,KAAK,CAAC,MAAmB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACpC;;wGAvCU,WAAW;4GAAX,WAAW,cAFV,MAAM;2FAEP,WAAW;kBAHvB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCNY,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;;SCIX,YAAY,CAAC,QAAkB,EAAE,WAAiC;IAChF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAE5D,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;IAClC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,IAAK,EAAgB,CAAC;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEjE,OAAO,IAAI;SACR,OAAO,CAAc,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;SAC9C,IAAI,CACH,UAAU,CAAC,GAAG;QACZ,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACjB,CAAC;IACF,GAAG,CAAC,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CACxF;SACA,SAAS,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CACxB,KAA2B,EAC3B,MAAW,EACX,MAAiB;IAEjB,QAAQ,MAAM,CAAC,aAAa;QAC1B,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClC,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC9C;AACH;;MCvCa,gBAAgB;IAuB3B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAtB5C,YAAO,GAAG,KAAK,CAAC;QAEhB,mBAAc,GAAG,CAAC,EAAU,EAAE,OAA+B,KAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;YACE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,wCAAwC,EAAE,EAAE;YACjD,OAAO;SACR,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QAEJ,qBAAgB,GAAG,CAAC,IAAY,EAAE,OAA+B,KAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;YACE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,0CAA0C,IAAI,EAAE;YACrD,OAAO;SACR,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;KAE4C;;6GAvBrC,gBAAgB;iHAAhB,gBAAgB,cAFf,MAAM;2FAEP,gBAAgB;kBAH5B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCOY,mBAAmB;IAY9B,YACU,WAAwB,EACxB,YAAiC,EACjC,aAA+B,EAC/B,kBAAsC,EACnB,SAAiB;QAJpC,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,kBAAa,GAAb,aAAa,CAAkB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACnB,cAAS,GAAT,SAAS,CAAQ;QAhB9C,iBAAY,GAAqB,IAAI,CAAC;QAEtC,uBAAkB,GAAG,IAAI,CAAC;QAE1B,YAAO,GAAG,KAAK,CAAC;QAER,qBAAgB,GAAG,CAAC,MAA2B;YACrD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;SACzE,CAAC;KAQE;IAEJ,eAAe,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,aAAa;aACtB,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;aACtD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3C;IAED,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,aAAa;aACtB,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;aAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3C;;gHA9BU,mBAAmB,sIAiBpB,UAAU;oHAjBT,mBAAmB,cADN,MAAM;2FACnB,mBAAmB;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAkB7B,MAAM;2BAAC,UAAU;;;ACnBtB,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,UAAU,IAAI,GAAG,CAAC;IAExE,MAAM,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,OAAO,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,4BAA4B,CAAC,SAAiB;IACrD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAEM,eAAe,kBAAkB,CAAC,QAAkB;IACzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;IAChF,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG;QACpB,mBAAmB,CAAC,kBAAkB,GAAG,KAAK,CAAC;KAChD,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAA2B;QAClD,mBAAmB,CAAC,YAAY,GAAG;YACjC,EAAE,EAAE,MAAM,CAAC,QAAQ;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,IAAI;SAClB,CAAC;KACH,CAAC;IAEF,MAAM,8BAA8B,GAAG,CAAC,MAA2B;QACjE,aAAa,EAAE,CAAC;QAChB,eAAe,CAAC,MAAM,CAAC,CAAC;KACzB,CAAC;IAEF,IAAI,WAAW,EAAE;;;;;;QAMf,kCAAkC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1D,OAAO,mBAAmB;aACvB,eAAe,CAAC,WAAW,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;aACzC,SAAS,EAAE,CAAC;KAChB;SAAM;;;;QAIL,kCAAkC,CAAC,QAAQ,EAAE,EAAE,EAAE,kBAAkB,GAAG,GAAG,CAAC,CAAC;QAE3E,MAAM,uBAAuB,GAAG,4BAA4B,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC5F,IAAI,uBAAuB,EAAE;YAC3B,OAAO,mBAAmB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,SAAS,EAAE,CAAC;SAC/E;KACF;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,kCAAkC,CACzC,QAAkB,EAClB,WAAmB,EACnB,WAAW,GAAG,kBAAkB;IAEhC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAgB,CAAC;IAE9E,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE;QACnC,WAAW,CAAC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CACvE,WAAW,EACX,WAAW,CACZ,CAAC;KACH;IAED,IAAI,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE;QACvC,WAAW,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAC/E,WAAW,EACX,WAAW,CACZ,CAAC;KACH;IAED,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAElG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;YAC5C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SAC3F,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClD;;SC1FgB,cAAc,CAAC,QAAkB;IAC/C,MAAM,EAAE,GAAG;QACT,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAa,CAAC;QAEvD,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAA0B,CAAC,CAAC;QAChE,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvC,IAAI,OAAO,CAAC,uBAAuB;YAAE,OAAO;QAE5C,OAAO,WAAW;aACf,eAAe,EAAE;aACjB,IAAI,CACH,GAAG,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACrC,GAAG,CAAC;YACF,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,CAAqB,CAAC;YAC9E,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;SAC5D,CAAC,EACF,UAAU,CAAC,KAAK;YACd,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;YACzE,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,EAAE;gBACvD,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACnD;YAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAC,CACH;aACA,SAAS,EAAE,CAAC;KAChB,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;SAEe,gBAAgB,CAAC,QAAkB;IACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACzE,iBAAiB,EAAE,CAAC;KACrB;AACH,CAAC;SAEe,iBAAiB,CAAC,QAAkB;IAClD,MAAM,EAAE,GAAG;QACT,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,EAAE,gBAAgB,EAAE,GAAa,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAElE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC;QAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;YACjC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;gBAChC,IAAI,MAAM,EAAE,OAAO;oBAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAExD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;aAC5B,EAAE,MAAM,CAAC,CAAC;SACZ,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ;;SC1CgB,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;MAwDa,cAAc;;2GAAd,cAAc;4GAAd,cAAc,iBAjBnB,wBAAwB;QACxB,kBAAkB;QAClB,sBAAsB;QACtB,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,2BAA2B;QAC3B,mBAAmB;QACnB,kCAAkC;QAClC,4BAA4B;QAC5B,qBAAqB;QACrB,QAAQ;QACR,wBAAwB;QACxB,cAAc,aAtBd,WAAW;QACX,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,kBAAkB,aA5BlB,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,kBAAkB;QAClB,wBAAwB;QACxB,kBAAkB;QAClB,sBAAsB;QACtB,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,2BAA2B;QAC3B,mBAAmB;QACnB,kCAAkC;QAClC,4BAA4B;QAC5B,qBAAqB;QACrB,QAAQ;QACR,wBAAwB;QACxB,cAAc;4GA6BT,cAAc,aAFZ,CAAC,gBAAgB,CAAC,YAzBpB;YACL,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,kBAAkB;SACrB,EA7BG,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,kBAAkB;2FA2Cb,cAAc;kBAlD1B,QAAQ;mBAAC;oBACN,OAAO,EAAE;wBACL,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,kBAAkB;wBAClB,wBAAwB;wBACxB,kBAAkB;wBAClB,sBAAsB;wBACtB,YAAY;wBACZ,mBAAmB;wBACnB,aAAa;wBACb,2BAA2B;wBAC3B,mBAAmB;wBACnB,kCAAkC;wBAClC,4BAA4B;wBAC5B,qBAAqB;wBACrB,QAAQ;wBACR,wBAAwB;wBACxB,cAAc;qBACjB;oBACD,OAAO,EAAE;wBACL,WAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,kBAAkB;qBACrB;oBACD,YAAY,EAAE;wBACV,wBAAwB;wBACxB,kBAAkB;wBAClB,sBAAsB;wBACtB,YAAY;wBACZ,mBAAmB;wBACnB,aAAa;wBACb,2BAA2B;wBAC3B,mBAAmB;wBACnB,kCAAkC;wBAClC,4BAA4B;wBAC5B,qBAAqB;wBACrB,QAAQ;wBACR,wBAAwB;wBACxB,cAAc;qBACjB;oBACD,SAAS,EAAE,CAAC,gBAAgB,CAAC;iBAChC;;AAGD;;;;MAgBa,cAAc;;2GAAd,cAAc;4GAAd,cAAc,YAlBd,cAAc,EAUvB,kBAAkB,wDAVT,cAAc,EAOC,kBAAkB;4GAWjC,cAAc,YAVhB;YACP,cAAc;YACd,kBAAkB;YAClB,WAAW,CAAC,OAAO,EAAE;YACrB,oBAAoB,CAAC,WAAW,CAAC;gBAC/B,UAAU,EAAE,YAAY;gBACxB,UAAU,EAAE,0BAA0B;aACvC,CAAC;SACH,EAhBU,cAAc,EAOC,kBAAkB;2FAWjC,cAAc;kBAZ1B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;oBAC7C,OAAO,EAAE;wBACP,cAAc;wBACd,kBAAkB;wBAClB,WAAW,CAAC,OAAO,EAAE;wBACrB,oBAAoB,CAAC,WAAW,CAAC;4BAC/B,UAAU,EAAE,YAAY;4BACxB,UAAU,EAAE,0BAA0B;yBACvC,CAAC;qBACH;iBACF;;AAGD;;;MAOa,UAAU;IACrB,OAAO,OAAO,CAAC,UAAU,EAAc;QACrC,OAAO;YACL,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE;gBACT,cAAc;gBACd,sBAAsB;gBACtB;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,OAAO;iBAClB;gBACD;oBACE,OAAO,EAAE,YAAY;oBACrB,UAAU,EAAE,kBAAkB;oBAC9B,IAAI,EAAE,CAAC,cAAc,CAAC;iBACvB;gBACD;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,WAAW,EAAE,cAAc;oBAC3B,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,CAAC,yBAAyB,CAAC;oBACjC,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,UAAU,EAAE,cAAc;iBAC3B;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,CAAC,QAAQ,CAAC;oBAChB,UAAU,EAAE,iBAAiB;iBAC9B;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,CAAC,mBAAmB,CAAC;oBAC3B,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,CAAC,aAAa,CAAC;oBACrB,UAAU,EAAE,IAAI;iBACjB;gBACD,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE;gBACrD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE;gBAClE;oBACE,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC;oBACxD,IAAI,EAAE,CAAC,mBAAmB,CAAC;iBAC5B;aACF;SACF,CAAC;KACH;IAED,OAAO,QAAQ,CAAC,UAAU,EAAe;QACvC,OAAO;YACL,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC;oBACxD,IAAI,EAAE,CAAC,mBAAmB,CAAC;iBAC5B;aACF;SACF,CAAC;KACH;;uGA3EU,UAAU;wGAAV,UAAU,YA3BV,cAAc,aAAd,cAAc;wGA2Bd,UAAU,YAFZ,CAAC,cAAc,CAAC,EAzBd,cAAc;2FA2Bd,UAAU;kBAJtB,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,cAAc,CAAC;iBAC1B;;SA+Ee,0BAA0B,CAAC,IAAI;IAC7C,OAAO,IAAI,CAAC;AACd;;MCnMa,SAAS;IACpB,YAAoB,YAA0B,EAAU,WAAwB;QAA5D,iBAAY,GAAZ,YAAY,CAAc;QAAU,gBAAW,GAAX,WAAW,CAAa;KAAI;IAEpF,WAAW;QACT,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QACpE,IAAI,mBAAmB,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;KACd;;sGAXU,SAAS;0GAAT,SAAS,cAFR,MAAM;2FAEP,SAAS;kBAHrB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCKY,eAAe;IAC1B,YACU,MAAc,EACd,aAA4B,EAC5B,iBAAoC,EACpC,iBAA2C;QAH3C,WAAM,GAAN,MAAM,CAAQ;QACd,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,sBAAiB,GAAjB,iBAAiB,CAA0B;KACjD;IAEJ,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,cAAc,GAAG,UAAU,EAAE,cAAc,CAAC;SAC7C;QAED,IAAI,CAAC,cAAc;YAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,MAAM;YACR,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAuB,CAAC,CAAC;aAC1E;SACF,CAAC,CACH,CAAC;KACH;;4GAzBU,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCVY,aAAa;IAGxB,YAAY,gBAA2C,EAAE;QACvD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;YAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;KACF;CACF;MAEY,cAAkB,SAAQ,aAAgB;IAGrD,YAAY,gBAA4C,EAAE;QACxD,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,uBAAuB;IAGlC,YAAY,gBAAkD,EAAE;QAFhE,mBAAc,GAAG,EAAE,CAAC;QAGlB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;YAC/B,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;gBACxD,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAChC;gBACA,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;KACF;CACF;MAEY,qBAAsB,SAAQ,uBAAuB;IAGhE,YAAY,gBAAgD,EAAE;QAC5D,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,8BAA+B,SAAQ,qBAAqB;IAGvE,YAAY,gBAAyD,EAAE;QACrE,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,SAAS;IAGpB,YAAY,gBAA0C,EAAE;QACtD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;YAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;KACF;CACF;MAEY,wBAA+C,SAAQ,SAAsB;IAIxF,YAAY,gBAAgE,EAAE;QAC5E,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,gCAGX,SAAQ,wBAAqC;IAG7C,YACE,gBAAkF,EAAE;QAEpF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,gBAAuC,SAAQ,wBAAqC;IAI/F,YAAY,gBAAwD,EAAE;QACpE,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,wBAGX,SAAQ,gBAA6B;IAIrC,YAAY,gBAA0E,EAAE;QACtF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,oBAA2C,SAAQ,gBAA6B;IAK3F,YAAY,gBAA4D,EAAE;QACxE,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,4BAGX,SAAQ,oBAAiC;IAKzC,YAAY,gBAA8E,EAAE;QAC1F,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,gBAAgB;IAG3B,YAAY,gBAA2C,EAAE;QACvD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;YAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;gBAC5D,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;KACF;CACF;MAEY,mBAAmC,SAAQ,gBAAgB;IAGtE,YAAY,gBAAoD,EAAE;QAChE,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,kCAEX,SAAQ,mBAAgC;IAIxC,YAAY,gBAA0E,EAAE;QACtF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,0BAEX,SAAQ,kCAA+C;IAIvD,YAAY,gBAAkE,EAAE;QAC9E,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,kCAGX,SAAQ,0BAAuC;IAI/C,YAAY,gBAA0E,EAAE;QACtF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,0CAGX,SAAQ,kCAA+C;IAGvD,YACE,gBAAkF,EAAE;QAEpF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,8BAEX,SAAQ,0BAAuC;IAK/C,YAAY,gBAAsE,EAAE;QAClF,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;CACF;MAEY,sCAGX,SAAQ,8BAA2C;IAKnD,YAAY,gBAA8E,EAAE;QAC1F,KAAK,CAAC,aAAa,CAAC,CAAC;KACtB;;;MClNU,uBAAuB;IAalC,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAZ5C,YAAO,GAAG,KAAK,CAAC;QAEhB,eAAU,GAAG,CAAC,KAA+C,KAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;YACE,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,yBAAyB;YAC9B,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;SAC7C,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;KAE4C;;oHAbrC,uBAAuB;wHAAvB,uBAAuB,cAFtB,MAAM;2FAEP,uBAAuB;kBAHnC,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;ACTD;;;;;;ACAA;;MCIa,wBAAwB;IACnC,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAE1C,cAAc,CACZ,kBAAyC,EACzC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAExB,OAAO,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACnD;;qHARU,wBAAwB;yHAAxB,wBAAwB,cADX,MAAM;2FACnB,wBAAwB;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;SCAlB,kBAAkB,CAAC,kBAAsC;IACvE,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAC/C,4CAA4C,CACxB,CAAC;IAEvB,OAAO,cAAc,CAAC,gBAAgB,CAAC;AACzC,CAAC;SAEe,kBAAkB,CAAC,kBAAsC;IACvE,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAC/C,4CAA4C,CACxB,CAAC;IAEvB,OAAO,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;SAEe,2BAA2B,CAAC,kBAAsC;IAChF,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAC/C,4CAA4C,CACxB,CAAC;IAEvB,OAAO,GAAG,cAAc,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;AACpG;;MCba,iBAAqB,SAAQ,eAAkB;IAK1D,YAAoB,mBAA2C;QAC7D,KAAK,EAAE,CAAC;QADU,wBAAmB,GAAnB,mBAAmB,CAAwB;KAE9D;IAND,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;KAC1C;IAMD,MAAM,CAAC,cAA+B;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAA6B;SAClE,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5D,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACjC;CACF;SAEe,eAAe,CAC7B,WAA+B,EAC/B,WAAqB,EACrB,QAA2B,QAAQ,IAAI,QAAQ;IAE/C,OAAO,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF;;SCxCgB,YAAY,CAAC,IAAU,EAAE,QAAgB;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,aAAa,CAChB,IAAI,UAAU,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,MAAM;KACb,CAAC,CACH,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC;;SCnBgB,QAAQ,CAAC,KAAsB;IAC7C,OAAO,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC;;SCCgB,gBAAgB,CAAI,KAAQ;IAC1C,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,KAAK;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;aACrB,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB;;SCdgB,IAAI,CAAC,CAAO;IAC1B,OAAO,CAAC;UACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;UACpD,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;SAEe,YAAY,CAAC,KAAa;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAgB,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,QAAQ,CAAC;QAC3C,MAAM,IAAI,CAAC,CAAC;KACb;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,gBAAgB,CAAC,MAAM,GAAG,CAAC;IACzC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;IAC5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,MAAM,QAAQ,GAAG,sBAAsB,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAEjD,MAAM,SAAS,GAAG,CAAC,MAAc,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D;;MCxCa,mBAAmB;IAC9B,YAAmB,WAA4C,EAAS,SAAkB;QAAvE,gBAAW,GAAX,WAAW,CAAiC;QAAS,cAAS,GAAT,SAAS,CAAS;KAAI;IAE9F,cAAc,CAAwB,OAAU;QAC9C,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACvD;CACF;MAEY,qBAAsB,SAAQ,mBAAmB;IAC5D,cAAc,MAAK;CACpB;MAEY,qBAAqB,GAAG;IACnC,SAAS,CAAC,SAAkB;QAC1B,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KACxD;IACD,cAAc,CAAC,SAAkB;QAC/B,OAAO,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;KAC9D;IACD,IAAI;QACF,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACxC;;;MCtBU,WAAW;IACtB,YACS,SAAsB,QAAQ,CAAC,IAAI,EACnC,WAA2B,WAAW;QADtC,WAAM,GAAN,MAAM,CAA6B;QACnC,aAAQ,GAAR,QAAQ,CAA8B;KAC3C;IAEJ,aAAa,CAAwB,OAAU;QAC7C,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAC3D;CACF;MAEY,YAAY,GAAG;IAC1B,YAAY,CAAC,OAAoB;QAC/B,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;KAC7C;IACD,YAAY;QACV,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KACpD;IACD,YAAY;QACV,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KACpD;IACD,aAAa,CAAC,OAAoB;QAChC,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KAChD;IACD,aAAa;QACX,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KACrD;;;SCtBa,YAAY,CAC1B,OAA4C,EAC5C,cAA2B,YAAY,CAAC,YAAY,EAAE,EACtD,sBAA2C,qBAAqB,CAAC,SAAS,EAAE;IAE5E,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAEnC,OAAO,IAAI,UAAU,CAAC,CAAC,QAAqB;QAC1C,OAAO,CAAC,MAAM,GAAG,CAAC,KAAQ;YACxB,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACrB,CAAC;QAEF,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE1D,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;QAC9B,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;QAC9B,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;QAEhC,OAAO;YACL,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACrB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAyB,EAAE,OAAoB;IACzE,OAAO,UAAU,KAAqB;QACpC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAAoB;IAC1C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC3B;;MC5Ca,mBAAmB;IADhC;QAEmB,aAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;KA2B/C;IAzBC,aAAa,CACX,eAAmC;QAEnC,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAEpC,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC;KAChB;IAED,aAAa,CAAC,OAA6C;QACzD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KACzC;IAED,GAAG,CAAC,OAAe;QACjB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAChC;;gHA3BU,mBAAmB;oHAAnB,mBAAmB,cADN,MAAM;2FACnB,mBAAmB;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCMrB,mBAAmB;IAHhC;QAIU,UAAK,GAAG,IAAI,aAAa,CAAoB,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;KA6BhF;IA3BC,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;KAC1C;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACnE;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACpE;IAED,YAAY;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;KAC5C;IAED,WAAW,CAAC,QAAgB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QAC7C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KACjC;IAED,cAAc,CAAC,QAAgB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QAC7C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;KACjC;;gHA7BU,mBAAmB;oHAAnB,mBAAmB,cAFlB,MAAM;2FAEP,mBAAmB;kBAH/B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCAY,eAAe;IAG1B,YAAoB,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;QAFnD,WAAM,GAAG,IAAI,GAAG,EAAsD,CAAC;KAEhB;IAEhE,IAAI,CAAC,QAAyB,EAAE,UAAmB,EAAE,UAAmB;QACtE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CACjC,SAAS,CAAC,MAAM,IACd,MAAM,CACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,EAChD,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CACrC,CACF,EACD,GAAG,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,EACF,KAAK,CAAC,GAAG,CAAC,EACV,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;KACH;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;KACb;;4GAhCU,eAAe;gHAAf,eAAe,cAFd,MAAM;2FAEP,eAAe;kBAH3B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCNY,wBAAwB,GAAG,IAAI,cAAc,CAAS,0BAA0B;;MCqBhF,WAAW;IA4EtB,YAAY,QAAkB;QA3EtB,YAAO,GAAG,EAAE,CAAC;QASb,oBAAe,GAAG,EAAE,CAAC;QASrB,eAAU,GAAG,CAAC,CAAC;QACf,UAAK,GAAG,CAAC,CAAC;QAWV,aAAQ,GAAG,EAAE,CAAC;QASd,eAAU,GAAG,EAAE,CAAC;QAShB,YAAO,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC,CAAC;QAQhD,gBAAW,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,aAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QAQjC,QAAG,GAAG;YACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;SACb,CAAC;QAEF,wBAAmB,GAAG;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb,CAAC;QAGA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IA9ED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAGD,IAAI,cAAc,CAAC,KAAa;QAC9B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAID,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAGD,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAGD,IAAI,SAAS,CAAC,KAAa;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAID,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO;aAChB,YAAY,EAAE;aACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACrE;IAQD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;IAiBD,WAAW,CACT,qBAAqE;QAErE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,SAAS,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACjF,MAAM,CAAC,OAAO,CAAC,EACf,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACvC,WAAW,CAAM,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACnD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC;KACH;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEO,sBAAsB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QAEpD,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB;;YAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KACpC;IAEO,IAAI;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;YACjC,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe;YAC5C,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS;SACnD,CAAC,CAAC;KAC9B;;wGApHU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU;;;MCPE,iBAAiB;IAI5B,YAAoB,YAA0B,EAAE,QAAkB;QAA9C,iBAAY,GAAZ,YAAY,CAAc;QAHtC,UAAK,GAAG,IAAI,aAAa,CAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,aAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QAG/B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,qCAAqC,EAAE,CAAC;KAC9C;IAEO,qCAAqC;QAC3C,IAAI,CAAC,YAAY;aACd,sBAAsB,EAAE;aACxB,IAAI,CACH,GAAG,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,EAC9C,SAAS,CAAC,SAAS,IACjB,SAAS;cACL,IAAI,CAAC,KAAK,KAAK,CAAC;kBACd,EAAE,CAAC,IAAI,CAAC;kBACR,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;cACpE,EAAE,CAAC,KAAK,CAAC,CACd,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAChC;aACA,SAAS,CAAC,MAAM;YACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SACzB,CAAC,CAAC;KACN;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KACjC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;KACxD;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;KACzD;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;KAC/B;;8GA1CU,iBAAiB;kHAAjB,iBAAiB,cAFhB,MAAM;2FAEP,iBAAiB;kBAH7B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCXY,OAAO,GAClB,CAAU,GAAY,KACtB,CAAC,CAAC,EAAE,IAAI,KACN,IAAI,CAAC,GAAG,EAAE;MAED,WAAW,GACtB;AACE;AACA,GAAG,IAA2C,KAEhD,CAAC,CAAC,EAAE,IAAI,KACN,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;MAKjC,cAAc;IAH3B;QAIE,OAAE,GAAG,OAAO,CAAC;QAEb,WAAM,GAAG,WAAW,CAAC;KACtB;;2GAJY,cAAc;+GAAd,cAAc,cAFb,MAAM;2FAEP,cAAc;kBAH1B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MChBqB,iBAAiB;IACrC,YAAmB,YAA8B;QAA9B,iBAAY,GAAZ,YAAY,CAAkB;KAAI;IAIrD,OAAO,MAAW;CACnB;MAEY,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ;QACN,OAAO,CAAC,CAAC;KACV;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;CACF;MAEY,2BAA4B,SAAQ,iBAAiB;IAChE,YAAY,YAA8B,EAAU,KAAa;QAC/D,KAAK,CAAC,YAAY,CAAC,CAAC;QAD8B,UAAK,GAAL,KAAK,CAAQ;KAEhE;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpE;CACF;MAEY,kBAAkB,GAAG;IAChC,KAAK,CAAC,YAA8B;QAClC,OAAO,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAC;KACjD;IACD,MAAM,CAAC,YAA8B;QACnC,OAAO,IAAI,2BAA2B,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;KAC3E;IACD,OAAO,CAAC,YAA8B;QACpC,OAAO,IAAI,2BAA2B,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;KACzD;IACD,MAAM,CAAC,YAA8B,EAAE,KAAa;QAClD,OAAO,IAAI,2BAA2B,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KAC7D;;;MC1CmB,uBAAuB;IAC3C,YAAmB,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;KAAI;CAGtC;MAEY,4BAA6B,SAAQ,uBAAuB;IACvE,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;KACd;IAED,QAAQ,CAAC,OAA6C;QACpD,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;CACF;MAEY,yBAA0B,SAAQ,uBAAuB;IACpE;QACE,KAAK,EAAE,CAAC;KACT;IAED,QAAQ,CAAC,CAAuC,KAAI;CACrD;MAEY,yBAAyB,GAAG;IACvC,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC;KAChD;IACD,IAAI;QACF,OAAO,IAAI,yBAAyB,EAAE,CAAC;KACxC;;;MCvBmB,eAAe;IACnC,YACS,OAAe,EACZ,cAA2B,YAAY,CAAC,YAAY,EAAE,EACtD,0BAAmD,yBAAyB,CAAC,IAAI,EAAE,EACnF,UAA6B,EAAE;QAHlC,YAAO,GAAP,OAAO,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAA2C;QACtD,4BAAuB,GAAvB,uBAAuB,CAA4D;QACnF,YAAO,GAAP,OAAO,CAAwB;KACvC;IAIJ,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACxD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9E;QAED,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,OAAO,CAAC;KAChB;CACF;MAEY,oBAAqB,SAAQ,eAAiC;IACzE,aAAa;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnC,OAAO,OAAO,CAAC;KAChB;CACF;MAEY,qBAAsB,SAAQ,eAAkC;IAC3E,aAAa;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnC,OAAO,OAAO,CAAC;KAChB;CACF;MAEY,gBAAgB,GAAG;IAC9B,kBAAkB,CAAC,OAAe,EAAE,OAA2C;QAC7E,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC5F;IACD,kBAAkB,CAAC,OAAe,EAAE,OAA2C;QAC7E,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC5F;IACD,iBAAiB,CAAC,OAAe,EAAE,OAA0C;QAC3E,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC3F;IACD,kBAAkB,CAAC,OAAe,EAAE,OAA0C;QAC5E,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC5F;;;MC1DmB,eAAe;IACnC,YAAmB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;KAAI;IAEvD,UAAU,CAAC,YAAkD;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;CACF;MAEY,iBAEX,SAAQ,eAAkB;IAC1B;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;KAClB;CACF;MAEY,wBAAoD,SAAQ,eAAkB;IACzF,UAAU,CAAC,YAAiD;QAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3F,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;CACF;MAEY,uBAA0D,SAAQ,eAAkB;IAC/F,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;CACF;MAEY,gBAAgB,GAAG;IAC9B,IAAI;QACF,OAAO,IAAI,iBAAiB,EAAK,CAAC;KACnC;IACD,SAAS,CAA4B,OAAuC;QAC1E,OAAO,IAAI,wBAAwB,CAAI,OAAO,CAAC,CAAC;KACjD;IACD,QAAQ,CAAmC,OAAsC;QAC/E,OAAO,IAAI,uBAAuB,CAAI,OAAO,CAAC,CAAC;KAChD;;;MCpCmB,eAAe;IAGnC,YACS,IAAY,EACT,cAA2B,YAAY,CAAC,YAAY,EAAE,EACtD,sBAA2C,qBAAqB,CAAC,SAAS,EAAE;QAF/E,SAAI,GAAJ,IAAI,CAAQ;QACT,gBAAW,GAAX,WAAW,CAA2C;QACtD,wBAAmB,GAAnB,mBAAmB,CAAyD;KACpF;IAIJ,YAAY;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,SAAS,CAAC,MAAM,YAAY,CAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAC3F,CAAC;KACH;CACF;MAEY,qBAAsB,SAAQ,eAAkC;IAC3E,YAAY,GAAW,EAAE,WAAyB,EAAE,mBAAyC;QAC3F,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;KAC9C;IAED,aAAa;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,OAAO,OAAO,CAAC;KAChB;CACF;MAEY,oBAAqB,SAAQ,eAAgC;IACxE,YAAY,IAAY,EAAE,WAAyB,EAAE,mBAAyC;QAC5F,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;KAC/C;IAED,aAAa;QACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;QAC3B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEzB,OAAO,OAAO,CAAC;KAChB;CACF;MAEY,gBAAgB,GAAG;IAC9B,kBAAkB,CAAC,GAAW;QAC5B,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,YAAY,CAAC,YAAY,EAAE,EAC3B,qBAAqB,CAAC,IAAI,EAAE,CAC7B,CAAC;KACH;IACD,2BAA2B,CAAC,GAAW,EAAE,SAAkB;QACzD,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,YAAY,CAAC,YAAY,EAAE,EAC3B,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;KACH;IACD,2BAA2B,CAAC,GAAW,EAAE,SAAkB;QACzD,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,YAAY,CAAC,YAAY,EAAE,EAC3B,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;KACH;IACD,0BAA0B,CAAC,GAAW,EAAE,SAAkB;QACxD,OAAO,IAAI,oBAAoB,CAC7B,GAAG,EACH,YAAY,CAAC,YAAY,EAAE,EAC3B,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;KACH;IACD,4BAA4B,CAAC,GAAW,EAAE,SAAkB;QAC1D,OAAO,IAAI,qBAAqB,CAC9B,GAAG,EACH,YAAY,CAAC,aAAa,EAAE,EAC5B,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;KACH;IACD,2BAA2B,CAAC,GAAW,EAAE,SAAkB;QACzD,OAAO,IAAI,oBAAoB,CAC7B,GAAG,EACH,YAAY,CAAC,aAAa,EAAE,EAC5B,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAC3C,CAAC;KACH;;;MChFmB,kBAAkB;IACtC,YAAmB,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;KAAI;CAGlC;MAEY,2BAAiD,SAAQ,kBAAqB;IACzF,YACE,SAAY,EACJ,iBAAoC,EACpC,kBAAmC,gBAAgB,CAAC,IAAI,EAAE;QAElE,KAAK,CAAC,SAAS,CAAC,CAAC;QAHT,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAA2C;KAGnE;IAED,aAAa,CAAC,QAAkB;QAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAA6B,CAAC;QACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,uBAAuB,CAAwB,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtF,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,eAAe,CACtE,OAAO,EACP,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EACjC,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE9C,OAAO,YAAgD,CAAC;KACzD;CACF;MAEY,+BAAqD,SAAQ,kBAAqB;IAC7F,YACE,SAAY,EACJ,kBAAmC,gBAAgB,CAAC,IAAI,EAAE,EAC1D,cAA2B,YAAY,CAAC,YAAY,EAAE;QAE9D,KAAK,CAAC,SAAS,CAAC,CAAC;QAHT,oBAAe,GAAf,eAAe,CAA2C;QAC1D,gBAAW,GAAX,WAAW,CAA2C;KAG/D;IAED,aAAa,CAAC,QAAkB;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAA6B,CAAC;QACpF,MAAM,YAAY,GAAG,QAAQ;aAC1B,uBAAuB,CAAwB,IAAI,CAAC,OAAO,CAAC;aAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE9C,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAiB,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,YAAgD,CAAC;KACzD;CACF;MAEY,0BAAuD,SAAQ,kBAAqB;IAC/F,YACE,WAAc,EACN,iBAAoC,EACpC,kBAAkB,gBAAgB,CAAC,IAAI,EAAE;QAEjD,KAAK,CAAC,WAAW,CAAC,CAAC;QAHX,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAA0B;KAGlD;IAED,aAAa;QACX,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,kBAAkB,CAC5E,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,CAAC,OAAO,EAC5B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAClC,CAAC;QACF,eAAe,CAAC,aAAa,EAAE,CAAC;QAEhC,OAAO,eAAmD,CAAC;KAC5D;CACF;MAEY,mBAAmB,GAAG;IACjC,qBAAqB,CACnB,SAAY,EACZ,OAAwC;QAExC,OAAO,IAAI,+BAA+B,CACxC,SAAS,EACT,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAC/C,CAAC;KACH;IACD,0BAA0B,CACxB,SAAY,EACZ,YAA8B,EAC9B,OAAwC;QAExC,OAAO,IAAI,2BAA2B,CACpC,SAAS,EACT,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,EACvC,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAC/C,CAAC;KACH;IACD,yBAAyB,CACvB,WAAc,EACd,YAA8B,EAC9B,OAAuC;QAEvC,OAAO,IAAI,0BAA0B,CACnC,WAAW,EACX,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,EACvC,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;KACH;IACD,2BAA2B,CACzB,SAAY,EACZ,YAA8B,EAC9B,OAAwC;QAExC,OAAO,IAAI,2BAA2B,CACpC,SAAS,EACT,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EACxC,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAC/C,CAAC;KACH;IACD,0BAA0B,CACxB,WAAc,EACd,YAA8B,EAC9B,OAAuC;QAEvC,OAAO,IAAI,0BAA0B,CACnC,WAAW,EACX,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EACxC,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;KACH;IACD,2BAA2B,CACzB,SAAY,EACZ,YAA8B,EAC9B,OAAwC;QAExC,OAAO,IAAI,2BAA2B,CACpC,SAAS,EACT,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,EACtC,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAC/C,CAAC;KACH;IACD,0BAA0B,CACxB,WAAc,EACd,YAA8B,EAC9B,OAAuC;QAEvC,OAAO,IAAI,0BAA0B,CACnC,WAAW,EACX,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,EACtC,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;KACH;;;MCxKU,0BAA0B,GAAG,IAAI,cAAc,CAC1D,4BAA4B,EAC5B;IACE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE;QACP,MAAM,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAE/C,OAAO;YACL,MAAM,CAAC,IAAI,CACT,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,MAAM,6BAChD,MAAM,CAAC,QAAQ,CAAC,IAClB,EAAE,EACF,OAAO,CACR,CAAC;SACH,CAAC;KACH;CACF;;SCPa,cAAc,CAAC,EAAE,GAAG,GAAG,EAAE,KAAoB,EAAE;IAC7D,OAAO,CAAC,OAAwB;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB,EAAE,MAAc;IAC3D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD;;SCpBgB,kBAAkB;IAChC,OAAO,CAAC,OAAwB;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,OAAO,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QAChD,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;QAE1C,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,OAAO,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7B;;SChBgB,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,GAAG,CAAC,KAAmB,EAAE;IAClF,OAAO,CAAC,OAAwB;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC1D,OAAO,KAAK,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC1D,OAAO,KAAK,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;AACtD;;SCnBgB,gBAAgB,CAAC,EAAE,iBAAiB,KAAsB,EAAE;IAC1E,OAAO,CAAC,OAAwB;QAC9B,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAU,EAAE,iBAA0B;IAC7D,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEzD,IAAI,iBAAiB,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf;;SCNgB,oBAAoB,CAAC,EACnC,aAAa,GAAG,QAAQ,EACxB,aAAa,GAAG,CAAC,MACM,EAAE;IACzB,OAAO,CAAC,OAAwB;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,cAAsB;IAC9D,OAAO,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC;AAClF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,cAAsB;IAC9D,OAAO,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC;AAClF;;SC7BgB,WAAW;IACzB,OAAO,CAAC,OAAwB;QAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACnE,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACf,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACjB;IAED,OAAO,KAAK,CAAC;AACf;;MCRa,aAAa,GAAG;IAC3B,UAAU,EAAE,kBAAkB;IAC9B,YAAY,EAAE,MAAM,UAAU,CAAC,KAAK;IACpC,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,YAAY,EAAE,oBAAoB;IAClC,GAAG,EAAE,WAAW;;;ACrBlB;;ACAA;;;;;;"}
1
+ {"version":3,"file":"abp-ng.core.mjs","sources":["../../../../packages/core/src/lib/abstracts/ng-model.component.ts","../../../../packages/core/src/lib/tokens/localization.token.ts","../../../../packages/core/src/lib/tokens/options.token.ts","../../../../packages/core/src/lib/utils/localization-utils.ts","../../../../packages/core/src/lib/utils/string-utils.ts","../../../../packages/core/src/lib/utils/common-utils.ts","../../../../packages/core/src/lib/utils/object-utils.ts","../../../../packages/core/src/lib/utils/internal-store-utils.ts","../../../../packages/core/src/lib/services/environment.service.ts","../../../../packages/core/src/lib/services/http-error-reporter.service.ts","../../../../packages/core/src/lib/services/rest.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.ts","../../../../packages/core/src/lib/services/config-state.service.ts","../../../../packages/core/src/lib/services/session-state.service.ts","../../../../packages/core/src/lib/services/localization.service.ts","../../../../packages/core/src/lib/utils/route-utils.ts","../../../../packages/core/src/lib/services/replaceable-components.service.ts","../../../../packages/core/src/lib/services/router-events.service.ts","../../../../packages/core/src/lib/utils/array-utils.ts","../../../../packages/core/src/lib/utils/tree-utils.ts","../../../../packages/core/src/lib/services/permission.service.ts","../../../../packages/core/src/lib/services/routes.service.ts","../../../../packages/core/src/lib/services/subscription.service.ts","../../../../packages/core/src/lib/components/dynamic-layout.component.ts","../../../../packages/core/src/lib/components/replaceable-route-container.component.ts","../../../../packages/core/src/lib/components/router-outlet.component.ts","../../../../packages/core/src/lib/constants/different-locales.ts","../../../../packages/core/src/lib/directives/autofocus.directive.ts","../../../../packages/core/src/lib/directives/debounce.directive.ts","../../../../packages/core/src/lib/directives/for.directive.ts","../../../../packages/core/src/lib/directives/form-submit.directive.ts","../../../../packages/core/src/lib/directives/init.directive.ts","../../../../packages/core/src/lib/directives/permission.directive.ts","../../../../packages/core/src/lib/directives/replaceable-template.directive.ts","../../../../packages/core/src/lib/directives/stop-propagation.directive.ts","../../../../packages/core/src/lib/handlers/oauth-configuration.handler.ts","../../../../packages/core/src/lib/handlers/routes.handler.ts","../../../../packages/core/src/lib/utils/http-utils.ts","../../../../packages/core/src/lib/tokens/lodaer-delay.token.ts","../../../../packages/core/src/lib/services/http-wait.service.ts","../../../../packages/core/src/lib/tokens/tenant-key.token.ts","../../../../packages/core/src/lib/interceptors/api.interceptor.ts","../../../../packages/core/src/lib/pipes/localization.pipe.ts","../../../../packages/core/src/lib/localization.module.ts","../../../../packages/core/src/lib/pipes/sort.pipe.ts","../../../../packages/core/src/lib/pipes/to-injector.pipe.ts","../../../../packages/core/src/lib/tokens/cookie-language-key.token.ts","../../../../packages/core/src/lib/providers/cookie-language.provider.ts","../../../../packages/core/src/lib/providers/locale.provider.ts","../../../../packages/core/src/lib/utils/auth-utils.ts","../../../../packages/core/src/lib/strategies/auth-flow.strategy.ts","../../../../packages/core/src/lib/utils/date-extensions.ts","../../../../packages/core/src/lib/services/auth.service.ts","../../../../packages/core/src/lib/tokens/app-config.token.ts","../../../../packages/core/src/lib/utils/environment-utils.ts","../../../../packages/core/src/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.ts","../../../../packages/core/src/lib/services/multi-tenancy.service.ts","../../../../packages/core/src/lib/utils/multi-tenancy-utils.ts","../../../../packages/core/src/lib/utils/initial-utils.ts","../../../../packages/core/src/lib/core.module.ts","../../../../packages/core/src/lib/guards/auth.guard.ts","../../../../packages/core/src/lib/guards/permission.guard.ts","../../../../packages/core/src/lib/models/dtos.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.ts","../../../../packages/core/src/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.ts","../../../../packages/core/src/lib/proxy/volo/abp/http/modeling/models.ts","../../../../packages/core/src/lib/services/content-projection.service.ts","../../../../packages/core/src/lib/utils/date-utils.ts","../../../../packages/core/src/lib/utils/factory-utils.ts","../../../../packages/core/src/lib/utils/file-utils.ts","../../../../packages/core/src/lib/utils/number-utils.ts","../../../../packages/core/src/lib/utils/form-utils.ts","../../../../packages/core/src/lib/utils/generator-utils.ts","../../../../packages/core/src/lib/strategies/cross-origin.strategy.ts","../../../../packages/core/src/lib/strategies/dom.strategy.ts","../../../../packages/core/src/lib/utils/lazy-load-utils.ts","../../../../packages/core/src/lib/services/dom-insertion.service.ts","../../../../packages/core/src/lib/services/resource-wait.service.ts","../../../../packages/core/src/lib/services/lazy-load.service.ts","../../../../packages/core/src/lib/tokens/list.token.ts","../../../../packages/core/src/lib/services/list.service.ts","../../../../packages/core/src/lib/services/router-wait.service.ts","../../../../packages/core/src/lib/services/track-by.service.ts","../../../../packages/core/src/lib/strategies/container.strategy.ts","../../../../packages/core/src/lib/strategies/content-security.strategy.ts","../../../../packages/core/src/lib/strategies/content.strategy.ts","../../../../packages/core/src/lib/strategies/context.strategy.ts","../../../../packages/core/src/lib/strategies/loading.strategy.ts","../../../../packages/core/src/lib/strategies/projection.strategy.ts","../../../../packages/core/src/lib/tokens/manage-profile.token.ts","../../../../packages/core/src/lib/validators/age.validator.ts","../../../../packages/core/src/lib/validators/credit-card.validator.ts","../../../../packages/core/src/lib/validators/range.validator.ts","../../../../packages/core/src/lib/validators/required.validator.ts","../../../../packages/core/src/lib/validators/string-length.validator.ts","../../../../packages/core/src/lib/validators/url.validator.ts","../../../../packages/core/src/lib/validators/index.ts","../../../../packages/core/src/public-api.ts","../../../../packages/core/src/abp-ng.core.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Injector, Input } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n// Not an abstract class on purpose. Do not change!\r\n@Component({ template: '' })\r\nexport class AbstractNgModelComponent<T = any, U = T> implements ControlValueAccessor {\r\n protected _value: T;\r\n protected cdRef: ChangeDetectorRef;\r\n onChange: (value: T) => void;\r\n onTouched: () => void;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n valueFn: (value: U, previousValue?: T) => T = value => value as any as T;\r\n\r\n @Input()\r\n valueLimitFn: (value: T, previousValue?: T) => any = value => false;\r\n\r\n @Input()\r\n set value(value: T) {\r\n value = this.valueFn(value as any as U, this._value);\r\n\r\n if (this.valueLimitFn(value, this._value) !== false || this.readonly) return;\r\n\r\n this._value = value;\r\n this.notifyValueChange();\r\n }\r\n\r\n get value(): T {\r\n return this._value || this.defaultValue;\r\n }\r\n\r\n get defaultValue(): T {\r\n return this._value;\r\n }\r\n\r\n constructor(public injector: Injector) {\r\n this.cdRef = injector.get(ChangeDetectorRef);\r\n }\r\n\r\n notifyValueChange(): void {\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n writeValue(value: T): void {\r\n this._value = this.valueLimitFn(value, this._value) || value;\r\n setTimeout(() => this.cdRef.markForCheck(), 0);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const LOCALIZATIONS = new InjectionToken('LOCALIZATIONS');\r\n\r\nexport function localizationContributor(localizations: ABP.Localization[]) {\r\n if (localizations) {\r\n localizations$.next([...localizations$.value, ...localizations]);\r\n }\r\n}\r\n\r\nexport const localizations$ = new BehaviorSubject([]);\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ABP } from '../models/common';\r\n\r\nexport const CORE_OPTIONS = new InjectionToken<ABP.Root>('CORE_OPTIONS');\r\n\r\nexport function coreOptionsFactory({ ...options }: ABP.Root) {\r\n return {\r\n ...options,\r\n } as ABP.Root;\r\n}\r\n","import { ApplicationLocalizationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\n\r\n// This will not be necessary when only Angukar 9.1+ is supported\r\nexport function getLocaleDirection(locale: string): 'ltr' | 'rtl' {\r\n return /^(ar(-[A-Z]{2})?|ckb(-IR)?|fa(-AF)?|he|ks|lrc(-IQ)?|mzn|pa-Arab|ps(-PK)?|sd|ug|ur(-IN)?|uz-Arab|yi)$/.test(\r\n locale,\r\n )\r\n ? 'rtl'\r\n : 'ltr';\r\n}\r\n\r\nexport function createLocalizer(localization: ApplicationLocalizationConfigurationDto) {\r\n return (resourceName: string, key: string, defaultValue: string) => {\r\n if (resourceName === '_') return key;\r\n\r\n const resource = localization?.values?.[resourceName];\r\n\r\n if (!resource) return defaultValue;\r\n\r\n return resource[key] || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizerWithFallback(localization: ApplicationLocalizationConfigurationDto) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultValue: string) => {\r\n const { localized } = findLocalization(resourceNames, keys);\r\n return localized || defaultValue;\r\n };\r\n}\r\n\r\nexport function createLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const findLocalization = createLocalizationFinder(localization);\r\n\r\n return (resourceNames: string[], keys: string[], defaultKey: string | undefined) => {\r\n const { resourceName, key } = findLocalization(resourceNames, keys);\r\n return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;\r\n };\r\n}\r\n\r\nfunction createLocalizationFinder(localization: ApplicationLocalizationConfigurationDto) {\r\n const localize = createLocalizer(localization);\r\n\r\n return (resourceNames: string[], keys: string[]) => {\r\n resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);\r\n\r\n const resourceCount = resourceNames.length;\r\n const keyCount = keys.length;\r\n\r\n for (let i = 0; i < resourceCount; i++) {\r\n const resourceName = resourceNames[i];\r\n\r\n for (let j = 0; j < keyCount; j++) {\r\n const key = keys[j];\r\n const localized = localize(resourceName, key, null);\r\n if (localized) return { resourceName, key, localized };\r\n }\r\n }\r\n\r\n return { resourceName: undefined, key: undefined, localized: undefined };\r\n };\r\n}\r\n","export function createTokenParser(format: string) {\r\n return (str: string) => {\r\n const tokens: string[] = [];\r\n const regex = format.replace(/\\./g, '\\\\.').replace(/\\{\\s?([0-9a-zA-Z]+)\\s?\\}/g, (_, token) => {\r\n tokens.push(token);\r\n return '(.+)';\r\n });\r\n\r\n const matches = (str.match(regex) || []).slice(1);\r\n\r\n return matches.reduce((acc, v, i) => {\r\n const key = tokens[i];\r\n acc[key] = [...(acc[key] || []), v].filter(Boolean);\r\n return acc;\r\n }, {} as Record<string, string[]>);\r\n };\r\n}\r\n\r\nexport function interpolate(text: string, params: string[]) {\r\n return text\r\n .replace(/(['\"]?\\{\\s*(\\d+)\\s*\\}['\"]?)/g, (_, match, digit) => params[digit] ?? match)\r\n .replace(/\\s+/g, ' ');\r\n}\r\n\r\nexport function escapeHtmlChars(value: any) {\r\n return value && typeof value === 'string'\r\n ? value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n : value;\r\n}\r\n","export function noop() {\r\n const fn = function () {};\r\n return fn;\r\n}\r\n\r\nexport function isUndefinedOrEmptyString(value: unknown): boolean {\r\n return value === undefined || value === '';\r\n}\r\n\r\nexport function isNullOrUndefined(obj) {\r\n return obj === null || obj === undefined;\r\n}\r\n\r\nexport function exists(obj) {\r\n return !isNullOrUndefined(obj);\r\n}\r\n\r\nexport function isObject(obj) {\r\n return obj instanceof Object;\r\n}\r\n\r\nexport function isArray(obj) {\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isObjectAndNotArray(obj) {\r\n return isObject(obj) && !isArray(obj);\r\n}\r\n\r\nexport function isNode(obj) {\r\n return obj instanceof Node;\r\n}\r\n\r\nexport function isObjectAndNotArrayNotNode(obj) {\r\n return isObjectAndNotArray(obj) && !isNode(obj);\r\n}\r\n","import {\r\n exists,\r\n isArray,\r\n isNode,\r\n isNullOrUndefined,\r\n isObject,\r\n isObjectAndNotArrayNotNode,\r\n} from './common-utils';\r\n\r\nexport function deepMerge(target, source) {\r\n if (isObjectAndNotArrayNotNode(target) && isObjectAndNotArrayNotNode(source)) {\r\n return deepMergeRecursively(target, source);\r\n } else if (isNullOrUndefined(target) && isNullOrUndefined(source)) {\r\n return {};\r\n } else {\r\n return exists(source) ? source : target;\r\n }\r\n}\r\n\r\nfunction deepMergeRecursively(target, source) {\r\n const shouldNotRecurse =\r\n isNullOrUndefined(target) ||\r\n isNullOrUndefined(source) || // at least one not defined\r\n isArray(target) ||\r\n isArray(source) || // at least one array\r\n !isObject(target) ||\r\n !isObject(source) || // at least one not an object\r\n isNode(target) ||\r\n isNode(source); // at least one node\r\n\r\n /**\r\n * if we will not recurse any further,\r\n * we will prioritize source if it is a defined value.\r\n */\r\n if (shouldNotRecurse) {\r\n return exists(source) ? source : target;\r\n }\r\n\r\n const keysOfTarget = Object.keys(target);\r\n const keysOfSource = Object.keys(source);\r\n const uniqueKeys = new Set(keysOfTarget.concat(keysOfSource));\r\n return [...uniqueKeys].reduce((retVal, key) => {\r\n retVal[key] = deepMergeRecursively(target[key], source[key]);\r\n return retVal;\r\n }, {});\r\n}\r\n","import compare from 'just-compare';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\r\nimport { DeepPartial } from '../models';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport class InternalStore<State> {\r\n private state$ = new BehaviorSubject<State>(this.initialState);\r\n\r\n private update$ = new Subject<DeepPartial<State>>();\r\n\r\n get state() {\r\n return this.state$.value;\r\n }\r\n\r\n sliceState = <Slice>(\r\n selector: (state: State) => Slice,\r\n compareFn: (s1: Slice, s2: Slice) => boolean = compare,\r\n ) => this.state$.pipe(map(selector), distinctUntilChanged(compareFn));\r\n\r\n sliceUpdate = <Slice>(\r\n selector: (state: DeepPartial<State>) => Slice,\r\n filterFn = (x: Slice) => x !== undefined,\r\n ) => this.update$.pipe(map(selector), filter(filterFn));\r\n\r\n constructor(private initialState: State) {}\r\n\r\n patch(state: Partial<State>) {\r\n let patchedState = state as State;\r\n\r\n if (typeof state === 'object' && !Array.isArray(state)) {\r\n patchedState = { ...this.state, ...state };\r\n }\r\n\r\n this.state$.next(patchedState);\r\n this.update$.next(patchedState as DeepPartial<State>);\r\n }\r\n\r\n deepPatch(state: DeepPartial<State>) {\r\n this.state$.next(deepMerge(this.state, state));\r\n this.update$.next(state);\r\n }\r\n\r\n set(state: State) {\r\n this.state$.next(state);\r\n this.update$.next(state as DeepPartial<State>);\r\n }\r\n\r\n reset() {\r\n this.set(this.initialState);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Apis, Environment } from '../models/environment';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nconst mapToApiUrl = (key: string) => (apis: Apis) =>\r\n (apis[key] || apis.default).url || apis.default.url;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EnvironmentService {\r\n private readonly store = new InternalStore({} as Environment);\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n\r\n getEnvironment$(): Observable<Environment> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getEnvironment(): Environment {\r\n return this.store.state;\r\n }\r\n\r\n getApiUrl(key: string) {\r\n return mapToApiUrl(key)(this.store.state.apis);\r\n }\r\n\r\n getApiUrl$(key: string) {\r\n return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));\r\n }\r\n\r\n setState(environment: Environment) {\r\n this.store.set(environment);\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpErrorReporterService {\r\n private _reporter$ = new Subject<HttpErrorResponse>();\r\n private _errors$ = new BehaviorSubject<HttpErrorResponse[]>([]);\r\n\r\n get reporter$() {\r\n return this._reporter$.asObservable();\r\n }\r\n\r\n get errors$() {\r\n return this._errors$.asObservable();\r\n }\r\n\r\n get errors() {\r\n return this._errors$.value;\r\n }\r\n\r\n reportError = (error: HttpErrorResponse) => {\r\n this._reporter$.next(error);\r\n this._errors$.next([...this.errors, error]);\r\n };\r\n}\r\n","import { HttpClient, HttpParameterCodec, HttpParams, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { Rest } from '../models/rest';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { isUndefinedOrEmptyString } from '../utils/common-utils';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { HttpErrorReporterService } from './http-error-reporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RestService {\r\n constructor(\r\n @Inject(CORE_OPTIONS) protected options: ABP.Root,\r\n protected http: HttpClient,\r\n protected environment: EnvironmentService,\r\n protected httpErrorReporter: HttpErrorReporterService,\r\n ) {}\r\n\r\n protected getApiFromStore(apiName: string): string {\r\n return this.environment.getApiUrl(apiName);\r\n }\r\n\r\n handleError(err: any): Observable<any> {\r\n this.httpErrorReporter.reportError(err);\r\n return throwError(err);\r\n }\r\n\r\n request<T, R>(\r\n request: HttpRequest<T> | Rest.Request<T>,\r\n config?: Rest.Config,\r\n api?: string,\r\n ): Observable<R> {\r\n config = config || ({} as Rest.Config);\r\n api = api || this.getApiFromStore(config.apiName);\r\n const { method, params, ...options } = request;\r\n const { observe = Rest.Observe.Body, skipHandleError } = config;\r\n\r\n return this.http\r\n .request<R>(method, api + request.url, {\r\n observe,\r\n ...(params && {\r\n params: this.getParams(params, config.httpParamEncoder),\r\n }),\r\n ...options,\r\n } as any)\r\n .pipe(catchError(err => (skipHandleError ? throwError(err) : this.handleError(err))));\r\n }\r\n\r\n private getParams(params: Rest.Params, encoder?: HttpParameterCodec): HttpParams {\r\n const filteredParams = Object.keys(params).reduce((acc, key) => {\r\n const value = params[key];\r\n if (isUndefinedOrEmptyString(value)) return acc;\r\n if (value === null && !this.options.sendNullsAsQueryParam) return acc;\r\n acc[key] = value;\r\n return acc;\r\n }, {});\r\n return encoder\r\n ? new HttpParams({ encoder, fromObject: filteredParams })\r\n : new HttpParams({ fromObject: filteredParams });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../../../services/rest.service';\r\nimport type { ApplicationConfigurationDto } from './models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApplicationConfigurationService {\r\n apiName = 'abp';\r\n\r\n get() {\r\n return this.restService.request<any, ApplicationConfigurationDto>(\r\n {\r\n method: 'GET',\r\n url: '/api/abp/application-configuration',\r\n },\r\n { apiName: this.apiName },\r\n );\r\n }\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map, switchMap, take } from 'rxjs/operators';\r\nimport { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigStateService {\r\n private readonly store = new InternalStore({} as ApplicationConfigurationDto);\r\n\r\n get createOnUpdateStream() {\r\n return this.store.sliceUpdate;\r\n }\r\n\r\n private updateSubject = new Subject();\r\n\r\n constructor(private abpConfigService: AbpApplicationConfigurationService) {\r\n this.initUpdateStream();\r\n }\r\n\r\n private initUpdateStream() {\r\n this.updateSubject\r\n .pipe(switchMap(() => this.abpConfigService.get()))\r\n .subscribe(res => this.store.set(res));\r\n }\r\n\r\n refreshAppState() {\r\n this.updateSubject.next();\r\n return this.createOnUpdateStream(state => state).pipe(take(1));\r\n }\r\n\r\n getOne$(key: string) {\r\n return this.store.sliceState(state => state[key]);\r\n }\r\n\r\n getOne(key: string) {\r\n return this.store.state[key];\r\n }\r\n\r\n getAll$(): Observable<ApplicationConfigurationDto> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n getAll(): ApplicationConfigurationDto {\r\n return this.store.state;\r\n }\r\n\r\n getDeep$(keys: string[] | string): Observable<any> {\r\n keys = splitKeys(keys);\r\n\r\n return this.store\r\n .sliceState(state => state)\r\n .pipe(\r\n map(state => {\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, state);\r\n }),\r\n );\r\n }\r\n\r\n getDeep(keys: string[] | string): any {\r\n keys = splitKeys(keys);\r\n\r\n return (keys as string[]).reduce((acc: any, val) => {\r\n if (acc) {\r\n return acc[val];\r\n }\r\n\r\n return undefined;\r\n }, this.store.state);\r\n }\r\n\r\n getFeature(key: string) {\r\n return this.store.state.features?.values?.[key];\r\n }\r\n\r\n getFeature$(key: string) {\r\n return this.store.sliceState(state => state.features?.values?.[key]);\r\n }\r\n\r\n getFeatures(keys: string[]) {\r\n const { features } = this.store.state;\r\n if (!features) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n }\r\n\r\n getFeatures$(keys: string[]) {\r\n return this.store.sliceState(({ features }) => {\r\n if (!features?.values) return;\r\n\r\n return keys.reduce((acc, key) => ({ ...acc, [key]: features.values[key] }), {});\r\n });\r\n }\r\n\r\n getSetting(key: string) {\r\n return this.store.state.setting?.values?.[key];\r\n }\r\n\r\n getSetting$(key: string) {\r\n return this.store.sliceState(state => state.setting?.values?.[key]);\r\n }\r\n\r\n getSettings(keyword?: string) {\r\n const settings = this.store.state.setting?.values || {};\r\n\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce((acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n }, {});\r\n }\r\n\r\n getSettings$(keyword?: string) {\r\n return this.store\r\n .sliceState(state => state.setting?.values)\r\n .pipe(\r\n map((settings = {}) => {\r\n if (!keyword) return settings;\r\n\r\n const keysFound = Object.keys(settings).filter(key => key.indexOf(keyword) > -1);\r\n\r\n return keysFound.reduce((acc, key) => {\r\n acc[key] = settings[key];\r\n return acc;\r\n }, {});\r\n }),\r\n );\r\n }\r\n}\r\n\r\nfunction splitKeys(keys: string[] | string): string[] {\r\n if (typeof keys === 'string') {\r\n keys = keys.split('.');\r\n }\r\n\r\n if (!Array.isArray(keys)) {\r\n throw new Error('The argument must be a dot string or an string array.');\r\n }\r\n\r\n return keys;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Session } from '../models/session';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SessionStateService {\r\n private readonly store = new InternalStore({} as Session.State);\r\n\r\n private updateLocalStorage = () => {\r\n localStorage.setItem('abpSession', JSON.stringify(this.store.state));\r\n };\r\n\r\n constructor(private configState: ConfigStateService) {\r\n this.init();\r\n this.setInitialLanguage();\r\n }\r\n\r\n private init() {\r\n const session = localStorage.getItem('abpSession');\r\n if (session) {\r\n this.store.set(JSON.parse(session));\r\n }\r\n\r\n this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);\r\n }\r\n\r\n private setInitialLanguage() {\r\n if (this.getLanguage()) return;\r\n\r\n this.configState\r\n .getDeep$('localization.currentCulture.cultureName')\r\n .pipe(\r\n filter(cultureName => !!cultureName),\r\n take(1),\r\n )\r\n .subscribe(lang => {\r\n if (lang.includes(';')) {\r\n lang = lang.split(';')[0];\r\n }\r\n\r\n this.setLanguage(lang);\r\n });\r\n }\r\n\r\n onLanguageChange$() {\r\n return this.store.sliceUpdate(state => state.language);\r\n }\r\n\r\n onTenantChange$() {\r\n return this.store.sliceUpdate(state => state.tenant);\r\n }\r\n\r\n getLanguage() {\r\n return this.store.state.language;\r\n }\r\n\r\n getLanguage$() {\r\n return this.store.sliceState(state => state.language);\r\n }\r\n\r\n getTenant() {\r\n return this.store.state.tenant;\r\n }\r\n\r\n getTenant$() {\r\n return this.store.sliceState(state => state.tenant);\r\n }\r\n\r\n setTenant(tenant: CurrentTenantDto) {\r\n if (compare(tenant, this.store.state.tenant)) return;\r\n\r\n this.store.set({ ...this.store.state, tenant });\r\n }\r\n\r\n setLanguage(language: string) {\r\n if (language === this.store.state.language) return;\r\n\r\n this.store.patch({ language });\r\n document.documentElement.setAttribute('lang', language);\r\n }\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { Injectable, Injector, isDevMode, Optional, SkipSelf } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, from, Observable, Subject } from 'rxjs';\r\nimport { filter, map, mapTo, switchMap } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { localizations$ } from '../tokens/localization.token';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';\r\nimport { interpolate } from '../utils/string-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalizationService {\r\n private latestLang = this.sessionState.getLanguage();\r\n private _languageChange$ = new Subject<string>();\r\n\r\n private uiLocalizations$ = new BehaviorSubject(\r\n new Map<string, Map<string, Record<string, string>>>(),\r\n );\r\n\r\n private localizations$ = new BehaviorSubject(new Map<string, Record<string, string>>());\r\n\r\n /**\r\n * Returns currently selected language\r\n * Even though this looks like it's redundant to return the same value as `getLanguage()`,\r\n * it's actually not. This could be invoked any time, and the latestLang could be different from the\r\n * sessionState.getLanguage() value.\r\n */\r\n get currentLang(): string {\r\n return this.latestLang || this.sessionState.getLanguage();\r\n }\r\n\r\n get currentLang$(): Observable<string> {\r\n return this.sessionState.getLanguage$();\r\n }\r\n\r\n get languageChange$(): Observable<string> {\r\n return this._languageChange$.asObservable();\r\n }\r\n\r\n constructor(\r\n private sessionState: SessionStateService,\r\n private injector: Injector,\r\n @Optional()\r\n @SkipSelf()\r\n otherInstance: LocalizationService,\r\n private configState: ConfigStateService,\r\n ) {\r\n if (otherInstance) throw new Error('LocalizationService should have only one instance.');\r\n\r\n this.listenToSetLanguage();\r\n this.initLocalizationValues();\r\n }\r\n\r\n private initLocalizationValues() {\r\n localizations$.subscribe(val => this.addLocalization(val));\r\n\r\n const remoteLocalizations$ = this.configState.getDeep$('localization.values') as Observable<\r\n Record<string, Record<string, string>>\r\n >;\r\n const currentLanguage$ = this.sessionState.getLanguage$();\r\n\r\n const uiLocalizations$ = combineLatest([currentLanguage$, this.uiLocalizations$]).pipe(\r\n map(([currentLang, localizations]) => localizations.get(currentLang)),\r\n );\r\n\r\n combineLatest([remoteLocalizations$, uiLocalizations$])\r\n .pipe(\r\n map(([remote, local]) => {\r\n if (remote) {\r\n if (!local) {\r\n local = new Map();\r\n }\r\n\r\n Object.entries(remote).forEach(entry => {\r\n const resourceName = entry[0];\r\n const remoteTexts = entry[1];\r\n let resource = local.get(resourceName) || {};\r\n resource = { ...resource, ...remoteTexts };\r\n\r\n local.set(resourceName, resource);\r\n });\r\n }\r\n\r\n return local;\r\n }),\r\n )\r\n .subscribe(val => this.localizations$.next(val));\r\n }\r\n\r\n addLocalization(localizations?: ABP.Localization[]) {\r\n if (!localizations) return;\r\n\r\n const localizationMap = this.uiLocalizations$.value;\r\n\r\n localizations.forEach(loc => {\r\n const cultureMap =\r\n localizationMap.get(loc.culture) || new Map<string, Record<string, string>>();\r\n\r\n loc.resources.forEach(res => {\r\n let resource: Record<string, string> = cultureMap.get(res.resourceName) || {};\r\n\r\n resource = { ...resource, ...res.texts };\r\n\r\n cultureMap.set(res.resourceName, resource);\r\n });\r\n\r\n localizationMap.set(loc.culture, cultureMap);\r\n });\r\n\r\n this.uiLocalizations$.next(localizationMap);\r\n }\r\n\r\n private listenToSetLanguage() {\r\n this.sessionState\r\n .onLanguageChange$()\r\n .pipe(\r\n filter(\r\n lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang,\r\n ),\r\n switchMap(lang => this.configState.refreshAppState().pipe(mapTo(lang))),\r\n switchMap(lang => from(this.registerLocale(lang).then(() => lang))),\r\n )\r\n .subscribe(lang => this._languageChange$.next(lang));\r\n }\r\n\r\n registerLocale(locale: string) {\r\n const { registerLocaleFn }: ABP.Root = this.injector.get(CORE_OPTIONS);\r\n\r\n return registerLocaleFn(locale).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n this.latestLang = locale;\r\n });\r\n }\r\n\r\n /**\r\n * Returns an observable localized text with the given interpolation parameters in current language.\r\n * @param key Localizaton key to replace with localized text\r\n * @param interpolateParams Values to interpolate\r\n */\r\n get(key: string | LocalizationWithDefault, ...interpolateParams: string[]): Observable<string> {\r\n return this.configState\r\n .getAll$()\r\n .pipe(map(state => this.getLocalization(state, key, ...interpolateParams)));\r\n }\r\n\r\n getResource(resourceName: string) {\r\n return this.localizations$.value.get(resourceName);\r\n }\r\n\r\n getResource$(resourceName: string) {\r\n return this.localizations$.pipe(map(res => res.get(resourceName)));\r\n }\r\n\r\n /**\r\n * Returns localized text with the given interpolation parameters in current language.\r\n * @param key Localization key to replace with localized text\r\n * @param interpolateParams Values to intepolate.\r\n */\r\n instant(key: string | LocalizationWithDefault, ...interpolateParams: string[]): string {\r\n return this.getLocalization(this.configState.getAll(), key, ...interpolateParams);\r\n }\r\n\r\n localize(resourceName: string, key: string, defaultValue: string): Observable<string> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizer),\r\n map(localize => localize(resourceName, key, defaultValue)),\r\n );\r\n }\r\n\r\n localizeSync(resourceName: string, key: string, defaultValue: string): string {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizer(localization)(resourceName, key, defaultValue);\r\n }\r\n\r\n localizeWithFallback(\r\n resourceNames: string[],\r\n keys: string[],\r\n defaultValue: string,\r\n ): Observable<string> {\r\n return this.configState.getOne$('localization').pipe(\r\n map(createLocalizerWithFallback),\r\n map(localizeWithFallback => localizeWithFallback(resourceNames, keys, defaultValue)),\r\n );\r\n }\r\n\r\n localizeWithFallbackSync(resourceNames: string[], keys: string[], defaultValue: string): string {\r\n const localization = this.configState.getOne('localization');\r\n return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);\r\n }\r\n\r\n private getLocalization(\r\n state: ApplicationConfigurationDto,\r\n key: string | LocalizationWithDefault,\r\n ...interpolateParams: string[]\r\n ) {\r\n if (!key) key = '';\r\n let defaultValue: string;\r\n\r\n if (typeof key !== 'string') {\r\n defaultValue = key.defaultValue;\r\n key = key.key;\r\n }\r\n\r\n const keys = key.split('::') as string[];\r\n const warn = (message: string) => {\r\n if (isDevMode) console.warn(message);\r\n };\r\n\r\n if (keys.length < 2) {\r\n warn('The localization source separator (::) not found.');\r\n return defaultValue || (key as string);\r\n }\r\n if (!state.localization) return defaultValue || keys[1];\r\n\r\n const sourceName = keys[0] || state.localization.defaultResourceName;\r\n const sourceKey = keys[1];\r\n\r\n if (sourceName === '_') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n if (!sourceName) {\r\n warn(\r\n 'Localization source name is not specified and the defaultResourceName was not defined!',\r\n );\r\n\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n const source = this.localizations$.value.get(sourceName);\r\n if (!source) {\r\n warn('Could not find localization source: ' + sourceName);\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n let localization = source[sourceKey];\r\n if (typeof localization === 'undefined') {\r\n return defaultValue || sourceKey;\r\n }\r\n\r\n interpolateParams = interpolateParams.filter(params => params != null);\r\n if (localization) localization = interpolate(localization, interpolateParams);\r\n\r\n if (typeof localization !== 'string') localization = '';\r\n\r\n return localization || defaultValue || (key as string);\r\n }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { PRIMARY_OUTLET, Router, UrlSegmentGroup } from '@angular/router';\r\nimport { ABP } from '../models/common';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { noop } from './common-utils';\r\nimport { TreeNode } from './tree-utils';\r\n\r\nexport function findRoute(routesService: RoutesService, path: string): TreeNode<ABP.Route> {\r\n const node = routesService.find(route => route.path === path);\r\n\r\n return node || path === '/'\r\n ? node\r\n : findRoute(routesService, path.split('/').slice(0, -1).join('/') || '/');\r\n}\r\n\r\nexport function getRoutePath(router: Router, url = router.url) {\r\n const emptyGroup = { segments: [] } as UrlSegmentGroup;\r\n const primaryGroup = router.parseUrl(url).root.children[PRIMARY_OUTLET];\r\n\r\n return '/' + (primaryGroup || emptyGroup).segments.map(({ path }) => path).join('/');\r\n}\r\n\r\nexport function reloadRoute(router: Router, ngZone: NgZone) {\r\n const { shouldReuseRoute } = router.routeReuseStrategy;\r\n const setRouteReuse = (reuse: typeof shouldReuseRoute) => {\r\n router.routeReuseStrategy.shouldReuseRoute = reuse;\r\n };\r\n\r\n setRouteReuse(() => false);\r\n router.navigated = false;\r\n\r\n ngZone.run(async () => {\r\n await router.navigateByUrl(router.url).catch(noop);\r\n setRouteReuse(shouldReuseRoute);\r\n });\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { reloadRoute } from '../utils/route-utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReplaceableComponentsService {\r\n private readonly store: InternalStore<ReplaceableComponents.ReplaceableComponent[]>;\r\n\r\n get replaceableComponents$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceState(state => state);\r\n }\r\n\r\n get replaceableComponents(): ReplaceableComponents.ReplaceableComponent[] {\r\n return this.store.state;\r\n }\r\n\r\n get onUpdate$(): Observable<ReplaceableComponents.ReplaceableComponent[]> {\r\n return this.store.sliceUpdate(state => state);\r\n }\r\n\r\n constructor(private ngZone: NgZone, private router: Router) {\r\n this.store = new InternalStore([]);\r\n }\r\n\r\n add(replaceableComponent: ReplaceableComponents.ReplaceableComponent, reload?: boolean): void {\r\n const replaceableComponents = [...this.store.state];\r\n\r\n const index = replaceableComponents.findIndex(\r\n component => component.key === replaceableComponent.key,\r\n );\r\n\r\n if (index > -1) {\r\n replaceableComponents[index] = replaceableComponent;\r\n } else {\r\n replaceableComponents.push(replaceableComponent);\r\n }\r\n\r\n this.store.set(replaceableComponents);\r\n\r\n if (reload) reloadRoute(this.router, this.ngZone);\r\n }\r\n\r\n get(replaceableComponentKey: string): ReplaceableComponents.ReplaceableComponent {\r\n return this.replaceableComponents.find(component => component.key === replaceableComponentKey);\r\n }\r\n\r\n get$(replaceableComponentKey: string): Observable<ReplaceableComponents.ReplaceableComponent> {\r\n return this.replaceableComponents$.pipe(\r\n map(components => components.find(component => component.key === replaceableComponentKey)),\r\n );\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\nimport {\r\n NavigationCancel,\r\n NavigationEnd,\r\n NavigationError,\r\n NavigationStart,\r\n Router,\r\n RouterEvent,\r\n} from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport const NavigationEvent = {\r\n Cancel: NavigationCancel,\r\n End: NavigationEnd,\r\n Error: NavigationError,\r\n Start: NavigationStart,\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouterEvents {\r\n constructor(private router: Router) {}\r\n\r\n getEvents<T extends RouterEventConstructors>(...eventTypes: T) {\r\n type FilteredRouterEvent = T extends Type<infer Ctor>[] ? Ctor : never;\r\n\r\n const filterRouterEvents = (event: RouterEvent): event is FilteredRouterEvent =>\r\n eventTypes.some(type => event instanceof type);\r\n\r\n return this.router.events.pipe(filter(filterRouterEvents));\r\n }\r\n\r\n getNavigationEvents<T extends NavigationEventKeys>(...navigationEventKeys: T) {\r\n type FilteredNavigationEvent = T extends (infer Key)[]\r\n ? Key extends NavigationEventKey\r\n ? InstanceType<NavigationEventType[Key]>\r\n : never\r\n : never;\r\n\r\n const filterNavigationEvents = (event: RouterEvent): event is FilteredNavigationEvent =>\r\n navigationEventKeys.some(key => event instanceof NavigationEvent[key]);\r\n\r\n return this.router.events.pipe(filter(filterNavigationEvents));\r\n }\r\n\r\n getAllEvents() {\r\n return this.router.events;\r\n }\r\n\r\n getAllNavigationEvents() {\r\n const keys = Object.keys(NavigationEvent) as NavigationEventKeys;\r\n return this.getNavigationEvents(...keys);\r\n }\r\n}\r\n\r\ntype RouterEventConstructors = [Type<RouterEvent>, ...Type<RouterEvent>[]];\r\n\r\ntype NavigationEventKeys = [NavigationEventKey, ...NavigationEventKey[]];\r\n\r\ntype NavigationEventType = typeof NavigationEvent;\r\n\r\nexport type NavigationEventKey = keyof NavigationEventType;\r\n","export function pushValueTo<T>(array: T[]) {\r\n return (element: T) => {\r\n array.push(element);\r\n return array;\r\n };\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nexport class BaseTreeNode<T extends object> {\r\n children: TreeNode<T>[] = [];\r\n isLeaf = true;\r\n parent?: TreeNode<T>;\r\n\r\n constructor(props: T) {\r\n Object.assign(this, props);\r\n }\r\n\r\n static create<T extends object>(props: T) {\r\n return new BaseTreeNode<T>(props) as TreeNode<T>;\r\n }\r\n}\r\n\r\nexport function createTreeFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n parentKeySelector: typeof keySelector,\r\n valueMapper: (item: T) => R,\r\n) {\r\n const map = createMapFromList(list, keySelector, valueMapper);\r\n const tree: NodeValue<T, typeof valueMapper>[] = [];\r\n\r\n list.forEach(row => {\r\n const id = keySelector(row);\r\n const parentId = parentKeySelector(row);\r\n const node = map.get(id);\r\n\r\n if (!node) return;\r\n\r\n if (parentId) {\r\n const parent = map.get(parentId);\r\n if (!parent) return;\r\n (parent as any).children.push(node);\r\n (parent as any).isLeaf = false;\r\n (node as any).parent = parent;\r\n } else {\r\n tree.push(node);\r\n }\r\n });\r\n\r\n return tree;\r\n}\r\n\r\nexport function createMapFromList<T extends object, R>(\r\n list: T[],\r\n keySelector: (item: T) => NodeKey,\r\n valueMapper: (item: T) => R,\r\n) {\r\n type Key = ReturnType<typeof keySelector>;\r\n type Value = NodeValue<T, typeof valueMapper>;\r\n const map = new Map<Key, Value>();\r\n list.forEach(row => map.set(keySelector(row), valueMapper(row)));\r\n return map;\r\n}\r\n\r\nexport function createTreeNodeFilterCreator<T extends object>(\r\n key: keyof T,\r\n mapperFn: (value: any) => string,\r\n) {\r\n return (search: string) => {\r\n const regex = new RegExp('.*' + search + '.*', 'i');\r\n\r\n return function collectNodes(nodes: TreeNode<T>[], matches = []) {\r\n for (const node of nodes) {\r\n if (regex.test(mapperFn(node[key]))) matches.push(node);\r\n\r\n if (node.children.length) collectNodes(node.children, matches);\r\n }\r\n\r\n return matches;\r\n };\r\n };\r\n}\r\n\r\nexport type TreeNode<T extends object> = {\r\n [K in keyof T]: T[K];\r\n} & {\r\n children: TreeNode<T>[];\r\n isLeaf: boolean;\r\n parent?: TreeNode<T>;\r\n};\r\n\r\ntype NodeKey = number | string | symbol | undefined | null;\r\n\r\ntype NodeValue<T extends object, F extends (...args: any) => any> = F extends undefined\r\n ? TreeNode<T>\r\n : ReturnType<F>;\r\n","import { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ApplicationConfigurationDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from './config-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionService {\r\n constructor(protected configState: ConfigStateService) {}\r\n\r\n getGrantedPolicy$(key: string) {\r\n return this.getStream().pipe(\r\n map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)),\r\n );\r\n }\r\n\r\n getGrantedPolicy(key: string) {\r\n const policies = this.getSnapshot();\r\n return this.isPolicyGranted(key, policies);\r\n }\r\n\r\n filterItemsByPolicy<T extends ABP.HasPolicy>(items: Array<T>) {\r\n const policies = this.getSnapshot();\r\n return items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n );\r\n }\r\n\r\n filterItemsByPolicy$<T extends ABP.HasPolicy>(items: Array<T>) {\r\n return this.getStream().pipe(\r\n map(policies =>\r\n items.filter(\r\n item => !item.requiredPolicy || this.isPolicyGranted(item.requiredPolicy, policies),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n protected isPolicyGranted(key: string, grantedPolicies: Record<string, boolean>) {\r\n if (!key) return true;\r\n\r\n const orRegexp = /\\|\\|/g;\r\n const andRegexp = /&&/g;\r\n\r\n // TODO: Allow combination of ANDs & ORs\r\n if (orRegexp.test(key)) {\r\n const keys = key.split('||').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.some(k => this.getPolicy(k.trim(), grantedPolicies));\r\n } else if (andRegexp.test(key)) {\r\n const keys = key.split('&&').filter(Boolean);\r\n\r\n if (keys.length < 2) return false;\r\n\r\n return keys.every(k => this.getPolicy(k.trim(), grantedPolicies));\r\n }\r\n\r\n return this.getPolicy(key, grantedPolicies);\r\n }\r\n\r\n protected getStream() {\r\n return this.configState.getAll$().pipe(map(this.mapToPolicies));\r\n }\r\n\r\n protected getSnapshot() {\r\n return this.mapToPolicies(this.configState.getAll());\r\n }\r\n\r\n protected mapToPolicies(applicationConfiguration: ApplicationConfigurationDto) {\r\n return applicationConfiguration?.auth?.grantedPolicies || {};\r\n }\r\n\r\n protected getPolicy(key: string, grantedPolicies: Record<string, boolean>) {\r\n return grantedPolicies[key] || false;\r\n }\r\n}\r\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { pushValueTo } from '../utils/array-utils';\r\nimport { BaseTreeNode, createTreeFromList, TreeNode } from '../utils/tree-utils';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { PermissionService } from './permission.service';\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nexport abstract class AbstractTreeService<T extends object> {\r\n abstract id: string;\r\n abstract parentId: string;\r\n abstract hide: (item: T) => boolean;\r\n abstract sort: (a: T, b: T) => number;\r\n\r\n private _flat$ = new BehaviorSubject<T[]>([]);\r\n private _tree$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n private _visible$ = new BehaviorSubject<TreeNode<T>[]>([]);\r\n\r\n get flat(): T[] {\r\n return this._flat$.value;\r\n }\r\n\r\n get flat$(): Observable<T[]> {\r\n return this._flat$.asObservable();\r\n }\r\n\r\n get tree(): TreeNode<T>[] {\r\n return this._tree$.value;\r\n }\r\n\r\n get tree$(): Observable<TreeNode<T>[]> {\r\n return this._tree$.asObservable();\r\n }\r\n\r\n get visible(): TreeNode<T>[] {\r\n return this._visible$.value;\r\n }\r\n\r\n get visible$(): Observable<TreeNode<T>[]> {\r\n return this._visible$.asObservable();\r\n }\r\n\r\n protected createTree(items: T[]): TreeNode<T>[] {\r\n return createTreeFromList<T, TreeNode<T>>(\r\n items,\r\n item => item[this.id],\r\n item => item[this.parentId],\r\n item => BaseTreeNode.create(item),\r\n );\r\n }\r\n\r\n private filterWith(setOrMap: Set<string> | Map<string, T>): T[] {\r\n return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));\r\n }\r\n\r\n private findItemsToRemove(set: Set<string>): Set<string> {\r\n return this._flat$.value.reduce((acc, item) => {\r\n if (!acc.has(item[this.parentId])) return acc;\r\n const childSet = new Set([item[this.id]]);\r\n const children = this.findItemsToRemove(childSet);\r\n return new Set([...acc, ...children]);\r\n }, set);\r\n }\r\n\r\n private publish(flatItems: T[], visibleItems: T[]): T[] {\r\n this._flat$.next(flatItems);\r\n this._tree$.next(this.createTree(flatItems));\r\n this._visible$.next(this.createTree(visibleItems));\r\n return flatItems;\r\n }\r\n\r\n add(items: T[]): T[] {\r\n const map = new Map<string, T>();\r\n items.forEach(item => map.set(item[this.id], item));\r\n\r\n const flatItems = this.filterWith(map);\r\n map.forEach(pushValueTo(flatItems));\r\n\r\n flatItems.sort(this.sort);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n find(predicate: (item: TreeNode<T>) => boolean, tree = this.tree): TreeNode<T> | null {\r\n return tree.reduce(\r\n (acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)),\r\n null,\r\n );\r\n }\r\n\r\n patch(identifier: string, props: Partial<T>): T[] | false {\r\n const flatItems = this._flat$.value;\r\n const index = flatItems.findIndex(item => item[this.id] === identifier);\r\n if (index < 0) return false;\r\n\r\n flatItems[index] = { ...flatItems[index], ...props };\r\n\r\n flatItems.sort(this.sort);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n refresh(): T[] {\r\n return this.add([]);\r\n }\r\n\r\n remove(identifiers: string[]): T[] {\r\n const set = new Set<string>();\r\n identifiers.forEach(id => set.add(id));\r\n\r\n const setToRemove = this.findItemsToRemove(set);\r\n const flatItems = this.filterWith(setToRemove);\r\n const visibleItems = flatItems.filter(item => !this.hide(item));\r\n\r\n return this.publish(flatItems, visibleItems);\r\n }\r\n\r\n search(params: Partial<T>, tree = this.tree): TreeNode<T> | null {\r\n const searchKeys = Object.keys(params);\r\n\r\n return tree.reduce(\r\n (acc, node) =>\r\n acc\r\n ? acc\r\n : searchKeys.every(key => node[key] === params[key])\r\n ? node\r\n : this.search(params, node.children),\r\n null,\r\n );\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport abstract class AbstractNavTreeService<T extends ABP.Nav>\r\n extends AbstractTreeService<T>\r\n implements OnDestroy\r\n{\r\n private subscription: Subscription;\r\n private permissionService: PermissionService;\r\n readonly id = 'name';\r\n readonly parentId = 'parentName';\r\n readonly hide = (item: T) => item.invisible || !this.isGranted(item);\r\n readonly sort = (a: T, b: T) => {\r\n if (!Number.isInteger(a.order)) return 1;\r\n if (!Number.isInteger(b.order)) return -1;\r\n\r\n return a.order - b.order;\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n super();\r\n const configState = this.injector.get(ConfigStateService);\r\n this.subscription = configState\r\n .createOnUpdateStream(state => state)\r\n .subscribe(() => this.refresh());\r\n this.permissionService = injector.get(PermissionService);\r\n }\r\n\r\n protected isGranted({ requiredPolicy }: T): boolean {\r\n return this.permissionService.getGrantedPolicy(requiredPolicy);\r\n }\r\n\r\n hasChildren(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return Boolean(node?.children?.length);\r\n }\r\n\r\n hasInvisibleChild(identifier: string): boolean {\r\n const node = this.find(item => item[this.id] === identifier);\r\n return node?.children?.some(child => child.invisible);\r\n }\r\n\r\n /* istanbul ignore next */\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RoutesService extends AbstractNavTreeService<ABP.Route> {}\r\n","import { Injectable } from '@angular/core';\r\nimport type { OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport type { Observable, PartialObserver } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class SubscriptionService implements OnDestroy {\r\n private subscription = new Subscription();\r\n\r\n get isClosed() {\r\n return this.subscription.closed;\r\n }\r\n\r\n addOne<T>(\r\n source$: Observable<T>,\r\n next?: (value: T) => void,\r\n error?: (error: any) => void,\r\n ): Subscription;\r\n addOne<T>(source$: Observable<T>, observer?: PartialObserver<T>): Subscription;\r\n addOne<T>(\r\n source$: Observable<T>,\r\n nextOrObserver?: PartialObserver<T> | Next<T>,\r\n error?: (error: any) => void,\r\n ): Subscription {\r\n const subscription = source$.subscribe(nextOrObserver as Next<T>, error);\r\n this.subscription.add(subscription);\r\n return subscription;\r\n }\r\n\r\n closeAll() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n closeOne(subscription: Subscription | undefined | null) {\r\n this.removeOne(subscription);\r\n subscription.unsubscribe();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n removeOne(subscription: Subscription | undefined | null) {\r\n if (!subscription) return;\r\n this.subscription.remove(subscription);\r\n }\r\n\r\n reset() {\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n }\r\n}\r\n\r\ntype Next<T> = (value: T) => void;\r\n","import { Component, Injector, isDevMode, Optional, SkipSelf, Type } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { eLayoutType } from '../enums/common';\r\nimport { ABP } from '../models';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { LocalizationService } from '../services/localization.service';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { RouterEvents } from '../services/router-events.service';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\nimport { TreeNode } from '../utils/tree-utils';\r\n\r\n@Component({\r\n selector: 'abp-dynamic-layout',\r\n template: ` <ng-container *ngIf=\"isLayoutVisible\" [ngComponentOutlet]=\"layout\"></ng-container> `,\r\n providers: [SubscriptionService],\r\n})\r\nexport class DynamicLayoutComponent {\r\n layout: Type<any>;\r\n layoutKey: eLayoutType;\r\n\r\n // TODO: Consider a shared enum (eThemeSharedComponents) for known layouts\r\n readonly layouts = new Map([\r\n ['application', 'Theme.ApplicationLayoutComponent'],\r\n ['account', 'Theme.AccountLayoutComponent'],\r\n ['empty', 'Theme.EmptyLayoutComponent'],\r\n ]);\r\n\r\n isLayoutVisible = true;\r\n\r\n private router: Router;\r\n private route: ActivatedRoute;\r\n private routes: RoutesService;\r\n\r\n constructor(\r\n injector: Injector,\r\n private localizationService: LocalizationService,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n private routerEvents: RouterEvents,\r\n @Optional() @SkipSelf() dynamicLayoutComponent: DynamicLayoutComponent,\r\n ) {\r\n if (dynamicLayoutComponent) {\r\n if (isDevMode) console.warn('DynamicLayoutComponent must be used only in AppComponent.');\r\n return;\r\n }\r\n this.route = injector.get(ActivatedRoute);\r\n this.router = injector.get(Router);\r\n this.routes = injector.get(RoutesService);\r\n\r\n this.checkLayoutOnNavigationEnd();\r\n this.listenToLanguageChange();\r\n }\r\n\r\n private checkLayoutOnNavigationEnd() {\r\n const navigationEnd$ = this.routerEvents.getNavigationEvents('End');\r\n this.subscription.addOne(navigationEnd$, () => this.getLayout());\r\n }\r\n\r\n private getLayout() {\r\n let expectedLayout = (this.route.snapshot.data || {}).layout;\r\n\r\n if (!expectedLayout) {\r\n let node = findRoute(this.routes, getRoutePath(this.router));\r\n node = { parent: node } as TreeNode<ABP.Route>;\r\n\r\n while (node.parent) {\r\n node = node.parent;\r\n\r\n if (node.layout) {\r\n expectedLayout = node.layout;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (!expectedLayout) expectedLayout = eLayoutType.empty;\r\n\r\n if (this.layoutKey === expectedLayout) return;\r\n\r\n const key = this.layouts.get(expectedLayout);\r\n this.layout = this.getComponent(key)?.component;\r\n this.layoutKey = expectedLayout;\r\n }\r\n\r\n private listenToLanguageChange() {\r\n this.subscription.addOne(this.localizationService.languageChange$, () => {\r\n this.isLayoutVisible = false;\r\n setTimeout(() => (this.isLayoutVisible = true), 0);\r\n });\r\n }\r\n\r\n private getComponent(key: string): ReplaceableComponents.ReplaceableComponent {\r\n return this.replaceableComponents.get(key);\r\n }\r\n}\r\n","import { Component, OnInit, Type } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Component({\r\n selector: 'abp-replaceable-route-container',\r\n template: `\r\n <ng-container *ngComponentOutlet=\"externalComponent || defaultComponent\"></ng-container>\r\n `,\r\n providers: [SubscriptionService],\r\n})\r\nexport class ReplaceableRouteContainerComponent implements OnInit {\r\n defaultComponent: Type<any>;\r\n\r\n componentKey: string;\r\n\r\n externalComponent: Type<any>;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;\r\n this.componentKey = (\r\n this.route.snapshot.data.replaceableComponent as ReplaceableComponents.RouteData\r\n ).key;\r\n\r\n const component$ = this.replaceableComponents\r\n .get$(this.componentKey)\r\n .pipe(distinctUntilChanged());\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.externalComponent = res.component;\r\n },\r\n );\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'abp-router-outlet',\r\n template: ` <router-outlet></router-outlet> `,\r\n})\r\nexport class RouterOutletComponent {}\r\n","// Different locales from .NET\r\n// Key is .NET locale, value is Angular locale\r\n\r\nexport const differentLocales = {\r\n aa: 'en',\r\n 'aa-DJ': 'en',\r\n 'aa-ER': 'en',\r\n 'aa-ET': 'en',\r\n 'af-ZA': 'af',\r\n 'agq-CM': 'agq',\r\n 'ak-GH': 'ak',\r\n 'am-ET': 'am',\r\n 'ar-001': 'ar',\r\n arn: 'en',\r\n 'arn-CL': 'en',\r\n 'as-IN': 'as',\r\n 'asa-TZ': 'asa',\r\n 'ast-ES': 'ast',\r\n 'az-Cyrl-AZ': 'az-Cyrl',\r\n 'az-Latn-AZ': 'az-Latn',\r\n ba: 'ru',\r\n 'ba-RU': 'ru',\r\n 'bas-CM': 'bas',\r\n 'be-BY': 'be',\r\n 'bem-ZM': 'bem',\r\n 'bez-TZ': 'bez',\r\n 'bg-BG': 'bg',\r\n bin: 'en',\r\n 'bin-NG': 'en',\r\n 'bm-Latn': 'bm',\r\n 'bm-Latn-ML': 'bm',\r\n 'bn-BD': 'bn',\r\n 'bo-CN': 'bo',\r\n 'br-FR': 'br',\r\n 'brx-IN': 'brx',\r\n 'bs-Cyrl-BA': 'bs-Cyrl',\r\n 'bs-Latn-BA': 'bs-Latn',\r\n byn: 'en',\r\n 'byn-ER': 'en',\r\n 'ca-ES': 'ca',\r\n 'ca-ES-valencia': 'ca-ES-VALENCIA',\r\n 'ce-RU': 'ce',\r\n 'cgg-UG': 'cgg',\r\n 'chr-Cher': 'chr',\r\n 'chr-Cher-US': 'chr',\r\n co: 'en',\r\n 'co-FR': 'fr',\r\n 'cs-CZ': 'cs',\r\n 'cu-RU': 'cu',\r\n 'cy-GB': 'cy',\r\n 'da-DK': 'da',\r\n 'dav-KE': 'dav',\r\n 'de-DE': 'de',\r\n 'dje-NE': 'dje',\r\n 'dsb-DE': 'dsb',\r\n 'dua-CM': 'dua',\r\n dv: 'en',\r\n 'dv-MV': 'en',\r\n 'dyo-SN': 'dyo',\r\n 'dz-BT': 'dz',\r\n 'ebu-KE': 'ebu',\r\n 'ee-GH': 'ee',\r\n 'el-GR': 'el',\r\n 'en-029': 'en',\r\n 'en-ID': 'en',\r\n 'en-US': 'en',\r\n 'eo-001': 'en',\r\n 'es-ES': 'es',\r\n 'et-EE': 'et',\r\n 'eu-ES': 'eu',\r\n 'ewo-CM': 'ewo',\r\n 'fa-IR': 'fa',\r\n 'ff-Latn-SN': 'ff-Latn',\r\n 'ff-NG': 'ff',\r\n 'fi-FI': 'fi',\r\n 'fil-PH': 'fil',\r\n 'fo-FO': 'fo',\r\n 'fr-029': 'fr',\r\n 'fr-FR': 'fr',\r\n 'fur-IT': 'fur',\r\n 'fy-NL': 'fy',\r\n 'ga-IE': 'ga',\r\n 'gd-GB': 'gd',\r\n 'gl-ES': 'gl',\r\n gn: 'en',\r\n 'gn-PY': 'en',\r\n 'gsw-CH': 'gsw',\r\n 'gu-IN': 'gu',\r\n 'guz-KE': 'guz',\r\n 'gv-IM': 'gv',\r\n 'ha-Latn': 'ha',\r\n 'ha-Latn-GH': 'ha-GH',\r\n 'ha-Latn-NE': 'ha-NE',\r\n 'ha-Latn-NG': 'ha',\r\n 'haw-US': 'haw',\r\n 'he-IL': 'he',\r\n 'hi-IN': 'hi',\r\n 'hr-HR': 'hr',\r\n 'hsb-DE': 'hsb',\r\n 'hu-HU': 'hu',\r\n 'hy-AM': 'hy',\r\n 'ia-001': 'ia',\r\n 'ia-FR': 'ia',\r\n ibb: 'en',\r\n 'ibb-NG': 'en',\r\n 'id-ID': 'id',\r\n 'ig-NG': 'ig',\r\n 'ii-CN': 'ii',\r\n 'is-IS': 'is',\r\n 'it-IT': 'it',\r\n iu: 'en',\r\n 'iu-Cans': 'en',\r\n 'iu-Cans-CA': 'en',\r\n 'iu-Latn': 'en',\r\n 'iu-Latn-CA': 'en',\r\n 'ja-JP': 'ja',\r\n 'jgo-CM': 'jgo',\r\n 'jmc-TZ': 'jmc',\r\n 'jv-Java': 'jv',\r\n 'jv-Java-ID': 'jv',\r\n 'jv-Latn': 'jv',\r\n 'jv-Latn-ID': 'jv',\r\n 'ka-GE': 'ka',\r\n 'kab-DZ': 'kab',\r\n 'kam-KE': 'kam',\r\n 'kde-TZ': 'kde',\r\n 'kea-CV': 'kea',\r\n 'khq-ML': 'khq',\r\n 'ki-KE': 'ki',\r\n 'kk-KZ': 'kk',\r\n 'kkj-CM': 'kkj',\r\n 'kl-GL': 'kl',\r\n 'kln-KE': 'kln',\r\n 'km-KH': 'km',\r\n 'kn-IN': 'kn',\r\n 'ko-KR': 'ko',\r\n 'kok-IN': 'kok',\r\n kr: 'en',\r\n 'kr-NG': 'en',\r\n 'ks-Arab': 'ks',\r\n 'ks-Arab-IN': 'ks',\r\n 'ks-Deva': 'ks',\r\n 'ks-Deva-IN': 'ks',\r\n 'ksb-TZ': 'ksb',\r\n 'ksf-CM': 'ksf',\r\n 'ksh-DE': 'ksh',\r\n 'ku-Arab': 'ku',\r\n 'ku-Arab-IQ': 'ku',\r\n 'ku-Arab-IR': 'ku',\r\n 'kw-GB': 'kw',\r\n 'ky-KG': 'ky',\r\n la: 'en',\r\n 'la-001': 'en',\r\n 'lag-TZ': 'lag',\r\n 'lb-LU': 'lb',\r\n 'lg-UG': 'lg',\r\n 'lkt-US': 'lkt',\r\n 'ln-CD': 'ln',\r\n 'lo-LA': 'lo',\r\n 'lrc-IR': 'lrc',\r\n 'lt-LT': 'lt',\r\n 'lu-CD': 'lu',\r\n 'luo-KE': 'luo',\r\n 'luy-KE': 'luy',\r\n 'lv-LV': 'lv',\r\n 'mas-KE': 'mas',\r\n 'mer-KE': 'mer',\r\n 'mfe-MU': 'mfe',\r\n 'mg-MG': 'mg',\r\n 'mgh-MZ': 'mgh',\r\n 'mgo-CM': 'mgo',\r\n 'mi-NZ': 'mi',\r\n 'mk-MK': 'mk',\r\n 'ml-IN': 'ml',\r\n 'mn-Cyrl': 'mn',\r\n 'mn-MN': 'mn',\r\n 'mn-Mong': 'mn',\r\n 'mn-Mong-CN': 'mn',\r\n 'mn-Mong-MN': 'mn',\r\n mni: 'en',\r\n 'mni-IN': 'en',\r\n moh: 'en',\r\n 'moh-CA': 'en',\r\n 'mr-IN': 'mr',\r\n 'ms-MY': 'ms',\r\n 'mt-MT': 'mt',\r\n 'mua-CM': 'mua',\r\n 'my-MM': 'my',\r\n 'mzn-IR': 'mzn',\r\n 'naq-NA': 'naq',\r\n 'nb-NO': 'nb',\r\n\r\n 'nd-ZW': 'nd',\r\n 'ne-NP': 'ne',\r\n 'nl-NL': 'nl',\r\n 'nmg-CM': 'ngm',\r\n 'nn-NO': 'nn',\r\n 'nnh-CM': 'nnh',\r\n no: 'en',\r\n nqo: 'en',\r\n 'nqo-GN': 'en',\r\n nr: 'en',\r\n 'nr-ZA': 'en',\r\n nso: 'en',\r\n 'nso-ZA': 'en',\r\n 'nus-SS': 'nus',\r\n 'nyn-UG': 'nyn',\r\n oc: 'en',\r\n 'oc-FR': 'fr',\r\n 'om-ET': 'om',\r\n 'or-IN': 'or',\r\n 'os-GE': 'os',\r\n 'pa-Arab-PK': 'pa-Arab',\r\n 'pa-IN': 'pa',\r\n pap: 'en',\r\n 'pap-029': 'en',\r\n 'pl-PL': 'pl',\r\n 'prg-001': 'prg',\r\n prs: 'en',\r\n 'prs-AF': 'en',\r\n 'ps-AF': 'ps',\r\n 'pt-BR': 'pt',\r\n quc: 'en',\r\n 'quc-Latn': 'en',\r\n 'quc-Latn-GT': 'en',\r\n quz: 'en',\r\n 'quz-BO': 'en',\r\n 'quz-EC': 'en',\r\n 'quz-PE': 'en',\r\n 'rm-CH': 'rm',\r\n 'rn-BI': 'rn',\r\n 'ro-RO': 'ro',\r\n 'rof-TZ': 'rof',\r\n 'ru-RU': 'ru',\r\n 'rw-RW': 'rw',\r\n 'rwk-TZ': 'rwk',\r\n sa: 'en',\r\n 'sa-IN': 'en',\r\n 'sah-RU': 'sah',\r\n 'saq-KE': 'saq',\r\n 'sbp-TZ': 'en',\r\n 'sd-Arab': 'sd',\r\n 'sd-Arab-PK': 'sd',\r\n 'sd-Deva': 'sd',\r\n 'sd-Deva-IN': 'sd',\r\n 'se-NO': 'se',\r\n 'seh-MZ': 'seh',\r\n 'ses-ML': 'ses',\r\n 'sg-CF': 'sg',\r\n 'shi-Latn-MA': 'shi-Latn',\r\n 'shi-Tfng-MA': 'shi-Tfng',\r\n 'si-LK': 'si',\r\n 'sk-SK': 'sk',\r\n 'sl-SI': 'sl',\r\n sma: 'en',\r\n 'sma-NO': 'en',\r\n 'sma-SE': 'en',\r\n smj: 'en',\r\n 'smj-NO': 'en',\r\n 'smj-SE': 'en',\r\n 'smn-FI': 'en',\r\n sms: 'en',\r\n 'sms-FI': 'en',\r\n 'sn-Latn': 'sn',\r\n 'sn-Latn-ZW': 'sn',\r\n 'so-SO': 'so',\r\n 'sq-AL': 'so',\r\n 'sr-Cyrl-RS': 'sr-Cryl',\r\n 'sr-Latn-RS': 'sr-Latn',\r\n ss: 'en',\r\n 'ss-SZ': 'en',\r\n 'ss-ZA': 'en',\r\n ssy: 'en',\r\n 'ssy-ER': 'en',\r\n st: 'en',\r\n 'st-LS': 'en',\r\n 'st-ZA': 'en',\r\n 'sv-SE': 'sv',\r\n 'sw-TZ': 'sw',\r\n syr: 'en',\r\n 'syr-SY': 'en',\r\n 'ta-IN': 'ta',\r\n 'te-IN': 'te',\r\n 'teo-UG': 'teo',\r\n 'tg-Cyrl': 'tg',\r\n 'tg-Cyrl-TJ': 'tg',\r\n 'th-TH': 'th',\r\n 'ti-ET': 'ti',\r\n tig: 'en',\r\n 'tig-ER': 'en',\r\n 'tk-TM': 'tk',\r\n tn: 'en',\r\n 'tn-BW': 'en',\r\n 'tn-ZA': 'en',\r\n 'to-TO': 'to',\r\n 'tr-TR': 'tr',\r\n ts: 'en',\r\n 'ts-ZA': 'en',\r\n 'tt-RU': 'tt',\r\n 'twq-NE': 'twq',\r\n 'tzm-Arab': 'tzm',\r\n 'tzm-Arab-MA': 'tzm',\r\n 'tzm-Latn': 'tzm',\r\n 'tzm-Latn-DZ': 'tzm',\r\n 'tzm-Latn-MA': 'tzm',\r\n 'tzm-Tfng': 'tzm',\r\n 'tzm-Tfng-MA': 'tzm',\r\n 'ug-CN': 'ug',\r\n 'uk-UA': 'uk',\r\n 'ur-PK': 'ur',\r\n 'uz-Arab-AF': 'uz-Arab',\r\n 'uz-Cyrl-UZ': 'uz-Cyrl',\r\n 'uz-Latn-UZ': 'uz-Latn',\r\n 'vai-Latn-LR': 'vai-Latn',\r\n 'vai-Vaii-LR': 'vai-Vaii',\r\n ve: 'en',\r\n 've-ZA': 'en',\r\n 'vi-VN': 'vi',\r\n 'vo-001': 'vo',\r\n 'vun-TZ': 'vun',\r\n 'wae-CH': 'wae',\r\n wal: 'en',\r\n 'wal-ET': 'en',\r\n 'wo-SN': 'wo',\r\n 'xh-ZA': 'xh',\r\n 'xog-UG': 'xog',\r\n 'yav-CM': 'yav',\r\n 'yi-001': 'yi',\r\n 'yo-NG': 'yo',\r\n 'zgh-Tfng': 'zgh',\r\n 'zgh-Tfng-MA': 'zgh',\r\n 'zh-CN': 'zh',\r\n 'zh-HK': 'zh',\r\n 'zh-MO': 'zh',\r\n 'zh-SG': 'zh',\r\n 'zh-TW': 'zh',\r\n 'zu-ZA': 'zu',\r\n};\r\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[autofocus]',\r\n})\r\nexport class AutofocusDirective implements AfterViewInit {\r\n private _delay = 0;\r\n\r\n @Input('autofocus')\r\n set delay(val: number | string | undefined) {\r\n this._delay = Number(val) || 0;\r\n }\r\n\r\n get delay() {\r\n return this._delay;\r\n }\r\n\r\n constructor(private elRef: ElementRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.elRef.nativeElement.focus(), this.delay as number);\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[input.debounce]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class InputEventDebounceDirective implements OnInit {\r\n @Input() debounce = 300;\r\n\r\n @Output('input.debounce') readonly debounceEvent = new EventEmitter<Event>();\r\n\r\n constructor(private el: ElementRef, private subscription: SubscriptionService) {}\r\n\r\n ngOnInit(): void {\r\n const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));\r\n\r\n this.subscription.addOne(input$, (event: Event) => {\r\n this.debounceEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n IterableChangeRecord,\r\n IterableChanges,\r\n IterableDiffer,\r\n IterableDiffers,\r\n OnChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport clone from 'just-clone';\r\nimport compare from 'just-compare';\r\n\r\nexport type CompareFn<T = any> = (value: T, comparison: T) => boolean;\r\n\r\nclass AbpForContext {\r\n constructor(\r\n public $implicit: any,\r\n public index: number,\r\n public count: number,\r\n public list: any[],\r\n ) {}\r\n}\r\n\r\nclass RecordView {\r\n constructor(\r\n public record: IterableChangeRecord<any>,\r\n public view: EmbeddedViewRef<AbpForContext>,\r\n ) {}\r\n}\r\n\r\n@Directive({\r\n selector: '[abpFor]',\r\n})\r\nexport class ForDirective implements OnChanges {\r\n // eslint-disable-next-line @angular-eslint/no-input-rename\r\n @Input('abpForOf')\r\n items: any[];\r\n\r\n @Input('abpForOrderBy')\r\n orderBy: string;\r\n\r\n @Input('abpForOrderDir')\r\n orderDir: 'ASC' | 'DESC';\r\n\r\n @Input('abpForFilterBy')\r\n filterBy: string;\r\n\r\n @Input('abpForFilterVal')\r\n filterVal: any;\r\n\r\n @Input('abpForTrackBy')\r\n trackBy;\r\n\r\n @Input('abpForCompareBy')\r\n compareBy: CompareFn;\r\n\r\n @Input('abpForEmptyRef')\r\n emptyRef: TemplateRef<any>;\r\n\r\n private differ: IterableDiffer<any>;\r\n\r\n private isShowEmptyRef: boolean;\r\n\r\n get compareFn(): CompareFn {\r\n return this.compareBy || compare;\r\n }\r\n\r\n get trackByFn(): TrackByFunction<any> {\r\n return this.trackBy || ((index: number, item: any) => (item as any).id || index);\r\n }\r\n\r\n constructor(\r\n private tempRef: TemplateRef<AbpForContext>,\r\n private vcRef: ViewContainerRef,\r\n private differs: IterableDiffers,\r\n ) {}\r\n\r\n private iterateOverAppliedOperations(changes: IterableChanges<any>) {\r\n const rw: RecordView[] = [];\r\n\r\n changes.forEachOperation(\r\n (record: IterableChangeRecord<any>, previousIndex: number, currentIndex: number) => {\r\n if (record.previousIndex == null) {\r\n const view = this.vcRef.createEmbeddedView(\r\n this.tempRef,\r\n new AbpForContext(null, -1, -1, this.items),\r\n currentIndex,\r\n );\r\n\r\n rw.push(new RecordView(record, view));\r\n } else if (currentIndex == null) {\r\n this.vcRef.remove(previousIndex);\r\n } else {\r\n const view = this.vcRef.get(previousIndex);\r\n this.vcRef.move(view, currentIndex);\r\n\r\n rw.push(new RecordView(record, view as EmbeddedViewRef<AbpForContext>));\r\n }\r\n },\r\n );\r\n\r\n for (let i = 0, l = rw.length; i < l; i++) {\r\n rw[i].view.context.$implicit = rw[i].record.item;\r\n }\r\n }\r\n\r\n private iterateOverAttachedViews(changes: IterableChanges<any>) {\r\n for (let i = 0, l = this.vcRef.length; i < l; i++) {\r\n const viewRef = this.vcRef.get(i) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.index = i;\r\n viewRef.context.count = l;\r\n viewRef.context.list = this.items;\r\n }\r\n\r\n changes.forEachIdentityChange((record: IterableChangeRecord<any>) => {\r\n const viewRef = this.vcRef.get(record.currentIndex) as EmbeddedViewRef<AbpForContext>;\r\n viewRef.context.$implicit = record.item;\r\n });\r\n }\r\n\r\n private projectItems(items: any[]): void {\r\n if (!items.length && this.emptyRef) {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;\r\n this.isShowEmptyRef = true;\r\n this.differ = null;\r\n\r\n return;\r\n }\r\n\r\n if (this.emptyRef && this.isShowEmptyRef) {\r\n this.vcRef.clear();\r\n this.isShowEmptyRef = false;\r\n }\r\n\r\n if (!this.differ && items) {\r\n this.differ = this.differs.find(items).create(this.trackByFn);\r\n }\r\n\r\n if (this.differ) {\r\n const changes = this.differ.diff(items);\r\n\r\n if (changes) {\r\n this.iterateOverAppliedOperations(changes);\r\n this.iterateOverAttachedViews(changes);\r\n }\r\n }\r\n }\r\n\r\n private sortItems(items: any[]) {\r\n if (this.orderBy) {\r\n items.sort((a, b) =>\r\n a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0,\r\n );\r\n } else {\r\n items.sort();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n let items = clone(this.items) as any[];\r\n if (!Array.isArray(items)) return;\r\n\r\n const compareFn = this.compareFn;\r\n\r\n if (\r\n typeof this.filterBy !== 'undefined' &&\r\n typeof this.filterVal !== 'undefined' &&\r\n this.filterVal !== ''\r\n ) {\r\n items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));\r\n }\r\n\r\n switch (this.orderDir) {\r\n case 'ASC':\r\n this.sortItems(items);\r\n this.projectItems(items);\r\n break;\r\n\r\n case 'DESC':\r\n this.sortItems(items);\r\n items.reverse();\r\n this.projectItems(items);\r\n break;\r\n\r\n default:\r\n this.projectItems(items);\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Self,\r\n} from '@angular/core';\r\nimport { FormControl, FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\ntype Controls = { [key: string]: FormControl } | FormGroup[];\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'form[ngSubmit][formGroup]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class FormSubmitDirective implements OnInit {\r\n @Input()\r\n debounce = 200;\r\n\r\n @Input()\r\n notValidateOnSubmit: string | boolean;\r\n\r\n @Output() readonly ngSubmit = new EventEmitter();\r\n\r\n executedNgSubmit = false;\r\n\r\n constructor(\r\n @Self() private formGroupDirective: FormGroupDirective,\r\n private host: ElementRef<HTMLFormElement>,\r\n private cdRef: ChangeDetectorRef,\r\n private subscription: SubscriptionService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {\r\n this.markAsDirty();\r\n this.executedNgSubmit = true;\r\n });\r\n\r\n const keyup$ = fromEvent(this.host.nativeElement as HTMLElement, 'keyup').pipe(\r\n debounceTime(this.debounce),\r\n filter(event => !(event.target instanceof HTMLTextAreaElement)),\r\n filter((event: KeyboardEvent) => event && event.key === 'Enter'),\r\n );\r\n\r\n this.subscription.addOne(keyup$, () => {\r\n if (!this.executedNgSubmit) {\r\n this.host.nativeElement.dispatchEvent(\r\n new Event('submit', { bubbles: true, cancelable: true }),\r\n );\r\n }\r\n\r\n this.executedNgSubmit = false;\r\n });\r\n }\r\n\r\n markAsDirty() {\r\n const { form } = this.formGroupDirective;\r\n\r\n setDirty(form.controls as { [key: string]: FormControl });\r\n form.markAsDirty();\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n\r\nfunction setDirty(controls: Controls) {\r\n if (Array.isArray(controls)) {\r\n controls.forEach(group => {\r\n setDirty(group.controls as { [key: string]: FormControl });\r\n });\r\n return;\r\n }\r\n\r\n Object.keys(controls).forEach(key => {\r\n controls[key].markAsDirty();\r\n controls[key].updateValueAndValidity();\r\n });\r\n}\r\n","import { Directive, Output, EventEmitter, ElementRef, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({ selector: '[abpInit]' })\r\nexport class InitDirective implements AfterViewInit {\r\n @Output('abpInit') readonly init = new EventEmitter<ElementRef<any>>();\r\n\r\n constructor(private elRef: ElementRef) {}\r\n\r\n ngAfterViewInit() {\r\n this.init.emit(this.elRef);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { PermissionService } from '../services/permission.service';\r\n\r\n@Directive({\r\n selector: '[abpPermission]',\r\n})\r\nexport class PermissionDirective implements OnDestroy, OnChanges {\r\n @Input('abpPermission') condition: string | undefined;\r\n\r\n subscription!: Subscription;\r\n\r\n constructor(\r\n @Optional() private templateRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef,\r\n private permissionService: PermissionService,\r\n private cdRef: ChangeDetectorRef,\r\n ) {}\r\n\r\n private check() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n this.subscription = this.permissionService\r\n .getGrantedPolicy$(this.condition || '')\r\n .pipe(distinctUntilChanged())\r\n .subscribe(isGranted => {\r\n this.vcRef.clear();\r\n if (isGranted) this.vcRef.createEmbeddedView(this.templateRef);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) this.subscription.unsubscribe();\r\n }\r\n\r\n ngOnChanges() {\r\n this.check();\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver,\r\n Directive,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport compare from 'just-compare';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { ReplaceableComponents } from '../models/replaceable-components';\r\nimport { ReplaceableComponentsService } from '../services/replaceable-components.service';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n selector: '[abpReplaceableTemplate]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class ReplaceableTemplateDirective implements OnInit, OnChanges {\r\n @Input('abpReplaceableTemplate')\r\n data: ReplaceableComponents.ReplaceableTemplateDirectiveInput<any, any>;\r\n\r\n providedData = {\r\n inputs: {},\r\n outputs: {},\r\n } as ReplaceableComponents.ReplaceableTemplateData<any, any>;\r\n\r\n context = {} as any;\r\n\r\n externalComponent!: Type<any>;\r\n\r\n defaultComponentRef: any;\r\n\r\n defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n\r\n initialized = false;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private templateRef: TemplateRef<any>,\r\n private cfRes: ComponentFactoryResolver,\r\n private vcRef: ViewContainerRef,\r\n private replaceableComponents: ReplaceableComponentsService,\r\n private subscription: SubscriptionService,\r\n ) {\r\n this.context = {\r\n initTemplate: (ref: any) => {\r\n this.resetDefaultComponent();\r\n this.defaultComponentRef = ref;\r\n this.setDefaultComponentInputs();\r\n },\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n const component$ = this.replaceableComponents\r\n .get$(this.data.componentKey)\r\n .pipe(\r\n filter(\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) =>\r\n !this.initialized || !compare(res.component, this.externalComponent),\r\n ),\r\n );\r\n\r\n this.subscription.addOne(\r\n component$,\r\n (res = {} as ReplaceableComponents.ReplaceableComponent) => {\r\n this.vcRef.clear();\r\n this.externalComponent = res.component;\r\n if (this.defaultComponentRef) {\r\n this.resetDefaultComponent();\r\n }\r\n\r\n if (res.component) {\r\n this.setProvidedData();\r\n const customInjector = Injector.create({\r\n providers: [{ provide: 'REPLACEABLE_DATA', useValue: this.providedData }],\r\n parent: this.injector,\r\n });\r\n this.vcRef.createComponent(\r\n this.cfRes.resolveComponentFactory(res.component),\r\n 0,\r\n customInjector,\r\n );\r\n } else {\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n\r\n this.initialized = true;\r\n },\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes?.data?.currentValue?.inputs && this.defaultComponentRef) {\r\n this.setDefaultComponentInputs();\r\n }\r\n }\r\n\r\n setDefaultComponentInputs() {\r\n if (!this.defaultComponentRef || (!this.data.inputs && !this.data.outputs)) return;\r\n\r\n if (this.data.inputs) {\r\n for (const key in this.data.inputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.inputs, key)) {\r\n if (!compare(this.defaultComponentRef[key], this.data.inputs[key].value)) {\r\n this.defaultComponentRef[key] = this.data.inputs[key].value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.data.outputs) {\r\n for (const key in this.data.outputs) {\r\n if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {\r\n if (!this.defaultComponentSubscriptions[key]) {\r\n this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(\r\n (value: any) => {\r\n this.data.outputs?.[key](value);\r\n },\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setProvidedData() {\r\n this.providedData = { outputs: {}, ...this.data, inputs: {} };\r\n\r\n if (!this.data.inputs) return;\r\n Object.defineProperties(this.providedData.inputs, {\r\n ...Object.keys(this.data.inputs).reduce(\r\n (acc, key) => ({\r\n ...acc,\r\n [key]: {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => this.data.inputs[key]?.value,\r\n ...(this.data.inputs[key]?.twoWay && {\r\n set: (newValue: any) => {\r\n this.data.inputs[key].value = newValue;\r\n this.data.outputs[`${key}Change`](newValue);\r\n },\r\n }),\r\n },\r\n }),\r\n {},\r\n ),\r\n });\r\n }\r\n\r\n resetDefaultComponent() {\r\n Object.keys(this.defaultComponentSubscriptions).forEach(key => {\r\n this.defaultComponentSubscriptions[key].unsubscribe();\r\n });\r\n this.defaultComponentSubscriptions = {} as ABP.Dictionary<Subscription>;\r\n this.defaultComponentRef = null;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { SubscriptionService } from '../services/subscription.service';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[click.stop]',\r\n providers: [SubscriptionService],\r\n})\r\nexport class StopPropagationDirective implements OnInit {\r\n @Output('click.stop') readonly stopPropEvent = new EventEmitter<MouseEvent>();\r\n\r\n constructor(private el: ElementRef, private subscription: SubscriptionService) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.addOne(fromEvent(this.el.nativeElement, 'click'), (event: MouseEvent) => {\r\n event.stopPropagation();\r\n this.stopPropEvent.emit(event);\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport compare from 'just-compare';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OAuthConfigurationHandler {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private environmentService: EnvironmentService,\r\n @Inject(CORE_OPTIONS) private options: ABP.Root,\r\n ) {\r\n this.listenToSetEnvironment();\r\n }\r\n\r\n private listenToSetEnvironment() {\r\n this.environmentService\r\n .createOnUpdateStream(state => state)\r\n .pipe(\r\n map(environment => environment.oAuthConfig),\r\n filter(config => !compare(config, this.options.environment.oAuthConfig)),\r\n )\r\n .subscribe(config => {\r\n this.oAuthService.configure(config);\r\n });\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ABP } from '../models';\r\nimport { RoutesService } from '../services/routes.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoutesHandler {\r\n constructor(private routes: RoutesService, @Optional() private router: Router) {\r\n this.addRoutes();\r\n }\r\n\r\n addRoutes() {\r\n this.router?.config?.forEach(({ path = '', data }) => {\r\n if (!data?.routes) return;\r\n\r\n if (Array.isArray(data.routes)) {\r\n this.routes.add(data.routes);\r\n return;\r\n }\r\n\r\n const routes = flatRoutes([{ path, ...data.routes }], { path: '' });\r\n this.routes.add(routes);\r\n });\r\n }\r\n}\r\n\r\nfunction flatRoutes(routes: RouteDef[], parent: any) {\r\n if (!routes) return [];\r\n\r\n return routes.reduce((acc, route) => {\r\n const { children, ...current } = {\r\n ...route,\r\n parentName: parent.name,\r\n path: (parent.path + '/' + route.path).replace(/\\/\\//g, '/'),\r\n };\r\n\r\n acc.push(current, ...flatRoutes(children, current));\r\n\r\n return acc;\r\n }, []);\r\n}\r\n\r\ntype RouteDef = ABP.Route & { children: RouteDef[] };\r\n","import { HttpParameterCodec } from '@angular/common/http';\r\n\r\nexport function getPathName(url: string): string {\r\n const { pathname } = new URL(url, window.location.origin);\r\n return pathname;\r\n}\r\n\r\nexport class WebHttpUrlEncodingCodec implements HttpParameterCodec {\r\n encodeKey(k: string): string {\r\n return encodeURIComponent(k);\r\n }\r\n\r\n encodeValue(v: string): string {\r\n return encodeURIComponent(v);\r\n }\r\n\r\n decodeKey(k: string): string {\r\n return decodeURIComponent(k);\r\n }\r\n\r\n decodeValue(v: string) {\r\n return decodeURIComponent(v);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LOADER_DELAY = new InjectionToken<number>('LOADER_DELAY');\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpRequest } from '@angular/common/http';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { getPathName } from '../utils/http-utils';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\n\r\nexport interface HttpWaitState {\r\n requests: HttpRequest<any>[];\r\n filteredRequests: Array<HttpRequestInfo>;\r\n}\r\nexport interface HttpRequestInfo {\r\n method: string;\r\n endpoint: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpWaitService {\r\n protected store = new InternalStore<HttpWaitState>({\r\n requests: [],\r\n filteredRequests: [],\r\n });\r\n\r\n private delay: number;\r\n private destroy$ = new Subject();\r\n\r\n constructor(injector: Injector) {\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n }\r\n\r\n getLoading() {\r\n return !!this.applyFilter(this.store.state.requests).length;\r\n }\r\n\r\n getLoading$() {\r\n return this.store\r\n .sliceState(({ requests }) => requests)\r\n .pipe(\r\n map(requests => !!this.applyFilter(requests).length),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n );\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ requests }) => !!this.applyFilter(requests).length);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ requests: [] });\r\n }\r\n\r\n addRequest(request: HttpRequest<any>) {\r\n this.store.patch({ requests: [...this.store.state.requests, request] });\r\n }\r\n\r\n deleteRequest(request: HttpRequest<any>) {\r\n const requests = this.store.state.requests.filter(r => r !== request);\r\n this.store.patch({ requests });\r\n }\r\n\r\n addFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = [\r\n ...this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n ),\r\n ...requests,\r\n ];\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n removeFilter(request: HttpRequestInfo | HttpRequestInfo[]) {\r\n const requests = Array.isArray(request) ? request : [request];\r\n const filteredRequests = this.store.state.filteredRequests.filter(\r\n f => !requests.some(r => this.isSameRequest(f, r)),\r\n );\r\n this.store.patch({ filteredRequests });\r\n }\r\n\r\n private applyFilter(requests: HttpRequest<any>[]) {\r\n const { filteredRequests } = this.store.state;\r\n return requests.filter(\r\n ({ method, url }) =>\r\n !filteredRequests.find(filteredRequest =>\r\n this.isSameRequest(filteredRequest, { method, endpoint: getPathName(url) }),\r\n ),\r\n );\r\n }\r\n\r\n private isSameRequest(filteredRequest: HttpRequestInfo, request: HttpRequestInfo) {\r\n const { method, endpoint } = filteredRequest;\r\n return endpoint === request.endpoint && method === request.method;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const TENANT_KEY = new InjectionToken<string>('TENANT_KEY');\r\n","import { HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { HttpWaitService } from '../services/http-wait.service';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiInterceptor implements HttpInterceptor {\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private sessionState: SessionStateService,\r\n private httpWaitService: HttpWaitService,\r\n @Inject(TENANT_KEY) private tenantKey: string,\r\n ) {}\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler) {\r\n this.httpWaitService.addRequest(request);\r\n return next\r\n .handle(\r\n request.clone({\r\n setHeaders: this.getAdditionalHeaders(request.headers),\r\n }),\r\n )\r\n .pipe(finalize(() => this.httpWaitService.deleteRequest(request)));\r\n }\r\n\r\n getAdditionalHeaders(existingHeaders?: HttpHeaders) {\r\n const headers = {} as any;\r\n\r\n const token = this.oAuthService.getAccessToken();\r\n if (!existingHeaders?.has('Authorization') && token) {\r\n headers['Authorization'] = `Bearer ${token}`;\r\n }\r\n\r\n const lang = this.sessionState.getLanguage();\r\n if (!existingHeaders?.has('Accept-Language') && lang) {\r\n headers['Accept-Language'] = lang;\r\n }\r\n\r\n const tenant = this.sessionState.getTenant();\r\n if (!existingHeaders?.has(this.tenantKey) && tenant?.id) {\r\n headers[this.tenantKey] = tenant.id;\r\n }\r\n\r\n return headers;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationWithDefault } from '../models/localization';\r\nimport { LocalizationService } from '../services/localization.service';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpLocalization',\r\n})\r\nexport class LocalizationPipe implements PipeTransform {\r\n constructor(private localization: LocalizationService) {}\r\n\r\n transform(\r\n value: string | LocalizationWithDefault = '',\r\n ...interpolateParams: (string | string[] | undefined)[]\r\n ): string {\r\n const params =\r\n interpolateParams.reduce((acc, val) => {\r\n if (!acc) {\r\n return val;\r\n }\r\n if (!val) {\r\n return acc;\r\n }\r\n return Array.isArray(val) ? [...acc, ...val] : [...acc, val];\r\n }, []) || [];\r\n return this.localization.instant(value, ...params);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { LocalizationPipe } from './pipes/localization.pipe';\r\n\r\n@NgModule({\r\n exports: [LocalizationPipe],\r\n declarations: [LocalizationPipe],\r\n})\r\nexport class LocalizationModule {}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nexport type SortOrder = 'asc' | 'desc';\r\n@Injectable()\r\n@Pipe({\r\n name: 'abpSort',\r\n})\r\nexport class SortPipe implements PipeTransform {\r\n transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string): any {\r\n sortOrder = sortOrder && (sortOrder.toLowerCase() as any);\r\n\r\n if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value;\r\n\r\n let numberArray = [];\r\n let stringArray = [];\r\n\r\n if (!sortKey) {\r\n numberArray = value.filter(item => typeof item === 'number').sort();\r\n stringArray = value.filter(item => typeof item === 'string').sort();\r\n } else {\r\n numberArray = value\r\n .filter(item => typeof item[sortKey] === 'number')\r\n .sort((a, b) => a[sortKey] - b[sortKey]);\r\n stringArray = value\r\n .filter(item => typeof item[sortKey] === 'string')\r\n .sort((a, b) => {\r\n if (a[sortKey] < b[sortKey]) return -1;\r\n else if (a[sortKey] > b[sortKey]) return 1;\r\n else return 0;\r\n });\r\n }\r\n const sorted = [\r\n ...numberArray,\r\n ...stringArray,\r\n ...value.filter(\r\n item =>\r\n typeof (sortKey ? item[sortKey] : item) !== 'number' &&\r\n typeof (sortKey ? item[sortKey] : item) !== 'string',\r\n ),\r\n ];\r\n return sortOrder === 'asc' ? sorted : sorted.reverse();\r\n }\r\n}\r\n","import { InjectionToken, Injector, Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken<PipeTransform>(\r\n 'INJECTOR_PIPE_DATA_TOKEN',\r\n);\r\n\r\n@Pipe({\r\n name: 'toInjector',\r\n})\r\nexport class ToInjectorPipe implements PipeTransform {\r\n constructor(private injector: Injector) {}\r\n transform(\r\n value: any,\r\n token: InjectionToken<any> = INJECTOR_PIPE_DATA_TOKEN,\r\n name = 'ToInjectorPipe',\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n {\r\n provide: token,\r\n useValue: value,\r\n },\r\n ],\r\n parent: this.injector,\r\n name,\r\n });\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const COOKIE_LANGUAGE_KEY = new InjectionToken<string>('COOKIE_LANGUAGE_KEY', {\r\n factory: () => '.AspNetCore.Culture',\r\n});\r\n","import { APP_INITIALIZER, Injector, Provider } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token';\r\n\r\nexport function setLanguageToCookie(injector: Injector) {\r\n return () => {\r\n const sessionState = injector.get(SessionStateService);\r\n const document = injector.get(DOCUMENT);\r\n const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);\r\n sessionState.getLanguage$().subscribe(language => {\r\n const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`);\r\n document.cookie = `${cookieLanguageKey}=${cookieValue}`;\r\n });\r\n };\r\n}\r\n\r\nexport const CookieLanguageProvider: Provider = {\r\n provide: APP_INITIALIZER,\r\n useFactory: setLanguageToCookie,\r\n deps: [Injector],\r\n multi: true,\r\n};\r\n","import { LOCALE_ID, Provider } from '@angular/core';\r\nimport { differentLocales } from '../constants/different-locales';\r\nimport { LocalizationService } from '../services/localization.service';\r\n\r\nexport class LocaleId extends String {\r\n constructor(private localizationService: LocalizationService) {\r\n super();\r\n }\r\n\r\n toString(): string {\r\n const { currentLang } = this.localizationService;\r\n return differentLocales[currentLang] || currentLang;\r\n }\r\n\r\n valueOf(): string {\r\n return this.toString();\r\n }\r\n}\r\n\r\nexport const LocaleProvider: Provider = {\r\n provide: LOCALE_ID,\r\n useClass: LocaleId,\r\n deps: [LocalizationService],\r\n};\r\n","import { Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { OAuthStorage, TokenResponse } from 'angular-oauth2-oidc';\r\nimport { pipe } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\n\r\nconst cookieKey = 'rememberMe';\r\nconst storageKey = 'passwordFlow';\r\n\r\nexport function pipeToLogin(\r\n params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>,\r\n injector: Injector,\r\n) {\r\n const configState = injector.get(ConfigStateService);\r\n const router = injector.get(Router);\r\n\r\n return pipe(\r\n switchMap(() => configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n}\r\n\r\nexport function setTokenResponseToStorage(injector: Injector, tokenRes: TokenResponse) {\r\n const { access_token, refresh_token, scope: grantedScopes, expires_in } = tokenRes;\r\n const storage = injector.get(OAuthStorage);\r\n\r\n storage.setItem('access_token', access_token);\r\n storage.setItem('refresh_token', refresh_token);\r\n storage.setItem('access_token_stored_at', '' + Date.now());\r\n\r\n if (grantedScopes) {\r\n storage.setItem('granted_scopes', JSON.stringify(grantedScopes.split(' ')));\r\n }\r\n\r\n if (expires_in) {\r\n const expiresInMilliSeconds = expires_in * 1000;\r\n const now = new Date();\r\n const expiresAt = now.getTime() + expiresInMilliSeconds;\r\n storage.setItem('expires_at', '' + expiresAt);\r\n }\r\n}\r\n\r\nexport function setRememberMe(remember: boolean) {\r\n removeRememberMe();\r\n localStorage.setItem(storageKey, 'true');\r\n document.cookie = `${cookieKey}=true; path=/${\r\n remember ? ' ;expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''\r\n }`;\r\n}\r\n\r\nexport function removeRememberMe() {\r\n localStorage.removeItem(storageKey);\r\n document.cookie = cookieKey + '= ; path=/; expires = Thu, 01 Jan 1970 00:00:00 GMT';\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injector } from '@angular/core';\r\nimport { Params, Router } from '@angular/router';\r\nimport {\r\n AuthConfig,\r\n OAuthErrorEvent,\r\n OAuthInfoEvent,\r\n OAuthService,\r\n OAuthStorage\r\n} from 'angular-oauth2-oidc';\r\nimport { from, Observable, of, pipe } from 'rxjs';\r\nimport { filter, switchMap, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\nimport { removeRememberMe, setRememberMe } from '../utils/auth-utils';\r\nimport { noop } from '../utils/common-utils';\r\n\r\nexport const oAuthStorage = localStorage;\r\n\r\nexport abstract class AuthFlowStrategy {\r\n abstract readonly isInternalAuth: boolean;\r\n\r\n protected httpErrorReporter: HttpErrorReporterService;\r\n protected environment: EnvironmentService;\r\n protected configState: ConfigStateService;\r\n protected oAuthService: OAuthService;\r\n protected oAuthConfig: AuthConfig;\r\n protected sessionState: SessionStateService;\r\n protected tenantKey: string;\r\n\r\n abstract checkIfInternalAuth(queryParams?: Params): boolean;\r\n abstract navigateToLogin(queryParams?: Params): void;\r\n abstract logout(queryParams?: Params): Observable<any>;\r\n abstract login(params?: LoginParams | Params): Observable<any>;\r\n\r\n private catchError = err => {\r\n this.httpErrorReporter.reportError(err);\r\n return of(null);\r\n };\r\n\r\n constructor(protected injector: Injector) {\r\n this.httpErrorReporter = injector.get(HttpErrorReporterService);\r\n this.environment = injector.get(EnvironmentService);\r\n this.configState = injector.get(ConfigStateService);\r\n this.oAuthService = injector.get(OAuthService);\r\n this.sessionState = injector.get(SessionStateService);\r\n this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;\r\n this.tenantKey = injector.get(TENANT_KEY);\r\n\r\n this.listenToOauthErrors();\r\n }\r\n\r\n async init(): Promise<any> {\r\n const shouldClear = shouldStorageClear(\r\n this.environment.getEnvironment().oAuthConfig.clientId,\r\n oAuthStorage,\r\n );\r\n if (shouldClear) clearOAuthStorage(oAuthStorage);\r\n\r\n this.oAuthService.configure(this.oAuthConfig);\r\n\r\n this.oAuthService.events\r\n .pipe(filter(event => event.type === 'token_refresh_error'))\r\n .subscribe(() => this.navigateToLogin());\r\n\r\n return this.oAuthService\r\n .loadDiscoveryDocument()\r\n .then(() => {\r\n if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.refreshToken();\r\n })\r\n .catch(this.catchError);\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => clearOAuthStorage());\r\n }\r\n\r\n protected listenToOauthErrors() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event instanceof OAuthErrorEvent),\r\n tap(() => clearOAuthStorage()),\r\n switchMap(() => this.configState.refreshAppState()),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n\r\nexport class AuthCodeFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = false;\r\n\r\n async init() {\r\n return super\r\n .init()\r\n .then(() => this.oAuthService.tryLogin().catch(noop))\r\n .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n }\r\n\r\n checkIfInternalAuth(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return false;\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n return from(this.oAuthService.revokeTokenAndLogout(this.getCultureParams(queryParams)));\r\n }\r\n\r\n login(queryParams?: Params) {\r\n this.oAuthService.initCodeFlow('', this.getCultureParams(queryParams));\r\n return of(null);\r\n }\r\n\r\n private getCultureParams(queryParams?: Params) {\r\n const lang = this.sessionState.getLanguage();\r\n const culture = { culture: lang, 'ui-culture': lang };\r\n return { ...(lang && culture), ...queryParams };\r\n }\r\n}\r\n\r\nexport class AuthPasswordFlowStrategy extends AuthFlowStrategy {\r\n readonly isInternalAuth = true;\r\n private cookieKey = 'rememberMe';\r\n private storageKey = 'passwordFlow';\r\n\r\n private listenToTokenExpiration() {\r\n this.oAuthService.events\r\n .pipe(\r\n filter(\r\n event =>\r\n event instanceof OAuthInfoEvent &&\r\n event.type === 'token_expires' &&\r\n event.info === 'access_token',\r\n ),\r\n )\r\n .subscribe(() => {\r\n if (this.oAuthService.getRefreshToken()) {\r\n this.refreshToken();\r\n } else {\r\n this.oAuthService.logOut();\r\n removeRememberMe();\r\n this.configState.refreshAppState().subscribe();\r\n }\r\n });\r\n }\r\n\r\n async init() {\r\n if (!getCookieValueByName(this.cookieKey) && localStorage.getItem(this.storageKey)) {\r\n this.oAuthService.logOut();\r\n }\r\n\r\n return super.init().then(() => this.listenToTokenExpiration());\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n router.navigate(['/account/login'], { queryParams });\r\n }\r\n\r\n checkIfInternalAuth() {\r\n return true;\r\n }\r\n\r\n login(params: LoginParams): Observable<any> {\r\n const tenant = this.sessionState.getTenant();\r\n\r\n return from(\r\n this.oAuthService.fetchTokenUsingPasswordFlow(\r\n params.username,\r\n params.password,\r\n new HttpHeaders({ ...(tenant && tenant.id && { [this.tenantKey]: tenant.id }) }),\r\n ),\r\n ).pipe(this.pipeToLogin(params));\r\n }\r\n\r\n pipeToLogin(params: Pick<LoginParams, 'redirectUrl' | 'rememberMe'>) {\r\n const router = this.injector.get(Router);\r\n\r\n return pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n setRememberMe(params.rememberMe);\r\n if (params.redirectUrl) router.navigate([params.redirectUrl]);\r\n }),\r\n );\r\n }\r\n\r\n logout(queryParams?: Params) {\r\n const router = this.injector.get(Router);\r\n\r\n return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(\r\n switchMap(() => this.configState.refreshAppState()),\r\n tap(() => {\r\n router.navigateByUrl('/');\r\n removeRememberMe();\r\n }),\r\n );\r\n }\r\n\r\n protected refreshToken() {\r\n return this.oAuthService.refreshToken().catch(() => {\r\n clearOAuthStorage();\r\n removeRememberMe();\r\n });\r\n }\r\n}\r\n\r\nexport const AUTH_FLOW_STRATEGY = {\r\n Code(injector: Injector) {\r\n return new AuthCodeFlowStrategy(injector);\r\n },\r\n Password(injector: Injector) {\r\n return new AuthPasswordFlowStrategy(injector);\r\n },\r\n};\r\n\r\nexport function clearOAuthStorage(storage: OAuthStorage = oAuthStorage) {\r\n const keys = [\r\n 'access_token',\r\n 'id_token',\r\n 'refresh_token',\r\n 'nonce',\r\n 'PKCE_verifier',\r\n 'expires_at',\r\n 'id_token_claims_obj',\r\n 'id_token_expires_at',\r\n 'id_token_stored_at',\r\n 'access_token_stored_at',\r\n 'granted_scopes',\r\n 'session_state',\r\n ];\r\n\r\n keys.forEach(key => storage.removeItem(key));\r\n}\r\n\r\nfunction shouldStorageClear(clientId: string, storage: OAuthStorage): boolean {\r\n const key = 'abpOAuthClientId';\r\n if (!storage.getItem(key)) {\r\n storage.setItem(key, clientId);\r\n return false;\r\n }\r\n\r\n const shouldClear = storage.getItem(key) !== clientId;\r\n if (shouldClear) storage.setItem(key, clientId);\r\n return shouldClear;\r\n}\r\n\r\nfunction getCookieValueByName(name: string) {\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? match[2] : '';\r\n}\r\n","export {};\r\n\r\ndeclare global {\r\n interface Date {\r\n toLocalISOString?: () => string;\r\n }\r\n}\r\n\r\nDate.prototype.toLocalISOString = function (this: Date): string {\r\n const timezoneOffset = this.getTimezoneOffset();\r\n\r\n return new Date(this.getTime() - timezoneOffset * 60000).toISOString();\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\nimport { filter, map, switchMap, take, tap } from 'rxjs/operators';\r\nimport { LoginParams } from '../models/auth';\r\nimport { AuthFlowStrategy, AUTH_FLOW_STRATEGY } from '../strategies/auth-flow.strategy';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n private strategy: AuthFlowStrategy;\r\n\r\n get isInternalAuth() {\r\n return this.strategy.isInternalAuth;\r\n }\r\n\r\n constructor(protected injector: Injector) {}\r\n\r\n async init() {\r\n const environmentService = this.injector.get(EnvironmentService);\r\n\r\n return environmentService\r\n .getEnvironment$()\r\n .pipe(\r\n map(env => env?.oAuthConfig),\r\n filter(oAuthConfig => !!oAuthConfig),\r\n tap(oAuthConfig => {\r\n this.strategy =\r\n oAuthConfig.responseType === 'code'\r\n ? AUTH_FLOW_STRATEGY.Code(this.injector)\r\n : AUTH_FLOW_STRATEGY.Password(this.injector);\r\n }),\r\n switchMap(() => from(this.strategy.init())),\r\n take(1),\r\n )\r\n .toPromise();\r\n }\r\n\r\n logout(queryParams?: Params): Observable<any> {\r\n return this.strategy.logout(queryParams);\r\n }\r\n\r\n navigateToLogin(queryParams?: Params) {\r\n this.strategy.navigateToLogin(queryParams);\r\n }\r\n\r\n login(params: LoginParams) {\r\n return this.strategy.login(params);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport type AppInitErrorFn = (error: any) => void;\r\n\r\nexport const APP_INIT_ERROR_HANDLERS = new InjectionToken<AppInitErrorFn[]>(\r\n 'APP_INIT_ERROR_HANDLERS',\r\n);\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injector } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { Environment, RemoteEnv } from '../models/environment';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { deepMerge } from './object-utils';\r\n\r\nexport function getRemoteEnv(injector: Injector, environment: Partial<Environment>) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const { remoteEnv } = environment;\r\n const { headers = {}, method = 'GET', url } = remoteEnv || ({} as RemoteEnv);\r\n if (!url) return Promise.resolve();\r\n\r\n const http = injector.get(HttpClient);\r\n const httpErrorReporter = injector.get(HttpErrorReporterService);\r\n\r\n return http\r\n .request<Environment>(method, url, { headers })\r\n .pipe(\r\n catchError(err => {\r\n httpErrorReporter.reportError(err);\r\n return of(null);\r\n }), // TODO: Consider get handle function from a provider\r\n tap(env => environmentService.setState(mergeEnvironments(environment, env, remoteEnv))),\r\n )\r\n .toPromise();\r\n}\r\n\r\nfunction mergeEnvironments(\r\n local: Partial<Environment>,\r\n remote: any,\r\n config: RemoteEnv,\r\n): Environment {\r\n switch (config.mergeStrategy) {\r\n case 'deepmerge':\r\n return deepMerge(local, remote);\r\n case 'overwrite':\r\n case null:\r\n case undefined:\r\n return remote;\r\n default:\r\n return config.mergeStrategy(local, remote);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../services/rest.service';\r\nimport type { FindTenantResultDto } from '../../../volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpTenantService {\r\n apiName = 'abp';\r\n\r\n findTenantById = (id: string, headers: Record<string, string>) =>\r\n this.restService.request<any, FindTenantResultDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-id/${id}`,\r\n headers,\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n findTenantByName = (name: string, headers: Record<string, string>) =>\r\n this.restService.request<any, FindTenantResultDto>(\r\n {\r\n method: 'GET',\r\n url: `/api/abp/multi-tenancy/tenants/by-name/${name}`,\r\n headers,\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { AbpTenantService } from '../proxy/pages/abp/multi-tenancy';\r\nimport {\r\n CurrentTenantDto,\r\n FindTenantResultDto,\r\n} from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { TENANT_KEY } from '../tokens/tenant-key.token';\r\nimport { ConfigStateService } from './config-state.service';\r\nimport { RestService } from './rest.service';\r\nimport { SessionStateService } from './session-state.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MultiTenancyService {\r\n domainTenant: CurrentTenantDto = null;\r\n\r\n isTenantBoxVisible = true;\r\n\r\n apiName = 'abp';\r\n\r\n private setTenantToState = (tenant: FindTenantResultDto) => {\r\n this.sessionState.setTenant({ id: tenant.tenantId, name: tenant.name, isAvailable: true });\r\n return this.configStateService.refreshAppState().pipe(map(_ => tenant));\r\n };\r\n\r\n constructor(\r\n private restService: RestService,\r\n private sessionState: SessionStateService,\r\n private tenantService: AbpTenantService,\r\n private configStateService: ConfigStateService,\r\n @Inject(TENANT_KEY) public tenantKey: string,\r\n ) {}\r\n\r\n setTenantByName(tenantName: string) {\r\n return this.tenantService\r\n .findTenantByName(tenantName, { [this.tenantKey]: '' })\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n\r\n setTenantById(tenantId: string) {\r\n return this.tenantService\r\n .findTenantById(tenantId, { [this.tenantKey]: '' })\r\n .pipe(switchMap(this.setTenantToState));\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\r\nimport clone from 'just-clone';\r\n\r\nimport { tap } from 'rxjs/operators';\r\nimport { Environment } from '../models/environment';\r\n\r\nimport { FindTenantResultDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { MultiTenancyService } from '../services/multi-tenancy.service';\r\nimport { createTokenParser } from './string-utils';\r\n\r\nconst tenancyPlaceholder = '{0}';\r\n\r\nfunction getCurrentTenancyName(appBaseUrl: string): string {\r\n if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/';\r\n\r\n const parseTokens = createTokenParser(appBaseUrl);\r\n const token = tenancyPlaceholder.replace(/[}{]/g, '');\r\n return parseTokens(window.location.href)[token]?.[0];\r\n}\r\n\r\nfunction getCurrentTenancyNameFromUrl(tenantKey: string) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n return urlParams.get(tenantKey);\r\n}\r\n\r\nexport async function parseTenantFromUrl(injector: Injector) {\r\n const environmentService = injector.get(EnvironmentService);\r\n const multiTenancyService = injector.get(MultiTenancyService);\r\n\r\n const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';\r\n const tenancyName = getCurrentTenancyName(baseUrl);\r\n\r\n const hideTenantBox = () => {\r\n multiTenancyService.isTenantBoxVisible = false;\r\n };\r\n\r\n const setDomainTenant = (tenant: FindTenantResultDto) => {\r\n multiTenancyService.domainTenant = {\r\n id: tenant.tenantId,\r\n name: tenant.name,\r\n isAvailable: true,\r\n };\r\n };\r\n\r\n const setEnvironmentWithDomainTenant = (tenant: FindTenantResultDto) => {\r\n hideTenantBox();\r\n setDomainTenant(tenant);\r\n };\r\n\r\n if (tenancyName) {\r\n /**\r\n * We have to replace tenant name within the urls from environment,\r\n * because the code below will make a http request to find information about the domain tenant.\r\n * Before this request takes place, we need to replace placeholders aka \"{0}\".\r\n */\r\n replaceTenantNameWithinEnvironment(injector, tenancyName);\r\n return multiTenancyService\r\n .setTenantByName(tenancyName)\r\n .pipe(tap(setEnvironmentWithDomainTenant))\r\n .toPromise();\r\n } else {\r\n /**\r\n * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.\r\n */\r\n replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');\r\n\r\n const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey);\r\n if (tenantIdFromQueryParams) {\r\n return multiTenancyService.setTenantById(tenantIdFromQueryParams).toPromise();\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n}\r\n\r\nfunction replaceTenantNameWithinEnvironment(\r\n injector: Injector,\r\n tenancyName: string,\r\n placeholder = tenancyPlaceholder,\r\n) {\r\n const environmentService = injector.get(EnvironmentService);\r\n\r\n const environment = clone(environmentService.getEnvironment()) as Environment;\r\n\r\n if (environment.application.baseUrl) {\r\n environment.application.baseUrl = environment.application.baseUrl.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n if (environment.oAuthConfig.redirectUri) {\r\n environment.oAuthConfig.redirectUri = environment.oAuthConfig.redirectUri.replace(\r\n placeholder,\r\n tenancyName,\r\n );\r\n }\r\n\r\n environment.oAuthConfig.issuer = environment.oAuthConfig.issuer.replace(placeholder, tenancyName);\r\n\r\n Object.keys(environment.apis).forEach(api => {\r\n Object.keys(environment.apis[api]).forEach(key => {\r\n environment.apis[api][key] = environment.apis[api][key].replace(placeholder, tenancyName);\r\n });\r\n });\r\n\r\n return environmentService.setState(environment);\r\n}\r\n","import { registerLocaleData } from '@angular/common';\r\nimport { Injector } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport { ABP } from '../models/common';\r\nimport { Environment } from '../models/environment';\r\nimport { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { SessionStateService } from '../services/session-state.service';\r\nimport { clearOAuthStorage } from '../strategies/auth-flow.strategy';\r\nimport { CORE_OPTIONS } from '../tokens/options.token';\r\nimport { APP_INIT_ERROR_HANDLERS } from '../tokens/app-config.token';\r\nimport { getRemoteEnv } from './environment-utils';\r\nimport { parseTenantFromUrl } from './multi-tenancy-utils';\r\n\r\nexport function getInitialData(injector: Injector) {\r\n const fn = async () => {\r\n const environmentService = injector.get(EnvironmentService);\r\n const configState = injector.get(ConfigStateService);\r\n const options = injector.get(CORE_OPTIONS) as ABP.Root;\r\n\r\n environmentService.setState(options.environment as Environment);\r\n await getRemoteEnv(injector, options.environment);\r\n await parseTenantFromUrl(injector);\r\n await injector.get(AuthService).init();\r\n\r\n if (options.skipGetAppConfiguration) return;\r\n\r\n return configState\r\n .refreshAppState()\r\n .pipe(\r\n tap(() => checkAccessToken(injector)),\r\n tap(() => {\r\n const currentTenant = configState.getOne('currentTenant') as CurrentTenantDto;\r\n injector.get(SessionStateService).setTenant(currentTenant);\r\n }),\r\n catchError(error => {\r\n const appInitErrorHandlers = injector.get(APP_INIT_ERROR_HANDLERS, null);\r\n if (appInitErrorHandlers && appInitErrorHandlers.length) {\r\n appInitErrorHandlers.forEach(func => func(error));\r\n }\r\n\r\n return throwError(error);\r\n }),\r\n )\r\n .toPromise();\r\n };\r\n\r\n return fn;\r\n}\r\n\r\nexport function checkAccessToken(injector: Injector) {\r\n const configState = injector.get(ConfigStateService);\r\n const oAuth = injector.get(OAuthService);\r\n if (oAuth.hasValidAccessToken() && !configState.getDeep('currentUser.id')) {\r\n clearOAuthStorage();\r\n }\r\n}\r\n\r\nexport function localeInitializer(injector: Injector) {\r\n const fn = () => {\r\n const sessionState = injector.get(SessionStateService);\r\n const { registerLocaleFn }: ABP.Root = injector.get(CORE_OPTIONS);\r\n\r\n const lang = sessionState.getLanguage() || 'en';\r\n\r\n return new Promise((resolve, reject) => {\r\n registerLocaleFn(lang).then(module => {\r\n if (module?.default) registerLocaleData(module.default);\r\n\r\n return resolve('resolved');\r\n }, reject);\r\n });\r\n };\r\n\r\n return fn;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HttpClientXsrfModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\nimport { AbstractNgModelComponent } from './abstracts/ng-model.component';\r\nimport { DynamicLayoutComponent } from './components/dynamic-layout.component';\r\nimport { ReplaceableRouteContainerComponent } from './components/replaceable-route-container.component';\r\nimport { RouterOutletComponent } from './components/router-outlet.component';\r\nimport { AutofocusDirective } from './directives/autofocus.directive';\r\nimport { InputEventDebounceDirective } from './directives/debounce.directive';\r\nimport { ForDirective } from './directives/for.directive';\r\nimport { FormSubmitDirective } from './directives/form-submit.directive';\r\nimport { InitDirective } from './directives/init.directive';\r\nimport { PermissionDirective } from './directives/permission.directive';\r\nimport { ReplaceableTemplateDirective } from './directives/replaceable-template.directive';\r\nimport { StopPropagationDirective } from './directives/stop-propagation.directive';\r\nimport { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';\r\nimport { RoutesHandler } from './handlers/routes.handler';\r\nimport { ApiInterceptor } from './interceptors/api.interceptor';\r\nimport { LocalizationModule } from './localization.module';\r\nimport { ABP } from './models/common';\r\nimport { LocalizationPipe } from './pipes/localization.pipe';\r\nimport { SortPipe } from './pipes/sort.pipe';\r\nimport { ToInjectorPipe } from './pipes/to-injector.pipe';\r\nimport { CookieLanguageProvider } from './providers/cookie-language.provider';\r\nimport { LocaleProvider } from './providers/locale.provider';\r\nimport { LocalizationService } from './services/localization.service';\r\nimport { oAuthStorage } from './strategies/auth-flow.strategy';\r\nimport { localizationContributor, LOCALIZATIONS } from './tokens/localization.token';\r\nimport { coreOptionsFactory, CORE_OPTIONS } from './tokens/options.token';\r\nimport { TENANT_KEY } from './tokens/tenant-key.token';\r\nimport { noop } from './utils/common-utils';\r\nimport './utils/date-extensions';\r\nimport { getInitialData, localeInitializer } from './utils/initial-utils';\r\n\r\nexport function storageFactory(): OAuthStorage {\r\n return oAuthStorage;\r\n}\r\n\r\n/**\r\n * BaseCoreModule is the module that holds\r\n * all imports, declarations, exports, and entryComponents\r\n * but not the providers.\r\n * This module will be imported and exported by all others.\r\n */\r\n@NgModule({\r\n exports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n LocalizationModule,\r\n AbstractNgModelComponent,\r\n AutofocusDirective,\r\n DynamicLayoutComponent,\r\n ForDirective,\r\n FormSubmitDirective,\r\n InitDirective,\r\n InputEventDebounceDirective,\r\n PermissionDirective,\r\n ReplaceableRouteContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutletComponent,\r\n SortPipe,\r\n StopPropagationDirective,\r\n ToInjectorPipe,\r\n ],\r\n imports: [\r\n OAuthModule,\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n LocalizationModule,\r\n ],\r\n declarations: [\r\n AbstractNgModelComponent,\r\n AutofocusDirective,\r\n DynamicLayoutComponent,\r\n ForDirective,\r\n FormSubmitDirective,\r\n InitDirective,\r\n InputEventDebounceDirective,\r\n PermissionDirective,\r\n ReplaceableRouteContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutletComponent,\r\n SortPipe,\r\n StopPropagationDirective,\r\n ToInjectorPipe,\r\n ],\r\n providers: [LocalizationPipe]\r\n})\r\nexport class BaseCoreModule {}\r\n\r\n/**\r\n * RootCoreModule is the module that will be used at root level\r\n * and it introduces imports useful at root level (e.g. NGXS)\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule, LocalizationModule],\r\n imports: [\r\n BaseCoreModule,\r\n LocalizationModule,\r\n OAuthModule.forRoot(),\r\n HttpClientXsrfModule.withOptions({\r\n cookieName: 'XSRF-TOKEN',\r\n headerName: 'RequestVerificationToken',\r\n }),\r\n ],\r\n})\r\nexport class RootCoreModule {}\r\n\r\n/**\r\n * CoreModule is the module that is publicly available\r\n */\r\n@NgModule({\r\n exports: [BaseCoreModule],\r\n imports: [BaseCoreModule],\r\n})\r\nexport class CoreModule {\r\n static forRoot(options = {} as ABP.Root): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [\r\n LocaleProvider,\r\n CookieLanguageProvider,\r\n {\r\n provide: 'CORE_OPTIONS',\r\n useValue: options,\r\n },\r\n {\r\n provide: CORE_OPTIONS,\r\n useFactory: coreOptionsFactory,\r\n deps: ['CORE_OPTIONS'],\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useExisting: ApiInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [OAuthConfigurationHandler],\r\n useFactory: noop,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [Injector],\r\n useFactory: getInitialData,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [Injector],\r\n useFactory: localeInitializer,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [LocalizationService],\r\n useFactory: noop,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n multi: true,\r\n deps: [RoutesHandler],\r\n useFactory: noop,\r\n },\r\n { provide: OAuthStorage, useFactory: storageFactory },\r\n { provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' },\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n static forChild(options = {} as ABP.Child): ModuleWithProviders<RootCoreModule> {\r\n return {\r\n ngModule: RootCoreModule,\r\n providers: [\r\n {\r\n provide: LOCALIZATIONS,\r\n multi: true,\r\n useValue: localizationContributor(options.localizations),\r\n deps: [LocalizationService],\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nexport function ngxsStoragePluginSerialize(data) {\r\n return data;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, UrlTree } from '@angular/router';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(private oauthService: OAuthService, private authService: AuthService) {}\r\n\r\n canActivate(): Observable<boolean> | boolean | UrlTree {\r\n const hasValidAccessToken = this.oauthService.hasValidAccessToken();\r\n if (hasValidAccessToken) {\r\n return true;\r\n }\r\n\r\n this.authService.navigateToLogin();\r\n return false;\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpErrorReporterService } from '../services/http-error-reporter.service';\r\nimport { PermissionService } from '../services/permission.service';\r\nimport { RoutesService } from '../services/routes.service';\r\nimport { findRoute, getRoutePath } from '../utils/route-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PermissionGuard implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private routesService: RoutesService,\r\n private permissionService: PermissionService,\r\n private httpErrorReporter: HttpErrorReporterService,\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n let { requiredPolicy } = route.data || {};\r\n\r\n if (!requiredPolicy) {\r\n const routeFound = findRoute(this.routesService, getRoutePath(this.router, state.url));\r\n requiredPolicy = routeFound?.requiredPolicy;\r\n }\r\n\r\n if (!requiredPolicy) return of(true);\r\n\r\n return this.permissionService.getGrantedPolicy$(requiredPolicy).pipe(\r\n tap(access => {\r\n if (!access) {\r\n this.httpErrorReporter.reportError({ status: 403 } as HttpErrorResponse);\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import { ABP } from './common';\r\n\r\nexport class ListResultDto<T> {\r\n items?: T[];\r\n\r\n constructor(initialValues: Partial<ListResultDto<T>> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class PagedResultDto<T> extends ListResultDto<T> {\r\n totalCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultDto<T>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class LimitedResultRequestDto {\r\n maxResultCount = 10;\r\n\r\n constructor(initialValues: Partial<LimitedResultRequestDto> = {}) {\r\n for (const key in initialValues) {\r\n if (\r\n Object.prototype.hasOwnProperty.call(initialValues, key) &&\r\n initialValues[key] !== undefined\r\n ) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class PagedResultRequestDto extends LimitedResultRequestDto {\r\n skipCount?: number;\r\n\r\n constructor(initialValues: Partial<PagedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class PagedAndSortedResultRequestDto extends PagedResultRequestDto {\r\n sorting?: string;\r\n\r\n constructor(initialValues: Partial<PagedAndSortedResultRequestDto> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class EntityDto<TKey = string> {\r\n id?: TKey;\r\n\r\n constructor(initialValues: Partial<EntityDto<TKey>> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityDto<TPrimaryKey = string> extends EntityDto<TPrimaryKey> {\r\n creationTime?: string | Date;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<CreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class CreationAuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<CreationAuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class AuditedEntityDto<TPrimaryKey = string> extends CreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: string | Date;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<AuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class AuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends AuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n\r\n constructor(initialValues: Partial<AuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class FullAuditedEntityDto<TPrimaryKey = string> extends AuditedEntityDto<TPrimaryKey> {\r\n isDeleted?: boolean;\r\n deleterId?: string;\r\n deletionTime?: Date | string;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class FullAuditedEntityWithUserDto<\r\n TUserDto,\r\n TPrimaryKey = string,\r\n> extends FullAuditedEntityDto<TPrimaryKey> {\r\n creator?: TUserDto;\r\n lastModifier?: TUserDto;\r\n deleter?: TUserDto;\r\n\r\n constructor(initialValues: Partial<FullAuditedEntityWithUserDto<TUserDto, TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleObject {\r\n extraProperties: ABP.Dictionary<any>;\r\n\r\n constructor(initialValues: Partial<ExtensibleObject> = {}) {\r\n for (const key in initialValues) {\r\n if (Object.prototype.hasOwnProperty.call(initialValues, key)) {\r\n this[key] = initialValues[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class ExtensibleEntityDto<TKey = string> extends ExtensibleObject {\r\n id: TKey;\r\n\r\n constructor(initialValues: Partial<ExtensibleEntityDto<TKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleEntityDto<TPrimaryKey> {\r\n creationTime: Date | string;\r\n creatorId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleCreationAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n lastModificationTime?: Date | string;\r\n lastModifierId?: string;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n lastModifier: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleCreationAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleCreationAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n\r\n constructor(\r\n initialValues: Partial<ExtensibleCreationAuditedEntityWithUserDto<TPrimaryKey>> = {},\r\n ) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityDto<\r\n TPrimaryKey = string,\r\n> extends ExtensibleAuditedEntityDto<TPrimaryKey> {\r\n isDeleted: boolean;\r\n deleterId?: string;\r\n deletionTime: Date | string;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n\r\nexport class ExtensibleFullAuditedEntityWithUserDto<\r\n TPrimaryKey = string,\r\n TUserDto = any,\r\n> extends ExtensibleFullAuditedEntityDto<TPrimaryKey> {\r\n creator: TUserDto;\r\n lastModifier: TUserDto;\r\n deleter: TUserDto;\r\n\r\n constructor(initialValues: Partial<ExtensibleFullAuditedEntityWithUserDto<TPrimaryKey>> = {}) {\r\n super(initialValues);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RestService } from '../../../../../../services/rest.service';\r\nimport type {\r\n ApplicationApiDescriptionModel,\r\n ApplicationApiDescriptionModelRequestDto,\r\n} from '../../../http/modeling/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AbpApiDefinitionService {\r\n apiName = 'abp';\r\n\r\n getByModel = (model: ApplicationApiDescriptionModelRequestDto) =>\r\n this.restService.request<any, ApplicationApiDescriptionModel>(\r\n {\r\n method: 'GET',\r\n url: '/api/abp/api-definition',\r\n params: { includeTypes: model.includeTypes },\r\n },\r\n { apiName: this.apiName },\r\n );\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\nexport interface EntityExtensionDto {\r\n properties: Record<string, ExtensionPropertyDto>;\r\n configuration: Record<string, object>;\r\n}\r\n\r\nexport interface ExtensionEnumDto {\r\n fields: ExtensionEnumFieldDto[];\r\n localizationResource?: string;\r\n}\r\n\r\nexport interface ExtensionEnumFieldDto {\r\n name?: string;\r\n value: object;\r\n}\r\n\r\nexport interface ExtensionPropertyApiCreateDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyApiDto {\r\n onGet: ExtensionPropertyApiGetDto;\r\n onCreate: ExtensionPropertyApiCreateDto;\r\n onUpdate: ExtensionPropertyApiUpdateDto;\r\n}\r\n\r\nexport interface ExtensionPropertyApiGetDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyApiUpdateDto {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyAttributeDto {\r\n typeSimple?: string;\r\n config: Record<string, object>;\r\n}\r\n\r\nexport interface ExtensionPropertyDto {\r\n type?: string;\r\n typeSimple?: string;\r\n displayName: LocalizableStringDto;\r\n api: ExtensionPropertyApiDto;\r\n ui: ExtensionPropertyUiDto;\r\n attributes: ExtensionPropertyAttributeDto[];\r\n configuration: Record<string, object>;\r\n defaultValue: object;\r\n}\r\n\r\nexport interface ExtensionPropertyUiDto {\r\n onTable: ExtensionPropertyUiTableDto;\r\n onCreateForm: ExtensionPropertyUiFormDto;\r\n onEditForm: ExtensionPropertyUiFormDto;\r\n lookup: ExtensionPropertyUiLookupDto;\r\n}\r\n\r\nexport interface ExtensionPropertyUiFormDto {\r\n isVisible: boolean;\r\n}\r\n\r\nexport interface ExtensionPropertyUiLookupDto {\r\n url?: string;\r\n resultListPropertyName?: string;\r\n displayPropertyName?: string;\r\n valuePropertyName?: string;\r\n filterParamName?: string;\r\n}\r\n\r\nexport interface ExtensionPropertyUiTableDto {\r\n isVisible: boolean;\r\n}\r\n\r\nexport interface LocalizableStringDto {\r\n name?: string;\r\n resource?: string;\r\n}\r\n\r\nexport interface ModuleExtensionDto {\r\n entities: Record<string, EntityExtensionDto>;\r\n configuration: Record<string, object>;\r\n}\r\n\r\nexport interface ObjectExtensionsDto {\r\n modules: Record<string, ModuleExtensionDto>;\r\n enums: Record<string, ExtensionEnumDto>;\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\n\r\nexport interface ActionApiDescriptionModel {\r\n uniqueName?: string;\r\n name?: string;\r\n httpMethod?: string;\r\n url?: string;\r\n supportedVersions: string[];\r\n parametersOnMethod: MethodParameterApiDescriptionModel[];\r\n parameters: ParameterApiDescriptionModel[];\r\n returnValue: ReturnValueApiDescriptionModel;\r\n}\r\n\r\nexport interface ApplicationApiDescriptionModel {\r\n modules: Record<string, ModuleApiDescriptionModel>;\r\n types: Record<string, TypeApiDescriptionModel>;\r\n}\r\n\r\nexport interface ApplicationApiDescriptionModelRequestDto {\r\n includeTypes: boolean;\r\n}\r\n\r\nexport interface ControllerApiDescriptionModel {\r\n controllerName?: string;\r\n type?: string;\r\n interfaces: ControllerInterfaceApiDescriptionModel[];\r\n actions: Record<string, ActionApiDescriptionModel>;\r\n}\r\n\r\nexport interface ControllerInterfaceApiDescriptionModel {\r\n type?: string;\r\n}\r\n\r\nexport interface MethodParameterApiDescriptionModel {\r\n name?: string;\r\n typeAsString?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isOptional: boolean;\r\n defaultValue: object;\r\n}\r\n\r\nexport interface ModuleApiDescriptionModel {\r\n rootPath?: string;\r\n remoteServiceName?: string;\r\n controllers: Record<string, ControllerApiDescriptionModel>;\r\n}\r\n\r\nexport interface ParameterApiDescriptionModel {\r\n nameOnMethod?: string;\r\n name?: string;\r\n jsonName?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isOptional: boolean;\r\n defaultValue: object;\r\n constraintTypes: string[];\r\n bindingSourceId?: string;\r\n descriptorName?: string;\r\n}\r\n\r\nexport interface PropertyApiDescriptionModel {\r\n name?: string;\r\n jsonName?: string;\r\n type?: string;\r\n typeSimple?: string;\r\n isRequired: boolean;\r\n}\r\n\r\nexport interface ReturnValueApiDescriptionModel {\r\n type?: string;\r\n typeSimple?: string;\r\n}\r\n\r\nexport interface TypeApiDescriptionModel {\r\n baseType?: string;\r\n isEnum: boolean;\r\n enumNames: string[];\r\n enumValues: object[];\r\n genericArguments: string[];\r\n properties: PropertyApiDescriptionModel[];\r\n}\r\n","import { Injectable, Injector, TemplateRef, Type } from '@angular/core';\r\nimport { ProjectionStrategy } from '../strategies/projection.strategy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentProjectionService {\r\n constructor(private injector: Injector) {}\r\n\r\n projectContent<T extends Type<any> | TemplateRef<any>>(\r\n projectionStrategy: ProjectionStrategy<T>,\r\n injector = this.injector,\r\n ) {\r\n return projectionStrategy.injectContent(injector);\r\n }\r\n}\r\n","import { DateTimeFormatDto } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/models';\r\nimport { ConfigStateService } from '../services';\r\n\r\nexport function getShortDateFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return dateTimeFormat.shortDatePattern;\r\n}\r\n\r\nexport function getShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return dateTimeFormat.shortTimePattern.replace('tt', 'a');\r\n}\r\n\r\nexport function getShortDateShortTimeFormat(configStateService: ConfigStateService) {\r\n const dateTimeFormat = configStateService.getDeep(\r\n 'localization.currentCulture.dateTimeFormat',\r\n ) as DateTimeFormatDto;\r\n\r\n return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat.shortTimePattern.replace('tt', 'a')}`;\r\n}\r\n","import {\r\n Compiler,\r\n Injector,\r\n ModuleWithProviders,\r\n NgModuleFactory,\r\n NgModuleRef,\r\n StaticProvider,\r\n Type,\r\n} from '@angular/core';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { ConfigStateService } from '../services/config-state.service';\r\n\r\nexport class LazyModuleFactory<T> extends NgModuleFactory<T> {\r\n get moduleType(): Type<T> {\r\n return this.moduleWithProviders.ngModule;\r\n }\r\n\r\n constructor(private moduleWithProviders: ModuleWithProviders<T>) {\r\n super();\r\n }\r\n\r\n create(parentInjector: Injector | null): NgModuleRef<T> {\r\n const injector = Injector.create({\r\n parent: parentInjector,\r\n providers: this.moduleWithProviders.providers as StaticProvider[],\r\n });\r\n\r\n const compiler = injector.get(Compiler);\r\n const factory = compiler.compileModuleSync(this.moduleType);\r\n\r\n return factory.create(injector);\r\n }\r\n}\r\n\r\nexport function featuresFactory(\r\n configState: ConfigStateService,\r\n featureKeys: string[],\r\n mapFn: (features) => any = features => features,\r\n) {\r\n return configState.getFeatures$(featureKeys).pipe(filter(Boolean), map(mapFn));\r\n}\r\n","export function downloadBlob(blob: Blob, filename: string) {\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement('a');\r\n\r\n link.href = blobUrl;\r\n link.download = filename;\r\n\r\n document.body.appendChild(link);\r\n\r\n link.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window,\r\n }),\r\n );\r\n\r\n document.body.removeChild(link);\r\n}\r\n","export function isNumber(value: string | number): boolean {\r\n return value == Number(value);\r\n}\r\n","import { ABP } from '../models/common';\r\nimport { isNumber } from './number-utils';\r\n\r\nexport function mapEnumToOptions<T>(_enum: T): ABP.Option<T>[] {\r\n const options: ABP.Option<T>[] = [];\r\n\r\n for (const member in _enum)\r\n if (!isNumber(member))\r\n options.push({\r\n key: member,\r\n value: _enum[member],\r\n });\r\n\r\n return options;\r\n}\r\n","export function uuid(a?: any): string {\r\n return a\r\n ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)\r\n : ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\r\n}\r\n\r\nexport function generateHash(value: string): number {\r\n let hashed = 0;\r\n let charCode: number;\r\n\r\n for (let i = 0; i < value.length; i++) {\r\n charCode = value.charCodeAt(i);\r\n hashed = (hashed << 5) - hashed + charCode;\r\n hashed |= 0;\r\n }\r\n return hashed;\r\n}\r\n\r\nexport function generatePassword(length = 8) {\r\n length = Math.min(Math.max(4, length), 128);\r\n\r\n const lowers = 'abcdefghijklmnopqrstuvwxyz';\r\n const uppers = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n const numbers = '0123456789';\r\n const specials = '!@#$%&*()_+{}<>?[]./';\r\n const all = lowers + uppers + numbers + specials;\r\n\r\n const getRandom = (chrSet: string) => chrSet[Math.floor(Math.random() * chrSet.length)];\r\n\r\n const password = Array({ length });\r\n password[0] = getRandom(lowers);\r\n password[1] = getRandom(uppers);\r\n password[2] = getRandom(numbers);\r\n password[3] = getRandom(specials);\r\n\r\n for (let i = 4; i < length; i++) {\r\n password[i] = getRandom(all);\r\n }\r\n\r\n return password.sort(() => 0.5 - Math.random()).join('');\r\n}\r\n","export class CrossOriginStrategy {\r\n constructor(public crossorigin: 'anonymous' | 'use-credentials', public integrity?: string) {}\r\n\r\n setCrossOrigin<T extends HTMLElement>(element: T) {\r\n if (this.integrity) element.setAttribute('integrity', this.integrity);\r\n element.setAttribute('crossorigin', this.crossorigin);\r\n }\r\n}\r\n\r\nexport class NoCrossOriginStrategy extends CrossOriginStrategy {\r\n setCrossOrigin() {}\r\n}\r\n\r\nexport const CROSS_ORIGIN_STRATEGY = {\r\n Anonymous(integrity?: string) {\r\n return new CrossOriginStrategy('anonymous', integrity);\r\n },\r\n UseCredentials(integrity?: string) {\r\n return new CrossOriginStrategy('use-credentials', integrity);\r\n },\r\n None() {\r\n return new NoCrossOriginStrategy(null);\r\n },\r\n};\r\n","export class DomStrategy {\r\n constructor(\r\n public target: HTMLElement = document.head,\r\n public position: InsertPosition = 'beforeend',\r\n ) {}\r\n\r\n insertElement<T extends HTMLElement>(element: T) {\r\n this.target.insertAdjacentElement(this.position, element);\r\n }\r\n}\r\n\r\nexport const DOM_STRATEGY = {\r\n AfterElement(element: HTMLElement) {\r\n return new DomStrategy(element, 'afterend');\r\n },\r\n AppendToBody() {\r\n return new DomStrategy(document.body, 'beforeend');\r\n },\r\n AppendToHead() {\r\n return new DomStrategy(document.head, 'beforeend');\r\n },\r\n BeforeElement(element: HTMLElement) {\r\n return new DomStrategy(element, 'beforebegin');\r\n },\r\n PrependToHead() {\r\n return new DomStrategy(document.head, 'afterbegin');\r\n },\r\n};\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { CrossOriginStrategy, CROSS_ORIGIN_STRATEGY } from '../strategies/cross-origin.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from '../strategies/dom.strategy';\r\n\r\nexport function fromLazyLoad<T extends Event>(\r\n element: HTMLScriptElement | HTMLLinkElement,\r\n domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n): Observable<T> {\r\n crossOriginStrategy.setCrossOrigin(element);\r\n domStrategy.insertElement(element);\r\n\r\n return new Observable((observer: Observer<T>) => {\r\n element.onload = (event: T) => {\r\n clearCallbacks(element);\r\n observer.next(event);\r\n observer.complete();\r\n };\r\n\r\n const handleError = createErrorHandler(observer, element);\r\n\r\n element.onerror = handleError;\r\n element.onabort = handleError;\r\n element.onemptied = handleError;\r\n element.onstalled = handleError;\r\n element.onsuspend = handleError;\r\n\r\n return () => {\r\n clearCallbacks(element);\r\n observer.complete();\r\n };\r\n });\r\n}\r\n\r\nfunction createErrorHandler(observer: Observer<Event>, element: HTMLElement) {\r\n return function (event: Event | string) {\r\n clearCallbacks(element);\r\n element.parentNode.removeChild(element);\r\n observer.error(event);\r\n };\r\n}\r\n\r\nfunction clearCallbacks(element: HTMLElement) {\r\n element.onload = null;\r\n element.onerror = null;\r\n element.onabort = null;\r\n element.onemptied = null;\r\n element.onstalled = null;\r\n element.onsuspend = null;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ContentStrategy } from '../strategies/content.strategy';\r\nimport { generateHash } from '../utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DomInsertionService {\r\n private readonly inserted = new Set<number>();\r\n\r\n insertContent<T extends HTMLScriptElement | HTMLStyleElement>(\r\n contentStrategy: ContentStrategy<T>,\r\n ): T {\r\n const hash = generateHash(contentStrategy.content);\r\n\r\n if (this.inserted.has(hash)) return;\r\n\r\n const element = contentStrategy.insertElement();\r\n this.inserted.add(hash);\r\n\r\n return element;\r\n }\r\n\r\n removeContent(element: HTMLScriptElement | HTMLStyleElement) {\r\n const hash = generateHash(element.textContent);\r\n this.inserted.delete(hash);\r\n\r\n element.parentNode.removeChild(element);\r\n }\r\n\r\n has(content: string): boolean {\r\n const hash = generateHash(content);\r\n\r\n return this.inserted.has(hash);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\n\r\nexport interface ResourceWaitState {\r\n resources: Set<string>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ResourceWaitService {\r\n private store = new InternalStore<ResourceWaitState>({ resources: new Set() });\r\n\r\n getLoading() {\r\n return !!this.store.state.resources.size;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ resources }) => !!resources.size);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ resources }) => !!resources.size);\r\n }\r\n\r\n clearLoading() {\r\n this.store.patch({ resources: new Set() });\r\n }\r\n\r\n addResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.add(resource);\r\n this.store.patch({ resources });\r\n }\r\n\r\n deleteResource(resource: string) {\r\n const resources = this.store.state.resources;\r\n resources.delete(resource);\r\n this.store.patch({ resources });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { concat, Observable, of, throwError } from 'rxjs';\r\nimport { delay, retryWhen, shareReplay, take, tap } from 'rxjs/operators';\r\nimport { LoadingStrategy } from '../strategies';\r\nimport { ResourceWaitService } from './resource-wait.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LazyLoadService {\r\n readonly loaded = new Map<string, HTMLScriptElement | HTMLLinkElement | null>();\r\n\r\n constructor(private resourceWaitService: ResourceWaitService) {}\r\n\r\n load(strategy: LoadingStrategy, retryTimes?: number, retryDelay?: number): Observable<Event> {\r\n if (this.loaded.has(strategy.path)) return of(new CustomEvent('load'));\r\n this.resourceWaitService.addResource(strategy.path);\r\n return strategy.createStream().pipe(\r\n retryWhen(error$ =>\r\n concat(\r\n error$.pipe(delay(retryDelay), take(retryTimes)),\r\n throwError(new CustomEvent('error')),\r\n ),\r\n ),\r\n tap(() => {\r\n this.loaded.set(strategy.path, strategy.element);\r\n this.resourceWaitService.deleteResource(strategy.path);\r\n }),\r\n delay(100),\r\n shareReplay({ bufferSize: 1, refCount: true }),\r\n );\r\n }\r\n\r\n remove(path: string): boolean {\r\n const element = this.loaded.get(path);\r\n\r\n if (!element) return false;\r\n\r\n element.parentNode.removeChild(element);\r\n this.loaded.delete(path);\r\n return true;\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken<number>('LIST_QUERY_DEBOUNCE_TIME');\r\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\r\nimport {\r\n BehaviorSubject,\r\n MonoTypeOperatorFunction,\r\n Observable,\r\n of,\r\n ReplaySubject,\r\n Subject,\r\n} from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n filter,\r\n shareReplay,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\nimport { ABP } from '../models/common';\r\nimport { PagedResultDto } from '../models/dtos';\r\nimport { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';\r\n\r\n@Injectable()\r\nexport class ListService<QueryParamsType = ABP.PageQueryParams | any> implements OnDestroy {\r\n private _filter = '';\r\n set filter(value: string) {\r\n this._filter = value;\r\n this.get();\r\n }\r\n get filter(): string {\r\n return this._filter;\r\n }\r\n\r\n private _maxResultCount = 10;\r\n set maxResultCount(value: number) {\r\n this._maxResultCount = value;\r\n this.get();\r\n }\r\n get maxResultCount(): number {\r\n return this._maxResultCount;\r\n }\r\n\r\n private _skipCount = 0;\r\n private _page = 0;\r\n set page(value: number) {\r\n if (value === this._page) return;\r\n\r\n this._page = value;\r\n this.get();\r\n }\r\n get page(): number {\r\n return this._page;\r\n }\r\n\r\n private _sortKey = '';\r\n set sortKey(value: string) {\r\n this._sortKey = value;\r\n this.get();\r\n }\r\n get sortKey(): string {\r\n return this._sortKey;\r\n }\r\n\r\n private _sortOrder = '';\r\n set sortOrder(value: string) {\r\n this._sortOrder = value;\r\n this.get();\r\n }\r\n get sortOrder(): string {\r\n return this._sortOrder;\r\n }\r\n\r\n private _query$ = new ReplaySubject<QueryParamsType>(1);\r\n\r\n get query$(): Observable<QueryParamsType> {\r\n return this._query$\r\n .asObservable()\r\n .pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));\r\n }\r\n\r\n private _isLoading$ = new BehaviorSubject(false);\r\n\r\n private destroy$ = new Subject();\r\n\r\n private delay: MonoTypeOperatorFunction<QueryParamsType>;\r\n\r\n get isLoading$(): Observable<boolean> {\r\n return this._isLoading$.asObservable();\r\n }\r\n\r\n get = () => {\r\n this.resetPageWhenUnchanged();\r\n this.next();\r\n };\r\n\r\n getWithoutPageReset = () => {\r\n this.next();\r\n };\r\n\r\n constructor(injector: Injector) {\r\n const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);\r\n this.delay = delay ? debounceTime(delay) : tap();\r\n this.get();\r\n }\r\n\r\n hookToQuery<T>(\r\n streamCreatorCallback: QueryStreamCreatorCallback<T, QueryParamsType>,\r\n ): Observable<PagedResultDto<T>> {\r\n this._isLoading$.next(true);\r\n\r\n return this.query$.pipe(\r\n switchMap(query => streamCreatorCallback(query).pipe(catchError(() => of(null)))),\r\n filter(Boolean),\r\n tap(() => this._isLoading$.next(false)),\r\n shareReplay<any>({ bufferSize: 1, refCount: true }),\r\n takeUntil(this.destroy$),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n }\r\n\r\n private resetPageWhenUnchanged() {\r\n const skipCount = this._page * this._maxResultCount;\r\n\r\n if (skipCount === this._skipCount) {\r\n this._page = 0;\r\n this._skipCount = 0;\r\n } else this._skipCount = skipCount;\r\n }\r\n\r\n private next() {\r\n this._query$.next({\r\n filter: this._filter || undefined,\r\n maxResultCount: this._maxResultCount,\r\n skipCount: this._page * this._maxResultCount,\r\n sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,\r\n } as any as QueryParamsType);\r\n }\r\n}\r\n\r\nexport type QueryStreamCreatorCallback<T, QueryParamsType = ABP.PageQueryParams> = (\r\n query: QueryParamsType,\r\n) => Observable<PagedResultDto<T>>;\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { NavigationStart } from '@angular/router';\r\nimport { of, Subject, timer } from 'rxjs';\r\nimport { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { LOADER_DELAY } from '../tokens/lodaer-delay.token';\r\nimport { InternalStore } from '../utils/internal-store-utils';\r\nimport { RouterEvents } from './router-events.service';\r\n\r\nexport interface RouterWaitState {\r\n loading: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RouterWaitService {\r\n private store = new InternalStore<RouterWaitState>({ loading: false });\r\n private destroy$ = new Subject();\r\n private delay: number;\r\n constructor(private routerEvents: RouterEvents, injector: Injector) {\r\n this.delay = injector.get(LOADER_DELAY, 500);\r\n this.updateLoadingStatusOnNavigationEvents();\r\n }\r\n\r\n private updateLoadingStatusOnNavigationEvents() {\r\n this.routerEvents\r\n .getAllNavigationEvents()\r\n .pipe(\r\n map(event => event instanceof NavigationStart),\r\n switchMap(condition =>\r\n condition\r\n ? this.delay === 0\r\n ? of(true)\r\n : timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))\r\n : of(false),\r\n ),\r\n tap(() => this.destroy$.next()),\r\n )\r\n .subscribe(status => {\r\n this.setLoading(status);\r\n });\r\n }\r\n\r\n getLoading() {\r\n return this.store.state.loading;\r\n }\r\n\r\n getLoading$() {\r\n return this.store.sliceState(({ loading }) => loading);\r\n }\r\n\r\n updateLoading$() {\r\n return this.store.sliceUpdate(({ loading }) => loading);\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.store.patch({ loading });\r\n }\r\n}\r\n","import { Injectable, TrackByFunction } from '@angular/core';\r\nimport { O } from 'ts-toolbelt';\r\n\r\nexport const trackBy =\r\n <T = any>(key: keyof T): TrackByFunction<T> =>\r\n (_, item) =>\r\n item[key];\r\n\r\nexport const trackByDeep =\r\n <T = any>(\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n ...keys: T extends object ? O.Paths<T> : never\r\n ): TrackByFunction<T> =>\r\n (_, item) =>\r\n keys.reduce((acc, key) => acc[key], item);\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TrackByService<ItemType = any> {\r\n by = trackBy;\r\n\r\n byDeep = trackByDeep;\r\n}\r\n","import { ViewContainerRef } from '@angular/core';\r\n\r\nexport abstract class ContainerStrategy {\r\n constructor(public containerRef: ViewContainerRef) {}\r\n\r\n abstract getIndex(): number;\r\n\r\n prepare(): void {}\r\n}\r\n\r\nexport class ClearContainerStrategy extends ContainerStrategy {\r\n getIndex(): number {\r\n return 0;\r\n }\r\n\r\n prepare() {\r\n this.containerRef.clear();\r\n }\r\n}\r\n\r\nexport class InsertIntoContainerStrategy extends ContainerStrategy {\r\n constructor(containerRef: ViewContainerRef, private index: number) {\r\n super(containerRef);\r\n }\r\n\r\n getIndex() {\r\n return Math.min(Math.max(0, this.index), this.containerRef.length);\r\n }\r\n}\r\n\r\nexport const CONTAINER_STRATEGY = {\r\n Clear(containerRef: ViewContainerRef) {\r\n return new ClearContainerStrategy(containerRef);\r\n },\r\n Append(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, containerRef.length);\r\n },\r\n Prepend(containerRef: ViewContainerRef) {\r\n return new InsertIntoContainerStrategy(containerRef, 0);\r\n },\r\n Insert(containerRef: ViewContainerRef, index: number) {\r\n return new InsertIntoContainerStrategy(containerRef, index);\r\n },\r\n};\r\n","export abstract class ContentSecurityStrategy {\r\n constructor(public nonce?: string) {}\r\n\r\n abstract applyCSP(element: HTMLScriptElement | HTMLStyleElement): void;\r\n}\r\n\r\nexport class LooseContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor(nonce: string) {\r\n super(nonce);\r\n }\r\n\r\n applyCSP(element: HTMLScriptElement | HTMLStyleElement) {\r\n element.setAttribute('nonce', this.nonce);\r\n }\r\n}\r\n\r\nexport class NoContentSecurityStrategy extends ContentSecurityStrategy {\r\n constructor() {\r\n super();\r\n }\r\n\r\n applyCSP(_: HTMLScriptElement | HTMLStyleElement) {}\r\n}\r\n\r\nexport const CONTENT_SECURITY_STRATEGY = {\r\n Loose(nonce: string) {\r\n return new LooseContentSecurityStrategy(nonce);\r\n },\r\n None() {\r\n return new NoContentSecurityStrategy();\r\n },\r\n};\r\n","import { ContentSecurityStrategy, CONTENT_SECURITY_STRATEGY } from './content-security.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport type ElementOptions<T extends HTMLScriptElement | HTMLStyleElement = any> = Partial<{\r\n [key in keyof T]: T[key];\r\n}>;\r\n\r\nexport abstract class ContentStrategy<T extends HTMLScriptElement | HTMLStyleElement = any> {\r\n constructor(\r\n public content: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected contentSecurityStrategy: ContentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(),\r\n protected options: ElementOptions<T> = {},\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n insertElement(): T {\r\n const element = this.createElement();\r\n\r\n if (this.options && Object.keys(this.options).length > 0) {\r\n Object.keys(this.options).forEach(key => (element[key] = this.options[key]));\r\n }\r\n\r\n this.contentSecurityStrategy.applyCSP(element);\r\n this.domStrategy.insertElement(element);\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleContentStrategy extends ContentStrategy<HTMLStyleElement> {\r\n createElement(): HTMLStyleElement {\r\n const element = document.createElement('style');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class ScriptContentStrategy extends ContentStrategy<HTMLScriptElement> {\r\n createElement(): HTMLScriptElement {\r\n const element = document.createElement('script');\r\n element.textContent = this.content;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const CONTENT_STRATEGY = {\r\n AppendScriptToBody(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);\r\n },\r\n AppendScriptToHead(content: string, options?: ElementOptions<HTMLScriptElement>) {\r\n return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n AppendStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);\r\n },\r\n PrependStyleToHead(content: string, options?: ElementOptions<HTMLStyleElement>) {\r\n return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);\r\n },\r\n};\r\n","import { ComponentRef, TemplateRef, Type } from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models';\r\n\r\nexport abstract class ContextStrategy<T = any> {\r\n constructor(public context: Partial<ContextType<T>>) {}\r\n\r\n setContext(componentRef?: ComponentRef<InferredInstanceOf<T>>): Partial<ContextType<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class NoContextStrategy<\r\n T extends Type<any> | TemplateRef<any> = any,\r\n> extends ContextStrategy<T> {\r\n constructor() {\r\n super(undefined);\r\n }\r\n}\r\n\r\nexport class ComponentContextStrategy<T extends Type<any> = any> extends ContextStrategy<T> {\r\n setContext(componentRef: ComponentRef<InferredInstanceOf<T>>): Partial<InferredInstanceOf<T>> {\r\n Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));\r\n componentRef.changeDetectorRef.detectChanges();\r\n return this.context;\r\n }\r\n}\r\n\r\nexport class TemplateContextStrategy<T extends TemplateRef<any> = any> extends ContextStrategy<T> {\r\n setContext(): Partial<InferredContextOf<T>> {\r\n return this.context;\r\n }\r\n}\r\n\r\nexport const CONTEXT_STRATEGY = {\r\n None<T extends Type<any> | TemplateRef<any> = any>() {\r\n return new NoContextStrategy<T>();\r\n },\r\n Component<T extends Type<any> = any>(context: Partial<InferredInstanceOf<T>>) {\r\n return new ComponentContextStrategy<T>(context);\r\n },\r\n Template<T extends TemplateRef<any> = any>(context: Partial<InferredContextOf<T>>) {\r\n return new TemplateContextStrategy<T>(context);\r\n },\r\n};\r\n\r\ntype ContextType<T> = T extends Type<infer U> | TemplateRef<infer U> ? U : never;\r\n","import { Observable, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { fromLazyLoad } from '../utils';\r\nimport { CrossOriginStrategy, CROSS_ORIGIN_STRATEGY } from './cross-origin.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport abstract class LoadingStrategy<T extends HTMLScriptElement | HTMLLinkElement = any> {\r\n element: T;\r\n\r\n constructor(\r\n public path: string,\r\n protected domStrategy: DomStrategy = DOM_STRATEGY.AppendToHead(),\r\n protected crossOriginStrategy: CrossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous(),\r\n ) {}\r\n\r\n abstract createElement(): T;\r\n\r\n createStream<E extends Event>(): Observable<E> {\r\n this.element = this.createElement();\r\n\r\n return of(null).pipe(\r\n switchMap(() => fromLazyLoad<E>(this.element, this.domStrategy, this.crossOriginStrategy)),\r\n );\r\n }\r\n}\r\n\r\nexport class ScriptLoadingStrategy extends LoadingStrategy<HTMLScriptElement> {\r\n constructor(src: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(src, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLScriptElement {\r\n const element = document.createElement('script');\r\n element.src = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport class StyleLoadingStrategy extends LoadingStrategy<HTMLLinkElement> {\r\n constructor(href: string, domStrategy?: DomStrategy, crossOriginStrategy?: CrossOriginStrategy) {\r\n super(href, domStrategy, crossOriginStrategy);\r\n }\r\n\r\n createElement(): HTMLLinkElement {\r\n const element = document.createElement('link');\r\n element.rel = 'stylesheet';\r\n element.href = this.path;\r\n\r\n return element;\r\n }\r\n}\r\n\r\nexport const LOADING_STRATEGY = {\r\n AppendScriptToBody(src: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.None(),\r\n );\r\n },\r\n AppendAnonymousScriptToBody(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToBody(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n AppendAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.AppendToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousScriptToHead(src: string, integrity?: string) {\r\n return new ScriptLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n PrependAnonymousStyleToHead(src: string, integrity?: string) {\r\n return new StyleLoadingStrategy(\r\n src,\r\n DOM_STRATEGY.PrependToHead(),\r\n CROSS_ORIGIN_STRATEGY.Anonymous(integrity),\r\n );\r\n },\r\n};\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n Injector,\r\n TemplateRef,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { InferredContextOf, InferredInstanceOf } from '../models/utility';\r\nimport { ContainerStrategy, CONTAINER_STRATEGY } from './container.strategy';\r\nimport { ContextStrategy, CONTEXT_STRATEGY } from './context.strategy';\r\nimport { DomStrategy, DOM_STRATEGY } from './dom.strategy';\r\n\r\nexport abstract class ProjectionStrategy<T = any> {\r\n constructor(public content: T) {}\r\n\r\n abstract injectContent(injector: Injector): ComponentRefOrEmbeddedViewRef<T>;\r\n}\r\n\r\nexport class ComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n this.containerStrategy.prepare();\r\n\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const factory = resolver.resolveComponentFactory<InferredInstanceOf<T>>(this.content);\r\n\r\n const componentRef = this.containerStrategy.containerRef.createComponent(\r\n factory,\r\n this.containerStrategy.getIndex(),\r\n injector,\r\n );\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class RootComponentProjectionStrategy<T extends Type<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n component: T,\r\n private contextStrategy: ContextStrategy = CONTEXT_STRATEGY.None(),\r\n private domStrategy: DomStrategy = DOM_STRATEGY.AppendToBody(),\r\n ) {\r\n super(component);\r\n }\r\n\r\n injectContent(injector: Injector) {\r\n const appRef = injector.get(ApplicationRef);\r\n const resolver = injector.get(ComponentFactoryResolver) as ComponentFactoryResolver;\r\n const componentRef = resolver\r\n .resolveComponentFactory<InferredInstanceOf<T>>(this.content)\r\n .create(injector);\r\n\r\n this.contextStrategy.setContext(componentRef);\r\n\r\n appRef.attachView(componentRef.hostView);\r\n const element: HTMLElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\r\n this.domStrategy.insertElement(element);\r\n\r\n return componentRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport class TemplateProjectionStrategy<T extends TemplateRef<any>> extends ProjectionStrategy<T> {\r\n constructor(\r\n templateRef: T,\r\n private containerStrategy: ContainerStrategy,\r\n private contextStrategy = CONTEXT_STRATEGY.None(),\r\n ) {\r\n super(templateRef);\r\n }\r\n\r\n injectContent() {\r\n this.containerStrategy.prepare();\r\n\r\n const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(\r\n this.content,\r\n this.contextStrategy.context,\r\n this.containerStrategy.getIndex(),\r\n );\r\n embeddedViewRef.detectChanges();\r\n\r\n return embeddedViewRef as ComponentRefOrEmbeddedViewRef<T>;\r\n }\r\n}\r\n\r\nexport const PROJECTION_STRATEGY = {\r\n AppendComponentToBody<T extends Type<unknown>>(\r\n component: T,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new RootComponentProjectionStrategy<T>(\r\n component,\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n AppendTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Append(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n PrependComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n PrependTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Prepend(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n ProjectComponentToContainer<T extends Type<unknown>>(\r\n component: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredInstanceOf<T>>,\r\n ) {\r\n return new ComponentProjectionStrategy<T>(\r\n component,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Component(context),\r\n );\r\n },\r\n ProjectTemplateToContainer<T extends TemplateRef<unknown>>(\r\n templateRef: T,\r\n containerRef: ViewContainerRef,\r\n context?: Partial<InferredContextOf<T>>,\r\n ) {\r\n return new TemplateProjectionStrategy<T>(\r\n templateRef,\r\n CONTAINER_STRATEGY.Clear(containerRef),\r\n context && CONTEXT_STRATEGY.Template(context),\r\n );\r\n },\r\n};\r\n\r\ntype ComponentRefOrEmbeddedViewRef<T> = T extends Type<infer U>\r\n ? ComponentRef<U>\r\n : T extends TemplateRef<infer C>\r\n ? EmbeddedViewRef<C>\r\n : never;\r\n","import { InjectionToken, inject } from '@angular/core';\r\nimport { EnvironmentService } from '../services/environment.service';\r\n\r\nexport const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken<() => void>(\r\n 'NAVIGATE_TO_MANAGE_PROFILE',\r\n {\r\n providedIn: 'root',\r\n factory: () => {\r\n const environment = inject(EnvironmentService);\r\n\r\n return () => {\r\n window.open(\r\n `${environment.getEnvironment().oAuthConfig.issuer}/Account/Manage?returnUrl=${\r\n window.location.href\r\n }`,\r\n '_self',\r\n );\r\n };\r\n },\r\n },\r\n);\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface MinAgeError {\r\n minAge: {\r\n age: number;\r\n };\r\n}\r\n\r\nexport interface MinAgeOptions {\r\n age?: number;\r\n}\r\n\r\nexport function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): MinAgeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidMinAge(control.value, age) ? null : { minAge: { age } };\r\n };\r\n}\r\n\r\nfunction isValidMinAge(value: string | number, minAge: number) {\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() - minAge);\r\n date.setHours(23, 59, 59, 999);\r\n\r\n return Number(new Date(value)) <= date.valueOf();\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface CreditCardError {\r\n creditCard: true;\r\n}\r\n\r\nexport function validateCreditCard(): ValidatorFn {\r\n return (control: AbstractControl): CreditCardError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidCreditCard(String(control.value)) ? null : { creditCard: true };\r\n };\r\n}\r\n\r\nfunction isValidCreditCard(value: string): boolean {\r\n value = value.replace(/[ -]/g, '');\r\n\r\n if (!/^[0-9]{13,19}$/.test(value)) return false;\r\n\r\n let checksum = 0;\r\n let multiplier = 1;\r\n\r\n for (let i = value.length; i > 0; i--) {\r\n const digit = Number(value[i - 1]) * multiplier;\r\n checksum += (digit % 10) + ~~(digit / 10);\r\n\r\n multiplier = (multiplier * 2) % 3;\r\n }\r\n\r\n return checksum % 10 === 0;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RangeError {\r\n range: {\r\n max: number;\r\n min: number;\r\n };\r\n}\r\n\r\nexport interface RangeOptions {\r\n maximum?: number;\r\n minimum?: number;\r\n}\r\n\r\nexport function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): RangeError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = Number(control.value);\r\n return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum);\r\n };\r\n}\r\n\r\nfunction getMaxError(value: number, max: number, min: number): RangeError {\r\n return value > max ? { range: { max, min } } : null;\r\n}\r\n\r\nfunction getMinError(value: number, min: number, max: number): RangeError {\r\n return value < min ? { range: { min, max } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface RequiredError {\r\n required: true;\r\n}\r\n\r\nexport interface RequiredOptions {\r\n allowEmptyStrings?: boolean;\r\n}\r\n\r\nexport function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): RequiredError | null => {\r\n return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true };\r\n };\r\n}\r\n\r\nfunction isValidRequired(value: any, allowEmptyStrings: boolean): boolean {\r\n if (value || value === 0 || value === false) return true;\r\n\r\n if (allowEmptyStrings && value === '') return true;\r\n\r\n return false;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface StringLengthError {\r\n maxlength?: {\r\n requiredLength: number;\r\n };\r\n minlength?: {\r\n requiredLength: number;\r\n };\r\n}\r\n\r\nexport interface StringLengthOptions {\r\n maximumLength?: number;\r\n minimumLength?: number;\r\n}\r\n\r\nexport function validateStringLength({\r\n maximumLength = Infinity,\r\n minimumLength = 0,\r\n}: StringLengthOptions = {}): ValidatorFn {\r\n return (control: AbstractControl): StringLengthError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n const value = String(control.value);\r\n\r\n return getMinLengthError(value, minimumLength) || getMaxLengthError(value, maximumLength);\r\n };\r\n}\r\n\r\nfunction getMaxLengthError(value: string, requiredLength: number): StringLengthError {\r\n return value.length > requiredLength ? { maxlength: { requiredLength } } : null;\r\n}\r\n\r\nfunction getMinLengthError(value: string, requiredLength: number): StringLengthError {\r\n return value.length < requiredLength ? { minlength: { requiredLength } } : null;\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport interface UrlError {\r\n url: true;\r\n}\r\n\r\nexport function validateUrl(): ValidatorFn {\r\n return (control: AbstractControl): UrlError | null => {\r\n if (['', null, undefined].indexOf(control.value) > -1) return null;\r\n\r\n return isValidUrl(control.value) ? null : { url: true };\r\n };\r\n}\r\n\r\nfunction isValidUrl(value: string): boolean {\r\n if (/^http(s)?:\\/\\/[^/]/.test(value) || /^ftp:\\/\\/[^/]/.test(value)) {\r\n const a = document.createElement('a');\r\n a.href = value;\r\n return !!a.host;\r\n }\r\n\r\n return false;\r\n}\r\n","import { Validators } from '@angular/forms';\r\nimport { validateMinAge } from './age.validator';\r\nimport { validateCreditCard } from './credit-card.validator';\r\nimport { validateRange } from './range.validator';\r\nimport { validateRequired } from './required.validator';\r\nimport { validateStringLength } from './string-length.validator';\r\nimport { validateUrl } from './url.validator';\r\nexport * from './age.validator';\r\nexport * from './credit-card.validator';\r\nexport * from './range.validator';\r\nexport * from './required.validator';\r\nexport * from './string-length.validator';\r\nexport * from './url.validator';\r\n\r\nexport const AbpValidators = {\r\n creditCard: validateCreditCard,\r\n emailAddress: () => Validators.email,\r\n minAge: validateMinAge,\r\n range: validateRange,\r\n required: validateRequired,\r\n stringLength: validateStringLength,\r\n url: validateUrl,\r\n};\r\n","// export * from './lib/handlers';\r\nexport * from './lib/abstracts';\r\nexport * from './lib/components';\r\nexport * from './lib/constants';\r\nexport * from './lib/core.module';\r\nexport * from './lib/directives';\r\nexport * from './lib/enums';\r\nexport * from './lib/guards';\r\nexport * from './lib/interceptors';\r\nexport * from './lib/localization.module';\r\nexport * from './lib/models';\r\nexport * from './lib/pipes';\r\nexport * from './lib/proxy/pages/abp/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/api-exploring';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending';\r\nexport * from './lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy';\r\nexport * from './lib/proxy/volo/abp/http/modeling';\r\nexport * from './lib/proxy/volo/abp/localization';\r\nexport * from './lib/proxy/volo/abp/models';\r\nexport * from './lib/services';\r\nexport * from './lib/strategies';\r\nexport * from './lib/tokens';\r\nexport * from './lib/utils';\r\nexport * from './lib/validators';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}