@valtimo/dossier 12.10.2 → 12.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/esm2022/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +4 -3
  2. package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +11 -4
  3. package/esm2022/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.mjs +9 -4
  4. package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +51 -15
  5. package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +46 -18
  6. package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +26 -18
  7. package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +33 -15
  8. package/esm2022/lib/constants/case-status.constants.mjs +3 -3
  9. package/esm2022/lib/dossier.module.mjs +17 -5
  10. package/esm2022/lib/models/dossier-parameters.model.mjs +1 -1
  11. package/esm2022/lib/services/dossier-column.service.mjs +5 -1
  12. package/esm2022/lib/services/dossier-list-case-tag.service.mjs +59 -0
  13. package/esm2022/lib/services/dossier-parameter.service.mjs +29 -2
  14. package/esm2022/lib/services/index.mjs +2 -1
  15. package/fesm2022/valtimo-dossier.mjs +260 -65
  16. package/fesm2022/valtimo-dossier.mjs.map +1 -1
  17. package/lib/components/dossier-detail/dossier-detail.component.d.ts +3 -1
  18. package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
  19. package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts +1 -0
  20. package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts.map +1 -1
  21. package/lib/components/dossier-list/dossier-list.component.d.ts +10 -3
  22. package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
  23. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts +10 -3
  24. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -1
  25. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +7 -4
  26. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
  27. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +7 -2
  28. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
  29. package/lib/constants/case-status.constants.d.ts.map +1 -1
  30. package/lib/dossier.module.d.ts +1 -1
  31. package/lib/dossier.module.d.ts.map +1 -1
  32. package/lib/models/dossier-parameters.model.d.ts +1 -0
  33. package/lib/models/dossier-parameters.model.d.ts.map +1 -1
  34. package/lib/services/dossier-column.service.d.ts.map +1 -1
  35. package/lib/services/dossier-list-case-tag.service.d.ts +21 -0
  36. package/lib/services/dossier-list-case-tag.service.d.ts.map +1 -0
  37. package/lib/services/dossier-parameter.service.d.ts +2 -0
  38. package/lib/services/dossier-parameter.service.d.ts.map +1 -1
  39. package/lib/services/index.d.ts +1 -0
  40. package/lib/services/index.d.ts.map +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-dossier.mjs","sources":["../../../../projects/valtimo/dossier/src/lib/services/dossier-bulk-assign.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-column.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-parameter.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-assignee.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-pagination.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-search.service.ts","../../../../projects/valtimo/dossier/src/lib/models/candidate-user.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget-content.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget-display.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget.model.ts","../../../../projects/valtimo/dossier/src/lib/models/dossier-detail-tab.model.ts","../../../../projects/valtimo/dossier/src/lib/models/dossier-parameters.model.ts","../../../../projects/valtimo/dossier/src/lib/models/search.model.ts","../../../../projects/valtimo/dossier/src/lib/models/tab-api.model.ts","../../../../projects/valtimo/dossier/src/lib/models/tabs.model.ts","../../../../projects/valtimo/dossier/src/lib/models/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/summary/summary.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/summary/summary.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/progress/progress.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/progress/progress.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/audit/audit.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/audit/audit.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/not-found/not-found.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/not-found/not-found.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/documents/documents.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/documents/documents.component.html","../../../../projects/valtimo/dossier/src/lib/permissions/dossier-detail.permissions.ts","../../../../projects/valtimo/dossier/src/lib/permissions/index.ts","../../../../projects/valtimo/dossier/src/lib/services/notes.service.ts","../../../../projects/valtimo/dossier/src/lib/components/note-modal/note-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/note-modal/note-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/notes/notes.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/notes/notes.component.html","../../../../projects/valtimo/dossier/src/lib/constants/tab.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-tab-token.ts","../../../../projects/valtimo/dossier/src/lib/constants/dossier-list.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-status.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-widget.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/custom-case-widget-token.ts","../../../../projects/valtimo/dossier/src/lib/constants/dossier-detail-layout.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/formio/formio.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/formio/formio.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.permissions.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.service.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.component.html","../../../../projects/valtimo/dossier/src/lib/services/dossier-tab-api.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-tab.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-status.service.ts","../../../../projects/valtimo/dossier/src/lib/services/start-modal.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-widgets-api.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-widgets-layout.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-detail-layout.service.ts","../../../../projects/valtimo/dossier/src/lib/services/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-assign-user/dossier-assign-user.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-assign-user/dossier-assign-user.component.html","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/tab-translate.pipe.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/dossier-detail.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/dossier-detail.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-list-actions/dossier-list-actions.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-list-actions/dossier-list-actions.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-list/dossier-list.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-list/dossier-list.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-update/dossier-update.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-update/dossier-update.component.html","../../../../projects/valtimo/dossier/src/lib/dossier-routing.module.ts","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/tab-translate-pipe.module.ts","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/index.ts","../../../../projects/valtimo/dossier/src/lib/pipes/index.ts","../../../../projects/valtimo/dossier/src/lib/dossier.module.ts","../../../../projects/valtimo/dossier/src/public_api.ts","../../../../projects/valtimo/dossier/src/valtimo-dossier.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {BehaviorSubject, Observable, take} from 'rxjs';\nimport {CandidateUser} from '../models';\n\n@Injectable()\nexport class DossierBulkAssignService {\n public readonly candidateUsers$ = new BehaviorSubject<CandidateUser[]>([]);\n\n private _valtimoEndpointUri: string;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/document/`;\n }\n\n public bulkAssign(assigneeId: string, documentIds: string[]): Observable<void> {\n return this.http.post<void>(`${this._valtimoEndpointUri}assign`, {assigneeId, documentIds});\n }\n\n public loadCandidateUsers(documentIds: string[]): void {\n this.http\n .post<CandidateUser[]>(`${this._valtimoEndpointUri}candidate-user`, {documentIds})\n .pipe(take(1))\n .subscribe({\n next: (candidateUsers: CandidateUser[]) => {\n this.candidateUsers$.next(candidateUsers);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {map, Observable} from 'rxjs';\nimport {CaseListColumn, DocumentService} from '@valtimo/document';\nimport {ListField} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Injectable()\nexport class DossierColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n getDefinitionColumns(\n documentDefinitionName: string\n ): Observable<{columns: Array<DefinitionColumn>; hasApiConfig: boolean}> {\n const config = this.configService.config;\n const customDefinitionTable = config.customDefinitionTables[documentDefinitionName];\n const defaultDefinitionTable = config.defaultDefinitionTable;\n\n return this.documentService.getCaseList(documentDefinitionName).pipe(\n map(caseListColumns => {\n const apiCaseListColumns =\n (config.featureToggles?.caseListColumn ?? true) &&\n caseListColumns &&\n Array.isArray(caseListColumns) &&\n caseListColumns.length > 0 &&\n this.mapCaseListColumnsToDefinitionColumns(caseListColumns);\n\n return {\n columns: customDefinitionTable || apiCaseListColumns || defaultDefinitionTable,\n hasApiConfig: !!apiCaseListColumns,\n };\n })\n );\n }\n\n hasEnvironmentConfig(documentDefinitionName: string): boolean {\n return !!this.configService.config?.customDefinitionTables[documentDefinitionName];\n }\n\n mapDefinitionColumnsToListFields(\n columns: Array<DefinitionColumn>,\n hasEnvColumnConfig: boolean,\n hasApiColumnConfig: boolean\n ): Array<ListField> {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key:\n hasEnvColumnConfig || !hasApiColumnConfig ? column.propertyName : column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n\n private mapCaseListColumnsToDefinitionColumns(\n caseListColumns: Array<CaseListColumn>\n ): Array<DefinitionColumn> {\n return caseListColumns.map(caseListColumn => ({\n translationKey: caseListColumn.key,\n sortable: caseListColumn.sortable,\n default: caseListColumn.defaultSort,\n viewType: this.getViewType(caseListColumn.displayType.type),\n propertyName: this.getPropertyName(caseListColumn.path),\n ...(caseListColumn.title && {title: caseListColumn.title}),\n ...(caseListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: caseListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: caseListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n }));\n }\n\n private getViewType(caseListColumnDisplayType: string): string {\n switch (caseListColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return caseListColumnDisplayType;\n }\n }\n\n private getPropertyName(caseListColumnPath: string): string {\n return caseListColumnPath.replace('doc:', '$.').replace('case:', '');\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {DossierParameters} from '../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n Subscription,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AssigneeFilter, Direction, SearchFieldValues} from '@valtimo/config';\nimport {Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class DossierParameterService implements OnDestroy {\n private readonly _dossierParameters$ = new BehaviorSubject<DossierParameters>(undefined);\n private readonly _searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n\n public get dossierParameters$(): Observable<DossierParameters> {\n return this._dossierParameters$.asObservable();\n }\n\n public get searchFieldValues$(): Observable<SearchFieldValues> {\n return this._searchFieldValues$.asObservable();\n }\n\n public get querySearchParams$(): Observable<SearchFieldValues> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params.search) {\n return JSON.parse(atob(params.search)) as SearchFieldValues;\n }\n return {};\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryPaginationParams$(): Observable<Pagination | null> {\n return this.route.queryParams.pipe(\n map(params => {\n const paramsCopy = {...params} as any as DossierParameters;\n\n return paramsCopy.collectionSize\n ? {\n collectionSize: Number(paramsCopy.collectionSize),\n page: Number(paramsCopy.page),\n size: Number(paramsCopy.size),\n ...(paramsCopy.isSorting === 'true' && {\n sort: {\n isSorting: !!(paramsCopy.isSorting === 'true'),\n state: {\n name: paramsCopy.sortStateName,\n direction: paramsCopy.sortStateDirection as Direction,\n },\n },\n }),\n }\n : null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryAssigneeParam$(): Observable<AssigneeFilter> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.assignee) {\n return params?.assignee?.toUpperCase();\n }\n return '';\n }),\n distinctUntilChanged((prevParams, currParams) => prevParams === currParams)\n );\n }\n\n public get queryStatusParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.status) {\n return JSON.parse(atob(params.status)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n private _dossierParametersSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {\n this.setDossierParameters();\n }\n\n public ngOnDestroy(): void {\n this._dossierParametersSubscription?.unsubscribe();\n }\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._searchFieldValues$.next(searchFieldValues);\n }\n\n public setSearchParameters(searchParameters: SearchFieldValues): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if (Object.keys(searchParameters || {}).length > 0) {\n this._dossierParameters$.next({\n ...dossierParameters,\n search: this.objectToBase64(searchParameters),\n });\n } else {\n if (dossierParameters?.search) {\n delete dossierParameters.search;\n }\n this._dossierParameters$.next(dossierParameters);\n }\n });\n }\n\n public setPaginationParameters(pagination: Pagination): void {\n if (pagination) {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._dossierParameters$.next({\n ...dossierParameters,\n size: `${pagination.size}`,\n collectionSize: `${pagination.collectionSize}`,\n page: `${pagination.page}`,\n isSorting: pagination.sort?.isSorting ? 'true' : 'false',\n ...(pagination.sort?.state?.name && {sortStateName: `${pagination.sort?.state.name}`}),\n ...(pagination.sort?.state?.direction && {\n sortStateDirection: `${pagination.sort?.state.direction}`,\n }),\n });\n });\n }\n }\n\n public setAssigneeParameter(assigneeFilter: AssigneeFilter): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._dossierParameters$.next({\n ...dossierParameters,\n assignee: assigneeFilter.toLowerCase(),\n });\n });\n }\n\n public setStatusParameter(statusKeyParameters: string[]): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((statusKeyParameters || []).length > 0) {\n this._dossierParameters$.next({\n ...dossierParameters,\n status: this.objectToBase64(statusKeyParameters),\n });\n } else {\n if (dossierParameters?.status) {\n delete dossierParameters.status;\n }\n this._dossierParameters$.next(dossierParameters);\n }\n });\n }\n\n public clearSearchFieldValues(): void {\n this._searchFieldValues$.next({});\n }\n\n public clearParameters(): void {\n this._dossierParameters$.next(undefined);\n this.router.navigate([this.getUrlWithoutParams()], {replaceUrl: true});\n }\n\n private openDossierParametersSubscription(): void {\n this._dossierParametersSubscription = this.dossierParameters$.subscribe(dossierParams => {\n this.router.navigate([this.getUrlWithoutParams()], {\n queryParams: dossierParams,\n replaceUrl: true,\n });\n });\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private setDossierParameters(): void {\n combineLatest([\n this.queryPaginationParams$,\n this.querySearchParams$,\n this.queryAssigneeParam$,\n this.queryStatusParams$,\n ])\n .pipe(take(1))\n .subscribe(([paginationParams, searchParams, assigneeParams, statusParams]) => {\n if (paginationParams) this.setPaginationParameters(paginationParams);\n if (assigneeParams) this.setAssigneeParameter(assigneeParams);\n if (statusParams) this.setStatusParameter(statusParams);\n if (searchParams) {\n this.setSearchParameters(searchParams);\n this.setSearchFieldValues(searchParams);\n }\n\n this.openDossierParametersSubscription();\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {Documents, SpecifiedDocuments} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, take} from 'rxjs';\nimport {DossierColumnService} from '../services';\n\n@Injectable()\nexport class DossierListService {\n private readonly _documentDefinitionName$ = new BehaviorSubject<string>('');\n\n private readonly _hasEnvColumnConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(documentDefinitionName =>\n this.dossierColumnService.hasEnvironmentConfig(documentDefinitionName)\n )\n );\n\n private readonly _checkRefresh$ = new BehaviorSubject<boolean>(false);\n private readonly _forceRefresh$ = new BehaviorSubject<boolean>(false);\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$.asObservable();\n }\n\n public get hasEnvColumnConfig$(): Observable<boolean> {\n return this._hasEnvColumnConfig$;\n }\n\n get checkRefresh$(): Observable<boolean> {\n return this._checkRefresh$.asObservable();\n }\n\n get forceRefresh$(): Observable<boolean> {\n return this._forceRefresh$.asObservable();\n }\n\n constructor(private readonly dossierColumnService: DossierColumnService) {}\n\n public setDocumentDefinitionName(documentDefinitionName: string): void {\n this._documentDefinitionName$.next(documentDefinitionName);\n }\n\n public mapDocuments(\n documents: Documents | SpecifiedDocuments,\n hasEnvColumnConfig: boolean,\n hasApiColumnConfig: boolean\n ) {\n if (hasEnvColumnConfig || !hasApiColumnConfig) {\n return (documents as Documents).content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n });\n }\n\n return (documents as SpecifiedDocuments).content.reduce((acc, curr) => {\n const propsObject = {id: curr.id, locked: curr.locked};\n curr.items?.forEach(item => {\n propsObject[item.key] = item.value;\n });\n return [...acc, propsObject];\n }, []);\n }\n\n public forceRefresh(): void {\n this._forceRefresh$.pipe(take(1)).subscribe(forceRefresh => {\n this._forceRefresh$.next(!forceRefresh);\n });\n }\n\n public checkRefresh(): void {\n this._checkRefresh$.pipe(take(1)).subscribe(checkRefresh => {\n this._checkRefresh$.next(!checkRefresh);\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Subject, map, Observable, switchMap, take, tap, combineLatest} from 'rxjs';\nimport {DossierListService} from './dossier-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {AssigneeFilter, ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField} from '@valtimo/components';\nimport {DossierParameterService} from './dossier-parameter.service';\n\n@Injectable()\nexport class DossierListAssigneeService {\n private readonly ASSIGNEE_KEY = 'assigneeFullName';\n private readonly _defaultAssigneeFilter$ = new Subject<AssigneeFilter>();\n private readonly _assigneeFilter$ = new BehaviorSubject<AssigneeFilter | null>(null);\n\n public readonly canHaveAssignee$: Observable<boolean> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettings(documentDefinitionName)\n ),\n map(caseSettings => caseSettings?.canHaveAssignee),\n tap(canHaveAssignee => {\n const visibleTabs: AssigneeFilter[] = this.configService.config.visibleDossierListTabs;\n\n this._defaultAssigneeFilter$.next(\n !!visibleTabs && canHaveAssignee ? visibleTabs[0] : 'ALL'\n );\n })\n );\n\n public get assigneeFilter$(): Observable<AssigneeFilter> {\n return this._assigneeFilter$.asObservable();\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly dossierListService: DossierListService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n public resetAssigneeFilter(): void {\n combineLatest([this.dossierParameterService.queryAssigneeParam$, this._defaultAssigneeFilter$])\n .pipe(take(1))\n .subscribe(([assigneeParam, defaultAssigneeFilter]) => {\n if (assigneeParam) {\n this._assigneeFilter$.next(assigneeParam);\n this.dossierParameterService.setAssigneeParameter(assigneeParam);\n } else {\n this._assigneeFilter$.next(defaultAssigneeFilter);\n this.dossierParameterService.setAssigneeParameter(defaultAssigneeFilter);\n }\n });\n }\n\n public setAssigneeFilter(assigneeFilter: AssigneeFilter): void {\n this._assigneeFilter$.next(assigneeFilter);\n this.dossierParameterService.setAssigneeParameter(assigneeFilter);\n }\n\n public filterAssigneeColumns(\n columns: Array<DefinitionColumn>,\n canHaveAssignee: boolean\n ): Array<DefinitionColumn> {\n return columns.filter(column => {\n if (column?.key === this.ASSIGNEE_KEY && !canHaveAssignee) {\n return false;\n }\n return true;\n });\n }\n\n public addAssigneeListField(\n columns: Array<DefinitionColumn>,\n listFields: Array<ListField>,\n canHaveAssignee: boolean\n ): Array<ListField> {\n return [\n ...listFields,\n ...(canHaveAssignee && !columns.find(column => column.propertyName === this.ASSIGNEE_KEY)\n ? [\n {\n key: this.ASSIGNEE_KEY,\n label: this.translateService.instant(`fieldLabels.${this.ASSIGNEE_KEY}`),\n sortable: true,\n viewType: 'string',\n },\n ]\n : []),\n ];\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {Direction, SortState} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierService {\n private readonly definitions: any;\n private readonly _refreshDocument$ = new BehaviorSubject<null>(null);\n\n constructor(private readonly configService: ConfigService) {\n this.definitions = configService.config.definitions;\n }\n\n public getImplementationEnvironmentDefinitions(name: string) {\n return this.definitions.dossiers.find(definition => definition.name === name);\n }\n\n public getInitialSortState(columns: Array<DefinitionColumn>): SortState {\n const defaultColumn = columns.find(column => column.default);\n const isSorting = defaultColumn?.default === 'ASC' || defaultColumn?.default === 'DESC';\n const direction: Direction =\n typeof !defaultColumn || defaultColumn.default === 'boolean'\n ? 'DESC'\n : (defaultColumn.default as any as Direction);\n\n return {\n isSorting,\n state: {\n name: defaultColumn ? defaultColumn.propertyName : columns[0].propertyName,\n direction,\n },\n };\n }\n\n public get refreshDocument$(): Observable<any> {\n return this._refreshDocument$.asObservable();\n }\n\n public refresh(): void {\n this._refreshDocument$.next(null);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, map, Observable, take, tap} from 'rxjs';\nimport {Pagination} from '@valtimo/components';\nimport {NGXLogger} from 'ngx-logger';\nimport {DossierParameterService} from './dossier-parameter.service';\nimport {DefinitionColumn} from '@valtimo/config';\nimport {DossierService} from './dossier.service';\nimport {Documents, SortState, SpecifiedDocuments} from '@valtimo/document';\n\n@Injectable()\nexport class DossierListPaginationService {\n private readonly DEFAULT_PAGINATION: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n sort: undefined,\n };\n\n private readonly _pagination$ = new BehaviorSubject<Pagination | undefined>(undefined);\n\n private readonly _paginationCopy$ = this._pagination$.pipe(\n filter(pagination => !!pagination),\n map(pagination => pagination && JSON.parse(JSON.stringify(pagination))),\n tap(pagination => this.dossierParameterService.setPaginationParameters(pagination))\n );\n\n get pagination$(): Observable<Pagination> {\n return this._paginationCopy$;\n }\n\n constructor(\n private readonly logger: NGXLogger,\n private readonly dossierParameterService: DossierParameterService,\n private readonly dossierService: DossierService\n ) {}\n\n pageChange(newPage: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.page !== newPage) {\n this.logger.debug(`Page change: ${newPage}`);\n this._pagination$.next({...pagination, page: newPage});\n }\n });\n }\n\n pageSizeChange(newPageSize: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.size !== newPageSize) {\n const amountOfAvailablePages = Math.ceil(+pagination.collectionSize / newPageSize);\n const newPage =\n amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;\n\n this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);\n this._pagination$.next({...pagination, size: newPageSize, page: newPage});\n }\n });\n }\n\n sortChanged(newSortState: SortState): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {\n this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);\n this._pagination$.next({...pagination, sort: newSortState});\n }\n });\n }\n\n setPage(newPageNumber: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n this._pagination$.next({...pagination, page: newPageNumber});\n });\n }\n\n setCollectionSize(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.collectionSize !== documents.totalElements) {\n this._pagination$.next({...pagination, collectionSize: documents.totalElements});\n }\n });\n }\n\n checkPage(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination) {\n const amountOfItems = documents.totalElements;\n const amountOfPages = Math.ceil(amountOfItems / pagination.size);\n const currentPage = pagination.page;\n\n if (!!amountOfItems && !currentPage) {\n this._pagination$.next({...pagination, page: 1});\n return;\n }\n\n if (currentPage > amountOfPages) {\n this._pagination$.next({...pagination, page: amountOfPages});\n }\n }\n });\n }\n\n clearPagination(): void {\n this._pagination$.next(undefined);\n }\n\n setPagination(columns: Array<DefinitionColumn>): void {\n this.dossierParameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n const defaultPagination: Pagination = this.getDefaultPagination(columns);\n const paginationToUse = queryPaginationParams || defaultPagination;\n\n this.logger.debug(`Set pagination: ${JSON.stringify(paginationToUse)}`);\n\n this._pagination$.next(paginationToUse);\n });\n }\n\n private getDefaultPagination(columns: Array<DefinitionColumn>): Pagination {\n const defaultSortState = this.dossierService.getInitialSortState(columns);\n\n return {\n ...this.DEFAULT_PAGINATION,\n sort: defaultSortState,\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, switchMap} from 'rxjs';\nimport {SearchField, SearchFieldValues, SearchFilter, SearchFilterRange} from '@valtimo/config';\nimport {DossierListService} from './dossier-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {DossierParameterService} from './dossier-parameter.service';\n\n@Injectable()\nexport class DossierListSearchService {\n private readonly _documentSearchFields$: Observable<Array<SearchField> | null> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n )\n );\n\n get documentSearchFields$(): Observable<Array<SearchField> | null> {\n return this._documentSearchFields$;\n }\n\n constructor(\n private readonly dossierListService: DossierListService,\n private readonly documentService: DocumentService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n search(searchFieldValues: SearchFieldValues): void {\n this.dossierParameterService.setSearchFieldValues(searchFieldValues || {});\n this.dossierParameterService.setSearchParameters(searchFieldValues);\n this.dossierListService.checkRefresh();\n }\n\n mapSearchValuesToFilters(values: SearchFieldValues): Array<SearchFilter | SearchFilterRange> {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue});\n } else {\n filters.push({key: valueKey, values: [searchValue]});\n }\n });\n\n return filters;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface CandidateUser {\n id: string;\n firstName: string;\n lastName: string;\n}\n\nexport {CandidateUser};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CaseWidgetDisplayType} from './case-widget-display.model';\nimport {FieldsCaseWidgetValue} from './case-widget.model';\n\ninterface WidgetFieldsContent {\n columns: FieldsCaseWidgetValue[][];\n}\n\ntype CollectionCaseWidgetFieldWidth = 'full' | 'half';\n\ninterface CollectionCaseWidgetField {\n key: string;\n title: string;\n value: string;\n width: CollectionCaseWidgetFieldWidth;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface CollectionCaseWidgetTitle {\n value: string;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface WidgetCollectionContent {\n collection: string;\n defaultPageSize: number;\n title: CollectionCaseWidgetTitle;\n fields: CollectionCaseWidgetField[];\n}\n\ninterface CollectionWidgetResolvedField {\n key: string;\n title: string;\n value: string;\n width: CollectionCaseWidgetFieldWidth;\n hideWhenEmpty: boolean;\n}\n\ninterface CollectionCaseWidgetCardData {\n title: string;\n fields: {[key: string]: string};\n hidden?: boolean;\n}\n\ninterface WidgetTableContent {\n columns: FieldsCaseWidgetValue[];\n collection: string;\n firstColumnAsTitle: boolean;\n defaultPageSize: number;\n}\n\ninterface WidgetCustomContent {\n componentKey: string;\n}\n\ninterface WidgetFormioContent {\n formDefinitionName: string;\n}\n\ntype WidgetContentProperties =\n | WidgetFieldsContent\n | WidgetTableContent\n | WidgetCustomContent\n | WidgetFormioContent\n | WidgetCollectionContent;\n\nexport {\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetFormioContent,\n WidgetTableContent,\n WidgetCollectionContent,\n CollectionCaseWidgetField,\n CollectionCaseWidgetFieldWidth,\n CollectionWidgetResolvedField,\n CollectionCaseWidgetTitle,\n CollectionCaseWidgetCardData,\n};\n","enum CaseWidgetDisplayTypeKey {\n TEXT = 'text',\n BOOLEAN = 'boolean',\n CURRENCY = 'currency',\n DATE = 'date',\n DATE_TIME = 'datetime',\n ENUM = 'enum',\n NUMBER = 'number',\n PERCENT = 'percent',\n}\n\ninterface CaseWidgetTextDisplayType {\n type: CaseWidgetDisplayTypeKey.TEXT;\n ellipsisCharacterLimit: number;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetBooleanDisplayType {\n type: CaseWidgetDisplayTypeKey.BOOLEAN;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetCurrencyDisplayType {\n type: CaseWidgetDisplayTypeKey.CURRENCY;\n currencyCode?: string;\n display?: string;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetDateDisplayType {\n type: CaseWidgetDisplayTypeKey.DATE;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetDateTimeDisplayType {\n type: CaseWidgetDisplayTypeKey.DATE_TIME;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetEnumDisplayType {\n type: CaseWidgetDisplayTypeKey.ENUM;\n values: {\n [key: string]: string;\n };\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetNumberDisplayType {\n type: CaseWidgetDisplayTypeKey.NUMBER;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetPercentDisplayType {\n type: CaseWidgetDisplayTypeKey.PERCENT;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ntype CaseWidgetDisplayType =\n | CaseWidgetTextDisplayType\n | CaseWidgetBooleanDisplayType\n | CaseWidgetCurrencyDisplayType\n | CaseWidgetDateDisplayType\n | CaseWidgetDateTimeDisplayType\n | CaseWidgetEnumDisplayType\n | CaseWidgetNumberDisplayType\n | CaseWidgetPercentDisplayType;\n\nexport {\n CaseWidgetBooleanDisplayType,\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CaseWidgetNumberDisplayType,\n CaseWidgetPercentDisplayType,\n CaseWidgetTextDisplayType,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CaseWidgetDisplayType} from '.';\nimport {Type} from '@angular/core';\nimport {\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetTableContent,\n} from './case-widget-content.model';\n\nenum CaseWidgetType {\n FIELDS = 'fields',\n TABLE = 'table',\n CUSTOM = 'custom',\n COLLECTION = 'collection',\n FORMIO = 'formio',\n}\n\ntype CaseWidgetWidth = 1 | 2 | 3 | 4;\ntype CollectionFieldWidth = 'half' | 'full';\n\ninterface CaseWidgetAction {\n name?: string;\n processDefinitionKey: string;\n}\n\ninterface BasicCaseWidget {\n type: CaseWidgetType;\n title: string;\n width: CaseWidgetWidth;\n highContrast: boolean;\n key: string;\n properties: WidgetContentProperties;\n actions?: CaseWidgetAction[];\n}\n\ninterface FieldsCaseWidgetValue {\n key: string;\n title: string;\n value: string;\n ellipsisCharacterLimit?: number;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface FieldsCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.FIELDS;\n properties: WidgetFieldsContent;\n}\n\ninterface CollectionCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.COLLECTION;\n properties: WidgetCollectionContent;\n}\n\ninterface TableCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.TABLE;\n properties: WidgetTableContent;\n}\n\ninterface CustomCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.CUSTOM;\n properties: WidgetCustomContent;\n}\n\ninterface FormioCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.FORMIO;\n properties: {\n formDefinitionName: string;\n };\n}\n\ntype CaseWidget =\n | FieldsCaseWidget\n | CollectionCaseWidget\n | CustomCaseWidget\n | TableCaseWidget\n | FormioCaseWidget;\n\ntype CaseWidgetWithUuid = CaseWidget & {\n uuid: string;\n};\n\ntype FormioCaseWidgetWidgetWithUuid = FormioCaseWidget & {\n uuid: string;\n};\n\ninterface CaseWidgetsRes {\n caseDefinitionName: string;\n key: string;\n widgets: BasicCaseWidget[];\n}\n\ninterface CaseWidgetWidthsPx {\n [uuid: string]: number;\n}\n\ninterface CaseWidgetContentHeightsPx {\n [uuid: string]: number;\n}\n\ninterface CaseWidgetContentHeightsPxWithContainerWidth {\n [uuid: string]: {\n containerWidth: number;\n height: number;\n };\n}\n\ninterface CaseWidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface CaseWidgetPackResultItem {\n width: number;\n height: number;\n x: number;\n y: number;\n item: CaseWidgetConfigurationBin;\n}\n\ninterface CaseWidgetPackResult {\n height: number;\n width: number;\n items: CaseWidgetPackResultItem[];\n}\n\ninterface MaxRectsResult extends CaseWidgetConfigurationBin {\n x: number;\n y: number;\n}\n\ninterface CaseWidgetPackResultItemsByRow {\n [rowY: string]: CaseWidgetPackResultItem[];\n}\n\ninterface CaseWidgetXY {\n x: number;\n y: number;\n}\n\ninterface CustomCaseWidgetConfig {\n [componentKey: string]: Type<any>;\n}\n\nexport {\n BasicCaseWidget,\n CaseWidget,\n CaseWidgetAction,\n CaseWidgetConfigurationBin,\n CaseWidgetContentHeightsPx,\n CaseWidgetContentHeightsPxWithContainerWidth,\n CaseWidgetPackResult,\n CaseWidgetsRes,\n CaseWidgetType,\n CaseWidgetWidth,\n CaseWidgetWidthsPx,\n CaseWidgetWithUuid,\n CaseWidgetXY,\n CollectionFieldWidth,\n FieldsCaseWidget,\n FieldsCaseWidgetValue,\n CollectionCaseWidget,\n CustomCaseWidgetConfig,\n CustomCaseWidget,\n TableCaseWidget,\n CaseWidgetPackResultItem,\n CaseWidgetPackResultItemsByRow,\n FormioCaseWidgetWidgetWithUuid,\n MaxRectsResult,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Type} from '@angular/core';\n\nenum DefaultTabs {\n summary = 'summary',\n progress = 'progress',\n audit = 'audit',\n documents = 'documents',\n notes = 'notes',\n}\n\ntype DefaultTabComponents = {\n [key in DefaultTabs]: Type<any>;\n};\n\ninterface CaseTabConfig {\n [tabKey: string]: Type<any>;\n}\n\nexport {DefaultTabs, DefaultTabComponents, CaseTabConfig};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface PaginationParameters {\n collectionSize: string;\n page: string;\n size: string;\n sortStateName: string;\n sortStateDirection: string;\n isSorting: 'true' | 'false';\n}\n\ninterface DossierParameters extends PaginationParameters {\n search?: string;\n assignee?: string;\n status?: string;\n}\n\nexport {DossierParameters};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype CaseSearchFieldDataType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\n\ntype CaseSearchFieldFieldType = 'single' | 'multiple' | 'range';\n\ntype CaseSearchFieldMatchType = 'exact' | 'like';\n\ninterface CaseSearchField {\n key: string;\n datatype: CaseSearchFieldDataType;\n fieldtype: CaseSearchFieldFieldType;\n matchtype: CaseSearchFieldMatchType;\n}\n\nexport {\n CaseSearchFieldDataType,\n CaseSearchFieldFieldType,\n CaseSearchFieldMatchType,\n CaseSearchField,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum ApiTabType {\n STANDARD = 'standard',\n FORMIO = 'formio',\n CUSTOM = 'custom',\n WIDGETS = 'widgets',\n}\n\ninterface ApiTabItem {\n name: string | null;\n key: string;\n type: ApiTabType;\n contentKey: string;\n createdOn?: string;\n createdBy?: string;\n showTasks?: boolean;\n}\n\ninterface TabSelectItem {\n icon: string;\n title: string;\n type: ApiTabType;\n disabled: boolean;\n disabledTooltipTranslationKey?: string;\n}\n\nexport {ApiTabType, ApiTabItem, TabSelectItem};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ComponentFactoryResolver, ComponentRef, ViewContainerRef} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BehaviorSubject, combineLatest, filter, Observable, take} from 'rxjs';\n\nexport interface TabLoader<T_TAB extends Tab> {\n tabs: T_TAB[];\n\n initial(tabName?: string): void;\n\n load(tabToLoad: T_TAB): void;\n}\n\nexport class TabLoaderImpl implements TabLoader<TabImpl> {\n private readonly _activeTab$ = new BehaviorSubject<TabImpl | null>(null);\n private readonly _tabs: TabImpl[] = null;\n private readonly _componentFactoryResolver: ComponentFactoryResolver = null;\n private readonly _viewContainerRef: ViewContainerRef = null;\n private _activeComponent: ComponentRef<any> = null;\n private _activeTab: TabImpl = null;\n private _router: Router;\n private _route: ActivatedRoute;\n\n constructor(\n tabs: TabImpl[],\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n router: Router,\n route: ActivatedRoute\n ) {\n this._tabs = tabs;\n this._componentFactoryResolver = componentFactoryResolver;\n this._viewContainerRef = viewContainerRef;\n this._router = router;\n this._route = route;\n }\n\n public get tabs(): TabImpl[] {\n return this._tabs;\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public initial(tabName?: string): void {\n let initialTab!: TabImpl;\n\n if (tabName) {\n initialTab =\n this._tabs.find(tab => tab.name === tabName) ||\n this._tabs.find(tab => tab.contentKey === tabName);\n }\n\n if (!initialTab) {\n initialTab = this._tabs[0] || null;\n }\n\n this.load(initialTab);\n }\n\n public load(newTab: TabImpl): void {\n if (newTab !== this._activeTab) {\n this._tabs.forEach(tab => tab.deactivate());\n this.replaceView(newTab);\n this.replaceUrlState(newTab);\n this.setActive(newTab);\n }\n }\n\n public refreshView() {\n this.replaceView(this._activeTab);\n }\n\n private replaceView(tab: TabImpl): void {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(tab.component);\n this._viewContainerRef.clear();\n if (this._activeTab !== null) {\n this._activeComponent.destroy();\n }\n this._activeComponent = this._viewContainerRef.createComponent(componentFactory);\n }\n\n public replaceUrlState(nextTab: TabImpl): void {\n combineLatest([this._route.params, this._route.queryParams])\n .pipe(take(1))\n .subscribe(([params, queryParams]) => {\n const currentUrl = this._router.url;\n const currentDocumentId = params?.documentId;\n const urlBeforeDocumentId = currentUrl.split(currentDocumentId)[0];\n\n this._router.navigate([`${urlBeforeDocumentId}${currentDocumentId}/${nextTab.name}`], {\n ...(nextTab.name === 'documents' && {\n queryParams,\n }),\n replaceUrl: true,\n });\n });\n }\n\n private setActive(tab: TabImpl): void {\n tab.activate();\n this._activeTab = tab;\n this._activeTab$.next(tab);\n }\n}\n\nexport interface Tab {\n name: string;\n sequence: number;\n component: any;\n title: string;\n contentKey: string;\n\n activate(): void;\n\n deactivate(): void;\n\n isActive(): boolean;\n}\n\nexport class TabImpl implements Tab {\n private readonly _name: string;\n private readonly _sequence: number;\n private readonly _component: any;\n private readonly _contentKey: string;\n private readonly _title: string;\n private _active = false;\n private _showTasks = false;\n\n constructor(\n name: string,\n sequence: number,\n component: any,\n contentKey?: string,\n title?: string,\n showTasks: boolean = false\n ) {\n this._name = name;\n this._sequence = sequence;\n this._component = component;\n\n if (contentKey) this._contentKey = contentKey;\n if (title) this._title = title;\n if (showTasks) this._showTasks = showTasks;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get sequence(): number {\n return this._sequence;\n }\n\n public get component(): any {\n return this._component;\n }\n\n public get contentKey(): string {\n return this._contentKey;\n }\n\n public get title(): string {\n return this._title;\n }\n\n public get showTasks(): boolean {\n return this._showTasks;\n }\n\n public activate(): void {\n this._active = true;\n }\n\n public deactivate(): void {\n this._active = false;\n }\n\n public isActive(): boolean {\n return this._active;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './candidate-user.model';\nexport * from './case-widget-content.model';\nexport * from './case-widget-display.model';\nexport * from './case-widget.model';\nexport * from './dossier-detail-tab.model';\nexport * from './dossier-parameters.model';\nexport * from './search.model';\nexport * from './tab-api.model';\nexport * from './tabs.model';\nexport * from './dossier-detail-layout.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Document, DocumentService} from '@valtimo/document';\nimport {FormService} from '@valtimo/form';\nimport {FormioOptionsImpl, ValtimoFormioOptions} from '@valtimo/components';\nimport moment from 'moment';\nimport {FormioForm} from '@formio/angular';\nimport {Subscription} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-summary',\n templateUrl: './summary.component.html',\n styleUrls: ['./summary.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierDetailTabSummaryComponent implements OnInit, OnDestroy {\n public readonly documentDefinitionName: string;\n public readonly documentId!: string;\n\n public document!: Document;\n private snapshot: ParamMap;\n public moment!: typeof moment;\n public formDefinition: FormioForm = null;\n public options: ValtimoFormioOptions;\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService\n ) {\n this.snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = this.snapshot.get('documentDefinitionName') || '';\n this.documentId = this.snapshot.get('documentId') || '';\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n }\n\n public ngOnInit(): void {\n this.moment = moment;\n this.init();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n public init(): void {\n this._subscriptions.add(\n this.documentService.getDocument(this.documentId).subscribe(document => {\n this.document = document;\n })\n );\n\n this._subscriptions.add(\n this.formService\n .getFormDefinitionByNamePreFilled(`${this.documentDefinitionName}.summary`, this.documentId)\n .subscribe(formDefinition => {\n this.formDefinition = formDefinition;\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row py-4\">\n <div class=\"col-12\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {DocumentService, LoadedValue, ProcessDocumentInstance} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {ListItem} from 'carbon-components-angular/dropdown';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.css'],\n})\nexport class DossierDetailTabProgressComponent {\n private readonly processDocumentInstances$: Observable<Array<ProcessDocumentInstance>> =\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.findProcessDocumentInstances(params.get('documentId'))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.map(processDocumentInstance => ({\n ...processDocumentInstance,\n startedOn: new Date(processDocumentInstance.startedOn),\n }))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.sort((a, b) =>\n a.active === b.active ? b.startedOn.getTime() - a.startedOn.getTime() : a.active ? -1 : 1\n )\n ),\n tap(processDocumentInstances => {\n if (processDocumentInstances.length > 0) {\n this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);\n }\n })\n );\n\n public readonly processInstanceItems$: Observable<LoadedValue<Array<ListItem>>> =\n this.processDocumentInstances$.pipe(\n map(processDocumentInstances =>\n processDocumentInstances.map((processDocumentInstance, index) => ({\n processInstanceId: processDocumentInstance.id.processInstanceId,\n content: processDocumentInstance.processName || '-',\n selected: index === 0,\n }))\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n public readonly selectedProcessInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedProcessInstance$: Observable<LoadedValue<ProcessDocumentInstance>> =\n combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(\n map(([processDocumentInstances, selectedProcessInstanceId]) =>\n processDocumentInstances.find(\n instance => instance.id.processInstanceId === selectedProcessInstanceId\n )\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {}\n\n public loadProcessInstance(processInstanceId: string) {\n if (!!processInstanceId) {\n this.selectedProcessInstanceId$.next(processInstanceId);\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport moment from 'moment';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, AuditEvent} from '@valtimo/document';\nimport {NgxSpinnerService} from 'ngx-spinner';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-audit',\n templateUrl: './audit.component.html',\n styleUrls: ['./audit.component.css'],\n})\nexport class DossierDetailTabAuditComponent implements OnInit {\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n\n public timelineItems: TimelineItem[];\n private readonly documentId: string;\n public pagination: any;\n private defaultAuditPage = 0;\n private currentAuditPage: number;\n\n constructor(\n private route: ActivatedRoute,\n private documentService: DocumentService,\n private spinnerService: NgxSpinnerService\n ) {\n this.spinnerService.show('auditSpinner');\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n }\n\n private static getTranslationKey(auditEvent: AuditEvent) {\n const classNameArray = auditEvent.className.split('.');\n const eventName = classNameArray[classNameArray.length - 1];\n return 'events.' + eventName;\n }\n\n ngOnInit() {\n this.loadAuditPage(this.defaultAuditPage);\n }\n\n public loadAuditPage(pageNumber: number) {\n this.documentService.getAuditLog(this.documentId, pageNumber).subscribe(page => {\n const timelineItems = [];\n page.content.forEach(auditRecord => {\n const occurredOn = moment(auditRecord.metaData.occurredOn);\n const fromNow = occurredOn.fromNow();\n timelineItems.push(\n new TimelineItemImpl(\n occurredOn.format('DD MMM YYYY'),\n occurredOn.format('HH:mm'),\n auditRecord.metaData.user,\n fromNow,\n DossierDetailTabAuditComponent.getTranslationKey(auditRecord.auditEvent),\n auditRecord.auditEvent\n )\n );\n });\n this.timelineItems = timelineItems;\n this.spinnerService.hide('auditSpinner');\n this.pagination = page;\n this.pagination.number += 1;\n });\n }\n\n public onChangePagination(page) {\n this.paginationClicked.emit(page);\n this.currentAuditPage = page - 1;\n this.loadAuditPage(this.currentAuditPage);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"timelineItems\">\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n</div>\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n<div\n class=\"pagination-holder audit-pagination bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n <br />\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate: {number: pagination.content.length})\n : ('list.showingResults'\n | translate: {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n <div class=\"col-8\">\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-dossier-detail-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n})\nexport class DossierDetailTabNotFoundComponent {}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-no-results\n [title]=\"'dossier.tabs.componentNotFound' | translate\"\n [description]=\"'dossier.tabs.componentNotFoundMessage' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n></valtimo-no-results>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, FileSortService, RelatedFile} from '@valtimo/document';\nimport {DownloadService, ResourceDto, UploadProviderService} from '@valtimo/resource';\nimport {ToastrService} from 'ngx-toastr';\nimport {map, switchMap} from 'rxjs/operators';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService} from '@valtimo/config';\nimport {PromptService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-s3-documents',\n templateUrl: './s3-documents.component.html',\n styleUrls: ['./s3-documents.component.scss'],\n})\nexport class DossierDetailTabS3DocumentsComponent implements OnInit {\n public readonly documentId: string;\n public readonly documentDefinitionName: string;\n public readonly maxFileSize: number = this.configService?.config?.caseFileSizeUploadLimitMB || 5;\n public readonly acceptedFiles: string =\n this.configService?.config?.caseFileUploadAcceptedFiles || null;\n public fields = [\n {key: 'fileName', label: 'File name'},\n {key: 'sizeInBytes', label: 'Size in bytes'},\n {key: 'createdOn', label: 'Created on', viewType: 'date'},\n {key: 'createdBy', label: 'Created by'},\n ];\n public actions = [\n {\n columnName: '',\n iconClass: 'mdi mdi-open-in-new',\n callback: this.downloadDocument.bind(this),\n },\n {\n columnName: '',\n iconClass: 'mdi mdi-delete',\n callback: this.removeRelatedFile.bind(this),\n },\n ];\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n private readonly refetch$ = new BehaviorSubject<null>(null);\n public relatedFiles$: Observable<Array<RelatedFile>> = this.refetch$.pipe(\n switchMap(() =>\n combineLatest([\n this.documentService.getDocument(this.documentId),\n this.translateService.stream('key'),\n ])\n ),\n map(([document]) => {\n const relatedFiles = document?.relatedFiles || [];\n const translatedFiles = relatedFiles.map(file => ({\n ...file,\n createdBy: file.createdBy || this.translateService.instant('list.automaticallyGenerated'),\n }));\n\n return translatedFiles || [];\n }),\n map(relatedFiles => this.fileSortService.sortRelatedFilesByDateDescending(relatedFiles))\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService,\n private readonly toastrService: ToastrService,\n private readonly uploadProviderService: UploadProviderService,\n private readonly downloadService: DownloadService,\n private readonly promptService: PromptService,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly fileSortService: FileSortService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n }\n\n ngOnInit(): void {\n this.refetchDocuments();\n }\n\n fileSelected(file: File): void {\n this.uploading$.next(true);\n\n this.uploadProviderService\n .uploadFile(file, this.documentDefinitionName, this.documentId)\n .pipe(\n switchMap(resourceFile =>\n this.documentService.assignResource(this.documentId, resourceFile.data.resourceId)\n )\n )\n .subscribe({\n next: () => {\n this.toastrService.success('Successfully uploaded document to dossier');\n this.refetchDocuments();\n this.uploading$.next(false);\n },\n error: () => {\n this.toastrService.error('Failed to upload document to dossier');\n this.uploading$.next(false);\n },\n });\n }\n\n downloadDocument(relatedFile: RelatedFile): void {\n this.uploadProviderService\n .getResource(relatedFile.fileId)\n .subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n removeRelatedFile(relatedFile: RelatedFile) {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('dossier.deleteConfirmation.title'),\n bodyText: this.translateService.instant('dossier.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('dossier.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('dossier.deleteConfirmation.delete'),\n cancelMdiIcon: 'cancel',\n confirmMdiIcon: 'delete',\n cancelButtonType: 'secondary',\n confirmButtonType: 'primary',\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.documentService.removeResource(this.documentId, relatedFile.fileId).subscribe(\n () => {\n this.toastrService.success('Successfully removed document from dossier');\n this.refetchDocuments();\n },\n () => {\n this.toastrService.error('Failed to remove document from dossier');\n }\n );\n },\n });\n }\n\n private refetchDocuments(): void {\n this.refetch$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [viewMode]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this dossier' | translate }}\n </h5>\n </div>\n </valtimo-list>\n</valtimo-widget>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ConfigService,\n UploadProvider,\n ValtimoConfig,\n ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,\n} from '@valtimo/config';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {DossierDetailTabNotFoundComponent} from '../not-found/not-found.component';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-documents',\n templateUrl: './documents.component.html',\n})\nexport class DossierDetailTabDocumentsComponent implements OnInit, AfterViewInit, OnDestroy {\n @HostBinding('class.tab--no-margin') noMargin = false;\n @HostBinding('class.tab--no-min-height') noMinHeight = false;\n\n @ViewChild('externalDocumentsTab', {read: ViewContainerRef})\n private _externalDocumentsTab: ViewContainerRef;\n\n public readonly openZaakUploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly s3UploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly documentenApiUploadProvider$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n @Optional()\n @Inject(ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN)\n private readonly zgwDocumentenApiDocumentsComponent: Type<any>\n ) {}\n\n public ngOnInit(): void {\n this.setConfig(this.configService.config);\n }\n\n public ngAfterViewInit(): void {\n this._subscriptions.add(\n this.documentenApiUploadProvider$.subscribe(uploadProviderIsDocumentenApi => {\n this.noMargin = uploadProviderIsDocumentenApi;\n this.noMinHeight = uploadProviderIsDocumentenApi;\n\n if (!uploadProviderIsDocumentenApi) return;\n\n this._externalDocumentsTab.createComponent(\n this.zgwDocumentenApiDocumentsComponent || DossierDetailTabNotFoundComponent\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private setConfig(config: ValtimoConfig): void {\n const uploadProvider = config.uploadProvider;\n this.openZaakUploadProvider$.next(uploadProvider === UploadProvider.OPEN_ZAAK);\n this.s3UploadProvider$.next(config.uploadProvider === UploadProvider.S3);\n this.documentenApiUploadProvider$.next(uploadProvider === UploadProvider.DOCUMENTEN_API);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-dossier-detail-tab-s3-documents\n *ngIf=\"(s3UploadProvider$ | async) || (openZaakUploadProvider$ | async)\"\n></valtimo-dossier-detail-tab-s3-documents>\n\n<ng-template #externalDocumentsTab></ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n add = 'create',\n assign = 'assign',\n claim = 'claim',\n delete = 'delete',\n edit = 'modify',\n view = 'view',\n}\n\nenum DOSSIER_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n note = 'com.ritense.note.domain.Note',\n jsonSchemaDocumentDefinition = 'com.ritense.document.domain.impl.JsonSchemaDocumentDefinition',\n}\n\nconst CAN_CLAIM_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.claim,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_ADD_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_DELETE_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_EDIT_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.edit,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_ASSIGN_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_CREATE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_DELETE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n CAN_VIEW_CASE_PERMISSION,\n CAN_CREATE_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dossier-detail.permissions';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService, ConnectorModal, Page} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {Note, NoteCreateRequest, NoteUpdateRequest} from '../models/notes.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotesService {\n private readonly VALTIMO_API_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<ConnectorModal>('add');\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {}\n\n getDocumentNotes(documentId: string, params?: any): Observable<Page<Note>> {\n return this.http.get<Page<Note>>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n {params}\n );\n }\n\n createDocumentNote(documentId: string, request: NoteCreateRequest): Observable<Note> {\n return this.http.post<Note>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n request\n );\n }\n\n updateNote(noteId: string, request: NoteUpdateRequest): Observable<Note> {\n return this.http.put<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`, request);\n }\n\n deleteNote(noteId: string): Observable<Note> {\n return this.http.delete<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`);\n }\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<ConnectorModal> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: ConnectorModal): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {VModalComponent, ModalService} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {NotesService} from '../../services/notes.service';\n\n@Component({\n selector: 'valtimo-note-modal',\n templateUrl: './note-modal.component.html',\n styleUrls: ['./note-modal.component.scss'],\n})\nexport class NoteModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('noteModal') noteModal: VModalComponent;\n @Input() customData;\n @Output() createNoteEvent: EventEmitter<any> = new EventEmitter();\n @Output() editNoteEvent: EventEmitter<any> = new EventEmitter();\n\n readonly disabled$!: Observable<boolean>;\n readonly valid$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n readonly formData$ = new BehaviorSubject<any>(null);\n readonly modalType$: Observable<string> = this.notesService.modalType$;\n\n showSubscription!: Subscription;\n hideSubscription!: Subscription;\n\n readonly returnToFirstStepSubject$ = new Subject<boolean>();\n\n constructor(\n private readonly notesService: NotesService,\n private readonly modalService: ModalService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n }\n\n hide(): void {\n this.formData$.next(null);\n this.valid$.next(false);\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n save(): void {\n combineLatest([this.valid$, this.formData$])\n .pipe(take(1))\n .subscribe(([valid, formData]) => {\n if (valid) {\n this.createNoteEvent.emit(formData);\n }\n });\n }\n\n emitNoteData(): void {\n combineLatest([this.valid$, this.formData$, this.modalType$])\n .pipe(take(1))\n .subscribe(([valid, formData, modalType]) => {\n if (valid) {\n if (modalType === 'add') {\n this.createNoteEvent.emit(formData);\n } else {\n this.editNoteEvent.emit({formData, data: this.customData});\n }\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.notesService.showModal$.subscribe(() => {\n this.show();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.notesService.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.notesService.modalType$.pipe(take(1)).subscribe(() => {\n this.modalService.openModal(this.noteModal);\n });\n }\n\n formValueChange(data: any): void {\n this.formData$.next(data);\n this.setValid(data);\n }\n\n private setValid(data: any): void {\n this.valid$.next(!!data.content);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #noteModal\n *ngIf=\"{disabled: disabled$ | async, valid: valid$ | async, modalType: modalType$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"add-note-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add' ? 'dossier.notes.addNote' : 'dossier.notes.modifyNote') | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'document.cancel' | translate }}\n </v-button>\n <ng-container\n *ngTemplateOutlet=\"\n obs.modalType === 'add' ? addNoteButton : editNoteButton;\n context: {obs: obs}\n \"\n ></ng-container>\n </div>\n </div>\n</v-modal>\n\n<ng-template #addNoteButton let-obs=\"obs\">\n <v-button\n (clickEvent)=\"emitNoteData()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n </v-button>\n</ng-template>\n<ng-template #editNoteButton let-obs=\"obs\">\n <v-button\n [disabled]=\"obs.disabled || !obs.valid\"\n (clickEvent)=\"emitNoteData()\"\n mdiIcon=\"pencil\"\n type=\"success\"\n >\n {{ 'dossier.notes.modifyNote' | translate }}\n </v-button>\n</ng-template>\n\n<ng-template #form>\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n class=\"notes-input\"\n type=\"textarea\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'dossier.notes.input.content' | translate\"\n name=\"content\"\n [fullWidth]=\"true\"\n [rows]=\"10\"\n [defaultValue]=\"customData?.summaryTranslationKey || ''\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, HostBinding, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {Pagination, PromptService, TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport moment from 'moment';\nimport {ToastrService} from 'ngx-toastr';\nimport {BehaviorSubject, combineLatest, map, Observable, of} from 'rxjs';\nimport {switchMap, take, tap} from 'rxjs/operators';\nimport {Note} from '../../../../models/notes.model';\nimport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../../../permissions';\nimport {NotesService} from '../../../../services/notes.service';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class DossierDetailTabNotesComponent implements OnInit {\n @HostBinding('class.tab--no-margin') noMargin = true;\n\n public timelineItems: TimelineItem[] = [];\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly fields$ = new BehaviorSubject<Array<{key: string; label: string}>>([]);\n public readonly customData$ = new BehaviorSubject<object>({});\n\n private readonly documentId$ = this.route.params.pipe(map(params => params.documentId));\n public readonly actions = [\n {id: 'edit', label: 'Edit', icon: 'mdi-pencil', callback: this.editNote.bind(this)},\n {id: 'delete', label: 'Delete', icon: 'mdi-delete', callback: this.deleteNote.bind(this)},\n ];\n\n public readonly canAdd$: Observable<boolean> = this.documentId$.pipe(\n switchMap((identifier: string) =>\n this.permissionService.requestPermission(CAN_ADD_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier,\n })\n )\n );\n\n public readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n public readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n public readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: (currentPage.page ?? 0) + 1}) as Pagination\n )\n );\n\n public readonly notes$: Observable<Array<Note>> = combineLatest([\n this.documentId$,\n this.currentPageAndSize$,\n this.notesService.refresh$,\n this.notesService.refresh$,\n ]).pipe(\n tap(() => (this.timelineItems = [])),\n switchMap(([documentId, currentPage]) =>\n this.notesService.getDocumentNotes(documentId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n ),\n tap((res: Page<Note>) => {\n this.timelineItems = [];\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n this.pageSizes$.next({...sizes, collectionSize: res.totalElements});\n });\n }),\n switchMap(res =>\n combineLatest([\n of(res),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_DELETE_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_EDIT_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ])\n ),\n map(combinedResults => {\n const permissionResults = combinedResults.filter((curr, index) => index !== 0);\n const halfIndex = Math.ceil(permissionResults.length / 2);\n const deletePermissions = permissionResults.slice(0, halfIndex);\n const editPermissions = permissionResults.slice(halfIndex);\n\n return combinedResults[0].content.map((note: Note, index) => {\n const noteCreatedDate = moment(note.createdDate).locale(this.translateService.currentLang);\n this.timelineItems.push(\n new TimelineItemImpl(\n noteCreatedDate.format('DD MMM YYYY'),\n noteCreatedDate.format('HH:mm'),\n note.createdByUserFullName,\n noteCreatedDate.fromNow(),\n note.content,\n {},\n {id: note.id},\n [\n ...(deletePermissions[index] ? ['delete'] : []),\n ...(editPermissions[index] ? ['edit'] : []),\n ]\n )\n );\n return {\n ...note,\n };\n });\n }),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly notesService: NotesService,\n private readonly permissionService: PermissionService,\n private readonly promptService: PromptService,\n private readonly route: ActivatedRoute,\n private readonly toastrService: ToastrService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.translateService.onLangChange.subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n public paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n public showAddModal(): void {\n this.customData$.next({});\n this.notesService.setModalType('add');\n this.notesService.showModal();\n }\n\n public createNewNote(content): void {\n this.documentId$\n .pipe(\n take(1),\n switchMap((documentId: string) => this.notesService.createDocumentNote(documentId, content))\n )\n .subscribe(() => {\n this.notesService.refresh();\n this.notesService.hideModal();\n });\n }\n\n public editNoteEvent(content): void {\n this.notesService.updateNote(content.data.customData.id, content.formData).subscribe(() => {\n this.notesService.refresh();\n this.notesService.hideModal();\n this.toastrService.success(this.translateService.instant('dossier.notes.editedMessage'));\n });\n }\n\n public editNote(data): void {\n this.customData$.next(data);\n this.notesService.setModalType('modify');\n this.notesService.showModal();\n }\n\n public deleteNote(data): void {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('dossier.notes.deleteConfirmation.title'),\n bodyText: this.translateService.instant('dossier.notes.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('dossier.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('dossier.deleteConfirmation.delete'),\n cancelMdiIcon: 'cancel',\n confirmMdiIcon: 'delete',\n cancelButtonType: 'secondary',\n confirmButtonType: 'primary',\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.notesService.deleteNote(data.customData.id).subscribe(() => {\n this.notesService.refresh();\n this.toastrService.success(\n this.translateService.instant('dossier.notes.deleteConfirmation.deletedMessage')\n );\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'dossier.notes.noResults.description' | translate\"\n [title]=\"'dossier.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n (createNoteEvent)=\"createNewNote($event)\"\n (editNoteEvent)=\"editNoteEvent($event)\"\n></valtimo-note-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DossierDetailTabSummaryComponent} from '../components/dossier-detail/tab/summary/summary.component';\nimport {DossierDetailTabProgressComponent} from '../components/dossier-detail/tab/progress/progress.component';\nimport {DossierDetailTabAuditComponent} from '../components/dossier-detail/tab/audit/audit.component';\nimport {DossierDetailTabDocumentsComponent} from '../components/dossier-detail/tab/documents/documents.component';\nimport {DefaultTabComponents, DefaultTabs} from '../models';\nimport {DossierDetailTabNotesComponent} from '../components/dossier-detail/tab/notes/notes.component';\n\nconst TAB_MAP = new InjectionToken<Map<string, object>>('TabMap');\n\nconst DEFAULT_TABS = new Map<string, object>([\n [DefaultTabs.summary, DossierDetailTabSummaryComponent],\n [DefaultTabs.progress, DossierDetailTabProgressComponent],\n [DefaultTabs.audit, DossierDetailTabAuditComponent],\n [DefaultTabs.documents, DossierDetailTabDocumentsComponent],\n]);\n\nconst DEFAULT_TAB_COMPONENTS: DefaultTabComponents = {\n [DefaultTabs.summary]: DossierDetailTabSummaryComponent,\n [DefaultTabs.progress]: DossierDetailTabProgressComponent,\n [DefaultTabs.audit]: DossierDetailTabAuditComponent,\n [DefaultTabs.documents]: DossierDetailTabDocumentsComponent,\n [DefaultTabs.notes]: DossierDetailTabNotesComponent,\n};\n\nexport {TAB_MAP, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {CaseTabConfig} from '../models';\n\nconst CASE_TAB_TOKEN = new InjectionToken<CaseTabConfig>(\n 'Specify a component to display per configured tab key.'\n);\n\nexport {CASE_TAB_TOKEN};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DossierListTab} from '@valtimo/config';\nimport {CarbonListNoResultsMessage, CarbonListTranslations} from '@valtimo/components';\n\nconst DEFAULT_DOSSIER_LIST_TABS: DossierListTab[] = [\n DossierListTab.ALL,\n DossierListTab.MINE,\n DossierListTab.OPEN,\n];\n\nconst DOSSIER_LIST_TABLE_TRANSLATIONS: CarbonListTranslations = {\n select: {\n single: 'dossier.select.single',\n multiple: 'dossier.select.multiple',\n },\n pagination: {\n itemsPerPage: 'dossier.pagination.itemsPerPage',\n totalItem: 'dossier.pagination.totalItem',\n totalItems: 'dossier.pagination.totalItems',\n },\n};\n\nconst DOSSIER_LIST_NO_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'dossier.noResults.ALL.description',\n isSearchResult: false,\n title: 'dossier.noResults.ALL.title',\n};\n\nexport {\n DEFAULT_DOSSIER_LIST_TABS,\n DOSSIER_LIST_TABLE_TRANSLATIONS,\n DOSSIER_LIST_NO_RESULTS_MESSAGE,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\nimport {InternalCaseStatus, InternalCaseStatusColor} from '@valtimo/document';\n\nconst CASE_WITHOUT_STATUS_STATUS: InternalCaseStatus = {\n key: CASES_WITHOUT_STATUS_KEY,\n documentDefinitionName: '',\n title: '',\n color: InternalCaseStatusColor.Gray,\n visibleInCaseListByDefault: false,\n};\n\nexport {CASES_WITHOUT_STATUS_KEY, CASE_WITHOUT_STATUS_STATUS};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {CustomCaseWidgetConfig} from '../models';\n\nconst CUSTOM_CASE_WIDGET_TOKEN = new InjectionToken<CustomCaseWidgetConfig>(\n 'Specify a component to display per configured custom case widget component key.'\n);\n\nexport {CUSTOM_CASE_WIDGET_TOKEN};\n","import {FormDisplayType, FormSize} from '@valtimo/process-link';\nimport {RightPanelMinWidths} from '../models';\n\nconst DOSSIER_DETAIL_GUTTER_SIZE = 32;\n\nconst DOSSIER_DETAIL_TASK_LIST_WIDTH = 412;\n\nconst DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH = 320;\n\nconst DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS: RightPanelMinWidths = {\n extraSmall: 240,\n small: 320,\n medium: 480,\n large: 640,\n};\n\nconst DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE: FormDisplayType = 'modal';\nconst DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE: FormSize = 'medium';\n\nconst DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {\n small: 250,\n medium: 350,\n large: 450,\n};\n\nexport {\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH,\n DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n DOSSIER_DETAIL_TASK_LIST_WIDTH,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab';\nexport * from './case-tab-token';\nexport * from './dossier-list.constants';\nexport * from './case-status.constants';\nexport * from './case-widget.constants';\nexport * from './custom-case-widget-token';\nexport * from './dossier-detail-layout.constants';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {DossierTabService} from '../../../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {FormService} from '@valtimo/form';\nimport {BehaviorSubject, combineLatest, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {catchError} from 'rxjs/operators';\n\n@Component({\n templateUrl: './formio.component.html',\n styleUrls: ['./formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierDetailTabFormioComponent {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly formNotFound$ = new BehaviorSubject<string>('');\n public readonly noFormSpecified$ = new BehaviorSubject<boolean>(false);\n private _formDefinitionName!: string;\n public readonly prefilledForm$: Observable<FormioForm | null> = combineLatest([\n this.tabService.tabs$,\n this.route.params,\n ]).pipe(\n switchMap(([tabs, params]) => {\n const currentTabName = params?.tab;\n const documentId = params?.documentId;\n const currentTab = tabs.find(tab => tab.name === currentTabName);\n\n if (!documentId || !currentTab?.contentKey) {\n this.noFormSpecified$.next(true);\n return of(null);\n }\n\n this._formDefinitionName = currentTab.contentKey;\n return this.formService.getFormDefinitionByNamePreFilled(currentTab.contentKey, documentId);\n }),\n tap(() => this.loading$.next(false)),\n catchError(() => {\n this.formNotFound$.next(this._formDefinitionName);\n this.loading$.next(false);\n return of(null);\n })\n );\n\n constructor(\n private readonly tabService: DossierTabService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'dossier.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'dossier.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n create = 'create',\n}\n\nenum WIDGET_PERMISSION_RESOURCE {\n camundaExecution = 'com.ritense.valtimo.camunda.domain.CamundaExecution',\n camundaProcessDefinition = 'com.ritense.valtimo.camunda.domain.CamundaProcessDefinition',\n}\n\nconst CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.create,\n resource: WIDGET_PERMISSION_RESOURCE.camundaExecution,\n};\n\nexport {CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE};\n","import {Component} from '@angular/core';\nimport {BasicCaseWidget} from '../../../../../../models';\nimport {BehaviorSubject, Observable, switchMap, tap} from 'rxjs';\nimport {PermissionResponse, PermissionService} from '@valtimo/access-control';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {\n CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION,\n WIDGET_PERMISSION_RESOURCE,\n} from '../../widgets.permissions';\n\nexport class WidgetProcess {\n private readonly _baseWidgetConfiguration$ = new BehaviorSubject<BasicCaseWidget | null>(null);\n protected set baseWidgetConfiguration(value: BasicCaseWidget) {\n this._baseWidgetConfiguration$.next(value);\n }\n\n public readonly canCreateCamundaExecution$: Observable<boolean> =\n this._baseWidgetConfiguration$.pipe(\n switchMap((widgetConfiguration: BasicCaseWidget | null) =>\n this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(\n widgetConfiguration?.actions?.[0].processDefinitionKey ?? ''\n )\n ),\n switchMap((processDefintions: ProcessDocumentDefinition[]) =>\n this.permissionService.requestPermission(CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, {\n resource: WIDGET_PERMISSION_RESOURCE.camundaProcessDefinition,\n identifier: processDefintions[0].latestVersionId,\n })\n )\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {}\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {BehaviorSubject, Observable, distinctUntilChanged, filter, switchMap} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetsService {\n private readonly _activeProcessKey$ = new BehaviorSubject<string | null>(null);\n public readonly startProcessEvent = new EventEmitter();\n\n public get activeProcess$(): Observable<ProcessDocumentDefinition[]> {\n return this._activeProcessKey$.pipe(\n filter((processDocumentDefinition: string | null) => !!processDocumentDefinition),\n switchMap((processDefinitionKey: string) =>\n this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(\n processDefinitionKey\n )\n ),\n distinctUntilChanged()\n );\n }\n\n constructor(private readonly documentService: DocumentService) {}\n\n public startProcess(processDocumentDefinitionKey: string): void {\n this._activeProcessKey$.next(processDocumentDefinitionKey);\n this.startProcessEvent.emit();\n }\n\n public finishProcess(): void {\n this._activeProcessKey$.next(null);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n Optional,\n signal,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CaseWidgetAction, CustomCaseWidget, CustomCaseWidgetConfig} from '../../../../../../models';\nimport {CUSTOM_CASE_WIDGET_TOKEN} from '../../../../../../constants';\nimport {BehaviorSubject, combineLatest, filter, Observable, Subscription} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {ButtonModule} from 'carbon-components-angular';\n\n@Component({\n selector: 'valtimo-widget-custom',\n templateUrl: './widget-custom.component.html',\n styleUrls: ['./widget-custom.component.scss'],\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetCustomComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @ViewChild('customWidgetContainer', {read: ViewContainerRef})\n private readonly _customWidgetContainerRef: ViewContainerRef;\n\n @Input() public set widgetConfig(value: CustomCaseWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigSubject$.next(value);\n }\n\n private readonly _customCaseWidgetConfig$ = new BehaviorSubject<CustomCaseWidgetConfig | {}>({});\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomCaseWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomCaseWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly noCustomComponentAvailable = signal(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_CASE_WIDGET_TOKEN)\n private readonly customCaseWidgetConfig: CustomCaseWidgetConfig,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetsService: WidgetsService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n super(documentService, permissionService);\n if (customCaseWidgetConfig) this._customCaseWidgetConfig$.next(customCaseWidgetConfig);\n }\n\n public ngAfterViewInit(): void {\n this.openCustomWidgetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private openCustomWidgetSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widgetConfig$, this._customCaseWidgetConfig$]).subscribe(\n ([widgetConfig, customCaseWidgetConfig]) => {\n const customWidgetComponentKey = widgetConfig?.properties?.componentKey;\n const customComponent = customCaseWidgetConfig[customWidgetComponentKey];\n\n if (!customComponent) {\n this.noCustomComponentAvailable.set(true);\n return;\n }\n\n const componentRef = this._customWidgetContainerRef.createComponent(customComponent);\n\n componentRef.changeDetectorRef.detectChanges();\n this.cdr.detectChanges();\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"{widgetConfig: widgetConfig$ | async} as obs\" class=\"custom-widget\">\n <section class=\"custom-widget__header\">\n <h4 class=\"custom-widget__title\">{{ obs.widgetConfig$?.title || '-' }}</h4>\n\n @if (obs.widgetConfig?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfig?.actions[0])\"\n >\n {{ obs.widgetConfig?.actions[0].name }}\n </button>\n }\n </section>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, EllipsisPipe, ViewContentService, ViewType} from '@valtimo/components';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, tap} from 'rxjs';\nimport {\n CaseWidgetAction,\n CaseWidgetTextDisplayType,\n FieldsCaseWidget,\n} from '../../../../../../models';\nimport {WidgetsService} from '../../widgets.service';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ActivatedRoute} from '@angular/router';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\n\n@Component({\n selector: 'valtimo-widget-field',\n templateUrl: './widget-field.component.html',\n styleUrls: ['./widget-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n EllipsisPipe,\n ButtonModule,\n ],\n})\nexport class WidgetFieldComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'widget-field';\n\n @ViewChild('widgetField') private _widgetFieldRef: ElementRef<HTMLDivElement>;\n\n @Input() collapseVertically = false;\n @Input() public set widgetConfiguration(value: FieldsCaseWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n public readonly isEmptyWidgetData$ = new BehaviorSubject<boolean>(false);\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n\n @Input() public set widgetData(value: object) {\n if (!value) return;\n this.widgetData$.next(value);\n this.isEmptyWidgetData$.next(this.checkEmptyWidgetData(value));\n }\n\n public readonly renderVertically = signal(0);\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsCaseWidget | null>(null);\n public readonly widgetData$ = new BehaviorSubject<object | null>(null);\n\n public readonly widgetPropertyValue$: Observable<\n {\n title: string;\n value: string;\n ellipsisCharacterLimit: number | null;\n hideWhenEmpty: boolean | false;\n }[][]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n map(([widget, widgetData]) =>\n widget?.properties.columns.map(column =>\n column.reduce(\n (columnFields, property) => [\n ...columnFields,\n ...(widgetData?.hasOwnProperty(property.key)\n ? [\n {\n title: property.title,\n ellipsisCharacterLimit:\n (property.displayProperties as CaseWidgetTextDisplayType)\n ?.ellipsisCharacterLimit ?? null,\n hideWhenEmpty:\n (property.displayProperties as CaseWidgetTextDisplayType)?.hideWhenEmpty ??\n false,\n value: this.viewContentService.get(widgetData[property.key], {\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n }),\n },\n ]\n : []),\n ],\n []\n )\n )\n ),\n tap(columns => this.checkEmptyFields(columns))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly route: ActivatedRoute,\n private readonly viewContentService: ViewContentService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public ngAfterViewInit(): void {\n if (this.collapseVertically && this._widgetFieldRef) this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetFieldRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.renderVertically.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.renderVertically.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.renderVertically.set(3);\n } else if (elementWidth > 1080) {\n this.renderVertically.set(4);\n }\n }\n }\n\n private checkEmptyWidgetData(widgetData: Object): boolean {\n return widgetData && Object.keys(widgetData).length === 0;\n }\n\n private checkEmptyFields(columns: any[][]): void {\n columns.forEach(column => {\n column.forEach(field => {\n if (!field?.hideWhenEmpty || (field?.hideWhenEmpty && field?.value && field?.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"widget-field__header\">\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n @if (obs.widgetConfiguration.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n </section>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4,\n }\"\n >\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\">\n @for (property of column; track property) {\n <div\n *ngIf=\"\n (property?.value !== null &&\n property?.value !== '-' &&\n property?.hideWhenEmpty) ||\n !property?.hideWhenEmpty\n \"\n class=\"widget-field__field\"\n >\n <label class=\"widget-field__field-label\" [attr.title]=\"property?.title\">\n {{ property?.title }}</label\n >\n\n <div [attr.title]=\"property?.value\" class=\"widget-field__field-value\">\n {{ property?.value | valtimoEllipsis: property?.ellipsisCharacterLimit }}\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseWidgetAction, FormioCaseWidgetWidgetWithUuid} from '../../../../../../models';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormService} from '@valtimo/form';\nimport {DossierWidgetsLayoutService} from '../../../../../../services';\nimport {FormioForm} from '@formio/angular';\nimport {FormIoModule} from '@valtimo/components';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService} from '@valtimo/document';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-formio',\n templateUrl: './widget-formio.component.html',\n styleUrls: ['./widget-formio.component.scss'],\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetFormioComponent extends WidgetProcess {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n }\n @Input() public set widgetConfiguration(value: FormioCaseWidgetWidgetWithUuid) {\n if (!value) return;\n this.layoutService.setWidgetWithExternalData(value.uuid);\n this.baseWidgetConfiguration = value;\n this._widgetConfigurationSubject$.next(value);\n }\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioCaseWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioCaseWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private get _documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly prefilledFormDefinition$: Observable<FormioForm> = combineLatest([\n this.widgetConfiguration$,\n this._documentId$,\n ]).pipe(\n switchMap(([config, documentId]) =>\n combineLatest([\n this.formService.getFormDefinitionByNamePreFilled(\n config.properties.formDefinitionName,\n documentId\n ),\n of(config),\n ])\n ),\n tap(([_, config]) => this.layoutService.setWidgetWithExternalDataReady(config.uuid)),\n map(([formDef]) => formDef)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly formService: FormService,\n private readonly layoutService: DossierWidgetsLayoutService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"formio-widget\"\n *ngIf=\"{\n prefilledFormDefinition: prefilledFormDefinition$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n } as obs\"\n>\n <section class=\"formio-widget__header\">\n <h4 class=\"formio-widget__title\">{{ obs.widgetConfiguration$?.title || '-' }}</h4>\n\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n <valtimo-form-io [form]=\"obs.prefilledFormDefinition\"></valtimo-form-io>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {CaseWidgetAction, FieldsCaseWidgetValue, TableCaseWidget} from '../../../../../../models';\nimport {DossierWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-table',\n templateUrl: './widget-table.component.html',\n styleUrls: ['./widget-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetTableComponent extends WidgetProcess {\n @Input({required: true}) public documentId: string;\n @Input({required: true}) public tabKey: string;\n\n private _widgetConfiguration: TableCaseWidget;\n @Input({required: true}) public set widgetConfiguration(value: TableCaseWidget) {\n this._widgetConfiguration = value;\n this.baseWidgetConfiguration = value;\n this.fields$.next(\n value.properties.columns.map((column: FieldsCaseWidgetValue, index: number) => ({\n key: column.key,\n label: column.title,\n viewType: column.displayProperties?.type ?? ViewType.TEXT,\n className: `valtimo-widget-table--transparent ${index === 0 && value.properties.firstColumnAsTitle ? 'valtimo-widget-table--title' : ''}`,\n ...(!!column.displayProperties?.['format'] && {\n format: column.displayProperties['format'],\n }),\n ...(!!column.displayProperties?.['digitsInfo'] && {\n digitsInfo: column.displayProperties['digitsInfo'],\n }),\n ...(!!column.displayProperties?.['display'] && {\n display: column.displayProperties['display'],\n }),\n ...(!!column.displayProperties?.['currencyCode'] && {\n currencyCode: column.displayProperties['currencyCode'],\n }),\n ...(!!column.displayProperties?.['values'] && {\n values: column.displayProperties['values'],\n }),\n }))\n );\n this.cdr.detectChanges();\n }\n public get widgetConfiguration(): TableCaseWidget {\n return this._widgetConfiguration;\n }\n\n private readonly _initialNumberOfElementsSubject$ = new BehaviorSubject<number>(null);\n\n private get _initialNumberOfElements$(): Observable<number> {\n return this._initialNumberOfElementsSubject$.pipe(\n filter(numberOfElements => numberOfElements !== null)\n );\n }\n\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private _widgetData$ = new BehaviorSubject<CarbonListItem[] | null>(null);\n @Input({required: true}) set widgetData(value: Page<CarbonListItem> | null) {\n if (!value) return;\n\n this.showPagination$.next(value.totalElements > value.size);\n this._initialNumberOfElementsSubject$.next(value.numberOfElements);\n this._widgetData$.next(value.content);\n\n this.paginationModel.set(\n value.totalPages < 2\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n this.cdr.detectChanges();\n }\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n\n public readonly widgetData$ = combineLatest([\n this._widgetData$,\n this._queryParams$,\n this._initialNumberOfElements$,\n ]).pipe(\n switchMap(([data, queryParams, initialNumberOfElements]) =>\n combineLatest([\n !queryParams\n ? of(data)\n : this.dossierWidgetsApiService\n .getWidgetData(\n this.documentId,\n this.tabKey,\n this.widgetConfiguration.key,\n queryParams\n )\n .pipe(map((res: Page<CarbonListItem>) => res.content)),\n of(initialNumberOfElements),\n ])\n ),\n filter(([items]) => !!items),\n map(([items, initialNumberOfElements]) => {\n if (items.length === initialNumberOfElements) {\n return items;\n }\n\n const rows = new Array<number>(initialNumberOfElements).fill(null);\n\n return rows.map((_, index) => items[index] || {});\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly dossierWidgetsApiService: DossierWidgetsApiService,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public onSelectPage(page: number): void {\n this._queryParams$.next(`page=${page - 1}&size=${this.paginationModel().pageLength}`);\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: page,\n }));\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n *ngIf=\"{\n fields: fields$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n class=\"valtimo-widget-table\"\n>\n <section class=\"valtimo-widget-table__header\">\n <span class=\"widget-title\">{{ widgetConfiguration?.title }}</span>\n\n @if (widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration?.actions[0])\"\n >\n {{ widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n @if (obs.widgetData && obs.fields && obs.widgetData.length) {\n <section class=\"valtimo-widget-table__content\">\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"obs.fields\"\n [items]=\"obs.widgetData\"\n >\n </valtimo-carbon-list>\n\n <cds-pagination-nav\n *ngIf=\"paginationModel()\"\n class=\"valtimo-widget-table__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n </section>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n</cds-tile>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n CaseWidgetAction,\n CaseWidgetDisplayTypeKey,\n CollectionCaseWidget,\n CollectionCaseWidgetCardData,\n CollectionCaseWidgetField,\n CollectionCaseWidgetTitle,\n CollectionWidgetResolvedField,\n} from '../../../../../../models';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {CarbonListModule, ViewContentService} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/config';\nimport {DossierWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-collection',\n templateUrl: './widget-collection.component.html',\n styleUrls: ['./widget-collection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetCollectionComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-collection';\n @ViewChild('widgetCollection') private _widgetCollectionRef: ElementRef<HTMLDivElement>;\n\n @Input({required: true}) public documentId: string;\n @Input({required: true}) public tabKey: string;\n @Input() public set widgetConfiguration(value: CollectionCaseWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private readonly _initialNumberOfElementsSubject$ = new BehaviorSubject<number>(null);\n\n private get _initialNumberOfElements$(): Observable<number> {\n return this._initialNumberOfElementsSubject$.pipe(\n filter(numberOfElements => numberOfElements !== null)\n );\n }\n\n @Input() public set widgetData(value: Page<CollectionCaseWidgetCardData> | null) {\n if (!value) return;\n\n this.showPagination$.next(value.totalElements > value.size);\n this._initialNumberOfElementsSubject$.next(value.numberOfElements);\n this._widgetDataSubject$.next(value.content);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n this.cdr.detectChanges();\n }\n\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n public readonly widgetTitle = signal('-');\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionCaseWidget | null>(null);\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n public readonly amountOfColumns = signal(0);\n\n private readonly _widgetDataSubject$ = new BehaviorSubject<CollectionCaseWidgetCardData[]>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n private readonly _widgetData$: Observable<CollectionCaseWidgetCardData[]> = combineLatest([\n this._widgetDataSubject$,\n this._queryParams$,\n this._initialNumberOfElements$,\n this.widgetConfiguration$,\n ]).pipe(\n switchMap(([data, queryParams, initialNumberOfElements, widgetConfiguration]) =>\n combineLatest([\n !queryParams\n ? of(data)\n : this.widgetApiService\n .getWidgetData(this.documentId, this.tabKey, widgetConfiguration.key, queryParams)\n .pipe(map((res: Page<CollectionCaseWidgetCardData>) => res.content)),\n of(initialNumberOfElements),\n ])\n ),\n filter(([items]) => !!items),\n map(([items, initialNumberOfElements]) => {\n if (items.length === initialNumberOfElements) {\n return items;\n }\n\n const rows = new Array<number>(initialNumberOfElements).fill(null);\n\n return rows.map((_, index) => items[index] || {...items[0], hidden: true});\n })\n );\n\n public readonly collectionWidgetCards$: Observable<\n {title: string; fields: CollectionWidgetResolvedField[]; key: number; hidden: boolean}[]\n > = combineLatest([this.widgetConfiguration$, this._widgetData$]).pipe(\n filter(([widgetConfig, widgetData]) => !!widgetConfig && !!widgetData),\n tap(([widgetConfig]) => {\n this.widgetTitle.set(widgetConfig.title);\n }),\n map(([widgetConfig, widgetData]) =>\n widgetData.map((cardData, index) => ({\n hidden: cardData.hidden,\n key: index,\n title: this.getCardTitle({\n value: cardData.title,\n displayProperties: widgetConfig?.properties?.title?.displayProperties,\n }),\n fields: widgetConfig?.properties.fields.reduce(\n (cardFieldsAccumulator, currentField) => [\n ...cardFieldsAccumulator,\n this.getCardField(currentField, cardData),\n ],\n []\n ),\n }))\n ),\n tap(card => this.checkEmptyFields(card))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly viewContentService: ViewContentService,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetApiService: DossierWidgetsApiService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public ngAfterViewInit(): void {\n this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onSelectPage(page: number): void {\n this._queryParams$.next(`page=${page - 1}&size=${this.paginationModel().pageLength}`);\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: page,\n }));\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private getCardField(\n field: CollectionCaseWidgetField,\n data: CollectionCaseWidgetCardData\n ): CollectionWidgetResolvedField {\n const resolvedValue = this.viewContentService.get(data.fields[field.key], {\n ...field.displayProperties,\n viewType: field.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n });\n\n return {\n key: field.key,\n title: field.title,\n width: field.width,\n value: resolvedValue || data.fields[field.key],\n hideWhenEmpty: field.displayProperties?.hideWhenEmpty,\n };\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetCollectionRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.amountOfColumns.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.amountOfColumns.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.amountOfColumns.set(3);\n } else if (elementWidth > 1080) {\n this.amountOfColumns.set(4);\n }\n }\n }\n\n private getCardTitle(collectionCaseWidgetTitle: CollectionCaseWidgetTitle): string {\n const widgetTitleValue = collectionCaseWidgetTitle.value;\n const widgetTitleDisplayProperties = collectionCaseWidgetTitle.displayProperties;\n\n if (!widgetTitleDisplayProperties && widgetTitleValue) {\n return widgetTitleValue;\n } else if (widgetTitleDisplayProperties && widgetTitleValue) {\n const convertedTitle = this.viewContentService.get(widgetTitleValue, {\n ...widgetTitleDisplayProperties,\n viewType: widgetTitleDisplayProperties.type,\n hideWhenEmpty: widgetTitleDisplayProperties.hideWhenEmpty,\n });\n\n if (convertedTitle) return convertedTitle;\n }\n\n return '-';\n }\n\n private checkEmptyFields(card): void {\n card.forEach(collection => {\n collection.fields.forEach(field => {\n if (!field.hideWhenEmpty || (field.hideWhenEmpty && field.value && field.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"valtimo-widget-collection__header\">\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4,\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n *ngIf=\"!obs.noVisibleFields\"\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n *ngIf=\"\n (field?.value !== null && field?.value !== '-' && field?.hideWhenEmpty) ||\n !field?.hideWhenEmpty\n \"\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half',\n }\"\n >\n <cds-label class=\"valtimo-widget-collection__label\" [attr.title]=\"field?.title\">\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n @if (!obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CarbonListModule,\n CdsThemeService,\n CurrentCarbonTheme,\n} from '@valtimo/components';\nimport {LoadingModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseWidgetType, CaseWidgetWithUuid, WidgetTableContent} from '../../../../../../models';\nimport {\n DossierTabService,\n DossierWidgetsApiService,\n DossierWidgetsLayoutService,\n} from '../../../../../../services';\nimport {WidgetCustomComponent} from '../custom/widget-custom.component';\nimport {WidgetFieldComponent} from '../field/widget-field.component';\nimport {WidgetFormioComponent} from '../formio/widget-formio.component';\nimport {WidgetTableComponent} from '../table/widget-table.component';\nimport {WidgetCollectionComponent} from '../collection/widget-collection.component';\nimport {WIDGET_HEIGHT_1X} from '../../../../../../constants';\n\n@Component({\n selector: 'valtimo-dossier-widget-block',\n templateUrl: './widget-block.component.html',\n styleUrls: ['./widget-block.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetTableComponent,\n WidgetCustomComponent,\n CarbonListModule,\n TranslateModule,\n TilesModule,\n WidgetFieldComponent,\n WidgetFormioComponent,\n WidgetCollectionComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetBlockContent') private _widgetBlockContentRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widget(value: CaseWidgetWithUuid) {\n this._widgetUuid = value.uuid;\n this._widget$.next(value);\n }\n\n private readonly _widget$ = new BehaviorSubject<CaseWidgetWithUuid | null>(null);\n\n public get widget$(): Observable<CaseWidgetWithUuid> {\n return this._widget$.pipe(filter(widget => widget !== null));\n }\n\n private readonly _viewContainerRefSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n\n private get _viewContainerRef$(): Observable<ViewContainerRef> {\n return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));\n }\n\n private readonly _contentHeight$ = new BehaviorSubject<number>(0);\n\n public readonly blockHeightPx$ = combineLatest([\n this._contentHeight$,\n this._viewContainerRef$,\n ]).pipe(\n filter(([contentHeight]) => contentHeight !== 0),\n tap(([contentHeight, viewRef]) => {\n const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly blockWidthPercentage$ = combineLatest([\n this.dossierWidgetsLayoutService.amountOfColumns$,\n this.widget$,\n this._viewContainerRef$,\n ]).pipe(\n tap(([amountOfColumns, widget, viewRef]) => {\n const percentage =\n widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly CaseWidgetType = CaseWidgetType;\n\n public readonly documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly tabKey$: Observable<string> = this.dossierTabService.activeTabKey$;\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widget$,\n this.tabKey$,\n this.documentId$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n // custom component and formio widgets do not fetch additional data\n widget.type === CaseWidgetType.CUSTOM || widget.type === CaseWidgetType.FORMIO\n ? of({})\n : this.widgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n widget.type === CaseWidgetType.TABLE || widget.type === CaseWidgetType.COLLECTION\n ? this.getPageSizeParam(widget)\n : undefined\n )\n ),\n tap(() => {\n this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404)\n this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(\n map(([currentTheme, widgetConfiguration]) => {\n return currentTheme === CurrentCarbonTheme.G10\n ? widgetConfiguration.highContrast\n ? CARBON_THEME.G100\n : CARBON_THEME.G10\n : widgetConfiguration.highContrast\n ? CARBON_THEME.WHITE\n : CARBON_THEME.G90;\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _observer!: ResizeObserver;\n\n private _widgetUuid!: string;\n\n constructor(\n private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService,\n private readonly dossierTabService: DossierTabService,\n private readonly route: ActivatedRoute,\n private readonly widgetsApiService: DossierWidgetsApiService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly renderer: Renderer2,\n private readonly viewRef: ViewContainerRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._viewContainerRefSubject$.next(this.viewRef);\n this.openContentHeightObserver();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._observer?.disconnect();\n }\n\n private openContentHeightObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetBlockContentRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;\n\n if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {\n this._contentHeight$.next(widgetContentHeight);\n }\n }\n\n private getPageSizeParam(widgetConfiguration: CaseWidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async,\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CaseWidget, CaseWidgetWithUuid} from '../../../../../../models';\nimport {WidgetBlockComponent} from '../widget-block/widget-block.component';\nimport {DossierWidgetsLayoutService} from '../../../../../../services';\nimport {v4 as uuid} from 'uuid';\nimport {BehaviorSubject, delay, take} from 'rxjs';\nimport Muuri from 'muuri';\n\n@Component({\n selector: 'valtimo-dossier-widgets-container',\n templateUrl: './widgets-container.component.html',\n styleUrls: ['./widgets-container.component.scss'],\n standalone: true,\n imports: [CommonModule, WidgetBlockComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetsContainerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetsContainer') private _widgetsContainerRef: ElementRef<HTMLDivElement>;\n\n public readonly widgetsWithUuids$ = new BehaviorSubject<CaseWidgetWithUuid[]>([]);\n\n @Input() public set widgets(value: CaseWidget[]) {\n const widgetsWithUuids = value.map(widget => ({...widget, uuid: uuid()}));\n this.dossierWidgetsLayoutService.setWidgets(widgetsWithUuids);\n this.widgetsWithUuids$.next(widgetsWithUuids);\n }\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService) {}\n\n public ngAfterViewInit(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetsContainerRef.nativeElement);\n\n this.initMuuri();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof containerWidth === 'number' && containerWidth !== 0) {\n this.dossierWidgetsLayoutService.setContainerWidth(containerWidth);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n }\n }\n\n private initMuuri(): void {\n this.dossierWidgetsLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {\n this.dossierWidgetsLayoutService.setMuuri(\n new Muuri(this._widgetsContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostBinding, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, delay, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {\n DossierTabService,\n DossierWidgetsApiService,\n DossierWidgetsLayoutService,\n} from '../../../../services';\nimport {WidgetsContainerComponent} from './components/widgets-container/widgets-container.component';\n\n@Component({\n templateUrl: './widgets.component.html',\n styleUrls: ['./widgets.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetsContainerComponent,\n CarbonListModule,\n TranslateModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierDetailWidgetsComponent implements OnInit, OnDestroy {\n @HostBinding('class.tab--no-margin') private readonly _noMargin = true;\n @HostBinding('class.tab--no-background') private readonly _noBackground = true;\n @HostBinding('class.tab--no-min-height') private readonly _noMinHeight = true;\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _tabKey$: Observable<string> = this.dossierTabService.activeTabKey$;\n\n public readonly loadingWidgetConfiguration$ = new BehaviorSubject<boolean>(true);\n\n public readonly widgetConfiguration$ = combineLatest([this._documentId$, this._tabKey$]).pipe(\n switchMap(([documentId, tabKey]) =>\n this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey)\n ),\n tap(() => this.loadingWidgetConfiguration$.next(false))\n );\n\n public readonly loaded$ = this.dossierWidgetsLayoutService.loaded$.pipe(delay(400));\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly dossierTabService: DossierTabService,\n private readonly widgetsApiService: DossierWidgetsApiService,\n private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService\n ) {}\n\n public ngOnInit(): void {\n this.dossierTabService.disableTabHorizontalOverflow();\n }\n\n public ngOnDestroy(): void {\n this.dossierWidgetsLayoutService.reset();\n this.dossierTabService.enableTabHorizontalOverflow();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async,\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0,\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ApiTabItem} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierTabApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getDossierTabs(\n documentDefinitionName: string,\n documentId: string\n ): Observable<Array<ApiTabItem>> {\n return this.httpClient.get<Array<ApiTabItem>>(this.getApiUrl(`v1/document/${documentId}/tab`));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Inject, Injectable, OnDestroy, Optional, Signal, signal, Type} from '@angular/core';\nimport {\n ApiTabItem,\n ApiTabType,\n CaseTabConfig,\n DefaultTabs,\n TabImpl,\n TabLoaderImpl,\n} from '../models';\nimport {CASE_TAB_TOKEN, DEFAULT_TAB_COMPONENTS, DEFAULT_TABS, TAB_MAP} from '../constants';\nimport {ConfigService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN} from '@valtimo/config';\nimport {ActivatedRoute} from '@angular/router';\nimport {DossierTabApiService} from './dossier-tab-api.service';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {DossierDetailTabFormioComponent} from '../components/dossier-detail/tab/formio/formio.component';\nimport {DossierDetailTabNotFoundComponent} from '../components/dossier-detail/tab/not-found/not-found.component';\nimport {DossierDetailWidgetsComponent} from '../components/dossier-detail/tab/widgets/widgets.component';\n\n@Injectable()\nexport class DossierTabService implements OnDestroy {\n private readonly _tabManagementEnabled!: boolean;\n private readonly _documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentDefinitionName),\n filter(documentDefinitionName => !!documentDefinitionName)\n );\n private readonly _documentId$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n private readonly _tabs$ = new BehaviorSubject<Array<TabImpl> | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _tabLoader$ = new BehaviorSubject<TabLoaderImpl | null>(null);\n private readonly _tabHorizontalOverflowDisabled = signal(false);\n\n public get tabHorizontalOverflowDisabled(): Signal<boolean> {\n return this._tabHorizontalOverflowDisabled.asReadonly();\n }\n\n public get tabs$(): Observable<Array<TabImpl>> {\n return this._tabs$.pipe(filter(tabs => !!tabs));\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$)\n );\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.name));\n }\n\n public get showTaskList$(): Observable<boolean> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$),\n map(activeTab => !!activeTab?.showTasks || activeTab.contentKey === DefaultTabs.summary)\n );\n }\n\n constructor(\n @Inject(TAB_MAP) private readonly tabMap: Map<string, object> = DEFAULT_TABS,\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(ZGW_OBJECT_TYPE_COMPONENT_TOKEN)\n private readonly zgwObjectTypeComponent: Type<any>,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute,\n private readonly dossierTabApiService: DossierTabApiService\n ) {\n this._tabManagementEnabled =\n this.configService.config.featureToggles?.enableTabManagement ?? true;\n this.openDocumentDefinitionNameSubscription();\n }\n\n public ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n\n public setTabLoader(tabLoader: TabLoaderImpl): void {\n this._tabLoader$.next(tabLoader);\n }\n\n public disableTabHorizontalOverflow(): void {\n this._tabHorizontalOverflowDisabled.set(true);\n }\n\n public enableTabHorizontalOverflow(): void {\n this._tabHorizontalOverflowDisabled.set(false);\n }\n\n private getConfigurableTabs(documentDefinitionName: string): Map<string, object> {\n const tabMap = new Map<string, object>();\n\n if (this.configService?.config?.caseObjectTypes) {\n const allNamesObjects = this.configService?.config?.caseObjectTypes[documentDefinitionName];\n\n allNamesObjects?.forEach(name => {\n tabMap.set(name, this.zgwObjectTypeComponent || DossierDetailTabNotFoundComponent);\n });\n }\n\n return tabMap;\n }\n\n private getAllEnvironmentTabs(extraTabs: Map<string, object>): Array<TabImpl> {\n let i = 0;\n const tabMap = extraTabs\n ? new Map([...Array.from(this.tabMap.entries()), ...Array.from(extraTabs.entries())])\n : this.tabMap;\n const tabs: Array<TabImpl> = [];\n\n tabMap.forEach((component, name) => {\n tabs.push(new TabImpl(name, i, component));\n i++;\n });\n\n return tabs;\n }\n\n private openDocumentDefinitionNameSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._documentDefinitionName$, this._documentId$]).subscribe(\n ([documentDefinitionName, documentId]) => {\n if (this._tabManagementEnabled) {\n this.setApiTabs(documentDefinitionName, documentId);\n } else {\n this.setEnvironmentTabs(documentDefinitionName);\n }\n }\n )\n );\n }\n\n private setEnvironmentTabs(documentDefinitionName: string): void {\n const configurableTabs = this.getConfigurableTabs(documentDefinitionName);\n const allEnvironmentTabs = this.getAllEnvironmentTabs(configurableTabs);\n this._tabs$.next(allEnvironmentTabs);\n }\n\n private setApiTabs(documentDefinitionName: string, documentId: string): void {\n this.dossierTabApiService.getDossierTabs(documentDefinitionName, documentId).subscribe({\n next: tabs => {\n const supportedTabs = tabs.filter(tab => this.filterTab(tab));\n const mappedTabs = supportedTabs.map((tab, index) => this.mapTab(tab, index));\n this._tabs$.next(mappedTabs.filter(tab => !!tab));\n },\n error: () => {\n this._tabs$.next([]);\n },\n });\n }\n\n private filterTab(tab: ApiTabItem): boolean {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return !!DEFAULT_TAB_COMPONENTS[tab.contentKey];\n case ApiTabType.CUSTOM:\n return !!(this.caseTabConfig || {})[tab.contentKey];\n default:\n return true;\n }\n }\n\n private mapTab(tab: ApiTabItem, index: number): TabImpl | null {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return new TabImpl(\n tab.key,\n index,\n DEFAULT_TAB_COMPONENTS[tab.contentKey],\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.FORMIO:\n return new TabImpl(\n tab.key,\n index,\n DossierDetailTabFormioComponent,\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.CUSTOM:\n return new TabImpl(\n tab.key,\n index,\n this.caseTabConfig[tab.contentKey],\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.WIDGETS:\n return new TabImpl(\n tab.key,\n index,\n DossierDetailWidgetsComponent,\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n default:\n return null;\n }\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {DossierListService} from './dossier-list.service';\nimport {CaseStatusService, InternalCaseStatus} from '@valtimo/document';\nimport {DossierParameterService} from './dossier-parameter.service';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CASE_WITHOUT_STATUS_STATUS} from '../constants';\n\n@Injectable()\nexport class DossierListStatusService {\n private readonly _selectedCaseStatuses$ = new BehaviorSubject<InternalCaseStatus[]>([]);\n\n private readonly _showStatusSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseStatuses$: Observable<Array<InternalCaseStatus>> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(documentDefinitionName),\n this.dossierParameterService.queryStatusParams$,\n ]).pipe(take(1))\n ),\n switchMap(([statuses, queryStatuses]) =>\n combineLatest([of([CASE_WITHOUT_STATUS_STATUS, ...statuses]), of(queryStatuses)])\n ),\n tap(([statuses, queryStatuses]) => {\n const selectedStatuses = queryStatuses\n ? statuses.filter(status => queryStatuses.includes(status.key))\n : [\n ...statuses.filter(status => status.visibleInCaseListByDefault),\n CASE_WITHOUT_STATUS_STATUS,\n ];\n this.setSelectedStatuses(selectedStatuses);\n }),\n map(([statuses]) => statuses),\n tap(statuses => this._showStatusSelector$.next((statuses || []).length > 1))\n );\n\n public get caseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._caseStatuses$;\n }\n\n public get showStatusSelector$(): Observable<boolean> {\n return this._showStatusSelector$.asObservable();\n }\n\n public get selectedCaseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._selectedCaseStatuses$;\n }\n\n constructor(\n private readonly dossierListService: DossierListService,\n private readonly caseStatusService: CaseStatusService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n public setSelectedStatuses(statuses: InternalCaseStatus[]): void {\n this._selectedCaseStatuses$.next(statuses);\n this.dossierParameterService.setStatusParameter(statuses.map(status => status.key));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StartModalService {\n getStandardStartEventTitle(bpmnXml: string): string | null {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(bpmnXml, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('parsererror').length) {\n console.error('Error parsing XML');\n return null;\n }\n\n const startEvents = xmlDoc.getElementsByTagName('bpmn:startEvent');\n if (!startEvents) {\n return null;\n }\n\n const standardStartEvent = Array.from(startEvents).find(\n event =>\n !event.getElementsByTagName('bpmn:messageEventDefinition').length &&\n !event.getElementsByTagName('bpmn:timerEventDefinition').length\n );\n\n return standardStartEvent ? standardStartEvent.getAttribute('name') : null;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {CaseWidgetsRes} from '../models';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierWidgetsApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getWidgetTabConfiguration(documentId: string, tabKey: string): Observable<CaseWidgetsRes> {\n return this.httpClient.get<CaseWidgetsRes>(\n this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`)\n );\n }\n\n public getWidgetData(\n documentId: string,\n tabKey: string,\n widgetKey: string,\n queryParams?: string\n ): Observable<object> {\n return this.httpClient.get<object>(\n this.getApiUrl(\n !queryParams\n ? `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}`\n : `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}?${queryParams}`\n ),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\n );\n }\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n take,\n} from 'rxjs';\nimport {CaseWidgetWithUuid} from '../models';\nimport {WIDGET_WIDTH_1X} from '../constants';\nimport Muuri from 'muuri';\n\n@Injectable({providedIn: 'root'})\nexport class DossierWidgetsLayoutService implements OnDestroy {\n private readonly _containerWidthSubject$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetsSubject$ = new BehaviorSubject<CaseWidgetWithUuid[] | null>(null);\n private readonly _caseWidgetDataLoadedSubject$ = new BehaviorSubject<string[] | null>(null);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n private get _muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n private get _containerWidth$(): Observable<number> {\n return this._containerWidthSubject$.pipe(filter(width => width !== null));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this._containerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_WIDTH_1X))\n );\n }\n\n private get _widgets$(): Observable<CaseWidgetWithUuid[]> {\n return this._widgetsSubject$.pipe(filter(widgets => widgets !== null));\n }\n\n private get _caseWidgetDataLoaded$(): Observable<string[]> {\n return this._caseWidgetDataLoadedSubject$.pipe(filter(loaded => loaded !== null));\n }\n\n private readonly _widgetsWithExternalData$ = new BehaviorSubject<string[]>([]);\n private readonly _widgetsWithExternalDataReady$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public get loaded$(): Observable<boolean> {\n return combineLatest([\n this._caseWidgetDataLoaded$,\n this._widgets$,\n this._widgetsWithExternalData$,\n this._widgetsWithExternalDataReady$,\n this._containerWidth$,\n ]).pipe(\n map(\n ([caseWidgetDataLoaded, widgets, widgetsWithExternalData, widgetsWithExternalDataReady]) =>\n caseWidgetDataLoaded?.length === widgets.length &&\n widgetsWithExternalData.length === widgetsWithExternalDataReady.length\n ),\n filter(loaded => !!loaded)\n );\n }\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n public setWidgets(widgets: CaseWidgetWithUuid[]): void {\n this._widgetsSubject$.next(widgets);\n }\n\n public setWidgetWithExternalData(uuid: string): void {\n this._widgetsWithExternalData$.pipe(take(1)).subscribe(widgetsWithExternalData => {\n this._widgetsWithExternalData$.next([...widgetsWithExternalData, uuid]);\n });\n }\n\n public setWidgetWithExternalDataReady(uuid: string): void {\n this._widgetsWithExternalDataReady$.pipe(take(1)).subscribe(widgetsWithExternalDataReady => {\n this._widgetsWithExternalDataReady$.next([...widgetsWithExternalDataReady, uuid]);\n });\n }\n\n public setContainerWidth(width: number): void {\n this._containerWidthSubject$.next(width);\n }\n\n public setCaseWidgetDataLoaded(uuid: string): void {\n this._caseWidgetDataLoadedSubject$.pipe(take(1)).subscribe(caseWidgetDataLoaded => {\n if (!(caseWidgetDataLoaded || []).includes(uuid)) {\n this._caseWidgetDataLoadedSubject$.next([...(caseWidgetDataLoaded || []), uuid]);\n }\n });\n }\n\n public reset(): void {\n this._containerWidthSubject$.next(null);\n this._widgetsSubject$.next(null);\n this._caseWidgetDataLoadedSubject$.next(null);\n this._widgetsWithExternalData$.next([]);\n this._widgetsWithExternalDataReady$.next([]);\n this._muuriSubject$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FormDisplayType, FormSize, TaskWithProcessLink} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith} from 'rxjs';\nimport {\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH,\n DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n DOSSIER_DETAIL_TASK_LIST_WIDTH,\n} from '../constants';\nimport {DossierDetailLayout} from '../models';\nimport {DossierTabService} from './dossier-tab.service';\n\n@Injectable()\nexport class DossierDetailLayoutService {\n private readonly _tabContentContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _showTaskList$ = this.dossierTabService.showTaskList$;\n private readonly _taskAndProcessLinkOpenedInPanel$ =\n new BehaviorSubject<TaskWithProcessLink | null>(null);\n private readonly _formDisplayType$ = new BehaviorSubject<FormDisplayType>(\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE\n );\n private readonly _formDisplaySize$ = new BehaviorSubject<FormSize>(\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE\n );\n\n public get tabContentContainerWidth$(): Observable<number> {\n return this._tabContentContainerWidth$.pipe(filter(width => typeof width === 'number'));\n }\n\n public get taskAndProcessLinkOpenedInPanel$(): Observable<TaskWithProcessLink | null> {\n return this._taskAndProcessLinkOpenedInPanel$.asObservable();\n }\n\n public get formDisplaySize$(): Observable<FormSize> {\n return this._formDisplaySize$.asObservable();\n }\n\n constructor(private readonly dossierTabService: DossierTabService) {}\n\n public readonly dossierDetailLayout$: Observable<DossierDetailLayout | any> = combineLatest([\n this.tabContentContainerWidth$,\n this._showTaskList$,\n this._taskAndProcessLinkOpenedInPanel$,\n this._formDisplayType$,\n this._formDisplaySize$,\n ]).pipe(\n map(\n ([\n tabContentContainerWidth,\n showTaskList,\n taskAndProcessLinkOpenedInPanel,\n formDisplayType,\n formDisplaySize,\n ]) => {\n if (!showTaskList) {\n return this.getInitialLayout();\n }\n\n if (!taskAndProcessLinkOpenedInPanel) {\n return this.getTaskListLayout();\n }\n\n if (taskAndProcessLinkOpenedInPanel && formDisplayType === 'panel') {\n return this.getPanelLayout(tabContentContainerWidth, formDisplaySize);\n }\n\n return {} as DossierDetailLayout;\n }\n ),\n startWith({})\n );\n\n public setTabContentContainerWidth(width: number): void {\n this._tabContentContainerWidth$.next(width);\n }\n\n public setTaskAndProcessLinkOpenedInPanel(value: TaskWithProcessLink | null): void {\n this._taskAndProcessLinkOpenedInPanel$.next(value);\n }\n\n public setFormDisplayType(type: FormDisplayType): void {\n this._formDisplayType$.next(type);\n }\n\n public setFormDisplaySize(size: FormSize): void {\n this._formDisplaySize$.next(size);\n }\n\n private getInitialLayout(): DossierDetailLayout {\n return {\n showRightPanel: false,\n widthAdjustable: false,\n unit: 'percent',\n leftPanelWidth: '*',\n };\n }\n\n private getTaskListLayout(): DossierDetailLayout {\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: false,\n rightPanelMaxWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n rightPanelMinWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n rightPanelWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n leftPanelWidth: '*',\n };\n }\n\n private getPanelLayout(\n tabContentContainerWidth: number,\n formDisplaySize: FormSize\n ): DossierDetailLayout {\n const rightPanelMaxWidth =\n tabContentContainerWidth - DOSSIER_DETAIL_GUTTER_SIZE - DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH;\n const rightPanelMinWidth = DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS[formDisplaySize];\n const rightPanelMinWidthToUse =\n rightPanelMinWidth < rightPanelMaxWidth ? rightPanelMinWidth : rightPanelMaxWidth;\n\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: true,\n rightPanelMinWidth: rightPanelMinWidthToUse,\n rightPanelWidth: rightPanelMinWidthToUse,\n rightPanelMaxWidth,\n leftPanelWidth: '*',\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dossier-bulk-assign.service';\nexport * from './dossier-column.service';\nexport * from './dossier-parameter.service';\nexport * from './dossier-list.service';\nexport * from './dossier-list-assignee.service';\nexport * from './dossier-list-pagination.service';\nexport * from './dossier-list-search.service';\nexport * from './dossier-tab.service';\nexport * from './dossier.service';\nexport * from './dossier-tab-api.service';\nexport * from './dossier-list-status.service';\nexport * from './start-modal.service';\nexport * from './dossier-widgets-api.service';\nexport * from './dossier-widgets-layout.service';\nexport * from './dossier-detail-layout.service';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {map, Observable} from 'rxjs';\nimport {CandidateUser} from '../../models';\nimport {DossierBulkAssignService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-bulk-assign-modal',\n templateUrl: './dossier-bulk-assign-modal.component.html',\n styleUrls: ['./dossier-bulk-assign-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierBulkAssignModalComponent {\n @HostBinding('class') public modalClass = 'valtimo-dossier-bulk-assign-modal';\n\n @Input() public set documentIds(value: string[]) {\n if (!value.length) {\n return;\n }\n this.bulkAssignService.loadCandidateUsers(value);\n }\n @Input() open = false;\n\n @Output() closeEvent = new EventEmitter<string | null>();\n\n public candidateUsers$: Observable<ListItem[]> = this.bulkAssignService.candidateUsers$.pipe(\n map((candidateUsers: CandidateUser[]) =>\n candidateUsers.map((candidateUser: CandidateUser) => ({\n id: candidateUser.id,\n content: `${candidateUser.firstName} ${candidateUser.lastName}`,\n selected: this.formGroup.get('assignee')?.value?.id === candidateUser.id,\n }))\n )\n );\n\n public formGroup: FormGroup = this.fb.group({\n assignee: this.fb.control({id: '', content: '', selected: false}, Validators.required),\n });\n\n constructor(\n private bulkAssignService: DossierBulkAssignService,\n private fb: FormBuilder\n ) {}\n\n public closeModal(confirm?: boolean): void {\n const assignee: ListItem | null = this.formGroup.get('assignee')?.value ?? null;\n if (!assignee) {\n this.closeEvent.emit(null);\n return;\n }\n\n this.closeEvent.emit(confirm ? assignee.id : null);\n this.formGroup.reset();\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'dossier.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form *ngIf=\"candidateUsers$ | async as candidateUsers\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"candidateUsers\"\n [label]=\"'dossier.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'dossier.bulkAssign.modal.selectPlaceholder' | translate\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"closeModal(true)\">\n {{ 'dossier.bulkAssign.modal.confirm' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n repeat,\n switchMap,\n tap,\n} from 'rxjs';\nimport {LayerModule, LoadingModule, TagModule, TilesModule} from 'carbon-components-angular';\nimport {\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailModalComponent,\n TaskModule,\n} from '@valtimo/task';\nimport {ProcessService} from '@valtimo/process';\nimport {DocumentService} from '@valtimo/document';\nimport {ActivatedRoute} from '@angular/router';\nimport {PermissionService} from '@valtimo/access-control';\nimport {UserProviderService} from '@valtimo/security';\nimport moment from 'moment';\nimport {DossierDetailLayoutService} from '../../services';\nimport {ProcessLinkService, TaskWithProcessLink} from '@valtimo/process-link';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-task-list',\n templateUrl: './dossier-detail-task-list.component.html',\n styleUrls: ['./dossier-detail-task-list.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NgbTooltipModule,\n TranslateModule,\n WidgetModule,\n LoadingModule,\n TaskModule,\n TilesModule,\n LayerModule,\n TagModule,\n CarbonListModule,\n ],\n})\nexport class DossierDetailTaskListComponent {\n @ViewChild('taskDetail') private readonly _taskDetailModal: TaskDetailModalComponent;\n\n @Input() public set openTaskAndProcessLinkInModal(value: TaskWithProcessLink) {\n if (value) this._taskDetailModal.openTaskAndProcessLinkDetails(value);\n }\n\n @Output() public readonly taskClickEvent = new EventEmitter<TaskWithProcessLink>();\n @Output() public readonly formSubmitEvent = new EventEmitter();\n\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly processInstanceTasks$: Observable<{\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n }> = this._refresh$.pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId =>\n this.documentService\n .findProcessDocumentInstances(documentId)\n .pipe(repeat({count: 5, delay: 1500}))\n ),\n switchMap(processDocumentInstances =>\n combineLatest([\n ...processDocumentInstances.map(processDocumentInstance =>\n this.processLinkService.getTasksWithProcessLinks(\n processDocumentInstance.id.processInstanceId\n )\n ),\n ])\n ),\n map(res => res.reduce((acc, curr) => [...acc, ...curr], [])),\n switchMap(tasksWithProcessLinks =>\n combineLatest([\n of(tasksWithProcessLinks),\n ...(tasksWithProcessLinks || []).map(taskWithProcessLink =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: taskWithProcessLink.task.id,\n })\n ),\n ])\n ),\n map(res => {\n const tasksWithProcessLinks = res[0] || [];\n const permissions = res?.filter((_, index) => index !== 0) as boolean[];\n const mappedTasksWithProcessLinks = this.mapTasksWithProcessLinks(\n tasksWithProcessLinks,\n permissions\n );\n const uniqueTasksWithProcessLinks = this.getUniqueTasksWithProcessLinks(\n mappedTasksWithProcessLinks\n );\n\n return this.getSortedTasksWithProcessLinks(uniqueTasksWithProcessLinks);\n }),\n map(tasksWithProcessLinks => this.sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks)),\n tap(() => this.loadingTasks$.next(false))\n );\n\n public readonly formSize$ = this.dossierDetailLayoutService.formDisplaySize$;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly userProviderService: UserProviderService,\n private readonly dossierDetailLayoutService: DossierDetailLayoutService,\n private readonly processLinkService: ProcessLinkService\n ) {}\n\n public rowTaskClick(tasWithProcessLinkk: TaskWithProcessLink): void {\n if (tasWithProcessLinkk.task.isLocked) return;\n\n this.taskClickEvent.emit(tasWithProcessLinkk);\n }\n\n public onFormSubmit(): void {\n this.formSubmitEvent.emit();\n this.refresh();\n }\n\n public refresh(): void {\n this._refresh$.next(null);\n }\n\n private mapTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[],\n permissions: boolean[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.map((taskWithProcessLink, index) => ({\n ...taskWithProcessLink,\n task: {\n ...taskWithProcessLink.task,\n createdUnix: moment(taskWithProcessLink.task.created).unix(),\n created: moment(taskWithProcessLink.task.created).format('DD MMM YYYY HH:mm'),\n ...(taskWithProcessLink.task.due && {dueUnix: moment(taskWithProcessLink.task.due).unix()}),\n isLocked: !permissions[index],\n },\n }));\n }\n\n private getUniqueTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.reduce((acc, curr) => {\n if (!acc.find(taskWithProcessLink => taskWithProcessLink.task.id === curr.task.id)) {\n return [...acc, curr];\n }\n return acc;\n }, [] as TaskWithProcessLink[]);\n }\n\n private getSortedTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.sort((t1, t2) => {\n // high priority tasks on top\n if (t2.task.priority !== t1.task.priority) {\n return t2.task.priority - t1.task.priority;\n }\n\n // task with approaching due date on top\n const due1 = t1?.task.dueUnix || Number.MAX_VALUE;\n const due2 = t2?.task.dueUnix || Number.MAX_VALUE;\n if (due1 !== due2) {\n return due1 - due2;\n }\n\n // new task on top\n const createdCompare = t2.task.createdUnix / 5000 - t1.task.createdUnix / 5000;\n if (createdCompare !== 0) {\n return createdCompare;\n }\n\n // task with approximately the same age, are sorted by name\n return t1.task.name.localeCompare(t2.task.name);\n });\n }\n\n private sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks: TaskWithProcessLink[]): {\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n } {\n return tasksWithProcessLinks.reduce(\n (acc, curr) =>\n !curr.task.isLocked\n ? {...acc, myTasks: [...acc.myTasks, curr]}\n : {...acc, otherTasks: [...acc.otherTasks, curr]},\n {myTasks: [] as TaskWithProcessLink[], otherTasks: [] as TaskWithProcessLink[]}\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (\n subtitle of taskWithProcessLink?.processLinkActivityResult?.properties?.subtitles || [];\n track subtitle\n ) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {PageHeaderService} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {\n AssignUserToTaskComponent,\n CAN_ASSIGN_TASK_PERMISSION,\n IntermediateSubmission,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\n\n@Component({\n selector: 'valtimo-dossier-detail-task-detail',\n templateUrl: './dossier-detail-task-detail.component.html',\n styleUrl: './dossier-detail-task-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n ButtonModule,\n IconModule,\n AssignUserToTaskComponent,\n ],\n})\nexport class DossierDetailsTaskDetailComponent implements OnDestroy {\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.taskAndProcessLink$.next(value);\n this.pageValue.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task?.created}`,\n });\n }\n @Output() public readonly closeEvent = new EventEmitter();\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n @Output() public readonly formSubmit = new EventEmitter();\n\n public readonly compactMode$: Observable<boolean> = this.pageHeaderService.compactMode$;\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task$ = this.taskAndProcessLink$.pipe(\n map(taskAndProcessLink => taskAndProcessLink.task)\n );\n public readonly canAssignUserToTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly intermediateSaveValue$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n public readonly pageValue = signal<{title: string; subtitle: string}>({\n title: '',\n subtitle: '',\n });\n public enableIntermediateSave = false;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService\n ) {\n this.enableIntermediateSave = !!this.configService.featureToggles?.enableIntermediateSave;\n }\n\n public ngOnDestroy(): void {\n this.closeEvent.emit();\n }\n\n public onClose(): void {\n this.closeEvent.emit();\n this.onActiveChangeEvent(false);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.intermediateSaveValue$.next(value);\n this.onActiveChangeEvent(false);\n }\n\n public onActiveChangeEvent(activeChange: boolean): void {\n this.activeChange.emit(activeChange);\n }\n\n public onFormSubmitEvent(): void {\n this.formSubmit.emit();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <valtimo-assign-user-to-task\n *ngIf=\"obs.task && obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ModalComponent,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {ProcessDocumentDefinition} from '@valtimo/document';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormSubmissionResult,\n ProcessLinkService,\n} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-supporting-process-start-modal',\n templateUrl: './dossier-supporting-process-start-modal.component.html',\n styleUrls: ['./dossier-supporting-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierSupportingProcessStartModalComponent {\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('supportingProcessStartModal', {static: false}) modal: ModalComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n\n @Input() isAdmin: boolean;\n @Output() formSubmit = new EventEmitter();\n\n protected isFormViewModel = false;\n public isUIComponent = false;\n\n public readonly processDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly documentDefinitionName$ = new BehaviorSubject<string>('');\n public readonly processName$ = new BehaviorSubject<string>('');\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formioSubmission$ = new BehaviorSubject<FormioSubmission>(undefined);\n public readonly processLinkId$ = new BehaviorSubject<string>('');\n public readonly options$ = new BehaviorSubject<ValtimoFormioOptions>(undefined);\n public readonly submission$ = new BehaviorSubject<object>(undefined);\n public readonly processDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly documentId$ = new BehaviorSubject<string>(undefined);\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n constructor(\n private readonly router: Router,\n private readonly processService: ProcessService,\n private readonly processLinkService: ProcessLinkService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n private loadProcessLink(): void {\n combineLatest([this.processDefinitionId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processDefinitionId, documentId]) =>\n this.processService.getProcessDefinitionStartProcessLink(\n processDefinitionId,\n documentId,\n null\n )\n )\n )\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition$.next(startProcessResult.properties.prefilledForm);\n this.processLinkId$.next(startProcessResult.processLinkId);\n break;\n case 'form-flow':\n this.formFlowInstanceId$.next(startProcessResult.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.formDefinition$.next(startProcessResult.properties.formDefinition);\n this.setFormViewModelComponent(startProcessResult.properties.formName);\n this.modal.show();\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n this.modal.show();\n break;\n }\n this.modal.show();\n }\n });\n }\n\n public openModal(processDocumentDefinition: ProcessDocumentDefinition, documentId: string): void {\n this.documentId$.next(documentId);\n this.documentDefinitionName$.next(processDocumentDefinition.id.documentDefinitionId.name);\n this.processDefinitionKey$.next(processDocumentDefinition.id.processDefinitionKey);\n this.processDefinitionId$.next(processDocumentDefinition.latestVersionId);\n this.processName$.next(processDocumentDefinition.processName);\n\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n options.setHooks(formioBeforeSubmit);\n\n this.options$.next(options);\n\n this.loadProcessLink();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.formioSubmission$.next(submission);\n\n if (this.processLinkId$.getValue()) {\n combineLatest([this.processLinkId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processLinkId, documentId]) =>\n this.processLinkService.submitForm(processLinkId, submission.data, documentId)\n )\n )\n .subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.formSubmitted();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n }\n\n public formSubmitted(): void {\n this.modal.hide();\n this.formSubmit.emit();\n this.formDefinition$.next(null);\n }\n\n public gotoFormLinkScreen(): void {\n this.modal.hide();\n this.router.navigate(['process-links'], {\n queryParams: {process: this.processDefinitionKey$.getValue()},\n });\n }\n\n private setFormViewModelComponent(formName: string): void {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n\n combineLatest([\n this.formDefinition$,\n this.processDefinitionKey$,\n this.documentDefinitionName$,\n this.options$,\n this.documentId$,\n ])\n .pipe(take(1))\n .subscribe(([form, processDefinitionKey, documentDefinitionName, options, documentId]) => {\n formViewModelComponent.instance.formName = formName;\n formViewModelComponent.instance.form = form;\n formViewModelComponent.instance.processDefinitionKey = processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = documentDefinitionName;\n formViewModelComponent.instance.options = options;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.documentId = documentId;\n });\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.formSubmitted();\n });\n\n this.isFormViewModel = true;\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n combineLatest([this.processDefinitionKey$, this.documentDefinitionName$])\n .pipe(take(1))\n .subscribe(([processDefinitionKey, documentDefinitionName]) => {\n renderedComponent.instance.processDefinitionKey = processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = documentDefinitionName;\n });\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.formSubmitted();\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #supportingProcessStartModal\n elementId=\"supportingProcessStartModal\"\n [title]=\"\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n \"\n>\n <div body *ngIf=\"!isFormViewModel && formDefinition$ | async as formDefinition\">\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n </div>\n <div body *ngIf=\"formFlowInstanceId$ | async as formFlowInstanceId\">\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n\n <ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n >\n <div body *ngIf=\"!obs.formDefinition && !obs.formFlowInstanceId && !isUIComponent\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DropdownItem} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {NamedUser} from '@valtimo/config';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-assign-user',\n templateUrl: './dossier-assign-user.component.html',\n styleUrls: ['./dossier-assign-user.component.css'],\n})\nexport class DossierAssignUserComponent {\n @Input() set documentId(value: string) {\n this.documentId$.next(value);\n }\n @Input() set assigneeId(value: string) {\n this.assigneeId$.next(value);\n }\n @Input() set assigneeFullName(value: string) {\n this.assigneeFullName$.next(value);\n }\n @Input() hasPermission = true;\n @Output() assignmentOfDocumentChanged = new EventEmitter();\n\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n public readonly documentId$ = new BehaviorSubject<string>('');\n public readonly userItems$: Observable<Array<DropdownItem>> = this.documentId$.pipe(\n filter(documentId => !!documentId),\n switchMap(documentId =>\n this.hasPermission ? this.documentService.getCandidateUsers(documentId) : of([])\n ),\n map(candidateUsers => this.mapUsersForDropdown(candidateUsers)),\n tap(() => this.enable())\n );\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly assigneeFullName$ = new BehaviorSubject<string>('');\n\n constructor(private readonly documentService: DocumentService) {}\n\n public assignDocument(userId: string): void {\n this.disable();\n\n this.documentId$\n .pipe(\n switchMap(documentId => this.documentService.assignHandlerToDocument(documentId, userId))\n )\n .subscribe(() => {\n this.emitChange();\n this.enable();\n });\n }\n\n public unassignDocument(): void {\n this.disable();\n\n this.documentId$\n .pipe(switchMap(documentId => this.documentService.unassignHandlerFromDocument(documentId)))\n .subscribe(() => {\n this.emitChange();\n this.enable();\n });\n }\n\n private mapUsersForDropdown(users: NamedUser[]): DropdownItem[] {\n return users\n .sort((a, b) => {\n if (a.lastName && b.lastName) {\n return a.lastName.localeCompare(b.lastName);\n }\n\n return 0;\n })\n .map(user => ({text: user.label, id: user.id}));\n }\n\n private emitChange(): void {\n this.assignmentOfDocumentChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngTemplateOutlet=\"content\"> </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n assigneeFullName: assigneeFullName$ | async,\n assigneeId: assigneeId$ | async,\n } as obs\"\n >\n <ng-container *ngIf=\"!hasPermission && obs.assigneeFullName\">\n <ng-container *ngTemplateOutlet=\"fullName; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasPermission\">\n <ng-container *ngTemplateOutlet=\"selectUser; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #fullName let-obs=\"obs\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [hasPermission]=\"false\"\n [hasSelection]=\"true\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n</ng-template>\n\n<ng-template #selectUser let-obs=\"obs\">\n <ng-container *ngIf=\"userItems$ | async as userItems; else loadingUsers\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [disabled]=\"obs.disabled\"\n [hasPermission]=\"hasPermission\"\n [showClearSelection]=\"false\"\n [hasSelection]=\"obs.assigneeId\"\n [items]=\"userItems\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n (clearSelection)=\"unassignDocument()\"\n (itemSelected)=\"assignDocument($event)\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n</ng-template>\n\n<ng-template #loadingUsers>\n <h5>\n <b>{{ 'assignDocument.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {map, Observable, of} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TabImpl} from '../../models';\n\n@Pipe({\n name: 'tabTranslate',\n})\nexport class TabTranslatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n transform(tab: TabImpl): Observable<string> {\n const translationId = 'dossier.tabs.' + tab.name;\n\n return tab.title\n ? of(tab.title)\n : this.translateService\n .stream(translationId)\n .pipe(map(translation => (translationId !== translation ? translation : tab.name)));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n Inject,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationStart, ParamMap, Params, Router} from '@angular/router';\nimport {ChevronDown16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n BreadcrumbService,\n CARBON_CONSTANTS,\n CdsThemeService,\n CurrentCarbonTheme,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {\n CaseStatusService,\n Document as ValtimoDocument,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n ProcessDocumentDefinition,\n} from '@valtimo/document';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {IntermediateSubmission} from '@valtimo/task';\nimport {IconService, NotificationService} from 'carbon-components-angular';\nimport {KeycloakService} from 'keycloak-angular';\nimport moment from 'moment';\nimport {NGXLogger} from 'ngx-logger';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n startWith,\n Subject,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n} from '../../constants';\nimport {TabImpl, TabLoaderImpl} from '../../models';\nimport {\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {DossierDetailLayoutService, DossierService, DossierTabService} from '../../services';\nimport {DossierSupportingProcessStartModalComponent} from '../dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component';\nimport {WidgetsService} from './tab/widgets/widgets.service';\n\n@Component({\n selector: 'valtimo-dossier-detail',\n templateUrl: './dossier-detail.component.html',\n styleUrls: ['./dossier-detail.component.scss'],\n providers: [DossierTabService, DossierDetailLayoutService, NotificationService],\n})\nexport class DossierDetailComponent\n extends PendingChangesComponent\n implements AfterViewInit, OnDestroy\n{\n @ViewChild('supportingProcessStartModal')\n supportingProcessStart: DossierSupportingProcessStartModalComponent;\n\n @ViewChild('tabContainer', {read: ViewContainerRef})\n viewContainerRef: ViewContainerRef;\n\n @ViewChild('tabContentContainer')\n private readonly _tabContentContainer!: ElementRef<HTMLDivElement>;\n\n public customDossierHeaderItems: Array<any> = [];\n public document: ValtimoDocument | null = null;\n public documentDefinitionName: string;\n public documentDefinitionNameTitle: string;\n public documentId: string;\n public processDefinitionListFields: Array<any> = [];\n public processDocumentDefinitions: (ProcessDocumentDefinition & {displayName?: string})[] = [];\n public tabLoader: TabLoaderImpl | null = null;\n\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(\n null\n );\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n\n public readonly taskAndProcessLinkOpenedInPanel$ =\n this.dossierDetailLayoutService.taskAndProcessLinkOpenedInPanel$;\n\n private readonly _caseStatusKey$ = new BehaviorSubject<string | null | 'NOT_AVAILABLE'>(null);\n private readonly _taskPanelToggle = this.configService.featureToggles?.enableTaskPanel;\n\n public readonly dropdownWidth$ = new BehaviorSubject<number>(\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n );\n public readonly caseStatusKey$: Observable<string | 'NOT_AVAILABLE'> = this._caseStatusKey$.pipe(\n filter(key => !!key)\n );\n\n public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n public readonly canView$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly document$: Observable<ValtimoDocument | null> = combineLatest([\n this.dossierService.refreshDocument$,\n this.canView$,\n ]).pipe(\n filter(([_, canView]) => canView),\n switchMap(() => this.route.params),\n map((params: Params) => params?.documentId),\n switchMap((documentId: string) =>\n documentId ? this.documentService.getDocument(this.documentId) : of(null)\n ),\n tap((document: ValtimoDocument | null) => {\n if (document) {\n this.assigneeId$.next(document.assigneeId);\n this.document = document;\n this._caseStatusKey$.next(document?.internalStatus || 'NOT_AVAILABLE');\n\n if (\n this.configService.config.customDossierHeader?.hasOwnProperty(\n this.documentDefinitionName.toLowerCase()\n ) &&\n this.customDossierHeaderItems.length === 0\n ) {\n this.configService.config.customDossierHeader[\n this.documentDefinitionName.toLowerCase()\n ]?.forEach(item => this.getCustomDossierHeaderItem(item));\n }\n }\n })\n );\n\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.documentDefinitionName || '')\n );\n\n public readonly caseStatus$: Observable<InternalCaseStatus | undefined> =\n this.documentDefinitionName$.pipe(\n filter(documentDefinitionName => !!documentDefinitionName),\n switchMap(documentDefinitionName =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(documentDefinitionName),\n this.caseStatusKey$,\n ])\n ),\n map(\n ([statuses, key]) => key !== 'NOT_AVAILABLE' && statuses.find(status => status?.key === key)\n ),\n map(\n status =>\n status && {\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }\n )\n );\n\n public readonly userId$: Observable<string | undefined> = of(\n this.keyCloakService.isLoggedIn()\n ).pipe(\n switchMap(() => this.keyCloakService.loadUserProfile()),\n map(profile => profile?.id)\n );\n\n public readonly isAssigning$ = new BehaviorSubject<boolean>(false);\n public readonly isAssignedToCurrentUser$: Observable<boolean> = combineLatest([\n this.assigneeId$,\n this.userId$,\n ]).pipe(\n map(([assigneeId, userId]) => !!assigneeId && !!userId && assigneeId === userId),\n startWith(true)\n );\n\n public readonly canHaveAssignee$: Observable<boolean> = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettings(documentDefinitionName)\n ),\n map(caseSettings => caseSettings?.canHaveAssignee)\n );\n\n public readonly canAssignLoaded$ = new BehaviorSubject<boolean>(false);\n public readonly canAssign$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n ),\n tap(() => {\n this.canAssignLoaded$.next(true);\n })\n );\n\n public readonly canClaim$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_CLAIM_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly isDeleting$ = new BehaviorSubject<boolean>(false);\n public readonly canDelete$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_DELETE_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly loadingTabs$ = new BehaviorSubject<boolean>(true);\n public readonly noTabsConfigured$ = new BehaviorSubject<boolean>(false);\n public readonly showNoAccess$ = new BehaviorSubject<boolean>(false);\n public activeTab$: Observable<TabImpl>;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly tabHorizontalOverflowDisabled =\n this.dossierTabService.tabHorizontalOverflowDisabled;\n\n public readonly showTaskList$ = this.dossierTabService.showTaskList$;\n\n private readonly _activeTabName$ = new BehaviorSubject<string | null>(null);\n public get activeTabName$(): Observable<string | null> {\n return combineLatest([this.route.paramMap, this._activeTabName$]).pipe(\n map(([paramMap, activeTabName]) =>\n !activeTabName ? (paramMap.get('tab') ?? null) : activeTabName\n )\n );\n }\n\n public readonly DOSSIER_DETAIL_GUTTER_SIZE = DOSSIER_DETAIL_GUTTER_SIZE;\n\n public readonly dossierDetailLayout$ = this.dossierDetailLayoutService.dossierDetailLayout$;\n\n public readonly openTaskAndProcessLinkInModal$ = new Subject<TaskWithProcessLink>();\n\n public readonly isDarkMode$ = this.cdsThemeService.currentTheme$.pipe(\n map(currentTheme => currentTheme === CurrentCarbonTheme.G90)\n );\n\n private _snapshot: ParamMap;\n private _initialTabName: string;\n private _activeChange = false;\n private _oldTabName: string;\n private _pendingTab: TabImpl;\n private _observer!: ResizeObserver;\n private _tabsInit = false;\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseStatusService: CaseStatusService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly dossierDetailLayoutService: DossierDetailLayoutService,\n private readonly dossierService: DossierService,\n private readonly dossierTabService: DossierTabService,\n private readonly iconService: IconService,\n private readonly keyCloakService: KeycloakService,\n private readonly logger: NGXLogger,\n private readonly notificationService: NotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly renderer: Renderer2,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly widgetsService: WidgetsService,\n private readonly userProviderService: UserProviderService,\n @Inject(DOCUMENT) private readonly htmlDocument: Document\n ) {\n super();\n this._snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = this._snapshot.get('documentDefinitionName') || '';\n this.documentId = this._snapshot.get('documentId') || '';\n }\n\n public ngAfterViewInit(): void {\n this.initTabLoader();\n this.initBreadcrumb();\n this.openWidthObserver();\n this.pageTitleService.disableReset();\n this.iconService.registerAll([ChevronDown16]);\n this.setDocumentStyle();\n this.enableResetOnBackNavigation();\n this.openWidgetProcessSubscription();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.pageTitleService.enableReset();\n this.removeDocumentStyle();\n this._subscriptions.unsubscribe();\n }\n\n public getAllAssociatedProcessDefinitions(): void {\n this._subscriptions.add(\n combineLatest([\n this.documentService.findProcessDocumentDefinitionsForDocument(this.documentId, {\n startableByUser: true,\n }),\n this.translateService.stream('key'),\n ]).subscribe(([processDocumentDefinitions]) => {\n this.processDocumentDefinitions = this.mapProcessDocumentDefinitions(\n processDocumentDefinitions\n );\n this.setProcessDropdownWidth();\n\n this.processDefinitionListFields = [\n {\n key: 'processName',\n label: 'Proces',\n },\n ];\n })\n );\n }\n\n public startProcess(processDocumentDefinition: ProcessDocumentDefinition): void {\n this.supportingProcessStart.openModal(processDocumentDefinition, this.documentId);\n }\n\n public openWidgetProcessSubscription(): void {\n this._subscriptions.add(\n this.widgetsService.startProcessEvent\n .pipe(switchMap(() => this.widgetsService.activeProcess$))\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n this.startProcess(processDocumentDefinitions[0]);\n })\n );\n }\n\n public claimAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.assignHandlerToDocument(this.documentId, userId ?? '')\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.dossierService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while assigning user to case');\n },\n });\n }\n\n public unassignAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.unassignHandlerFromDocument(this.documentId)\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.dossierService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while unassigning user from case');\n },\n });\n }\n\n public deleteDocument(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onConfirmDelete(): void {\n this.isDeleting$.next(true);\n this.documentService.deleteDocument(this.documentId).subscribe({\n next: (): void => {\n this.isDeleting$.next(false);\n this.showDeleteModal$.next(false);\n this.router.navigate([`/dossiers/${this.documentDefinitionName}`]);\n },\n error: (): void => {\n this.isDeleting$.next(false);\n this.logger.debug('Something went wrong while deleting the case');\n },\n });\n }\n\n public onTaskClickEvent(taskProcessLinkResult: TaskWithProcessLink): void {\n if (!taskProcessLinkResult.processLinkActivityResult) {\n this.isAdmin$.pipe(take(1)).subscribe(isAdmin => {\n this.handleNoTaskProcessLink(isAdmin);\n });\n return;\n }\n\n const displayType =\n taskProcessLinkResult.processLinkActivityResult.properties.formDisplayType ||\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE;\n const size =\n taskProcessLinkResult.processLinkActivityResult.properties.formSize ||\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE;\n\n this.dossierDetailLayoutService.setFormDisplaySize(size);\n this.dossierDetailLayoutService.setFormDisplayType(displayType);\n\n if (displayType === 'panel' && !!this._taskPanelToggle) {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(taskProcessLinkResult);\n } else {\n this.openTaskAndProcessLinkInModal$.next({...taskProcessLinkResult});\n }\n }\n\n public onTaskDetailsClose(): void {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n public onActiveChangeEvent(event: boolean): void {\n this._activeChange = event;\n }\n\n public onTabSelected(tab: TabImpl, activeTab: TabImpl): void {\n if (!this.tabLoader) return;\n\n if (!this._tabsInit) {\n this._tabsInit = true;\n return;\n }\n\n this._oldTabName = activeTab.name;\n this._pendingTab = tab;\n this._activeTabName$.next(tab.name);\n this.pendingChanges =\n tab.contentKey === 'summary' ? false : !tab.showTasks && this._activeChange;\n\n if (this.pendingChanges) {\n this.tabLoader.replaceUrlState(tab);\n return;\n }\n\n if (!tab.showTasks) this.openTaskAndProcessLinkInModal$.next(null);\n this.tabLoader.load(tab);\n this.setDocumentStyle();\n }\n\n public onFormSubmitEvent(): void {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n\n if (!this.tabLoader) return;\n this.tabLoader.refreshView();\n }\n\n protected onConfirmRedirect(): void {\n if (!this.tabLoader || !this._pendingTab) return;\n this._activeChange = false;\n this._activeTabName$.next(this._pendingTab.name);\n this.tabLoader.load(this._pendingTab);\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n protected onCancelRedirect(): void {\n if (!this.tabLoader) return;\n this._activeTabName$.next(this._oldTabName);\n }\n\n private initBreadcrumb(): void {\n this.documentService\n .getDocumentDefinition(this.documentDefinitionName)\n .subscribe(definition => {\n this.documentDefinitionNameTitle = definition.schema.title;\n this.setBreadcrumb();\n });\n }\n\n private initTabLoader(): void {\n combineLatest([this.dossierTabService.tabs$, this.canView$])\n .pipe(take(1))\n .subscribe(([tabs, canView]) => {\n if (canView) {\n if (tabs?.length > 0) {\n this._initialTabName = this._snapshot.get('tab') ?? '';\n this.tabLoader = new TabLoaderImpl(\n tabs,\n this.componentFactoryResolver,\n this.viewContainerRef,\n this.router,\n this.route\n );\n this.tabLoader.initial(this._initialTabName);\n this.dossierTabService.setTabLoader(this.tabLoader);\n this.loadingTabs$.next(false);\n this.activeTab$ = this.tabLoader.activeTab$;\n } else {\n this.noTabsConfigured$.next(true);\n this.loadingTabs$.next(false);\n }\n\n this.getAllAssociatedProcessDefinitions();\n } else {\n this.showNoAccess$.next(true);\n this.loadingTabs$.next(false);\n }\n });\n }\n\n public assignmentOfDocumentChanged(): void {\n this.dossierService.refresh();\n }\n\n private getCustomDossierHeaderItem(item): void {\n this.customDossierHeaderItems.push({\n label: item['labelTranslationKey'] || '',\n columnSize: item['columnSize'] || 3,\n textSize: item['textSize'] || 'md',\n customClass: item['customClass'] || '',\n modifier: item['modifier'] || '',\n value: item['propertyPaths']?.reduce(\n (prev, curr) => prev + this.getStringFromDocumentPath(item, curr),\n ''\n ),\n });\n }\n\n private getStringFromDocumentPath(item, path): string {\n const prefix = item['propertyPaths'].indexOf(path) > 0 ? ' ' : '';\n let string = this.getNestedProperty(this.document.content, path, item['noValueText']) || '';\n const dateFormats = [moment.ISO_8601, 'MM-DD-YYYY', 'DD-MM-YYYY', 'YYYY-MM-DD'];\n switch (item['modifier']) {\n case 'age': {\n if (moment(string, dateFormats, true).isValid()) {\n string = moment().diff(string, 'years');\n }\n break;\n }\n default: {\n if (moment(string, dateFormats, true).isValid()) {\n string = moment(string).format('DD-MM-YYYY');\n }\n }\n }\n return prefix + string;\n }\n\n private getNestedProperty(obj: any, path: string, defaultValue: any): any {\n return (\n path.split('.').reduce((currentObject, key) => currentObject?.[key], obj) || defaultValue\n );\n }\n\n private setBreadcrumb(): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/dossiers/${this.documentDefinitionName}`],\n content: this.documentDefinitionNameTitle,\n href: `/dossiers/${this.documentDefinitionName}`,\n });\n }\n\n private openWidthObserver(): void {\n if (!this._tabContentContainer.nativeElement) return;\n\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._tabContentContainer.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n this.dossierDetailLayoutService.setTabContentContainerWidth(elementWidth);\n }\n }\n\n private setDocumentStyle(): void {\n this.renderer.addClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private removeDocumentStyle(): void {\n this.renderer.removeClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private enableResetOnBackNavigation(): void {\n this._subscriptions.add(\n this.router.events\n .pipe(\n filter(\n event => event instanceof NavigationStart && event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n this.pageTitleService.enableReset();\n })\n );\n }\n\n private handleNoTaskProcessLink(isAdmin: boolean): void {\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('dossier.noLinkedProcessNotification'),\n ...(isAdmin && {\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n }),\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n }\n\n private mapProcessDocumentDefinitions(\n processDocumentDefinitions: ProcessDocumentDefinition[]\n ): (ProcessDocumentDefinition & {displayName: string})[] {\n return processDocumentDefinitions.map(\n (processDocoumentDefinition: ProcessDocumentDefinition) => ({\n ...processDocoumentDefinition,\n displayName:\n this.translateService.instant(processDocoumentDefinition?.id?.processDefinitionKey) !==\n processDocoumentDefinition?.id?.processDefinitionKey\n ? this.translateService.instant(processDocoumentDefinition.id.processDefinitionKey)\n : processDocoumentDefinition.processName,\n })\n );\n }\n\n private setProcessDropdownWidth(): void {\n const longestName = this.processDocumentDefinitions.reduce(\n (acc, curr) =>\n !!curr.displayName && curr.displayName.length > acc ? curr.displayName.length : acc,\n 0\n );\n\n this.dropdownWidth$.next(\n longestName < 20\n ? DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n : longestName < 40\n ? DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.medium\n : DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.large\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n\n <div\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': isDarkMode$ | async,\n 'tab-content-container--compact': compactMode$ | async,\n }\"\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n dossierDetailLayout: dossierDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n } as tabContentObs\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.dossierDetailLayout.widthAdjustable\"\n [gutterSize]=\"DOSSIER_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.dossierDetailLayout.unit\"\n >\n <as-split-area\n [size]=\"tabContentObs.dossierDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.dossierDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.dossierDetailLayout.leftPanelMaxWidth\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'dossier.noAccess.description' | translate }}\"\n title=\"{{ 'dossier.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.dossierDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.dossierDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.dossierDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.dossierDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-dossier-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-dossier-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-dossier-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-dossier-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-dossier-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row\" *ngIf=\"(customDossierHeaderItems || []).length > 0\">\n <span\n *ngFor=\"let item of customDossierHeaderItems\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs',\n }\"\n class=\"mb-0 mt-0 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n\n <span *ngIf=\"item.label && item.value\">: </span>\n\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'dossier.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'dossier.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDocumentDefinitions.length === 0\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'dossier.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossier.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossier.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"dossier-actions\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div\n class=\"dossier-status-assign-custom-title\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div class=\"dossier-assign-user\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n [attr.title]=\"processDocumentDefinition.displayName\"\n (click)=\"startProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormFlowService,\n FormSubmissionResult,\n ProcessLinkService,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ModalComponent,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {FormioBeforeSubmit} from '@formio/angular/formio.common';\nimport {FormioForm} from '@formio/angular';\nimport {UserProviderService} from '@valtimo/security';\nimport {take} from 'rxjs/operators';\nimport {CAN_VIEW_CASE_PERMISSION, DOSSIER_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {DossierListService, StartModalService} from '../../services';\nimport {ConfigService} from '@valtimo/config';\nimport {FORM_VIEW_MODEL_TOKEN} from '@valtimo/config';\nimport {FormViewModel} from '@valtimo/config';\nimport {BehaviorSubject, Subscription} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-process-start-modal',\n templateUrl: './dossier-process-start-modal.component.html',\n styleUrls: ['./dossier-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierProcessStartModalComponent implements OnInit, OnDestroy {\n public processDefinitionKey: string;\n public processDefinitionId: string;\n public documentDefinitionName: string;\n public processName: string;\n private _startEventName: string;\n private readonly _useStartEventNameAsStartFormTitle!: boolean;\n public formDefinition: FormioForm;\n public formName: string;\n public formFlowInstanceId: string;\n public formioSubmission: FormioSubmission;\n private processLinkId: string;\n public options: ValtimoFormioOptions;\n public isAdmin: boolean;\n public isFormViewModel = false;\n public isUIComponent = false;\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('processStartModal', {static: false}) modal: ModalComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Output() formFlowComplete = new EventEmitter();\n @Output() noProcessLinked = new EventEmitter();\n\n private _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private processService: ProcessService,\n private documentService: DocumentService,\n private processLinkService: ProcessLinkService,\n private formFlowService: FormFlowService,\n private userProviderService: UserProviderService,\n private permissionService: PermissionService,\n private listService: DossierListService,\n private startModalService: StartModalService,\n private configService: ConfigService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig,\n private urlResolverService: UrlResolverService\n ) {\n this._useStartEventNameAsStartFormTitle =\n this.configService.config.featureToggles?.useStartEventNameAsStartFormTitle;\n\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n ngOnInit() {\n this.isUserAdmin();\n }\n\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n\n private loadProcessLink() {\n this.processLinkId = null;\n this.formDefinition = null;\n this.formFlowInstanceId = null;\n if (this._useStartEventNameAsStartFormTitle) {\n this.processService.getProcessDefinitionXml(this.processDefinitionId).subscribe(result => {\n this._startEventName = this.startModalService.getStandardStartEventTitle(result.bpmn20Xml);\n });\n }\n this.processService\n .getProcessDefinitionStartProcessLink(\n this.processDefinitionId,\n null,\n this.documentDefinitionName\n )\n .pipe(take(1))\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition = startProcessResult.properties.prefilledForm;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = false;\n this.modal.show();\n break;\n case 'form-flow':\n this.formFlowInstanceId = startProcessResult.properties.formFlowInstanceId;\n this.isFormViewModel = false;\n this.modal.show();\n break;\n case 'form-view-model':\n this.formDefinition = startProcessResult.properties.formDefinition;\n this.formName = startProcessResult.properties.formName;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = true;\n this.setFormViewModelComponent();\n this.modal.show();\n break;\n case 'url':\n this.processLinkId = startProcessResult.processLinkId;\n this.processLinkService\n .getVariables()\n .pipe(take(1))\n .subscribe(variables => {\n let url = this.urlResolverService.resolveUrlVariables(\n startProcessResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(this.processLinkId)\n .subscribe(result => {\n this.submitCompleted(result);\n });\n });\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n this.modal.show();\n break;\n }\n } else {\n this.noProcessLinked.emit();\n }\n });\n }\n\n public gotoProcessLinkScreen(): void {\n this.modal.hide();\n this.router.navigate(['process-links'], {queryParams: {process: this.processDefinitionKey}});\n }\n\n public get modalTitle() {\n const fallbackTitle = `Start - ${this.processName}`;\n return this._useStartEventNameAsStartFormTitle\n ? this._startEventName || fallbackTitle\n : fallbackTitle;\n }\n\n openModal(processDocumentDefinition: ProcessDocumentDefinition) {\n this.processDefinitionKey = processDocumentDefinition.id.processDefinitionKey;\n this.processDefinitionId = processDocumentDefinition.latestVersionId;\n this.documentDefinitionName = processDocumentDefinition.id.documentDefinitionId.name;\n this.processName = processDocumentDefinition.processName;\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n this.options.setHooks(formioBeforeSubmit);\n this.loadProcessLink();\n }\n\n public onSubmit(submission: FormioSubmission) {\n this.formioSubmission = submission;\n\n this.processLinkService.submitForm(this.processLinkId, submission.data).subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.submitCompleted(formSubmissionResult);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n\n public formFlowSubmitted(): void {\n this.formFlowComplete.emit(null);\n this.modal.hide();\n }\n\n public isUserAdmin(): void {\n this.userProviderService.getUserSubject().subscribe(\n userIdentity => {\n this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');\n },\n error => {\n this.isAdmin = false;\n }\n );\n }\n\n private submitCompleted(formSubmissionResult: FormSubmissionResult): void {\n this.modal.hide();\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: formSubmissionResult.documentId,\n })\n .subscribe(canViewCase => {\n if (canViewCase) {\n this.router.navigate([\n 'dossiers',\n this.documentDefinitionName,\n 'document',\n formSubmissionResult.documentId,\n ]);\n } else {\n this.listService.forceRefresh();\n }\n });\n }\n\n private setFormViewModelComponent() {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition;\n formViewModelComponent.instance.formName = this.formName;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.processDefinitionKey = this.processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = this.documentDefinitionName;\n this._subscriptions.add(\n formViewModelComponent.instance.formSubmit.subscribe(() => {\n this.listService.forceRefresh();\n this.modal.hide();\n })\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = this.documentDefinitionName;\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.modal.hide();\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<valtimo-modal #processStartModal elementId=\"processStartModal\" [title]=\"modalTitle\">\n <div body *ngIf=\"formDefinition && !isFormViewModel\">\n <valtimo-form-io #form [form]=\"formDefinition\" [options]=\"options\" (submit)=\"onSubmit($event)\">\n </valtimo-form-io>\n </div>\n <div body>\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n </div>\n <div body *ngIf=\"formFlowInstanceId\">\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n </div>\n <div body *ngIf=\"!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n </div>\n</valtimo-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {NotificationService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap} from 'rxjs';\nimport {DossierListService} from '../../services';\nimport {DossierProcessStartModalComponent} from '../dossier-process-start-modal/dossier-process-start-modal.component';\n\ndeclare const $;\n\n@Component({\n selector: 'valtimo-dossier-list-actions',\n templateUrl: './dossier-list-actions.component.html',\n styleUrls: ['./dossier-list-actions.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierListActionsComponent implements OnInit {\n @ViewChild('processStartModal') processStart: DossierProcessStartModalComponent;\n\n private readonly _loading$ = new BehaviorSubject<boolean>(true);\n @Input() set loading(value: boolean) {\n this._loading$.next(value);\n }\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly startButtonDisableEvent = new EventEmitter<boolean>();\n\n public readonly associatedProcessDocumentDefinitions$: Observable<\n Array<ProcessDocumentDefinition>\n > = this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n combineLatest([\n documentDefinitionName\n ? this.documentService.findProcessDocumentDefinitionsByCanInitializeDocument(\n documentDefinitionName,\n true\n )\n : of([]),\n this._loading$,\n ])\n ),\n map(([processDocumentDefinitions, loading]) => {\n this._cachedAssociatedProcessDocumentDefinitions = processDocumentDefinitions;\n this.startButtonDisableEvent.emit(processDocumentDefinitions.length === 0 || loading);\n return processDocumentDefinitions.filter(definition => definition.canInitializeDocument);\n })\n );\n\n private selectedProcessDocumentDefinition: ProcessDocumentDefinition | null = null;\n private modalListenerAdded = false;\n private _cachedAssociatedProcessDocumentDefinitions: Array<ProcessDocumentDefinition> = [];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly listService: DossierListService,\n private readonly notificationService: NotificationService,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.modalListenerAdded = false;\n }\n\n public startDossier(): void {\n const associatedProcessDocumentDefinitions = this._cachedAssociatedProcessDocumentDefinitions;\n\n if (associatedProcessDocumentDefinitions.length > 1) {\n $('#startProcess').modal('show');\n } else {\n this.selectedProcessDocumentDefinition = associatedProcessDocumentDefinitions[0];\n this.showStartProcessModal();\n }\n }\n\n public selectProcess(processDocumentDefinition: ProcessDocumentDefinition): void {\n const modal = $('#startProcess');\n if (!this.modalListenerAdded) {\n modal.on('hidden.bs.modal', this.showStartProcessModal.bind(this));\n this.modalListenerAdded = true;\n }\n this.selectedProcessDocumentDefinition = processDocumentDefinition;\n modal.modal('hide');\n }\n\n public onFormFlowComplete(): void {\n this.formFlowComplete.emit(null);\n }\n\n public onNoProcessLinked(): void {\n this.notificationService.ngOnDestroy();\n\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('dossier.noLinkedStartProcessNotification'),\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n }\n\n private showStartProcessModal(): void {\n if (this.selectedProcessDocumentDefinition !== null) {\n this.processStart.openModal(this.selectedProcessDocumentDefinition);\n this.selectedProcessDocumentDefinition = null;\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"associatedProcessDocumentDefinitions$ | async as associatedProcessDocumentDefinitions\">\n <div\n class=\"modal fade\"\n id=\"startProcess\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-labelledby=\"startProcessLabel\"\n aria-hidden=\"true\"\n >\n <div class=\"modal-dialog modal-dialog-centered\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"startProcessLabel\">\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"table-responsive\">\n <table class=\"table m-0\">\n <tr\n *ngFor=\"let processDocumentDefinition of associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n style=\"cursor: pointer\"\n >\n <td>{{ processDocumentDefinition.processName }}</td>\n </tr>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">\n {{ 'cta.close' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonListNoResultsMessage,\n CarbonPaginationSelection,\n CASES_WITHOUT_STATUS_KEY,\n ListField,\n PageTitleService,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {\n AssigneeFilter,\n ConfigService,\n DefinitionColumn,\n Direction,\n DossierListTab,\n SearchField,\n SearchFieldValues,\n SortState,\n} from '@valtimo/config';\nimport {\n AdvancedDocumentSearchRequest,\n AdvancedDocumentSearchRequestImpl,\n Document,\n Documents,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n SpecifiedDocuments,\n} from '@valtimo/document';\nimport {Tab, Tabs} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defaultIfEmpty,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\nimport {\n DEFAULT_DOSSIER_LIST_TABS,\n DOSSIER_LIST_NO_RESULTS_MESSAGE,\n DOSSIER_LIST_TABLE_TRANSLATIONS,\n} from '../../constants';\nimport {\n CAN_CREATE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {\n DossierBulkAssignService,\n DossierColumnService,\n DossierListAssigneeService,\n DossierListPaginationService,\n DossierListSearchService,\n DossierListService,\n DossierListStatusService,\n DossierParameterService,\n} from '../../services';\nimport {DossierListActionsComponent} from '../dossier-list-actions/dossier-list-actions.component';\n\n@Component({\n selector: 'valtimo-dossier-list',\n templateUrl: './dossier-list.component.html',\n styleUrls: ['./dossier-list.component.scss'],\n providers: [\n DossierListService,\n DossierColumnService,\n DossierListAssigneeService,\n DossierParameterService,\n DossierListPaginationService,\n DossierListSearchService,\n DossierListStatusService,\n ],\n})\nexport class DossierListComponent implements OnInit, OnDestroy {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n @ViewChild(DossierListActionsComponent) listActionsComponent: DossierListActionsComponent;\n @ViewChild(Tabs) tabsComponent: Tabs;\n\n public activeTab: DossierListTab = null;\n public loadingFields = true;\n public loadingPagination = true;\n public loadingSearchFields = true;\n public loadingAssigneeFilter = true;\n public loadingDocumentItems = true;\n public loadingStatuses = true;\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public visibleDossierTabs: Array<DossierListTab> | null = null;\n\n public readonly defaultTabs = DEFAULT_DOSSIER_LIST_TABS;\n public readonly tableTranslations = DOSSIER_LIST_TABLE_TRANSLATIONS;\n\n public readonly noResultsMessage$ = new BehaviorSubject<CarbonListNoResultsMessage>(\n DOSSIER_LIST_NO_RESULTS_MESSAGE\n );\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangeTabModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly searchFields$: Observable<Array<SearchField> | null> =\n this.searchService.documentSearchFields$.pipe(tap(() => (this.loadingSearchFields = false)));\n\n public readonly statuses$ = this.statusService.caseStatuses$.pipe(\n tap(() => (this.loadingStatuses = false))\n );\n public readonly selectedStatuses$ = this.statusService.selectedCaseStatuses$;\n\n public readonly documentDefinitionName$ = this.listService.documentDefinitionName$;\n\n public readonly selectedDocumentIds$ = new BehaviorSubject<string[]>([]);\n\n public readonly schema$ = this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinition(documentDefinitionName)\n ),\n map(documentDefinition => documentDefinition?.schema),\n tap(schema => {\n if (schema?.title) {\n this.pageTitleService.setCustomPageTitle(schema?.title, true);\n }\n })\n );\n public readonly canCreateDocument$: Observable<boolean> = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.permissionService.requestPermission(CAN_CREATE_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: documentDefinitionName,\n })\n )\n );\n\n public readonly searchFieldValues$ = this.parameterService.searchFieldValues$;\n public readonly assigneeFilter$: Observable<AssigneeFilter> =\n this.assigneeService.assigneeFilter$.pipe(\n tap(assigneeFilter => (this.activeTab = assigneeFilter as DossierListTab))\n );\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n public readonly tabChange$ = new BehaviorSubject<DossierListTab | null>(null);\n private readonly _pagination$ = this.paginationService.pagination$.pipe(\n tap(pagination => {\n this.pagination = pagination;\n this.loadingPagination = false;\n })\n );\n private readonly _hasEnvColumnConfig$: Observable<boolean> = this.listService.hasEnvColumnConfig$;\n private readonly _hasApiColumnConfig$ = new BehaviorSubject<boolean>(false);\n private readonly _canHaveAssignee$: Observable<boolean> = this.assigneeService.canHaveAssignee$;\n private readonly _columns$: Observable<Array<DefinitionColumn>> =\n this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.columnService.getDefinitionColumns(documentDefinitionName)\n ),\n map(res => {\n this._hasApiColumnConfig$.next(res.hasApiConfig);\n return res.columns;\n }),\n tap(columns => {\n this.listService.documentDefinitionName$.pipe(take(1)).subscribe(_ => {\n this.paginationService.setPagination(columns);\n });\n })\n );\n\n public readonly showStatusSelector$ = this.statusService.showStatusSelector$;\n\n private readonly INTERNAL_STATUS_COLUMN = 'internalStatus';\n private readonly _statusField: ListField = {\n label: 'document.status',\n key: this.INTERNAL_STATUS_COLUMN,\n viewType: ViewType.TAGS,\n sortable: true,\n };\n private readonly _internalStatusKeys$ = new BehaviorSubject<string[]>([\n this.INTERNAL_STATUS_COLUMN,\n ]);\n public readonly fields$: Observable<Array<ListField>> = combineLatest([\n this._canHaveAssignee$,\n this._columns$,\n this._hasEnvColumnConfig$,\n this._hasApiColumnConfig$,\n this.statuses$,\n this.translateService.stream('key'),\n ]).pipe(\n tap(([canHaveAssignee]) => {\n this.canHaveAssignee = canHaveAssignee;\n }),\n map(([canHaveAssignee, columns, hasEnvConfig, hasApiConfig, statuses]) => {\n this._internalStatusKeys$.next([\n ...this._internalStatusKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.INTERNAL_STATUS_COLUMN ? [...acc, curr.translationKey] : acc,\n []\n ),\n ]);\n const filteredAssigneeColumns = this.assigneeService.filterAssigneeColumns(\n columns,\n canHaveAssignee\n );\n const listFields = this.columnService.mapDefinitionColumnsToListFields(\n filteredAssigneeColumns,\n hasEnvConfig,\n hasApiConfig\n );\n const fieldsToReturn = this.assigneeService.addAssigneeListField(\n columns,\n listFields,\n canHaveAssignee\n );\n\n return statuses.some(\n (status: InternalCaseStatus) => status.key !== CASES_WITHOUT_STATUS_KEY\n ) && !hasApiConfig\n ? [...fieldsToReturn, this._statusField]\n : fieldsToReturn;\n }),\n tap(listFields => {\n const defaultListField = listFields.find(field => field.default);\n // set default sort state if no pagination query parameters for sorting are available\n this.parameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n if (defaultListField && !queryPaginationParams?.sort?.isSorting) {\n const sortDirection =\n typeof defaultListField.default === 'string' ? defaultListField.default : 'DESC';\n this.paginationService.sortChanged({\n isSorting: true,\n state: {name: defaultListField.key, direction: sortDirection as Direction},\n });\n }\n });\n }),\n tap(() => {\n this.loadingFields = false;\n })\n );\n\n private readonly _documentSearchRequest$: Observable<AdvancedDocumentSearchRequest> =\n combineLatest([this._pagination$, this.listService.documentDefinitionName$]).pipe(\n filter(([pagination]) => !!pagination),\n map(([pagination, documentDefinitionName]) => {\n const page = pagination.page - 1;\n\n return new AdvancedDocumentSearchRequestImpl(\n documentDefinitionName,\n page >= 0 ? page : 0,\n pagination.size,\n pagination.sort\n );\n })\n );\n\n public readonly documentItems$: Observable<any[]> = this.listService.checkRefresh$.pipe(\n switchMap(() =>\n combineLatest([\n this._documentSearchRequest$,\n this.assigneeFilter$,\n this.searchFieldValues$,\n this.statusService.selectedCaseStatuses$,\n this.listService.forceRefresh$,\n this._hasEnvColumnConfig$,\n this._hasApiColumnConfig$,\n this.statusService.caseStatuses$,\n ]).pipe(debounceTime(50))\n ),\n distinctUntilChanged(\n (\n [\n prevSearchRequest,\n prevAssigneeFilter,\n prevSearchFieldValues,\n prevSelectedStatuses,\n prevForceRefresh,\n ],\n [\n currSearchRequest,\n currAssigneeFilter,\n currSearchFieldValues,\n currSelectedStatuses,\n currForceRefresh,\n ]\n ) =>\n isEqual(\n {\n ...prevSearchRequest,\n assignee: prevAssigneeFilter,\n ...prevSearchFieldValues,\n ...prevSelectedStatuses.map((status: InternalCaseStatus) => status.key),\n forceRefresh: prevForceRefresh,\n },\n {\n ...currSearchRequest,\n assignee: currAssigneeFilter,\n ...currSearchFieldValues,\n ...currSelectedStatuses.map((status: InternalCaseStatus) => status.key),\n forceRefresh: currForceRefresh,\n }\n )\n ),\n switchMap(\n ([\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n _,\n hasEnvColumnConfig,\n hasApiColumnConfig,\n allStatuses,\n ]) => {\n const obsEnv: Observable<boolean> = of(hasEnvColumnConfig);\n const obsApi: Observable<boolean> = of(hasApiColumnConfig);\n const statusKeys: (string | null)[] = selectedStatuses.map((status: InternalCaseStatus) =>\n status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key\n );\n if ((Object.keys(searchValues) || []).length > 0) {\n return forkJoin({\n documents:\n hasEnvColumnConfig || !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n this.searchService.mapSearchValuesToFilters(searchValues),\n statusKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n this.searchService.mapSearchValuesToFilters(searchValues),\n statusKeys\n ),\n hasEnvColumnConfig: obsEnv,\n hasApiColumnConfig: obsApi,\n isSearchResult: of(true),\n allStatuses: of(allStatuses),\n });\n }\n\n return forkJoin({\n documents:\n hasEnvColumnConfig || !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n undefined,\n statusKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n undefined,\n statusKeys\n ),\n hasEnvColumnConfig: obsEnv,\n hasApiColumnConfig: obsApi,\n isSearchResult: of(false),\n allStatuses: of(allStatuses),\n });\n }\n ),\n switchMap(res =>\n combineLatest([\n of(res),\n forkJoin(\n res.documents.content.map(document =>\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: document.id,\n })\n .pipe(take(1))\n )\n ).pipe(defaultIfEmpty([] as boolean[])),\n this._internalStatusKeys$,\n ])\n ),\n map(([res, documentsAuthorization, statusColumnKeys]) => ({\n ...res,\n documents: {\n ...res.documents,\n content: res.documents.content.map((document, index) => ({\n ...document,\n locked: !documentsAuthorization[index],\n })),\n },\n statusColumnKeys,\n })),\n map(\n (res: {\n documents: Documents | SpecifiedDocuments;\n hasEnvColumnConfig: boolean;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n selectedStatuses: InternalCaseStatus[];\n allStatuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n }) => {\n this.paginationService.setCollectionSize(res.documents);\n this.paginationService.checkPage(res.documents);\n this.updateNoResultsMessage(res.isSearchResult);\n\n return {\n data: this.listService.mapDocuments(\n res.documents,\n res.hasEnvColumnConfig,\n res.hasApiColumnConfig\n ),\n statuses: res.allStatuses,\n statusColumnKeys: res.statusColumnKeys,\n };\n }\n ),\n map(res => {\n if (!Array.isArray(res.data)) return res.data;\n\n return res.data.map(item => {\n const mappedInternalStatusColumns = res.statusColumnKeys.reduce((acc, curr) => {\n const status = res.statuses.find(\n (status: InternalCaseStatus) => status.key === item[curr] || status.key === item.status\n );\n return !status\n ? acc\n : {\n ...acc,\n [curr]: {\n content: status.title,\n type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n },\n };\n }, {});\n\n return {\n ...item,\n ...mappedInternalStatusColumns,\n };\n });\n }),\n tap(() => {\n this.loadingAssigneeFilter = false;\n this.loadingDocumentItems = false;\n })\n );\n\n private _previousDocumentDefinitionName!: string;\n private _documentDefinitionNameSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: DossierListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: DossierBulkAssignService,\n private readonly columnService: DossierColumnService,\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly listService: DossierListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: DossierListPaginationService,\n private readonly parameterService: DossierParameterService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly searchService: DossierListSearchService,\n private readonly translateService: TranslateService,\n private readonly permissionService: PermissionService,\n private readonly statusService: DossierListStatusService\n ) {}\n\n public ngOnInit(): void {\n this.setVisibleTabs();\n this.openDocumentDefinitionNameSubscription();\n }\n\n public ngOnDestroy(): void {\n this._documentDefinitionNameSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n public rowClick(item: any): void {\n this.listService.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n this.breadcrumbService.cacheQueryParams(\n `/dossiers/${documentDefinitionName}`,\n this.route.snapshot.queryParams\n );\n this.router.navigate([`/dossiers/${documentDefinitionName}/document/${item.id}`]);\n });\n }\n\n public tabChange(tab: DossierListTab): void {\n if (!this.activeTab) {\n this.activeTab = tab;\n this.updateNoResultsMessage(false);\n return;\n }\n\n if (this.activeTab.toLowerCase() === tab.toLowerCase()) {\n return;\n }\n\n if (this.carbonList.model.selectedRowsCount()) {\n this.showChangeTabModal$.next(true);\n this.tabChange$.next(tab);\n return;\n }\n\n this.onChangeTabConfirm(tab);\n }\n\n public onChangeTabCancel(): void {\n if (!this.tabsComponent) {\n return;\n }\n\n const prevTab: Tab | undefined = this.tabsComponent.tabs.find(\n (tab: Tab) => tab.id === this.activeTab\n );\n\n if (!prevTab) {\n return;\n }\n\n this.tabsComponent.tabs.find((tab: Tab) => tab.active).active = false;\n prevTab.active = true;\n }\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n private onChangeTabConfirm(tab: DossierListTab): void {\n this.loadingAssigneeFilter = true;\n this.activeTab = tab;\n this.updateNoResultsMessage(false);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n public showAssignModal(): void {\n this.selectedDocumentIds$.next(\n this.carbonList.selectedItems.map((document: Document) => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(assigneeId: null | string, documentIds: string[]): void {\n this.showAssignModal$.next(false);\n if (!assigneeId) {\n return;\n }\n\n this.bulkAssignService.bulkAssign(assigneeId, documentIds).subscribe(() => {\n this.forceRefresh();\n });\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n\n this.paginationService.pageChange(pagination.page);\n }\n\n public startDossier(): void {\n this.listActionsComponent.startDossier();\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n public onSelectedStatusesChange(statuses: InternalCaseStatus[]): void {\n this.statusService.setSelectedStatuses(statuses);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n private openDocumentDefinitionNameSubscription(): void {\n this._documentDefinitionNameSubscription = this.route.params\n .pipe(\n map((params: Params) => params?.documentDefinitionName),\n filter(docDefName => !!docDefName),\n distinctUntilChanged()\n )\n .subscribe(documentDefinitonName => {\n if (this._previousDocumentDefinitionName) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n }\n this._previousDocumentDefinitionName = documentDefinitonName;\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setDocumentDefinitionName(documentDefinitonName);\n this.setLoading();\n });\n }\n\n private setLoading(): void {\n this.loadingFields = true;\n this.loadingPagination = true;\n this.loadingSearchFields = true;\n this.loadingAssigneeFilter = true;\n this.loadingDocumentItems = true;\n this.loadingStatuses = true;\n }\n\n private setVisibleTabs(): void {\n this.visibleDossierTabs = this.configService.config?.visibleDossierListTabs || null;\n }\n\n private updateNoResultsMessage(isSearchResult: boolean): void {\n this.noResultsMessage$.next(\n isSearchResult\n ? {\n description: 'dossier.noResults.search.description',\n isSearchResult,\n title: 'dossier.noResults.search.title',\n }\n : {\n description: `dossier.noResults.${this.activeTab ?? 'ALL'}.description`,\n isSearchResult,\n title: `dossier.noResults.${this.activeTab ?? 'ALL'}.title`,\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n fields: fields$ | async,\n documentItems: documentItems$ | async,\n noResultsMessage: noResultsMessage$ | async,\n searchFields: searchFields$ | async,\n schema: schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedDocumentIds: selectedDocumentIds$ | async,\n statuses: statuses$ | async,\n selectedStatuses: selectedStatuses$ | async,\n showStatusSelector: showStatusSelector$ | async,\n loaded:\n !loadingFields &&\n !loadingPagination &&\n !loadingSearchFields &&\n !loadingAssigneeFilter &&\n !loadingDocumentItems,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-dossier-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-dossier-list-actions>\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changeTabModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [defaultValues]=\"searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatuses]=\"obs.selectedStatuses\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierList\"\n lockedTooltipTranslationKey=\"dossier.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'dossier.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"dossierListActions\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : dossierListActions\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs\n *ngIf=\"!visibleDossierTabs; else configuredTabs\"\n type=\"contained\"\n class=\"dossier-list-tabs\"\n >\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'dossier.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs type=\"contained\" class=\"dossier-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleDossierTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'dossier.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #loading\n ><valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div> </valtimo-carbon-list\n></ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-dossier-bulk-assign-modal\n [documentIds]=\"obs.selectedDocumentIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event, obs.selectedDocumentIds)\"\n ></valtimo-dossier-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.changePageModal.confirm\"\n contentTranslationKey=\"dossier.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"dossier.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #changeTabModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.changeTabModal.confirm\"\n contentTranslationKey=\"dossier.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"dossier.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #dossierListActions>\n <button\n *ngIf=\"canCreateDocument$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startDossier()\"\n >\n {{ 'Start Dossier' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {TaskService} from '@valtimo/task';\nimport {ActivatedRoute} from '@angular/router';\nimport {ToastrService} from 'ngx-toastr';\nimport {Location} from '@angular/common';\nimport moment from 'moment';\nimport {DocumentService} from '@valtimo/document';\nimport {DossierService} from '../../services/dossier.service';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-update',\n templateUrl: './dossier-update.component.html',\n styleUrls: ['./dossier-update.component.css'],\n})\nexport class DossierUpdateComponent implements OnInit {\n public task: any;\n public taskId: string;\n public schema: any;\n public documentId: string;\n public document: any;\n public page: any;\n public documentDefinitionName: string;\n public implementationDefinitions: any;\n public customDefinitions: any = {};\n\n constructor(\n private taskService: TaskService,\n private documentService: DocumentService,\n private route: ActivatedRoute,\n private toastr: ToastrService,\n private location: Location,\n dossierService: DossierService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n this.documentId = snapshot.get('documentId') || '';\n this.taskId = snapshot.get('taskId') || '';\n this.implementationDefinitions = dossierService.getImplementationEnvironmentDefinitions(\n this.documentDefinitionName\n );\n this.loadDocumentDefinition(this.documentDefinitionName);\n this.loadDocument(this.documentId);\n }\n\n ngOnInit() {\n this.getTask(this.taskId);\n if (this.implementationDefinitions.definitions.detail.summary) {\n this.customDefinitions = this.implementationDefinitions.definitions.detail.summary;\n }\n }\n\n private loadDocumentDefinition(name: string) {\n this.documentService.getDocumentDefinition(name).subscribe(definition => {\n this.schema = definition.schema;\n });\n }\n\n private loadDocument(id: string) {\n this.documentService.getDocument(id).subscribe(document => {\n this.document = document;\n });\n }\n\n public getTask(id: string) {\n this.taskService.getTask(id).subscribe(task => {\n this.task = task;\n this.task.task.created = moment(this.task.task.created).format('DD MMM YYYY HH:mm');\n this.page = {\n title: this.task.task.name,\n subtitle: `Created ${moment(this.task.task.created).fromNow()}`,\n };\n });\n }\n\n public reset() {\n this.loadDocument(this.documentId);\n }\n\n public back() {\n this.location.back();\n }\n\n public save() {\n const document = {\n documentId: this.document.id,\n content: this.document.content,\n versionBasedOn: this.document.version,\n };\n this.documentService.modifyDocument(document).subscribe(result => {\n this.document = result.document;\n this.toastr.success('Document aangepast');\n this.location.back();\n });\n }\n\n public submit(data: object) {\n // merge document content with formdata\n const mergedData = Object.assign({}, this.document.content, data);\n const documentData = {\n request: {\n documentId: this.document.id,\n content: mergedData,\n versionBasedOn: this.document.version,\n },\n taskId: this.task.task.id,\n };\n\n this.documentService.modifyDocumentAndCompleteTask(documentData).subscribe(result => {\n this.toastr.success(this.task.task.name + ' has successfully been completed');\n this.location.back();\n });\n }\n\n public returnZero() {\n return 0;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget [title]=\"page?.title\" [subtitle]=\"page?.subtitle\" [divider]=\"true\">\n <div class=\"card-body\">\n <!--view with custom definitions-->\n <div *ngIf=\"this.customDefinitions\">\n <div\n class=\"mb-4\"\n *ngFor=\"let definition of this.customDefinitions | keyvalue: returnZero\"\n ></div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-sm-12\">\n <div class=\"text-right\">\n <button\n class=\"btn btn-space btn-default float-left\"\n type=\"button\"\n (click)=\"back()\"\n id=\"back-button\"\n >\n Back\n </button>\n <button\n class=\"btn btn-space btn-secondary\"\n type=\"button\"\n (click)=\"reset()\"\n id=\"reset-button\"\n >\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"button\"\n (click)=\"save()\"\n id=\"save-button\"\n >\n Save\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n (click)=\"submit({})\"\n id=\"submit-button\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <valtimo-camunda-form\n *ngIf=\"task?.formFields && !this.customDefinitions\"\n (submitted)=\"submit($event)\"\n [formFields]=\"task.formFields\"\n [componentName]=\"task.formLocation\"\n ></valtimo-camunda-form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierDetailComponent} from './components/dossier-detail/dossier-detail.component';\nimport {DossierUpdateComponent} from './components/dossier-update/dossier-update.component';\nimport {ROLE_USER} from '@valtimo/config';\nimport {DossierListComponent} from './components/dossier-list/dossier-list.component';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'dossiers/:documentDefinitionName',\n component: DossierListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId/:tab',\n component: DossierDetailComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Dossier details',\n parentPath: 'dossiers/:documentDefinitionName',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId',\n component: DossierDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Dossier details',\n parentPath: 'dossiers/:documentDefinitionName',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId/:tab/tasks/:taskId',\n component: DossierUpdateComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Task details',\n parentPath: 'dossiers/:documentDefinitionName/document/:documentId/:tab',\n roles: [ROLE_USER],\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DossierRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {TabTranslatePipe} from './tab-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [TabTranslatePipe],\n exports: [TabTranslatePipe],\n})\nexport class TabTranslatePipeModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab-translate.pipe';\nexport * from './tab-translate-pipe.module';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab-translate';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n NgbButtonsModule,\n NgbModule,\n NgbPaginationModule,\n NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n BpmnJsDiagramModule,\n ButtonModule,\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n DataListModule,\n DropzoneModule,\n FilterSidebarModule,\n FormIoModule,\n FormModule as VFormModule,\n InputLabelModule,\n InputModule,\n IsArrayPipe,\n ListModule,\n ModalModule,\n PageModule,\n ParagraphModule,\n RenderInPageHeaderDirectiveModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SelectModule,\n SpinnerModule,\n StatusSelectorComponent,\n TableModule,\n TimelineModule,\n TitleModule,\n UploaderModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule, HttpLoaderFactory} from '@valtimo/config';\nimport {FormModule} from '@valtimo/form';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {ProcessModule} from '@valtimo/process';\nimport {TaskModule} from '@valtimo/task';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n IconModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n SelectModule as CarbonSelectModule,\n SkeletonModule,\n TabsModule,\n TagModule,\n} from 'carbon-components-angular';\nimport {NoteModalComponent} from './components/note-modal/note-modal.component';\nimport {DossierAssignUserComponent} from './components/dossier-assign-user/dossier-assign-user.component';\nimport {DossierBulkAssignModalComponent} from './components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component';\nimport {DossierDetailComponent} from './components/dossier-detail/dossier-detail.component';\nimport {DossierDetailTabAuditComponent} from './components/dossier-detail/tab/audit/audit.component';\nimport {DossierDetailTabDocumentsComponent} from './components/dossier-detail/tab/documents/documents.component';\nimport {DossierDetailTabNotesComponent} from './components/dossier-detail/tab/notes/notes.component';\nimport {DossierDetailTabProgressComponent} from './components/dossier-detail/tab/progress/progress.component';\nimport {DossierDetailTabS3DocumentsComponent} from './components/dossier-detail/tab/s3-documents/s3-documents.component';\nimport {DossierDetailTabSummaryComponent} from './components/dossier-detail/tab/summary/summary.component';\nimport {DossierListActionsComponent} from './components/dossier-list-actions/dossier-list-actions.component';\nimport {DossierListComponent} from './components/dossier-list/dossier-list.component';\nimport {DossierProcessStartModalComponent} from './components/dossier-process-start-modal/dossier-process-start-modal.component';\nimport {DossierRoutingModule} from './dossier-routing.module';\nimport {DossierSupportingProcessStartModalComponent} from './components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component';\nimport {DossierUpdateComponent} from './components/dossier-update/dossier-update.component';\nimport {TAB_MAP} from './constants';\nimport {DossierBulkAssignService, DossierService} from './services';\nimport {DossierDetailTabFormioComponent} from './components/dossier-detail/tab/formio/formio.component';\nimport {TabTranslatePipeModule} from './pipes';\nimport {DossierDetailTabNotFoundComponent} from './components/dossier-detail/tab/not-found/not-found.component';\nimport {DossierDetailWidgetsComponent} from './components/dossier-detail/tab/widgets/widgets.component';\nimport {DossierDetailTaskListComponent} from './components/dossier-detail-task-list/dossier-detail-task-list.component';\nimport {DossierDetailsTaskDetailComponent} from './components/dossier-detail-task-detail/dossier-detail-task-detail.component';\nimport {AngularSplitModule} from 'angular-split';\n\nexport type TabsFactory = () => Map<string, object>;\n\n@NgModule({\n declarations: [\n DossierBulkAssignModalComponent,\n DossierListComponent,\n DossierListActionsComponent,\n DossierDetailComponent,\n DossierDetailTabSummaryComponent,\n DossierDetailTabProgressComponent,\n DossierDetailTabAuditComponent,\n DossierDetailTabDocumentsComponent,\n DossierDetailTabNotesComponent,\n DossierUpdateComponent,\n DossierProcessStartModalComponent,\n DossierSupportingProcessStartModalComponent,\n DossierDetailTabS3DocumentsComponent,\n DossierDetailTabNotFoundComponent,\n DossierAssignUserComponent,\n NoteModalComponent,\n DossierDetailTabFormioComponent,\n ],\n imports: [\n CommonModule,\n DossierRoutingModule,\n ListModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TimelineModule,\n CamundaFormModule,\n ProcessModule,\n FilterSidebarModule,\n NgbButtonsModule,\n DataListModule,\n FormsModule,\n ReactiveFormsModule,\n FormModule,\n FormIoModule,\n ModalModule,\n SpinnerModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n TaskModule,\n ModalModule,\n NgbTooltipModule,\n UploaderModule,\n DropzoneModule,\n NgbPaginationModule,\n ConfigModule,\n SelectModule,\n InputLabelModule,\n ParagraphModule,\n TableModule,\n VModalModule,\n TitleModule,\n ButtonModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n PageModule,\n FormModule,\n InputModule,\n VFormModule,\n NgbModule,\n LoadingModule,\n CarbonButtonModule,\n IconModule,\n ProcessLinkModule,\n CarbonModalModule,\n CarbonSelectModule,\n ConfirmationModalModule,\n DropdownModule,\n TabsModule,\n ComboBoxModule,\n TabTranslatePipeModule,\n CarbonListModule,\n IsArrayPipe,\n SkeletonModule,\n StatusSelectorComponent,\n RenderInPageHeaderDirectiveModule,\n TagModule,\n DialogModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n DossierDetailWidgetsComponent,\n DossierDetailTaskListComponent,\n DossierDetailsTaskDetailComponent,\n AngularSplitModule,\n ],\n exports: [DossierListComponent, DossierDetailComponent, DossierProcessStartModalComponent],\n})\nexport class DossierModule {\n static forRoot(tabsFactory: TabsFactory): ModuleWithProviders<DossierModule> {\n return {\n ngModule: DossierModule,\n providers: [\n DossierService,\n DossierBulkAssignService,\n {\n provide: TAB_MAP,\n useFactory: tabsFactory,\n },\n ],\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of dossier\n */\n\nexport * from './lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component';\nexport * from './lib/components/dossier-detail/dossier-detail.component';\nexport * from './lib/components/dossier-detail/tab/audit/audit.component';\nexport * from './lib/components/dossier-detail/tab/documents/documents.component';\nexport * from './lib/components/dossier-detail/tab/notes/notes.component';\nexport * from './lib/components/dossier-detail/tab/progress/progress.component';\nexport * from './lib/components/dossier-detail/tab/summary/summary.component';\nexport * from './lib/components/dossier-list/dossier-list.component';\nexport * from './lib/components/dossier-process-start-modal/dossier-process-start-modal.component';\nexport * from './lib/constants';\nexport * from './lib/dossier.module';\nexport * from './lib/services/dossier.service';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i1","i1.DossierColumnService","i2.DossierListService","i4","i5.DossierParameterService","i2.DossierParameterService","i3.DossierService","i1.DossierListService","i3.DossierParameterService","i5","i6","i7","switchMap","map","i8","i3.DossierDetailTabS3DocumentsComponent","PERMISSION_ACTION","take","i1.NotesService","tap","i9","i10.NoteModalComponent","i1.DossierTabService","i1.WidgetsService","i5.WidgetsService","i4.DossierWidgetsLayoutService","i3.DossierWidgetsApiService","i4.WidgetsService","i4.DossierWidgetsApiService","catchError","i1.DossierWidgetsLayoutService","i1.DossierWidgetsApiService","uuid","i2.DossierTabService","i2.DossierWidgetsApiService","i2.DossierWidgetsLayoutService","i3.DossierTabApiService","i1.DossierBulkAssignService","i6.DossierDetailLayoutService","i10","i11","i12","i13","i14","i15.DossierDetailTaskListComponent","i16.DossierDetailsTaskDetailComponent","i18.DossierSupportingProcessStartModalComponent","i19.DossierAssignUserComponent","i20.TabTranslatePipe","i7.DossierListService","i7.StartModalService","i7.DossierProcessStartModalComponent","i1.DossierListAssigneeService","i1.DossierListPaginationService","i1.DossierParameterService","i1.DossierListSearchService","i1.DossierListStatusService","i10.DossierBulkAssignModalComponent","i11.DossierListActionsComponent","i6.DossierService","ButtonModule","InputModule","VFormModule","CarbonButtonModule","CarbonModalModule","CarbonSelectModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuBa,wBAAwB,CAAA;IAKnC,WACU,CAAA,aAA4B,EAC5B,IAAgB,EAAA;QADhB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAI,CAAA,IAAA,GAAJ,IAAI;AANE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAkB,EAAE,CAAC;AAQxE,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,cAAc;;IAGvF,UAAU,CAAC,UAAkB,EAAE,WAAqB,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAO,GAAG,IAAI,CAAC,mBAAmB,CAAA,MAAA,CAAQ,EAAE,EAAC,UAAU,EAAE,WAAW,EAAC,CAAC;;AAGtF,IAAA,kBAAkB,CAAC,WAAqB,EAAA;AAC7C,QAAA,IAAI,CAAC;aACF,IAAI,CAAkB,CAAG,EAAA,IAAI,CAAC,mBAAmB,gBAAgB,EAAE,EAAC,WAAW,EAAC;AAChF,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,cAA+B,KAAI;AACxC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;aAC1C;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;aACrB;AACF,SAAA,CAAC;;+GA3BK,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAxB,wBAAwB,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACtBD;;;;;;;;;;;;;;AAcG;MAUU,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CACmB,aAA4B,EAC5B,eAAgC,EAChC,gBAAkC,EAAA;QAFlC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAGnC,IAAA,oBAAoB,CAClB,sBAA8B,EAAA;AAE9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;QACxC,MAAM,qBAAqB,GAAG,MAAM,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;AACnF,QAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB;AAE5D,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,eAAe,IAAG;YACpB,MAAM,kBAAkB,GACtB,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,IAAI,IAAI;gBAC9C,eAAe;AACf,gBAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC9B,eAAe,CAAC,MAAM,GAAG,CAAC;AAC1B,gBAAA,IAAI,CAAC,qCAAqC,CAAC,eAAe,CAAC;YAE7D,OAAO;AACL,gBAAA,OAAO,EAAE,qBAAqB,IAAI,kBAAkB,IAAI,sBAAsB;gBAC9E,YAAY,EAAE,CAAC,CAAC,kBAAkB;aACnC;SACF,CAAC,CACH;;AAGH,IAAA,oBAAoB,CAAC,sBAA8B,EAAA;AACjD,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,sBAAsB,CAAC,sBAAsB,CAAC;;AAGpF,IAAA,gCAAgC,CAC9B,OAAgC,EAChC,kBAA2B,EAC3B,kBAA2B,EAAA;AAE3B,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC1B,YAAA,MAAM,cAAc,GAAG,CAAA,YAAA,EAAe,MAAM,CAAC,cAAc,EAAE;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC;AACjE,YAAA,MAAM,gBAAgB,GAAG,WAAW,KAAK,cAAc,IAAI,WAAW;YACtE,OAAO;AACL,gBAAA,GAAG,EACD,kBAAkB,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc;gBACzF,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,gBAAgB,IAAI,MAAM,CAAC,cAAc;gBAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,gBAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC;AACnD,gBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC;AACvC,gBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC;AAC7C,gBAAA,IAAI,MAAM,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC;aACjD;AACH,SAAC,CAAC;;AAGI,IAAA,qCAAqC,CAC3C,eAAsC,EAAA;QAEtC,OAAO,eAAe,CAAC,GAAG,CAAC,cAAc,KAAK;YAC5C,cAAc,EAAE,cAAc,CAAC,GAAG;YAClC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,OAAO,EAAE,cAAc,CAAC,WAAW;YACnC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3D,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC;AACvD,YAAA,IAAI,cAAc,CAAC,KAAK,IAAI,EAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAC,CAAC;YAC1D,IAAI,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,IAAI;AAC9D,gBAAA,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAW;aACnE,CAAC;YACF,IAAI,cAAc,CAAC,WAAW,EAAE,qBAAqB,EAAE,UAAU,IAAI;AACnE,gBAAA,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,qBAAqB,EAAE,UAAU;aACtE,CAAC;AACH,SAAA,CAAC,CAAC;;AAGG,IAAA,WAAW,CAAC,yBAAiC,EAAA;QACnD,QAAQ,yBAAyB;AAC/B,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,qBAAqB;AACxB,gBAAA,OAAO,yBAAyB;AAClC,YAAA;AACE,gBAAA,OAAO,yBAAyB;;;AAI9B,IAAA,eAAe,CAAC,kBAA0B,EAAA;AAChD,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;+GAxF3D,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACvBD;;;;;;;;;;;;;;AAcG;MAkBU,uBAAuB,CAAA;AAIlC,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGhD,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;;AAGhD,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAsB;;AAE7D,YAAA,OAAO,EAAE;SACV,CAAC,EACF,oBAAoB,CAClB,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CACtF,CACF;;AAGH,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,MAAM,UAAU,GAAG,EAAC,GAAG,MAAM,EAA6B;YAE1D,OAAO,UAAU,CAAC;AAChB,kBAAE;AACE,oBAAA,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;AACjD,oBAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,oBAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,oBAAA,IAAI,UAAU,CAAC,SAAS,KAAK,MAAM,IAAI;AACrC,wBAAA,IAAI,EAAE;4BACJ,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,SAAS,KAAK,MAAM,CAAC;AAC9C,4BAAA,KAAK,EAAE;gCACL,IAAI,EAAE,UAAU,CAAC,aAAa;gCAC9B,SAAS,EAAE,UAAU,CAAC,kBAA+B;AACtD,6BAAA;AACF,yBAAA;qBACF,CAAC;AACH;kBACD,IAAI;SACT,CAAC,EACF,oBAAoB,CAClB,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CACtF,CACF;;AAGH,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,MAAM,EAAE,QAAQ,EAAE;AACpB,gBAAA,OAAO,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;;AAExC,YAAA,OAAO,EAAE;AACX,SAAC,CAAC,EACF,oBAAoB,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,KAAK,UAAU,CAAC,CAC5E;;AAGH,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAChC,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,MAAM,EAAE,MAAM,EAAE;gBAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAa;;AAEpD,YAAA,OAAO,IAAI;SACZ,CAAC,EACF,oBAAoB,CAClB,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CACtF,CACF;;IAKH,WACmB,CAAA,MAAc,EACd,KAAqB,EAAA;QADrB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAK,CAAA,KAAA,GAAL,KAAK;AAnFP,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAoB,SAAS,CAAC;AACvE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC;QAoF/E,IAAI,CAAC,oBAAoB,EAAE;;IAGtB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,8BAA8B,EAAE,WAAW,EAAE;;AAG7C,IAAA,oBAAoB,CAAC,iBAAoC,EAAA;AAC9D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,mBAAmB,CAAC,gBAAmC,EAAA;AAC5D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,IAAG;AACnE,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC5B,oBAAA,GAAG,iBAAiB;AACpB,oBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAC9C,iBAAA,CAAC;;iBACG;AACL,gBAAA,IAAI,iBAAiB,EAAE,MAAM,EAAE;oBAC7B,OAAO,iBAAiB,CAAC,MAAM;;AAEjC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAEpD,SAAC,CAAC;;AAGG,IAAA,uBAAuB,CAAC,UAAsB,EAAA;QACnD,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,IAAG;AACnE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC5B,oBAAA,GAAG,iBAAiB;AACpB,oBAAA,IAAI,EAAE,CAAA,EAAG,UAAU,CAAC,IAAI,CAAE,CAAA;AAC1B,oBAAA,cAAc,EAAE,CAAA,EAAG,UAAU,CAAC,cAAc,CAAE,CAAA;AAC9C,oBAAA,IAAI,EAAE,CAAA,EAAG,UAAU,CAAC,IAAI,CAAE,CAAA;AAC1B,oBAAA,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO;oBACxD,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,EAAC,aAAa,EAAE,CAAG,EAAA,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAE,CAAA,EAAC,CAAC;oBACtF,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI;wBACvC,kBAAkB,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAE,CAAA;qBAC1D,CAAC;AACH,iBAAA,CAAC;AACJ,aAAC,CAAC;;;AAIC,IAAA,oBAAoB,CAAC,cAA8B,EAAA;AACxD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,IAAG;AACnE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC5B,gBAAA,GAAG,iBAAiB;AACpB,gBAAA,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE;AACvC,aAAA,CAAC;AACJ,SAAC,CAAC;;AAGG,IAAA,kBAAkB,CAAC,mBAA6B,EAAA;AACrD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,IAAG;YACnE,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC5B,oBAAA,GAAG,iBAAiB;AACpB,oBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACjD,iBAAA,CAAC;;iBACG;AACL,gBAAA,IAAI,iBAAiB,EAAE,MAAM,EAAE;oBAC7B,OAAO,iBAAiB,CAAC,MAAM;;AAEjC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAEpD,SAAC,CAAC;;IAGG,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;;IAG5B,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;;IAGhE,iCAAiC,GAAA;QACvC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,IAAG;YACtF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE;AACjD,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC;AACJ,SAAC,CAAC;;AAGI,IAAA,cAAc,CAAC,QAAgB,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;;IAG/B,mBAAmB,GAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACrD,QAAA,OAAO,CAAC,WAAW,GAAG,EAAE;AACxB,QAAA,OAAO,CAAC,QAAQ,GAAG,IAAI;AACvB,QAAA,OAAO,OAAO,CAAC,QAAQ,EAAE;;IAGnB,oBAAoB,GAAA;AAC1B,QAAA,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,kBAAkB;SACxB;AACE,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,KAAI;AAC5E,YAAA,IAAI,gBAAgB;AAAE,gBAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;AACpE,YAAA,IAAI,cAAc;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;AAC7D,YAAA,IAAI,YAAY;AAAE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;YACvD,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;;YAGzC,IAAI,CAAC,iCAAiC,EAAE;AAC1C,SAAC,CAAC;;+GA3MK,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAvB,uBAAuB,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;AC/BD;;;;;;;;;;;;;;AAcG;MAOU,kBAAkB,CAAA;AAY7B,IAAA,IAAW,uBAAuB,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;;AAGrD,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB;;AAGlC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAG3C,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAG3C,IAAA,WAAA,CAA6B,oBAA0C,EAAA;QAA1C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;AA3BhC,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAE1D,IAAoB,CAAA,oBAAA,GAAwB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC5F,GAAG,CAAC,sBAAsB,IACxB,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CACvE,CACF;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACpD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;AAoB9D,IAAA,yBAAyB,CAAC,sBAA8B,EAAA;AAC7D,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC;;AAGrD,IAAA,YAAY,CACjB,SAAyC,EACzC,kBAA2B,EAC3B,kBAA2B,EAAA;AAE3B,QAAA,IAAI,kBAAkB,IAAI,CAAC,kBAAkB,EAAE;YAC7C,OAAQ,SAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAG;gBACrD,MAAM,EAAC,OAAO,EAAE,GAAG,MAAM,EAAC,GAAG,QAAQ;AACrC,gBAAA,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,MAAM,EAAC;AAChC,aAAC,CAAC;;QAGJ,OAAQ,SAAgC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACpE,YAAA,MAAM,WAAW,GAAG,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC;AACtD,YAAA,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAG;gBACzB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;AACpC,aAAC,CAAC;AACF,YAAA,OAAO,CAAC,GAAG,GAAG,EAAE,WAAW,CAAC;SAC7B,EAAE,EAAE,CAAC;;IAGD,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAG;YACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AACzC,SAAC,CAAC;;IAGG,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAG;YACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AACzC,SAAC,CAAC;;+GAhEO,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACpBD;;;;;;;;;;;;;;AAcG;MAYU,0BAA0B,CAAA;AAoBrC,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;IAG7C,WACmB,CAAA,aAA4B,EAC5B,kBAAsC,EACtC,eAAgC,EAChC,gBAAkC,EAClC,uBAAgD,EAAA;QAJhD,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QA5BzB,IAAY,CAAA,YAAA,GAAG,kBAAkB;AACjC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAkB;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAwB,IAAI,CAAC;AAEpE,QAAA,IAAA,CAAA,gBAAgB,GAC9B,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,CAClD,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAC7D,EACD,GAAG,CAAC,YAAY,IAAI,YAAY,EAAE,eAAe,CAAC,EAClD,GAAG,CAAC,eAAe,IAAG;YACpB,MAAM,WAAW,GAAqB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,sBAAsB;YAEtF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC/B,CAAC,CAAC,WAAW,IAAI,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAC1D;SACF,CAAC,CACH;;IAcI,mBAAmB,GAAA;AACxB,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC3F,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,qBAAqB,CAAC,KAAI;YACpD,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;AACzC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,aAAa,CAAC;;iBAC3D;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACjD,gBAAA,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;;AAE5E,SAAC,CAAC;;AAGC,IAAA,iBAAiB,CAAC,cAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1C,QAAA,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC;;IAG5D,qBAAqB,CAC1B,OAAgC,EAChC,eAAwB,EAAA;AAExB,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;YAC7B,IAAI,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE;AACzD,gBAAA,OAAO,KAAK;;AAEd,YAAA,OAAO,IAAI;AACb,SAAC,CAAC;;AAGG,IAAA,oBAAoB,CACzB,OAAgC,EAChC,UAA4B,EAC5B,eAAwB,EAAA;QAExB,OAAO;AACL,YAAA,GAAG,UAAU;AACb,YAAA,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;AACtF,kBAAE;AACE,oBAAA;wBACE,GAAG,EAAE,IAAI,CAAC,YAAY;AACtB,wBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC;AACxE,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;AACF;kBACD,EAAE,CAAC;SACR;;+GAhFQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA1B,0BAA0B,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACzBD;;;;;;;;;;;;;;AAcG;MASU,cAAc,CAAA;AAIzB,IAAA,WAAA,CAA6B,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa;AAFzB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAGlE,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW;;AAG9C,IAAA,uCAAuC,CAAC,IAAY,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;;AAGxE,IAAA,mBAAmB,CAAC,OAAgC,EAAA;AACzD,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;AAC5D,QAAA,MAAM,SAAS,GAAG,aAAa,EAAE,OAAO,KAAK,KAAK,IAAI,aAAa,EAAE,OAAO,KAAK,MAAM;QACvF,MAAM,SAAS,GACb,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK;AACjD,cAAE;AACF,cAAG,aAAa,CAAC,OAA4B;QAEjD,OAAO;YACL,SAAS;AACT,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;gBAC1E,SAAS;AACV,aAAA;SACF;;AAGH,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAlCxB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACtBD;;;;;;;;;;;;;;AAcG;MAYU,4BAA4B,CAAA;AAgBvC,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,gBAAgB;;AAG9B,IAAA,WAAA,CACmB,MAAiB,EACjB,uBAAgD,EAChD,cAA8B,EAAA;QAF9B,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAc,CAAA,cAAA,GAAd,cAAc;AAtBhB,QAAA,IAAA,CAAA,kBAAkB,GAAe;AAChD,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,SAAS;SAChB;AAEgB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAyB,SAAS,CAAC;QAErE,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACxD,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAClC,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EACvE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CACpF;;AAYD,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACrD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAgB,aAAA,EAAA,OAAO,CAAE,CAAA,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;;AAE1D,SAAC,CAAC;;AAGJ,IAAA,cAAc,CAAC,WAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACrD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;AACjD,gBAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,GAAG,WAAW,CAAC;AAClF,gBAAA,MAAM,OAAO,GACX,sBAAsB,GAAG,UAAU,CAAC,IAAI,GAAG,sBAAsB,GAAG,UAAU,CAAC,IAAI;gBAErF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAmB,gBAAA,EAAA,WAAW,CAAE,CAAA,CAAC;AACzF,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;;AAE7E,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,YAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACrD,YAAA,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;AAClF,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;AACvE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC;;AAE/D,SAAC,CAAC;;AAGJ,IAAA,OAAO,CAAC,aAAqB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACrD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,aAAa,EAAC,CAAC;AAC9D,SAAC,CAAC;;AAGJ,IAAA,iBAAiB,CAAC,SAAyC,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACrD,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,KAAK,SAAS,CAAC,aAAa,EAAE;AACvE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC,aAAa,EAAC,CAAC;;AAEpF,SAAC,CAAC;;AAGJ,IAAA,SAAS,CAAC,SAAyC,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;YACrD,IAAI,UAAU,EAAE;AACd,gBAAA,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa;AAC7C,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC;AAChE,gBAAA,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI;AAEnC,gBAAA,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE;AACnC,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;oBAChD;;AAGF,gBAAA,IAAI,WAAW,GAAG,aAAa,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAE,aAAa,EAAC,CAAC;;;AAGlE,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGnC,IAAA,aAAa,CAAC,OAAgC,EAAA;QAC5C,IAAI,CAAC,uBAAuB,CAAC;AAC1B,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,qBAAqB,IAAG;YACjC,MAAM,iBAAiB,GAAe,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACxE,YAAA,MAAM,eAAe,GAAG,qBAAqB,IAAI,iBAAiB;AAElE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmB,gBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA,CAAE,CAAC;AAEvE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AACzC,SAAC,CAAC;;AAGE,IAAA,oBAAoB,CAAC,OAAgC,EAAA;QAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAEzE,OAAO;YACL,GAAG,IAAI,CAAC,kBAAkB;AAC1B,YAAA,IAAI,EAAE,gBAAgB;SACvB;;+GAjHQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA5B,4BAA4B,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACzBD;;;;;;;;;;;;;;AAcG;MAUU,wBAAwB,CAAA;AAQnC,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB;;AAGpC,IAAA,WAAA,CACmB,kBAAsC,EACtC,eAAgC,EAChC,uBAAgD,EAAA;QAFhD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QAdzB,IAAsB,CAAA,sBAAA,GACrC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,CAClD,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CACrE,CACF;;AAYH,IAAA,MAAM,CAAC,iBAAoC,EAAA;QACzC,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;AACnE,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;AAGxC,IAAA,wBAAwB,CAAC,MAAyB,EAAA;QAChD,MAAM,OAAO,GAA4C,EAAE;QAE3D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAG;AACrC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAQ;AAC3C,YAAA,IAAI,WAAW,CAAC,KAAK,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,EAAC,CAAC;;AAChF,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACrC,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAC,CAAC;;iBAC7C;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAC,CAAC;;AAExD,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO;;+GAtCL,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAxB,wBAAwB,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACvBD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH,IAAK;AAAL,CAAA,UAAK,wBAAwB,EAAA;AAC3B,IAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,wBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,wBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,wBAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,wBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,wBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EATI,wBAAwB,KAAxB,wBAAwB,GAS5B,EAAA,CAAA,CAAA;;ACTD;;;;;;;;;;;;;;AAcG;AAYH,IAAK;AAAL,CAAA,UAAK,cAAc,EAAA;AACjB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANI,cAAc,KAAd,cAAc,GAMlB,EAAA,CAAA,CAAA;;AChCD;;;;;;;;;;;;;;AAcG;AAIH,IAAK;AAAL,CAAA,UAAK,WAAW,EAAA;AACd,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EANI,WAAW,KAAX,WAAW,GAMf,EAAA,CAAA,CAAA;;ACxBD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;AAEH,IAAK;AAAL,CAAA,UAAK,UAAU,EAAA;AACb,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EALI,UAAU,KAAV,UAAU,GAKd,EAAA,CAAA,CAAA;;MCMY,aAAa,CAAA;IAUxB,WACE,CAAA,IAAe,EACf,wBAAkD,EAClD,gBAAkC,EAClC,MAAc,EACd,KAAqB,EAAA;AAdN,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;QACvD,IAAK,CAAA,KAAA,GAAc,IAAI;QACvB,IAAyB,CAAA,yBAAA,GAA6B,IAAI;QAC1D,IAAiB,CAAA,iBAAA,GAAqB,IAAI;QACnD,IAAgB,CAAA,gBAAA,GAAsB,IAAI;QAC1C,IAAU,CAAA,UAAA,GAAY,IAAI;AAWhC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,yBAAyB,GAAG,wBAAwB;AACzD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;;AAGnB,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG7C,IAAA,OAAO,CAAC,OAAgB,EAAA;AAC7B,QAAA,IAAI,UAAoB;QAExB,IAAI,OAAO,EAAE;YACX,UAAU;AACR,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5C,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO,CAAC;;QAGtD,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;;AAGpC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGhB,IAAA,IAAI,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;;IAInB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG3B,IAAA,WAAW,CAAC,GAAY,EAAA;AAC9B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9F,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;QAEjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC;;AAG3E,IAAA,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACxD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KAAI;AACnC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;AACnC,YAAA,MAAM,iBAAiB,GAAG,MAAM,EAAE,UAAU;YAC5C,MAAM,mBAAmB,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAG,EAAA,mBAAmB,CAAG,EAAA,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC,EAAE;AACpF,gBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI;oBAClC,WAAW;iBACZ,CAAC;AACF,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC;AACJ,SAAC,CAAC;;AAGE,IAAA,SAAS,CAAC,GAAY,EAAA;QAC5B,GAAG,CAAC,QAAQ,EAAE;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE7B;MAgBY,OAAO,CAAA;IASlB,WACE,CAAA,IAAY,EACZ,QAAgB,EAChB,SAAc,EACd,UAAmB,EACnB,KAAc,EACd,SAAA,GAAqB,KAAK,EAAA;QATpB,IAAO,CAAA,OAAA,GAAG,KAAK;QACf,IAAU,CAAA,UAAA,GAAG,KAAK;AAUxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAE3B,QAAA,IAAI,UAAU;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7C,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AAC9B,QAAA,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;AAG5C,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;;AAGnB,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;AAGvB,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;;AAGxB,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;;AAGzB,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;;IAGjB,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;IAGd,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;IAGf,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;;AAEtB;;ACpMD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;AAWH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACpD,MAAM,CAAC,aAAa,GAAG,mBAAmB;MAQ7B,gCAAgC,CAAA;AAW3C,IAAA,WAAA,CACmB,eAAgC,EAChC,KAAqB,EACrB,WAAwB,EAAA;QAFxB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAW,CAAA,WAAA,GAAX,WAAW;QAPvB,IAAc,CAAA,cAAA,GAAe,IAAI;AAEhC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAOzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;AAC/E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI;;IAG5B,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,IAAI,EAAE;;IAGN,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAE5B,IAAI,GAAA;QACT,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACrE,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;SACzB,CAAC,CACH;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC;aACF,gCAAgC,CAAC,CAAG,EAAA,IAAI,CAAC,sBAAsB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC1F,SAAS,CAAC,cAAc,IAAG;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc;SACrC,CAAC,CACL;;+GA5CQ,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,0EClC7C,whCA6BA,EAAA,MAAA,EAAA,CAAA,uhCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDKa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,oCAAoC,EAAA,aAAA,EAG/B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,whCAAA,EAAA,MAAA,EAAA,CAAA,uhCAAA,CAAA,EAAA;;;AEhCvC;;;;;;;;;;;;;;AAcG;MAaU,iCAAiC,CAAA;IAuD5C,WACmB,CAAA,KAAqB,EACrB,eAAgC,EAAA;QADhC,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAe,CAAA,eAAA,GAAf,eAAe;QAxDjB,IAAyB,CAAA,yBAAA,GACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACtB,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAC5E,EACD,GAAG,CAAC,wBAAwB,IAC1B,wBAAwB,CAAC,GAAG,CAAC,uBAAuB,KAAK;AACvD,YAAA,GAAG,uBAAuB;AAC1B,YAAA,SAAS,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;AACvD,SAAA,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,wBAAwB,IAC1B,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KACjC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAC1F,CACF,EACD,GAAG,CAAC,wBAAwB,IAAG;AAC7B,YAAA,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC;;SAEzF,CAAC,CACH;QAEa,IAAqB,CAAA,qBAAA,GACnC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC,GAAG,CAAC,wBAAwB,IAC1B,wBAAwB,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,KAAK,MAAM;AAChE,YAAA,iBAAiB,EAAE,uBAAuB,CAAC,EAAE,CAAC,iBAAiB;AAC/D,YAAA,OAAO,EAAE,uBAAuB,CAAC,WAAW,IAAI,GAAG;YACnD,QAAQ,EAAE,KAAK,KAAK,CAAC;SACtB,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,oBAAoB,KAAK;AAC3B,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC,EACH,SAAS,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAC7B;AAEa,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QACrE,IAAwB,CAAA,wBAAA,GACtC,aAAa,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CACnF,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,KACxD,wBAAwB,CAAC,IAAI,CAC3B,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC,iBAAiB,KAAK,yBAAyB,CACxE,CACF,EACD,GAAG,CAAC,oBAAoB,KAAK;AAC3B,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC,EACH,SAAS,CAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAC7B;;AAOI,IAAA,mBAAmB,CAAC,iBAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACvB,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;+GA9DhD,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,2EC3B9C,klGA8EA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnDa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,qCAAqC,EAAA,QAAA,EAAA,klGAAA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA;;;AEvBjD;;;;;;;;;;;;;;AAcG;AASH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACpD,MAAM,CAAC,aAAa,GAAG,mBAAmB;MAO7B,8BAA8B,CAAA;AASzC,IAAA,WAAA,CACU,KAAqB,EACrB,eAAgC,EAChC,cAAiC,EAAA;QAFjC,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;AAXd,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAE;QAK3D,IAAgB,CAAA,gBAAA,GAAG,CAAC;AAQ1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;QAC7C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;;IAG5C,OAAO,iBAAiB,CAAC,UAAsB,EAAA;QACrD,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QACtD,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,OAAO,SAAS,GAAG,SAAS;;IAG9B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;;AAGpC,IAAA,aAAa,CAAC,UAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YAC7E,MAAM,aAAa,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAG;gBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC1D,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE;AACpC,gBAAA,aAAa,CAAC,IAAI,CAChB,IAAI,gBAAgB,CAClB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAChC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAC1B,WAAW,CAAC,QAAQ,CAAC,IAAI,EACzB,OAAO,EACP,8BAA8B,CAAC,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,EACxE,WAAW,CAAC,UAAU,CACvB,CACF;AACH,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;AAC7B,SAAC,CAAC;;AAGG,IAAA,kBAAkB,CAAC,IAAI,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;;+GAxDhC,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,6HC/B3C,8+DAwDA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,8+DAAA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA;uJAKlC,iBAAiB,EAAA,CAAA;sBAA1B;;;AEhCH;;;;;;;;;;;;;;AAcG;MASU,iCAAiC,CAAA;+GAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,wECvB9C,g4BAqBA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,g4BAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;AEnB9C;;;;;;;;;;;;;;AAcG;MAkBU,oCAAoC,CAAA;AA6C/C,IAAA,WAAA,CACmB,KAAqB,EACrB,eAAgC,EAChC,aAA4B,EAC5B,qBAA4C,EAC5C,eAAgC,EAChC,aAA4B,EAC5B,gBAAkC,EAClC,aAA4B,EAC5B,eAAgC,EAAA;QARhC,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QAnDlB,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,yBAAyB,IAAI,CAAC;QAChF,IAAa,CAAA,aAAA,GAC3B,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,2BAA2B,IAAI,IAAI;AAC1D,QAAA,IAAA,CAAA,MAAM,GAAG;AACd,YAAA,EAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAC;AACrC,YAAA,EAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAC;YAC5C,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAC;AACzD,YAAA,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAC;SACxC;AACM,QAAA,IAAA,CAAA,OAAO,GAAG;AACf,YAAA;AACE,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,SAAS,EAAE,qBAAqB;gBAChC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,aAAA;AACD,YAAA;AACE,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,SAAS,EAAE,gBAAgB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,aAAA;SACF;AACQ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,aAAa,GAAmC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvEc,WAAS,CAAC,MACR,aAAa,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AACjD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CACH,EACDC,KAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAI;AACjB,YAAA,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,IAAI,EAAE;YACjD,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK;AAChD,gBAAA,GAAG,IAAI;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC;AAC1F,aAAA,CAAC,CAAC;YAEH,OAAO,eAAe,IAAI,EAAE;AAC9B,SAAC,CAAC,EACFA,KAAG,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC,CACzF;QAaC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;QAC7C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;QAClD,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;;IAG5E,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;;AAGzB,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,CAAC;aACF,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,UAAU;aAC7D,IAAI,CACHD,WAAS,CAAC,YAAY,IACpB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CACnF;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,2CAA2C,CAAC;gBACvE,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,sCAAsC,CAAC;AAChE,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;AACF,SAAA,CAAC;;AAGN,IAAA,gBAAgB,CAAC,WAAwB,EAAA;AACvC,QAAA,IAAI,CAAC;AACF,aAAA,WAAW,CAAC,WAAW,CAAC,MAAM;AAC9B,aAAA,SAAS,CAAC,CAAC,QAAqB,KAAI;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzE,SAAC,CAAC;;AAGN,IAAA,iBAAiB,CAAC,WAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kCAAkC,CAAC;YAC7E,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;YACjF,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;YACpF,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACrF,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,gBAAgB,EAAE,WAAW;AAC7B,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,aAAa,EAAE,IAAI;YACnB,uBAAuB,EAAE,MAAK;AAC5B,gBAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAChF,MAAK;AACH,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,4CAA4C,CAAC;oBACxE,IAAI,CAAC,gBAAgB,EAAE;iBACxB,EACD,MAAK;AACH,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,wCAAwC,CAAC;AACpE,iBAAC,CACF;aACF;AACF,SAAA,CAAC;;IAGI,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;+GA3Hf,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,+EChCjD,s6CA4CA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDZa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBALhD,SAAS;+BACE,yCAAyC,EAAA,QAAA,EAAA,s6CAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;;AE5BrD;;;;;;;;;;;;;;AAcG;MA2BU,kCAAkC,CAAA;IAa7C,WACmB,CAAA,aAA4B,EAG5B,kCAA6C,EAAA;QAH7C,IAAa,CAAA,aAAA,GAAb,aAAa;QAGb,IAAkC,CAAA,kCAAA,GAAlC,kCAAkC;QAhBhB,IAAQ,CAAA,QAAA,GAAG,KAAK;QACZ,IAAW,CAAA,WAAA,GAAG,KAAK;AAK5C,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,4BAA4B,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEjE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;IAS7C,QAAQ,GAAA;QACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;IAGpC,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,6BAA6B,IAAG;AAC1E,YAAA,IAAI,CAAC,QAAQ,GAAG,6BAA6B;AAC7C,YAAA,IAAI,CAAC,WAAW,GAAG,6BAA6B;AAEhD,YAAA,IAAI,CAAC,6BAA6B;gBAAE;YAEpC,IAAI,CAAC,qBAAqB,CAAC,eAAe,CACxC,IAAI,CAAC,kCAAkC,IAAI,iCAAiC,CAC7E;SACF,CAAC,CACH;;IAGI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG3B,IAAA,SAAS,CAAC,MAAqB,EAAA;AACrC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc;QAC5C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,SAAS,CAAC;AAC9E,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,cAAc,CAAC;;AA/C/E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,+CAgBnC,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAhB3C,kCAAkC,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIH,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7C5D,42BAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,oCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDoBa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;+BACE,sCAAsC,EAAA,QAAA,EAAA,42BAAA,EAAA;;0BAkB7C;;0BACA,MAAM;2BAAC,4CAA4C;yCAfjB,QAAQ,EAAA,CAAA;sBAA5C,WAAW;uBAAC,sBAAsB;gBACM,WAAW,EAAA,CAAA;sBAAnD,WAAW;uBAAC,0BAA0B;gBAG/B,qBAAqB,EAAA,CAAA;sBAD5B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;;;AE7C7D;;;;;;;;;;;;;;AAcG;AAIH,IAAKkB,mBAOJ;AAPD,CAAA,UAAK,iBAAiB,EAAA;AACpB,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,QAAe;AACf,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAPIA,mBAAiB,KAAjBA,mBAAiB,GAOrB,EAAA,CAAA,CAAA;AAED,IAAK,kCAIJ;AAJD,CAAA,UAAK,kCAAkC,EAAA;AACrC,IAAA,kCAAA,CAAA,oBAAA,CAAA,GAAA,qDAA0E;AAC1E,IAAA,kCAAA,CAAA,MAAA,CAAA,GAAA,8BAAqC;AACrC,IAAA,kCAAA,CAAA,8BAAA,CAAA,GAAA,+DAA8F;AAChG,CAAC,EAJI,kCAAkC,KAAlC,kCAAkC,GAItC,EAAA,CAAA,CAAA;AAED,MAAM,yBAAyB,GAAsB;IACnD,MAAM,EAAEA,mBAAiB,CAAC,KAAK;IAC/B,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;CAChE;AAED,MAAM,uBAAuB,GAAsB;IACjD,MAAM,EAAEA,mBAAiB,CAAC,GAAG;IAC7B,QAAQ,EAAE,kCAAkC,CAAC,IAAI;CAClD;AAED,MAAM,0BAA0B,GAAsB;IACpD,MAAM,EAAEA,mBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,kCAAkC,CAAC,IAAI;CAClD;AAED,MAAM,wBAAwB,GAAsB;IAClD,MAAM,EAAEA,mBAAiB,CAAC,IAAI;IAC9B,QAAQ,EAAE,kCAAkC,CAAC,IAAI;CAClD;AAED,MAAM,0BAA0B,GAAsB;IACpD,MAAM,EAAEA,mBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;CAChE;AAED,MAAM,wBAAwB,GAAsB;IAClD,MAAM,EAAEA,mBAAiB,CAAC,IAAI;IAC9B,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;CAChE;AAED,MAAM,0BAA0B,GAAsB;IACpD,MAAM,EAAEA,mBAAiB,CAAC,GAAG;IAC7B,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;CAChE;AAED,MAAM,0BAA0B,GAAsB;IACpD,MAAM,EAAEA,mBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;CAChE;;ACvED;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAWU,YAAY,CAAA;IAOvB,WACmB,CAAA,aAA4B,EAC5B,IAAgB,EAAA;QADhB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAI,CAAA,IAAA,GAAJ,IAAI;QARN,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;AAC3E,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAiB,KAAK,CAAC;;IAOzE,gBAAgB,CAAC,UAAkB,EAAE,MAAY,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,wBAAwB,CAAA,YAAA,EAAe,UAAU,CAAO,KAAA,CAAA,EAChE,EAAC,MAAM,EAAC,CACT;;IAGH,kBAAkB,CAAC,UAAkB,EAAE,OAA0B,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAG,EAAA,IAAI,CAAC,wBAAwB,eAAe,UAAU,CAAA,KAAA,CAAO,EAChE,OAAO,CACR;;IAGH,UAAU,CAAC,MAAc,EAAE,OAA0B,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAO,CAAG,EAAA,IAAI,CAAC,wBAAwB,WAAW,MAAM,CAAA,CAAE,EAAE,OAAO,CAAC;;AAG1F,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,CAAA,EAAG,IAAI,CAAC,wBAAwB,CAAA,QAAA,EAAW,MAAM,CAAA,CAAE,CAAC;;AAGpF,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGtC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;IAGxC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3B,IAAA,YAAY,CAAC,IAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;+GA/DlB,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACxBD;;;;;;;;;;;;;;AAcG;MAqBU,kBAAkB,CAAA;IAiB7B,WACmB,CAAA,YAA0B,EAC1B,YAA0B,EAAA;QAD1B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY;AAhBrB,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAE;AACvD,QAAA,IAAA,CAAA,aAAa,GAAsB,IAAI,YAAY,EAAE;AAGtD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC5C,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,CAAC,YAAY,CAAC,aAAa;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,CAAC,YAAY,CAAC,UAAU;AAK7D,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,OAAO,EAAW;;IAO3D,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;;IAGtC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;IAGhC,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;;IAGb,IAAI,GAAA;QACF,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;AACxC,aAAA,IAAI,CAACC,MAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAI;YAC/B,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEvC,SAAC,CAAC;;IAGN,YAAY,GAAA;AACV,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;AACzD,aAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAI;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;qBAC9B;AACL,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAC,CAAC;;;AAGhE,SAAC,CAAC;;IAGE,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGI,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACxD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7C,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGb,IAAA,QAAQ,CAAC,IAAS,EAAA;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;+GA1FvB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,yRCnC/B,0lFAoFA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,0lFAAA,EAAA,MAAA,EAAA,CAAA,uzBAAA,CAAA,EAAA;2GAKN,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBACb,UAAU,EAAA,CAAA;sBAAlB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;AEvCH;;;;;;;;;;;;;;AAcG;MAyBU,8BAA8B,CAAA;IA8GzC,WACmB,CAAA,YAA0B,EAC1B,iBAAoC,EACpC,aAA4B,EAC5B,KAAqB,EACrB,aAA4B,EAC5B,gBAAkC,EAAA;QALlC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAnHE,IAAQ,CAAA,QAAA,GAAG,IAAI;QAE7C,IAAa,CAAA,aAAA,GAAmB,EAAE;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAsC,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAE5C,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,OAAO,GAAG;YACxB,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;YACnF,EAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;SAC1F;QAEe,IAAO,CAAA,OAAA,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAClES,WAAS,CAAC,CAAC,UAAkB,KAC3B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;YAChE,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU;SACX,CAAC,CACH,CACF;QAEe,IAAmB,CAAA,mBAAA,GAAG,IAAI,eAAe,CAAsB;AAC7E,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC;QAEc,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAsB;AACpE,YAAA,cAAc,EAAE,CAAC;AAClB,SAAA,CAAC;QAEc,IAAW,CAAA,WAAA,GAA2B,aAAa,CAAC;AAClE,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,UAAU;AAChB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,MAClB,EAAC,GAAG,WAAW,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAC,CAAe,CAChF,CACF;QAEe,IAAM,CAAA,MAAA,GAA4B,aAAa,CAAC;AAC9D,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,YAAY,CAAC,QAAQ;YAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ;AAC3B,SAAA,CAAC,CAAC,IAAI,CACLO,KAAG,CAAC,OAAO,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,EACpCP,WAAS,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,KAClC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC7C,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;AACvB,SAAA,CAAC,CACH,EACDO,KAAG,CAAC,CAAC,GAAe,KAAI;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAACF,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,GAAG,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,aAAa,EAAC,CAAC;AACrE,aAAC,CAAC;SACH,CAAC,EACFL,WAAS,CAAC,GAAG,IACX,aAAa,CAAC;YACZ,EAAE,CAAC,GAAG,CAAC;AACP,YAAA,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IACrB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,EAAE;gBACnE,QAAQ,EAAE,kCAAkC,CAAC,IAAI;gBACjD,UAAU,EAAE,IAAI,CAAC,EAAE;AACpB,aAAA,CAAC,CACH;AACD,YAAA,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IACrB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,EAAE;gBACjE,QAAQ,EAAE,kCAAkC,CAAC,IAAI;gBACjD,UAAU,EAAE,IAAI,CAAC,EAAE;AACpB,aAAA,CAAC,CACH;AACF,SAAA,CAAC,CACH,EACD,GAAG,CAAC,eAAe,IAAG;AACpB,YAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC;AAC9E,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YACzD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAC/D,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;AAE1D,YAAA,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,KAAK,KAAI;AAC1D,gBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAC1F,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,gBAAgB,CAClB,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,EACrC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,qBAAqB,EAC1B,eAAe,CAAC,OAAO,EAAE,EACzB,IAAI,CAAC,OAAO,EACZ,EAAE,EACF,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EACb;AACE,oBAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC/C,oBAAA,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC5C,iBAAA,CACF,CACF;gBACD,OAAO;AACL,oBAAA,GAAG,IAAI;iBACR;AACH,aAAC,CAAC;AACJ,SAAC,CAAC,EACFO,KAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;;IAWM,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC7B,SAAC,CAAC;;AAGG,IAAA,iBAAiB,CAAC,aAAa,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAACF,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC7D,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,GAAG,WAAW,EAAE,IAAI,EAAE,aAAa,GAAG,CAAC,EAAC,CAAC;AAC1E,SAAC,CAAC;;IAGG,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;;AAGxB,IAAA,aAAa,CAAC,OAAO,EAAA;AAC1B,QAAA,IAAI,CAAC;aACF,IAAI,CACHA,MAAI,CAAC,CAAC,CAAC,EACPL,WAAS,CAAC,CAAC,UAAkB,KAAK,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aAE7F,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;AAC/B,SAAC,CAAC;;AAGC,IAAA,aAAa,CAAC,OAAO,EAAA;QAC1B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AACxF,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAC1F,SAAC,CAAC;;AAGG,IAAA,QAAQ,CAAC,IAAI,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;;AAGxB,IAAA,UAAU,CAAC,IAAI,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;YACnF,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8CAA8C,CAAC;YACvF,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;YACpF,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,CAAC;AACrF,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,gBAAgB,EAAE,WAAW;AAC7B,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,aAAa,EAAE,IAAI;YACnB,uBAAuB,EAAE,MAAK;AAC5B,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iDAAiD,CAAC,CACjF;AACH,iBAAC,CAAC;aACH;AACF,SAAA,CAAC;;+GAvLO,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,2ICvC3C,uiFAgFA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,kBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzCa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,kCAAkC,EAAA,QAAA,EAAA,uiFAAA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA;0OAKP,QAAQ,EAAA,CAAA;sBAA5C,WAAW;uBAAC,sBAAsB;;;AExCrC;;;;;;;;;;;;;;AAcG;AAUH,MAAM,OAAO,GAAG,IAAI,cAAc,CAAsB,QAAQ;AAEhE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAiB;AAC3C,IAAA,CAAC,WAAW,CAAC,OAAO,EAAE,gCAAgC,CAAC;AACvD,IAAA,CAAC,WAAW,CAAC,QAAQ,EAAE,iCAAiC,CAAC;AACzD,IAAA,CAAC,WAAW,CAAC,KAAK,EAAE,8BAA8B,CAAC;AACnD,IAAA,CAAC,WAAW,CAAC,SAAS,EAAE,kCAAkC,CAAC;AAC5D,CAAA;AAED,MAAM,sBAAsB,GAAyB;AACnD,IAAA,CAAC,WAAW,CAAC,OAAO,GAAG,gCAAgC;AACvD,IAAA,CAAC,WAAW,CAAC,QAAQ,GAAG,iCAAiC;AACzD,IAAA,CAAC,WAAW,CAAC,KAAK,GAAG,8BAA8B;AACnD,IAAA,CAAC,WAAW,CAAC,SAAS,GAAG,kCAAkC;AAC3D,IAAA,CAAC,WAAW,CAAC,KAAK,GAAG,8BAA8B;;;ACtCrD;;;;;;;;;;;;;;AAcG;AAKH,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,wDAAwD;;ACpB1D;;;;;;;;;;;;;;AAcG;AAKH,MAAM,yBAAyB,GAAqB;AAClD,IAAA,cAAc,CAAC,GAAG;AAClB,IAAA,cAAc,CAAC,IAAI;AACnB,IAAA,cAAc,CAAC,IAAI;;AAGrB,MAAM,+BAA+B,GAA2B;AAC9D,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE,uBAAuB;AAC/B,QAAA,QAAQ,EAAE,yBAAyB;AACpC,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,YAAY,EAAE,iCAAiC;AAC/C,QAAA,SAAS,EAAE,8BAA8B;AACzC,QAAA,UAAU,EAAE,+BAA+B;AAC5C,KAAA;;AAGH,MAAM,+BAA+B,GAA+B;AAClE,IAAA,WAAW,EAAE,mCAAmC;AAChD,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,KAAK,EAAE,6BAA6B;;;ACxCtC;;;;;;;;;;;;;;AAcG;AAKH,MAAM,0BAA0B,GAAuB;AACrD,IAAA,GAAG,EAAE,wBAAwB;AAC7B,IAAA,sBAAsB,EAAE,EAAE;AAC1B,IAAA,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,uBAAuB,CAAC,IAAI;AACnC,IAAA,0BAA0B,EAAE,KAAK;;;ACxBnC;;;;;;;;;;;;;;AAcG;AAEG,MAAA,eAAe,GAAG;AAClB,MAAA,gBAAgB,GAAG;;ACjBzB;;;;;;;;;;;;;;AAcG;AAKH,MAAM,wBAAwB,GAAG,IAAI,cAAc,CACjD,iFAAiF;;ACjB7E,MAAA,0BAA0B,GAAG;AAE7B,MAAA,8BAA8B,GAAG;AAEjC,MAAA,mCAAmC,GAAG;AAE5C,MAAM,qCAAqC,GAAwB;AACjE,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,GAAG;;AAGN,MAAA,mCAAmC,GAAoB;AACvD,MAAA,mCAAmC,GAAa;AAEtD,MAAM,2CAA2C,GAAG;AAClD,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,GAAG;;;ACtBZ;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAeU,+BAA+B,CAAA;AA8B1C,IAAA,WAAA,CACmB,UAA6B,EAC7B,KAAqB,EACrB,WAAwB,EAAA;QAFxB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAW,CAAA,WAAA,GAAX,WAAW;AAhCd,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAEtD,IAAc,CAAA,cAAA,GAAkC,aAAa,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,KAAK;YACrB,IAAI,CAAC,KAAK,CAAC,MAAM;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAI;AAC3B,YAAA,MAAM,cAAc,GAAG,MAAM,EAAE,GAAG;AAClC,YAAA,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU;AACrC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;YAEhE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGjB,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,UAAU;AAChD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;SAC5F,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACpC,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACjD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;SAChB,CAAC,CACH;;+GA5BU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,oDC7B5C,+1CAsCA,EAAA,MAAA,EAAA,CAAA,wvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDTa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+1CAAA,EAAA,MAAA,EAAA,CAAA,wvBAAA,CAAA,EAAA;;;AE3BjD;;;;;;;;;;;;;;AAcG;AAIH,IAAK,iBAEJ;AAFD,CAAA,UAAK,iBAAiB,EAAA;AACpB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAFI,iBAAiB,KAAjB,iBAAiB,GAErB,EAAA,CAAA,CAAA;AAED,IAAK,0BAGJ;AAHD,CAAA,UAAK,0BAA0B,EAAA;AAC7B,IAAA,0BAAA,CAAA,kBAAA,CAAA,GAAA,qDAAwE;AACxE,IAAA,0BAAA,CAAA,0BAAA,CAAA,GAAA,6DAAwF;AAC1F,CAAC,EAHI,0BAA0B,KAA1B,0BAA0B,GAG9B,EAAA,CAAA,CAAA;AAED,MAAM,uCAAuC,GAAsB;IACjE,MAAM,EAAE,iBAAiB,CAAC,MAAM;IAChC,QAAQ,EAAE,0BAA0B,CAAC,gBAAgB;CACtD;;MCpBY,aAAa,CAAA;IAExB,IAAc,uBAAuB,CAAC,KAAsB,EAAA;AAC1D,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;;IAkB5C,WACqB,CAAA,eAAgC,EAChC,iBAAoC,EAAA;QADpC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAtBrB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;QAK9E,IAA0B,CAAA,0BAAA,GACxC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACjC,SAAS,CAAC,CAAC,mBAA2C,KACpD,IAAI,CAAC,eAAe,CAAC,oDAAoD,CACvE,mBAAmB,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAC7D,CACF,EACD,SAAS,CAAC,CAAC,iBAA8C,KACvD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,uCAAuC,EAAE;YAChF,QAAQ,EAAE,0BAA0B,CAAC,wBAAwB;AAC7D,YAAA,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,eAAe;SACjD,CAAC,CACH,CACF;;AAMJ;;ACnCD;;;;;;;;;;;;;;AAcG;MASU,cAAc,CAAA;AAIzB,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACjC,MAAM,CAAC,CAAC,yBAAwC,KAAK,CAAC,CAAC,yBAAyB,CAAC,EACjF,SAAS,CAAC,CAAC,oBAA4B,KACrC,IAAI,CAAC,eAAe,CAAC,oDAAoD,CACvE,oBAAoB,CACrB,CACF,EACD,oBAAoB,EAAE,CACvB;;AAGH,IAAA,WAAA,CAA6B,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;AAf3B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAC9D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE;;AAgB/C,IAAA,YAAY,CAAC,4BAAoC,EAAA;AACtD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAC1D,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;;IAGxB,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAxBzB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACtBD;;;;;;;;;;;;;;AAcG;AAmCG,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IAItD,IAAoB,YAAY,CAAC,KAAuB,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAOxC,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;;IAO3E,WAGmB,CAAA,sBAA8C,EAC9C,GAAsB,EACtB,cAA8B,EAC5B,eAAgC,EAChC,iBAAoC,EAAA;AAEvD,QAAA,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;QANxB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAc,CAAA,cAAA,GAAd,cAAc;QACZ,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAnBrB,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAA8B,EAAE,CAAC;AAE/E,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;AAM3E,QAAA,IAAA,CAAA,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAAC;AAEzC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAYlD,QAAA,IAAI,sBAAsB;AAAE,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC;;IAGjF,eAAe,GAAA;QACpB,IAAI,CAAC,4BAA4B,EAAE;;IAG9B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAClD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;;IAGxD,4BAA4B,GAAA;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAC1E,CAAC,CAAC,YAAY,EAAE,sBAAsB,CAAC,KAAI;AACzC,YAAA,MAAM,wBAAwB,GAAG,YAAY,EAAE,UAAU,EAAE,YAAY;AACvE,YAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;YAExE,IAAI,CAAC,eAAe,EAAE;AACpB,gBAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC;;YAGF,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,eAAe,CAAC;AAEpF,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;SACzB,CACF,CACF;;AAjEQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAwBtB,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAzB,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAxBvB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACW,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClD7D,wiDA2CA,EAAA,MAAA,EAAA,CAAA,u1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG5D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,EACvD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wiDAAA,EAAA,MAAA,EAAA,CAAA,u1BAAA,CAAA,EAAA;;0BAyB5C;;0BACA,MAAM;2BAAC,wBAAwB;qKAtBjB,yBAAyB,EAAA,CAAA;sBADzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;gBAGxC,YAAY,EAAA,CAAA;sBAA/B;;;AErDH;;;;;;;;;;;;;;AAcG;AA6CG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;IAMrD,IAAoB,mBAAmB,CAAC,KAAuB,EAAA;AAC7D,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;;IAKtC,IAAoB,UAAU,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;;IA+ChE,WACqB,CAAA,eAAgC,EAChC,iBAAoC,EACtC,KAAqB,EACrB,kBAAsC,EACtC,cAA8B,EAAA;AAE/C,QAAA,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;QANtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc;QApEK,IAAK,CAAA,KAAA,GAAG,cAAc;QAInD,IAAkB,CAAA,kBAAA,GAAG,KAAK;AAMnB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACxD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAQrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;AACzE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAEtD,IAAoB,CAAA,oBAAA,GAOhC,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KACvB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IACnC,MAAM,CAAC,MAAM,CACX,CAAC,YAAY,EAAE,QAAQ,KAAK;AAC1B,YAAA,GAAG,YAAY;YACf,IAAI,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;AACzC,kBAAE;AACE,oBAAA;wBACE,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,sBAAsB,EACnB,QAAQ,CAAC;8BACN,sBAAsB,IAAI,IAAI;AACpC,wBAAA,aAAa,EACV,QAAQ,CAAC,iBAA+C,EAAE,aAAa;4BACxE,KAAK;AACP,wBAAA,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;4BAC3D,GAAG,QAAQ,CAAC,iBAAiB;4BAC7B,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;yBAC5D,CAAC;AACH,qBAAA;AACF;kBACD,EAAE,CAAC;AACR,SAAA,EACD,EAAE,CACH,CACF,CACF,EACD,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC/C;;IAcM,eAAe,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,iBAAiB,EAAE;;IAGxE,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;;AAGvB,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAClD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;;IAGxD,iBAAiB,GAAA;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AACxD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU;QAE3D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,CAAC,EAAE;AAC1D,YAAA,IAAI,YAAY,GAAG,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;;iBACvB,IAAI,YAAY,GAAG,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE;AACpD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;;iBACvB,IAAI,YAAY,GAAG,GAAG,IAAI,YAAY,IAAI,IAAI,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;;AACvB,iBAAA,IAAI,YAAY,GAAG,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;;;;AAK1B,IAAA,oBAAoB,CAAC,UAAkB,EAAA;AAC7C,QAAA,OAAO,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;;AAGnD,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AACvC,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACvB,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACrB,gBAAA,IAAI,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,EAAE,aAAa,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC;AACzF,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,aAAC,CAAC;AACJ,SAAC,CAAC;;+GAvHO,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC3DjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8pGAyFA,EDtCI,MAAA,EAAA,CAAA,4vDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,YAAY,uDACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,gBAAgB;wBAChB,YAAY;wBACZ,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,8pGAAA,EAAA,MAAA,EAAA,CAAA,4vDAAA,CAAA,EAAA;oNAGqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBAEc,eAAe,EAAA,CAAA;sBAAhD,SAAS;uBAAC,aAAa;gBAEf,kBAAkB,EAAA,CAAA;sBAA1B;gBACmB,mBAAmB,EAAA,CAAA;sBAAtC;gBAQmB,UAAU,EAAA,CAAA;sBAA7B;;;AEzEH;;;;;;;;;;;;;;AAcG;AAyBG,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IACtD,IAAoB,UAAU,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;;IAEjD,IAAoB,mBAAmB,CAAC,KAAqC,EAAA;AAC3E,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC;AACxD,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;;AAK/C,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;;AAI3E,IAAA,IAAY,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;;IAoB1D,WACqB,CAAA,eAAgC,EAChC,iBAAoC,EACtC,WAAwB,EACxB,aAA0C,EAC1C,cAA8B,EAAA;AAE/C,QAAA,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;QANtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACnB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAc,CAAA,cAAA,GAAd,cAAc;AAjChB,QAAA,IAAA,CAAA,4BAA4B,GAC3C,IAAI,eAAe,CAAwC,IAAI,CAAC;AAKjD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAKtD,IAAwB,CAAA,wBAAA,GAA2B,aAAa,CAAC;AAC/E,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,YAAY;AAClB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KAC7B,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAC/C,MAAM,CAAC,UAAU,CAAC,kBAAkB,EACpC,UAAU,CACX;YACD,EAAE,CAAC,MAAM,CAAC;AACX,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EACpF,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAC5B;;AAYM,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAClD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;;+GAlDrD,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA2B,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvClC,63CAuCA,EDHY,MAAA,EAAA,CAAA,02BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2LAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGxD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC,EACnD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,63CAAA,EAAA,MAAA,EAAA,CAAA,02BAAA,CAAA,EAAA;mNAG3B,UAAU,EAAA,CAAA;sBAA7B;gBAGmB,mBAAmB,EAAA,CAAA;sBAAtC;;;AE3CH;;;;;;;;;;;;;;AAcG;AA2CG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;IAKrD,IAAoC,mBAAmB,CAAC,KAAsB,EAAA;AAC5E,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAA6B,EAAE,KAAa,MAAM;YAC9E,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;AACzD,YAAA,SAAS,EAAE,CAAqC,kCAAA,EAAA,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,GAAG,6BAA6B,GAAG,EAAE,CAAE,CAAA;YACzI,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI;AAC5C,gBAAA,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC;aAC3C,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC,IAAI;AAChD,gBAAA,UAAU,EAAE,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC;aACnD,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,SAAS,CAAC,IAAI;AAC7C,gBAAA,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;aAC7C,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,cAAc,CAAC,IAAI;AAClD,gBAAA,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC;aACvD,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,IAAI;AAC5C,gBAAA,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC;aAC3C,CAAC;SACH,CAAC,CAAC,CACJ;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAE1B,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB;;AAKlC,IAAA,IAAY,yBAAyB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAC/C,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,IAAI,CAAC,CACtD;;IAMH,IAA6B,UAAU,CAAC,KAAkC,EAAA;AACxE,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAErC,IAAI,CAAC,eAAe,CAAC,GAAG,CACtB,KAAK,CAAC,UAAU,GAAG;AACjB,cAAE;AACF,cAAE;AACE,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC5D,UAAU,EAAE,KAAK,CAAC,IAAI;AACvB,aAAA,CACN;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAwC1B,WACqB,CAAA,eAAgC,EAChC,iBAAoC,EACtC,wBAAkD,EAClD,GAAsB,EACtB,cAA8B,EAAA;AAE/C,QAAA,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;QANtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACnB,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAc,CAAA,cAAA,GAAd,cAAc;AAxEhB,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC;AAQrE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE7D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;AAoBzD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAEzD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAkB,IAAI,eAAe,EAAE,CAAC;QAEhE,IAAW,CAAA,WAAA,GAAG,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,yBAAyB;AAC/B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,uBAAuB,CAAC,KACrD,aAAa,CAAC;AACZ,YAAA,CAAC;AACC,kBAAE,EAAE,CAAC,IAAI;kBACP,IAAI,CAAC;AACF,qBAAA,aAAa,CACZ,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAC5B,WAAW;AAEZ,qBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAyB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5D,EAAE,CAAC,uBAAuB,CAAC;SAC5B,CAAC,CACH,EACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAC5B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAI;AACvC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,uBAAuB,EAAE;AAC5C,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,IAAI,GAAG,IAAI,KAAK,CAAS,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAElE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAClD,CAAC,CACH;;AAYM,IAAA,YAAY,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,GAAG,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CAAA,CAAE,CAAC;QACrF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAsB,MAAM;AACvD,YAAA,GAAG,KAAK;AACR,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC,CAAC;;AAGE,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAClD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;;+GA3HrD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA4B,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,ECzDjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8/DA+DA,EDdI,MAAA,EAAA,CAAA,0pCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,gBAAgB;wBAChB,WAAW;wBACX,eAAe;wBACf,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,8/DAAA,EAAA,MAAA,EAAA,CAAA,0pCAAA,CAAA,EAAA;sNAG+B,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACS,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBAGa,mBAAmB,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBA2CM,UAAU,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;;;AEzGzB;;;;;;;;;;;;;;AAcG;AA2DG,MAAO,yBAA0B,SAAQ,aAAa,CAAA;IAM1D,IAAoB,mBAAmB,CAAC,KAA2B,EAAA;AACjE,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAMvC,IAAA,IAAY,yBAAyB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAC/C,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,IAAI,CAAC,CACtD;;IAGH,IAAoB,UAAU,CAAC,KAAgD,EAAA;AAC7E,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAClE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAE5C,IAAI,CAAC,eAAe,CAAC,GAAG,CACtB,KAAK,CAAC,UAAU,GAAG;AACjB,cAAE;AACF,cAAE;AACE,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC5D,UAAU,EAAE,KAAK,CAAC,IAAI;AACvB,aAAA,CACN;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAuE1B,WACqB,CAAA,eAAgC,EAChC,iBAAoC,EACtC,kBAAsC,EACtC,GAAsB,EACtB,gBAA0C,EAC1C,cAA8B,EAAA;AAE/C,QAAA,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;QAPtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACnB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAc,CAAA,cAAA,GAAd,cAAc;QAjHK,IAAK,CAAA,KAAA,GAAG,2BAA2B;AAUzD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEpD,QAAA,IAAA,CAAA,gCAAgC,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC;AA2BrE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAEzB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AAC7E,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAkB,IAAI,eAAe,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;AAE1B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAiC,IAAI,CAAC;AAE/E,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAExD,IAAY,CAAA,YAAA,GAA+C,aAAa,CAAC;AACxF,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,oBAAoB;AAC1B,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE,mBAAmB,CAAC,KAC1E,aAAa,CAAC;AACZ,YAAA,CAAC;AACC,kBAAE,EAAE,CAAC,IAAI;kBACP,IAAI,CAAC;AACF,qBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,WAAW;AAChF,qBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1E,EAAE,CAAC,uBAAuB,CAAC;SAC5B,CAAC,CACH,EACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAC5B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAI;AACvC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,uBAAuB,EAAE;AAC5C,gBAAA,OAAO,KAAK;;AAGd,YAAA,MAAM,IAAI,GAAG,IAAI,KAAK,CAAS,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAElE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,EAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;SAC3E,CAAC,CACH;AAEe,QAAA,IAAA,CAAA,sBAAsB,GAElC,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACpE,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,CAAC,EACtE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAI;YACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;SACzC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,KAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM;YACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB;aACtE,CAAC;AACF,YAAA,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAC5C,CAAC,qBAAqB,EAAE,YAAY,KAAK;AACvC,gBAAA,GAAG,qBAAqB;AACxB,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC1C,aAAA,EACD,EAAE,CACH;AACF,SAAA,CAAC,CAAC,CACJ,EACD,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACzC;;IAeM,eAAe,GAAA;QACpB,IAAI,CAAC,iBAAiB,EAAE;;IAGnB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;;AAGvB,IAAA,YAAY,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,GAAG,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CAAA,CAAE,CAAC;QACrF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAsB,MAAM;AACvD,YAAA,GAAG,KAAK;AACR,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC,CAAC;;AAGE,IAAA,mBAAmB,CAAC,OAAyB,EAAA;QAClD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;;IAGxD,YAAY,CAClB,KAAgC,EAChC,IAAkC,EAAA;AAElC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACxE,GAAG,KAAK,CAAC,iBAAiB;YAC1B,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI;AACzE,SAAA,CAAC;QAEF,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,YAAA,aAAa,EAAE,KAAK,CAAC,iBAAiB,EAAE,aAAa;SACtD;;IAGK,iBAAiB,GAAA;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;;AAGzD,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AACxD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU;QAE3D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,CAAC,EAAE;AAC1D,YAAA,IAAI,YAAY,GAAG,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;;iBACtB,IAAI,YAAY,GAAG,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE;AACpD,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;;iBACtB,IAAI,YAAY,GAAG,GAAG,IAAI,YAAY,IAAI,IAAI,EAAE;AACrD,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;;AACtB,iBAAA,IAAI,YAAY,GAAG,IAAI,EAAE;AAC9B,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;;;;AAKzB,IAAA,YAAY,CAAC,yBAAoD,EAAA;AACvE,QAAA,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK;AACxD,QAAA,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,iBAAiB;AAEhF,QAAA,IAAI,CAAC,4BAA4B,IAAI,gBAAgB,EAAE;AACrD,YAAA,OAAO,gBAAgB;;AAClB,aAAA,IAAI,4BAA4B,IAAI,gBAAgB,EAAE;YAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE;AACnE,gBAAA,GAAG,4BAA4B;gBAC/B,QAAQ,EAAE,4BAA4B,CAAC,IAAI;gBAC3C,aAAa,EAAE,4BAA4B,CAAC,aAAa;AAC1D,aAAA,CAAC;AAEF,YAAA,IAAI,cAAc;AAAE,gBAAA,OAAO,cAAc;;AAG3C,QAAA,OAAO,GAAG;;AAGJ,IAAA,gBAAgB,CAAC,IAAI,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,IAAG;AACxB,YAAA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;AACrF,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,aAAC,CAAC;AACJ,SAAC,CAAC;;+GA7MO,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ECzEtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mnHAyGA,EDzCI,MAAA,EAAA,CAAA,ivEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2RACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;+BACE,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,WAAW;wBACX,gBAAgB;wBAChB,eAAe;wBACf,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,mnHAAA,EAAA,MAAA,EAAA,CAAA,ivEAAA,CAAA,EAAA;yPAGqC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,OAAO;gBACmB,oBAAoB,EAAA,CAAA;sBAA1D,SAAS;uBAAC,kBAAkB;gBAEG,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACS,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACH,mBAAmB,EAAA,CAAA;sBAAtC;gBAemB,UAAU,EAAA,CAAA;sBAA7B;;;AE9FH;;;;;;;;;;;;;;AAcG;MAmEU,oBAAoB,CAAA;IAG/B,IAAoB,MAAM,CAAC,KAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;AAK3B,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;;AAK9D,IAAA,IAAY,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAwFlE,IAAA,WAAA,CACmB,2BAAwD,EACxD,iBAAoC,EACpC,KAAqB,EACrB,iBAA2C,EAC3C,eAAgC,EAChC,QAAmB,EACnB,OAAyB,EAAA;QANzB,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B;QAC3B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAO,CAAA,OAAA,GAAP,OAAO;AAxGT,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;AAM/D,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAA0B,IAAI,CAAC;AAM9E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAEjD,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,kBAAkB;SACxB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,aAAa,KAAK,CAAC,CAAC,EAChD,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,KAAI;AAC/B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,EAAE,IAAI,gBAAgB,CAAC,GAAG,gBAAgB;AAEzF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAA,EAAA,CAAI,CAAC;AACnF,YAAA,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,EAAE;SACtD,CAAC,CACH;QAEe,IAAqB,CAAA,qBAAA,GAAG,aAAa,CAAC;YACpD,IAAI,CAAC,2BAA2B,CAAC,gBAAgB;AACjD,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,kBAAkB;AACxB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,KAAI;YACzC,MAAM,UAAU,GACd,MAAM,CAAC,KAAK,GAAG,eAAe,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,eAAe,IAAI,GAAG;AAE/E,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA,CAAA,CAAG,CAAC;AAChF,YAAA,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,EAAE;SACtD,CAAC,CACH;QAEe,IAAc,CAAA,cAAA,GAAG,cAAc;AAE/B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AAEe,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,CAAC,iBAAiB,CAAC,aAAa;QAElE,IAAW,CAAA,WAAA,GAAkC,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,WAAW;AACjB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;;AAErC,QAAA,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC;AACtE,cAAE,EAAE,CAAC,EAAE;AACP,cAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAClC,UAAU,EACV,MAAM,EACN,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC;AACrE,kBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM;kBAC5B,SAAS,CACd,CACN,EACD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5E,SAAC,CAAC,EACFkB,YAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBACtB,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE5E,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;SAChB,CAAC,CACH;QAEe,IAAM,CAAA,MAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC7F,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,KAAI;AAC1C,YAAA,OAAO,YAAY,KAAK,kBAAkB,CAAC;kBACvC,mBAAmB,CAAC;sBAClB,YAAY,CAAC;sBACb,YAAY,CAAC;kBACf,mBAAmB,CAAC;sBAClB,YAAY,CAAC;AACf,sBAAE,YAAY,CAAC,GAAG;SACvB,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;IAgB7C,eAAe,GAAA;QACpB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,yBAAyB,EAAE;;IAG3B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;;IAGtB,yBAAyB,GAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;;AAG3D,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AACxD,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS;QAEjE,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,KAAK,CAAC,EAAE;AACxE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC;;;AAI1C,IAAA,gBAAgB,CAAC,mBAAuC,EAAA;AAC9D,QAAA,OAAO,QAAS,mBAAmB,CAAC,UAAiC,CAAC,eAAe,EAAE;;+GA7I9E,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFjC,gtGA0FA,EDtBI,MAAA,EAAA,CAAA,m3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2LACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,EACpB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,2FACrB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+BACX,oBAAoB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,qBAAqB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,yBAAyB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIhB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;+BACE,8BAA8B,EAAA,UAAA,EAG5B,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,qBAAqB;wBACrB,gBAAgB;wBAChB,eAAe;wBACf,WAAW;wBACX,oBAAoB;wBACpB,qBAAqB;wBACrB,yBAAyB;qBAC1B,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gtGAAA,EAAA,MAAA,EAAA,CAAA,m3BAAA,CAAA,EAAA;oRAGN,sBAAsB,EAAA,CAAA;sBAA9D,SAAS;uBAAC,oBAAoB;gBAEX,MAAM,EAAA,CAAA;sBAAzB;;;AEpFH;;;;;;;;;;;;;;AAcG;MA2BU,yBAAyB,CAAA;IAKpC,IAAoB,OAAO,CAAC,KAAmB,EAAA;QAC7C,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,EAAC,GAAG,MAAM,EAAE,IAAI,EAAEuB,EAAI,EAAE,EAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,gBAAgB,CAAC;AAC7D,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC;;AAK/C,IAAA,WAAA,CAA6B,2BAAwD,EAAA;QAAxD,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B;AAVxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAuB,EAAE,CAAC;;IAY1E,eAAe,GAAA;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAE/D,IAAI,CAAC,SAAS,EAAE;;IAGX,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;;AAGtB,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AACxD,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU;QAE7D,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,cAAc,CAAC;AAClE,YAAA,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,EAAE;;;IAIjD,SAAS,GAAA;QACf,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAChF,YAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CACvC,IAAI,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;AACjD,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA;AACD,gBAAA,cAAc,EAAE,KAAK;AACtB,aAAA,CAAC,CACH;AACH,SAAC,CAAC;;+GA/CO,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ECzCtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,82BAqBA,EDiBY,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,sFAAE,oBAAoB,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGjC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;+BACE,mCAAmC,EAAA,UAAA,EAGjC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAA,eAAA,EAC5B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,82BAAA,EAAA,MAAA,EAAA,CAAA,2wBAAA,CAAA,EAAA;6FAGR,oBAAoB,EAAA,CAAA;sBAA1D,SAAS;uBAAC,kBAAkB;gBAIT,OAAO,EAAA,CAAA;sBAA1B;;;AE9CH;;;;;;;;;;;;;;AAcG;MA4BU,6BAA6B,CAAA;AAuBxC,IAAA,WAAA,CACmB,KAAqB,EACrB,iBAAoC,EACpC,iBAA2C,EAC3C,2BAAwD,EAAA;QAHxD,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B;QA1BQ,IAAS,CAAA,SAAA,GAAG,IAAI;QACZ,IAAa,CAAA,aAAA,GAAG,IAAI;QACpB,IAAY,CAAA,YAAA,GAAG,IAAI;AAE5D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACpD,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AAEgB,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,CAAC,iBAAiB,CAAC,aAAa;AAEpE,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAEhE,IAAoB,CAAA,oBAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC3F,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,KAC7B,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,CACrE,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACxD;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;IAS5E,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAE;;IAGhD,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,EAAE;;+GApC3C,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C1C,4tDAkDA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,yBAAyB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIN,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,yBAAyB;wBACzB,gBAAgB;wBAChB,eAAe;qBAChB,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4tDAAA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA;6LAGO,SAAS,EAAA,CAAA;sBAA9D,WAAW;uBAAC,sBAAsB;gBACuB,aAAa,EAAA,CAAA;sBAAtE,WAAW;uBAAC,0BAA0B;gBACmB,YAAY,EAAA,CAAA;sBAArE,WAAW;uBAAC,0BAA0B;;;AE7CzC;;;;;;;;;;;;;;AAcG;AAWG,MAAO,oBAAqB,SAAQ,cAAc,CAAA;IACtD,WACqB,CAAA,UAAsB,EACtB,aAA4B,EAAA;AAE/C,QAAA,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC;QAHb,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAa,CAAA,aAAA,GAAb,aAAa;;IAK3B,cAAc,CACnB,sBAA8B,EAC9B,UAAkB,EAAA;AAElB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoB,IAAI,CAAC,SAAS,CAAC,CAAe,YAAA,EAAA,UAAU,CAAM,IAAA,CAAA,CAAC,CAAC;;+GAZrF,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACxBD;;;;;;;;;;;;;;AAcG;MA6BU,iBAAiB,CAAA;AAe5B,IAAA,IAAW,6BAA6B,GAAA;AACtC,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE;;AAGzD,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAGjD,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAChC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,CAC7C;;AAGH,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;;AAGnD,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAChC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,EAC5C,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,WAAW,CAAC,OAAO,CAAC,CACzF;;IAGH,WACoC,CAAA,MAAA,GAA8B,YAAY,EACvB,aAA4B,EAGhE,sBAAiC,EACjC,aAA4B,EAC5B,KAAqB,EACrB,oBAA0C,EAAA;QAPzB,IAAM,CAAA,MAAA,GAAN,MAAM;QACa,IAAa,CAAA,aAAA,GAAb,aAAa;QAGjD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;AAhDtB,QAAA,IAAA,CAAA,wBAAwB,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACpF,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,sBAAsB,CAAC,EAC7C,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAC3D;AACgB,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACxE,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;AACgB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAwB,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAuB,IAAI,CAAC;AAC7D,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAM,CAAC,KAAK,CAAC;AAuC7D,QAAA,IAAI,CAAC,qBAAqB;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,IAAI,IAAI;QACvE,IAAI,CAAC,sCAAsC,EAAE;;IAGxC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,YAAY,CAAC,SAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;IAG3B,4BAA4B,GAAA;AACjC,QAAA,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGxC,2BAA2B,GAAA;AAChC,QAAA,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGxC,IAAA,mBAAmB,CAAC,sBAA8B,EAAA;AACxD,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB;QAExC,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE;AAC/C,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,CAAC,sBAAsB,CAAC;AAE3F,YAAA,eAAe,EAAE,OAAO,CAAC,IAAI,IAAG;gBAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;AACpF,aAAC,CAAC;;AAGJ,QAAA,OAAO,MAAM;;AAGP,IAAA,qBAAqB,CAAC,SAA8B,EAAA;QAC1D,IAAI,CAAC,GAAG,CAAC;QACT,MAAM,MAAM,GAAG;AACb,cAAE,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;AACpF,cAAE,IAAI,CAAC,MAAM;QACf,MAAM,IAAI,GAAmB,EAAE;QAE/B,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,KAAI;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1C,YAAA,CAAC,EAAE;AACL,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI;;IAGL,sCAAsC,GAAA;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACzE,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,KAAI;AACvC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,UAAU,CAAC;;iBAC9C;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC;;SAElD,CACF,CACF;;AAGK,IAAA,kBAAkB,CAAC,sBAA8B,EAAA;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;QACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AACvE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;;IAG9B,UAAU,CAAC,sBAA8B,EAAE,UAAkB,EAAA;QACnE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC;YACrF,IAAI,EAAE,IAAI,IAAG;AACX,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7E,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;aAClD;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACrB;AACF,SAAA,CAAC;;AAGI,IAAA,SAAS,CAAC,GAAe,EAAA;AAC/B,QAAA,QAAQ,GAAG,CAAC,IAAI;YACd,KAAK,UAAU,CAAC,QAAQ;gBACtB,OAAO,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;YACjD,KAAK,UAAU,CAAC,MAAM;AACpB,gBAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC;AACrD,YAAA;AACE,gBAAA,OAAO,IAAI;;;IAIT,MAAM,CAAC,GAAe,EAAE,KAAa,EAAA;AAC3C,QAAA,QAAQ,GAAG,CAAC,IAAI;YACd,KAAK,UAAU,CAAC,QAAQ;AACtB,gBAAA,OAAO,IAAI,OAAO,CAChB,GAAG,CAAC,GAAG,EACP,KAAK,EACL,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EACtC,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,SAAS,CACd;YACH,KAAK,UAAU,CAAC,MAAM;gBACpB,OAAO,IAAI,OAAO,CAChB,GAAG,CAAC,GAAG,EACP,KAAK,EACL,+BAA+B,EAC/B,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,SAAS,CACd;YACH,KAAK,UAAU,CAAC,MAAM;AACpB,gBAAA,OAAO,IAAI,OAAO,CAChB,GAAG,CAAC,GAAG,EACP,KAAK,EACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAClC,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,SAAS,CACd;YACH,KAAK,UAAU,CAAC,OAAO;gBACrB,OAAO,IAAI,OAAO,CAChB,GAAG,CAAC,GAAG,EACP,KAAK,EACL,6BAA6B,EAC7B,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,SAAS,CACd;AACH,YAAA;AACE,gBAAA,OAAO,IAAI;;;AAzLN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EA2ClB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,OAAO,EACK,EAAA,EAAA,KAAA,EAAA,cAAc,6BAE1B,+BAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHA9C9B,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;0BA4CI,MAAM;2BAAC,OAAO;;0BACd;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC;;0BACA,MAAM;2BAAC,+BAA+B;;;ACzF3C;;;;;;;;;;;;;;AAcG;MAUU,wBAAwB,CAAA;AA6BnC,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;;AAG5B,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;;AAGjD,IAAA,IAAW,qBAAqB,GAAA;QAC9B,OAAO,IAAI,CAAC,sBAAsB;;AAGpC,IAAA,WAAA,CACmB,kBAAsC,EACtC,iBAAoC,EACpC,uBAAgD,EAAA;QAFhD,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;AA3CzB,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAuB,EAAE,CAAC;AAEtE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE1D,QAAA,IAAA,CAAA,cAAc,GAC7B,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,CAClD,SAAS,CAAC,sBAAsB,IAC9B,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;YACtE,IAAI,CAAC,uBAAuB,CAAC,kBAAkB;SAChD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACjB,EACD,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,KAClC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAClF,EACD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAI;YAChC,MAAM,gBAAgB,GAAG;AACvB,kBAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9D,kBAAE;oBACE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,0BAA0B,CAAC;oBAC/D,0BAA0B;iBAC3B;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AAC5C,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAC7B,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAC7E;;AAoBI,IAAA,mBAAmB,CAAC,QAA8B,EAAA;AACvD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;;+GAjD1E,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAxB,wBAAwB,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACvBD;;;;;;;;;;;;;;AAcG;MAOU,iBAAiB,CAAA;AAC5B,IAAA,0BAA0B,CAAC,OAAe,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,CAAC;QAEjE,IAAI,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;AACrD,YAAA,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAClC,YAAA,OAAO,IAAI;;QAGb,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI;;QAGb,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACrD,KAAK,IACH,CAAC,KAAK,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC,MAAM;YACjE,CAAC,KAAK,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAClE;AAED,QAAA,OAAO,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;;+GArBjE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACpBD;;;;;;;;;;;;;;AAcG;AAWG,MAAO,wBAAyB,SAAQ,cAAc,CAAA;IAC1D,WACqB,CAAA,UAAsB,EACtB,aAA4B,EAAA;AAE/C,QAAA,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC;QAHb,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAa,CAAA,aAAA,GAAb,aAAa;;IAK3B,yBAAyB,CAAC,UAAkB,EAAE,MAAc,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,eAAe,UAAU,CAAA,YAAA,EAAe,MAAM,CAAE,CAAA,CAAC,CACjE;;AAGI,IAAA,aAAa,CAClB,UAAkB,EAClB,MAAc,EACd,SAAiB,EACjB,WAAoB,EAAA;QAEpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CACZ,CAAC;AACC,cAAE,CAAe,YAAA,EAAA,UAAU,eAAe,MAAM,CAAA,QAAA,EAAW,SAAS,CAAE;cACpE,CAAe,YAAA,EAAA,UAAU,CAAe,YAAA,EAAA,MAAM,CAAW,QAAA,EAAA,SAAS,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA,CACxF,EACD,EAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,EAAC,CACzD;;+GA3BQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;4FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCPY,2BAA2B,CAAA;AAOtC,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;;AAG3D,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC;;AAG3E,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC/B,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC,CAAC,CACpE;;AAGH,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;;AAGxE,IAAA,IAAY,sBAAsB,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;;AAQnF,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,8BAA8B;AACnC,YAAA,IAAI,CAAC,gBAAgB;SACtB,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,CAAC,KACrF,oBAAoB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM;AAC/C,YAAA,uBAAuB,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,CACzE,EACD,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAC3B;;AAGH,IAAA,WAAA,GAAA;AAlDiB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC;AACzE,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC;AAC1E,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACxD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAQ;AAwB1C,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,8BAA8B,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AAElE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAoBlD,IAAI,CAAC,qBAAqB,EAAE;;IAGvB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG1B,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/B,IAAA,UAAU,CAAC,OAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG9B,IAAA,yBAAyB,CAAC,IAAY,EAAA;AAC3C,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,IAAG;AAC/E,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,GAAG,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACzE,SAAC,CAAC;;AAGG,IAAA,8BAA8B,CAAC,IAAY,EAAA;AAChD,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,4BAA4B,IAAG;AACzF,YAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,GAAG,4BAA4B,EAAE,IAAI,CAAC,CAAC;AACnF,SAAC,CAAC;;AAGG,IAAA,iBAAiB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnC,IAAA,uBAAuB,CAAC,IAAY,EAAA;AACzC,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,IAAG;AAChF,YAAA,IAAI,CAAC,CAAC,oBAAoB,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChD,gBAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,IAAI,oBAAoB,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;;AAEpF,SAAC,CAAC;;IAGG,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGxB,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC;AACpD,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAI;YACrB,KAAK,CAAC,YAAY,EAAE;YACpB,KAAK,CAAC,MAAM,EAAE;SACf,CAAC,CACL;;+GAhHQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADf,MAAM,EAAA,CAAA,CAAA;;4FAClB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;MCDnB,0BAA0B,CAAA;AAYrC,IAAA,IAAW,yBAAyB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;;AAGzF,IAAA,IAAW,gCAAgC,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,YAAY,EAAE;;AAG9D,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAG9C,IAAA,WAAA,CAA6B,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAvB7B,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACrE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACrD,QAAA,IAAA,CAAA,iCAAiC,GAChD,IAAI,eAAe,CAA6B,IAAI,CAAC;AACtC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CACtD,mCAAmC,CACpC;AACgB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CACtD,mCAAmC,CACpC;QAgBe,IAAoB,CAAA,oBAAA,GAA0C,aAAa,CAAC;AAC1F,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,iCAAiC;AACtC,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,iBAAiB;AACvB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CACC,wBAAwB,EACxB,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,eAAe,EAChB,KAAI;YACH,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;;YAGhC,IAAI,CAAC,+BAA+B,EAAE;AACpC,gBAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;;AAGjC,YAAA,IAAI,+BAA+B,IAAI,eAAe,KAAK,OAAO,EAAE;gBAClE,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,eAAe,CAAC;;AAGvE,YAAA,OAAO,EAAyB;AAClC,SAAC,CACF,EACD,SAAS,CAAC,EAAE,CAAC,CACd;;AAEM,IAAA,2BAA2B,CAAC,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGtC,IAAA,kCAAkC,CAAC,KAAiC,EAAA;AACzE,QAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG7C,IAAA,kBAAkB,CAAC,IAAqB,EAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5B,IAAA,kBAAkB,CAAC,IAAc,EAAA;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,gBAAgB,GAAA;QACtB,OAAO;AACL,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,cAAc,EAAE,GAAG;SACpB;;IAGK,iBAAiB,GAAA;QACvB,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,kBAAkB,EAAE,8BAA8B;AAClD,YAAA,kBAAkB,EAAE,8BAA8B;AAClD,YAAA,eAAe,EAAE,8BAA8B;AAC/C,YAAA,cAAc,EAAE,GAAG;SACpB;;IAGK,cAAc,CACpB,wBAAgC,EAChC,eAAyB,EAAA;AAEzB,QAAA,MAAM,kBAAkB,GACtB,wBAAwB,GAAG,0BAA0B,GAAG,mCAAmC;AAC7F,QAAA,MAAM,kBAAkB,GAAG,qCAAqC,CAAC,eAAe,CAAC;AACjF,QAAA,MAAM,uBAAuB,GAC3B,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB;QAEnF,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,kBAAkB,EAAE,uBAAuB;AAC3C,YAAA,eAAe,EAAE,uBAAuB;YACxC,kBAAkB;AAClB,YAAA,cAAc,EAAE,GAAG;SACpB;;+GAlHQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA1B,0BAA0B,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACdD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAqBU,+BAA+B,CAAA;IAG1C,IAAoB,WAAW,CAAC,KAAe,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB;;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC;;IAoBlD,WACU,CAAA,iBAA2C,EAC3C,EAAe,EAAA;QADf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAE,CAAA,EAAA,GAAF,EAAE;QA5BiB,IAAU,CAAA,UAAA,GAAG,mCAAmC;QAQpE,IAAI,CAAA,IAAA,GAAG,KAAK;AAEX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;QAEjD,IAAe,CAAA,eAAA,GAA2B,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,cAA+B,KAClC,cAAc,CAAC,GAAG,CAAC,CAAC,aAA4B,MAAM;YACpD,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,OAAO,EAAE,GAAG,aAAa,CAAC,SAAS,CAAI,CAAA,EAAA,aAAa,CAAC,QAAQ,CAAE,CAAA;AAC/D,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,aAAa,CAAC,EAAE;SACzE,CAAC,CAAC,CACJ,CACF;AAEM,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvF,SAAA,CAAC;;AAOK,IAAA,UAAU,CAAC,OAAiB,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,IAAI;QAC/E,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;;AAGF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;AAGjB,IAAA,YAAY,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK;;+GA5CH,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,4NCnC5C,0vDA2CA,EAAA,MAAA,EAAA,CAAA,82BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDRa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BACE,mCAAmC,EAAA,eAAA,EAG5B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0vDAAA,EAAA,MAAA,EAAA,CAAA,82BAAA,CAAA,EAAA;sHAGlB,UAAU,EAAA,CAAA;sBAAtC,WAAW;uBAAC,OAAO;gBAEA,WAAW,EAAA,CAAA;sBAA9B;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,UAAU,EAAA,CAAA;sBAAnB;;;AE9CH;;;;;;;;;;;;;;AAcG;AAkCH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACpD,MAAM,CAAC,aAAa,GAAG,mBAAmB;MAoB7B,8BAA8B,CAAA;IAGzC,IAAoB,6BAA6B,CAAC,KAA0B,EAAA;AAC1E,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,KAAK,CAAC;;AAiEvE,IAAA,WAAA,CACmB,eAAgC,EAChC,cAA8B,EAC9B,KAAqB,EACrB,iBAAoC,EACpC,mBAAwC,EACxC,0BAAsD,EACtD,kBAAsC,EAAA;QANtC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;QAC1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;AArEX,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAuB;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;AAE9C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAEjD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAE3C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACpD,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,UAAU,CAAC,EACjC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CACnC;QAEe,IAAqB,CAAA,qBAAA,GAGhC,IAAI,CAAC,SAAS,CAAC,IAAI,CACtB,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAClC,SAAS,CAAC,UAAU,IAClB,IAAI,CAAC;aACF,4BAA4B,CAAC,UAAU;aACvC,IAAI,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CACzC,EACD,SAAS,CAAC,wBAAwB,IAChC,aAAa,CAAC;YACZ,GAAG,wBAAwB,CAAC,GAAG,CAAC,uBAAuB,IACrD,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAC9C,uBAAuB,CAAC,EAAE,CAAC,iBAAiB,CAC7C,CACF;AACF,SAAA,CAAC,CACH,EACD,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAC5D,SAAS,CAAC,qBAAqB,IAC7B,aAAa,CAAC;YACZ,EAAE,CAAC,qBAAqB,CAAC;AACzB,YAAA,GAAG,CAAC,qBAAqB,IAAI,EAAE,EAAE,GAAG,CAAC,mBAAmB,IACtD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,EAAE;gBACjE,QAAQ,EAAE,+BAA+B,CAAC,IAAI;AAC9C,gBAAA,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACxC,aAAA,CAAC,CACH;AACF,SAAA,CAAC,CACH,EACD,GAAG,CAAC,GAAG,IAAG;YACR,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1C,YAAA,MAAM,WAAW,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAc;YACvE,MAAM,2BAA2B,GAAG,IAAI,CAAC,wBAAwB,CAC/D,qBAAqB,EACrB,WAAW,CACZ;YACD,MAAM,2BAA2B,GAAG,IAAI,CAAC,8BAA8B,CACrE,2BAA2B,CAC5B;AAED,YAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,2BAA2B,CAAC;AACzE,SAAC,CAAC,EACF,GAAG,CAAC,qBAAqB,IAAI,IAAI,CAAC,qCAAqC,CAAC,qBAAqB,CAAC,CAAC,EAC/F,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB;;AAYrE,IAAA,YAAY,CAAC,mBAAwC,EAAA;AAC1D,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;;IAGxC,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAC3B,IAAI,CAAC,OAAO,EAAE;;IAGT,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnB,wBAAwB,CAC9B,qBAA4C,EAC5C,WAAsB,EAAA;QAEtB,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,KAAK,MAAM;AAChE,YAAA,GAAG,mBAAmB;AACtB,YAAA,IAAI,EAAE;gBACJ,GAAG,mBAAmB,CAAC,IAAI;gBAC3B,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;AAC5D,gBAAA,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC7E,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,EAAC,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAC,CAAC;AAC3F,gBAAA,QAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AAC9B,aAAA;AACF,SAAA,CAAC,CAAC;;AAGG,IAAA,8BAA8B,CACpC,qBAA4C,EAAA;QAE5C,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAClF,gBAAA,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC;;AAEvB,YAAA,OAAO,GAAG;SACX,EAAE,EAA2B,CAAC;;AAGzB,IAAA,8BAA8B,CACpC,qBAA4C,EAAA;QAE5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;;AAE3C,YAAA,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACzC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ;;;YAI5C,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS;YACjD,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS;AACjD,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,OAAO,IAAI,GAAG,IAAI;;;AAIpB,YAAA,MAAM,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI;AAC9E,YAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,cAAc;;;AAIvB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,SAAC,CAAC;;AAGI,IAAA,qCAAqC,CAAC,qBAA4C,EAAA;AAIxF,QAAA,OAAO,qBAAqB,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,IAAI,KACR,CAAC,IAAI,CAAC,IAAI,CAAC;AACT,cAAE,EAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;cACxC,EAAC,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,EAAC,EACrD,EAAC,OAAO,EAAE,EAA2B,EAAE,UAAU,EAAE,EAA2B,EAAC,CAChF;;+GA9JQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrE3C,++HAgHA,EDvDI,MAAA,EAAA,CAAA,8vDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oWACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,UAAU,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,mOACX,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,SAAS,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAlB1C,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAGhC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb,UAAU;wBACV,WAAW;wBACX,WAAW;wBACX,SAAS;wBACT,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,++HAAA,EAAA,MAAA,EAAA,CAAA,8vDAAA,CAAA,EAAA;mSAGyC,gBAAgB,EAAA,CAAA;sBAAzD,SAAS;uBAAC,YAAY;gBAEH,6BAA6B,EAAA,CAAA;sBAAhD;gBAIyB,cAAc,EAAA,CAAA;sBAAvC;gBACyB,eAAe,EAAA,CAAA;sBAAxC;;;AE7EH;;;;;;;;;;;;;;AAcG;MA4CU,iCAAiC,CAAA;IAC5C,IAAoB,kBAAkB,CAAC,KAAiC,EAAA;AACtE,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,YAAA,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI;AACvB,YAAA,QAAQ,EAAE,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,OAAO,CAAE,CAAA;AAC/F,SAAA,CAAC;;AA2BJ,IAAA,WAAA,CACmB,aAA4B,EAC5B,iBAAoC,EACpC,iBAAoC,EACpC,gBAAkC,EAAA;QAHlC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AA7BT,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAC/B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAE;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAEzC,QAAA,IAAA,CAAA,YAAY,GAAwB,IAAI,CAAC,iBAAiB,CAAC,YAAY;AACvE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAA6B,IAAI,CAAC;AAC3E,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACnD,GAAG,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,IAAI,CAAC,CACnD;QACe,IAAoB,CAAA,oBAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CACzE,SAAS,CAAC,CAAC,IAAgC,KACzC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,EAAE;YACnE,QAAQ,EAAE,+BAA+B,CAAC,IAAI;AAC9C,YAAA,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;SAC3B,CAAC,CACH,CACF;AACe,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAgC,IAAI,CAAC;QACjF,IAAS,CAAA,SAAA,GAAG,MAAM,CAAoC;AACpE,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;QACK,IAAsB,CAAA,sBAAA,GAAG,KAAK;AAQnC,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,sBAAsB;;IAGpF,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;IAGjB,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;;AAG1B,IAAA,8BAA8B,CAAC,KAAoC,EAAA;AACxE,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;;AAG1B,IAAA,mBAAmB,CAAC,YAAqB,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;;IAG/B,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;+GA/Db,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA3C,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EC1D9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,20FA8EA,ED7BI,MAAA,EAAA,CAAA,oxCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2LACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,0BAA0B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,mCAAmC,EACnC,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,6NACV,yBAAyB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGhB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAhB7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,cAGlC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,0BAA0B;wBAC1B,mCAAmC;wBACnC,YAAY;wBACZ,UAAU;wBACV,yBAAyB;AAC1B,qBAAA,EAAA,QAAA,EAAA,20FAAA,EAAA,MAAA,EAAA,CAAA,oxCAAA,CAAA,EAAA;qLAGmB,kBAAkB,EAAA,CAAA;sBAArC;gBASyB,UAAU,EAAA,CAAA;sBAAnC;gBACyB,uBAAuB,EAAA,CAAA;sBAAhD;gBACyB,YAAY,EAAA,CAAA;sBAArC;gBACyB,UAAU,EAAA,CAAA;sBAAnC;;;AEvEH;;;;;;;;;;;;;;AAcG;MAyCU,2CAA2C,CAAA;IA6BtD,WACmB,CAAA,MAAc,EACd,cAA8B,EAC9B,kBAAsC,EACK,aAA4B,EAGvE,yBAAoD,EAAA;QANpD,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QACyB,IAAa,CAAA,aAAA,GAAb,aAAa;QAGxD,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;AA3BlC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;QAE/B,IAAe,CAAA,eAAA,GAAG,KAAK;QAC1B,IAAa,CAAA,aAAA,GAAG,KAAK;AAEZ,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAa,SAAS,CAAC;AAC5D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAmB,SAAS,CAAC;AACpE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAuB,SAAS,CAAC;AAC/D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC;AACpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC;AAC7D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC;AACnD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAEhE,EAAE,CAAC;AAWH,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,yBAAyB,CAAC;;IAG1D,eAAe,GAAA;QACrB,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC;AACxD,aAAA,IAAI,CACHO,MAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,KAC1C,IAAI,CAAC,cAAc,CAAC,oCAAoC,CACtD,mBAAmB,EACnB,UAAU,EACV,IAAI,CACL,CACF;aAEF,SAAS,CAAC,kBAAkB,IAAG;YAC9B,IAAI,kBAAkB,EAAE;AACtB,gBAAA,QAAQ,kBAAkB,CAAC,IAAI;AAC7B,oBAAA,KAAK,MAAM;wBACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC;wBACtE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;wBAC1D;AACF,oBAAA,KAAK,WAAW;wBACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,kBAAkB,CAAC;wBAC/E;AACF,oBAAA,KAAK,iBAAiB;wBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC;wBACvE,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC;AACtE,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;AACF,oBAAA,KAAK,cAAc;wBACjB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC;AACvE,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;;AAEJ,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAErB,SAAC,CAAC;;IAGC,SAAS,CAAC,yBAAoD,EAAE,UAAkB,EAAA;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACzF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC;QAClF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;AAE7D,QAAA,MAAM,kBAAkB,GAAuB,UAAU,UAAU,EAAE,QAAQ,EAAA;AAC3E,YAAA,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5B,SAAC;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE;AACvC,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI;AAC5B,QAAA,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAEpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAE3B,IAAI,CAAC,eAAe,EAAE;;AAGjB,IAAA,QAAQ,CAAC,UAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;YAClC,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;AAClD,iBAAA,IAAI,CACHA,MAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,KACpC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAC/E;AAEF,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,oBAA0C,KAAI;oBACnD,IAAI,CAAC,aAAa,EAAE;iBACrB;gBACD,KAAK,EAAE,MAAM,IAAG;AACd,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;iBAC7B;AACF,aAAA,CAAC;;;IAID,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1B,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE;YACtC,WAAW,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,EAAC;AAC9D,SAAA,CAAC;;AAGI,IAAA,yBAAyB,CAAC,QAAgB,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;YAAE;AACnC,QAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE;AAC1C,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAC/E,IAAI,CAAC,aAAa,CAAC,SAAS,CAC7B;AAED,QAAA,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,qBAAqB;AAC1B,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,WAAW;SACjB;AACE,aAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,CAAC,KAAI;AACvF,YAAA,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ;AACnD,YAAA,sBAAsB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;AAC3C,YAAA,sBAAsB,CAAC,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB;AAC3E,YAAA,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,GAAG,sBAAsB;AAC/E,YAAA,sBAAsB,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO;AACjD,YAAA,sBAAsB,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAClD,YAAA,sBAAsB,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU;AACzD,SAAC,CAAC;AAEJ,QAAA,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACtE,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;AAGrB,IAAA,sBAAsB,CAAC,sBAA8B,EAAA;AAC3D,QAAA,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE;QAChD,IAAI,CAAC,IAAI,CAAC,yBAAyB;YAAE;AACrC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,IAAG;AACnF,YAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,sBAAsB,CAAC;YACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAChF,eAAe,CACqB;YAEtC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,CAAC;AACrE,iBAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;iBACZ,SAAS,CAAC,CAAC,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,KAAI;AAC5D,gBAAA,iBAAiB,CAAC,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB;AACtE,gBAAA,iBAAiB,CAAC,QAAQ,CAAC,sBAAsB,GAAG,sBAAsB;AAC5E,aAAC,CAAC;YAEJ,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;gBACvD,IAAI,CAAC,aAAa,EAAE;AACtB,aAAC,CAAC;AACJ,SAAC,CAAC;;+GAzLO,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjB,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAiChC,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAEjC,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnC1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,EAGI,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EAElB,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,6BC5D1E,++EA0EA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDnBa,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBANvD,SAAS;+BACE,gDAAgD,EAAA,aAAA,EAG3C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,++EAAA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA;;0BAmClC;;0BAAY,MAAM;2BAAC,qBAAqB;;0BACxC;;0BACA,MAAM;2BAAC,2BAA2B;yCAlCD,IAAI,EAAA,CAAA;sBAAvC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;gBACyB,KAAK,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;gBAElD,6BAA6B,EAAA,CAAA;sBADnC,SAAS;uBAAC,wBAAwB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAC;gBAGpE,mCAAmC,EAAA,CAAA;sBADzC,SAAS;uBAAC,qBAAqB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAC;gBAGhE,OAAO,EAAA,CAAA;sBAAf;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AEhEH;;;;;;;;;;;;;;AAcG;MAaU,0BAA0B,CAAA;IACrC,IAAa,UAAU,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;IAE9B,IAAa,UAAU,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;IAE9B,IAAa,gBAAgB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAkBpC,IAAA,WAAA,CAA6B,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;QAhBnC,IAAa,CAAA,aAAA,GAAG,IAAI;AACnB,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAE;AAE1C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,WAAW,CAAC,IAAI,CACjF,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAClC,SAAS,CAAC,UAAU,IAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CACjF,EACD,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,EAC/DgB,KAAG,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CACzB;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;;AAI5D,IAAA,cAAc,CAAC,MAAc,EAAA;QAClC,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;aAE1F,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,CAAC;;IAGC,gBAAgB,GAAA;QACrB,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;aAC1F,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,CAAC;;AAGE,IAAA,mBAAmB,CAAC,KAAkB,EAAA;AAC5C,QAAA,OAAO;AACJ,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACb,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE;gBAC5B,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;;AAG7C,YAAA,OAAO,CAAC;AACV,SAAC;aACA,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC;;IAG3C,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE;;IAGjC,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGpB,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAzEhB,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnB,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,kRC3BvC,ssGAwFA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD7Da,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,ssGAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA;sFAK1B,UAAU,EAAA,CAAA;sBAAtB;gBAGY,UAAU,EAAA,CAAA;sBAAtB;gBAGY,gBAAgB,EAAA,CAAA;sBAA5B;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBACS,2BAA2B,EAAA,CAAA;sBAApC;;;AEtCH;;;;;;;;;;;;;;AAcG;MAUU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAE7C,IAAA,SAAS,CAAC,GAAY,EAAA;AACpB,QAAA,MAAM,aAAa,GAAG,eAAe,GAAG,GAAG,CAAC,IAAI;QAEhD,OAAO,GAAG,CAAC;AACT,cAAE,EAAE,CAAC,GAAG,CAAC,KAAK;cACZ,IAAI,CAAC;iBACF,MAAM,CAAC,aAAa;iBACpB,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,aAAa,KAAK,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;+GAVhF,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACrB,iBAAA;;;ACvBD;;;;;;;;;;;;;;AAcG;AAgFG,MAAO,sBACX,SAAQ,uBAAuB,CAAA;AAgL/B,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,KAC5B,CAAC,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,aAAa,CAC/D,CACF;;IAsBH,WACmB,CAAA,iBAAoC,EACpC,iBAAoC,EACpC,eAAgC,EAChC,wBAAkD,EAClD,aAA4B,EAC5B,eAAgC,EAChC,0BAAsD,EACtD,cAA8B,EAC9B,iBAAoC,EACpC,WAAwB,EACxB,eAAgC,EAChC,MAAiB,EACjB,mBAAwC,EACxC,iBAAoC,EACpC,gBAAkC,EAClC,iBAAoC,EACpC,gBAAkC,EAClC,QAAmB,EACnB,KAAqB,EACrB,MAAc,EACd,cAA8B,EAC9B,mBAAwC,EACtB,YAAsB,EAAA;AAEzD,QAAA,KAAK,EAAE;QAxBU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACD,IAAY,CAAA,YAAA,GAAZ,YAAY;QAtN1C,IAAwB,CAAA,wBAAA,GAAe,EAAE;QACzC,IAAQ,CAAA,QAAA,GAA2B,IAAI;QAIvC,IAA2B,CAAA,2BAAA,GAAe,EAAE;QAC5C,IAA0B,CAAA,0BAAA,GAA2D,EAAE;QACvF,IAAS,CAAA,SAAA,GAAyB,IAAI;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAC5D,IAAI,CACL;QACe,IAAQ,CAAA,QAAA,GAAwB,IAAI,CAAC;AAClD,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,gCAAgC,GAC9C,IAAI,CAAC,0BAA0B,CAAC,gCAAgC;AAEjD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAkC,IAAI,CAAC;QAC5E,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,eAAe;QAEtE,IAAc,CAAA,cAAA,GAAG,IAAI,eAAe,CAClD,2CAA2C,CAAC,KAAK,CAClD;AACe,QAAA,IAAA,CAAA,cAAc,GAAyC,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9F,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CACrB;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC;QAEvE,IAAQ,CAAA,QAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACtE,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,EAAE;YACjE,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;SAC3C,CAAC,CACH,CACF;QAEe,IAAS,CAAA,SAAA,GAAuC,aAAa,CAAC;YAC5E,IAAI,CAAC,cAAc,CAAC,gBAAgB;AACpC,YAAA,IAAI,CAAC,QAAQ;AACd,SAAA,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,EACjC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAClC,GAAG,CAAC,CAAC,MAAc,KAAK,MAAM,EAAE,UAAU,CAAC,EAC3C,SAAS,CAAC,CAAC,UAAkB,KAC3B,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAC1E,EACD,GAAG,CAAC,CAAC,QAAgC,KAAI;YACvC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC1C,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,eAAe,CAAC;AAEtE,gBAAA,IACE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAC3D,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAC1C;AACD,oBAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAC1C;AACA,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAC3C,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAC1C,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;;;SAG9D,CAAC,CACH;QAEe,IAAuB,CAAA,uBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAClF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC,CACnD;QAEe,IAAW,CAAA,WAAA,GACzB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC/B,MAAM,CAAC,sBAAsB,IAAI,CAAC,CAAC,sBAAsB,CAAC,EAC1D,SAAS,CAAC,sBAAsB,IAC9B,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;AACtE,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CACH,EACD,GAAG,CACD,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,eAAe,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAC7F,EACD,GAAG,CACD,MAAM,IACJ,MAAM,IAAI;AACR,YAAA,GAAG,MAAM;YACT,OAAO,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC;AACrF,SAAA,CACJ,CACF;AAEa,QAAA,IAAA,CAAA,OAAO,GAAmC,EAAE,CAC1D,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAClC,CAAC,IAAI,CACJ,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,EACvD,GAAG,CAAC,OAAO,IAAI,OAAO,EAAE,EAAE,CAAC,CAC5B;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAClD,IAAwB,CAAA,wBAAA,GAAwB,aAAa,CAAC;AAC5E,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,OAAO;AACb,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC,EAChF,SAAS,CAAC,IAAI,CAAC,CAChB;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACvF,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAC7D,EACD,GAAG,CAAC,YAAY,IAAI,YAAY,EAAE,eAAe,CAAC,CACnD;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QACtD,IAAU,CAAA,UAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACxE,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,EAAE;YACnE,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;AAC3C,SAAA,CAAC,CACH,EACD,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC,CACH;QAEe,IAAS,CAAA,SAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACvE,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,yBAAyB,EAAE;YAClE,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;SAC3C,CAAC,CACH,CACF;AAEe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QACjD,IAAU,CAAA,UAAA,GAAwB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACxE,SAAS,CAAC,CAAC,MAAgB,KACzB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,EAAE;YACnE,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;SAC3C,CAAC,CACH,CACF;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAGnD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAElD,QAAA,IAAA,CAAA,6BAA6B,GAC3C,IAAI,CAAC,iBAAiB,CAAC,6BAA6B;AAEtC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AAEnD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;QAS3D,IAA0B,CAAA,0BAAA,GAAG,0BAA0B;AAEvD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,CAAC,oBAAoB;AAE3E,QAAA,IAAA,CAAA,8BAA8B,GAAG,IAAI,OAAO,EAAuB;QAEnE,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CACnE,GAAG,CAAC,YAAY,IAAI,YAAY,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAC7D;QAIO,IAAa,CAAA,aAAA,GAAG,KAAK;QAIrB,IAAS,CAAA,SAAA,GAAG,KAAK;AACR,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QA4BlD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;AAChF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;;IAGnD,eAAe,GAAA;QACpB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;QACpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,2BAA2B,EAAE;QAClC,IAAI,CAAC,6BAA6B,EAAE;;IAG/B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACnC,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG5B,kCAAkC,GAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,aAAa,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,yCAAyC,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9E,gBAAA,eAAe,EAAE,IAAI;aACtB,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,KAAI;YAC5C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,6BAA6B,CAClE,0BAA0B,CAC3B;YACD,IAAI,CAAC,uBAAuB,EAAE;YAE9B,IAAI,CAAC,2BAA2B,GAAG;AACjC,gBAAA;AACE,oBAAA,GAAG,EAAE,aAAa;AAClB,oBAAA,KAAK,EAAE,QAAQ;AAChB,iBAAA;aACF;SACF,CAAC,CACH;;AAGI,IAAA,YAAY,CAAC,yBAAoD,EAAA;QACtE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC;;IAG5E,6BAA6B,GAAA;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;AACxD,aAAA,SAAS,CAAC,CAAC,0BAAuD,KAAI;YACrE,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;SACjD,CAAC,CACL;;IAGI,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5B,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,MAA0B,KACnC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,CAC5E;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;aAC9B;YACD,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC;aACvE;AACF,SAAA,CAAC;;IAGC,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAE5B,QAAA,IAAI,CAAC;aACF,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,MAA0B,KACnC,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAClE;AAEF,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;aAC9B;YACD,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC;aAC3E;AACF,SAAA,CAAC;;IAGC,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,EAAE,MAAW;AACf,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,sBAAsB,CAAE,CAAA,CAAC,CAAC;aACnE;YACD,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC;aAClE;AACF,SAAA,CAAC;;AAGG,IAAA,gBAAgB,CAAC,qBAA0C,EAAA;AAChE,QAAA,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,EAAE;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AAC9C,gBAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACvC,aAAC,CAAC;YACF;;QAGF,MAAM,WAAW,GACf,qBAAqB,CAAC,yBAAyB,CAAC,UAAU,CAAC,eAAe;AAC1E,YAAA,mCAAmC;QACrC,MAAM,IAAI,GACR,qBAAqB,CAAC,yBAAyB,CAAC,UAAU,CAAC,QAAQ;AACnE,YAAA,mCAAmC;AAErC,QAAA,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACxD,QAAA,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,WAAW,CAAC;QAE/D,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACtD,YAAA,IAAI,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,qBAAqB,CAAC;;aACpF;YACL,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAC,GAAG,qBAAqB,EAAC,CAAC;;;IAIjE,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,IAAI,CAAC;;AAGnE,IAAA,mBAAmB,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;IAGrB,aAAa,CAAC,GAAY,EAAE,SAAkB,EAAA;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB;;AAGF,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;QACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc;AACjB,YAAA,GAAG,CAAC,UAAU,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa;AAE7E,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC;YACnC;;QAGF,IAAI,CAAC,GAAG,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE;;IAGlB,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,IAAI,CAAC;QAExE,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;IAGpB,iBAAiB,GAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,IAAI,CAAC;;IAGhE,gBAAgB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;IAGrC,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;AACF,aAAA,qBAAqB,CAAC,IAAI,CAAC,sBAAsB;aACjD,SAAS,CAAC,UAAU,IAAG;YACtB,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK;YAC1D,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;;IAGE,aAAa,GAAA;AACnB,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAI;YAC7B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;oBACtD,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAChC,IAAI,EACJ,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CACX;oBACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;oBAC5C,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACnD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU;;qBACtC;AACL,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;gBAG/B,IAAI,CAAC,kCAAkC,EAAE;;iBACpC;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEjC,SAAC,CAAC;;IAGC,2BAA2B,GAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;;AAGvB,IAAA,0BAA0B,CAAC,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;AACjC,YAAA,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnC,YAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI;AAClC,YAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACtC,YAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAChC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,MAAM,CAClC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,EACjE,EAAE,CACH;AACF,SAAA,CAAC;;IAGI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;QACjE,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;AAC3F,QAAA,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AAC/E,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/C,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;;gBAEzC;;YAEF,SAAS;AACP,gBAAA,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;;;;QAIlD,OAAO,MAAM,GAAG,MAAM;;AAGhB,IAAA,iBAAiB,CAAC,GAAQ,EAAE,IAAY,EAAE,YAAiB,EAAA;AACjE,QAAA,QACE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,GAAG,KAAK,aAAa,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,YAAY;;IAIrF,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;AACzC,YAAA,KAAK,EAAE,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,2BAA2B;AACzC,YAAA,IAAI,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,sBAAsB,CAAE,CAAA;AACjD,SAAA,CAAC;;IAGI,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa;YAAE;QAE9C,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,KAAK,IAAG;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;;AAGzD,IAAA,gBAAgB,CAAC,KAAiC,EAAA;AACxD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU;QAE3D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,CAAC,EAAE;AAC1D,YAAA,IAAI,CAAC,0BAA0B,CAAC,2BAA2B,CAAC,YAAY,CAAC;;;IAIrE,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;;IAGlF,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;;IAGrF,2BAA2B,GAAA;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CACJ,KAAK,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,iBAAiB,KAAK,UAAU,CACpF;aAEF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;SACpC,CAAC,CACL;;AAGK,IAAA,uBAAuB,CAAC,OAAgB,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACtC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qCAAqC,CAAC;YAC3E,IAAI,OAAO,IAAI;AACb,gBAAA,OAAO,EAAE;AACP,oBAAA;wBACE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACxD,wBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACtD,qBAAA;AACF,iBAAA;aACF,CAAC;YACF,QAAQ,EAAE,gBAAgB,CAAC,oBAAoB;AAChD,SAAA,CAAC;;AAGI,IAAA,6BAA6B,CACnC,0BAAuD,EAAA;QAEvD,OAAO,0BAA0B,CAAC,GAAG,CACnC,CAAC,0BAAqD,MAAM;AAC1D,YAAA,GAAG,0BAA0B;AAC7B,YAAA,WAAW,EACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,EAAE,oBAAoB,CAAC;gBACnF,0BAA0B,EAAE,EAAE,EAAE;AAC9B,kBAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC,oBAAoB;kBAChF,0BAA0B,CAAC,WAAW;AAC7C,SAAA,CAAC,CACH;;IAGK,uBAAuB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CACxD,CAAC,GAAG,EAAE,IAAI,KACR,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EACrF,CAAC,CACF;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,WAAW,GAAG;cACV,2CAA2C,CAAC;cAC5C,WAAW,GAAG;kBACZ,2CAA2C,CAAC;AAC9C,kBAAE,2CAA2C,CAAC,KAAK,CACxD;;AA9lBQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,ktBAmOvB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAnOP,sBAAsB,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAFtB,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAS7C,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrGpD,8nXAmUA,EAAA,MAAA,EAAA,CAAA,26LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3C,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4C,8BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,KAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2CAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA4B,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,aAGvB,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,8nXAAA,EAAA,MAAA,EAAA,CAAA,26LAAA,CAAA,EAAA;;0BAqO5E,MAAM;2BAAC,QAAQ;yCA9NlB,sBAAsB,EAAA,CAAA;sBADrB,SAAS;uBAAC,6BAA6B;gBAIxC,gBAAgB,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC;gBAIlC,oBAAoB,EAAA,CAAA;sBADpC,SAAS;uBAAC,qBAAqB;;;AExGlC;;;;;;;;;;;;;;AAcG;MAoDU,iCAAiC,CAAA;IA8B5C,WACU,CAAA,KAAqB,EACrB,MAAc,EACd,cAA8B,EAC9B,eAAgC,EAChC,kBAAsC,EACtC,eAAgC,EAChC,mBAAwC,EACxC,iBAAoC,EACpC,WAA+B,EAC/B,iBAAoC,EACpC,aAA4B,EACwB,aAA4B,EAGvE,yBAAoD,EAC7D,kBAAsC,EAAA;QAftC,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa;QACuC,IAAa,CAAA,aAAA,GAAb,aAAa;QAGxD,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QAClC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAhCrB,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAa,CAAA,aAAA,GAAG,KAAK;AAOlB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;AAEtC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;AAC1B,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAEhE,EAAE,CAAC;AAoBH,QAAA,IAAI,CAAC,kCAAkC;YACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC;AAE7E,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,yBAAyB,CAAC;;IAGlE,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;;IAGpB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAG3B,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,IAAI,CAAC,kCAAkC,EAAE;AAC3C,YAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACvF,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5F,aAAC,CAAC;;AAEJ,QAAA,IAAI,CAAC;aACF,oCAAoC,CACnC,IAAI,CAAC,mBAAmB,EACxB,IAAI,EACJ,IAAI,CAAC,sBAAsB;AAE5B,aAAA,IAAI,CAAC/B,MAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,kBAAkB,IAAG;YAC9B,IAAI,kBAAkB,EAAE;AACtB,gBAAA,QAAQ,kBAAkB,CAAC,IAAI;AAC7B,oBAAA,KAAK,MAAM;wBACT,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,aAAa;AACjE,wBAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAa;AACrD,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;AACF,oBAAA,KAAK,WAAW;wBACd,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,UAAU,CAAC,kBAAkB;AAC1E,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;AACF,oBAAA,KAAK,iBAAiB;wBACpB,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,cAAc;wBAClE,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,QAAQ;AACtD,wBAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAa;AACrD,wBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;wBAC3B,IAAI,CAAC,yBAAyB,EAAE;AAChC,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;AACF,oBAAA,KAAK,KAAK;AACR,wBAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAa;AACrD,wBAAA,IAAI,CAAC;AACF,6BAAA,YAAY;AACZ,6BAAA,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;6BACZ,SAAS,CAAC,SAAS,IAAG;AACrB,4BAAA,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CACnD,kBAAkB,CAAC,UAAU,CAAC,GAAG,EACjC,SAAS,CAAC,SAAS,CACpB;4BACD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE;AAClC,4BAAA,IAAI,CAAC;AACF,iCAAA,oBAAoB,CAAC,IAAI,CAAC,aAAa;iCACvC,SAAS,CAAC,MAAM,IAAG;AAClB,gCAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9B,6BAAC,CAAC;AACN,yBAAC,CAAC;wBACJ;AACF,oBAAA,KAAK,cAAc;wBACjB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC;AACvE,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACjB;;;iBAEC;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;AAE/B,SAAC,CAAC;;IAGC,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,EAAC,WAAW,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAC,EAAC,CAAC;;AAG9F,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,WAAW,EAAE;QACnD,OAAO,IAAI,CAAC;AACV,cAAE,IAAI,CAAC,eAAe,IAAI;cACxB,aAAa;;AAGnB,IAAA,SAAS,CAAC,yBAAoD,EAAA;QAC5D,IAAI,CAAC,oBAAoB,GAAG,yBAAyB,CAAC,EAAE,CAAC,oBAAoB;AAC7E,QAAA,IAAI,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,eAAe;QACpE,IAAI,CAAC,sBAAsB,GAAG,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI;AACpF,QAAA,IAAI,CAAC,WAAW,GAAG,yBAAyB,CAAC,WAAW;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI;AACjC,QAAA,MAAM,kBAAkB,GAAuB,UAAU,UAAU,EAAE,QAAQ,EAAA;AAC3E,YAAA,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5B,SAAC;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACzC,IAAI,CAAC,eAAe,EAAE;;AAGjB,IAAA,QAAQ,CAAC,UAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAElC,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAChF,YAAA,IAAI,EAAE,CAAC,oBAA0C,KAAI;AACnD,gBAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;aAC3C;YACD,KAAK,EAAE,MAAM,IAAG;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;aAC7B;AACF,SAAA,CAAC;;IAGG,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGZ,WAAW,GAAA;QAChB,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,SAAS,CACjD,YAAY,IAAG;YACb,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;SACzD,EACD,KAAK,IAAG;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,SAAC,CACF;;AAGK,IAAA,eAAe,CAAC,oBAA0C,EAAA;AAChE,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC;aACF,iBAAiB,CAAC,wBAAwB,EAAE;YAC3C,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;YAC/D,UAAU,EAAE,oBAAoB,CAAC,UAAU;SAC5C;aACA,SAAS,CAAC,WAAW,IAAG;YACvB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACnB,UAAU;AACV,oBAAA,IAAI,CAAC,sBAAsB;oBAC3B,UAAU;AACV,oBAAA,oBAAoB,CAAC,UAAU;AAChC,iBAAA,CAAC;;iBACG;AACL,gBAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAEnC,SAAC,CAAC;;IAGE,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;YAAE;AACnC,QAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE;AAC1C,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAC/E,IAAI,CAAC,aAAa,CAAC,SAAS,CAC7B;QACD,sBAAsB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc;QAC1D,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACxD,QAAA,sBAAsB,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;QAClD,sBAAsB,CAAC,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;QAChF,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;AACpF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;SAClB,CAAC,CACH;;AAGK,IAAA,sBAAsB,CAAC,sBAA8B,EAAA;AAC3D,QAAA,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE;QAChD,IAAI,CAAC,IAAI,CAAC,yBAAyB;YAAE;AACrC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,IAAG;AACnF,YAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,sBAAsB,CAAC;YACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAChF,eAAe,CACqB;YAEtC,iBAAiB,CAAC,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;YAC3E,iBAAiB,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;YAE/E,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;AACvD,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACnB,aAAC,CAAC;AACJ,SAAC,CAAC;;+GAhPO,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjB,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EA0CtB,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAEjC,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5C1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAkBc,QAAA,EAAA,qCAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EAElB,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,6BCtF1E,ilEAqDA,EAAA,MAAA,EAAA,CAAA,+rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAqC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDaa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;+BACE,qCAAqC,EAAA,aAAA,EAGhC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,ilEAAA,EAAA,MAAA,EAAA,CAAA,+rBAAA,CAAA,EAAA;;0BA4ClC;;0BAAY,MAAM;2BAAC,qBAAqB;;0BACxC;;0BACA,MAAM;2BAAC,2BAA2B;4EA5BD,IAAI,EAAA,CAAA;sBAAvC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;gBACe,KAAK,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;gBAExC,6BAA6B,EAAA,CAAA;sBADnC,SAAS;uBAAC,wBAAwB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAC;gBAGpE,mCAAmC,EAAA,CAAA;sBADzC,SAAS;uBAAC,qBAAqB,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAC;gBAE/D,gBAAgB,EAAA,CAAA;sBAAzB;gBACS,eAAe,EAAA,CAAA;sBAAxB;;;AEzFH;;;;;;;;;;;;;;AAcG;MAmBU,2BAA2B,CAAA;IAItC,IAAa,OAAO,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;IA+B5B,WACmB,CAAA,eAAgC,EAChC,WAA+B,EAC/B,mBAAwC,EACxC,MAAc,EACd,gBAAkC,EAAA;QAJlC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAtClB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAKrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AACrC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAW;AAE/D,QAAA,IAAA,CAAA,qCAAqC,GAEjD,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAC/C,SAAS,CAAC,sBAAsB,IAC9B,aAAa,CAAC;YACZ;kBACI,IAAI,CAAC,eAAe,CAAC,qDAAqD,CACxE,sBAAsB,EACtB,IAAI;AAER,kBAAE,EAAE,CAAC,EAAE,CAAC;AACV,YAAA,IAAI,CAAC,SAAS;SACf,CAAC,CACH,EACD,GAAG,CAAC,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,KAAI;AAC5C,YAAA,IAAI,CAAC,2CAA2C,GAAG,0BAA0B;AAC7E,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC;AACrF,YAAA,OAAO,0BAA0B,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,qBAAqB,CAAC;SACzF,CAAC,CACH;QAEO,IAAiC,CAAA,iCAAA,GAAqC,IAAI;QAC1E,IAAkB,CAAA,kBAAA,GAAG,KAAK;QAC1B,IAA2C,CAAA,2CAAA,GAAqC,EAAE;;IAUnF,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;;IAG1B,YAAY,GAAA;AACjB,QAAA,MAAM,oCAAoC,GAAG,IAAI,CAAC,2CAA2C;AAE7F,QAAA,IAAI,oCAAoC,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;;aAC3B;AACL,YAAA,IAAI,CAAC,iCAAiC,GAAG,oCAAoC,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,qBAAqB,EAAE;;;AAIzB,IAAA,aAAa,CAAC,yBAAoD,EAAA;AACvE,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;;AAEhC,QAAA,IAAI,CAAC,iCAAiC,GAAG,yBAAyB;AAClE,QAAA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;;IAGd,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AAEtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACtC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0CAA0C,CAAC;AAChF,YAAA,OAAO,EAAE;AACP,gBAAA;oBACE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACxD,oBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;YACD,QAAQ,EAAE,gBAAgB,CAAC,oBAAoB;AAChD,SAAA,CAAC;;IAGI,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,iCAAiC,KAAK,IAAI,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC;AACnE,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI;;;+GA7FtC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxC,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAF3B,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,mBAAmB,CAAC,6IC/BlC,00EAiEA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,iCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAzC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,8BAA8B,EAAA,SAAA,EAG7B,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,00EAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;4MAGA,YAAY,EAAA,CAAA;sBAA3C,SAAS;uBAAC,mBAAmB;gBAGjB,OAAO,EAAA,CAAA;sBAAnB;gBAIyB,gBAAgB,EAAA,CAAA;sBAAzC;gBACyB,uBAAuB,EAAA,CAAA;sBAAhD;;;AE1CH;;;;;;;;;;;;;;AAcG;MA2FU,oBAAoB,CAAA;AA0X/B,IAAA,WAAA,CACmB,eAA2C,EAC3C,iBAAoC,EACpC,iBAA2C,EAC3C,aAAmC,EACnC,aAA4B,EAC5B,eAAgC,EAChC,WAA+B,EAC/B,gBAAkC,EAClC,iBAA+C,EAC/C,gBAAyC,EACzC,KAAqB,EACrB,MAAc,EACd,aAAuC,EACvC,gBAAkC,EAClC,iBAAoC,EACpC,aAAuC,EAAA;QAfvC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa;QArYzB,IAAS,CAAA,SAAA,GAAmB,IAAI;QAChC,IAAa,CAAA,aAAA,GAAG,IAAI;QACpB,IAAiB,CAAA,iBAAA,GAAG,IAAI;QACxB,IAAmB,CAAA,mBAAA,GAAG,IAAI;QAC1B,IAAqB,CAAA,qBAAA,GAAG,IAAI;QAC5B,IAAoB,CAAA,oBAAA,GAAG,IAAI;QAC3B,IAAe,CAAA,eAAA,GAAG,IAAI;QAGtB,IAAkB,CAAA,kBAAA,GAAiC,IAAI;QAE9C,IAAW,CAAA,WAAA,GAAG,yBAAyB;QACvC,IAAiB,CAAA,iBAAA,GAAG,+BAA+B;AAEnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CACrD,+BAA+B,CAChC;AACe,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACtD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAEzD,IAAa,CAAA,aAAA,GAC3B,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;QAE9E,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAC/D,GAAG,CAAC,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAC1C;AACe,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB;AAE5D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB;AAElE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;AAExD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CACrE,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CACnE,EACD,GAAG,CAAC,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,CAAC,EACrD,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,MAAM,EAAE,KAAK,EAAE;gBACjB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;;SAEhE,CAAC,CACH;QACe,IAAkB,CAAA,kBAAA,GAAwB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACzF,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,0BAA0B,EAAE;YACnE,QAAQ,EAAE,kCAAkC,CAAC,4BAA4B;AACzE,YAAA,UAAU,EAAE,sBAAsB;SACnC,CAAC,CACH,CACF;AAEe,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB;QAC7D,IAAe,CAAA,eAAA,GAC7B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CACvC,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,SAAS,GAAG,cAAgC,CAAC,CAAC,CAC3E;AACa,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAmC,IAAI,CAAC;AAC/E,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAwB,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CACrE,GAAG,CAAC,UAAU,IAAG;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;SAC/B,CAAC,CACH;AACgB,QAAA,IAAA,CAAA,oBAAoB,GAAwB,IAAI,CAAC,WAAW,CAAC,mBAAmB;AAChF,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC1D,QAAA,IAAA,CAAA,iBAAiB,GAAwB,IAAI,CAAC,eAAe,CAAC,gBAAgB;AAC9E,QAAA,IAAA,CAAA,SAAS,GACxB,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAC3C,SAAS,CAAC,sBAAsB,IAC9B,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAChE,EACD,GAAG,CAAC,GAAG,IAAG;YACR,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAChD,OAAO,GAAG,CAAC,OAAO;AACpB,SAAC,CAAC,EACF,GAAG,CAAC,OAAO,IAAG;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/C,aAAC,CAAC;SACH,CAAC,CACH;AAEa,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB;QAE3D,IAAsB,CAAA,sBAAA,GAAG,gBAAgB;AACzC,QAAA,IAAA,CAAA,YAAY,GAAc;AACzC,YAAA,KAAK,EAAE,iBAAiB;YACxB,GAAG,EAAE,IAAI,CAAC,sBAAsB;YAChC,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,YAAA,QAAQ,EAAE,IAAI;SACf;QACgB,IAAoB,CAAA,oBAAA,GAAG,IAAI,eAAe,CAAW;AACpE,YAAA,IAAI,CAAC,sBAAsB;AAC5B,SAAA,CAAC;QACc,IAAO,CAAA,OAAA,GAAiC,aAAa,CAAC;AACpE,YAAA,IAAI,CAAC,iBAAiB;AACtB,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,KAAI;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;AACxC,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAI;AACvE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,gBAAA,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACvC,gBAAA,GAAG,OAAO,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,IAAI,KACR,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,EACzF,EAAE,CACH;AACF,aAAA,CAAC;AACF,YAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxE,OAAO,EACP,eAAe,CAChB;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,gCAAgC,CACpE,uBAAuB,EACvB,YAAY,EACZ,YAAY,CACb;AACD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC9D,OAAO,EACP,UAAU,EACV,eAAe,CAChB;AAED,YAAA,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,MAA0B,KAAK,MAAM,CAAC,GAAG,KAAK,wBAAwB,CACxE,IAAI,CAAC;kBACF,CAAC,GAAG,cAAc,EAAE,IAAI,CAAC,YAAY;kBACrC,cAAc;AACpB,SAAC,CAAC,EACF,GAAG,CAAC,UAAU,IAAG;AACf,YAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;;YAEhE,IAAI,CAAC,gBAAgB,CAAC;AACnB,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACZ,SAAS,CAAC,qBAAqB,IAAG;gBACjC,IAAI,gBAAgB,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/D,oBAAA,MAAM,aAAa,GACjB,OAAO,gBAAgB,CAAC,OAAO,KAAK,QAAQ,GAAG,gBAAgB,CAAC,OAAO,GAAG,MAAM;AAClF,oBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACjC,wBAAA,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,EAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,aAA0B,EAAC;AAC3E,qBAAA,CAAC;;AAEN,aAAC,CAAC;AACN,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;SAC3B,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,uBAAuB,GACtC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAC/E,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EACtC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC,KAAI;AAC3C,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC;YAEhC,OAAO,IAAI,iCAAiC,CAC1C,sBAAsB,EACtB,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EACpB,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,CAChB;SACF,CAAC,CACH;AAEa,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CACrF,SAAS,CAAC,MACR,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,uBAAuB;AAC5B,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,kBAAkB;YACvB,IAAI,CAAC,aAAa,CAAC,qBAAqB;YACxC,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9B,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,aAAa,CAAC,aAAa;AACjC,SAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAC1B,EACD,oBAAoB,CAClB,CACE,CACE,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,EACD,CACE,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,KAED,OAAO,CACL;AACE,YAAA,GAAG,iBAAiB;AACpB,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,GAAG,qBAAqB;AACxB,YAAA,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAA0B,KAAK,MAAM,CAAC,GAAG,CAAC;AACvE,YAAA,YAAY,EAAE,gBAAgB;SAC/B,EACD;AACE,YAAA,GAAG,iBAAiB;AACpB,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,GAAG,qBAAqB;AACxB,YAAA,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAA0B,KAAK,MAAM,CAAC,GAAG,CAAC;AACvE,YAAA,YAAY,EAAE,gBAAgB;SAC/B,CACF,CACJ,EACD,SAAS,CACP,CAAC,CACC,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,CAAC,EACD,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,KAAI;AACH,YAAA,MAAM,MAAM,GAAwB,EAAE,CAAC,kBAAkB,CAAC;AAC1D,YAAA,MAAM,MAAM,GAAwB,EAAE,CAAC,kBAAkB,CAAC;YAC1D,MAAM,UAAU,GAAsB,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAA0B,KACpF,MAAM,CAAC,GAAG,KAAK,wBAAwB,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,CAC5D;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;AAChD,gBAAA,OAAO,QAAQ,CAAC;AACd,oBAAA,SAAS,EACP,kBAAkB,IAAI,CAAC;0BACnB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,YAAY,CAAC,EACzD,UAAU;0BAEZ,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAC9C,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,YAAY,CAAC,EACzD,UAAU,CACX;AACP,oBAAA,kBAAkB,EAAE,MAAM;AAC1B,oBAAA,kBAAkB,EAAE,MAAM;AAC1B,oBAAA,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC;AACxB,oBAAA,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;AAC7B,iBAAA,CAAC;;AAGJ,YAAA,OAAO,QAAQ,CAAC;AACd,gBAAA,SAAS,EACP,kBAAkB,IAAI,CAAC;AACrB,sBAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,SAAS,EACT,UAAU;AAEd,sBAAE,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAC9C,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,SAAS,EACT,UAAU,CACX;AACP,gBAAA,kBAAkB,EAAE,MAAM;AAC1B,gBAAA,kBAAkB,EAAE,MAAM;AAC1B,gBAAA,cAAc,EAAE,EAAE,CAAC,KAAK,CAAC;AACzB,gBAAA,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;AAC7B,aAAA,CAAC;SACH,CACF,EACD,SAAS,CAAC,GAAG,IACX,aAAa,CAAC;YACZ,EAAE,CAAC,GAAG,CAAC;AACP,YAAA,QAAQ,CACN,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAChC,IAAI,CAAC;iBACF,iBAAiB,CAAC,wBAAwB,EAAE;gBAC3C,QAAQ,EAAE,kCAAkC,CAAC,kBAAkB;gBAC/D,UAAU,EAAE,QAAQ,CAAC,EAAE;aACxB;AACA,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACjB,CACF,CAAC,IAAI,CAAC,cAAc,CAAC,EAAe,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,oBAAoB;AAC1B,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,MAAM;AACxD,YAAA,GAAG,GAAG;AACN,YAAA,SAAS,EAAE;gBACT,GAAG,GAAG,CAAC,SAAS;AAChB,gBAAA,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM;AACvD,oBAAA,GAAG,QAAQ;AACX,oBAAA,MAAM,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACvC,iBAAA,CAAC,CAAC;AACJ,aAAA;YACD,gBAAgB;AACjB,SAAA,CAAC,CAAC,EACH,GAAG,CACD,CAAC,GAQA,KAAI;YACH,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;YACvD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC;YAE/C,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CACjC,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,kBAAkB,EACtB,GAAG,CAAC,kBAAkB,CACvB;gBACD,QAAQ,EAAE,GAAG,CAAC,WAAW;gBACzB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;aACvC;AACH,SAAC,CACF,EACD,GAAG,CAAC,GAAG,IAAG;YACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,GAAG,CAAC,IAAI;YAE7C,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;AACzB,gBAAA,MAAM,2BAA2B,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC5E,oBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAC9B,CAAC,MAA0B,KAAK,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CACxF;AACD,oBAAA,OAAO,CAAC;AACN,0BAAE;AACF,0BAAE;AACE,4BAAA,GAAG,GAAG;4BACN,CAAC,IAAI,GAAG;gCACN,OAAO,EAAE,MAAM,CAAC,KAAK;gCACrB,IAAI,EAAE,uBAAuB,CAAC,qCAAqC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClF,6BAAA;yBACF;iBACN,EAAE,EAAE,CAAC;gBAEN,OAAO;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAG,2BAA2B;iBAC/B;AACH,aAAC,CAAC;AACJ,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAClC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;SAClC,CAAC,CACH;;IAwBM,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,sCAAsC,EAAE;;IAGxC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,mCAAmC,EAAE,WAAW,EAAE;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;AAG9B,IAAA,YAAY,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK;;AAGP,IAAA,MAAM,CAAC,iBAAoC,EAAA;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC;;AAGvC,IAAA,QAAQ,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,IAAG;AACxF,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACrC,aAAa,sBAAsB,CAAA,CAAE,EACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAChC;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,UAAA,EAAa,sBAAsB,CAAA,UAAA,EAAa,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC,CAAC;AACnF,SAAC,CAAC;;AAGG,IAAA,SAAS,CAAC,GAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AACpB,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;YAClC;;AAGF,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE;YACtD;;QAGF,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE;AAC7C,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACzB;;AAGF,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;;IAGvB,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;;QAGF,MAAM,OAAO,GAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAC3D,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CACxC;QAED,IAAI,CAAC,OAAO,EAAE;YACZ;;QAGF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK;AACrE,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI;;AAGhB,IAAA,UAAU,CAAC,IAAY,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAC,CAAC;YAC/D;;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGlC,IAAA,cAAc,CAAC,IAAY,EAAA;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAC,CAAC;YAC/D;;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC;;AAGtC,IAAA,WAAW,CAAC,YAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC;;AAG1C,IAAA,kBAAkB,CAAC,GAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AACpB,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC;;IAGtC,eAAe,GAAA;QACpB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,EAAE,CAAC,CACvE;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,YAAY,CAAC,UAAyB,EAAE,WAAqB,EAAA;AAClE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE;YACf;;AAGF,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,MAAK;YACxE,IAAI,CAAC,YAAY,EAAE;AACrB,SAAC,CAAC;;AAGG,IAAA,mBAAmB,CAAC,UAAqC,EAAA;QAC9D,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAC5C,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YACtD;;QAGF,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;;IAG7C,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;;IAGnC,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAG1B,IAAA,wBAAwB,CAAC,QAA8B,EAAA;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC;;AAG3C,IAAA,yBAAyB,CAAC,QAAiB,EAAA;AAChD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGjC,sCAAsC,GAAA;AAC5C,QAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,KAAK,CAAC;aACnD,IAAI,CACH,GAAG,CAAC,CAAC,MAAc,KAAK,MAAM,EAAE,sBAAsB,CAAC,EACvD,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAClC,oBAAoB,EAAE;aAEvB,SAAS,CAAC,qBAAqB,IAAG;AACjC,YAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;AACvC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE;;AAEhD,YAAA,IAAI,CAAC,+BAA+B,GAAG,qBAAqB;AAC5D,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,qBAAqB,CAAC;YACjE,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;;IAGE,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;IAGrB,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,sBAAsB,IAAI,IAAI;;AAG7E,IAAA,sBAAsB,CAAC,cAAuB,EAAA;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB;AACE,cAAE;AACE,gBAAA,WAAW,EAAE,sCAAsC;gBACnD,cAAc;AACd,gBAAA,KAAK,EAAE,gCAAgC;AACxC;AACH,cAAE;AACE,gBAAA,WAAW,EAAE,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAc,YAAA,CAAA;gBACvE,cAAc;AACd,gBAAA,KAAK,EAAE,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAQ,MAAA,CAAA;AAC5D,aAAA,CACN;;+GArkBQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA2C,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAtD,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuD,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA7C,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA8C,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA5C,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA6C,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAVpB,QAAA,EAAA,sBAAA,EAAA,SAAA,EAAA;YACT,kBAAkB;YAClB,oBAAoB;YACpB,0BAA0B;YAC1B,uBAAuB;YACvB,4BAA4B;YAC5B,wBAAwB;YACxB,wBAAwB;AACzB,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGU,mBAAmB,EACnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,2BAA2B,EAC3B,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,IAAI,gDC5GjB,mjOAyMA,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2D,+BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5C,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhGa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGrB,SAAA,EAAA;wBACT,kBAAkB;wBAClB,oBAAoB;wBACpB,0BAA0B;wBAC1B,uBAAuB;wBACvB,4BAA4B;wBAC5B,wBAAwB;wBACxB,wBAAwB;AACzB,qBAAA,EAAA,QAAA,EAAA,mjOAAA,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA;ukBAG+B,UAAU,EAAA,CAAA;sBAAzC,SAAS;uBAAC,mBAAmB;gBACU,oBAAoB,EAAA,CAAA;sBAA3D,SAAS;uBAAC,2BAA2B;gBACrB,aAAa,EAAA,CAAA;sBAA7B,SAAS;uBAAC,IAAI;;;AE5GjB;;;;;;;;;;;;;;AAcG;AAWH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;MAOvC,sBAAsB,CAAA;IAWjC,WACU,CAAA,WAAwB,EACxB,eAAgC,EAChC,KAAqB,EACrB,MAAqB,EACrB,QAAkB,EAC1B,cAA8B,EAAA;QALtB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAPX,IAAiB,CAAA,iBAAA,GAAQ,EAAE;QAUhC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;QAC7C,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;QAC1E,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;QAClD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC1C,IAAI,CAAC,yBAAyB,GAAG,cAAc,CAAC,uCAAuC,CACrF,IAAI,CAAC,sBAAsB,CAC5B;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;IAGpC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO;;;AAI9E,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACtE,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;AACjC,SAAC,CAAC;;AAGI,IAAA,YAAY,CAAC,EAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACxD,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC1B,SAAC,CAAC;;AAGG,IAAA,OAAO,CAAC,EAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC5C,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACnF,IAAI,CAAC,IAAI,GAAG;AACV,gBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,gBAAA,QAAQ,EAAE,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAE,CAAA;aAChE;AACH,SAAC,CAAC;;IAGG,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;;IAG7B,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;IAGf,IAAI,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC5B,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;AAC9B,YAAA,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SACtC;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/D,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtB,SAAC,CAAC;;AAGG,IAAA,MAAM,CAAC,IAAY,EAAA;;AAExB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;AACjE,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;AACtC,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC1B;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAClF,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;AAC7E,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtB,SAAC,CAAC;;IAGG,UAAU,GAAA;AACf,QAAA,OAAO,CAAC;;+GApGC,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAkD,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8DChCnC,2xFA8EA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD9Ca,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,2xFAAA,EAAA;;;AE5BpC;;;;;;;;;;;;;;AAcG;AAYH,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,kCAAkC;AACxC,QAAA,SAAS,EAAE,oBAAoB;QAC/B,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;AACrE,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,4DAA4D;AAClE,QAAA,SAAS,EAAE,sBAAsB;QACjC,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,aAAa,EAAE,CAAC,mBAAmB,CAAC;AACpC,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,UAAU,EAAE,kCAAkC;YAC9C,KAAK,EAAE,CAAC,SAAS,CAAC;AACnB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,uDAAuD;AAC7D,QAAA,SAAS,EAAE,sBAAsB;QACjC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,UAAU,EAAE,kCAAkC;YAC9C,KAAK,EAAE,CAAC,SAAS,CAAC;AACnB,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,0EAA0E;AAChF,QAAA,SAAS,EAAE,sBAAsB;QACjC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,UAAU,EAAE,4DAA4D;YACxE,KAAK,EAAE,CAAC,SAAS,CAAC;AACnB,SAAA;AACF,KAAA;CACF;MAMY,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,EAAAT,IAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CACZ,YAAY,CAAA,EAAA,CAAA,CAAA;gHAEX,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC3C,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAEX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtD,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;ACrED;;;;;;;;;;;;;;AAcG;MAWU,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAHlB,YAAA,EAAA,CAAA,gBAAgB,CADrB,EAAA,OAAA,EAAA,CAAA,eAAe,aAEf,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAJvB,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAId,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;ACxBD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAsLU,aAAa,CAAA;IACxB,OAAO,OAAO,CAAC,WAAwB,EAAA;QACrC,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;gBACT,cAAc;gBACd,wBAAwB;AACxB,gBAAA;AACE,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,UAAU,EAAE,WAAW;AACxB,iBAAA;AACF,aAAA;SACF;;+GAZQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBA1FtB,+BAA+B;YAC/B,oBAAoB;YACpB,2BAA2B;YAC3B,sBAAsB;YACtB,gCAAgC;YAChC,iCAAiC;YACjC,8BAA8B;YAC9B,kCAAkC;YAClC,8BAA8B;YAC9B,sBAAsB;YACtB,iCAAiC;YACjC,2CAA2C;YAC3C,oCAAoC;YACpC,iCAAiC;YACjC,0BAA0B;YAC1B,kBAAkB;AAClB,YAAA,+BAA+B,aAG/B,YAAY;YACZ,oBAAoB;YACpB,UAAU;YACV,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,mBAAmB;YACnB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,mBAAmB;YACnB,UAAU;YACV,YAAY;YACZ,WAAW;AACX,YAAA,aAAa,sBAQb,UAAU;YACV,WAAW;YACX,gBAAgB;YAChB,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACX4D,cAAY;YACZ,8BAA8B;YAC9B,kBAAkB;YAClB,UAAU;YACV,UAAU;YACVC,aAAW;YACXC,YAAW;YACX,SAAS;YACT,aAAa;YACbC,YAAkB;YAClB,UAAU;YACV,iBAAiB;YACjBC,aAAiB;YACjBC,cAAkB;YAClB,uBAAuB;YACvB,cAAc;YACd,UAAU;YACV,cAAc;YACd,sBAAsB;YACtB,gBAAgB;YAChB,WAAW;YACX,cAAc;YACd,uBAAuB;YACvB,iCAAiC;YACjC,SAAS;YACT,YAAY;YACZ,uCAAuC;YACvC,6BAA6B;YAC7B,8BAA8B;YAC9B,iCAAiC;AACjC,YAAA,kBAAkB,CAEV,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,sBAAsB,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAE9E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAvEtB,YAAY;YACZ,oBAAoB;YACpB,UAAU;YACV,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,mBAAmB;YACnB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,mBAAmB;YACnB,UAAU;YACV,YAAY;YACZ,WAAW;YACX,aAAa;YACb,eAAe,CAAC,OAAO,CAAC;AACtB,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,UAAU,EAAE,iBAAiB;oBAC7B,IAAI,EAAE,CAAC,UAAU,CAAC;AACnB,iBAAA;aACF,CAAC;YACF,UAAU;YACV,WAAW;YACX,gBAAgB;YAChB,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACXL,cAAY;YACZ,8BAA8B;YAC9B,kBAAkB;YAClB,UAAU;YACV,UAAU;YACVC,aAAW;YACXC,YAAW;YACX,SAAS;YACT,aAAa;YACbC,YAAkB;YAClB,UAAU;YACV,iBAAiB;YACjBC,aAAiB;YACjBC,cAAkB;YAClB,uBAAuB;YACvB,cAAc;YACd,UAAU;YACV,cAAc;YACd,sBAAsB;YACtB,gBAAgB;YAEhB,cAAc;YACd,uBAAuB;YACvB,iCAAiC;YACjC,SAAS;YACT,YAAY;YACZ,uCAAuC;YACvC,6BAA6B;YAC7B,8BAA8B;YAC9B,iCAAiC;YACjC,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAIT,aAAa,EAAA,UAAA,EAAA,CAAA;kBA5FzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,+BAA+B;wBAC/B,oBAAoB;wBACpB,2BAA2B;wBAC3B,sBAAsB;wBACtB,gCAAgC;wBAChC,iCAAiC;wBACjC,8BAA8B;wBAC9B,kCAAkC;wBAClC,8BAA8B;wBAC9B,sBAAsB;wBACtB,iCAAiC;wBACjC,2CAA2C;wBAC3C,oCAAoC;wBACpC,iCAAiC;wBACjC,0BAA0B;wBAC1B,kBAAkB;wBAClB,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,UAAU;wBACV,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;wBACd,WAAW;wBACX,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,eAAe,CAAC,OAAO,CAAC;AACtB,4BAAA,MAAM,EAAE;AACN,gCAAA,OAAO,EAAE,eAAe;AACxB,gCAAA,UAAU,EAAE,iBAAiB;gCAC7B,IAAI,EAAE,CAAC,UAAU,CAAC;AACnB,6BAAA;yBACF,CAAC;wBACF,UAAU;wBACV,WAAW;wBACX,gBAAgB;wBAChB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,WAAW;wBACXL,cAAY;wBACZ,8BAA8B;wBAC9B,kBAAkB;wBAClB,UAAU;wBACV,UAAU;wBACVC,aAAW;wBACXC,YAAW;wBACX,SAAS;wBACT,aAAa;wBACbC,YAAkB;wBAClB,UAAU;wBACV,iBAAiB;wBACjBC,aAAiB;wBACjBC,cAAkB;wBAClB,uBAAuB;wBACvB,cAAc;wBACd,UAAU;wBACV,cAAc;wBACd,sBAAsB;wBACtB,gBAAgB;wBAChB,WAAW;wBACX,cAAc;wBACd,uBAAuB;wBACvB,iCAAiC;wBACjC,SAAS;wBACT,YAAY;wBACZ,uCAAuC;wBACvC,6BAA6B;wBAC7B,8BAA8B;wBAC9B,iCAAiC;wBACjC,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,iCAAiC,CAAC;AAC3F,iBAAA;;;ACnMD;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}
1
+ {"version":3,"file":"valtimo-dossier.mjs","sources":["../../../../projects/valtimo/dossier/src/lib/services/dossier-bulk-assign.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-column.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-parameter.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-assignee.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-pagination.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-search.service.ts","../../../../projects/valtimo/dossier/src/lib/models/candidate-user.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget-content.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget-display.model.ts","../../../../projects/valtimo/dossier/src/lib/models/case-widget.model.ts","../../../../projects/valtimo/dossier/src/lib/models/dossier-detail-tab.model.ts","../../../../projects/valtimo/dossier/src/lib/models/dossier-parameters.model.ts","../../../../projects/valtimo/dossier/src/lib/models/search.model.ts","../../../../projects/valtimo/dossier/src/lib/models/tab-api.model.ts","../../../../projects/valtimo/dossier/src/lib/models/tabs.model.ts","../../../../projects/valtimo/dossier/src/lib/models/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/summary/summary.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/summary/summary.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/progress/progress.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/progress/progress.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/audit/audit.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/audit/audit.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/not-found/not-found.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/not-found/not-found.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/documents/documents.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/documents/documents.component.html","../../../../projects/valtimo/dossier/src/lib/permissions/dossier-detail.permissions.ts","../../../../projects/valtimo/dossier/src/lib/permissions/index.ts","../../../../projects/valtimo/dossier/src/lib/services/notes.service.ts","../../../../projects/valtimo/dossier/src/lib/components/note-modal/note-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/note-modal/note-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/notes/notes.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/notes/notes.component.html","../../../../projects/valtimo/dossier/src/lib/constants/tab.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-tab-token.ts","../../../../projects/valtimo/dossier/src/lib/constants/dossier-list.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-status.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/case-widget.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/custom-case-widget-token.ts","../../../../projects/valtimo/dossier/src/lib/constants/dossier-detail-layout.constants.ts","../../../../projects/valtimo/dossier/src/lib/constants/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/formio/formio.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/formio/formio.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.permissions.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-process/widget-process.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.service.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/tab/widgets/widgets.component.html","../../../../projects/valtimo/dossier/src/lib/services/dossier-tab-api.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-tab.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-status.service.ts","../../../../projects/valtimo/dossier/src/lib/services/start-modal.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-widgets-api.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-widgets-layout.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-detail-layout.service.ts","../../../../projects/valtimo/dossier/src/lib/services/dossier-list-case-tag.service.ts","../../../../projects/valtimo/dossier/src/lib/services/index.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-assign-user/dossier-assign-user.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-assign-user/dossier-assign-user.component.html","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/tab-translate.pipe.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/dossier-detail.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-detail/dossier-detail.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-list-actions/dossier-list-actions.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-list-actions/dossier-list-actions.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-list/dossier-list.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-list/dossier-list.component.html","../../../../projects/valtimo/dossier/src/lib/components/dossier-update/dossier-update.component.ts","../../../../projects/valtimo/dossier/src/lib/components/dossier-update/dossier-update.component.html","../../../../projects/valtimo/dossier/src/lib/dossier-routing.module.ts","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/tab-translate-pipe.module.ts","../../../../projects/valtimo/dossier/src/lib/pipes/tab-translate/index.ts","../../../../projects/valtimo/dossier/src/lib/pipes/index.ts","../../../../projects/valtimo/dossier/src/lib/dossier.module.ts","../../../../projects/valtimo/dossier/src/public_api.ts","../../../../projects/valtimo/dossier/src/valtimo-dossier.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {BehaviorSubject, Observable, take} from 'rxjs';\nimport {CandidateUser} from '../models';\n\n@Injectable()\nexport class DossierBulkAssignService {\n public readonly candidateUsers$ = new BehaviorSubject<CandidateUser[]>([]);\n\n private _valtimoEndpointUri: string;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient\n ) {\n this._valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/document/`;\n }\n\n public bulkAssign(assigneeId: string, documentIds: string[]): Observable<void> {\n return this.http.post<void>(`${this._valtimoEndpointUri}assign`, {assigneeId, documentIds});\n }\n\n public loadCandidateUsers(documentIds: string[]): void {\n this.http\n .post<CandidateUser[]>(`${this._valtimoEndpointUri}candidate-user`, {documentIds})\n .pipe(take(1))\n .subscribe({\n next: (candidateUsers: CandidateUser[]) => {\n this.candidateUsers$.next(candidateUsers);\n },\n error: error => {\n console.error(error);\n },\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {map, Observable} from 'rxjs';\nimport {CaseListColumn, DocumentService} from '@valtimo/document';\nimport {ListField} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Injectable()\nexport class DossierColumnService {\n constructor(\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n getDefinitionColumns(\n documentDefinitionName: string\n ): Observable<{columns: Array<DefinitionColumn>; hasApiConfig: boolean}> {\n const config = this.configService.config;\n const customDefinitionTable = config.customDefinitionTables[documentDefinitionName];\n const defaultDefinitionTable = config.defaultDefinitionTable;\n\n return this.documentService.getCaseList(documentDefinitionName).pipe(\n map(caseListColumns => {\n const apiCaseListColumns =\n (config.featureToggles?.caseListColumn ?? true) &&\n caseListColumns &&\n Array.isArray(caseListColumns) &&\n caseListColumns.length > 0 &&\n this.mapCaseListColumnsToDefinitionColumns(caseListColumns);\n\n return {\n columns: customDefinitionTable || apiCaseListColumns || defaultDefinitionTable,\n hasApiConfig: !!apiCaseListColumns,\n };\n })\n );\n }\n\n hasEnvironmentConfig(documentDefinitionName: string): boolean {\n return !!this.configService.config?.customDefinitionTables[documentDefinitionName];\n }\n\n mapDefinitionColumnsToListFields(\n columns: Array<DefinitionColumn>,\n hasEnvColumnConfig: boolean,\n hasApiColumnConfig: boolean\n ): Array<ListField> {\n return columns.map(column => {\n const translationKey = `fieldLabels.${column.translationKey}`;\n const translation = this.translateService.instant(translationKey);\n const validTranslation = translation !== translationKey && translation;\n return {\n key:\n hasEnvColumnConfig || !hasApiColumnConfig ? column.propertyName : column.translationKey,\n label: column.title || validTranslation || column.translationKey,\n sortable: column.sortable,\n ...(column.viewType && {viewType: column.viewType}),\n ...(column.enum && {enum: column.enum}),\n ...(column.format && {format: column.format}),\n ...(column.tagAmount && {tagAmount: column.tagAmount}),\n ...(column.default && {default: column.default}),\n };\n });\n }\n\n private mapCaseListColumnsToDefinitionColumns(\n caseListColumns: Array<CaseListColumn>\n ): Array<DefinitionColumn> {\n return caseListColumns.map(caseListColumn => ({\n translationKey: caseListColumn.key,\n sortable: caseListColumn.sortable,\n default: caseListColumn.defaultSort,\n viewType: this.getViewType(caseListColumn.displayType.type),\n propertyName: this.getPropertyName(caseListColumn.path),\n ...(caseListColumn.title && {title: caseListColumn.title}),\n ...(caseListColumn?.displayType?.displayTypeParameters?.enum && {\n enum: caseListColumn.displayType.displayTypeParameters.enum as any,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.dateFormat && {\n format: caseListColumn.displayType?.displayTypeParameters?.dateFormat,\n }),\n ...(caseListColumn.displayType?.displayTypeParameters?.tagAmount && {\n tagAmount: caseListColumn.displayType?.displayTypeParameters?.tagAmount,\n }),\n }));\n }\n\n private getViewType(caseListColumnDisplayType: string): string {\n switch (caseListColumnDisplayType) {\n case 'arrayCount':\n return 'relatedFiles';\n case 'underscoresToSpaces':\n return 'stringReplaceUnderscore';\n default:\n return caseListColumnDisplayType;\n }\n }\n\n private getPropertyName(caseListColumnPath: string): string {\n return caseListColumnPath.replace('doc:', '$.').replace('case:', '');\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {DossierParameters} from '../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n Subscription,\n take,\n} from 'rxjs';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AssigneeFilter, Direction, SearchFieldValues} from '@valtimo/config';\nimport {Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class DossierParameterService implements OnDestroy {\n private readonly _dossierParameters$ = new BehaviorSubject<DossierParameters>(undefined);\n private readonly _searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n\n public get dossierParameters$(): Observable<DossierParameters> {\n return this._dossierParameters$.asObservable();\n }\n\n public get searchFieldValues$(): Observable<SearchFieldValues> {\n return this._searchFieldValues$.asObservable();\n }\n\n public get querySearchParams$(): Observable<SearchFieldValues> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params.search) {\n return JSON.parse(atob(params.search)) as SearchFieldValues;\n }\n return {};\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryPaginationParams$(): Observable<Pagination | null> {\n return this.route.queryParams.pipe(\n map(params => {\n const paramsCopy = {...params} as any as DossierParameters;\n\n return paramsCopy.collectionSize\n ? {\n collectionSize: Number(paramsCopy.collectionSize),\n page: Number(paramsCopy.page),\n size: Number(paramsCopy.size),\n ...(paramsCopy.isSorting === 'true' && {\n sort: {\n isSorting: !!(paramsCopy.isSorting === 'true'),\n state: {\n name: paramsCopy.sortStateName,\n direction: paramsCopy.sortStateDirection as Direction,\n },\n },\n }),\n }\n : null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryAssigneeParam$(): Observable<AssigneeFilter> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.assignee) {\n return params?.assignee?.toUpperCase();\n }\n return '';\n }),\n distinctUntilChanged((prevParams, currParams) => prevParams === currParams)\n );\n }\n\n public get queryStatusParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.status) {\n return JSON.parse(atob(params.status)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n public get queryCaseTagsParams$(): Observable<string[] | null> {\n return this.route.queryParams.pipe(\n map(params => {\n if (params?.casetags) {\n return JSON.parse(atob(params.casetags)) as string[];\n }\n return null;\n }),\n distinctUntilChanged(\n (prevParams, currParams) => JSON.stringify(prevParams) === JSON.stringify(currParams)\n )\n );\n }\n\n private _dossierParametersSubscription!: Subscription;\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute\n ) {\n this.setDossierParameters();\n }\n\n public ngOnDestroy(): void {\n this._dossierParametersSubscription?.unsubscribe();\n }\n\n public setSearchFieldValues(searchFieldValues: SearchFieldValues): void {\n this._searchFieldValues$.next(searchFieldValues);\n }\n\n public setSearchParameters(searchParameters: SearchFieldValues): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if (Object.keys(searchParameters || {}).length > 0) {\n this._dossierParameters$.next({\n ...dossierParameters,\n search: this.objectToBase64(searchParameters),\n });\n } else {\n if (dossierParameters?.search) {\n delete dossierParameters.search;\n }\n this._dossierParameters$.next(dossierParameters);\n }\n });\n }\n\n public setPaginationParameters(pagination: Pagination): void {\n if (pagination) {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._dossierParameters$.next({\n ...dossierParameters,\n size: `${pagination.size}`,\n collectionSize: `${pagination.collectionSize}`,\n page: `${pagination.page}`,\n isSorting: pagination.sort?.isSorting ? 'true' : 'false',\n ...(pagination.sort?.state?.name && {sortStateName: `${pagination.sort?.state.name}`}),\n ...(pagination.sort?.state?.direction && {\n sortStateDirection: `${pagination.sort?.state.direction}`,\n }),\n });\n });\n }\n }\n\n public setAssigneeParameter(assigneeFilter: AssigneeFilter): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n this._dossierParameters$.next({\n ...dossierParameters,\n assignee: assigneeFilter.toLowerCase(),\n });\n });\n }\n\n public setStatusParameter(statusKeyParameters: string[]): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((statusKeyParameters || []).length > 0) {\n this._dossierParameters$.next({\n ...dossierParameters,\n status: this.objectToBase64(statusKeyParameters),\n });\n } else {\n if (dossierParameters?.status) {\n delete dossierParameters.status;\n }\n this._dossierParameters$.next(dossierParameters);\n }\n });\n }\n\n public setCaseTagParameter(caseTagKeyParameters: string[]): void {\n this._dossierParameters$.pipe(take(1)).subscribe(dossierParameters => {\n if ((caseTagKeyParameters || []).length > 0) {\n this._dossierParameters$.next({\n ...dossierParameters,\n casetags: this.objectToBase64(caseTagKeyParameters),\n });\n } else {\n if (dossierParameters?.casetags) {\n delete dossierParameters.casetags;\n }\n this._dossierParameters$.next(dossierParameters);\n }\n });\n }\n\n public clearSearchFieldValues(): void {\n this._searchFieldValues$.next({});\n }\n\n public clearParameters(): void {\n this._dossierParameters$.next(undefined);\n this.router.navigate([this.getUrlWithoutParams()], {replaceUrl: true});\n }\n\n private openDossierParametersSubscription(): void {\n this._dossierParametersSubscription = this.dossierParameters$.subscribe(dossierParams => {\n this.router.navigate([this.getUrlWithoutParams()], {\n queryParams: dossierParams,\n replaceUrl: true,\n });\n });\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private getUrlWithoutParams(): string {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n urlTree.fragment = null;\n return urlTree.toString();\n }\n\n private setDossierParameters(): void {\n combineLatest([\n this.queryPaginationParams$,\n this.querySearchParams$,\n this.queryAssigneeParam$,\n this.queryStatusParams$,\n this.queryCaseTagsParams$,\n ])\n .pipe(take(1))\n .subscribe(\n ([paginationParams, searchParams, assigneeParams, statusParams, caseTagParams]) => {\n if (paginationParams) this.setPaginationParameters(paginationParams);\n if (assigneeParams) this.setAssigneeParameter(assigneeParams);\n if (statusParams) this.setStatusParameter(statusParams);\n if (caseTagParams) this.setCaseTagParameter(caseTagParams);\n if (searchParams) {\n this.setSearchParameters(searchParams);\n this.setSearchFieldValues(searchParams);\n }\n\n this.openDossierParametersSubscription();\n }\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {Documents, SpecifiedDocuments} from '@valtimo/document';\nimport {BehaviorSubject, map, Observable, take} from 'rxjs';\nimport {DossierColumnService} from '../services';\n\n@Injectable()\nexport class DossierListService {\n private readonly _documentDefinitionName$ = new BehaviorSubject<string>('');\n\n private readonly _hasEnvColumnConfig$: Observable<boolean> = this.documentDefinitionName$.pipe(\n map(documentDefinitionName =>\n this.dossierColumnService.hasEnvironmentConfig(documentDefinitionName)\n )\n );\n\n private readonly _checkRefresh$ = new BehaviorSubject<boolean>(false);\n private readonly _forceRefresh$ = new BehaviorSubject<boolean>(false);\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$.asObservable();\n }\n\n public get hasEnvColumnConfig$(): Observable<boolean> {\n return this._hasEnvColumnConfig$;\n }\n\n get checkRefresh$(): Observable<boolean> {\n return this._checkRefresh$.asObservable();\n }\n\n get forceRefresh$(): Observable<boolean> {\n return this._forceRefresh$.asObservable();\n }\n\n constructor(private readonly dossierColumnService: DossierColumnService) {}\n\n public setDocumentDefinitionName(documentDefinitionName: string): void {\n this._documentDefinitionName$.next(documentDefinitionName);\n }\n\n public mapDocuments(\n documents: Documents | SpecifiedDocuments,\n hasEnvColumnConfig: boolean,\n hasApiColumnConfig: boolean\n ) {\n if (hasEnvColumnConfig || !hasApiColumnConfig) {\n return (documents as Documents).content.map(document => {\n const {content, ...others} = document;\n return {...content, ...others};\n });\n }\n\n return (documents as SpecifiedDocuments).content.reduce((acc, curr) => {\n const propsObject = {id: curr.id, locked: curr.locked};\n curr.items?.forEach(item => {\n propsObject[item.key] = item.value;\n });\n return [...acc, propsObject];\n }, []);\n }\n\n public forceRefresh(): void {\n this._forceRefresh$.pipe(take(1)).subscribe(forceRefresh => {\n this._forceRefresh$.next(!forceRefresh);\n });\n }\n\n public checkRefresh(): void {\n this._checkRefresh$.pipe(take(1)).subscribe(checkRefresh => {\n this._checkRefresh$.next(!checkRefresh);\n });\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Subject, map, Observable, switchMap, take, tap, combineLatest} from 'rxjs';\nimport {DossierListService} from './dossier-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {AssigneeFilter, ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField} from '@valtimo/components';\nimport {DossierParameterService} from './dossier-parameter.service';\n\n@Injectable()\nexport class DossierListAssigneeService {\n private readonly ASSIGNEE_KEY = 'assigneeFullName';\n private readonly _defaultAssigneeFilter$ = new Subject<AssigneeFilter>();\n private readonly _assigneeFilter$ = new BehaviorSubject<AssigneeFilter | null>(null);\n\n public readonly canHaveAssignee$: Observable<boolean> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettings(documentDefinitionName)\n ),\n map(caseSettings => caseSettings?.canHaveAssignee),\n tap(canHaveAssignee => {\n const visibleTabs: AssigneeFilter[] = this.configService.config.visibleDossierListTabs;\n\n this._defaultAssigneeFilter$.next(\n !!visibleTabs && canHaveAssignee ? visibleTabs[0] : 'ALL'\n );\n })\n );\n\n public get assigneeFilter$(): Observable<AssigneeFilter> {\n return this._assigneeFilter$.asObservable();\n }\n\n constructor(\n private readonly configService: ConfigService,\n private readonly dossierListService: DossierListService,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n public resetAssigneeFilter(): void {\n combineLatest([this.dossierParameterService.queryAssigneeParam$, this._defaultAssigneeFilter$])\n .pipe(take(1))\n .subscribe(([assigneeParam, defaultAssigneeFilter]) => {\n if (assigneeParam) {\n this._assigneeFilter$.next(assigneeParam);\n this.dossierParameterService.setAssigneeParameter(assigneeParam);\n } else {\n this._assigneeFilter$.next(defaultAssigneeFilter);\n this.dossierParameterService.setAssigneeParameter(defaultAssigneeFilter);\n }\n });\n }\n\n public setAssigneeFilter(assigneeFilter: AssigneeFilter): void {\n this._assigneeFilter$.next(assigneeFilter);\n this.dossierParameterService.setAssigneeParameter(assigneeFilter);\n }\n\n public filterAssigneeColumns(\n columns: Array<DefinitionColumn>,\n canHaveAssignee: boolean\n ): Array<DefinitionColumn> {\n return columns.filter(column => {\n if (column?.key === this.ASSIGNEE_KEY && !canHaveAssignee) {\n return false;\n }\n return true;\n });\n }\n\n public addAssigneeListField(\n columns: Array<DefinitionColumn>,\n listFields: Array<ListField>,\n canHaveAssignee: boolean\n ): Array<ListField> {\n return [\n ...listFields,\n ...(canHaveAssignee && !columns.find(column => column.propertyName === this.ASSIGNEE_KEY)\n ? [\n {\n key: this.ASSIGNEE_KEY,\n label: this.translateService.instant(`fieldLabels.${this.ASSIGNEE_KEY}`),\n sortable: true,\n viewType: 'string',\n },\n ]\n : []),\n ];\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Injectable} from '@angular/core';\nimport {Direction, SortState} from '@valtimo/components';\nimport {ConfigService, DefinitionColumn} from '@valtimo/config';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierService {\n private readonly definitions: any;\n private readonly _refreshDocument$ = new BehaviorSubject<null>(null);\n\n constructor(private readonly configService: ConfigService) {\n this.definitions = configService.config.definitions;\n }\n\n public getImplementationEnvironmentDefinitions(name: string) {\n return this.definitions.dossiers.find(definition => definition.name === name);\n }\n\n public getInitialSortState(columns: Array<DefinitionColumn>): SortState {\n const defaultColumn = columns.find(column => column.default);\n const isSorting = defaultColumn?.default === 'ASC' || defaultColumn?.default === 'DESC';\n const direction: Direction =\n typeof !defaultColumn || defaultColumn.default === 'boolean'\n ? 'DESC'\n : (defaultColumn.default as any as Direction);\n\n return {\n isSorting,\n state: {\n name: defaultColumn ? defaultColumn.propertyName : columns[0].propertyName,\n direction,\n },\n };\n }\n\n public get refreshDocument$(): Observable<any> {\n return this._refreshDocument$.asObservable();\n }\n\n public refresh(): void {\n this._refreshDocument$.next(null);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, filter, map, Observable, take, tap} from 'rxjs';\nimport {Pagination} from '@valtimo/components';\nimport {NGXLogger} from 'ngx-logger';\nimport {DossierParameterService} from './dossier-parameter.service';\nimport {DefinitionColumn} from '@valtimo/config';\nimport {DossierService} from './dossier.service';\nimport {Documents, SortState, SpecifiedDocuments} from '@valtimo/document';\n\n@Injectable()\nexport class DossierListPaginationService {\n private readonly DEFAULT_PAGINATION: Pagination = {\n collectionSize: 0,\n page: 1,\n size: 10,\n sort: undefined,\n };\n\n private readonly _pagination$ = new BehaviorSubject<Pagination | undefined>(undefined);\n\n private readonly _paginationCopy$ = this._pagination$.pipe(\n filter(pagination => !!pagination),\n map(pagination => pagination && JSON.parse(JSON.stringify(pagination))),\n tap(pagination => this.dossierParameterService.setPaginationParameters(pagination))\n );\n\n get pagination$(): Observable<Pagination> {\n return this._paginationCopy$;\n }\n\n constructor(\n private readonly logger: NGXLogger,\n private readonly dossierParameterService: DossierParameterService,\n private readonly dossierService: DossierService\n ) {}\n\n pageChange(newPage: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.page !== newPage) {\n this.logger.debug(`Page change: ${newPage}`);\n this._pagination$.next({...pagination, page: newPage});\n }\n });\n }\n\n pageSizeChange(newPageSize: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.size !== newPageSize) {\n const amountOfAvailablePages = Math.ceil(+pagination.collectionSize / newPageSize);\n const newPage =\n amountOfAvailablePages < pagination.page ? amountOfAvailablePages : pagination.page;\n\n this.logger.debug(`Page size change. New Page: ${newPage} New page size: ${newPageSize}`);\n this._pagination$.next({...pagination, size: newPageSize, page: newPage});\n }\n });\n }\n\n sortChanged(newSortState: SortState): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && JSON.stringify(pagination.sort) !== JSON.stringify(newSortState)) {\n this.logger.debug(`Sort state change: ${JSON.stringify(newSortState)}`);\n this._pagination$.next({...pagination, sort: newSortState});\n }\n });\n }\n\n setPage(newPageNumber: number): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n this._pagination$.next({...pagination, page: newPageNumber});\n });\n }\n\n setCollectionSize(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination && pagination.collectionSize !== documents.totalElements) {\n this._pagination$.next({...pagination, collectionSize: documents.totalElements});\n }\n });\n }\n\n checkPage(documents: Documents | SpecifiedDocuments): void {\n this._pagination$.pipe(take(1)).subscribe(pagination => {\n if (pagination) {\n const amountOfItems = documents.totalElements;\n const amountOfPages = Math.ceil(amountOfItems / pagination.size);\n const currentPage = pagination.page;\n\n if (!!amountOfItems && !currentPage) {\n this._pagination$.next({...pagination, page: 1});\n return;\n }\n\n if (currentPage > amountOfPages) {\n this._pagination$.next({...pagination, page: amountOfPages});\n }\n }\n });\n }\n\n clearPagination(): void {\n this._pagination$.next(undefined);\n }\n\n setPagination(columns: Array<DefinitionColumn>): void {\n this.dossierParameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n const defaultPagination: Pagination = this.getDefaultPagination(columns);\n const paginationToUse = queryPaginationParams || defaultPagination;\n\n this.logger.debug(`Set pagination: ${JSON.stringify(paginationToUse)}`);\n\n this._pagination$.next(paginationToUse);\n });\n }\n\n private getDefaultPagination(columns: Array<DefinitionColumn>): Pagination {\n const defaultSortState = this.dossierService.getInitialSortState(columns);\n\n return {\n ...this.DEFAULT_PAGINATION,\n sort: defaultSortState,\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, switchMap} from 'rxjs';\nimport {SearchField, SearchFieldValues, SearchFilter, SearchFilterRange} from '@valtimo/config';\nimport {DossierListService} from './dossier-list.service';\nimport {DocumentService} from '@valtimo/document';\nimport {DossierParameterService} from './dossier-parameter.service';\n\n@Injectable()\nexport class DossierListSearchService {\n private readonly _documentSearchFields$: Observable<Array<SearchField> | null> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentSearchFields(documentDefinitionName)\n )\n );\n\n get documentSearchFields$(): Observable<Array<SearchField> | null> {\n return this._documentSearchFields$;\n }\n\n constructor(\n private readonly dossierListService: DossierListService,\n private readonly documentService: DocumentService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n search(searchFieldValues: SearchFieldValues): void {\n this.dossierParameterService.setSearchFieldValues(searchFieldValues || {});\n this.dossierParameterService.setSearchParameters(searchFieldValues);\n this.dossierListService.checkRefresh();\n }\n\n mapSearchValuesToFilters(values: SearchFieldValues): Array<SearchFilter | SearchFilterRange> {\n const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n Object.keys(values).forEach(valueKey => {\n const searchValue = values[valueKey] as any;\n if (searchValue.start) {\n filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n } else if (Array.isArray(searchValue)) {\n filters.push({key: valueKey, values: searchValue});\n } else {\n filters.push({key: valueKey, values: [searchValue]});\n }\n });\n\n return filters;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface CandidateUser {\n id: string;\n firstName: string;\n lastName: string;\n}\n\nexport {CandidateUser};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CaseWidgetDisplayType} from './case-widget-display.model';\nimport {FieldsCaseWidgetValue} from './case-widget.model';\n\ninterface WidgetFieldsContent {\n columns: FieldsCaseWidgetValue[][];\n}\n\ntype CollectionCaseWidgetFieldWidth = 'full' | 'half';\n\ninterface CollectionCaseWidgetField {\n key: string;\n title: string;\n value: string;\n width: CollectionCaseWidgetFieldWidth;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface CollectionCaseWidgetTitle {\n value: string;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface WidgetCollectionContent {\n collection: string;\n defaultPageSize: number;\n title: CollectionCaseWidgetTitle;\n fields: CollectionCaseWidgetField[];\n}\n\ninterface CollectionWidgetResolvedField {\n key: string;\n title: string;\n value: string;\n width: CollectionCaseWidgetFieldWidth;\n hideWhenEmpty: boolean;\n}\n\ninterface CollectionCaseWidgetCardData {\n title: string;\n fields: {[key: string]: string};\n hidden?: boolean;\n}\n\ninterface WidgetTableContent {\n columns: FieldsCaseWidgetValue[];\n collection: string;\n firstColumnAsTitle: boolean;\n defaultPageSize: number;\n}\n\ninterface WidgetCustomContent {\n componentKey: string;\n}\n\ninterface WidgetFormioContent {\n formDefinitionName: string;\n}\n\ntype WidgetContentProperties =\n | WidgetFieldsContent\n | WidgetTableContent\n | WidgetCustomContent\n | WidgetFormioContent\n | WidgetCollectionContent;\n\nexport {\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetFormioContent,\n WidgetTableContent,\n WidgetCollectionContent,\n CollectionCaseWidgetField,\n CollectionCaseWidgetFieldWidth,\n CollectionWidgetResolvedField,\n CollectionCaseWidgetTitle,\n CollectionCaseWidgetCardData,\n};\n","enum CaseWidgetDisplayTypeKey {\n TEXT = 'text',\n BOOLEAN = 'boolean',\n CURRENCY = 'currency',\n DATE = 'date',\n DATE_TIME = 'datetime',\n ENUM = 'enum',\n NUMBER = 'number',\n PERCENT = 'percent',\n}\n\ninterface CaseWidgetTextDisplayType {\n type: CaseWidgetDisplayTypeKey.TEXT;\n ellipsisCharacterLimit: number;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetBooleanDisplayType {\n type: CaseWidgetDisplayTypeKey.BOOLEAN;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetCurrencyDisplayType {\n type: CaseWidgetDisplayTypeKey.CURRENCY;\n currencyCode?: string;\n display?: string;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetDateDisplayType {\n type: CaseWidgetDisplayTypeKey.DATE;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetDateTimeDisplayType {\n type: CaseWidgetDisplayTypeKey.DATE_TIME;\n format?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetEnumDisplayType {\n type: CaseWidgetDisplayTypeKey.ENUM;\n values: {\n [key: string]: string;\n };\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetNumberDisplayType {\n type: CaseWidgetDisplayTypeKey.NUMBER;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ninterface CaseWidgetPercentDisplayType {\n type: CaseWidgetDisplayTypeKey.PERCENT;\n digitsInfo?: string;\n hideWhenEmpty: boolean;\n}\n\ntype CaseWidgetDisplayType =\n | CaseWidgetTextDisplayType\n | CaseWidgetBooleanDisplayType\n | CaseWidgetCurrencyDisplayType\n | CaseWidgetDateDisplayType\n | CaseWidgetDateTimeDisplayType\n | CaseWidgetEnumDisplayType\n | CaseWidgetNumberDisplayType\n | CaseWidgetPercentDisplayType;\n\nexport {\n CaseWidgetBooleanDisplayType,\n CaseWidgetCurrencyDisplayType,\n CaseWidgetDateDisplayType,\n CaseWidgetDateTimeDisplayType,\n CaseWidgetDisplayType,\n CaseWidgetDisplayTypeKey,\n CaseWidgetEnumDisplayType,\n CaseWidgetNumberDisplayType,\n CaseWidgetPercentDisplayType,\n CaseWidgetTextDisplayType,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CaseWidgetDisplayType} from '.';\nimport {Type} from '@angular/core';\nimport {\n WidgetCollectionContent,\n WidgetContentProperties,\n WidgetCustomContent,\n WidgetFieldsContent,\n WidgetTableContent,\n} from './case-widget-content.model';\n\nenum CaseWidgetType {\n FIELDS = 'fields',\n TABLE = 'table',\n CUSTOM = 'custom',\n COLLECTION = 'collection',\n FORMIO = 'formio',\n}\n\ntype CaseWidgetWidth = 1 | 2 | 3 | 4;\ntype CollectionFieldWidth = 'half' | 'full';\n\ninterface CaseWidgetAction {\n name?: string;\n processDefinitionKey: string;\n}\n\ninterface BasicCaseWidget {\n type: CaseWidgetType;\n title: string;\n width: CaseWidgetWidth;\n highContrast: boolean;\n key: string;\n properties: WidgetContentProperties;\n actions?: CaseWidgetAction[];\n}\n\ninterface FieldsCaseWidgetValue {\n key: string;\n title: string;\n value: string;\n ellipsisCharacterLimit?: number;\n displayProperties?: CaseWidgetDisplayType;\n}\n\ninterface FieldsCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.FIELDS;\n properties: WidgetFieldsContent;\n}\n\ninterface CollectionCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.COLLECTION;\n properties: WidgetCollectionContent;\n}\n\ninterface TableCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.TABLE;\n properties: WidgetTableContent;\n}\n\ninterface CustomCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.CUSTOM;\n properties: WidgetCustomContent;\n}\n\ninterface FormioCaseWidget extends BasicCaseWidget {\n type: CaseWidgetType.FORMIO;\n properties: {\n formDefinitionName: string;\n };\n}\n\ntype CaseWidget =\n | FieldsCaseWidget\n | CollectionCaseWidget\n | CustomCaseWidget\n | TableCaseWidget\n | FormioCaseWidget;\n\ntype CaseWidgetWithUuid = CaseWidget & {\n uuid: string;\n};\n\ntype FormioCaseWidgetWidgetWithUuid = FormioCaseWidget & {\n uuid: string;\n};\n\ninterface CaseWidgetsRes {\n caseDefinitionName: string;\n key: string;\n widgets: BasicCaseWidget[];\n}\n\ninterface CaseWidgetWidthsPx {\n [uuid: string]: number;\n}\n\ninterface CaseWidgetContentHeightsPx {\n [uuid: string]: number;\n}\n\ninterface CaseWidgetContentHeightsPxWithContainerWidth {\n [uuid: string]: {\n containerWidth: number;\n height: number;\n };\n}\n\ninterface CaseWidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface CaseWidgetPackResultItem {\n width: number;\n height: number;\n x: number;\n y: number;\n item: CaseWidgetConfigurationBin;\n}\n\ninterface CaseWidgetPackResult {\n height: number;\n width: number;\n items: CaseWidgetPackResultItem[];\n}\n\ninterface MaxRectsResult extends CaseWidgetConfigurationBin {\n x: number;\n y: number;\n}\n\ninterface CaseWidgetPackResultItemsByRow {\n [rowY: string]: CaseWidgetPackResultItem[];\n}\n\ninterface CaseWidgetXY {\n x: number;\n y: number;\n}\n\ninterface CustomCaseWidgetConfig {\n [componentKey: string]: Type<any>;\n}\n\nexport {\n BasicCaseWidget,\n CaseWidget,\n CaseWidgetAction,\n CaseWidgetConfigurationBin,\n CaseWidgetContentHeightsPx,\n CaseWidgetContentHeightsPxWithContainerWidth,\n CaseWidgetPackResult,\n CaseWidgetsRes,\n CaseWidgetType,\n CaseWidgetWidth,\n CaseWidgetWidthsPx,\n CaseWidgetWithUuid,\n CaseWidgetXY,\n CollectionFieldWidth,\n FieldsCaseWidget,\n FieldsCaseWidgetValue,\n CollectionCaseWidget,\n CustomCaseWidgetConfig,\n CustomCaseWidget,\n TableCaseWidget,\n CaseWidgetPackResultItem,\n CaseWidgetPackResultItemsByRow,\n FormioCaseWidgetWidgetWithUuid,\n MaxRectsResult,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Type} from '@angular/core';\n\nenum DefaultTabs {\n summary = 'summary',\n progress = 'progress',\n audit = 'audit',\n documents = 'documents',\n notes = 'notes',\n}\n\ntype DefaultTabComponents = {\n [key in DefaultTabs]: Type<any>;\n};\n\ninterface CaseTabConfig {\n [tabKey: string]: Type<any>;\n}\n\nexport {DefaultTabs, DefaultTabComponents, CaseTabConfig};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface PaginationParameters {\n collectionSize: string;\n page: string;\n size: string;\n sortStateName: string;\n sortStateDirection: string;\n isSorting: 'true' | 'false';\n}\n\ninterface DossierParameters extends PaginationParameters {\n search?: string;\n assignee?: string;\n status?: string;\n casetags?: string;\n}\n\nexport {DossierParameters};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ntype CaseSearchFieldDataType = 'text' | 'number' | 'date' | 'datetime' | 'boolean';\n\ntype CaseSearchFieldFieldType = 'single' | 'multiple' | 'range';\n\ntype CaseSearchFieldMatchType = 'exact' | 'like';\n\ninterface CaseSearchField {\n key: string;\n datatype: CaseSearchFieldDataType;\n fieldtype: CaseSearchFieldFieldType;\n matchtype: CaseSearchFieldMatchType;\n}\n\nexport {\n CaseSearchFieldDataType,\n CaseSearchFieldFieldType,\n CaseSearchFieldMatchType,\n CaseSearchField,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nenum ApiTabType {\n STANDARD = 'standard',\n FORMIO = 'formio',\n CUSTOM = 'custom',\n WIDGETS = 'widgets',\n}\n\ninterface ApiTabItem {\n name: string | null;\n key: string;\n type: ApiTabType;\n contentKey: string;\n createdOn?: string;\n createdBy?: string;\n showTasks?: boolean;\n}\n\ninterface TabSelectItem {\n icon: string;\n title: string;\n type: ApiTabType;\n disabled: boolean;\n disabledTooltipTranslationKey?: string;\n}\n\nexport {ApiTabType, ApiTabItem, TabSelectItem};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {ComponentFactoryResolver, ComponentRef, ViewContainerRef} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {BehaviorSubject, combineLatest, filter, Observable, take} from 'rxjs';\n\nexport interface TabLoader<T_TAB extends Tab> {\n tabs: T_TAB[];\n\n initial(tabName?: string): void;\n\n load(tabToLoad: T_TAB): void;\n}\n\nexport class TabLoaderImpl implements TabLoader<TabImpl> {\n private readonly _activeTab$ = new BehaviorSubject<TabImpl | null>(null);\n private readonly _tabs: TabImpl[] = null;\n private readonly _componentFactoryResolver: ComponentFactoryResolver = null;\n private readonly _viewContainerRef: ViewContainerRef = null;\n private _activeComponent: ComponentRef<any> = null;\n private _activeTab: TabImpl = null;\n private _router: Router;\n private _route: ActivatedRoute;\n\n constructor(\n tabs: TabImpl[],\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n router: Router,\n route: ActivatedRoute\n ) {\n this._tabs = tabs;\n this._componentFactoryResolver = componentFactoryResolver;\n this._viewContainerRef = viewContainerRef;\n this._router = router;\n this._route = route;\n }\n\n public get tabs(): TabImpl[] {\n return this._tabs;\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._activeTab$.pipe(filter(tab => !!tab));\n }\n\n public initial(tabName?: string): void {\n let initialTab!: TabImpl;\n\n if (tabName) {\n initialTab =\n this._tabs.find(tab => tab.name === tabName) ||\n this._tabs.find(tab => tab.contentKey === tabName);\n }\n\n if (!initialTab) {\n initialTab = this._tabs[0] || null;\n }\n\n this.load(initialTab);\n }\n\n public load(newTab: TabImpl): void {\n if (newTab !== this._activeTab) {\n this._tabs.forEach(tab => tab.deactivate());\n this.replaceView(newTab);\n this.replaceUrlState(newTab);\n this.setActive(newTab);\n }\n }\n\n public refreshView() {\n this.replaceView(this._activeTab);\n }\n\n private replaceView(tab: TabImpl): void {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(tab.component);\n this._viewContainerRef.clear();\n if (this._activeTab !== null) {\n this._activeComponent.destroy();\n }\n this._activeComponent = this._viewContainerRef.createComponent(componentFactory);\n }\n\n public replaceUrlState(nextTab: TabImpl): void {\n combineLatest([this._route.params, this._route.queryParams])\n .pipe(take(1))\n .subscribe(([params, queryParams]) => {\n const currentUrl = this._router.url;\n const currentDocumentId = params?.documentId;\n const urlBeforeDocumentId = currentUrl.split(currentDocumentId)[0];\n\n this._router.navigate([`${urlBeforeDocumentId}${currentDocumentId}/${nextTab.name}`], {\n ...(nextTab.name === 'documents' && {\n queryParams,\n }),\n replaceUrl: true,\n });\n });\n }\n\n private setActive(tab: TabImpl): void {\n tab.activate();\n this._activeTab = tab;\n this._activeTab$.next(tab);\n }\n}\n\nexport interface Tab {\n name: string;\n sequence: number;\n component: any;\n title: string;\n contentKey: string;\n\n activate(): void;\n\n deactivate(): void;\n\n isActive(): boolean;\n}\n\nexport class TabImpl implements Tab {\n private readonly _name: string;\n private readonly _sequence: number;\n private readonly _component: any;\n private readonly _contentKey: string;\n private readonly _title: string;\n private _active = false;\n private _showTasks = false;\n\n constructor(\n name: string,\n sequence: number,\n component: any,\n contentKey?: string,\n title?: string,\n showTasks: boolean = false\n ) {\n this._name = name;\n this._sequence = sequence;\n this._component = component;\n\n if (contentKey) this._contentKey = contentKey;\n if (title) this._title = title;\n if (showTasks) this._showTasks = showTasks;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get sequence(): number {\n return this._sequence;\n }\n\n public get component(): any {\n return this._component;\n }\n\n public get contentKey(): string {\n return this._contentKey;\n }\n\n public get title(): string {\n return this._title;\n }\n\n public get showTasks(): boolean {\n return this._showTasks;\n }\n\n public activate(): void {\n this._active = true;\n }\n\n public deactivate(): void {\n this._active = false;\n }\n\n public isActive(): boolean {\n return this._active;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './candidate-user.model';\nexport * from './case-widget-content.model';\nexport * from './case-widget-display.model';\nexport * from './case-widget.model';\nexport * from './dossier-detail-tab.model';\nexport * from './dossier-parameters.model';\nexport * from './search.model';\nexport * from './tab-api.model';\nexport * from './tabs.model';\nexport * from './dossier-detail-layout.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {Document, DocumentService} from '@valtimo/document';\nimport {FormService} from '@valtimo/form';\nimport {FormioOptionsImpl, ValtimoFormioOptions} from '@valtimo/components';\nimport moment from 'moment';\nimport {FormioForm} from '@formio/angular';\nimport {Subscription} from 'rxjs';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-summary',\n templateUrl: './summary.component.html',\n styleUrls: ['./summary.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierDetailTabSummaryComponent implements OnInit, OnDestroy {\n public readonly documentDefinitionName: string;\n public readonly documentId!: string;\n\n public document!: Document;\n private snapshot: ParamMap;\n public moment!: typeof moment;\n public formDefinition: FormioForm = null;\n public options: ValtimoFormioOptions;\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService\n ) {\n this.snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = this.snapshot.get('documentDefinitionName') || '';\n this.documentId = this.snapshot.get('documentId') || '';\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n }\n\n public ngOnInit(): void {\n this.moment = moment;\n this.init();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n public init(): void {\n this._subscriptions.add(\n this.documentService.getDocument(this.documentId).subscribe(document => {\n this.document = document;\n })\n );\n\n this._subscriptions.add(\n this.formService\n .getFormDefinitionByNamePreFilled(`${this.documentDefinitionName}.summary`, this.documentId)\n .subscribe(formDefinition => {\n this.formDefinition = formDefinition;\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row py-4\">\n <div class=\"col-12\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {DocumentService, LoadedValue, ProcessDocumentInstance} from '@valtimo/document';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, switchMap, tap} from 'rxjs';\nimport {ListItem} from 'carbon-components-angular/dropdown';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.css'],\n})\nexport class DossierDetailTabProgressComponent {\n private readonly processDocumentInstances$: Observable<Array<ProcessDocumentInstance>> =\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.documentService.findProcessDocumentInstances(params.get('documentId'))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.map(processDocumentInstance => ({\n ...processDocumentInstance,\n startedOn: new Date(processDocumentInstance.startedOn),\n }))\n ),\n map(processDocumentInstances =>\n processDocumentInstances.sort((a, b) =>\n a.active === b.active ? b.startedOn.getTime() - a.startedOn.getTime() : a.active ? -1 : 1\n )\n ),\n tap(processDocumentInstances => {\n if (processDocumentInstances.length > 0) {\n this.selectedProcessInstanceId$.next(processDocumentInstances[0].id.processInstanceId);\n }\n })\n );\n\n public readonly processInstanceItems$: Observable<LoadedValue<Array<ListItem>>> =\n this.processDocumentInstances$.pipe(\n map(processDocumentInstances =>\n processDocumentInstances.map((processDocumentInstance, index) => ({\n processInstanceId: processDocumentInstance.id.processInstanceId,\n content: processDocumentInstance.processName || '-',\n selected: index === 0,\n }))\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n public readonly selectedProcessInstanceId$ = new BehaviorSubject<string | null>(null);\n public readonly selectedProcessInstance$: Observable<LoadedValue<ProcessDocumentInstance>> =\n combineLatest([this.processDocumentInstances$, this.selectedProcessInstanceId$]).pipe(\n map(([processDocumentInstances, selectedProcessInstanceId]) =>\n processDocumentInstances.find(\n instance => instance.id.processInstanceId === selectedProcessInstanceId\n )\n ),\n map(processInstanceItems => ({\n value: processInstanceItems,\n isLoading: false,\n })),\n startWith({isLoading: true})\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService\n ) {}\n\n public loadProcessInstance(processInstanceId: string) {\n if (!!processInstanceId) {\n this.selectedProcessInstanceId$.next(processInstanceId);\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n class=\"full-height-tab-content\"\n *ngIf=\"{\n processInstanceItems: processInstanceItems$ | async,\n selectedProcessInstance: selectedProcessInstance$ | async,\n } as obs\"\n>\n <span *ngIf=\"!obs.processInstanceItems.isLoading && !obs.processInstanceItems.value\">{{\n 'progress.noProcessDocumentInstances' | translate\n }}</span>\n <div class=\"process-info-row\">\n <cds-dropdown\n [dropUp]=\"false\"\n [label]=\"'progress.process' | translate\"\n [skeleton]=\"obs.processInstanceItems.isLoading\"\n [style.width.px]=\"350\"\n (selected)=\"loadProcessInstance($event.item.processInstanceId)\"\n >\n <cds-dropdown-list [items]=\"obs.processInstanceItems.value || []\"></cds-dropdown-list>\n </cds-dropdown>\n <div>\n <v-input-label [title]=\"'progress.version' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"30\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.version }} ({{ 'progress.of' | translate }}\n {{ obs.selectedProcessInstance.value.latestVersion }})\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedBy' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedBy || ('progress.system' | translate) }}\n </span>\n </div>\n <div>\n <v-input-label [title]=\"'progress.startedOn' | translate\"></v-input-label>\n <cds-skeleton-text\n *ngIf=\"obs.selectedProcessInstance.isLoading\"\n [lines]=\"1\"\n [maxLineWidth]=\"50\"\n ></cds-skeleton-text>\n <span *ngIf=\"!obs.selectedProcessInstance.isLoading\" class=\"process-info-text\">\n {{ obs.selectedProcessInstance.value.startedOn.toLocaleDateString() }}\n </span>\n </div>\n </div>\n <div>\n <valtimo-process-diagram\n *ngIf=\"!obs.selectedProcessInstance.isLoading\"\n [processInstanceId]=\"obs.selectedProcessInstance.value.id.processInstanceId\"\n ></valtimo-process-diagram>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport moment from 'moment';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, AuditEvent} from '@valtimo/document';\nimport {NgxSpinnerService} from 'ngx-spinner';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-audit',\n templateUrl: './audit.component.html',\n styleUrls: ['./audit.component.css'],\n})\nexport class DossierDetailTabAuditComponent implements OnInit {\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n\n public timelineItems: TimelineItem[];\n private readonly documentId: string;\n public pagination: any;\n private defaultAuditPage = 0;\n private currentAuditPage: number;\n\n constructor(\n private route: ActivatedRoute,\n private documentService: DocumentService,\n private spinnerService: NgxSpinnerService\n ) {\n this.spinnerService.show('auditSpinner');\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n }\n\n private static getTranslationKey(auditEvent: AuditEvent) {\n const classNameArray = auditEvent.className.split('.');\n const eventName = classNameArray[classNameArray.length - 1];\n return 'events.' + eventName;\n }\n\n ngOnInit() {\n this.loadAuditPage(this.defaultAuditPage);\n }\n\n public loadAuditPage(pageNumber: number) {\n this.documentService.getAuditLog(this.documentId, pageNumber).subscribe(page => {\n const timelineItems = [];\n page.content.forEach(auditRecord => {\n const occurredOn = moment(auditRecord.metaData.occurredOn);\n const fromNow = occurredOn.fromNow();\n timelineItems.push(\n new TimelineItemImpl(\n occurredOn.format('DD MMM YYYY'),\n occurredOn.format('HH:mm'),\n auditRecord.metaData.user,\n fromNow,\n DossierDetailTabAuditComponent.getTranslationKey(auditRecord.auditEvent),\n auditRecord.auditEvent\n )\n );\n });\n this.timelineItems = timelineItems;\n this.spinnerService.hide('auditSpinner');\n this.pagination = page;\n this.pagination.number += 1;\n });\n }\n\n public onChangePagination(page) {\n this.paginationClicked.emit(page);\n this.currentAuditPage = page - 1;\n this.loadAuditPage(this.currentAuditPage);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"timelineItems\">\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n</div>\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n<div\n class=\"pagination-holder audit-pagination bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate: {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n <br />\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate: {number: pagination.content.length})\n : ('list.showingResults'\n | translate: {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n <div class=\"col-8\">\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-dossier-detail-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n})\nexport class DossierDetailTabNotFoundComponent {}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-no-results\n [title]=\"'dossier.tabs.componentNotFound' | translate\"\n [description]=\"'dossier.tabs.componentNotFoundMessage' | translate\"\n illustration=\"valtimo-layout/img/emptystate-error.svg\"\n></valtimo-no-results>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {DocumentService, FileSortService, RelatedFile} from '@valtimo/document';\nimport {DownloadService, ResourceDto, UploadProviderService} from '@valtimo/resource';\nimport {ToastrService} from 'ngx-toastr';\nimport {map, switchMap} from 'rxjs/operators';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService} from '@valtimo/config';\nimport {PromptService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-s3-documents',\n templateUrl: './s3-documents.component.html',\n styleUrls: ['./s3-documents.component.scss'],\n})\nexport class DossierDetailTabS3DocumentsComponent implements OnInit {\n public readonly documentId: string;\n public readonly documentDefinitionName: string;\n public readonly maxFileSize: number = this.configService?.config?.caseFileSizeUploadLimitMB || 5;\n public readonly acceptedFiles: string =\n this.configService?.config?.caseFileUploadAcceptedFiles || null;\n public fields = [\n {key: 'fileName', label: 'File name'},\n {key: 'sizeInBytes', label: 'Size in bytes'},\n {key: 'createdOn', label: 'Created on', viewType: 'date'},\n {key: 'createdBy', label: 'Created by'},\n ];\n public actions = [\n {\n columnName: '',\n iconClass: 'mdi mdi-open-in-new',\n callback: this.downloadDocument.bind(this),\n },\n {\n columnName: '',\n iconClass: 'mdi mdi-delete',\n callback: this.removeRelatedFile.bind(this),\n },\n ];\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n private readonly refetch$ = new BehaviorSubject<null>(null);\n public relatedFiles$: Observable<Array<RelatedFile>> = this.refetch$.pipe(\n switchMap(() =>\n combineLatest([\n this.documentService.getDocument(this.documentId),\n this.translateService.stream('key'),\n ])\n ),\n map(([document]) => {\n const relatedFiles = document?.relatedFiles || [];\n const translatedFiles = relatedFiles.map(file => ({\n ...file,\n createdBy: file.createdBy || this.translateService.instant('list.automaticallyGenerated'),\n }));\n\n return translatedFiles || [];\n }),\n map(relatedFiles => this.fileSortService.sortRelatedFilesByDateDescending(relatedFiles))\n );\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly documentService: DocumentService,\n private readonly toastrService: ToastrService,\n private readonly uploadProviderService: UploadProviderService,\n private readonly downloadService: DownloadService,\n private readonly promptService: PromptService,\n private readonly translateService: TranslateService,\n private readonly configService: ConfigService,\n private readonly fileSortService: FileSortService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentId = snapshot.get('documentId') || '';\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n }\n\n ngOnInit(): void {\n this.refetchDocuments();\n }\n\n fileSelected(file: File): void {\n this.uploading$.next(true);\n\n this.uploadProviderService\n .uploadFile(file, this.documentDefinitionName, this.documentId)\n .pipe(\n switchMap(resourceFile =>\n this.documentService.assignResource(this.documentId, resourceFile.data.resourceId)\n )\n )\n .subscribe({\n next: () => {\n this.toastrService.success('Successfully uploaded document to dossier');\n this.refetchDocuments();\n this.uploading$.next(false);\n },\n error: () => {\n this.toastrService.error('Failed to upload document to dossier');\n this.uploading$.next(false);\n },\n });\n }\n\n downloadDocument(relatedFile: RelatedFile): void {\n this.uploadProviderService\n .getResource(relatedFile.fileId)\n .subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n removeRelatedFile(relatedFile: RelatedFile) {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('dossier.deleteConfirmation.title'),\n bodyText: this.translateService.instant('dossier.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('dossier.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('dossier.deleteConfirmation.delete'),\n cancelMdiIcon: 'cancel',\n confirmMdiIcon: 'delete',\n cancelButtonType: 'secondary',\n confirmButtonType: 'primary',\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.documentService.removeResource(this.documentId, relatedFile.fileId).subscribe(\n () => {\n this.toastrService.success('Successfully removed document from dossier');\n this.refetchDocuments();\n },\n () => {\n this.toastrService.error('Failed to remove document from dossier');\n }\n );\n },\n });\n }\n\n private refetchDocuments(): void {\n this.refetch$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-dropzone\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [showMaxFileSize]=\"true\"\n [camera]=\"false\"\n [uploading]=\"uploading$ | async\"\n></valtimo-dropzone>\n\n<valtimo-widget>\n <valtimo-list\n [fields]=\"fields\"\n [items]=\"relatedFiles$ | async\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [viewMode]=\"true\"\n [actions]=\"actions\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this dossier' | translate }}\n </h5>\n </div>\n </valtimo-list>\n</valtimo-widget>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ConfigService,\n UploadProvider,\n ValtimoConfig,\n ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN,\n} from '@valtimo/config';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {DossierDetailTabNotFoundComponent} from '../not-found/not-found.component';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-documents',\n templateUrl: './documents.component.html',\n})\nexport class DossierDetailTabDocumentsComponent implements OnInit, AfterViewInit, OnDestroy {\n @HostBinding('class.tab--no-margin') noMargin = false;\n @HostBinding('class.tab--no-min-height') noMinHeight = false;\n\n @ViewChild('externalDocumentsTab', {read: ViewContainerRef})\n private _externalDocumentsTab: ViewContainerRef;\n\n public readonly openZaakUploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly s3UploadProvider$ = new BehaviorSubject<boolean>(false);\n public readonly documentenApiUploadProvider$ = new BehaviorSubject<boolean>(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly configService: ConfigService,\n @Optional()\n @Inject(ZGW_DOCUMENTEN_API_DOCUMENTS_COMPONENT_TOKEN)\n private readonly zgwDocumentenApiDocumentsComponent: Type<any>\n ) {}\n\n public ngOnInit(): void {\n this.setConfig(this.configService.config);\n }\n\n public ngAfterViewInit(): void {\n this._subscriptions.add(\n this.documentenApiUploadProvider$.subscribe(uploadProviderIsDocumentenApi => {\n this.noMargin = uploadProviderIsDocumentenApi;\n this.noMinHeight = uploadProviderIsDocumentenApi;\n\n if (!uploadProviderIsDocumentenApi) return;\n\n this._externalDocumentsTab.createComponent(\n this.zgwDocumentenApiDocumentsComponent || DossierDetailTabNotFoundComponent\n );\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private setConfig(config: ValtimoConfig): void {\n const uploadProvider = config.uploadProvider;\n this.openZaakUploadProvider$.next(uploadProvider === UploadProvider.OPEN_ZAAK);\n this.s3UploadProvider$.next(config.uploadProvider === UploadProvider.S3);\n this.documentenApiUploadProvider$.next(uploadProvider === UploadProvider.DOCUMENTEN_API);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-dossier-detail-tab-s3-documents\n *ngIf=\"(s3UploadProvider$ | async) || (openZaakUploadProvider$ | async)\"\n></valtimo-dossier-detail-tab-s3-documents>\n\n<ng-template #externalDocumentsTab></ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n add = 'create',\n assign = 'assign',\n claim = 'claim',\n delete = 'delete',\n edit = 'modify',\n view = 'view',\n}\n\nenum DOSSIER_DETAIL_PERMISSION_RESOURCE {\n jsonSchemaDocument = 'com.ritense.document.domain.impl.JsonSchemaDocument',\n note = 'com.ritense.note.domain.Note',\n jsonSchemaDocumentDefinition = 'com.ritense.document.domain.impl.JsonSchemaDocumentDefinition',\n}\n\nconst CAN_CLAIM_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.claim,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_ADD_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_DELETE_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_EDIT_NOTE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.edit,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n};\n\nconst CAN_ASSIGN_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.assign,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_VIEW_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.view,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_CREATE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.add,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nconst CAN_DELETE_CASE_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.delete,\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n};\n\nexport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n CAN_VIEW_CASE_PERMISSION,\n CAN_CREATE_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dossier-detail.permissions';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService, ConnectorModal, Page} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {Note, NoteCreateRequest, NoteUpdateRequest} from '../models/notes.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotesService {\n private readonly VALTIMO_API_ENDPOINT_URI = this.configService.config.valtimoApi.endpointUri;\n private readonly _showModal$ = new Subject();\n private readonly _hideModal$ = new Subject();\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n private readonly _modalType$ = new BehaviorSubject<ConnectorModal>('add');\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {}\n\n getDocumentNotes(documentId: string, params?: any): Observable<Page<Note>> {\n return this.http.get<Page<Note>>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n {params}\n );\n }\n\n createDocumentNote(documentId: string, request: NoteCreateRequest): Observable<Note> {\n return this.http.post<Note>(\n `${this.VALTIMO_API_ENDPOINT_URI}v1/document/${documentId}/note`,\n request\n );\n }\n\n updateNote(noteId: string, request: NoteUpdateRequest): Observable<Note> {\n return this.http.put<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`, request);\n }\n\n deleteNote(noteId: string): Observable<Note> {\n return this.http.delete<Note>(`${this.VALTIMO_API_ENDPOINT_URI}v1/note/${noteId}`);\n }\n\n get showModal$(): Observable<any> {\n return this._showModal$.asObservable();\n }\n\n get hideModal$(): Observable<any> {\n return this._hideModal$.asObservable();\n }\n\n get refresh$(): Observable<any> {\n return this._refresh$.asObservable();\n }\n\n get modalType$(): Observable<ConnectorModal> {\n return this._modalType$.asObservable();\n }\n\n showModal(): void {\n this._showModal$.next(null);\n }\n\n hideModal(): void {\n this._hideModal$.next(null);\n }\n\n refresh(): void {\n this._refresh$.next(null);\n }\n\n setModalType(type: ConnectorModal): void {\n this._modalType$.next(type);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {VModalComponent, ModalService} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {NotesService} from '../../services/notes.service';\n\n@Component({\n selector: 'valtimo-note-modal',\n templateUrl: './note-modal.component.html',\n styleUrls: ['./note-modal.component.scss'],\n})\nexport class NoteModalComponent implements AfterViewInit, OnDestroy {\n @ViewChild('noteModal') noteModal: VModalComponent;\n @Input() customData;\n @Output() createNoteEvent: EventEmitter<any> = new EventEmitter();\n @Output() editNoteEvent: EventEmitter<any> = new EventEmitter();\n\n readonly disabled$!: Observable<boolean>;\n readonly valid$ = new BehaviorSubject<boolean>(false);\n readonly showForm$: Observable<boolean> = this.modalService.modalVisible$;\n readonly formData$ = new BehaviorSubject<any>(null);\n readonly modalType$: Observable<string> = this.notesService.modalType$;\n\n showSubscription!: Subscription;\n hideSubscription!: Subscription;\n\n readonly returnToFirstStepSubject$ = new Subject<boolean>();\n\n constructor(\n private readonly notesService: NotesService,\n private readonly modalService: ModalService\n ) {}\n\n ngAfterViewInit(): void {\n this.openShowSubscription();\n this.openHideSubscription();\n }\n\n ngOnDestroy(): void {\n this.showSubscription?.unsubscribe();\n this.hideSubscription?.unsubscribe();\n }\n\n hide(): void {\n this.formData$.next(null);\n this.valid$.next(false);\n this.modalService.closeModal();\n }\n\n cancel(): void {\n this.hide();\n }\n\n save(): void {\n combineLatest([this.valid$, this.formData$])\n .pipe(take(1))\n .subscribe(([valid, formData]) => {\n if (valid) {\n this.createNoteEvent.emit(formData);\n }\n });\n }\n\n emitNoteData(): void {\n combineLatest([this.valid$, this.formData$, this.modalType$])\n .pipe(take(1))\n .subscribe(([valid, formData, modalType]) => {\n if (valid) {\n if (modalType === 'add') {\n this.createNoteEvent.emit(formData);\n } else {\n this.editNoteEvent.emit({formData, data: this.customData});\n }\n }\n });\n }\n\n private openShowSubscription(): void {\n this.showSubscription = this.notesService.showModal$.subscribe(() => {\n this.show();\n });\n }\n\n private openHideSubscription(): void {\n this.hideSubscription = this.notesService.hideModal$.subscribe(() => {\n this.hide();\n });\n }\n\n private show(): void {\n this.notesService.modalType$.pipe(take(1)).subscribe(() => {\n this.modalService.openModal(this.noteModal);\n });\n }\n\n formValueChange(data: any): void {\n this.formData$.next(data);\n this.setValid(data);\n }\n\n private setValid(data: any): void {\n this.valid$.next(!!data.content);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #noteModal\n *ngIf=\"{disabled: disabled$ | async, valid: valid$ | async, modalType: modalType$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"add-note-title\">\n <v-title [margin]=\"false\">{{\n (obs.modalType === 'add' ? 'dossier.notes.addNote' : 'dossier.notes.modifyNote') | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">\n {{ 'document.cancel' | translate }}\n </v-button>\n <ng-container\n *ngTemplateOutlet=\"\n obs.modalType === 'add' ? addNoteButton : editNoteButton;\n context: {obs: obs}\n \"\n ></ng-container>\n </div>\n </div>\n</v-modal>\n\n<ng-template #addNoteButton let-obs=\"obs\">\n <v-button\n (clickEvent)=\"emitNoteData()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"plus\"\n type=\"success\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n </v-button>\n</ng-template>\n<ng-template #editNoteButton let-obs=\"obs\">\n <v-button\n [disabled]=\"obs.disabled || !obs.valid\"\n (clickEvent)=\"emitNoteData()\"\n mdiIcon=\"pencil\"\n type=\"success\"\n >\n {{ 'dossier.notes.modifyNote' | translate }}\n </v-button>\n</ng-template>\n\n<ng-template #form>\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n class=\"notes-input\"\n type=\"textarea\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'dossier.notes.input.content' | translate\"\n name=\"content\"\n [fullWidth]=\"true\"\n [rows]=\"10\"\n [defaultValue]=\"customData?.summaryTranslationKey || ''\"\n >\n </v-input>\n </v-form>\n </ng-container>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, HostBinding, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {Pagination, PromptService, TimelineItem, TimelineItemImpl} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport moment from 'moment';\nimport {ToastrService} from 'ngx-toastr';\nimport {BehaviorSubject, combineLatest, map, Observable, of} from 'rxjs';\nimport {switchMap, take, tap} from 'rxjs/operators';\nimport {Note} from '../../../../models/notes.model';\nimport {\n CAN_ADD_NOTE_PERMISSION,\n CAN_DELETE_NOTE_PERMISSION,\n CAN_EDIT_NOTE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../../../permissions';\nimport {NotesService} from '../../../../services/notes.service';\n\n@Component({\n selector: 'valtimo-dossier-detail-tab-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class DossierDetailTabNotesComponent implements OnInit {\n @HostBinding('class.tab--no-margin') noMargin = true;\n\n public timelineItems: TimelineItem[] = [];\n\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly fields$ = new BehaviorSubject<Array<{key: string; label: string}>>([]);\n public readonly customData$ = new BehaviorSubject<object>({});\n\n private readonly documentId$ = this.route.params.pipe(map(params => params.documentId));\n public readonly actions = [\n {id: 'edit', label: 'Edit', icon: 'mdi-pencil', callback: this.editNote.bind(this)},\n {id: 'delete', label: 'Delete', icon: 'mdi-delete', callback: this.deleteNote.bind(this)},\n ];\n\n public readonly canAdd$: Observable<boolean> = this.documentId$.pipe(\n switchMap((identifier: string) =>\n this.permissionService.requestPermission(CAN_ADD_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier,\n })\n )\n );\n\n public readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n page: 0,\n size: 10,\n });\n\n public readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n collectionSize: 0,\n });\n\n public readonly pagination$: Observable<Pagination> = combineLatest([\n this.currentPageAndSize$,\n this.pageSizes$,\n ]).pipe(\n map(\n ([currentPage, sizes]) =>\n ({...currentPage, ...sizes, page: (currentPage.page ?? 0) + 1}) as Pagination\n )\n );\n\n public readonly notes$: Observable<Array<Note>> = combineLatest([\n this.documentId$,\n this.currentPageAndSize$,\n this.notesService.refresh$,\n this.notesService.refresh$,\n ]).pipe(\n tap(() => (this.timelineItems = [])),\n switchMap(([documentId, currentPage]) =>\n this.notesService.getDocumentNotes(documentId, {\n page: currentPage.page,\n size: currentPage.size,\n })\n ),\n tap((res: Page<Note>) => {\n this.timelineItems = [];\n this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n this.pageSizes$.next({...sizes, collectionSize: res.totalElements});\n });\n }),\n switchMap(res =>\n combineLatest([\n of(res),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_DELETE_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ...res.content.map(note =>\n this.permissionService.requestPermission(CAN_EDIT_NOTE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.note,\n identifier: note.id,\n })\n ),\n ])\n ),\n map(combinedResults => {\n const permissionResults = combinedResults.filter((curr, index) => index !== 0);\n const halfIndex = Math.ceil(permissionResults.length / 2);\n const deletePermissions = permissionResults.slice(0, halfIndex);\n const editPermissions = permissionResults.slice(halfIndex);\n\n return combinedResults[0].content.map((note: Note, index) => {\n const noteCreatedDate = moment(note.createdDate).locale(this.translateService.currentLang);\n this.timelineItems.push(\n new TimelineItemImpl(\n noteCreatedDate.format('DD MMM YYYY'),\n noteCreatedDate.format('HH:mm'),\n note.createdByUserFullName,\n noteCreatedDate.fromNow(),\n note.content,\n {},\n {id: note.id},\n [\n ...(deletePermissions[index] ? ['delete'] : []),\n ...(editPermissions[index] ? ['edit'] : []),\n ]\n )\n );\n return {\n ...note,\n };\n });\n }),\n tap(() => this.loading$.next(false))\n );\n\n constructor(\n private readonly notesService: NotesService,\n private readonly permissionService: PermissionService,\n private readonly promptService: PromptService,\n private readonly route: ActivatedRoute,\n private readonly toastrService: ToastrService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.translateService.onLangChange.subscribe(() => {\n this.notesService.refresh();\n });\n }\n\n public paginationClicked(newPageNumber): void {\n this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n });\n }\n\n public showAddModal(): void {\n this.customData$.next({});\n this.notesService.setModalType('add');\n this.notesService.showModal();\n }\n\n public createNewNote(content): void {\n this.documentId$\n .pipe(\n take(1),\n switchMap((documentId: string) => this.notesService.createDocumentNote(documentId, content))\n )\n .subscribe(() => {\n this.notesService.refresh();\n this.notesService.hideModal();\n });\n }\n\n public editNoteEvent(content): void {\n this.notesService.updateNote(content.data.customData.id, content.formData).subscribe(() => {\n this.notesService.refresh();\n this.notesService.hideModal();\n this.toastrService.success(this.translateService.instant('dossier.notes.editedMessage'));\n });\n }\n\n public editNote(data): void {\n this.customData$.next(data);\n this.notesService.setModalType('modify');\n this.notesService.showModal();\n }\n\n public deleteNote(data): void {\n this.promptService.openPrompt({\n headerText: this.translateService.instant('dossier.notes.deleteConfirmation.title'),\n bodyText: this.translateService.instant('dossier.notes.deleteConfirmation.description'),\n cancelButtonText: this.translateService.instant('dossier.deleteConfirmation.cancel'),\n confirmButtonText: this.translateService.instant('dossier.deleteConfirmation.delete'),\n cancelMdiIcon: 'cancel',\n confirmMdiIcon: 'delete',\n cancelButtonType: 'secondary',\n confirmButtonType: 'primary',\n closeOnConfirm: true,\n closeOnCancel: true,\n confirmCallBackFunction: () => {\n this.notesService.deleteNote(data.customData.id).subscribe(() => {\n this.notesService.refresh();\n this.toastrService.success(\n this.translateService.instant('dossier.notes.deleteConfirmation.deletedMessage')\n );\n });\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n canAdd: canAdd$ | async,\n notes: notes$ | async,\n pagination: pagination$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <div class=\"cds--toolbar-content\">\n <button\n cdsButton=\"primary\"\n *ngIf=\"obs.canAdd\"\n [disabled]=\"obs.loading\"\n (click)=\"showAddModal()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n >\n {{ 'dossier.notes.addNote' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n\n <div *ngIf=\"timelineItems\">\n <valtimo-timeline\n *ngIf=\"timelineItems.length > 0\"\n [actions]=\"actions\"\n [items]=\"timelineItems\"\n ></valtimo-timeline>\n\n <valtimo-no-results\n *ngIf=\"timelineItems.length === 0\"\n [description]=\"'dossier.notes.noResults.description' | translate\"\n [title]=\"'dossier.notes.noResults.title' | translate\"\n illustration=\"valtimo-layout/img/emptystate-no-result.svg\"\n ></valtimo-no-results>\n </div>\n\n <valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n >\n </valtimo-spinner>\n\n <div *ngIf=\"obs.pagination\" class=\"d-flex justify-content-end row mr-0 ml-0\">\n <ngb-pagination\n *ngIf=\"obs.pagination.collectionSize > obs.pagination.size\"\n [collectionSize]=\"obs.pagination.collectionSize\"\n [maxSize]=\"obs.pagination.size\"\n [pageSize]=\"obs.pagination.size\"\n [rotate]=\"true\"\n [(page)]=\"obs.pagination.page\"\n (pageChange)=\"paginationClicked($event)\"\n ></ngb-pagination>\n </div>\n</ng-container>\n\n<valtimo-note-modal\n [customData]=\"customData$ | async\"\n (createNoteEvent)=\"createNewNote($event)\"\n (editNoteEvent)=\"editNoteEvent($event)\"\n></valtimo-note-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DossierDetailTabSummaryComponent} from '../components/dossier-detail/tab/summary/summary.component';\nimport {DossierDetailTabProgressComponent} from '../components/dossier-detail/tab/progress/progress.component';\nimport {DossierDetailTabAuditComponent} from '../components/dossier-detail/tab/audit/audit.component';\nimport {DossierDetailTabDocumentsComponent} from '../components/dossier-detail/tab/documents/documents.component';\nimport {DefaultTabComponents, DefaultTabs} from '../models';\nimport {DossierDetailTabNotesComponent} from '../components/dossier-detail/tab/notes/notes.component';\n\nconst TAB_MAP = new InjectionToken<Map<string, object>>('TabMap');\n\nconst DEFAULT_TABS = new Map<string, object>([\n [DefaultTabs.summary, DossierDetailTabSummaryComponent],\n [DefaultTabs.progress, DossierDetailTabProgressComponent],\n [DefaultTabs.audit, DossierDetailTabAuditComponent],\n [DefaultTabs.documents, DossierDetailTabDocumentsComponent],\n]);\n\nconst DEFAULT_TAB_COMPONENTS: DefaultTabComponents = {\n [DefaultTabs.summary]: DossierDetailTabSummaryComponent,\n [DefaultTabs.progress]: DossierDetailTabProgressComponent,\n [DefaultTabs.audit]: DossierDetailTabAuditComponent,\n [DefaultTabs.documents]: DossierDetailTabDocumentsComponent,\n [DefaultTabs.notes]: DossierDetailTabNotesComponent,\n};\n\nexport {TAB_MAP, DEFAULT_TABS, DEFAULT_TAB_COMPONENTS};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {CaseTabConfig} from '../models';\n\nconst CASE_TAB_TOKEN = new InjectionToken<CaseTabConfig>(\n 'Specify a component to display per configured tab key.'\n);\n\nexport {CASE_TAB_TOKEN};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DossierListTab} from '@valtimo/config';\nimport {CarbonListNoResultsMessage, CarbonListTranslations} from '@valtimo/components';\n\nconst DEFAULT_DOSSIER_LIST_TABS: DossierListTab[] = [\n DossierListTab.ALL,\n DossierListTab.MINE,\n DossierListTab.OPEN,\n];\n\nconst DOSSIER_LIST_TABLE_TRANSLATIONS: CarbonListTranslations = {\n select: {\n single: 'dossier.select.single',\n multiple: 'dossier.select.multiple',\n },\n pagination: {\n itemsPerPage: 'dossier.pagination.itemsPerPage',\n totalItem: 'dossier.pagination.totalItem',\n totalItems: 'dossier.pagination.totalItems',\n },\n};\n\nconst DOSSIER_LIST_NO_RESULTS_MESSAGE: CarbonListNoResultsMessage = {\n description: 'dossier.noResults.ALL.description',\n isSearchResult: false,\n title: 'dossier.noResults.ALL.title',\n};\n\nexport {\n DEFAULT_DOSSIER_LIST_TABS,\n DOSSIER_LIST_TABLE_TRANSLATIONS,\n DOSSIER_LIST_NO_RESULTS_MESSAGE,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CASES_WITHOUT_STATUS_KEY} from '@valtimo/components';\nimport {InternalCaseStatus} from '@valtimo/document';\nimport {TagColor} from '@valtimo/config';\n\nconst CASE_WITHOUT_STATUS_STATUS: InternalCaseStatus = {\n key: CASES_WITHOUT_STATUS_KEY,\n documentDefinitionName: '',\n title: '',\n color: TagColor.Gray,\n visibleInCaseListByDefault: false,\n};\n\nexport {CASES_WITHOUT_STATUS_KEY, CASE_WITHOUT_STATUS_STATUS};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WIDGET_WIDTH_1X = 320;\nconst WIDGET_HEIGHT_1X = 200;\n\nexport {WIDGET_WIDTH_1X, WIDGET_HEIGHT_1X};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {CustomCaseWidgetConfig} from '../models';\n\nconst CUSTOM_CASE_WIDGET_TOKEN = new InjectionToken<CustomCaseWidgetConfig>(\n 'Specify a component to display per configured custom case widget component key.'\n);\n\nexport {CUSTOM_CASE_WIDGET_TOKEN};\n","import {FormDisplayType, FormSize} from '@valtimo/process-link';\nimport {RightPanelMinWidths} from '../models';\n\nconst DOSSIER_DETAIL_GUTTER_SIZE = 32;\n\nconst DOSSIER_DETAIL_TASK_LIST_WIDTH = 412;\n\nconst DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH = 320;\n\nconst DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS: RightPanelMinWidths = {\n extraSmall: 240,\n small: 320,\n medium: 480,\n large: 640,\n};\n\nconst DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE: FormDisplayType = 'modal';\nconst DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE: FormSize = 'medium';\n\nconst DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH = {\n small: 250,\n medium: 350,\n large: 450,\n};\n\nexport {\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH,\n DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n DOSSIER_DETAIL_TASK_LIST_WIDTH,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n};\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab';\nexport * from './case-tab-token';\nexport * from './dossier-list.constants';\nexport * from './case-status.constants';\nexport * from './case-widget.constants';\nexport * from './custom-case-widget-token';\nexport * from './dossier-detail-layout.constants';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {DossierTabService} from '../../../../services';\nimport {ActivatedRoute} from '@angular/router';\nimport {FormService} from '@valtimo/form';\nimport {BehaviorSubject, combineLatest, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormioForm} from '@formio/angular';\nimport {catchError} from 'rxjs/operators';\n\n@Component({\n templateUrl: './formio.component.html',\n styleUrls: ['./formio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierDetailTabFormioComponent {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly formNotFound$ = new BehaviorSubject<string>('');\n public readonly noFormSpecified$ = new BehaviorSubject<boolean>(false);\n private _formDefinitionName!: string;\n public readonly prefilledForm$: Observable<FormioForm | null> = combineLatest([\n this.tabService.tabs$,\n this.route.params,\n ]).pipe(\n switchMap(([tabs, params]) => {\n const currentTabName = params?.tab;\n const documentId = params?.documentId;\n const currentTab = tabs.find(tab => tab.name === currentTabName);\n\n if (!documentId || !currentTab?.contentKey) {\n this.noFormSpecified$.next(true);\n return of(null);\n }\n\n this._formDefinitionName = currentTab.contentKey;\n return this.formService.getFormDefinitionByNamePreFilled(currentTab.contentKey, documentId);\n }),\n tap(() => this.loading$.next(false)),\n catchError(() => {\n this.formNotFound$.next(this._formDefinitionName);\n this.loading$.next(false);\n return of(null);\n })\n );\n\n constructor(\n private readonly tabService: DossierTabService,\n private readonly route: ActivatedRoute,\n private readonly formService: FormService\n ) {}\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n prefilledForm: prefilledForm$ | async,\n loading: loading$ | async,\n formNotFound: formNotFound$ | async,\n noFormSpecified: noFormSpecified$ | async,\n } as obs\"\n>\n <div *ngIf=\"obs.loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <p *ngIf=\"obs.formNotFound\" class=\"error-message\">\n {{ 'dossier.formio.formNotFound' | translate: {formDefinitionName: obs.formNotFound} }}\n </p>\n\n <p *ngIf=\"obs.noFormSpecified\" class=\"error-message\">\n {{ 'dossier.formio.noFormSpecified' | translate }}\n </p>\n\n <valtimo-form-io *ngIf=\"obs.prefilledForm\" [form]=\"obs.prefilledForm\"> </valtimo-form-io>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum PERMISSION_ACTION {\n create = 'create',\n}\n\nenum WIDGET_PERMISSION_RESOURCE {\n camundaExecution = 'com.ritense.valtimo.camunda.domain.CamundaExecution',\n camundaProcessDefinition = 'com.ritense.valtimo.camunda.domain.CamundaProcessDefinition',\n}\n\nconst CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION: PermissionRequest = {\n action: PERMISSION_ACTION.create,\n resource: WIDGET_PERMISSION_RESOURCE.camundaExecution,\n};\n\nexport {CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, WIDGET_PERMISSION_RESOURCE};\n","import {Component} from '@angular/core';\nimport {BasicCaseWidget} from '../../../../../../models';\nimport {BehaviorSubject, Observable, switchMap, tap} from 'rxjs';\nimport {PermissionResponse, PermissionService} from '@valtimo/access-control';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {\n CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION,\n WIDGET_PERMISSION_RESOURCE,\n} from '../../widgets.permissions';\n\nexport class WidgetProcess {\n private readonly _baseWidgetConfiguration$ = new BehaviorSubject<BasicCaseWidget | null>(null);\n protected set baseWidgetConfiguration(value: BasicCaseWidget) {\n this._baseWidgetConfiguration$.next(value);\n }\n\n public readonly canCreateCamundaExecution$: Observable<boolean> =\n this._baseWidgetConfiguration$.pipe(\n switchMap((widgetConfiguration: BasicCaseWidget | null) =>\n this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(\n widgetConfiguration?.actions?.[0].processDefinitionKey ?? ''\n )\n ),\n switchMap((processDefintions: ProcessDocumentDefinition[]) =>\n this.permissionService.requestPermission(CAN_CREATE_CAMUNDA_EXECUTION_PERMISSION, {\n resource: WIDGET_PERMISSION_RESOURCE.camundaProcessDefinition,\n identifier: processDefintions[0].latestVersionId,\n })\n )\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {}\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {BehaviorSubject, Observable, distinctUntilChanged, filter, switchMap} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetsService {\n private readonly _activeProcessKey$ = new BehaviorSubject<string | null>(null);\n public readonly startProcessEvent = new EventEmitter();\n\n public get activeProcess$(): Observable<ProcessDocumentDefinition[]> {\n return this._activeProcessKey$.pipe(\n filter((processDocumentDefinition: string | null) => !!processDocumentDefinition),\n switchMap((processDefinitionKey: string) =>\n this.documentService.findProcessDocumentDefinitionsByProcessDefinitionKey(\n processDefinitionKey\n )\n ),\n distinctUntilChanged()\n );\n }\n\n constructor(private readonly documentService: DocumentService) {}\n\n public startProcess(processDocumentDefinitionKey: string): void {\n this._activeProcessKey$.next(processDocumentDefinitionKey);\n this.startProcessEvent.emit();\n }\n\n public finishProcess(): void {\n this._activeProcessKey$.next(null);\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n OnDestroy,\n Optional,\n signal,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CaseWidgetAction, CustomCaseWidget, CustomCaseWidgetConfig} from '../../../../../../models';\nimport {CUSTOM_CASE_WIDGET_TOKEN} from '../../../../../../constants';\nimport {BehaviorSubject, combineLatest, filter, Observable, Subscription} from 'rxjs';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\nimport {ButtonModule} from 'carbon-components-angular';\n\n@Component({\n selector: 'valtimo-widget-custom',\n templateUrl: './widget-custom.component.html',\n styleUrls: ['./widget-custom.component.scss'],\n standalone: true,\n imports: [CommonModule, CarbonListModule, TranslateModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetCustomComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @ViewChild('customWidgetContainer', {read: ViewContainerRef})\n private readonly _customWidgetContainerRef: ViewContainerRef;\n\n @Input() public set widgetConfig(value: CustomCaseWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this._widgetConfigSubject$.next(value);\n }\n\n private readonly _customCaseWidgetConfig$ = new BehaviorSubject<CustomCaseWidgetConfig | {}>({});\n\n private readonly _widgetConfigSubject$ = new BehaviorSubject<CustomCaseWidget | null>(null);\n\n public get widgetConfig$(): Observable<CustomCaseWidget> {\n return this._widgetConfigSubject$.pipe(filter(config => config !== null));\n }\n\n public readonly noCustomComponentAvailable = signal(false);\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n @Optional()\n @Inject(CUSTOM_CASE_WIDGET_TOKEN)\n private readonly customCaseWidgetConfig: CustomCaseWidgetConfig,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetsService: WidgetsService,\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService\n ) {\n super(documentService, permissionService);\n if (customCaseWidgetConfig) this._customCaseWidgetConfig$.next(customCaseWidgetConfig);\n }\n\n public ngAfterViewInit(): void {\n this.openCustomWidgetSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private openCustomWidgetSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.widgetConfig$, this._customCaseWidgetConfig$]).subscribe(\n ([widgetConfig, customCaseWidgetConfig]) => {\n const customWidgetComponentKey = widgetConfig?.properties?.componentKey;\n const customComponent = customCaseWidgetConfig[customWidgetComponentKey];\n\n if (!customComponent) {\n this.noCustomComponentAvailable.set(true);\n return;\n }\n\n const componentRef = this._customWidgetContainerRef.createComponent(customComponent);\n\n componentRef.changeDetectorRef.detectChanges();\n this.cdr.detectChanges();\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"{widgetConfig: widgetConfig$ | async} as obs\" class=\"custom-widget\">\n <section class=\"custom-widget__header\">\n <h4 class=\"custom-widget__title\">{{ obs.widgetConfig$?.title || '-' }}</h4>\n\n @if (obs.widgetConfig?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfig?.actions[0])\"\n >\n {{ obs.widgetConfig?.actions[0].name }}\n </button>\n }\n </section>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, EllipsisPipe, ViewContentService, ViewType} from '@valtimo/components';\nimport {ButtonModule, InputModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, tap} from 'rxjs';\nimport {\n CaseWidgetAction,\n CaseWidgetTextDisplayType,\n FieldsCaseWidget,\n} from '../../../../../../models';\nimport {WidgetsService} from '../../widgets.service';\nimport {PermissionService} from '@valtimo/access-control';\nimport {ActivatedRoute} from '@angular/router';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\n\n@Component({\n selector: 'valtimo-widget-field',\n templateUrl: './widget-field.component.html',\n styleUrls: ['./widget-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n TranslateModule,\n CarbonListModule,\n EllipsisPipe,\n ButtonModule,\n ],\n})\nexport class WidgetFieldComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'widget-field';\n\n @ViewChild('widgetField') private _widgetFieldRef: ElementRef<HTMLDivElement>;\n\n @Input() collapseVertically = false;\n @Input() public set widgetConfiguration(value: FieldsCaseWidget) {\n if (!value) return;\n this.widgetConfiguration$.next(value);\n this.baseWidgetConfiguration = value;\n }\n public readonly isEmptyWidgetData$ = new BehaviorSubject<boolean>(false);\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n\n @Input() public set widgetData(value: object) {\n if (!value) return;\n this.widgetData$.next(value);\n this.isEmptyWidgetData$.next(this.checkEmptyWidgetData(value));\n }\n\n public readonly renderVertically = signal(0);\n public readonly widgetConfiguration$ = new BehaviorSubject<FieldsCaseWidget | null>(null);\n public readonly widgetData$ = new BehaviorSubject<object | null>(null);\n\n public readonly widgetPropertyValue$: Observable<\n {\n title: string;\n value: string;\n ellipsisCharacterLimit: number | null;\n hideWhenEmpty: boolean | false;\n }[][]\n > = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(\n map(([widget, widgetData]) =>\n widget?.properties.columns.map(column =>\n column.reduce(\n (columnFields, property) => [\n ...columnFields,\n ...(widgetData?.hasOwnProperty(property.key)\n ? [\n {\n title: property.title,\n ellipsisCharacterLimit:\n (property.displayProperties as CaseWidgetTextDisplayType)\n ?.ellipsisCharacterLimit ?? null,\n hideWhenEmpty:\n (property.displayProperties as CaseWidgetTextDisplayType)?.hideWhenEmpty ??\n false,\n value: this.viewContentService.get(widgetData[property.key], {\n ...property.displayProperties,\n viewType: property.displayProperties?.type ?? ViewType.TEXT,\n }),\n },\n ]\n : []),\n ],\n []\n )\n )\n ),\n tap(columns => this.checkEmptyFields(columns))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly route: ActivatedRoute,\n private readonly viewContentService: ViewContentService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public ngAfterViewInit(): void {\n if (this.collapseVertically && this._widgetFieldRef) this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetFieldRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.renderVertically.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.renderVertically.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.renderVertically.set(3);\n } else if (elementWidth > 1080) {\n this.renderVertically.set(4);\n }\n }\n }\n\n private checkEmptyWidgetData(widgetData: Object): boolean {\n return widgetData && Object.keys(widgetData).length === 0;\n }\n\n private checkEmptyFields(columns: any[][]): void {\n columns.forEach(column => {\n column.forEach(field => {\n if (!field?.hideWhenEmpty || (field?.hideWhenEmpty && field?.value && field?.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"widget-field__header\">\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n @if (obs.widgetConfiguration.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration.actions[0])\"\n >\n {{ obs.widgetConfiguration.actions[0].name }}\n </button>\n }\n </section>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4,\n }\"\n >\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\">\n @for (property of column; track property) {\n <div\n *ngIf=\"\n (property?.value !== null &&\n property?.value !== '-' &&\n property?.hideWhenEmpty) ||\n !property?.hideWhenEmpty\n \"\n class=\"widget-field__field\"\n >\n <label class=\"widget-field__field-label\" [attr.title]=\"property?.title\">\n {{ property?.title }}</label\n >\n\n <div [attr.title]=\"property?.value\" class=\"widget-field__field-value\">\n {{ property?.value | valtimoEllipsis: property?.ellipsisCharacterLimit }}\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CaseWidgetAction, FormioCaseWidgetWidgetWithUuid} from '../../../../../../models';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {FormService} from '@valtimo/form';\nimport {DossierWidgetsLayoutService} from '../../../../../../services';\nimport {FormioForm} from '@formio/angular';\nimport {FormIoModule} from '@valtimo/components';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService} from '@valtimo/document';\nimport {ButtonModule} from 'carbon-components-angular';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-formio',\n templateUrl: './widget-formio.component.html',\n styleUrls: ['./widget-formio.component.scss'],\n standalone: true,\n imports: [CommonModule, TranslateModule, FormIoModule, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetFormioComponent extends WidgetProcess {\n @Input() public set documentId(value: string) {\n if (value) this._documentIdSubject$.next(value);\n }\n @Input() public set widgetConfiguration(value: FormioCaseWidgetWidgetWithUuid) {\n if (!value) return;\n this.layoutService.setWidgetWithExternalData(value.uuid);\n this.baseWidgetConfiguration = value;\n this._widgetConfigurationSubject$.next(value);\n }\n\n private readonly _widgetConfigurationSubject$ =\n new BehaviorSubject<FormioCaseWidgetWidgetWithUuid | null>(null);\n public get widgetConfiguration$(): Observable<FormioCaseWidgetWidgetWithUuid> {\n return this._widgetConfigurationSubject$.pipe(filter(config => !!config));\n }\n\n private readonly _documentIdSubject$ = new BehaviorSubject<string>('');\n private get _documentId$(): Observable<string> {\n return this._documentIdSubject$.pipe(filter(id => !!id));\n }\n\n public readonly prefilledFormDefinition$: Observable<FormioForm> = combineLatest([\n this.widgetConfiguration$,\n this._documentId$,\n ]).pipe(\n switchMap(([config, documentId]) =>\n combineLatest([\n this.formService.getFormDefinitionByNamePreFilled(\n config.properties.formDefinitionName,\n documentId\n ),\n of(config),\n ])\n ),\n tap(([_, config]) => this.layoutService.setWidgetWithExternalDataReady(config.uuid)),\n map(([formDef]) => formDef)\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly formService: FormService,\n private readonly layoutService: DossierWidgetsLayoutService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"formio-widget\"\n *ngIf=\"{\n prefilledFormDefinition: prefilledFormDefinition$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n } as obs\"\n>\n <section class=\"formio-widget__header\">\n <h4 class=\"formio-widget__title\">{{ obs.widgetConfiguration$?.title || '-' }}</h4>\n\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n <valtimo-form-io [form]=\"obs.prefilledFormDefinition\"></valtimo-form-io>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListItem, CarbonListModule, ColumnConfig, ViewType} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport {\n ButtonModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {CaseWidgetAction, FieldsCaseWidgetValue, TableCaseWidget} from '../../../../../../models';\nimport {DossierWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-table',\n templateUrl: './widget-table.component.html',\n styleUrls: ['./widget-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n CarbonListModule,\n PaginationModule,\n TilesModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetTableComponent extends WidgetProcess {\n @Input({required: true}) public documentId: string;\n @Input({required: true}) public tabKey: string;\n\n private _widgetConfiguration: TableCaseWidget;\n @Input({required: true}) public set widgetConfiguration(value: TableCaseWidget) {\n this._widgetConfiguration = value;\n this.baseWidgetConfiguration = value;\n this.fields$.next(\n value.properties.columns.map((column: FieldsCaseWidgetValue, index: number) => ({\n key: column.key,\n label: column.title,\n viewType: column.displayProperties?.type ?? ViewType.TEXT,\n className: `valtimo-widget-table--transparent ${index === 0 && value.properties.firstColumnAsTitle ? 'valtimo-widget-table--title' : ''}`,\n ...(!!column.displayProperties?.['format'] && {\n format: column.displayProperties['format'],\n }),\n ...(!!column.displayProperties?.['digitsInfo'] && {\n digitsInfo: column.displayProperties['digitsInfo'],\n }),\n ...(!!column.displayProperties?.['display'] && {\n display: column.displayProperties['display'],\n }),\n ...(!!column.displayProperties?.['currencyCode'] && {\n currencyCode: column.displayProperties['currencyCode'],\n }),\n ...(!!column.displayProperties?.['values'] && {\n values: column.displayProperties['values'],\n }),\n }))\n );\n this.cdr.detectChanges();\n }\n public get widgetConfiguration(): TableCaseWidget {\n return this._widgetConfiguration;\n }\n\n private readonly _initialNumberOfElementsSubject$ = new BehaviorSubject<number>(null);\n\n private get _initialNumberOfElements$(): Observable<number> {\n return this._initialNumberOfElementsSubject$.pipe(\n filter(numberOfElements => numberOfElements !== null)\n );\n }\n\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private _widgetData$ = new BehaviorSubject<CarbonListItem[] | null>(null);\n @Input({required: true}) set widgetData(value: Page<CarbonListItem> | null) {\n if (!value) return;\n\n this.showPagination$.next(value.totalElements > value.size);\n this._initialNumberOfElementsSubject$.next(value.numberOfElements);\n this._widgetData$.next(value.content);\n\n this.paginationModel.set(\n value.totalPages < 2\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n this.cdr.detectChanges();\n }\n\n public readonly fields$ = new BehaviorSubject<ColumnConfig[]>([]);\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n\n public readonly widgetData$ = combineLatest([\n this._widgetData$,\n this._queryParams$,\n this._initialNumberOfElements$,\n ]).pipe(\n switchMap(([data, queryParams, initialNumberOfElements]) =>\n combineLatest([\n !queryParams\n ? of(data)\n : this.dossierWidgetsApiService\n .getWidgetData(\n this.documentId,\n this.tabKey,\n this.widgetConfiguration.key,\n queryParams\n )\n .pipe(map((res: Page<CarbonListItem>) => res.content)),\n of(initialNumberOfElements),\n ])\n ),\n filter(([items]) => !!items),\n map(([items, initialNumberOfElements]) => {\n if (items.length === initialNumberOfElements) {\n return items;\n }\n\n const rows = new Array<number>(initialNumberOfElements).fill(null);\n\n return rows.map((_, index) => items[index] || {});\n })\n );\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly dossierWidgetsApiService: DossierWidgetsApiService,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public onSelectPage(page: number): void {\n this._queryParams$.next(`page=${page - 1}&size=${this.paginationModel().pageLength}`);\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: page,\n }));\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tile\n *ngIf=\"{\n fields: fields$ | async,\n widgetData: widgetData$ | async,\n } as obs\"\n class=\"valtimo-widget-table\"\n>\n <section class=\"valtimo-widget-table__header\">\n <span class=\"widget-title\">{{ widgetConfiguration?.title }}</span>\n\n @if (widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(widgetConfiguration?.actions[0])\"\n >\n {{ widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n @if (obs.widgetData && obs.fields && obs.widgetData.length) {\n <section class=\"valtimo-widget-table__content\">\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"obs.fields\"\n [items]=\"obs.widgetData\"\n >\n </valtimo-carbon-list>\n\n <cds-pagination-nav\n *ngIf=\"paginationModel()\"\n class=\"valtimo-widget-table__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n </section>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n</cds-tile>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n signal,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n InputModule,\n PaginationModel,\n PaginationModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {\n CaseWidgetAction,\n CaseWidgetDisplayTypeKey,\n CollectionCaseWidget,\n CollectionCaseWidgetCardData,\n CollectionCaseWidgetField,\n CollectionCaseWidgetTitle,\n CollectionWidgetResolvedField,\n} from '../../../../../../models';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, switchMap, tap} from 'rxjs';\nimport {CarbonListModule, ViewContentService} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Page} from '@valtimo/config';\nimport {DossierWidgetsApiService} from '../../../../../../services';\nimport {WidgetProcess} from '../widget-process/widget-process';\nimport {DocumentService} from '@valtimo/document';\nimport {PermissionService} from '@valtimo/access-control';\nimport {WidgetsService} from '../../widgets.service';\n\n@Component({\n selector: 'valtimo-widget-collection',\n templateUrl: './widget-collection.component.html',\n styleUrls: ['./widget-collection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n InputModule,\n PaginationModule,\n TilesModule,\n CarbonListModule,\n TranslateModule,\n ButtonModule,\n ],\n})\nexport class WidgetCollectionComponent extends WidgetProcess implements AfterViewInit, OnDestroy {\n @HostBinding('class') public readonly class = 'valtimo-widget-collection';\n @ViewChild('widgetCollection') private _widgetCollectionRef: ElementRef<HTMLDivElement>;\n\n @Input({required: true}) public documentId: string;\n @Input({required: true}) public tabKey: string;\n @Input() public set widgetConfiguration(value: CollectionCaseWidget) {\n if (!value) return;\n this.baseWidgetConfiguration = value;\n this.widgetConfiguration$.next(value);\n }\n public readonly showPagination$ = new BehaviorSubject<boolean>(false);\n\n private readonly _initialNumberOfElementsSubject$ = new BehaviorSubject<number>(null);\n\n private get _initialNumberOfElements$(): Observable<number> {\n return this._initialNumberOfElementsSubject$.pipe(\n filter(numberOfElements => numberOfElements !== null)\n );\n }\n\n @Input() public set widgetData(value: Page<CollectionCaseWidgetCardData> | null) {\n if (!value) return;\n\n this.showPagination$.next(value.totalElements > value.size);\n this._initialNumberOfElementsSubject$.next(value.numberOfElements);\n this._widgetDataSubject$.next(value.content);\n\n this.paginationModel.set(\n value.totalPages < 0\n ? null\n : {\n currentPage: 1,\n totalDataLength: Math.ceil(value.totalElements / value.size),\n pageLength: value.size,\n }\n );\n this.cdr.detectChanges();\n }\n\n public readonly noVisibleFields$ = new BehaviorSubject<boolean>(true);\n public readonly widgetTitle = signal('-');\n\n public readonly widgetConfiguration$ = new BehaviorSubject<CollectionCaseWidget | null>(null);\n public readonly paginationModel = signal<PaginationModel>(new PaginationModel());\n public readonly amountOfColumns = signal(0);\n\n private readonly _widgetDataSubject$ = new BehaviorSubject<CollectionCaseWidgetCardData[]>(null);\n\n private readonly _queryParams$ = new BehaviorSubject<string | null>(null);\n\n private readonly _widgetData$: Observable<CollectionCaseWidgetCardData[]> = combineLatest([\n this._widgetDataSubject$,\n this._queryParams$,\n this._initialNumberOfElements$,\n this.widgetConfiguration$,\n ]).pipe(\n switchMap(([data, queryParams, initialNumberOfElements, widgetConfiguration]) =>\n combineLatest([\n !queryParams\n ? of(data)\n : this.widgetApiService\n .getWidgetData(this.documentId, this.tabKey, widgetConfiguration.key, queryParams)\n .pipe(map((res: Page<CollectionCaseWidgetCardData>) => res.content)),\n of(initialNumberOfElements),\n ])\n ),\n filter(([items]) => !!items),\n map(([items, initialNumberOfElements]) => {\n if (items.length === initialNumberOfElements) {\n return items;\n }\n\n const rows = new Array<number>(initialNumberOfElements).fill(null);\n\n return rows.map((_, index) => items[index] || {...items[0], hidden: true});\n })\n );\n\n public readonly collectionWidgetCards$: Observable<\n {title: string; fields: CollectionWidgetResolvedField[]; key: number; hidden: boolean}[]\n > = combineLatest([this.widgetConfiguration$, this._widgetData$]).pipe(\n filter(([widgetConfig, widgetData]) => !!widgetConfig && !!widgetData),\n tap(([widgetConfig]) => {\n this.widgetTitle.set(widgetConfig.title);\n }),\n map(([widgetConfig, widgetData]) =>\n widgetData.map((cardData, index) => ({\n hidden: cardData.hidden,\n key: index,\n title: this.getCardTitle({\n value: cardData.title,\n displayProperties: widgetConfig?.properties?.title?.displayProperties,\n }),\n fields: widgetConfig?.properties.fields.reduce(\n (cardFieldsAccumulator, currentField) => [\n ...cardFieldsAccumulator,\n this.getCardField(currentField, cardData),\n ],\n []\n ),\n }))\n ),\n tap(card => this.checkEmptyFields(card))\n );\n\n private _observer!: ResizeObserver;\n\n constructor(\n protected readonly documentService: DocumentService,\n protected readonly permissionService: PermissionService,\n private readonly viewContentService: ViewContentService,\n private readonly cdr: ChangeDetectorRef,\n private readonly widgetApiService: DossierWidgetsApiService,\n private readonly widgetsService: WidgetsService\n ) {\n super(documentService, permissionService);\n }\n\n public ngAfterViewInit(): void {\n this.openWidthObserver();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n public onSelectPage(page: number): void {\n this._queryParams$.next(`page=${page - 1}&size=${this.paginationModel().pageLength}`);\n this.paginationModel.update((model: PaginationModel) => ({\n ...model,\n currentPage: page,\n }));\n }\n\n public onProcessStartClick(process: CaseWidgetAction): void {\n this.widgetsService.startProcess(process.processDefinitionKey);\n }\n\n private getCardField(\n field: CollectionCaseWidgetField,\n data: CollectionCaseWidgetCardData\n ): CollectionWidgetResolvedField {\n const resolvedValue = this.viewContentService.get(data.fields[field.key], {\n ...field.displayProperties,\n viewType: field.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,\n });\n\n return {\n key: field.key,\n title: field.title,\n width: field.width,\n value: resolvedValue || data.fields[field.key],\n hideWhenEmpty: field.displayProperties?.hideWhenEmpty,\n };\n }\n\n private openWidthObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetCollectionRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n if (elementWidth < 640) {\n this.amountOfColumns.set(1);\n } else if (elementWidth > 640 && elementWidth <= 768) {\n this.amountOfColumns.set(2);\n } else if (elementWidth > 768 && elementWidth <= 1080) {\n this.amountOfColumns.set(3);\n } else if (elementWidth > 1080) {\n this.amountOfColumns.set(4);\n }\n }\n }\n\n private getCardTitle(collectionCaseWidgetTitle: CollectionCaseWidgetTitle): string {\n const widgetTitleValue = collectionCaseWidgetTitle.value;\n const widgetTitleDisplayProperties = collectionCaseWidgetTitle.displayProperties;\n\n if (!widgetTitleDisplayProperties && widgetTitleValue) {\n return widgetTitleValue;\n } else if (widgetTitleDisplayProperties && widgetTitleValue) {\n const convertedTitle = this.viewContentService.get(widgetTitleValue, {\n ...widgetTitleDisplayProperties,\n viewType: widgetTitleDisplayProperties.type,\n hideWhenEmpty: widgetTitleDisplayProperties.hideWhenEmpty,\n });\n\n if (convertedTitle) return convertedTitle;\n }\n\n return '-';\n }\n\n private checkEmptyFields(card): void {\n card.forEach(collection => {\n collection.fields.forEach(field => {\n if (!field.hideWhenEmpty || (field.hideWhenEmpty && field.value && field.value !== '-'))\n this.noVisibleFields$.next(false);\n });\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async,\n noVisibleFields: noVisibleFields$ | async,\n } as obs\"\n>\n <section class=\"valtimo-widget-collection__header\">\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n @if (obs.widgetConfiguration?.actions?.length === 1) {\n <button\n *ngIf=\"canCreateCamundaExecution$ | async\"\n cdsButton=\"ghost\"\n (click)=\"onProcessStartClick(obs.widgetConfiguration?.actions[0])\"\n >\n {{ obs.widgetConfiguration?.actions[0].name }}\n </button>\n }\n </section>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4,\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n *ngIf=\"!obs.noVisibleFields\"\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n *ngIf=\"\n (field?.value !== null && field?.value !== '-' && field?.hideWhenEmpty) ||\n !field?.hideWhenEmpty\n \"\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half',\n }\"\n >\n <cds-label class=\"valtimo-widget-collection__label\" [attr.title]=\"field?.title\">\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (obs.noVisibleFields) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.emptyFields' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n @if (!obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_THEME,\n CarbonListModule,\n CdsThemeService,\n CurrentCarbonTheme,\n} from '@valtimo/components';\nimport {LoadingModule, TilesModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport {CaseWidgetType, CaseWidgetWithUuid, WidgetTableContent} from '../../../../../../models';\nimport {\n DossierTabService,\n DossierWidgetsApiService,\n DossierWidgetsLayoutService,\n} from '../../../../../../services';\nimport {WidgetCustomComponent} from '../custom/widget-custom.component';\nimport {WidgetFieldComponent} from '../field/widget-field.component';\nimport {WidgetFormioComponent} from '../formio/widget-formio.component';\nimport {WidgetTableComponent} from '../table/widget-table.component';\nimport {WidgetCollectionComponent} from '../collection/widget-collection.component';\nimport {WIDGET_HEIGHT_1X} from '../../../../../../constants';\n\n@Component({\n selector: 'valtimo-dossier-widget-block',\n templateUrl: './widget-block.component.html',\n styleUrls: ['./widget-block.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetTableComponent,\n WidgetCustomComponent,\n CarbonListModule,\n TranslateModule,\n TilesModule,\n WidgetFieldComponent,\n WidgetFormioComponent,\n WidgetCollectionComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetBlockComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetBlockContent') private _widgetBlockContentRef: ElementRef<HTMLDivElement>;\n\n @Input() public set widget(value: CaseWidgetWithUuid) {\n this._widgetUuid = value.uuid;\n this._widget$.next(value);\n }\n\n private readonly _widget$ = new BehaviorSubject<CaseWidgetWithUuid | null>(null);\n\n public get widget$(): Observable<CaseWidgetWithUuid> {\n return this._widget$.pipe(filter(widget => widget !== null));\n }\n\n private readonly _viewContainerRefSubject$ = new BehaviorSubject<ViewContainerRef | null>(null);\n\n private get _viewContainerRef$(): Observable<ViewContainerRef> {\n return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));\n }\n\n private readonly _contentHeight$ = new BehaviorSubject<number>(0);\n\n public readonly blockHeightPx$ = combineLatest([\n this._contentHeight$,\n this._viewContainerRef$,\n ]).pipe(\n filter(([contentHeight]) => contentHeight !== 0),\n tap(([contentHeight, viewRef]) => {\n const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly blockWidthPercentage$ = combineLatest([\n this.dossierWidgetsLayoutService.amountOfColumns$,\n this.widget$,\n this._viewContainerRef$,\n ]).pipe(\n tap(([amountOfColumns, widget, viewRef]) => {\n const percentage =\n widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;\n\n this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n })\n );\n\n public readonly CaseWidgetType = CaseWidgetType;\n\n public readonly documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly tabKey$: Observable<string> = this.dossierTabService.activeTabKey$;\n\n public readonly widgetData$: Observable<any[] | {} | null> = combineLatest([\n this.widget$,\n this.tabKey$,\n this.documentId$,\n ]).pipe(\n switchMap(([widget, tabkey, documentId]) =>\n // custom component and formio widgets do not fetch additional data\n widget.type === CaseWidgetType.CUSTOM || widget.type === CaseWidgetType.FORMIO\n ? of({})\n : this.widgetsApiService.getWidgetData(\n documentId,\n tabkey,\n widget.key,\n widget.type === CaseWidgetType.TABLE || widget.type === CaseWidgetType.COLLECTION\n ? this.getPageSizeParam(widget)\n : undefined\n )\n ),\n tap(() => {\n this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);\n }),\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404)\n this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);\n\n return of(null);\n })\n );\n\n public readonly theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(\n map(([currentTheme, widgetConfiguration]) => {\n return currentTheme === CurrentCarbonTheme.G10\n ? widgetConfiguration.highContrast\n ? CARBON_THEME.G100\n : CARBON_THEME.G10\n : widgetConfiguration.highContrast\n ? CARBON_THEME.WHITE\n : CARBON_THEME.G90;\n })\n );\n\n private readonly _subscriptions = new Subscription();\n\n private _observer!: ResizeObserver;\n\n private _widgetUuid!: string;\n\n constructor(\n private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService,\n private readonly dossierTabService: DossierTabService,\n private readonly route: ActivatedRoute,\n private readonly widgetsApiService: DossierWidgetsApiService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly renderer: Renderer2,\n private readonly viewRef: ViewContainerRef\n ) {}\n\n public ngAfterViewInit(): void {\n this._viewContainerRefSubject$.next(this.viewRef);\n this.openContentHeightObserver();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._observer?.disconnect();\n }\n\n private openContentHeightObserver(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetBlockContentRef.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;\n\n if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {\n this._contentHeight$.next(widgetContentHeight);\n }\n }\n\n private getPageSizeParam(widgetConfiguration: CaseWidgetWithUuid): string {\n return `size=${(widgetConfiguration.properties as WidgetTableContent).defaultPageSize}`;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async,\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CaseWidget, CaseWidgetWithUuid} from '../../../../../../models';\nimport {WidgetBlockComponent} from '../widget-block/widget-block.component';\nimport {DossierWidgetsLayoutService} from '../../../../../../services';\nimport {v4 as uuid} from 'uuid';\nimport {BehaviorSubject, delay, take} from 'rxjs';\nimport Muuri from 'muuri';\n\n@Component({\n selector: 'valtimo-dossier-widgets-container',\n templateUrl: './widgets-container.component.html',\n styleUrls: ['./widgets-container.component.scss'],\n standalone: true,\n imports: [CommonModule, WidgetBlockComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WidgetsContainerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('widgetsContainer') private _widgetsContainerRef: ElementRef<HTMLDivElement>;\n\n public readonly widgetsWithUuids$ = new BehaviorSubject<CaseWidgetWithUuid[]>([]);\n\n @Input() public set widgets(value: CaseWidget[]) {\n const widgetsWithUuids = value.map(widget => ({...widget, uuid: uuid()}));\n this.dossierWidgetsLayoutService.setWidgets(widgetsWithUuids);\n this.widgetsWithUuids$.next(widgetsWithUuids);\n }\n\n private _observer!: ResizeObserver;\n\n constructor(private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService) {}\n\n public ngAfterViewInit(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetsContainerRef.nativeElement);\n\n this.initMuuri();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof containerWidth === 'number' && containerWidth !== 0) {\n this.dossierWidgetsLayoutService.setContainerWidth(containerWidth);\n this.dossierWidgetsLayoutService.triggerMuuriLayout();\n }\n }\n\n private initMuuri(): void {\n this.dossierWidgetsLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {\n this.dossierWidgetsLayoutService.setMuuri(\n new Muuri(this._widgetsContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostBinding, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {LoadingModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, delay, filter, map, Observable, switchMap, tap} from 'rxjs';\nimport {\n DossierTabService,\n DossierWidgetsApiService,\n DossierWidgetsLayoutService,\n} from '../../../../services';\nimport {WidgetsContainerComponent} from './components/widgets-container/widgets-container.component';\n\n@Component({\n templateUrl: './widgets.component.html',\n styleUrls: ['./widgets.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n LoadingModule,\n WidgetsContainerComponent,\n CarbonListModule,\n TranslateModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierDetailWidgetsComponent implements OnInit, OnDestroy {\n @HostBinding('class.tab--no-margin') private readonly _noMargin = true;\n @HostBinding('class.tab--no-background') private readonly _noBackground = true;\n @HostBinding('class.tab--no-min-height') private readonly _noMinHeight = true;\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n private readonly _tabKey$: Observable<string> = this.dossierTabService.activeTabKey$;\n\n public readonly loadingWidgetConfiguration$ = new BehaviorSubject<boolean>(true);\n\n public readonly widgetConfiguration$ = combineLatest([this._documentId$, this._tabKey$]).pipe(\n switchMap(([documentId, tabKey]) =>\n this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey)\n ),\n tap(() => this.loadingWidgetConfiguration$.next(false))\n );\n\n public readonly loaded$ = this.dossierWidgetsLayoutService.loaded$.pipe(delay(400));\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly dossierTabService: DossierTabService,\n private readonly widgetsApiService: DossierWidgetsApiService,\n private readonly dossierWidgetsLayoutService: DossierWidgetsLayoutService\n ) {}\n\n public ngOnInit(): void {\n this.dossierTabService.disableTabHorizontalOverflow();\n }\n\n public ngOnDestroy(): void {\n this.dossierWidgetsLayoutService.reset();\n this.dossierTabService.enableTabHorizontalOverflow();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async,\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0,\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ApiTabItem} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierTabApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getDossierTabs(\n documentDefinitionName: string,\n documentId: string\n ): Observable<Array<ApiTabItem>> {\n return this.httpClient.get<Array<ApiTabItem>>(this.getApiUrl(`v1/document/${documentId}/tab`));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Inject, Injectable, OnDestroy, Optional, Signal, signal, Type} from '@angular/core';\nimport {\n ApiTabItem,\n ApiTabType,\n CaseTabConfig,\n DefaultTabs,\n TabImpl,\n TabLoaderImpl,\n} from '../models';\nimport {CASE_TAB_TOKEN, DEFAULT_TAB_COMPONENTS, DEFAULT_TABS, TAB_MAP} from '../constants';\nimport {ConfigService, ZGW_OBJECT_TYPE_COMPONENT_TOKEN} from '@valtimo/config';\nimport {ActivatedRoute} from '@angular/router';\nimport {DossierTabApiService} from './dossier-tab-api.service';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {DossierDetailTabFormioComponent} from '../components/dossier-detail/tab/formio/formio.component';\nimport {DossierDetailTabNotFoundComponent} from '../components/dossier-detail/tab/not-found/not-found.component';\nimport {DossierDetailWidgetsComponent} from '../components/dossier-detail/tab/widgets/widgets.component';\n\n@Injectable()\nexport class DossierTabService implements OnDestroy {\n private readonly _tabManagementEnabled!: boolean;\n private readonly _documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentDefinitionName),\n filter(documentDefinitionName => !!documentDefinitionName)\n );\n private readonly _documentId$: Observable<string> = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n private readonly _tabs$ = new BehaviorSubject<Array<TabImpl> | null>(null);\n private readonly _subscriptions = new Subscription();\n private readonly _tabLoader$ = new BehaviorSubject<TabLoaderImpl | null>(null);\n private readonly _tabHorizontalOverflowDisabled = signal(false);\n\n public get tabHorizontalOverflowDisabled(): Signal<boolean> {\n return this._tabHorizontalOverflowDisabled.asReadonly();\n }\n\n public get tabs$(): Observable<Array<TabImpl>> {\n return this._tabs$.pipe(filter(tabs => !!tabs));\n }\n\n public get activeTab$(): Observable<TabImpl> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$)\n );\n }\n\n public get activeTabKey$(): Observable<string> {\n return this.activeTab$.pipe(map(tab => tab.name));\n }\n\n public get showTaskList$(): Observable<boolean> {\n return this._tabLoader$.pipe(\n filter(tabLoader => !!tabLoader),\n switchMap(tabLoader => tabLoader.activeTab$),\n map(activeTab => !!activeTab?.showTasks || activeTab.contentKey === DefaultTabs.summary)\n );\n }\n\n constructor(\n @Inject(TAB_MAP) private readonly tabMap: Map<string, object> = DEFAULT_TABS,\n @Optional() @Inject(CASE_TAB_TOKEN) private readonly caseTabConfig: CaseTabConfig,\n @Optional()\n @Inject(ZGW_OBJECT_TYPE_COMPONENT_TOKEN)\n private readonly zgwObjectTypeComponent: Type<any>,\n private readonly configService: ConfigService,\n private readonly route: ActivatedRoute,\n private readonly dossierTabApiService: DossierTabApiService\n ) {\n this._tabManagementEnabled =\n this.configService.config.featureToggles?.enableTabManagement ?? true;\n this.openDocumentDefinitionNameSubscription();\n }\n\n public ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n\n public setTabLoader(tabLoader: TabLoaderImpl): void {\n this._tabLoader$.next(tabLoader);\n }\n\n public disableTabHorizontalOverflow(): void {\n this._tabHorizontalOverflowDisabled.set(true);\n }\n\n public enableTabHorizontalOverflow(): void {\n this._tabHorizontalOverflowDisabled.set(false);\n }\n\n private getConfigurableTabs(documentDefinitionName: string): Map<string, object> {\n const tabMap = new Map<string, object>();\n\n if (this.configService?.config?.caseObjectTypes) {\n const allNamesObjects = this.configService?.config?.caseObjectTypes[documentDefinitionName];\n\n allNamesObjects?.forEach(name => {\n tabMap.set(name, this.zgwObjectTypeComponent || DossierDetailTabNotFoundComponent);\n });\n }\n\n return tabMap;\n }\n\n private getAllEnvironmentTabs(extraTabs: Map<string, object>): Array<TabImpl> {\n let i = 0;\n const tabMap = extraTabs\n ? new Map([...Array.from(this.tabMap.entries()), ...Array.from(extraTabs.entries())])\n : this.tabMap;\n const tabs: Array<TabImpl> = [];\n\n tabMap.forEach((component, name) => {\n tabs.push(new TabImpl(name, i, component));\n i++;\n });\n\n return tabs;\n }\n\n private openDocumentDefinitionNameSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._documentDefinitionName$, this._documentId$]).subscribe(\n ([documentDefinitionName, documentId]) => {\n if (this._tabManagementEnabled) {\n this.setApiTabs(documentDefinitionName, documentId);\n } else {\n this.setEnvironmentTabs(documentDefinitionName);\n }\n }\n )\n );\n }\n\n private setEnvironmentTabs(documentDefinitionName: string): void {\n const configurableTabs = this.getConfigurableTabs(documentDefinitionName);\n const allEnvironmentTabs = this.getAllEnvironmentTabs(configurableTabs);\n this._tabs$.next(allEnvironmentTabs);\n }\n\n private setApiTabs(documentDefinitionName: string, documentId: string): void {\n this.dossierTabApiService.getDossierTabs(documentDefinitionName, documentId).subscribe({\n next: tabs => {\n const supportedTabs = tabs.filter(tab => this.filterTab(tab));\n const mappedTabs = supportedTabs.map((tab, index) => this.mapTab(tab, index));\n this._tabs$.next(mappedTabs.filter(tab => !!tab));\n },\n error: () => {\n this._tabs$.next([]);\n },\n });\n }\n\n private filterTab(tab: ApiTabItem): boolean {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return !!DEFAULT_TAB_COMPONENTS[tab.contentKey];\n case ApiTabType.CUSTOM:\n return !!(this.caseTabConfig || {})[tab.contentKey];\n default:\n return true;\n }\n }\n\n private mapTab(tab: ApiTabItem, index: number): TabImpl | null {\n switch (tab.type) {\n case ApiTabType.STANDARD:\n return new TabImpl(\n tab.key,\n index,\n DEFAULT_TAB_COMPONENTS[tab.contentKey],\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.FORMIO:\n return new TabImpl(\n tab.key,\n index,\n DossierDetailTabFormioComponent,\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.CUSTOM:\n return new TabImpl(\n tab.key,\n index,\n this.caseTabConfig[tab.contentKey],\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n case ApiTabType.WIDGETS:\n return new TabImpl(\n tab.key,\n index,\n DossierDetailWidgetsComponent,\n tab.contentKey,\n tab.name,\n tab.showTasks\n );\n default:\n return null;\n }\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {DossierListService} from './dossier-list.service';\nimport {CaseStatusService, InternalCaseStatus} from '@valtimo/document';\nimport {DossierParameterService} from './dossier-parameter.service';\nimport {BehaviorSubject, combineLatest, map, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {CASE_WITHOUT_STATUS_STATUS} from '../constants';\n\n@Injectable()\nexport class DossierListStatusService {\n private readonly _selectedCaseStatuses$ = new BehaviorSubject<InternalCaseStatus[]>([]);\n\n private readonly _showStatusSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseStatuses$: Observable<Array<InternalCaseStatus>> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(documentDefinitionName),\n this.dossierParameterService.queryStatusParams$,\n ]).pipe(take(1))\n ),\n switchMap(([statuses, queryStatuses]) =>\n combineLatest([of([CASE_WITHOUT_STATUS_STATUS, ...statuses]), of(queryStatuses)])\n ),\n tap(([statuses, queryStatuses]) => {\n const selectedStatuses = queryStatuses\n ? statuses.filter(status => queryStatuses.includes(status.key))\n : [\n ...statuses.filter(status => status.visibleInCaseListByDefault),\n CASE_WITHOUT_STATUS_STATUS,\n ];\n this.setSelectedStatuses(selectedStatuses);\n }),\n map(([statuses]) => statuses),\n tap(statuses => this._showStatusSelector$.next((statuses || []).length > 1))\n );\n\n public get caseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._caseStatuses$;\n }\n\n public get showStatusSelector$(): Observable<boolean> {\n return this._showStatusSelector$.asObservable();\n }\n\n public get selectedCaseStatuses$(): Observable<Array<InternalCaseStatus>> {\n return this._selectedCaseStatuses$;\n }\n\n constructor(\n private readonly dossierListService: DossierListService,\n private readonly caseStatusService: CaseStatusService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n public setSelectedStatuses(statuses: InternalCaseStatus[]): void {\n this._selectedCaseStatuses$.next(statuses);\n this.dossierParameterService.setStatusParameter(statuses.map(status => status.key));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StartModalService {\n getStandardStartEventTitle(bpmnXml: string): string | null {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(bpmnXml, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('parsererror').length) {\n console.error('Error parsing XML');\n return null;\n }\n\n const startEvents = xmlDoc.getElementsByTagName('bpmn:startEvent');\n if (!startEvents) {\n return null;\n }\n\n const standardStartEvent = Array.from(startEvents).find(\n event =>\n !event.getElementsByTagName('bpmn:messageEventDefinition').length &&\n !event.getElementsByTagName('bpmn:timerEventDefinition').length\n );\n\n return standardStartEvent ? standardStartEvent.getAttribute('name') : null;\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {CaseWidgetsRes} from '../models';\nimport {InterceptorSkip} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DossierWidgetsApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getWidgetTabConfiguration(documentId: string, tabKey: string): Observable<CaseWidgetsRes> {\n return this.httpClient.get<CaseWidgetsRes>(\n this.getApiUrl(`v1/document/${documentId}/widget-tab/${tabKey}`)\n );\n }\n\n public getWidgetData(\n documentId: string,\n tabKey: string,\n widgetKey: string,\n queryParams?: string\n ): Observable<object> {\n return this.httpClient.get<object>(\n this.getApiUrl(\n !queryParams\n ? `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}`\n : `v1/document/${documentId}/widget-tab/${tabKey}/widget/${widgetKey}?${queryParams}`\n ),\n {headers: new HttpHeaders().set(InterceptorSkip, '404')}\n );\n }\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n take,\n} from 'rxjs';\nimport {CaseWidgetWithUuid} from '../models';\nimport {WIDGET_WIDTH_1X} from '../constants';\nimport Muuri from 'muuri';\n\n@Injectable({providedIn: 'root'})\nexport class DossierWidgetsLayoutService implements OnDestroy {\n private readonly _containerWidthSubject$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetsSubject$ = new BehaviorSubject<CaseWidgetWithUuid[] | null>(null);\n private readonly _caseWidgetDataLoadedSubject$ = new BehaviorSubject<string[] | null>(null);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n private get _muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n private get _containerWidth$(): Observable<number> {\n return this._containerWidthSubject$.pipe(filter(width => width !== null));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this._containerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_WIDTH_1X))\n );\n }\n\n private get _widgets$(): Observable<CaseWidgetWithUuid[]> {\n return this._widgetsSubject$.pipe(filter(widgets => widgets !== null));\n }\n\n private get _caseWidgetDataLoaded$(): Observable<string[]> {\n return this._caseWidgetDataLoadedSubject$.pipe(filter(loaded => loaded !== null));\n }\n\n private readonly _widgetsWithExternalData$ = new BehaviorSubject<string[]>([]);\n private readonly _widgetsWithExternalDataReady$ = new BehaviorSubject<string[]>([]);\n\n private readonly _subscriptions = new Subscription();\n\n public get loaded$(): Observable<boolean> {\n return combineLatest([\n this._caseWidgetDataLoaded$,\n this._widgets$,\n this._widgetsWithExternalData$,\n this._widgetsWithExternalDataReady$,\n this._containerWidth$,\n ]).pipe(\n map(\n ([caseWidgetDataLoaded, widgets, widgetsWithExternalData, widgetsWithExternalDataReady]) =>\n caseWidgetDataLoaded?.length === widgets.length &&\n widgetsWithExternalData.length === widgetsWithExternalDataReady.length\n ),\n filter(loaded => !!loaded)\n );\n }\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n public setWidgets(widgets: CaseWidgetWithUuid[]): void {\n this._widgetsSubject$.next(widgets);\n }\n\n public setWidgetWithExternalData(uuid: string): void {\n this._widgetsWithExternalData$.pipe(take(1)).subscribe(widgetsWithExternalData => {\n this._widgetsWithExternalData$.next([...widgetsWithExternalData, uuid]);\n });\n }\n\n public setWidgetWithExternalDataReady(uuid: string): void {\n this._widgetsWithExternalDataReady$.pipe(take(1)).subscribe(widgetsWithExternalDataReady => {\n this._widgetsWithExternalDataReady$.next([...widgetsWithExternalDataReady, uuid]);\n });\n }\n\n public setContainerWidth(width: number): void {\n this._containerWidthSubject$.next(width);\n }\n\n public setCaseWidgetDataLoaded(uuid: string): void {\n this._caseWidgetDataLoadedSubject$.pipe(take(1)).subscribe(caseWidgetDataLoaded => {\n if (!(caseWidgetDataLoaded || []).includes(uuid)) {\n this._caseWidgetDataLoadedSubject$.next([...(caseWidgetDataLoaded || []), uuid]);\n }\n });\n }\n\n public reset(): void {\n this._containerWidthSubject$.next(null);\n this._widgetsSubject$.next(null);\n this._caseWidgetDataLoadedSubject$.next(null);\n this._widgetsWithExternalData$.next([]);\n this._widgetsWithExternalDataReady$.next([]);\n this._muuriSubject$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FormDisplayType, FormSize, TaskWithProcessLink} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, startWith} from 'rxjs';\nimport {\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH,\n DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS,\n DOSSIER_DETAIL_TASK_LIST_WIDTH,\n} from '../constants';\nimport {DossierDetailLayout} from '../models';\nimport {DossierTabService} from './dossier-tab.service';\n\n@Injectable()\nexport class DossierDetailLayoutService {\n private readonly _tabContentContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _showTaskList$ = this.dossierTabService.showTaskList$;\n private readonly _taskAndProcessLinkOpenedInPanel$ =\n new BehaviorSubject<TaskWithProcessLink | null>(null);\n private readonly _formDisplayType$ = new BehaviorSubject<FormDisplayType>(\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE\n );\n private readonly _formDisplaySize$ = new BehaviorSubject<FormSize>(\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE\n );\n\n public get tabContentContainerWidth$(): Observable<number> {\n return this._tabContentContainerWidth$.pipe(filter(width => typeof width === 'number'));\n }\n\n public get taskAndProcessLinkOpenedInPanel$(): Observable<TaskWithProcessLink | null> {\n return this._taskAndProcessLinkOpenedInPanel$.asObservable();\n }\n\n public get formDisplaySize$(): Observable<FormSize> {\n return this._formDisplaySize$.asObservable();\n }\n\n constructor(private readonly dossierTabService: DossierTabService) {}\n\n public readonly dossierDetailLayout$: Observable<DossierDetailLayout | any> = combineLatest([\n this.tabContentContainerWidth$,\n this._showTaskList$,\n this._taskAndProcessLinkOpenedInPanel$,\n this._formDisplayType$,\n this._formDisplaySize$,\n ]).pipe(\n map(\n ([\n tabContentContainerWidth,\n showTaskList,\n taskAndProcessLinkOpenedInPanel,\n formDisplayType,\n formDisplaySize,\n ]) => {\n if (!showTaskList) {\n return this.getInitialLayout();\n }\n\n if (!taskAndProcessLinkOpenedInPanel) {\n return this.getTaskListLayout();\n }\n\n if (taskAndProcessLinkOpenedInPanel && formDisplayType === 'panel') {\n return this.getPanelLayout(tabContentContainerWidth, formDisplaySize);\n }\n\n return {} as DossierDetailLayout;\n }\n ),\n startWith({})\n );\n\n public setTabContentContainerWidth(width: number): void {\n this._tabContentContainerWidth$.next(width);\n }\n\n public setTaskAndProcessLinkOpenedInPanel(value: TaskWithProcessLink | null): void {\n this._taskAndProcessLinkOpenedInPanel$.next(value);\n }\n\n public setFormDisplayType(type: FormDisplayType): void {\n this._formDisplayType$.next(type);\n }\n\n public setFormDisplaySize(size: FormSize): void {\n this._formDisplaySize$.next(size);\n }\n\n private getInitialLayout(): DossierDetailLayout {\n return {\n showRightPanel: false,\n widthAdjustable: false,\n unit: 'percent',\n leftPanelWidth: '*',\n };\n }\n\n private getTaskListLayout(): DossierDetailLayout {\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: false,\n rightPanelMaxWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n rightPanelMinWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n rightPanelWidth: DOSSIER_DETAIL_TASK_LIST_WIDTH,\n leftPanelWidth: '*',\n };\n }\n\n private getPanelLayout(\n tabContentContainerWidth: number,\n formDisplaySize: FormSize\n ): DossierDetailLayout {\n const rightPanelMaxWidth =\n tabContentContainerWidth - DOSSIER_DETAIL_GUTTER_SIZE - DOSSIER_DETAIL_LEFT_PANEL_MIN_WIDTH;\n const rightPanelMinWidth = DOSSIER_DETAIL_RIGHT_PANEL_MIN_WIDTHS[formDisplaySize];\n const rightPanelMinWidthToUse =\n rightPanelMinWidth < rightPanelMaxWidth ? rightPanelMinWidth : rightPanelMaxWidth;\n\n return {\n unit: 'pixel',\n showRightPanel: true,\n widthAdjustable: true,\n rightPanelMinWidth: rightPanelMinWidthToUse,\n rightPanelWidth: rightPanelMinWidthToUse,\n rightPanelMaxWidth,\n leftPanelWidth: '*',\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {DossierListService} from './dossier-list.service';\nimport {CaseTagService, CaseTag} from '@valtimo/document';\nimport {DossierParameterService} from './dossier-parameter.service';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, take, tap} from 'rxjs';\n\n@Injectable()\nexport class DossierListCaseTagService {\n private readonly _selectedCaseTags$ = new BehaviorSubject<CaseTag[]>([]);\n\n private readonly _showCaseTagsSelector$ = new BehaviorSubject<boolean>(false);\n\n private readonly _caseTags$: Observable<CaseTag[]> =\n this.dossierListService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n combineLatest([\n this.caseTagsService.getCaseTags(documentDefinitionName),\n this.dossierParameterService.queryCaseTagsParams$,\n ]).pipe(take(1))\n ),\n tap(([caseTags, queryCaseTags]) => {\n let selectedCaseTags;\n if (queryCaseTags) {\n selectedCaseTags = caseTags.filter(caseTag => queryCaseTags.includes(caseTag.key));\n this.setSelectedCaseTags(selectedCaseTags);\n }\n }),\n map(([caseTags]) => caseTags),\n tap(caseTags => this._showCaseTagsSelector$.next((caseTags || []).length > 1))\n );\n\n public get caseTags$(): Observable<CaseTag[]> {\n return this._caseTags$;\n }\n\n public get showCaseTagsSelector$(): Observable<boolean> {\n return this._showCaseTagsSelector$.asObservable();\n }\n\n public get selectedCaseTags$(): Observable<CaseTag[]> {\n return this._selectedCaseTags$;\n }\n\n constructor(\n private readonly dossierListService: DossierListService,\n private readonly caseTagsService: CaseTagService,\n private readonly dossierParameterService: DossierParameterService\n ) {}\n\n public setSelectedCaseTags(caseTags: CaseTag[]): void {\n this._selectedCaseTags$.next(caseTags);\n this.dossierParameterService.setCaseTagParameter(caseTags.map(caseTag => caseTag.key));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './dossier-bulk-assign.service';\nexport * from './dossier-column.service';\nexport * from './dossier-parameter.service';\nexport * from './dossier-list.service';\nexport * from './dossier-list-assignee.service';\nexport * from './dossier-list-pagination.service';\nexport * from './dossier-list-search.service';\nexport * from './dossier-tab.service';\nexport * from './dossier.service';\nexport * from './dossier-tab-api.service';\nexport * from './dossier-list-status.service';\nexport * from './start-modal.service';\nexport * from './dossier-widgets-api.service';\nexport * from './dossier-widgets-layout.service';\nexport * from './dossier-detail-layout.service';\nexport * from './dossier-list-case-tag.service';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport {ListItem} from 'carbon-components-angular';\nimport {map, Observable} from 'rxjs';\nimport {CandidateUser} from '../../models';\nimport {DossierBulkAssignService} from '../../services';\n\n@Component({\n selector: 'valtimo-dossier-bulk-assign-modal',\n templateUrl: './dossier-bulk-assign-modal.component.html',\n styleUrls: ['./dossier-bulk-assign-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DossierBulkAssignModalComponent {\n @HostBinding('class') public modalClass = 'valtimo-dossier-bulk-assign-modal';\n\n @Input() public set documentIds(value: string[]) {\n if (!value.length) {\n return;\n }\n this.bulkAssignService.loadCandidateUsers(value);\n }\n @Input() open = false;\n\n @Output() closeEvent = new EventEmitter<string | null>();\n\n public candidateUsers$: Observable<ListItem[]> = this.bulkAssignService.candidateUsers$.pipe(\n map((candidateUsers: CandidateUser[]) =>\n candidateUsers.map((candidateUser: CandidateUser) => ({\n id: candidateUser.id,\n content: `${candidateUser.firstName} ${candidateUser.lastName}`,\n selected: this.formGroup.get('assignee')?.value?.id === candidateUser.id,\n }))\n )\n );\n\n public formGroup: FormGroup = this.fb.group({\n assignee: this.fb.control({id: '', content: '', selected: false}, Validators.required),\n });\n\n constructor(\n private bulkAssignService: DossierBulkAssignService,\n private fb: FormBuilder\n ) {}\n\n public closeModal(confirm?: boolean): void {\n const assignee: ListItem | null = this.formGroup.get('assignee')?.value ?? null;\n if (!assignee) {\n this.closeEvent.emit(null);\n return;\n }\n\n this.closeEvent.emit(confirm ? assignee.id : null);\n this.formGroup.reset();\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal valtimoCdsModal [open]=\"open\" (close)=\"closeModal()\" showFooter=\"true\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'dossier.bulkAssign.modal.title' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form *ngIf=\"candidateUsers$ | async as candidateUsers\" [formGroup]=\"formGroup\">\n <cds-combo-box\n formControlName=\"assignee\"\n [dropUp]=\"false\"\n [items]=\"candidateUsers\"\n [label]=\"'dossier.bulkAssign.modal.selectLabel' | translate\"\n [placeholder]=\"'dossier.bulkAssign.modal.selectPlaceholder' | translate\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">{{ 'interface.cancel' | translate }}</button>\n\n <button cdsButton=\"primary\" [disabled]=\"formGroup.invalid\" (click)=\"closeModal(true)\">\n {{ 'dossier.bulkAssign.modal.confirm' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule, WidgetModule} from '@valtimo/components';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n repeat,\n switchMap,\n tap,\n} from 'rxjs';\nimport {LayerModule, LoadingModule, TagModule, TilesModule} from 'carbon-components-angular';\nimport {\n CAN_VIEW_TASK_PERMISSION,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailModalComponent,\n TaskModule,\n} from '@valtimo/task';\nimport {ProcessService} from '@valtimo/process';\nimport {DocumentService} from '@valtimo/document';\nimport {ActivatedRoute} from '@angular/router';\nimport {PermissionService} from '@valtimo/access-control';\nimport {UserProviderService} from '@valtimo/security';\nimport moment from 'moment';\nimport {DossierDetailLayoutService} from '../../services';\nimport {ProcessLinkService, TaskWithProcessLink} from '@valtimo/process-link';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n selector: 'valtimo-dossier-detail-task-list',\n templateUrl: './dossier-detail-task-list.component.html',\n styleUrls: ['./dossier-detail-task-list.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NgbTooltipModule,\n TranslateModule,\n WidgetModule,\n LoadingModule,\n TaskModule,\n TilesModule,\n LayerModule,\n TagModule,\n CarbonListModule,\n ],\n})\nexport class DossierDetailTaskListComponent {\n @ViewChild('taskDetail') private readonly _taskDetailModal: TaskDetailModalComponent;\n\n @Input() public set openTaskAndProcessLinkInModal(value: TaskWithProcessLink) {\n if (value) this._taskDetailModal.openTaskAndProcessLinkDetails(value);\n }\n\n @Output() public readonly taskClickEvent = new EventEmitter<TaskWithProcessLink>();\n @Output() public readonly formSubmitEvent = new EventEmitter();\n\n public readonly loadingTasks$ = new BehaviorSubject<boolean>(true);\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n private readonly _documentId$ = this.route.params.pipe(\n map(params => params?.documentId),\n filter(documentId => !!documentId)\n );\n\n public readonly processInstanceTasks$: Observable<{\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n }> = this._refresh$.pipe(\n switchMap(() => this._documentId$),\n switchMap(documentId =>\n this.documentService\n .findProcessDocumentInstances(documentId)\n .pipe(repeat({count: 5, delay: 1500}))\n ),\n switchMap(processDocumentInstances =>\n combineLatest([\n ...processDocumentInstances.map(processDocumentInstance =>\n this.processLinkService.getTasksWithProcessLinks(\n processDocumentInstance.id.processInstanceId\n )\n ),\n ])\n ),\n map(res => res.reduce((acc, curr) => [...acc, ...curr], [])),\n switchMap(tasksWithProcessLinks =>\n combineLatest([\n of(tasksWithProcessLinks),\n ...(tasksWithProcessLinks || []).map(taskWithProcessLink =>\n this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: taskWithProcessLink.task.id,\n })\n ),\n ])\n ),\n map(res => {\n const tasksWithProcessLinks = res[0] || [];\n const permissions = res?.filter((_, index) => index !== 0) as boolean[];\n const mappedTasksWithProcessLinks = this.mapTasksWithProcessLinks(\n tasksWithProcessLinks,\n permissions\n );\n const uniqueTasksWithProcessLinks = this.getUniqueTasksWithProcessLinks(\n mappedTasksWithProcessLinks\n );\n\n return this.getSortedTasksWithProcessLinks(uniqueTasksWithProcessLinks);\n }),\n map(tasksWithProcessLinks => this.sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks)),\n tap(() => this.loadingTasks$.next(false))\n );\n\n public readonly formSize$ = this.dossierDetailLayoutService.formDisplaySize$;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly processService: ProcessService,\n private readonly route: ActivatedRoute,\n private readonly permissionService: PermissionService,\n private readonly userProviderService: UserProviderService,\n private readonly dossierDetailLayoutService: DossierDetailLayoutService,\n private readonly processLinkService: ProcessLinkService\n ) {}\n\n public rowTaskClick(tasWithProcessLinkk: TaskWithProcessLink): void {\n if (tasWithProcessLinkk.task.isLocked) return;\n\n this.taskClickEvent.emit(tasWithProcessLinkk);\n }\n\n public onFormSubmit(): void {\n this.formSubmitEvent.emit();\n this.refresh();\n }\n\n public refresh(): void {\n this._refresh$.next(null);\n }\n\n private mapTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[],\n permissions: boolean[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.map((taskWithProcessLink, index) => ({\n ...taskWithProcessLink,\n task: {\n ...taskWithProcessLink.task,\n createdUnix: moment(taskWithProcessLink.task.created).unix(),\n created: moment(taskWithProcessLink.task.created).format('DD MMM YYYY HH:mm'),\n ...(taskWithProcessLink.task.due && {dueUnix: moment(taskWithProcessLink.task.due).unix()}),\n isLocked: !permissions[index],\n },\n }));\n }\n\n private getUniqueTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.reduce((acc, curr) => {\n if (!acc.find(taskWithProcessLink => taskWithProcessLink.task.id === curr.task.id)) {\n return [...acc, curr];\n }\n return acc;\n }, [] as TaskWithProcessLink[]);\n }\n\n private getSortedTasksWithProcessLinks(\n tasksWithProcessLinks: TaskWithProcessLink[]\n ): TaskWithProcessLink[] {\n return tasksWithProcessLinks.sort((t1, t2) => {\n // high priority tasks on top\n if (t2.task.priority !== t1.task.priority) {\n return t2.task.priority - t1.task.priority;\n }\n\n // task with approaching due date on top\n const due1 = t1?.task.dueUnix || Number.MAX_VALUE;\n const due2 = t2?.task.dueUnix || Number.MAX_VALUE;\n if (due1 !== due2) {\n return due1 - due2;\n }\n\n // new task on top\n const createdCompare = t2.task.createdUnix / 5000 - t1.task.createdUnix / 5000;\n if (createdCompare !== 0) {\n return createdCompare;\n }\n\n // task with approximately the same age, are sorted by name\n return t1.task.name.localeCompare(t2.task.name);\n });\n }\n\n private sortTasksWithProcessLinksOnPermission(tasksWithProcessLinks: TaskWithProcessLink[]): {\n myTasks: TaskWithProcessLink[];\n otherTasks: TaskWithProcessLink[];\n } {\n return tasksWithProcessLinks.reduce(\n (acc, curr) =>\n !curr.task.isLocked\n ? {...acc, myTasks: [...acc.myTasks, curr]}\n : {...acc, otherTasks: [...acc.otherTasks, curr]},\n {myTasks: [] as TaskWithProcessLink[], otherTasks: [] as TaskWithProcessLink[]}\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n class=\"task-list\"\n *ngIf=\"{loadingTasks: loadingTasks$ | async, tasks: processInstanceTasks$ | async} as obs\"\n>\n @if (obs.loadingTasks && !obs.tasks) {\n <ng-container *ngTemplateOutlet=\"loadingTasksTemplate\"></ng-container>\n } @else if (obs.tasks?.myTasks?.length === 0 && obs.tasks?.otherTasks?.length === 0) {\n <ng-container *ngTemplateOutlet=\"noTasksTemplate\"></ng-container>\n } @else {\n <h2 class=\"task-list__title\">{{ 'summary.tasks' | translate }}</h2>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.myTasks' | translate }}</h3>\n\n @if (obs.tasks?.myTasks.length === 0) {\n {{ 'summary.noResultsMyTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.myTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n\n <div class=\"task-list__tasks-container\" cdsLayer=\"1\">\n <h3 class=\"task-list__subtitle\">{{ 'summary.otherTasks' | translate }}</h3>\n\n @if (obs.tasks?.otherTasks.length === 0) {\n {{ 'summary.noResultsOtherTasks' | translate }}\n } @else {\n @for (taskWithProcessLink of obs.tasks?.otherTasks; track taskWithProcessLink.task.id) {\n <ng-container\n *ngTemplateOutlet=\"taskTemplate; context: {taskWithProcessLink: taskWithProcessLink}\"\n ></ng-container>\n }\n }\n </div>\n }\n\n <valtimo-task-detail-modal\n #taskDetail\n [modalSize]=\"formSize$ | async\"\n (formSubmit)=\"onFormSubmit()\"\n (assignmentOfTaskChanged)=\"refresh()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #taskTemplate let-taskWithProcessLink=\"taskWithProcessLink\">\n <cds-clickable-tile [href]=\"null\" (click)=\"rowTaskClick(taskWithProcessLink)\">\n <div class=\"task\">\n <div class=\"task__header\">\n <span class=\"task__title\">{{ taskWithProcessLink.task.name }}</span>\n\n <cds-tag\n class=\"cds-tag--no-margin\"\n [type]=\"taskWithProcessLink.task.isLocked ? 'cool-gray' : 'green'\"\n >\n @if (!taskWithProcessLink.task.isLocked) {\n {{ 'summary.taskOpen' | translate }}\n } @else {\n <i class=\"icon mdi mdi-lock\"></i>\n }\n </cds-tag>\n </div>\n\n <div class=\"task__description\">\n {{ 'summary.taskCreated' | translate }} {{ taskWithProcessLink.task.created }}\n </div>\n\n <div class=\"task__subtitles\">\n @for (\n subtitle of taskWithProcessLink?.processLinkActivityResult?.properties?.subtitles || [];\n track subtitle\n ) {\n <p class=\"task__subtitle\">{{ subtitle }}</p>\n }\n </div>\n </div>\n </cds-clickable-tile>\n</ng-template>\n\n<ng-template #noTasksTemplate>\n <valtimo-no-results\n [alwaysRenderVertically]=\"true\"\n illustration=\"valtimo-layout/img/emptystate-success.svg\"\n [description]=\"'summary.userTasksDoneState' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n</ng-template>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {PageHeaderService} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {ProcessInstanceTask} from '@valtimo/process';\nimport {\n AssignUserToTaskComponent,\n CAN_ASSIGN_TASK_PERMISSION,\n CAN_MODIFY_TASK_PERMISSION,\n IntermediateSubmission,\n SetTaskDueDateComponent,\n TASK_DETAIL_PERMISSION_RESOURCE,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {BehaviorSubject, map, Observable, switchMap} from 'rxjs';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\n\n@Component({\n selector: 'valtimo-dossier-detail-task-detail',\n templateUrl: './dossier-detail-task-detail.component.html',\n styleUrl: './dossier-detail-task-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n TaskDetailContentComponent,\n TaskDetailIntermediateSaveComponent,\n ButtonModule,\n IconModule,\n AssignUserToTaskComponent,\n SetTaskDueDateComponent,\n ],\n})\nexport class DossierDetailsTaskDetailComponent implements OnDestroy {\n @Input() public set taskAndProcessLink(value: TaskWithProcessLink | null) {\n if (!value) return;\n\n this.taskAndProcessLink$.next(value);\n this.pageValue.set({\n title: value?.task.name,\n subtitle: `${this.translateService.instant('taskDetail.taskCreated')} ${value?.task?.created}`,\n });\n }\n @Output() public readonly closeEvent = new EventEmitter();\n @Output() public readonly assignmentOfTaskChanged = new EventEmitter();\n @Output() public readonly activeChange = new EventEmitter<boolean>();\n @Output() public readonly formSubmit = new EventEmitter();\n\n public readonly compactMode$: Observable<boolean> = this.pageHeaderService.compactMode$;\n public readonly taskAndProcessLink$ = new BehaviorSubject<TaskWithProcessLink | null>(null);\n public readonly task$ = this.taskAndProcessLink$.pipe(\n map(taskAndProcessLink => taskAndProcessLink.task)\n );\n public readonly canAssignUserToTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_ASSIGN_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly canModifyTask$: Observable<boolean> = this.task$.pipe(\n switchMap((task: ProcessInstanceTask | null) =>\n this.permissionService.requestPermission(CAN_MODIFY_TASK_PERMISSION, {\n resource: TASK_DETAIL_PERMISSION_RESOURCE.task,\n identifier: task?.id ?? '',\n })\n )\n );\n public readonly intermediateSaveValue$ = new BehaviorSubject<IntermediateSubmission | null>(null);\n public readonly pageValue = signal<{title: string; subtitle: string}>({\n title: '',\n subtitle: '',\n });\n public enableIntermediateSave = false;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService\n ) {\n this.enableIntermediateSave = !!this.configService.featureToggles?.enableIntermediateSave;\n }\n\n public ngOnDestroy(): void {\n this.closeEvent.emit();\n }\n\n public onClose(): void {\n this.closeEvent.emit();\n this.onActiveChangeEvent(false);\n }\n\n public onCurrentIntermediateSaveEvent(value: IntermediateSubmission | null): void {\n this.intermediateSaveValue$.next(value);\n this.onActiveChangeEvent(false);\n }\n\n public onActiveChangeEvent(activeChange: boolean): void {\n this.activeChange.emit(activeChange);\n }\n\n public onFormSubmitEvent(): void {\n this.formSubmit.emit();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assign-user-to-task\n [canAssignUserToTask]=\"obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n\n <valtimo-set-task-due-date\n [canModifyTask]=\"obs.canModifyTask\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {FormioBeforeSubmit, FormioForm} from '@formio/angular';\nimport {FormioComponent, FormioOptionsImpl, FormioSubmission, ValtimoFormioOptions,} from '@valtimo/components';\nimport {ProcessDocumentDefinition} from '@valtimo/document';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormSubmissionResult,\n ProcessLinkService,\n} from '@valtimo/process-link';\nimport {BehaviorSubject, combineLatest, Subscription, switchMap} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-dossier-supporting-process-start-modal',\n templateUrl: './dossier-supporting-process-start-modal.component.html',\n styleUrls: ['./dossier-supporting-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierSupportingProcessStartModalComponent {\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n\n @Input() isAdmin: boolean;\n @Output() formSubmit = new EventEmitter();\n\n protected isFormViewModel = false;\n public isUIComponent = false;\n\n public readonly processDefinitionKey$ = new BehaviorSubject<string>('');\n public readonly documentDefinitionName$ = new BehaviorSubject<string>('');\n public readonly processName$ = new BehaviorSubject<string>('');\n public readonly formDefinition$ = new BehaviorSubject<FormioForm>(undefined);\n public readonly formioSubmission$ = new BehaviorSubject<FormioSubmission>(undefined);\n public readonly processLinkId$ = new BehaviorSubject<string>('');\n public readonly options$ = new BehaviorSubject<ValtimoFormioOptions>(undefined);\n public readonly submission$ = new BehaviorSubject<object>(undefined);\n public readonly processDefinitionId$ = new BehaviorSubject<string>(undefined);\n public readonly formFlowInstanceId$ = new BehaviorSubject<string>(undefined);\n public readonly documentId$ = new BehaviorSubject<string>(undefined);\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n public readonly closeModalEvent = new EventEmitter();\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly router: Router,\n private readonly processService: ProcessService,\n private readonly processLinkService: ProcessLinkService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig\n ) {\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n private loadProcessLink(): void {\n combineLatest([this.processDefinitionId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processDefinitionId, documentId]) =>\n this.processService.getProcessDefinitionStartProcessLink(\n processDefinitionId,\n documentId,\n null\n )\n )\n )\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n this.isUIComponent = false;\n this.isFormViewModel = false;\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition$.next(startProcessResult.properties.prefilledForm);\n this.processLinkId$.next(startProcessResult.processLinkId);\n break;\n case 'form-flow':\n this.formFlowInstanceId$.next(startProcessResult.properties.formFlowInstanceId);\n break;\n case 'form-view-model':\n this.formDefinition$.next(startProcessResult.properties.formDefinition);\n this.setFormViewModelComponent(startProcessResult.properties.formName);\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n break;\n }\n }\n });\n }\n\n public openModal(processDocumentDefinition: ProcessDocumentDefinition, documentId: string): void {\n this.documentId$.next(documentId);\n this.documentDefinitionName$.next(processDocumentDefinition.id.documentDefinitionId.name);\n this.processDefinitionKey$.next(processDocumentDefinition.id.processDefinitionKey);\n this.processDefinitionId$.next(processDocumentDefinition.latestVersionId);\n this.processName$.next(processDocumentDefinition.processName);\n\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n\n const options = new FormioOptionsImpl();\n options.disableAlerts = true;\n options.setHooks(formioBeforeSubmit);\n\n this.options$.next(options);\n\n this.loadProcessLink();\n this.openCdsModal();\n }\n\n public onSubmit(submission: FormioSubmission): void {\n this.formioSubmission$.next(submission);\n\n if (this.processLinkId$.getValue()) {\n combineLatest([this.processLinkId$, this.documentId$])\n .pipe(\n take(1),\n switchMap(([processLinkId, documentId]) =>\n this.processLinkService.submitForm(processLinkId, submission.data, documentId)\n )\n )\n .subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.formSubmitted();\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n }\n\n public formSubmitted(): void {\n this.closeCdsModal();\n this.formSubmit.emit();\n this.formDefinition$.next(null);\n }\n\n public gotoFormLinkScreen(): void {\n this.closeCdsModal();\n this.router.navigate(['process-links'], {\n queryParams: {process: this.processDefinitionKey$.getValue()},\n });\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private setFormViewModelComponent(formName: string): void {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n\n combineLatest([\n this.formDefinition$,\n this.processDefinitionKey$,\n this.documentDefinitionName$,\n this.options$,\n this.documentId$,\n ])\n .pipe(take(1))\n .subscribe(([form, processDefinitionKey, documentDefinitionName, options, documentId]) => {\n formViewModelComponent.instance.formName = formName;\n formViewModelComponent.instance.form = form;\n formViewModelComponent.instance.processDefinitionKey = processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = documentDefinitionName;\n formViewModelComponent.instance.options = options;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.documentId = documentId;\n });\n\n formViewModelComponent.instance.formSubmit.pipe(take(1)).subscribe(() => {\n this.formSubmitted();\n });\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n formViewModelComponent.destroy();\n })\n );\n\n this.isFormViewModel = true;\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n combineLatest([this.processDefinitionKey$, this.documentDefinitionName$])\n .pipe(take(1))\n .subscribe(([processDefinitionKey, documentDefinitionName]) => {\n renderedComponent.instance.processDefinitionKey = processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = documentDefinitionName;\n });\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.formSubmitted();\n });\n\n this._subscriptions.add(\n this.closeModalEvent.subscribe(() => {\n renderedComponent.destroy();\n })\n );\n });\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(false);\n this.closeModalEvent.emit();\n }\n\n private openCdsModal(): void {\n this.loadProcessLink();\n this.modalOpen$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\" [cdsLayer]=\"1\"\n ><h3 cdsModalHeaderHeading>\n {{\n (processDefinitionKey$ | async | translate) !== (processDefinitionKey$ | async)\n ? (processDefinitionKey$ | async | translate)\n : (processName$ | async)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-template #formViewModelComponent></ng-template>\n <ng-template #formCustomComponent></ng-template>\n\n @if (!isFormViewModel && !isUIComponent && (formDefinition$ | async)) {\n <valtimo-form-io\n #form\n [submission]=\"submission$ | async\"\n [form]=\"formDefinition$ | async\"\n [options]=\"options$ | async\"\n (submit)=\"onSubmit($event)\"\n ></valtimo-form-io>\n }\n\n @if (formFlowInstanceId$ | async) {\n <valtimo-form-flow\n #formFlow\n [formFlowInstanceId]=\"formFlowInstanceId$ | async\"\n (formFlowComplete)=\"formSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!(formDefinition$ | async) && !(formFlowInstanceId$ | async) && !isUIComponent) {\n <div class=\"bg-warning text-black mb-0 p-3 text-center\">\n {{\n isAdmin\n ? ('formManagement.noFormDefinitionFoundAdmin' | translate)\n : ('formManagement.noFormDefinitionFoundUser' | translate)\n }}\n </div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n </section>\n</cds-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DropdownItem} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {BehaviorSubject, filter, map, Observable, of, switchMap} from 'rxjs';\nimport {NamedUser} from '@valtimo/config';\nimport {tap} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dossier-assign-user',\n templateUrl: './dossier-assign-user.component.html',\n styleUrls: ['./dossier-assign-user.component.css'],\n})\nexport class DossierAssignUserComponent {\n @Input() set documentId(value: string) {\n this.documentId$.next(value);\n }\n @Input() set assigneeId(value: string) {\n this.assigneeId$.next(value);\n }\n @Input() set assigneeFullName(value: string) {\n this.assigneeFullName$.next(value);\n }\n @Input() hasPermission = true;\n @Output() assignmentOfDocumentChanged = new EventEmitter();\n\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n public readonly documentId$ = new BehaviorSubject<string>('');\n public readonly userItems$: Observable<Array<DropdownItem>> = this.documentId$.pipe(\n filter(documentId => !!documentId),\n switchMap(documentId =>\n this.hasPermission ? this.documentService.getCandidateUsers(documentId) : of([])\n ),\n map(candidateUsers => this.mapUsersForDropdown(candidateUsers)),\n tap(() => this.enable())\n );\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly assigneeFullName$ = new BehaviorSubject<string>('');\n\n constructor(private readonly documentService: DocumentService) {}\n\n public assignDocument(userId: string): void {\n this.disable();\n\n this.documentId$\n .pipe(\n switchMap(documentId => this.documentService.assignHandlerToDocument(documentId, userId))\n )\n .subscribe(() => {\n this.emitChange();\n this.enable();\n });\n }\n\n public unassignDocument(): void {\n this.disable();\n\n this.documentId$\n .pipe(switchMap(documentId => this.documentService.unassignHandlerFromDocument(documentId)))\n .subscribe(() => {\n this.emitChange();\n this.enable();\n });\n }\n\n private mapUsersForDropdown(users: NamedUser[]): DropdownItem[] {\n return users\n .sort((a, b) => {\n if (a.lastName && b.lastName) {\n return a.lastName.localeCompare(b.lastName);\n }\n\n return 0;\n })\n .map(user => ({text: user.label, id: user.id}));\n }\n\n private emitChange(): void {\n this.assignmentOfDocumentChanged.emit();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngTemplateOutlet=\"content\"> </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n assigneeFullName: assigneeFullName$ | async,\n assigneeId: assigneeId$ | async,\n } as obs\"\n >\n <ng-container *ngIf=\"!hasPermission && obs.assigneeFullName\">\n <ng-container *ngTemplateOutlet=\"fullName; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasPermission\">\n <ng-container *ngTemplateOutlet=\"selectUser; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #fullName let-obs=\"obs\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [hasPermission]=\"false\"\n [hasSelection]=\"true\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n</ng-template>\n\n<ng-template #selectUser let-obs=\"obs\">\n <ng-container *ngIf=\"userItems$ | async as userItems; else loadingUsers\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [disabled]=\"obs.disabled\"\n [hasPermission]=\"hasPermission\"\n [showClearSelection]=\"false\"\n [hasSelection]=\"obs.assigneeId\"\n [items]=\"userItems\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n (clearSelection)=\"unassignDocument()\"\n (itemSelected)=\"assignDocument($event)\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n</ng-template>\n\n<ng-template #loadingUsers>\n <h5>\n <b>{{ 'assignDocument.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {map, Observable, of} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {TabImpl} from '../../models';\n\n@Pipe({\n name: 'tabTranslate',\n})\nexport class TabTranslatePipe implements PipeTransform {\n constructor(private readonly translateService: TranslateService) {}\n\n transform(tab: TabImpl): Observable<string> {\n const translationId = 'dossier.tabs.' + tab.name;\n\n return tab.title\n ? of(tab.title)\n : this.translateService\n .stream(translationId)\n .pipe(map(translation => (translationId !== translation ? translation : tab.name)));\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n Inject,\n OnDestroy,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {ActivatedRoute, NavigationStart, ParamMap, Params, Router} from '@angular/router';\nimport {ChevronDown16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n BreadcrumbService,\n CARBON_CONSTANTS,\n CdsThemeService,\n CurrentCarbonTheme,\n PageHeaderService,\n PageTitleService,\n PendingChangesComponent,\n} from '@valtimo/components';\nimport {ConfigService} from '@valtimo/config';\nimport {\n CaseStatusService,\n CaseTag,\n CaseTagsUtils,\n Document as ValtimoDocument,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n ProcessDocumentDefinition,\n} from '@valtimo/document';\nimport {TaskWithProcessLink} from '@valtimo/process-link';\nimport {UserProviderService} from '@valtimo/security';\nimport {IntermediateSubmission} from '@valtimo/task';\nimport {IconService, NotificationService} from 'carbon-components-angular';\nimport {KeycloakService} from 'keycloak-angular';\nimport moment from 'moment';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, combineLatest, filter, map, Observable, of, startWith, Subject, Subscription, switchMap, take, tap,} from 'rxjs';\nimport {\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE,\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE,\n DOSSIER_DETAIL_GUTTER_SIZE,\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH,\n} from '../../constants';\nimport {TabImpl, TabLoaderImpl} from '../../models';\nimport {\n CAN_ASSIGN_CASE_PERMISSION,\n CAN_CLAIM_CASE_PERMISSION,\n CAN_DELETE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {DossierDetailLayoutService, DossierService, DossierTabService} from '../../services';\nimport {DossierSupportingProcessStartModalComponent} from '../dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component';\nimport {WidgetsService} from './tab/widgets/widgets.service';\n\n@Component({\n selector: 'valtimo-dossier-detail',\n templateUrl: './dossier-detail.component.html',\n styleUrls: ['./dossier-detail.component.scss'],\n providers: [DossierTabService, DossierDetailLayoutService, NotificationService],\n})\nexport class DossierDetailComponent\n extends PendingChangesComponent\n implements AfterViewInit, OnDestroy\n{\n @ViewChild('supportingProcessStartModal')\n supportingProcessStart: DossierSupportingProcessStartModalComponent;\n\n @ViewChild('tabContainer', {read: ViewContainerRef})\n viewContainerRef: ViewContainerRef;\n\n @ViewChild('tabContentContainer')\n private readonly _tabContentContainer!: ElementRef<HTMLDivElement>;\n\n public customDossierHeaderItems: Array<any> = [];\n public document: ValtimoDocument | null = null;\n public documentDefinitionName: string;\n public documentDefinitionNameTitle: string;\n public documentId: string;\n public processDefinitionListFields: Array<any> = [];\n public processDocumentDefinitions: (ProcessDocumentDefinition & {displayName?: string})[] = [];\n public tabLoader: TabLoaderImpl | null = null;\n\n public readonly assigneeId$ = new BehaviorSubject<string>('');\n public readonly currentIntermediateSave$ = new BehaviorSubject<IntermediateSubmission | null>(\n null\n );\n public readonly isAdmin$: Observable<boolean> = this.userProviderService\n .getUserSubject()\n .pipe(map(userIdentity => userIdentity?.roles?.includes('ROLE_ADMIN')));\n\n public readonly taskAndProcessLinkOpenedInPanel$ =\n this.dossierDetailLayoutService.taskAndProcessLinkOpenedInPanel$;\n\n private readonly _caseStatusKey$ = new BehaviorSubject<string | null | 'NOT_AVAILABLE'>(null);\n private readonly _taskPanelToggle = this.configService.featureToggles?.enableTaskPanel;\n\n public readonly dropdownWidth$ = new BehaviorSubject<number>(\n DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n );\n public readonly caseStatusKey$: Observable<string | 'NOT_AVAILABLE'> = this._caseStatusKey$.pipe(\n filter(key => !!key)\n );\n\n public readonly _caseTags$ = new BehaviorSubject<CaseTag[] | null>(null);\n\n public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n public readonly canView$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly document$: Observable<ValtimoDocument | null> = combineLatest([\n this.dossierService.refreshDocument$,\n this.canView$,\n ]).pipe(\n filter(([_, canView]) => canView),\n switchMap(() => this.route.params),\n map((params: Params) => params?.documentId),\n switchMap((documentId: string) =>\n documentId ? this.documentService.getDocument(this.documentId) : of(null)\n ),\n tap((document: ValtimoDocument | null) => {\n if (document) {\n this.assigneeId$.next(document.assigneeId);\n this.document = document;\n this._caseStatusKey$.next(document?.internalStatus || 'NOT_AVAILABLE');\n this._caseTags$.next(document?.caseTags || null);\n\n if (\n this.configService.config.customDossierHeader?.hasOwnProperty(\n this.documentDefinitionName.toLowerCase()\n ) &&\n this.customDossierHeaderItems.length === 0\n ) {\n this.configService.config.customDossierHeader[\n this.documentDefinitionName.toLowerCase()\n ]?.forEach(item => this.getCustomDossierHeaderItem(item));\n }\n }\n })\n );\n\n public readonly documentDefinitionName$: Observable<string> = this.route.params.pipe(\n map(params => params.documentDefinitionName || '')\n );\n\n public readonly caseStatus$: Observable<InternalCaseStatus | undefined> =\n this.documentDefinitionName$.pipe(\n filter(documentDefinitionName => !!documentDefinitionName),\n switchMap(documentDefinitionName =>\n combineLatest([\n this.caseStatusService.getInternalCaseStatuses(documentDefinitionName),\n this.caseStatusKey$,\n ])\n ),\n map(\n ([statuses, key]) => key !== 'NOT_AVAILABLE' && statuses.find(status => status?.key === key)\n ),\n map(\n status =>\n status && {\n ...status,\n tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n }\n )\n );\n\n public readonly caseTags$: Observable<CaseTag[] | undefined> = this.documentDefinitionName$.pipe(\n filter(documentDefinitionName => !!documentDefinitionName),\n switchMap(documentDefinitionName => this._caseTags$),\n map(\n tag =>\n tag &&\n tag.map(caseTag => ({\n ...caseTag,\n tagType: CaseTagsUtils.getTagTypeFromCaseTagColor(caseTag.color),\n }))\n )\n );\n\n public readonly userId$: Observable<string | undefined> = of(\n this.keyCloakService.isLoggedIn()\n ).pipe(\n switchMap(() => this.keyCloakService.loadUserProfile()),\n map(profile => profile?.id)\n );\n\n public readonly isAssigning$ = new BehaviorSubject<boolean>(false);\n public readonly isAssignedToCurrentUser$: Observable<boolean> = combineLatest([\n this.assigneeId$,\n this.userId$,\n ]).pipe(\n map(([assigneeId, userId]) => !!assigneeId && !!userId && assigneeId === userId),\n startWith(true)\n );\n\n public readonly canHaveAssignee$: Observable<boolean> = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettings(documentDefinitionName)\n ),\n map(caseSettings => caseSettings?.canHaveAssignee)\n );\n\n public readonly canAssignLoaded$ = new BehaviorSubject<boolean>(false);\n public readonly canAssign$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_ASSIGN_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n ),\n tap(() => {\n this.canAssignLoaded$.next(true);\n })\n );\n\n public readonly canClaim$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_CLAIM_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly isDeleting$ = new BehaviorSubject<boolean>(false);\n public readonly canDelete$: Observable<boolean> = this.route.paramMap.pipe(\n switchMap((params: ParamMap) =>\n this.permissionService.requestPermission(CAN_DELETE_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: params.get('documentId') ?? '',\n })\n )\n );\n\n public readonly loadingTabs$ = new BehaviorSubject<boolean>(true);\n public readonly noTabsConfigured$ = new BehaviorSubject<boolean>(false);\n public readonly showNoAccess$ = new BehaviorSubject<boolean>(false);\n public activeTab$: Observable<TabImpl>;\n\n public readonly compactMode$ = this.pageHeaderService.compactMode$;\n\n public readonly tabHorizontalOverflowDisabled =\n this.dossierTabService.tabHorizontalOverflowDisabled;\n\n public readonly showTaskList$ = this.dossierTabService.showTaskList$;\n\n private readonly _activeTabName$ = new BehaviorSubject<string | null>(null);\n public get activeTabName$(): Observable<string | null> {\n return combineLatest([this.route.paramMap, this._activeTabName$]).pipe(\n map(([paramMap, activeTabName]) =>\n !activeTabName ? (paramMap.get('tab') ?? null) : activeTabName\n )\n );\n }\n\n public readonly DOSSIER_DETAIL_GUTTER_SIZE = DOSSIER_DETAIL_GUTTER_SIZE;\n\n public readonly dossierDetailLayout$ = this.dossierDetailLayoutService.dossierDetailLayout$;\n\n public readonly openTaskAndProcessLinkInModal$ = new Subject<TaskWithProcessLink>();\n\n public readonly isDarkMode$ = this.cdsThemeService.currentTheme$.pipe(\n map(currentTheme => currentTheme === CurrentCarbonTheme.G90)\n );\n\n private _snapshot: ParamMap;\n private _initialTabName: string;\n private _activeChange = false;\n private _oldTabName: string;\n private _pendingTab: TabImpl;\n private _observer!: ResizeObserver;\n private _tabsInit = false;\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly breadcrumbService: BreadcrumbService,\n private readonly caseStatusService: CaseStatusService,\n private readonly cdsThemeService: CdsThemeService,\n private readonly componentFactoryResolver: ComponentFactoryResolver,\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly dossierDetailLayoutService: DossierDetailLayoutService,\n private readonly dossierService: DossierService,\n private readonly dossierTabService: DossierTabService,\n private readonly iconService: IconService,\n private readonly keyCloakService: KeycloakService,\n private readonly logger: NGXLogger,\n private readonly notificationService: NotificationService,\n private readonly pageHeaderService: PageHeaderService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService,\n private readonly translateService: TranslateService,\n private readonly renderer: Renderer2,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly widgetsService: WidgetsService,\n private readonly userProviderService: UserProviderService,\n @Inject(DOCUMENT) private readonly htmlDocument: Document\n ) {\n super();\n this._snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = this._snapshot.get('documentDefinitionName') || '';\n this.documentId = this._snapshot.get('documentId') || '';\n }\n\n public ngAfterViewInit(): void {\n this.initTabLoader();\n this.initBreadcrumb();\n this.openWidthObserver();\n this.pageTitleService.disableReset();\n this.iconService.registerAll([ChevronDown16]);\n this.setDocumentStyle();\n this.enableResetOnBackNavigation();\n this.openWidgetProcessSubscription();\n }\n\n public ngOnDestroy(): void {\n this.breadcrumbService.clearSecondBreadcrumb();\n this.pageTitleService.enableReset();\n this.removeDocumentStyle();\n this._subscriptions.unsubscribe();\n }\n\n public getAllAssociatedProcessDefinitions(): void {\n this._subscriptions.add(\n combineLatest([\n this.documentService.findProcessDocumentDefinitionsForDocument(this.documentId, {\n startableByUser: true,\n }),\n this.translateService.stream('key'),\n ]).subscribe(([processDocumentDefinitions]) => {\n this.processDocumentDefinitions = this.mapProcessDocumentDefinitions(\n processDocumentDefinitions\n );\n this.setProcessDropdownWidth();\n\n this.processDefinitionListFields = [\n {\n key: 'processName',\n label: 'Proces',\n },\n ];\n })\n );\n }\n\n public startProcess(processDocumentDefinition: ProcessDocumentDefinition): void {\n this.supportingProcessStart.openModal(processDocumentDefinition, this.documentId);\n }\n\n public openWidgetProcessSubscription(): void {\n this._subscriptions.add(\n this.widgetsService.startProcessEvent\n .pipe(switchMap(() => this.widgetsService.activeProcess$))\n .subscribe((processDocumentDefinitions: ProcessDocumentDefinition[]) => {\n this.startProcess(processDocumentDefinitions[0]);\n })\n );\n }\n\n public claimAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.assignHandlerToDocument(this.documentId, userId ?? '')\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.dossierService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while assigning user to case');\n },\n });\n }\n\n public unassignAssignee(): void {\n this.isAssigning$.next(true);\n\n this.userId$\n .pipe(\n take(1),\n switchMap((userId: string | undefined) =>\n this.documentService.unassignHandlerFromDocument(this.documentId)\n )\n )\n .subscribe({\n next: (): void => {\n this.isAssigning$.next(false);\n this.dossierService.refresh();\n },\n error: (): void => {\n this.isAssigning$.next(false);\n this.logger.debug('Something went wrong while unassigning user from case');\n },\n });\n }\n\n public deleteDocument(): void {\n this.showDeleteModal$.next(true);\n }\n\n public onConfirmDelete(): void {\n this.isDeleting$.next(true);\n this.documentService.deleteDocument(this.documentId).subscribe({\n next: (): void => {\n this.isDeleting$.next(false);\n this.showDeleteModal$.next(false);\n this.router.navigate([`/dossiers/${this.documentDefinitionName}`]);\n },\n error: (): void => {\n this.isDeleting$.next(false);\n this.logger.debug('Something went wrong while deleting the case');\n },\n });\n }\n\n public onTaskClickEvent(taskProcessLinkResult: TaskWithProcessLink): void {\n if (!taskProcessLinkResult.processLinkActivityResult) {\n this.isAdmin$.pipe(take(1)).subscribe(isAdmin => {\n this.handleNoTaskProcessLink(isAdmin);\n });\n return;\n }\n\n const displayType =\n taskProcessLinkResult.processLinkActivityResult.properties.formDisplayType ||\n DOSSIER_DETAIL_DEFAULT_DISPLAY_TYPE;\n const size =\n taskProcessLinkResult.processLinkActivityResult.properties.formSize ||\n DOSSIER_DETAIL_DEFAULT_DISPLAY_SIZE;\n\n this.dossierDetailLayoutService.setFormDisplaySize(size);\n this.dossierDetailLayoutService.setFormDisplayType(displayType);\n\n if (displayType === 'panel' && !!this._taskPanelToggle) {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(taskProcessLinkResult);\n } else {\n this.openTaskAndProcessLinkInModal$.next({...taskProcessLinkResult});\n }\n }\n\n public onTaskDetailsClose(): void {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n public onActiveChangeEvent(event: boolean): void {\n this._activeChange = event;\n }\n\n public onTabSelected(tab: TabImpl, activeTab: TabImpl): void {\n if (!this.tabLoader) return;\n\n if (!this._tabsInit) {\n this._tabsInit = true;\n return;\n }\n\n this._oldTabName = activeTab.name;\n this._pendingTab = tab;\n this._activeTabName$.next(tab.name);\n this.pendingChanges =\n tab.contentKey === 'summary' ? false : !tab.showTasks && this._activeChange;\n\n if (this.pendingChanges) {\n this.tabLoader.replaceUrlState(tab);\n return;\n }\n\n if (!tab.showTasks) this.openTaskAndProcessLinkInModal$.next(null);\n this.tabLoader.load(tab);\n this.setDocumentStyle();\n }\n\n public onFormSubmitEvent(): void {\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n\n if (!this.tabLoader) return;\n this.tabLoader.refreshView();\n }\n\n protected onConfirmRedirect(): void {\n if (!this.tabLoader || !this._pendingTab) return;\n this._activeChange = false;\n this._activeTabName$.next(this._pendingTab.name);\n this.tabLoader.load(this._pendingTab);\n this.dossierDetailLayoutService.setTaskAndProcessLinkOpenedInPanel(null);\n }\n\n protected onCancelRedirect(): void {\n if (!this.tabLoader) return;\n this._activeTabName$.next(this._oldTabName);\n }\n\n private initBreadcrumb(): void {\n this.documentService\n .getDocumentDefinition(this.documentDefinitionName)\n .subscribe(definition => {\n this.documentDefinitionNameTitle = definition.schema.title;\n this.setBreadcrumb();\n });\n }\n\n private initTabLoader(): void {\n combineLatest([this.dossierTabService.tabs$, this.canView$])\n .pipe(take(1))\n .subscribe(([tabs, canView]) => {\n if (canView) {\n if (tabs?.length > 0) {\n this._initialTabName = this._snapshot.get('tab') ?? '';\n this.tabLoader = new TabLoaderImpl(\n tabs,\n this.componentFactoryResolver,\n this.viewContainerRef,\n this.router,\n this.route\n );\n this.tabLoader.initial(this._initialTabName);\n this.dossierTabService.setTabLoader(this.tabLoader);\n this.loadingTabs$.next(false);\n this.activeTab$ = this.tabLoader.activeTab$;\n } else {\n this.noTabsConfigured$.next(true);\n this.loadingTabs$.next(false);\n }\n\n this.getAllAssociatedProcessDefinitions();\n } else {\n this.showNoAccess$.next(true);\n this.loadingTabs$.next(false);\n }\n });\n }\n\n public assignmentOfDocumentChanged(): void {\n this.dossierService.refresh();\n }\n\n private getCustomDossierHeaderItem(item): void {\n this.customDossierHeaderItems.push({\n label: item['labelTranslationKey'] || '',\n columnSize: item['columnSize'] || 3,\n textSize: item['textSize'] || 'md',\n customClass: item['customClass'] || '',\n modifier: item['modifier'] || '',\n value: item['propertyPaths']?.reduce(\n (prev, curr) => prev + this.getStringFromDocumentPath(item, curr),\n ''\n ),\n });\n }\n\n private getStringFromDocumentPath(item, path): string {\n const prefix = item['propertyPaths'].indexOf(path) > 0 ? ' ' : '';\n let string = this.getNestedProperty(this.document.content, path, item['noValueText']) || '';\n const dateFormats = [moment.ISO_8601, 'MM-DD-YYYY', 'DD-MM-YYYY', 'YYYY-MM-DD'];\n switch (item['modifier']) {\n case 'age': {\n if (moment(string, dateFormats, true).isValid()) {\n string = moment().diff(string, 'years');\n }\n break;\n }\n default: {\n if (moment(string, dateFormats, true).isValid()) {\n string = moment(string).format('DD-MM-YYYY');\n }\n }\n }\n return prefix + string;\n }\n\n private getNestedProperty(obj: any, path: string, defaultValue: any): any {\n return (\n path.split('.').reduce((currentObject, key) => currentObject?.[key], obj) || defaultValue\n );\n }\n\n private setBreadcrumb(): void {\n this.breadcrumbService.setSecondBreadcrumb({\n route: [`/dossiers/${this.documentDefinitionName}`],\n content: this.documentDefinitionNameTitle,\n href: `/dossiers/${this.documentDefinitionName}`,\n });\n }\n\n private openWidthObserver(): void {\n if (!this._tabContentContainer.nativeElement) return;\n\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._tabContentContainer.nativeElement);\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof elementWidth === 'number' && elementWidth !== 0) {\n this.dossierDetailLayoutService.setTabContentContainerWidth(elementWidth);\n }\n }\n\n private setDocumentStyle(): void {\n this.renderer.addClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private removeDocumentStyle(): void {\n this.renderer.removeClass(this.htmlDocument.getElementsByTagName('html')[0], 'html--fixed');\n }\n\n private enableResetOnBackNavigation(): void {\n this._subscriptions.add(\n this.router.events\n .pipe(\n filter(\n event => event instanceof NavigationStart && event.navigationTrigger === 'popstate'\n )\n )\n .subscribe(() => {\n this.pageTitleService.enableReset();\n })\n );\n }\n\n private handleNoTaskProcessLink(isAdmin: boolean): void {\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('dossier.noLinkedProcessNotification'),\n ...(isAdmin && {\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n }),\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n }\n\n private mapProcessDocumentDefinitions(\n processDocumentDefinitions: ProcessDocumentDefinition[]\n ): (ProcessDocumentDefinition & {displayName: string})[] {\n return processDocumentDefinitions.map(\n (processDocoumentDefinition: ProcessDocumentDefinition) => ({\n ...processDocoumentDefinition,\n displayName:\n this.translateService.instant(processDocoumentDefinition?.id?.processDefinitionKey) !==\n processDocoumentDefinition?.id?.processDefinitionKey\n ? this.translateService.instant(processDocoumentDefinition.id.processDefinitionKey)\n : processDocoumentDefinition.processName,\n })\n );\n }\n\n private setProcessDropdownWidth(): void {\n const longestName = this.processDocumentDefinitions.reduce(\n (acc, curr) =>\n !!curr.displayName && curr.displayName.length > acc ? curr.displayName.length : acc,\n 0\n );\n\n this.dropdownWidth$.next(\n longestName < 20\n ? DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.small\n : longestName < 40\n ? DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.medium\n : DOSSIER_DETAIL_START_PROCESS_DROPDOWN_WIDTH.large\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"main-content\"\n [ngClass]=\"{'main-content--no-horizontal-overflow': tabHorizontalOverflowDisabled()}\"\n>\n <div class=\"container-fluid\">\n <ng-container *ngIf=\"caseTags$ | async as caseTags\">\n @if (caseTags && caseTags.length > 0) {\n <div class=\"spacing-case-tags\">\n @for (tag of caseTags; track tag) {\n <cds-tag size=\"sm\" [type]=\"tag.tagType\">\n {{ tag.title }}\n </cds-tag>\n }\n </div>\n }\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n\n <ng-template #tabs>\n <ng-container *ngIf=\"{activeTab: activeTab$ | async} as obs\">\n <cds-tabs *ngIf=\"tabLoader\" type=\"inline\" class=\"case-detail-tabs\">\n <cds-tab\n *ngFor=\"let tab of tabLoader.tabs\"\n [active]=\"tab.name === (activeTabName$ | async)\"\n heading=\"{{ tab | tabTranslate | async }}\"\n (selected)=\"onTabSelected(tab, obs.activeTab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n </ng-template>\n <div\n #tabContentContainer\n class=\"tab-content-container\"\n [ngClass]=\"{\n 'tab-content-container--dark': isDarkMode$ | async,\n 'tab-content-container--compact': compactMode$ | async,\n }\"\n *ngIf=\"{\n noTabsConfigured: noTabsConfigured$ | async,\n showTaskList: showTaskList$ | async,\n showNoAccess: showNoAccess$ | async,\n dossierDetailLayout: dossierDetailLayout$ | async,\n openTaskAndProcessLinkInModal: openTaskAndProcessLinkInModal$ | async,\n taskAndProcessLinkOpenedInPanel: taskAndProcessLinkOpenedInPanel$ | async,\n } as tabContentObs\"\n >\n <as-split\n direction=\"horizontal\"\n [disabled]=\"!tabContentObs.dossierDetailLayout.widthAdjustable\"\n [gutterSize]=\"DOSSIER_DETAIL_GUTTER_SIZE\"\n [unit]=\"tabContentObs.dossierDetailLayout.unit\"\n >\n <as-split-area\n [size]=\"tabContentObs.dossierDetailLayout.leftPanelWidth\"\n [minSize]=\"tabContentObs.dossierDetailLayout.leftPanelMinWidth\"\n [maxSize]=\"tabContentObs.dossierDetailLayout.leftPanelMaxWidth\"\n >\n <div\n class=\"card-body bg-white p-5 position-relative tab-container\"\n [class.tab-container--compact]=\"compactMode$ | async\"\n >\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.showNoAccess\"\n description=\"{{ 'dossier.noAccess.description' | translate }}\"\n title=\"{{ 'dossier.noAccess.title' | translate }}\"\n illustration=\"valtimo-layout/img/emptystate-not-authorised.svg\"\n >\n </valtimo-no-results>\n\n <valtimo-no-results\n *ngIf=\"tabContentObs.noTabsConfigured\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </as-split-area>\n\n <as-split-area\n *ngIf=\"tabContentObs.dossierDetailLayout.showRightPanel\"\n [size]=\"tabContentObs.dossierDetailLayout.rightPanelWidth\"\n [minSize]=\"tabContentObs.dossierDetailLayout.rightPanelMinWidth\"\n [maxSize]=\"tabContentObs.dossierDetailLayout.rightPanelMaxWidth\"\n >\n @if (tabContentObs.showTaskList) {\n <div class=\"task-panel\">\n @if (!tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-dossier-detail-task-list\n [openTaskAndProcessLinkInModal]=\"tabContentObs.openTaskAndProcessLinkInModal\"\n (taskClickEvent)=\"onTaskClickEvent($event)\"\n (formSubmitEvent)=\"onFormSubmitEvent()\"\n ></valtimo-dossier-detail-task-list>\n }\n\n @if (tabContentObs.taskAndProcessLinkOpenedInPanel) {\n <valtimo-dossier-detail-task-detail\n [taskAndProcessLink]=\"tabContentObs.taskAndProcessLinkOpenedInPanel\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (closeEvent)=\"onTaskDetailsClose()\"\n (formSubmit)=\"onFormSubmitEvent()\"\n >\n </valtimo-dossier-detail-task-detail>\n }\n </div>\n }\n </as-split-area>\n </as-split>\n </div>\n </div>\n\n <valtimo-dossier-supporting-process-start-modal\n [isAdmin]=\"isAdmin$ | async\"\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row\" *ngIf=\"(customDossierHeaderItems || []).length > 0\">\n <span\n *ngFor=\"let item of customDossierHeaderItems\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs',\n }\"\n class=\"mb-0 mt-0 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n\n <span *ngIf=\"item.label && item.value\">: </span>\n\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <cds-overflow-menu-option\n *ngIf=\"canClaim && canHaveAssignee\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n >\n {{ 'dossier.claimAssigneeCase' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #unassignButton let-canHaveAssignee=\"canHaveAssignee\" let-assigneeId=\"assigneeId\">\n <cds-overflow-menu-option\n *ngIf=\"canHaveAssignee\"\n [disabled]=\"!assigneeId\"\n (selected)=\"unassignAssignee()\"\n >\n {{ 'assignDocument.remove' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #deleteButton let-canDelete=\"canDelete\">\n <cds-overflow-menu-option\n *ngIf=\"canDelete\"\n [disabled]=\"isDeleting$ | async\"\n (click)=\"deleteDocument()\"\n type=\"danger\"\n >\n {{ 'dossier.delete.delete' | translate }}\n </cds-overflow-menu-option>\n</ng-template>\n\n<ng-template #customStartTrigger>\n <button\n [size]=\"(compactMode$ | async) ? 'sm' : 'lg'\"\n cdsButton=\"primary\"\n [disabled]=\"processDocumentDefinitions.length === 0\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n >\n {{ 'dossier.startSubProcess' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"chevron--down\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.delete.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossier.delete.description\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossier.delete.delete\"\n (confirmEvent)=\"onConfirmDelete()\"\n></valtimo-confirmation-modal>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"dossier-actions\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"{\n assigneeId: assigneeId$ | async,\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n canDelete: canDelete$ | async,\n document: document$ | async,\n caseStatus: caseStatus$ | async,\n } as obs\"\n >\n <div\n class=\"dossier-status-assign-custom-title\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n @if (obs.caseStatus) {\n <cds-tag size=\"sm\" [type]=\"obs.caseStatus.tagType\" [title]=\"obs.caseStatus.title\">{{\n obs.caseStatus.title\n }}</cds-tag>\n }\n\n <div class=\"dossier-assign-user\" [ngClass]=\"{'--compact': compactMode$ | async}\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign,\n }\n \"\n ></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"caseDetailHeader\"></ng-container>\n </div>\n\n <div class=\"buttons-container\">\n <cds-overflow-menu\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n *ngIf=\"obs.canHaveAssignee || obs.canDelete\"\n flip=\"true\"\n [offset]=\"(compactMode$ | async) ? {y: 48, x: -4} : {y: 48, x: 4}\"\n class=\"overflow-button assign-overflow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n >\n </ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n unassignButton;\n context: {canHaveAssignee: obs.canHaveAssignee, assigneeId: obs.assigneeId}\n \"\n >\n </ng-container>\n <ng-container *ngTemplateOutlet=\"deleteButton; context: {canDelete: obs.canDelete}\">\n </ng-container>\n </cds-overflow-menu>\n\n <cds-overflow-menu\n valtimoCdsOverflowButton\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n [width]=\"dropdownWidth$ | async\"\n [customTrigger]=\"customStartTrigger\"\n [offset]=\"{y: 48, x: 35}\"\n class=\"overflow-button case-detail-overflow\"\n >\n <cds-overflow-menu-option\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n [attr.title]=\"processDocumentDefinition.displayName\"\n (click)=\"startProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.displayName }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n </div>\n </div>\n </ng-template>\n</ng-container>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {\n FORM_CUSTOM_COMPONENT_TOKEN,\n FormCustomComponent,\n FormCustomComponentConfig,\n FormFlowService,\n FormSubmissionResult,\n ProcessLinkService,\n UrlResolverService,\n} from '@valtimo/process-link';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ProcessService} from '@valtimo/process';\nimport {\n FormioComponent,\n FormioOptionsImpl,\n FormioSubmission,\n ValtimoFormioOptions,\n} from '@valtimo/components';\nimport {FormioBeforeSubmit} from '@formio/angular/formio.common';\nimport {FormioForm} from '@formio/angular';\nimport {UserProviderService} from '@valtimo/security';\nimport {take} from 'rxjs/operators';\nimport {CAN_VIEW_CASE_PERMISSION, DOSSIER_DETAIL_PERMISSION_RESOURCE} from '../../permissions';\nimport {DossierListService, StartModalService} from '../../services';\nimport {ConfigService, FORM_VIEW_MODEL_TOKEN, FormViewModel} from '@valtimo/config';\nimport {BehaviorSubject, Subscription} from 'rxjs';\n\n@Component({\n selector: 'valtimo-dossier-process-start-modal',\n templateUrl: './dossier-process-start-modal.component.html',\n styleUrls: ['./dossier-process-start-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DossierProcessStartModalComponent implements OnInit, OnDestroy {\n public processDefinitionKey: string;\n public processDefinitionId: string;\n public documentDefinitionName: string;\n public processName: string;\n private _startEventName: string;\n private readonly _useStartEventNameAsStartFormTitle!: boolean;\n public formDefinition: FormioForm;\n public formName: string;\n public formFlowInstanceId: string;\n public formioSubmission: FormioSubmission;\n private processLinkId: string;\n public options: ValtimoFormioOptions;\n public isAdmin: boolean;\n public isFormViewModel = false;\n public isUIComponent = false;\n @ViewChild('form', {static: false}) form: FormioComponent;\n @ViewChild('formViewModelComponent', {static: true, read: ViewContainerRef})\n public formViewModelDynamicContainer: ViewContainerRef;\n @ViewChild('formCustomComponent', {static: false, read: ViewContainerRef})\n public formCustomComponentDynamicContainer: ViewContainerRef;\n @Output() formFlowComplete = new EventEmitter();\n @Output() noProcessLinked = new EventEmitter();\n\n public readonly modalOpen$ = new BehaviorSubject<boolean>(false);\n\n private _subscriptions = new Subscription();\n private readonly _formCustomComponentConfig$ = new BehaviorSubject<\n FormCustomComponentConfig | {}\n >({});\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private processService: ProcessService,\n private documentService: DocumentService,\n private processLinkService: ProcessLinkService,\n private formFlowService: FormFlowService,\n private userProviderService: UserProviderService,\n private permissionService: PermissionService,\n private listService: DossierListService,\n private startModalService: StartModalService,\n private configService: ConfigService,\n @Optional() @Inject(FORM_VIEW_MODEL_TOKEN) private readonly formViewModel: FormViewModel,\n @Optional()\n @Inject(FORM_CUSTOM_COMPONENT_TOKEN)\n private readonly formCustomComponentConfig: FormCustomComponentConfig,\n private urlResolverService: UrlResolverService\n ) {\n this._useStartEventNameAsStartFormTitle =\n this.configService.config.featureToggles?.useStartEventNameAsStartFormTitle;\n\n this._formCustomComponentConfig$.next(formCustomComponentConfig);\n }\n\n ngOnInit() {\n this.isUserAdmin();\n }\n\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n\n private loadProcessLink() {\n this.processLinkId = null;\n this.formDefinition = null;\n this.formFlowInstanceId = null;\n if (this._useStartEventNameAsStartFormTitle) {\n this.processService.getProcessDefinitionXml(this.processDefinitionId).subscribe(result => {\n this._startEventName = this.startModalService.getStandardStartEventTitle(result.bpmn20Xml);\n });\n }\n this.processService\n .getProcessDefinitionStartProcessLink(\n this.processDefinitionId,\n null,\n this.documentDefinitionName\n )\n .pipe(take(1))\n .subscribe(startProcessResult => {\n if (startProcessResult) {\n switch (startProcessResult.type) {\n case 'form':\n this.formDefinition = startProcessResult.properties.prefilledForm;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-flow':\n this.formFlowInstanceId = startProcessResult.properties.formFlowInstanceId;\n this.isFormViewModel = false;\n this.openCdsModal();\n break;\n case 'form-view-model':\n this.formDefinition = startProcessResult.properties.formDefinition;\n this.formName = startProcessResult.properties.formName;\n this.processLinkId = startProcessResult.processLinkId;\n this.isFormViewModel = true;\n this.setFormViewModelComponent();\n this.openCdsModal();\n break;\n case 'url':\n this.processLinkId = startProcessResult.processLinkId;\n this.processLinkService\n .getVariables()\n .pipe(take(1))\n .subscribe(variables => {\n let url = this.urlResolverService.resolveUrlVariables(\n startProcessResult.properties.url,\n variables.variables\n );\n window.open(url, '_blank').focus();\n this.processLinkService\n .submitURLProcessLink(this.processLinkId)\n .subscribe(result => {\n this.submitCompleted(result);\n });\n });\n break;\n case 'ui-component':\n this.setFormCustomComponent(startProcessResult.properties.componentKey);\n this.isUIComponent = true;\n this.openCdsModal();\n break;\n }\n } else {\n this.noProcessLinked.emit();\n }\n });\n }\n\n public gotoProcessLinkScreen(): void {\n this.closeCdsModal();\n this.router.navigate(['process-links'], {queryParams: {process: this.processDefinitionKey}});\n }\n\n public get modalTitle() {\n const fallbackTitle = `Start - ${this.processName}`;\n return this._useStartEventNameAsStartFormTitle\n ? this._startEventName || fallbackTitle\n : fallbackTitle;\n }\n\n openModal(processDocumentDefinition: ProcessDocumentDefinition) {\n this.processDefinitionKey = processDocumentDefinition.id.processDefinitionKey;\n this.processDefinitionId = processDocumentDefinition.latestVersionId;\n this.documentDefinitionName = processDocumentDefinition.id.documentDefinitionId.name;\n this.processName = processDocumentDefinition.processName;\n this.options = new FormioOptionsImpl();\n this.options.disableAlerts = true;\n const formioBeforeSubmit: FormioBeforeSubmit = function (submission, callback) {\n callback(null, submission);\n };\n this.options.setHooks(formioBeforeSubmit);\n this.loadProcessLink();\n }\n\n public onSubmit(submission: FormioSubmission) {\n this.formioSubmission = submission;\n\n this.processLinkService.submitForm(this.processLinkId, submission.data).subscribe({\n next: (formSubmissionResult: FormSubmissionResult) => {\n this.submitCompleted(formSubmissionResult);\n },\n error: errors => {\n this.form.showErrors(errors);\n },\n });\n }\n\n public formFlowSubmitted(): void {\n this.formFlowComplete.emit(null);\n this.closeCdsModal();\n }\n\n public isUserAdmin(): void {\n this.userProviderService.getUserSubject().subscribe(\n userIdentity => {\n this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');\n },\n error => {\n this.isAdmin = false;\n }\n );\n }\n\n public onCloseSelect(): void {\n this.closeCdsModal();\n }\n\n private submitCompleted(formSubmissionResult: FormSubmissionResult): void {\n this.closeCdsModal();\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: formSubmissionResult.documentId,\n })\n .subscribe(canViewCase => {\n if (canViewCase) {\n this.router.navigate([\n 'dossiers',\n this.documentDefinitionName,\n 'document',\n formSubmissionResult.documentId,\n ]);\n } else {\n this.listService.forceRefresh();\n }\n });\n }\n\n private setFormViewModelComponent() {\n if (!this.formViewModel.component) return;\n this.formViewModelDynamicContainer.clear();\n const formViewModelComponent = this.formViewModelDynamicContainer.createComponent(\n this.formViewModel.component\n );\n formViewModelComponent.instance.form = this.formDefinition;\n formViewModelComponent.instance.formName = this.formName;\n formViewModelComponent.instance.isStartForm = true;\n formViewModelComponent.instance.processDefinitionKey = this.processDefinitionKey;\n formViewModelComponent.instance.documentDefinitionName = this.documentDefinitionName;\n this._subscriptions.add(\n formViewModelComponent.instance.formSubmit.subscribe(() => {\n this.listService.forceRefresh();\n this.closeCdsModal();\n })\n );\n }\n\n private setFormCustomComponent(formCustomComponentKey: string): void {\n this.formCustomComponentDynamicContainer.clear();\n if (!this.formCustomComponentConfig) return;\n this._formCustomComponentConfig$.pipe(take(1)).subscribe(formCustomComponentConfig => {\n const customComponent = formCustomComponentConfig[formCustomComponentKey];\n const renderedComponent = this.formCustomComponentDynamicContainer.createComponent(\n customComponent\n ) as ComponentRef<FormCustomComponent>;\n\n renderedComponent.instance.processDefinitionKey = this.processDefinitionKey;\n renderedComponent.instance.documentDefinitionName = this.documentDefinitionName;\n\n renderedComponent.instance.submittedEvent.subscribe(() => {\n this.closeCdsModal();\n });\n });\n }\n\n private openCdsModal(): void {\n this.modalOpen$.next(true);\n }\n\n private closeCdsModal(): void {\n this.modalOpen$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal [open]=\"modalOpen$ | async\" valtimoCdsModal size=\"sm\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ modalTitle }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\" class=\"process-start-modal-content\">\n <ng-template #formViewModelComponent></ng-template>\n\n <ng-template #formCustomComponent></ng-template>\n\n @if (formDefinition && !isFormViewModel && !isUIComponent) {\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n }\n\n @if (formFlowInstanceId) {\n <valtimo-form-flow\n [formFlowInstanceId]=\"formFlowInstanceId\"\n (formFlowComplete)=\"formFlowSubmitted()\"\n ></valtimo-form-flow>\n }\n\n @if (!formFlowInstanceId && !formDefinition && isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundAdmin'\"\n ></div>\n <div class=\"mb-0 mt-4 p-3 text-center\">\n <button\n (click)=\"gotoProcessLinkScreen()\"\n class=\"btn btn-secondary btn-space\"\n id=\"process-link-button\"\n type=\"button\"\n >\n {{ 'formManagement.gotoProcessLinksButton' | translate }}\n </button>\n </div>\n }\n\n @if (!formFlowInstanceId && !formDefinition && !isAdmin && !isUIComponent) {\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFoundUser'\"\n ></div>\n }\n </section>\n</cds-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {CaseSettings, DocumentService, ProcessDocumentDefinition} from '@valtimo/document';\nimport {NotificationService} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {DossierListService} from '../../services';\nimport {DossierProcessStartModalComponent} from '../dossier-process-start-modal/dossier-process-start-modal.component';\n\ndeclare const $;\n\n@Component({\n selector: 'valtimo-dossier-list-actions',\n templateUrl: './dossier-list-actions.component.html',\n styleUrls: ['./dossier-list-actions.component.scss'],\n providers: [NotificationService],\n})\nexport class DossierListActionsComponent implements OnInit {\n @ViewChild('processStartModal') processStart: DossierProcessStartModalComponent;\n\n private readonly _loading$ = new BehaviorSubject<boolean>(true);\n @Input() set loading(value: boolean) {\n this._loading$.next(value);\n }\n\n @Output() public readonly formFlowComplete = new EventEmitter();\n @Output() public readonly startButtonDisableEvent = new EventEmitter<boolean>();\n\n private readonly _caseSettings$: BehaviorSubject<CaseSettings> = new BehaviorSubject(null);\n\n public readonly caseSettings$ = this._caseSettings$.pipe(filter(settings => !!settings));\n\n private get _caseSettings(): CaseSettings | null {\n return this._caseSettings$.getValue();\n }\n\n public readonly associatedProcessDocumentDefinitions$: Observable<\n Array<ProcessDocumentDefinition>\n > = this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n combineLatest([\n documentDefinitionName\n ? this.documentService.findProcessDocumentDefinitionsByCanInitializeDocument(\n documentDefinitionName,\n true\n )\n : of([]),\n this._loading$,\n this.caseSettings$,\n ])\n ),\n map(([processDocumentDefinitions, loading, caseSettings]) => {\n this._cachedAssociatedProcessDocumentDefinitions = processDocumentDefinitions;\n this.startButtonDisableEvent.emit(\n loading || (processDocumentDefinitions.length === 0 && !caseSettings.hasExternalStartForm)\n );\n return processDocumentDefinitions.filter(definition => definition.canInitializeDocument);\n })\n );\n\n public readonly startSelectionModalOpen$ = new BehaviorSubject<boolean>(false);\n\n private selectedProcessDocumentDefinition: ProcessDocumentDefinition | null = null;\n private _cachedAssociatedProcessDocumentDefinitions: Array<ProcessDocumentDefinition> = [];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly listService: DossierListService,\n private readonly notificationService: NotificationService,\n private readonly router: Router,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(\n this.listService.documentDefinitionName$\n .pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getCaseSettings(documentDefinitionName)\n )\n )\n .subscribe(caseSettings => {\n this._caseSettings$.next(caseSettings);\n })\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public startDossier(): void {\n const associatedProcessDocumentDefinitions = this._cachedAssociatedProcessDocumentDefinitions;\n const hasExternalStartForm = this._caseSettings?.hasExternalStartForm;\n\n if (associatedProcessDocumentDefinitions.length > 1) {\n this.startSelectionModalOpen$.next(true);\n } else {\n if (hasExternalStartForm && associatedProcessDocumentDefinitions.length === 0) {\n this.openExternalCaseStartForm();\n } else if (associatedProcessDocumentDefinitions.length === 1 && !hasExternalStartForm) {\n this.selectedProcessDocumentDefinition = associatedProcessDocumentDefinitions[0];\n this.showStartProcessModal();\n } else if (associatedProcessDocumentDefinitions.length > 0) {\n this.startSelectionModalOpen$.next(true);\n }\n }\n }\n\n public selectProcess(processDocumentDefinition: ProcessDocumentDefinition): void {\n this.selectedProcessDocumentDefinition = processDocumentDefinition;\n this.startSelectionModalOpen$.next(false);\n this.showStartProcessModal();\n }\n\n public onFormFlowComplete(): void {\n this.formFlowComplete.emit(null);\n }\n\n public onNoProcessLinked(): void {\n this.notificationService.ngOnDestroy();\n\n this.notificationService.showActionable({\n type: 'warning',\n lowContrast: true,\n title: this.translateService.instant('dossier.noLinkedStartProcessNotification'),\n actions: [\n {\n text: this.translateService.instant('dossier.configure'),\n click: () => this.router.navigate(['/process-links']),\n },\n ],\n duration: CARBON_CONSTANTS.notificationDuration,\n });\n }\n\n public openExternalCaseStartForm(closeModal = false): void {\n window.open(this._caseSettings?.externalStartFormUrl, '_blank');\n\n if (closeModal) this.startSelectionModalOpen$.next(false);\n }\n\n public onCloseSelect(): void {\n this.startSelectionModalOpen$.next(false);\n }\n\n private showStartProcessModal(): void {\n if (this.selectedProcessDocumentDefinition !== null) {\n this.processStart.openModal(this.selectedProcessDocumentDefinition);\n this.selectedProcessDocumentDefinition = null;\n }\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n [open]=\"startSelectionModalOpen$ | async\"\n size=\"xs\"\n *ngIf=\"{\n associatedProcessDocumentDefinitions: associatedProcessDocumentDefinitions$ | async,\n caseSettings: caseSettings$ | async,\n } as obs\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\"\n ><h3 cdsModalHeaderHeading>\n {{ 'dashboard.startProcess.title' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent class=\"start-modal-content\" [cdsLayer]=\"1\">\n <cds-clickable-tile\n *ngIf=\"obs.caseSettings?.hasExternalStartForm\"\n (click)=\"openExternalCaseStartForm(true)\"\n >\n {{ obs?.caseSettings.externalStartFormDescription || '-' }}\n </cds-clickable-tile>\n\n <cds-clickable-tile\n *ngFor=\"let processDocumentDefinition of obs?.associatedProcessDocumentDefinitions\"\n (click)=\"selectProcess(processDocumentDefinition)\"\n >\n {{ processDocumentDefinition.processName }}\n </cds-clickable-tile>\n </section>\n</cds-modal>\n\n<valtimo-dossier-process-start-modal\n #processStartModal\n (formFlowComplete)=\"onFormFlowComplete()\"\n (noProcessLinked)=\"onNoProcessLinked()\"\n></valtimo-dossier-process-start-modal>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {PermissionService} from '@valtimo/access-control';\nimport {\n BreadcrumbService,\n CarbonListComponent,\n CarbonListNoResultsMessage,\n CarbonPaginationSelection,\n CASES_WITHOUT_STATUS_KEY,\n ListField,\n PageTitleService,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {\n AssigneeFilter,\n ConfigService,\n DefinitionColumn,\n Direction,\n DossierListTab,\n SearchField,\n SearchFieldValues,\n SortState,\n} from '@valtimo/config';\nimport {\n AdvancedDocumentSearchRequest,\n AdvancedDocumentSearchRequestImpl,\n Document,\n Documents,\n DocumentService,\n InternalCaseStatus,\n InternalCaseStatusUtils,\n SpecifiedDocuments,\n CaseTag,\n CaseTagsUtils,\n} from '@valtimo/document';\nimport {Tab, Tabs, TagType} from 'carbon-components-angular';\nimport {isEqual} from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n defaultIfEmpty,\n distinctUntilChanged,\n filter,\n forkJoin,\n map,\n Observable,\n of,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\nimport {\n DEFAULT_DOSSIER_LIST_TABS,\n DOSSIER_LIST_NO_RESULTS_MESSAGE,\n DOSSIER_LIST_TABLE_TRANSLATIONS,\n} from '../../constants';\nimport {\n CAN_CREATE_CASE_PERMISSION,\n CAN_VIEW_CASE_PERMISSION,\n DOSSIER_DETAIL_PERMISSION_RESOURCE,\n} from '../../permissions';\nimport {\n DossierBulkAssignService,\n DossierColumnService,\n DossierListAssigneeService,\n DossierListPaginationService,\n DossierListSearchService,\n DossierListService,\n DossierListStatusService,\n DossierParameterService,\n DossierListCaseTagService,\n} from '../../services';\nimport {DossierListActionsComponent} from '../dossier-list-actions/dossier-list-actions.component';\n\n@Component({\n selector: 'valtimo-dossier-list',\n templateUrl: './dossier-list.component.html',\n styleUrls: ['./dossier-list.component.scss'],\n providers: [\n DossierListService,\n DossierColumnService,\n DossierListAssigneeService,\n DossierParameterService,\n DossierListPaginationService,\n DossierListSearchService,\n DossierListStatusService,\n DossierListCaseTagService,\n ],\n})\nexport class DossierListComponent implements OnInit, OnDestroy {\n @ViewChild(CarbonListComponent) carbonList: CarbonListComponent;\n @ViewChild(DossierListActionsComponent) listActionsComponent: DossierListActionsComponent;\n @ViewChild(Tabs) tabsComponent: Tabs;\n\n public activeTab: DossierListTab = null;\n public loadingFields = true;\n public loadingPagination = true;\n public loadingSearchFields = true;\n public loadingAssigneeFilter = true;\n public loadingDocumentItems = true;\n public loadingStatuses = true;\n public pagination!: Pagination;\n public canHaveAssignee!: boolean;\n public visibleDossierTabs: Array<DossierListTab> | null = null;\n\n public readonly defaultTabs = DEFAULT_DOSSIER_LIST_TABS;\n public readonly tableTranslations = DOSSIER_LIST_TABLE_TRANSLATIONS;\n\n public readonly noResultsMessage$ = new BehaviorSubject<CarbonListNoResultsMessage>(\n DOSSIER_LIST_NO_RESULTS_MESSAGE\n );\n public readonly disableStartButton$ = new BehaviorSubject<boolean>(false);\n public readonly showAssignModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangePageModal$ = new BehaviorSubject<boolean>(false);\n public readonly showChangeTabModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly searchFields$: Observable<Array<SearchField> | null> =\n this.searchService.documentSearchFields$.pipe(tap(() => (this.loadingSearchFields = false)));\n\n public readonly statuses$ = this.statusService.caseStatuses$.pipe(\n tap(() => (this.loadingStatuses = false))\n );\n public readonly caseTags$ = this.dossierListCaseTagService.caseTags$.pipe(\n tap(() => (this.loadingStatuses = false))\n );\n public readonly selectedStatuses$ = this.statusService.selectedCaseStatuses$;\n public readonly selectedCaseTags$ = this.dossierListCaseTagService.selectedCaseTags$;\n\n public readonly documentDefinitionName$ = this.listService.documentDefinitionName$;\n\n public readonly selectedDocumentIds$ = new BehaviorSubject<string[]>([]);\n\n public readonly schema$ = this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.documentService.getDocumentDefinition(documentDefinitionName)\n ),\n map(documentDefinition => documentDefinition?.schema),\n tap(schema => {\n if (schema?.title) {\n this.pageTitleService.setCustomPageTitle(schema?.title, true);\n }\n })\n );\n public readonly canCreateDocument$: Observable<boolean> = this.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.permissionService.requestPermission(CAN_CREATE_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocumentDefinition,\n identifier: documentDefinitionName,\n })\n )\n );\n\n public readonly searchFieldValues$ = this.parameterService.searchFieldValues$;\n public readonly assigneeFilter$: Observable<AssigneeFilter> =\n this.assigneeService.assigneeFilter$.pipe(\n tap(assigneeFilter => (this.activeTab = assigneeFilter as DossierListTab))\n );\n public readonly paginationChange$ = new BehaviorSubject<CarbonPaginationSelection | null>(null);\n public readonly tabChange$ = new BehaviorSubject<DossierListTab | null>(null);\n private readonly _pagination$ = this.paginationService.pagination$.pipe(\n tap(pagination => {\n this.pagination = pagination;\n this.loadingPagination = false;\n })\n );\n private readonly _hasEnvColumnConfig$: Observable<boolean> = this.listService.hasEnvColumnConfig$;\n private readonly _hasApiColumnConfig$ = new BehaviorSubject<boolean>(false);\n private readonly _canHaveAssignee$: Observable<boolean> = this.assigneeService.canHaveAssignee$;\n private readonly _columns$: Observable<Array<DefinitionColumn>> =\n this.listService.documentDefinitionName$.pipe(\n switchMap(documentDefinitionName =>\n this.columnService.getDefinitionColumns(documentDefinitionName)\n ),\n map(res => {\n this._hasApiColumnConfig$.next(res.hasApiConfig);\n return res.columns;\n }),\n tap(columns => {\n this.listService.documentDefinitionName$.pipe(take(1)).subscribe(_ => {\n this.paginationService.setPagination(columns);\n });\n })\n );\n\n public readonly showStatusSelector$ = this.statusService.showStatusSelector$;\n public readonly showCaseTagsSelector$ = this.dossierListCaseTagService.showCaseTagsSelector$;\n\n private readonly INTERNAL_STATUS_COLUMN = 'internalStatus';\n private readonly CASE_TAGS_COLUMN = 'caseTags';\n private readonly _statusField: ListField = {\n label: 'document.status',\n key: this.INTERNAL_STATUS_COLUMN,\n viewType: ViewType.TAGS,\n sortable: true,\n };\n private readonly _internalStatusKeys$ = new BehaviorSubject<string[]>([\n this.INTERNAL_STATUS_COLUMN,\n ]);\n private readonly _caseTagsKeys$ = new BehaviorSubject<string[]>([this.CASE_TAGS_COLUMN]);\n public readonly fields$: Observable<Array<ListField>> = combineLatest([\n this._canHaveAssignee$,\n this._columns$,\n this._hasEnvColumnConfig$,\n this._hasApiColumnConfig$,\n this.statuses$,\n this.translateService.stream('key'),\n ]).pipe(\n tap(([canHaveAssignee]) => {\n this.canHaveAssignee = canHaveAssignee;\n }),\n map(([canHaveAssignee, columns, hasEnvConfig, hasApiConfig, statuses]) => {\n this._internalStatusKeys$.next([\n ...this._internalStatusKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.INTERNAL_STATUS_COLUMN ? [...acc, curr.translationKey] : acc,\n []\n ),\n ]);\n this._caseTagsKeys$.next([\n ...this._caseTagsKeys$.getValue(),\n ...columns.reduce(\n (acc, curr) =>\n curr.propertyName === this.CASE_TAGS_COLUMN ? [...acc, curr.translationKey] : acc,\n []\n ),\n ]);\n const filteredAssigneeColumns = this.assigneeService.filterAssigneeColumns(\n columns,\n canHaveAssignee\n );\n const listFields = this.columnService.mapDefinitionColumnsToListFields(\n filteredAssigneeColumns,\n hasEnvConfig,\n hasApiConfig\n );\n const fieldsToReturn = this.assigneeService.addAssigneeListField(\n columns,\n listFields,\n canHaveAssignee\n );\n\n return statuses.some(\n (status: InternalCaseStatus) => status.key !== CASES_WITHOUT_STATUS_KEY\n ) && !hasApiConfig\n ? [...fieldsToReturn, this._statusField]\n : fieldsToReturn;\n }),\n tap(listFields => {\n const defaultListField = listFields.find(field => field.default);\n // set default sort state if no pagination query parameters for sorting are available\n this.parameterService.queryPaginationParams$\n .pipe(take(1))\n .subscribe(queryPaginationParams => {\n if (defaultListField && !queryPaginationParams?.sort?.isSorting) {\n const sortDirection =\n typeof defaultListField.default === 'string' ? defaultListField.default : 'DESC';\n this.paginationService.sortChanged({\n isSorting: true,\n state: {name: defaultListField.key, direction: sortDirection as Direction},\n });\n }\n });\n }),\n tap(() => {\n this.loadingFields = false;\n })\n );\n\n private readonly _documentSearchRequest$: Observable<AdvancedDocumentSearchRequest> =\n combineLatest([this._pagination$, this.listService.documentDefinitionName$]).pipe(\n filter(([pagination]) => !!pagination),\n map(([pagination, documentDefinitionName]) => {\n const page = pagination.page - 1;\n\n return new AdvancedDocumentSearchRequestImpl(\n documentDefinitionName,\n page >= 0 ? page : 0,\n pagination.size,\n pagination.sort\n );\n })\n );\n\n public readonly documentItems$: Observable<any[]> = this.listService.checkRefresh$.pipe(\n switchMap(() =>\n combineLatest([\n this._documentSearchRequest$,\n this.assigneeFilter$,\n this.searchFieldValues$,\n this.statusService.selectedCaseStatuses$,\n this.dossierListCaseTagService.selectedCaseTags$,\n this.listService.forceRefresh$,\n this._hasEnvColumnConfig$,\n this._hasApiColumnConfig$,\n this.statusService.caseStatuses$,\n this.dossierListCaseTagService.caseTags$,\n ]).pipe(debounceTime(50))\n ),\n distinctUntilChanged(\n (\n [\n prevSearchRequest,\n prevAssigneeFilter,\n prevSearchFieldValues,\n prevSelectedStatuses,\n prevCaseTags,\n prevForceRefresh,\n ],\n [\n currSearchRequest,\n currAssigneeFilter,\n currSearchFieldValues,\n currSelectedStatuses,\n currCaseTags,\n currForceRefresh,\n ]\n ) =>\n isEqual(\n {\n ...prevSearchRequest,\n assignee: prevAssigneeFilter,\n ...prevSearchFieldValues,\n ...prevSelectedStatuses.map((status: InternalCaseStatus) => status.key),\n ...prevCaseTags.map((caseTag: CaseTag) => caseTag.key),\n forceRefresh: prevForceRefresh,\n },\n {\n ...currSearchRequest,\n assignee: currAssigneeFilter,\n ...currSearchFieldValues,\n ...currSelectedStatuses.map((status: InternalCaseStatus) => status.key),\n ...currCaseTags.map((caseTag: CaseTag) => caseTag.key),\n forceRefresh: currForceRefresh,\n }\n )\n ),\n switchMap(\n ([\n documentSearchRequest,\n assigneeFilter,\n searchValues,\n selectedStatuses,\n selectedCaseTags,\n _,\n hasEnvColumnConfig,\n hasApiColumnConfig,\n allStatuses,\n ]) => {\n const obsEnv: Observable<boolean> = of(hasEnvColumnConfig);\n const obsApi: Observable<boolean> = of(hasApiColumnConfig);\n const statusKeys: (string | null)[] = selectedStatuses.map((status: InternalCaseStatus) =>\n status.key === CASES_WITHOUT_STATUS_KEY ? null : status.key\n );\n const caseTagsKeys = selectedCaseTags.map(caseTag => caseTag.key);\n if ((Object.keys(searchValues) || []).length > 0) {\n return forkJoin({\n documents:\n hasEnvColumnConfig || !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n this.searchService.mapSearchValuesToFilters(searchValues),\n statusKeys,\n caseTagsKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n this.searchService.mapSearchValuesToFilters(searchValues),\n statusKeys,\n caseTagsKeys\n ),\n hasEnvColumnConfig: obsEnv,\n hasApiColumnConfig: obsApi,\n isSearchResult: of(true),\n allStatuses: of(allStatuses),\n });\n }\n\n return forkJoin({\n documents:\n hasEnvColumnConfig || !hasApiColumnConfig\n ? this.documentService.getDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n undefined,\n statusKeys,\n caseTagsKeys\n )\n : this.documentService.getSpecifiedDocumentsSearch(\n documentSearchRequest,\n 'AND',\n assigneeFilter,\n undefined,\n statusKeys,\n caseTagsKeys\n ),\n hasEnvColumnConfig: obsEnv,\n hasApiColumnConfig: obsApi,\n isSearchResult: of(false),\n allStatuses: of(allStatuses),\n });\n }\n ),\n switchMap(res =>\n combineLatest([\n of(res),\n forkJoin(\n res.documents.content.map(document =>\n this.permissionService\n .requestPermission(CAN_VIEW_CASE_PERMISSION, {\n resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,\n identifier: document.id,\n })\n .pipe(take(1))\n )\n ).pipe(defaultIfEmpty([] as boolean[])),\n this._internalStatusKeys$,\n this._caseTagsKeys$,\n ])\n ),\n map(([res, documentsAuthorization, statusColumnKeys, caseTagsKeys]) => ({\n ...res,\n documents: {\n ...res.documents,\n content: res.documents.content.map((document, index) => ({\n ...document,\n locked: !documentsAuthorization[index],\n })),\n },\n statusColumnKeys,\n caseTagsKeys,\n })),\n map(\n (res: {\n documents: Documents | SpecifiedDocuments;\n hasEnvColumnConfig: boolean;\n hasApiColumnConfig: boolean;\n isSearchResult: boolean;\n selectedStatuses: InternalCaseStatus[];\n allStatuses: InternalCaseStatus[];\n statusColumnKeys: string[];\n caseTagsKeys: string[];\n }) => {\n this.paginationService.setCollectionSize(res.documents);\n this.paginationService.checkPage(res.documents);\n this.updateNoResultsMessage(res.isSearchResult);\n return {\n data: this.listService.mapDocuments(\n res.documents,\n res.hasEnvColumnConfig,\n res.hasApiColumnConfig\n ),\n statuses: res.allStatuses,\n statusColumnKeys: res.statusColumnKeys,\n caseTagsKeys: res.caseTagsKeys,\n };\n }\n ),\n map(res => {\n if (!Array.isArray(res.data)) return res.data;\n return res.data.map(item => {\n const mappedInternalStatusColumns = res.statusColumnKeys.reduce((acc, curr) => {\n const status = res.statuses.find(\n (status: InternalCaseStatus) => status.key === item[curr] || status.key === item.status\n );\n return !status\n ? acc\n : {\n ...acc,\n [curr]: {\n content: status.title,\n type: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(status.color),\n },\n };\n }, {});\n const mappedTagColumns = res.caseTagsKeys.reduce((acc, curr) => {\n if (item[curr]) {\n return {\n ...acc,\n [curr]: item[curr].map(tag => ({\n content: tag.title,\n type: CaseTagsUtils.getTagTypeFromCaseTagColor(tag.color),\n })),\n };\n }\n return acc;\n }, {});\n\n return {\n ...item,\n ...mappedInternalStatusColumns,\n ...mappedTagColumns,\n };\n });\n }),\n tap(() => {\n this.loadingAssigneeFilter = false;\n this.loadingDocumentItems = false;\n })\n );\n\n private _previousDocumentDefinitionName!: string;\n private _documentDefinitionNameSubscription!: Subscription;\n\n constructor(\n private readonly assigneeService: DossierListAssigneeService,\n private readonly breadcrumbService: BreadcrumbService,\n private readonly bulkAssignService: DossierBulkAssignService,\n private readonly columnService: DossierColumnService,\n private readonly configService: ConfigService,\n private readonly documentService: DocumentService,\n private readonly listService: DossierListService,\n private readonly pageTitleService: PageTitleService,\n private readonly paginationService: DossierListPaginationService,\n private readonly parameterService: DossierParameterService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n private readonly searchService: DossierListSearchService,\n private readonly translateService: TranslateService,\n private readonly permissionService: PermissionService,\n private readonly statusService: DossierListStatusService,\n private readonly dossierListCaseTagService: DossierListCaseTagService\n ) {}\n\n public ngOnInit(): void {\n this.setVisibleTabs();\n this.openDocumentDefinitionNameSubscription();\n }\n\n public ngOnDestroy(): void {\n this._documentDefinitionNameSubscription?.unsubscribe();\n this.pageTitleService.enableReset();\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n\n public search(searchFieldValues: SearchFieldValues): void {\n this.searchService.search(searchFieldValues);\n }\n\n public rowClick(item: any): void {\n this.listService.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {\n this.breadcrumbService.cacheQueryParams(\n `/dossiers/${documentDefinitionName}`,\n this.route.snapshot.queryParams\n );\n this.router.navigate([`/dossiers/${documentDefinitionName}/document/${item.id}`]);\n });\n }\n\n public tabChange(tab: DossierListTab): void {\n if (!this.activeTab) {\n this.activeTab = tab;\n this.updateNoResultsMessage(false);\n return;\n }\n\n if (this.activeTab.toLowerCase() === tab.toLowerCase()) {\n return;\n }\n\n if (this.carbonList.model.selectedRowsCount()) {\n this.showChangeTabModal$.next(true);\n this.tabChange$.next(tab);\n return;\n }\n\n this.onChangeTabConfirm(tab);\n }\n\n public onChangeTabCancel(): void {\n if (!this.tabsComponent) {\n return;\n }\n\n const prevTab: Tab | undefined = this.tabsComponent.tabs.find(\n (tab: Tab) => tab.id === this.activeTab\n );\n\n if (!prevTab) {\n return;\n }\n\n this.tabsComponent.tabs.find((tab: Tab) => tab.active).active = false;\n prevTab.active = true;\n }\n\n public pageChange(page: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page, size: this.pagination.size});\n return;\n }\n this.paginationService.pageChange(page);\n }\n\n public pageSizeChange(size: number): void {\n if (this.carbonList?.model.selectedRowsCount()) {\n this.showChangePageModal$.next(true);\n this.paginationChange$.next({page: this.pagination.page, size});\n return;\n }\n this.paginationService.pageSizeChange(size);\n }\n\n public sortChanged(newSortState: SortState): void {\n this.paginationService.sortChanged(newSortState);\n }\n\n private onChangeTabConfirm(tab: DossierListTab): void {\n this.loadingAssigneeFilter = true;\n this.activeTab = tab;\n this.updateNoResultsMessage(false);\n this.paginationService.setPage(1);\n this.assigneeService.setAssigneeFilter(tab);\n }\n\n public showAssignModal(): void {\n this.selectedDocumentIds$.next(\n this.carbonList.selectedItems.map((document: Document) => document.id)\n );\n this.showAssignModal$.next(true);\n }\n\n public onCloseEvent(assigneeId: null | string, documentIds: string[]): void {\n this.showAssignModal$.next(false);\n if (!assigneeId) {\n return;\n }\n\n this.bulkAssignService.bulkAssign(assigneeId, documentIds).subscribe(() => {\n this.forceRefresh();\n });\n }\n\n public onChangePageConfirm(pagination: CarbonPaginationSelection): void {\n if (pagination.size !== this.pagination.size) {\n this.paginationService.pageSizeChange(pagination.size);\n return;\n }\n\n this.paginationService.pageChange(pagination.page);\n }\n\n public startDossier(): void {\n this.listActionsComponent.startDossier();\n }\n\n public forceRefresh(): void {\n this.listService.forceRefresh();\n }\n\n public onSelectedStatusesChange(statuses: InternalCaseStatus[]): void {\n this.statusService.setSelectedStatuses(statuses);\n }\n\n public onSelectedCaseTagsChange(caseTags: CaseTag[]): void {\n this.dossierListCaseTagService.setSelectedCaseTags(caseTags);\n }\n\n public onStartButtonDisableEvent(disabled: boolean): void {\n this.disableStartButton$.next(disabled);\n }\n\n private openDocumentDefinitionNameSubscription(): void {\n this._documentDefinitionNameSubscription = this.route.params\n .pipe(\n map((params: Params) => params?.documentDefinitionName),\n filter(docDefName => !!docDefName),\n distinctUntilChanged()\n )\n .subscribe(documentDefinitonName => {\n if (this._previousDocumentDefinitionName) {\n this.parameterService.clearParameters();\n this.parameterService.clearSearchFieldValues();\n }\n this._previousDocumentDefinitionName = documentDefinitonName;\n this.paginationService.clearPagination();\n this.assigneeService.resetAssigneeFilter();\n this.listService.setDocumentDefinitionName(documentDefinitonName);\n this.setLoading();\n });\n }\n\n private setLoading(): void {\n this.loadingFields = true;\n this.loadingPagination = true;\n this.loadingSearchFields = true;\n this.loadingAssigneeFilter = true;\n this.loadingDocumentItems = true;\n this.loadingStatuses = true;\n }\n\n private setVisibleTabs(): void {\n this.visibleDossierTabs = this.configService.config?.visibleDossierListTabs || null;\n }\n\n private updateNoResultsMessage(isSearchResult: boolean): void {\n this.noResultsMessage$.next(\n isSearchResult\n ? {\n description: 'dossier.noResults.search.description',\n isSearchResult,\n title: 'dossier.noResults.search.title',\n }\n : {\n description: `dossier.noResults.${this.activeTab ?? 'ALL'}.description`,\n isSearchResult,\n title: `dossier.noResults.${this.activeTab ?? 'ALL'}.title`,\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n fields: fields$ | async,\n documentItems: documentItems$ | async,\n noResultsMessage: noResultsMessage$ | async,\n searchFields: searchFields$ | async,\n schema: schema$ | async,\n showAssignModal: showAssignModal$ | async,\n selectedDocumentIds: selectedDocumentIds$ | async,\n statuses: statuses$ | async,\n caseTags: caseTags$ | async,\n selectedStatuses: selectedStatuses$ | async,\n selectedCaseTags: selectedCaseTags$ | async,\n showStatusSelector: showStatusSelector$ | async,\n showCaseTagsSelector: showCaseTagsSelector$ | async,\n loaded:\n !loadingFields &&\n !loadingPagination &&\n !loadingSearchFields &&\n !loadingAssigneeFilter &&\n !loadingDocumentItems,\n } as obs\"\n>\n <div class=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-dossier-list-actions\n [loading]=\"!obs.loaded\"\n (formFlowComplete)=\"forceRefresh()\"\n (startButtonDisableEvent)=\"onStartButtonDisableEvent($event)\"\n ></valtimo-dossier-list-actions>\n <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngIf=\"obs.loaded; else loading\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-container *ngTemplateOutlet=\"bulkAssignModal; context: {obs: obs}\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changePageModal\"></ng-container>\n\n <ng-container *ngTemplateOutlet=\"changeTabModal\"></ng-container>\n</ng-container>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n (doSearch)=\"search($event)\"\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n [defaultValues]=\"searchFieldValues$ | async\"\n [inputDisabled]=\"!obs.loaded\"\n [externalSearchField]=\"obs.showStatusSelector\"\n >\n <valtimo-status-selector\n *ngIf=\"obs.showStatusSelector\"\n [statuses]=\"obs.statuses\"\n [selectedStatuses]=\"obs.selectedStatuses\"\n [disabled]=\"!obs.loaded\"\n (selectedStatusesChangeEvent)=\"onSelectedStatusesChange($event)\"\n ></valtimo-status-selector>\n\n <valtimo-case-tags-selector\n *ngIf=\"obs.showCaseTagsSelector\"\n [caseTags]=\"obs.caseTags\"\n [selectedCaseTags]=\"obs.selectedCaseTags\"\n [disabled]=\"!obs.loaded\"\n (selectedCaseTagsChangeEvent)=\"onSelectedCaseTagsChange($event)\"\n ></valtimo-case-tags-selector>\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-carbon-list\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [initialSortState]=\"pagination.sort\"\n [items]=\"obs.documentItems\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierList\"\n lockedTooltipTranslationKey=\"dossier.rowLocked\"\n [showSelectionColumn]=\"canHaveAssignee\"\n [tableTranslations]=\"tableTranslations\"\n (paginationClicked)=\"pageChange($event)\"\n (paginationSet)=\"pageSizeChange($event)\"\n (rowClicked)=\"rowClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <ng-container carbonToolbarActions>\n <button cdsButton=\"primary\" (click)=\"showAssignModal()\">\n {{ 'dossier.bulkAssign.assign' | translate }}\n </button>\n </ng-container>\n\n <div carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"dossierListActions\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"obs.noResultsMessage.isSearchResult ? null : dossierListActions\"\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n ></valtimo-no-results>\n\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs\n *ngIf=\"!visibleDossierTabs; else configuredTabs\"\n type=\"contained\"\n class=\"dossier-list-tabs\"\n >\n <cds-tab\n *ngFor=\"let tab of defaultTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'dossier.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #configuredTabs>\n <ng-container *ngIf=\"assigneeFilter$ | async as assigneeFilter\">\n <cds-tabs type=\"contained\" class=\"dossier-list-tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleDossierTabs; trackBy: trackByIndex\"\n [active]=\"assigneeFilter === tab\"\n heading=\"{{ 'dossier.tabs.' + tab | translate }}\"\n [id]=\"tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n </ng-container>\n</ng-template>\n\n<ng-template #loading\n ><valtimo-carbon-list [loading]=\"true\">\n <div tabs *ngIf=\"canHaveAssignee\">\n <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n </div> </valtimo-carbon-list\n></ng-template>\n\n<ng-template #bulkAssignModal let-obs=\"obs\">\n <valtimo-dossier-bulk-assign-modal\n [documentIds]=\"obs.selectedDocumentIds\"\n [open]=\"obs.showAssignModal\"\n (closeEvent)=\"onCloseEvent($event, obs.selectedDocumentIds)\"\n ></valtimo-dossier-bulk-assign-modal>\n</ng-template>\n\n<ng-template #changePageModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.changePageModal.confirm\"\n contentTranslationKey=\"dossier.changePageModal.content\"\n [outputOnConfirm]=\"paginationChange$ | async\"\n [showModalSubject$]=\"showChangePageModal$\"\n titleTranslationKey=\"dossier.changePageModal.title\"\n (confirmEvent)=\"onChangePageConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #changeTabModal>\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dossier.changeTabModal.confirm\"\n contentTranslationKey=\"dossier.changeTabModal.content\"\n [outputOnConfirm]=\"tabChange$ | async\"\n [showModalSubject$]=\"showChangeTabModal$\"\n titleTranslationKey=\"dossier.changeTabModal.title\"\n (cancelEvent)=\"onChangeTabCancel()\"\n (confirmEvent)=\"onChangeTabConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #dossierListActions>\n <button\n *ngIf=\"canCreateDocument$ | async\"\n cdsButton=\"primary\"\n [disabled]=\"disableStartButton$ | async\"\n (click)=\"startDossier()\"\n >\n {{ 'Start Dossier' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {TaskService} from '@valtimo/task';\nimport {ActivatedRoute} from '@angular/router';\nimport {ToastrService} from 'ngx-toastr';\nimport {Location} from '@angular/common';\nimport moment from 'moment';\nimport {DocumentService} from '@valtimo/document';\nimport {DossierService} from '../../services/dossier.service';\n\nmoment.locale(localStorage.getItem('langKey') || '');\n\n@Component({\n selector: 'valtimo-dossier-update',\n templateUrl: './dossier-update.component.html',\n styleUrls: ['./dossier-update.component.css'],\n})\nexport class DossierUpdateComponent implements OnInit {\n public task: any;\n public taskId: string;\n public schema: any;\n public documentId: string;\n public document: any;\n public page: any;\n public documentDefinitionName: string;\n public implementationDefinitions: any;\n public customDefinitions: any = {};\n\n constructor(\n private taskService: TaskService,\n private documentService: DocumentService,\n private route: ActivatedRoute,\n private toastr: ToastrService,\n private location: Location,\n dossierService: DossierService\n ) {\n const snapshot = this.route.snapshot.paramMap;\n this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';\n this.documentId = snapshot.get('documentId') || '';\n this.taskId = snapshot.get('taskId') || '';\n this.implementationDefinitions = dossierService.getImplementationEnvironmentDefinitions(\n this.documentDefinitionName\n );\n this.loadDocumentDefinition(this.documentDefinitionName);\n this.loadDocument(this.documentId);\n }\n\n ngOnInit() {\n this.getTask(this.taskId);\n if (this.implementationDefinitions.definitions.detail.summary) {\n this.customDefinitions = this.implementationDefinitions.definitions.detail.summary;\n }\n }\n\n private loadDocumentDefinition(name: string) {\n this.documentService.getDocumentDefinition(name).subscribe(definition => {\n this.schema = definition.schema;\n });\n }\n\n private loadDocument(id: string) {\n this.documentService.getDocument(id).subscribe(document => {\n this.document = document;\n });\n }\n\n public getTask(id: string) {\n this.taskService.getTask(id).subscribe(task => {\n this.task = task;\n this.task.task.created = moment(this.task.task.created).format('DD MMM YYYY HH:mm');\n this.page = {\n title: this.task.task.name,\n subtitle: `Created ${moment(this.task.task.created).fromNow()}`,\n };\n });\n }\n\n public reset() {\n this.loadDocument(this.documentId);\n }\n\n public back() {\n this.location.back();\n }\n\n public save() {\n const document = {\n documentId: this.document.id,\n content: this.document.content,\n versionBasedOn: this.document.version,\n };\n this.documentService.modifyDocument(document).subscribe(result => {\n this.document = result.document;\n this.toastr.success('Document aangepast');\n this.location.back();\n });\n }\n\n public submit(data: object) {\n // merge document content with formdata\n const mergedData = Object.assign({}, this.document.content, data);\n const documentData = {\n request: {\n documentId: this.document.id,\n content: mergedData,\n versionBasedOn: this.document.version,\n },\n taskId: this.task.task.id,\n };\n\n this.documentService.modifyDocumentAndCompleteTask(documentData).subscribe(result => {\n this.toastr.success(this.task.task.name + ' has successfully been completed');\n this.location.back();\n });\n }\n\n public returnZero() {\n return 0;\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget [title]=\"page?.title\" [subtitle]=\"page?.subtitle\" [divider]=\"true\">\n <div class=\"card-body\">\n <!--view with custom definitions-->\n <div *ngIf=\"this.customDefinitions\">\n <div\n class=\"mb-4\"\n *ngFor=\"let definition of this.customDefinitions | keyvalue: returnZero\"\n ></div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-sm-12\">\n <div class=\"text-right\">\n <button\n class=\"btn btn-space btn-default float-left\"\n type=\"button\"\n (click)=\"back()\"\n id=\"back-button\"\n >\n Back\n </button>\n <button\n class=\"btn btn-space btn-secondary\"\n type=\"button\"\n (click)=\"reset()\"\n id=\"reset-button\"\n >\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"button\"\n (click)=\"save()\"\n id=\"save-button\"\n >\n Save\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n (click)=\"submit({})\"\n id=\"submit-button\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <valtimo-camunda-form\n *ngIf=\"task?.formFields && !this.customDefinitions\"\n (submitted)=\"submit($event)\"\n [formFields]=\"task.formFields\"\n [componentName]=\"task.formLocation\"\n ></valtimo-camunda-form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {DossierDetailComponent} from './components/dossier-detail/dossier-detail.component';\nimport {DossierUpdateComponent} from './components/dossier-update/dossier-update.component';\nimport {ROLE_USER} from '@valtimo/config';\nimport {DossierListComponent} from './components/dossier-list/dossier-list.component';\nimport {pendingChangesGuard} from '@valtimo/components';\n\nconst routes: Routes = [\n {\n path: 'dossiers/:documentDefinitionName',\n component: DossierListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dossiers', roles: [ROLE_USER], customPageTitle: true},\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId/:tab',\n component: DossierDetailComponent,\n canActivate: [AuthGuardService],\n canDeactivate: [pendingChangesGuard],\n data: {\n title: 'Dossier details',\n parentPath: 'dossiers/:documentDefinitionName',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId',\n component: DossierDetailComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Dossier details',\n parentPath: 'dossiers/:documentDefinitionName',\n roles: [ROLE_USER],\n },\n },\n {\n path: 'dossiers/:documentDefinitionName/document/:documentId/:tab/tasks/:taskId',\n component: DossierUpdateComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Task details',\n parentPath: 'dossiers/:documentDefinitionName/document/:documentId/:tab',\n roles: [ROLE_USER],\n },\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DossierRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {TabTranslatePipe} from './tab-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [TabTranslatePipe],\n exports: [TabTranslatePipe],\n})\nexport class TabTranslatePipeModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab-translate.pipe';\nexport * from './tab-translate-pipe.module';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './tab-translate';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n NgbButtonsModule,\n NgbModule,\n NgbPaginationModule,\n NgbTooltipModule,\n} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {\n BpmnJsDiagramModule,\n ButtonModule,\n CamundaFormModule,\n CarbonListModule,\n ConfirmationModalModule,\n DataListModule,\n DropzoneModule,\n FilterSidebarModule,\n FormIoModule,\n FormModule as VFormModule,\n InputLabelModule,\n InputModule,\n IsArrayPipe,\n ListModule,\n ModalModule,\n PageModule,\n ParagraphModule,\n RenderInPageHeaderDirectiveModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n SelectModule,\n SpinnerModule,\n StatusSelectorComponent,\n CaseTagsSelectorComponent,\n TableModule,\n TimelineModule,\n TitleModule,\n UploaderModule,\n ValtimoCdsModalDirectiveModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n VModalModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ConfigModule, HttpLoaderFactory} from '@valtimo/config';\nimport {FormModule} from '@valtimo/form';\nimport {ProcessLinkModule} from '@valtimo/process-link';\nimport {ProcessModule} from '@valtimo/process';\nimport {TaskModule} from '@valtimo/task';\nimport {\n ButtonModule as CarbonButtonModule,\n ComboBoxModule,\n DialogModule,\n DropdownModule,\n IconModule,\n LayerModule,\n LoadingModule,\n ModalModule as CarbonModalModule,\n SelectModule as CarbonSelectModule,\n SkeletonModule,\n TabsModule,\n TagModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {NoteModalComponent} from './components/note-modal/note-modal.component';\nimport {DossierAssignUserComponent} from './components/dossier-assign-user/dossier-assign-user.component';\nimport {DossierBulkAssignModalComponent} from './components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component';\nimport {DossierDetailComponent} from './components/dossier-detail/dossier-detail.component';\nimport {DossierDetailTabAuditComponent} from './components/dossier-detail/tab/audit/audit.component';\nimport {DossierDetailTabDocumentsComponent} from './components/dossier-detail/tab/documents/documents.component';\nimport {DossierDetailTabNotesComponent} from './components/dossier-detail/tab/notes/notes.component';\nimport {DossierDetailTabProgressComponent} from './components/dossier-detail/tab/progress/progress.component';\nimport {DossierDetailTabS3DocumentsComponent} from './components/dossier-detail/tab/s3-documents/s3-documents.component';\nimport {DossierDetailTabSummaryComponent} from './components/dossier-detail/tab/summary/summary.component';\nimport {DossierListActionsComponent} from './components/dossier-list-actions/dossier-list-actions.component';\nimport {DossierListComponent} from './components/dossier-list/dossier-list.component';\nimport {DossierProcessStartModalComponent} from './components/dossier-process-start-modal/dossier-process-start-modal.component';\nimport {DossierRoutingModule} from './dossier-routing.module';\nimport {DossierSupportingProcessStartModalComponent} from './components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component';\nimport {DossierUpdateComponent} from './components/dossier-update/dossier-update.component';\nimport {TAB_MAP} from './constants';\nimport {DossierBulkAssignService, DossierService} from './services';\nimport {DossierDetailTabFormioComponent} from './components/dossier-detail/tab/formio/formio.component';\nimport {TabTranslatePipeModule} from './pipes';\nimport {DossierDetailTabNotFoundComponent} from './components/dossier-detail/tab/not-found/not-found.component';\nimport {DossierDetailWidgetsComponent} from './components/dossier-detail/tab/widgets/widgets.component';\nimport {DossierDetailTaskListComponent} from './components/dossier-detail-task-list/dossier-detail-task-list.component';\nimport {DossierDetailsTaskDetailComponent} from './components/dossier-detail-task-detail/dossier-detail-task-detail.component';\nimport {AngularSplitModule} from 'angular-split';\n\nexport type TabsFactory = () => Map<string, object>;\n\n@NgModule({\n declarations: [\n DossierBulkAssignModalComponent,\n DossierListComponent,\n DossierListActionsComponent,\n DossierDetailComponent,\n DossierDetailTabSummaryComponent,\n DossierDetailTabProgressComponent,\n DossierDetailTabAuditComponent,\n DossierDetailTabDocumentsComponent,\n DossierDetailTabNotesComponent,\n DossierUpdateComponent,\n DossierProcessStartModalComponent,\n DossierSupportingProcessStartModalComponent,\n DossierDetailTabS3DocumentsComponent,\n DossierDetailTabNotFoundComponent,\n DossierAssignUserComponent,\n NoteModalComponent,\n DossierDetailTabFormioComponent,\n ],\n imports: [\n CommonModule,\n DossierRoutingModule,\n ListModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TimelineModule,\n CamundaFormModule,\n ProcessModule,\n FilterSidebarModule,\n NgbButtonsModule,\n DataListModule,\n FormsModule,\n ReactiveFormsModule,\n FormModule,\n FormIoModule,\n ModalModule,\n SpinnerModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n TaskModule,\n ModalModule,\n NgbTooltipModule,\n UploaderModule,\n DropzoneModule,\n NgbPaginationModule,\n ConfigModule,\n SelectModule,\n InputLabelModule,\n ParagraphModule,\n TableModule,\n VModalModule,\n TitleModule,\n ButtonModule,\n SearchableDropdownSelectModule,\n SearchFieldsModule,\n PageModule,\n FormModule,\n InputModule,\n VFormModule,\n NgbModule,\n LoadingModule,\n CarbonButtonModule,\n IconModule,\n ProcessLinkModule,\n CarbonModalModule,\n CarbonSelectModule,\n ConfirmationModalModule,\n DropdownModule,\n TabsModule,\n ComboBoxModule,\n TabTranslatePipeModule,\n CarbonListModule,\n IsArrayPipe,\n SkeletonModule,\n StatusSelectorComponent,\n RenderInPageHeaderDirectiveModule,\n TagModule,\n DialogModule,\n ValtimoCdsOverflowButtonDirectiveModule,\n DossierDetailWidgetsComponent,\n DossierDetailTaskListComponent,\n DossierDetailsTaskDetailComponent,\n AngularSplitModule,\n CaseTagsSelectorComponent,\n ValtimoCdsModalDirectiveModule,\n TilesModule,\n LayerModule,\n ],\n exports: [DossierListComponent, DossierDetailComponent, DossierProcessStartModalComponent],\n})\nexport class DossierModule {\n static forRoot(tabsFactory: TabsFactory): ModuleWithProviders<DossierModule> {\n return {\n ngModule: DossierModule,\n providers: [\n DossierService,\n DossierBulkAssignService,\n {\n provide: TAB_MAP,\n useFactory: tabsFactory,\n },\n ],\n };\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of dossier\n */\n\nexport * from './lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component';\nexport * from './lib/components/dossier-detail/dossier-detail.component';\nexport * from './lib/components/dossier-detail/tab/audit/audit.component';\nexport * from './lib/components/dossier-detail/tab/documents/documents.component';\nexport * from './lib/components/dossier-detail/tab/notes/notes.component';\nexport * from './lib/components/dossier-detail/tab/progress/progress.component';\nexport * from './lib/components/dossier-detail/tab/summary/summary.component';\nexport * from './lib/components/dossier-list/dossier-list.component';\nexport * from './lib/components/dossier-process-start-modal/dossier-process-start-modal.component';\nexport * from './lib/constants';\nexport * from './lib/dossier.module';\nexport * from './lib/services/dossier.service';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i1","i1.DossierColumnService","i2.DossierListService","i4","i5.DossierParameterService","i2.DossierParameterService","i3.DossierService","i1.DossierListService","i3.DossierParameterService","i5","i6","i7","switchMap","map","i8","i3.DossierDetailTabS3DocumentsComponent","PERMISSION_ACTION","take","i1.NotesService","tap","i9","i10.NoteModalComponent","i1.DossierTabService","i1.WidgetsService","i5.WidgetsService","i4.DossierWidgetsLayoutService","i3.DossierWidgetsApiService","i4.WidgetsService","i4.DossierWidgetsApiService","catchError","i1.DossierWidgetsLayoutService","i1.DossierWidgetsApiService","uuid","i2.DossierTabService","i2.DossierWidgetsApiService","i2.DossierWidgetsLayoutService","i3.DossierTabApiService","i1.DossierBulkAssignService","i6.DossierDetailLayoutService","i10","i11","i12","i13","i14","i15.DossierDetailTaskListComponent","i16.DossierDetailsTaskDetailComponent","i18.DossierSupportingProcessStartModalComponent","i19.DossierAssignUserComponent","i20.TabTranslatePipe","i7.DossierListService","i7.StartModalService","i8.DossierProcessStartModalComponent","i1.DossierListAssigneeService","i1.DossierListPaginationService","i1.DossierParameterService","i1.DossierListSearchService","i1.DossierListStatusService","i1.DossierListCaseTagService","i10.DossierBulkAssignModalComponent","i11.DossierListActionsComponent","i6.DossierService","ButtonModule","InputModule","VFormModule","CarbonButtonModule","CarbonModalModule","CarbonSelectModule"],"mappings":"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"}