@posiwise/enterprise-module 0.0.106 → 0.0.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posiwise-enterprise-module.mjs","sources":["../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.html","../../../../libs/enterprise-module/src/lib/models/enterprise.model.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.html","../../../../libs/enterprise-module/src/lib/enterprise.module.ts","../../../../libs/enterprise-module/src/posiwise-enterprise-module.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-communication-details',\n templateUrl: './enterprise-communication-details.component.html',\n styleUrls: ['./enterprise-communication-details.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseViewParticularCommunicationComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n id: number;\n communicationId: number;\n\n chatPermission: string;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n this.cdr.markForCheck();\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['communicationId']);\n this.cdr.markForCheck();\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.isLoaded = true;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.cdr.markForCheck();\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div>\n @if (communicationDetails) {\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n @if (communicationDetails?.pushed_at) {\n <span class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n }\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n @for (\n files of communicationDetails?.group_communication_files; track trackByFileId($index,\n files)) {\n <p>\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class AppEnterprise {\n static getWikiForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [''],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['wiki'],\n published: [false],\n pushed: [false]\n });\n }\n\n static getCommunicationsForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['communication'],\n published: [false],\n pushed: [false]\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-communications',\n templateUrl: './enterprise-communications.component.html',\n styleUrls: ['./enterprise-communications.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseCommunicationsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allCommunicationGroups: EnterPriseGroup[] = [];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getCommunicationsForm();\n }\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n this.hasAccess = this.hasAdminAccess(this.subscription?.id);\n }\n this.cdr.markForCheck();\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n this.getAllGroupDefinition();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response?.group_definitions?.length) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data?.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allCommunicationGroups = [\n {\n id: 0,\n name: 'All Communications',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n this.cdr.markForCheck();\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n if (this.groupId) {\n this.groupService\n .getAllCommunications(this.id, 'communication', this.groupId || '', paging)\n .subscribe(response => {\n this.loading = false;\n this.isLoaded = true;\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n });\n } else {\n this.groupService\n .getAllCommunicationsWithOutGroupId(this.id, 'communication', paging)\n .subscribe(response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.loading = false;\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n }\n\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications();\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications() {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean) {\n this.form.get('user_id').setValue(this.user.id);\n this.form.get('communication_type')?.setValue('communication');\n const data = this.form?.value;\n this.submitted = true;\n\n if (this.form.invalid) {\n return;\n }\n\n const operation = isUpdate\n ? this.groupService.editCommunications(this.data?.id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const id = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(id);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunications(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication Deleted Successfully')\n );\n this.onCancel();\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunicationFiles(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication File Deleted Successfully')\n );\n this.filesData.splice(index, 1);\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n this.cdr.markForCheck();\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n @if (isEdit) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n @if (isEdit) {\n <h3 class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n }\n @if (!isEdit) {\n <h2 [ngClass]=\"{ 'mt-2': isEdit }\">Communications @if (groupId) {\n <span>for {{ groupName }}</span>\n }</h2>\n }\n </div>\n @if (!isEdit) {\n <p>\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n }\n </div>\n </div>\n </section>\n @if (!isLoaded && isEdit) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isEdit && isLoaded) {\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h3>{{ 'Enterprise.Documentation.Section.Content' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\" controlId=\"enterprise-communications-title\">\n <input type=\"text\"\n id=\"enterprise-communications-title\"\n class=\"form-control\"\n formControlName=\"title\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Title' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\" controlId=\"enterprise-communications-body\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n [attr.aria-labelledby]=\"'enterprise-communications-body-label'\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Body' | transloco\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-4\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\" controlId=\"enterprise-communications-group_id\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-select\n [attr.aria-labelledby]=\"'enterprise-communications-group_id-label'\"\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Visibility' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\" controlId=\"enterprise-communications-visible_globally\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-visible_globally-label'\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\" controlId=\"enterprise-communications-published\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-published-label'\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\" controlId=\"enterprise-communications-pushed\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-pushed-label'\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Attachments' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <div class=\"mb-3\">\n <span id=\"enterprise-communications-file-label\" class=\"pw-label-style\">Upload Communication File</span>\n <p-fileUpload #forms\n [attr.aria-labelledby]=\"'enterprise-communications-file-label'\"\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\">\n @if (!uploadedFiles?.length) {\n <div class=\"drag-drop-text\">\n <p>You can drag and drop your file here</p>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n @if (filesData?.length) {\n <div\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n @for (files of filesData; track files; let i = $index) {\n <div class=\"communication-files\"\n >\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (!isEdit) {\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-select\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"enterprise-communications-search\" class=\"visually-hidden\">Search Communications</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-communications-search\"\n name=\"enterprise-communications-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n @for (files of item.group_communication_files; track files) {\n <span>\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n }\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n @if (item.visible_globally) {\n <span\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span>\n }@if (item.published) {\n <span\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span>\n }@if (item.pushed) {\n <span\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n }\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Plotly, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { handleDateRangeSelection } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-enterprise-insights',\n templateUrl: './enterprise-insights.component.html',\n\n standalone: false\n})\nexport class EnterpriseInsightsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n graph: Plotly.Figure;\n\n user: User;\n subscriptionId: number;\n\n hasAccess = false;\n isLoaded = false;\n\n userId: number;\n\n selectedDateRange;\n dateRanges;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.subscriptionId = id;\n this.cdr.markForCheck();\n });\n this.dateRanges = HelperService.initializeDateRanges();\n this.selectedDateRange = '';\n this.getChartData();\n this.hasAccess = this.hasAdminAccess(this.subscriptionId);\n }\n\n private getChartData() {\n this.isLoaded = false;\n this.subscriptionService\n .getEnterpriseInsight(\n this.subscriptionId,\n this.selectedDateRange?.startDate\n ? this.selectedDateRange.startDate.format('YYYY-MM-DD')\n : '',\n this.selectedDateRange?.endDate\n ? this.selectedDateRange.endDate.format('YYYY-MM-DD')\n : ''\n )\n .subscribe(response => {\n // API now returns { items: [], totals: {} } instead of array\n this.graph = response?.items ?? response;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n onDateRangeSelect(event: { startDate: moment.Moment; endDate: moment.Moment }) {\n this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);\n this.getChartData();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n @if (hasAccess) {\n <p>Please find below some insight for your Enterprise subscription.</p>\n }\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n </app-date-picker>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n\n\n @if (hasAccess) {\n <div class=\"col-12\"\n >\n @if (graph) {\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n }\n </div>\n }\n\n @if (!hasAccess && isLoaded) {\n <div\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n PermissionService,\n PrimeNgHelper,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport {\n DOCUMENT_TYPE_EXT,\n PAGE_SIZE,\n Paging,\n Subscription,\n TOKEN_HEADER_KEY,\n User\n} from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport {\n humanizeBytes,\n UploaderOptions,\n UploadFile,\n UploadInput,\n UploadOutput,\n UploadStatus\n} from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { EnterpriseMembersResponse } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-members',\n templateUrl: './enterprise-members.component.html',\n styleUrls: ['./enterprise-members.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseMembersComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n previousRolesMap = new Map<number, string[]>();\n\n id: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n productName: string;\n allRoles = [];\n subscriptionMembers: EnterpriseMembersResponse;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled: boolean;\n\n availableUnits = 0;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()])\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n this.cdr.markForCheck();\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n }\n onUploadOutput(output: UploadOutput): void {\n switch (output.type) {\n case 'allAddedToQueue':\n if (this.files.length > 0) {\n const event: UploadInput = {\n type: 'uploadAll',\n url: this.subscriptionService.signUpMemberUrl(this.id),\n method: 'POST',\n data: {\n send_marketing_emails: 'true',\n confirmation_path: 'confirm'\n },\n headers: {\n [TOKEN_HEADER_KEY]: this.token\n }\n };\n this.uploadInput.emit(event);\n }\n\n break;\n case 'addedToQueue':\n if (typeof output.file !== 'undefined') {\n const ext = output.file.name.split('.').pop();\n if (DOCUMENT_TYPE_EXT.includes(ext)) {\n this.files.push(output.file);\n } else {\n this.toast.error('Only csv and xlsx formats are supported.');\n }\n }\n break;\n case 'uploading':\n if (typeof output.file !== 'undefined') {\n // update current data in files array for uploading file\n const index = this.files.findIndex(\n file => typeof output.file !== 'undefined' && file.id === output.file.id\n );\n this.files[index] = output.file;\n }\n break;\n case 'removed':\n this.files = this.files.filter((file: UploadFile) => file !== output.file);\n break;\n case 'dragOver':\n this.dragOver = true;\n break;\n case 'dragOut':\n case 'drop':\n this.dragOver = false;\n break;\n case 'done':\n break;\n default:\n }\n\n this.files = this.files.filter(file => file.progress.status !== UploadStatus.Done);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n /**\n * Gets the list of members for the subscription and also shows the admins for the\n * subscription\n * @param page Page number\n * @param page_size Page Size\n */\n private getSubscribedUsers(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getEnrolledSubscription(this.id, paging).subscribe(response => {\n this.isLoaded = true;\n if (response?.members && response.members.length > 0) {\n this.subscriptionMembers = response;\n this.subscriptionOwner = this.subscriptionMembers.owner_id;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.isLoaded = true;\n this.loading = false;\n const userMasterSubscription = this.user?.subscriptions?.find(sub =>\n sub.products?.some(p => p.is_master_product)\n );\n const masterProduct = userMasterSubscription?.products?.find(\n p => p.is_master_product\n );\n const masterProductWithSlug = masterProduct\n ? {\n ...masterProduct,\n subscription_slug: userMasterSubscription?.slug\n }\n : null;\n this.hasAccess =\n this.subscriptionMembers.admins.includes(this.user.id) ||\n this.user.id === this.subscriptionOwner ||\n this.permissionService.isSuperAdmin() ||\n this.permissionService.isUserSubscriptionSuperAdmin(masterProductWithSlug);\n if (this.hasAccess) {\n this.getSubscriptionRoles();\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n getSubscriptionRoles() {\n this.adminService.getSubscriptionRoles(this.id).subscribe(roles => {\n this.allRoles = PrimeNgHelper.dropdownDataSource(roles, 'name', 'id');\n if (this.allRoles) {\n this.filterRoles();\n }\n this.cdr.markForCheck();\n });\n }\n\n filterRoles() {\n this.subscriptionMembers.members.forEach(element => {\n const userRoleIds = element.user_roles.map(x => x.id);\n element['selected_roles'] = userRoleIds.filter(roleId =>\n this.allRoles.find(x => x.id === roleId)\n );\n this.previousRolesMap.set(element.id, [...element['selected_roles']]);\n });\n }\n onRoleChange(event, user) {\n const prevRoles = this.previousRolesMap.get(user.id) || [];\n const unselected = prevRoles.find(id => !event.value.includes(id));\n this.previousRolesMap.set(user.id, [...event.value]);\n let subscription$: Observable<string>;\n let isAdded: boolean;\n if (!unselected && user.user_roles.map(x => x.id).indexOf(event.itemValue) <= -1) {\n const updateData = {\n subscription_id: this.id,\n role_id: event.itemValue.id,\n id: user.id\n };\n subscription$ = this.adminService.saveUserSubscriptionRole(updateData);\n isAdded = true;\n } else {\n const deleteData = {\n role_id: event.itemValue.id,\n subscription_id: this.id,\n id: user.id\n };\n subscription$ = this.adminService.deleteUserSubscriptionRole(deleteData);\n isAdded = false;\n }\n\n subscription$.subscribe(() => {\n if (isAdded) {\n this.toast.success(this.translation.translate('Admin.Users.UpdatedRole'));\n } else {\n this.toast.success(this.translation.translate('Admin.Users.DeletedMessage'));\n }\n this.cdr.markForCheck();\n });\n }\n\n private getSubscriptionDetails() {\n this.isLoaded = false;\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.isLoaded = true;\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n this.cdr.markForCheck();\n });\n }\n\n @ValidateForm('form')\n onSignUpMember() {\n swal.fire({\n title: this.translation.translate('Label.Confirm'),\n text: this.translation.translate(\n 'Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage'\n ),\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning',\n confirmButtonText: 'Yes'\n }).then(rep => {\n if (rep.value) {\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n this.buttonBusy = true;\n const data = {\n confirmation_path: 'confirm',\n emails,\n send_marketing_emails: true\n };\n this.subscriptionService\n .addMembersToSubscription(this.id, data)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n }\n }\n });\n }\n\n onDelete(user: User) {\n swal.fire({\n title: 'Remove user from subscription',\n text: `Are you sure you want to remove ${user.first_name} from this subscription?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService\n .removeEnrolledSubscription(this.id, user.id)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n makeAdmin(user, value: boolean) {\n swal.fire({\n title: value === true ? 'Make Admin' : 'Remove Admin',\n text:\n value === true\n ? `This user will now have full access to your subscription. Read more in FAQ.`\n : `Are you sure?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n user_id: user.id,\n is_admin: value\n };\n this.subscriptionService.toggleAdmin(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n }\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n @if (isAddEnabled) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n <h2>Enterprise Members for {{ productName }}</h2>\n </div>\n @if (!isAddEnabled) {\n <p>\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n }\n @if (isAddEnabled) {\n <p>Here you can add members to your subscriptions</p>\n }\n </div>\n </div>\n </section>\n @if (!isAddEnabled) {\n <section id=\"enrolled\"\n >\n <div class=\"row\">\n @if (hasAccess) {\n <div class=\"col-12 text-end\"\n >\n @if (!isAddEnabled) {\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n }\n </div>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <label for=\"enterprise-members-search-contact\" class=\"visually-hidden\">Search contact</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-members-search-contact\"\n name=\"enterprise-members-search-contact\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Roles' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n @if (!users?.has_password) {\n <span class=\"ms-2\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n @if (users?.enable_two_factor_authenticator) {\n <span class=\"ms-2\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n }\n @if (users?.blocked) {\n <span class=\"ms-2\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n }\n @if (users.id === subscriptionOwner) {\n <span class=\"badge bg-dark mx-1\"> Owner </span>\n }\n @if (subscriptionMembers.admins.includes(users.id)) {\n <span class=\"badge bg-success mx-1 admin-badge\"> Admin </span>\n }\n @if (users.id === user.id) {\n <span class=\"badge mx-1 you-badge\"> You </span>\n }\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n @for (groups of users.user_groups; track groups) {\n <span><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n }\n </td>\n <td data-head=\"Roles\">\n @if (hasAccess && allRoles.length) {\n <div *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n inputId=\"enterprise-members-roles-{{ users.id }}\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </div>\n }\n </td>\n <td data-head=\"Last seen\">\n @if (users?.current_sign_in_at) {\n <span>\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n @if (users.current_sign_in_at) {\n <span> ({{ users.current_sign_in_at | sinceAgo }})</span>\n }\n </span>\n } @else {\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n @if (users.last_sign_in_at) {\n <span> ({{ users.last_sign_in_at | sinceAgo }})</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n @if (hasAccess && users.id !== subscriptionOwner) {\n <!-- Make Admin -->\n @if (!this.subscriptionMembers.admins.includes(users.id)) {\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n >\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n <li></li>\n <!-- Remove Admin -->\n @if (this.subscriptionMembers.admins.includes(users.id)) {\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n >\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n } @else {\n <li class=\"mx-3\"></li>\n }\n @if (hasAccess) {\n @if (users.id !== subscriptionOwner) {\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Remove user from subscription\"\n >\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (subscriptionMembers?.members.length !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"subscriptionMembers?.members.length || 0\" />\n }\n </div>\n </section>\n}\n\n@if (isAddEnabled) {\n <section id=\"manage-members\"\n >\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n id=\"enterprise-members-csv-upload\"\n name=\"enterprise-members-csv-upload\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n @for (f of files; track f; let i = $index) {\n <div class=\"upload-item\"\n >\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n @if (f.progress?.data?.percentage !== 100) {\n <span>Uploading...</span>\n }\n @if (f.progress?.data?.percentage === 100) {\n <span>Done</span>\n }\n </span>\n @if (\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n ) {\n <span class=\"speed-and-eta-text\"\n >\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n }\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n @for (\n item of form.get('emailsFormArray')['controls']; track\n item; let i = $index; let last = $last) {\n <div formArrayName=\"emailsFormArray\"\n >\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" [attr.for]=\"'enterprise-members-email-' + i\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n [id]=\"'enterprise-members-email-' + i\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" id=\"input_email_3\" name=\"input_email_3\"/>\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (last && emailsFormArray?.controls?.length < availableUnits) {\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n </section>\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n FormHelperService,\n PermissionService,\n ProductService,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport groupBy from 'lodash/groupBy';\nimport { humanizeBytes, UploaderOptions, UploadFile, UploadInput } from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport swal from 'sweetalert2';\n\n@Component({\n selector: 'pw-enterprise-partners',\n templateUrl: './enterprise-partners.component.html',\n styleUrls: ['./enterprise-partners.component.scss'],\n\n standalone: false\n})\nexport class EnterprisePartnersComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n\n @ViewChild('refProduct') refProduct: AutoComplete;\n\n id: number;\n subscriptionId: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n filteredProducts = [];\n searchOptions: { id: unknown; label: unknown }[] = [];\n searchText = '';\n\n productName: string;\n allRoles = [];\n subscriptionPartners;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled = false;\n\n invoiceFrequency = ['week', 'month', 'year'];\n availableUnits = 0;\n\n totalRecordsUnFiltered = 0;\n totalRecords = 0;\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n unitsText: string;\n currency: string;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly productService: ProductService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()]),\n product_id: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n this.cdr.markForCheck();\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n this.getProductsList();\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE,\n search: this.searchText\n });\n }\n }\n private getSubscribedPartners(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getAllSubscriptionPartners(this.id, paging).subscribe(response => {\n this.subscriptionPartners = response.partners;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.totalRecords = response.object_count;\n this.isLoaded = true;\n this.loading = false;\n this.cdr.markForCheck();\n });\n }\n\n private getSubscriptionDetails() {\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n this.cdr.markForCheck();\n });\n }\n\n getSupportedCurrency() {\n this.productService.getSupportedCurrency().subscribe(res => {\n this.currency = res?.regions;\n this.cdr.markForCheck();\n });\n }\n\n onSave() {\n if (this.form.invalid) {\n FormHelperService.validateAllFormFields(this.form);\n } else {\n this.buttonBusy = true;\n const productId = this.form.get('product_id').value.id;\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n const inviteObj = {\n emails,\n product_id: productId\n };\n this.subscriptionService\n .addPartnersToSubscription(this.id, inviteObj)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.totalRecordsUnFiltered = 0;\n this.isAddEnabled = false;\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n }\n }\n }\n\n onDelete(partner: { id: number }) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService.removePartner(this.id, partner.id).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n onDeactivate(partner: { id: number; is_active: boolean }) {\n swal.fire({\n title: partner.is_active ? 'Deactivate' : 'Activate',\n text: partner.is_active\n ? ` Are you sure you want to deactivate this partner`\n : 'Are you sure you want to activate this partner?',\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n subscription_partner_id: partner.id,\n is_active: !partner.is_active\n };\n this.subscriptionService.deactivatePartner(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n private getProductsList() {\n this.subscriptionService.getProductList({}, this.id).subscribe(response => {\n const featureKeys = Array.from(\n new Set(response.products.map(item => item.feature_key))\n );\n this.searchOptions = featureKeys.map(element => {\n return {\n id: element,\n label: element ?? ''\n };\n });\n this.cdr.markForCheck();\n });\n }\n\n sortObj(obj) {\n return Object.keys(obj)\n .sort((a, b) => a.localeCompare(b))\n .reduce((result, key) => {\n result[key] = obj[key];\n return result;\n }, {});\n }\n\n searchProduct(event) {\n this.subscriptionService\n .getProductList({ search: event.query }, this.id)\n .subscribe(response => {\n this.filteredProducts = this.groupProducts(response.products);\n this.cdr.markForCheck();\n });\n }\n\n onProductChange(event) {\n const productId = Number(event?.value.id);\n const productObj = this.filteredProducts.find(x => x.id === productId);\n this.form.patchValue({\n product_id: productObj\n });\n }\n\n onProductClear(_event) {\n if (!this.refProduct.inputEL.nativeElement.value) {\n this.form.get('product_id').setValue('');\n }\n }\n\n private groupProducts(products) {\n if (products?.length) {\n products = products.filter(x => x.dependency_products?.length < 1 && x.active);\n products = groupBy(products, 'currency');\n products = this.sortObj(products);\n let groupedArray = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const p in products) {\n const value = products[p].sort(\n (a, b) => Number(b.price_per_unit) - Number(a.price_per_unit)\n );\n groupedArray.push(...value);\n }\n groupedArray =\n groupedArray?.map(x => {\n return {\n id: x.id,\n label: `${x.name} | ${x.region} | ${x.billing_frequency} | ${x.min_units} x ${(\n x.price_per_unit / 100\n ).toFixed(2)} | ${x.currency}`,\n unitsText: `(min ${x.min_units} - max ${x.max_units})`\n };\n }) || [];\n\n return groupedArray;\n }\n\n return [];\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n @if (isAddEnabled) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n @if (!isAddEnabled) {\n <p>\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n }\n @if (isAddEnabled) {\n <p>Here you can add partners to your subscriptions</p>\n }\n </div>\n </div>\n </section>\n @if (!isAddEnabled) {\n <section>\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n @if (!isAddEnabled) {\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n }\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <label for=\"enterprise-partners-search\" class=\"visually-hidden\">Search partner</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-partners-search\"\n name=\"enterprise-partners-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Partner.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\">\n </pw-no-data>\n }\n </section>\n }\n\n @if (isAddEnabled) {\n <section id=\"manage-members\"\n >\n @if (!isGroupEdit) {\n <div class=\"mt-4\"\n >\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\" controlId=\"enterprise-partners-product_id\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [attr.aria-labelledby]=\"'enterprise-partners-product_id-label'\"\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n [placeholder]=\"'Enterprise.Partner.Placeholder.Product' | transloco\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : {}\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n @for (\n item of form.get('emailsFormArray')['controls']; track\n item; let i = $index; let last = $last) {\n <div formArrayName=\"emailsFormArray\"\n >\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" [attr.for]=\"'enterprise-partners-email-' + i\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n [id]=\"'enterprise-partners-email-' + i\"\n class=\"form-control form-control-sm\"\n [placeholder]=\"'Enterprise.Partner.Placeholder.Email' | transloco\" name=\"input_email_2\"/>\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (last && emailsFormArray?.controls?.length < availableUnits) {\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-secondary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n </div>\n }\n </section>\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { DataService, PermissionService } from '@posiwise/common-services';\nimport { Subscription, User } from '@posiwise/common-utilities';\n\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-enterprise-subscriptions',\n templateUrl: './enterprise-subscriptions.component.html',\n\n standalone: false\n})\nexport class EnterpriseSubscriptionsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n subscriptions = [];\n\n message: number;\n\n isLoaded = true;\n\n subscription: Subscription;\n\n userSlug: string;\n\n constructor(\n injector: Injector,\n private readonly data: DataService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n this.userSlug = response?.slug;\n this.cdr.markForCheck();\n });\n this.userStore().subscribe((user: User) => {\n if (user) {\n const hasEnterprise = user.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return (\n product?.permission_key ===\n PermissionService.selectedProduct?.permission_key\n );\n });\n });\n\n if (hasEnterprise) {\n this.router.navigate([\n `/${this.userSlug}/enterprise/${hasEnterprise.id}/members`\n ]);\n }\n }\n this.cdr.markForCheck();\n });\n this.isLoaded = false;\n this.getEnterpriseSubscription();\n this.data.currentMessage.subscribe(message => {\n this.message = message;\n this.cdr.markForCheck();\n });\n }\n\n private getEnterpriseSubscription() {\n const subscribe$ = this.userService.getUserInfo().pipe(\n switchMap(user => {\n return this.userService.getUserSubscriptions(user.id);\n })\n );\n\n subscribe$\n .subscribe(response => {\n if (response.subscriptions.length > 0) {\n this.isLoaded = true;\n this.subscriptions = [\n response.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return product.max_units > 1 && !product.is_deleted;\n });\n })\n ];\n }\n })\n .add(() => {\n this.cdr.markForCheck();\n });\n }\n\n nextUrl() {\n this.data.changeMessage(0);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n @for (item of subscriptions; track item) {\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n >\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"col-12\">\n @if (subscriptions.length === 0) {\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n >\n </pw-no-data>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n </div>\n</div>\n","import { Component, Injector } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-enterprise-tabs',\n templateUrl: './enterprise-tabs.component.html',\n\n standalone: false\n})\nexport class EnterpriseTabsComponent extends AppBaseComponent {\n constructor(injector: Injector) {\n super(injector);\n }\n\n activeTab: MenuItem;\n\n items: MenuItem[] = [\n {\n id: 'manage_members',\n label: 'Members',\n routerLink: ['/enterprise/members'],\n icon: 'fa fa-fw fa-users'\n },\n {\n id: 'manage_partners',\n label: 'Partners',\n routerLink: ['/enterprise/partners'],\n icon: 'fa fa-fw fa-users',\n visible: this.permissionService.evaluatePermissions('Pages.Alpha')\n },\n {\n id: 'manage_teams',\n label: 'Teams',\n routerLink: ['/enterprise/groups'],\n icon: 'fa fa-fw fa-users-class',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_communications',\n label: 'Communications',\n routerLink: ['/enterprise/communications'],\n icon: 'fas fa-comments',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_wiki',\n label: 'Documentation',\n routerLink: ['/enterprise/wiki'],\n icon: 'fab fa-wikipedia-w',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_insight',\n label: 'Insight',\n routerLink: ['/enterprise/insights'],\n icon: 'fa fa-fw fa-tag',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n }\n ];\n}\n","<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-wiki',\n templateUrl: './enterprise-wiki.component.html',\n styleUrls: ['./enterprise-wiki.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseWikiComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allDocumentationGroups: EnterPriseGroup[];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getWikiForm();\n }\n\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n }\n this.cdr.markForCheck();\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n this.getAllGroupDefinition();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response.group_definitions.length > 0) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allDocumentationGroups = [\n {\n id: 0,\n name: 'All Documentations',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n this.cdr.markForCheck();\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n const operation = this.groupId\n ? this.groupService.getAllCommunications(this.id, 'wiki', this.groupId || '', paging)\n : this.groupService.getAllCommunicationsWithOutGroupId(this.id, 'wiki', paging);\n\n operation\n .subscribe({\n next: response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n },\n error: error => {\n this.toast.showToast(error);\n this.cdr.markForCheck();\n }\n })\n .add(() => {\n this.isLoaded = true;\n this.loading = false;\n this.cdr.markForCheck();\n });\n }\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications(this.data?.id);\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications(id: number) {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true, id);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean, id?: number) {\n this.buttonBusy = true;\n this.form.get('user_id')?.setValue(this.user.id);\n this.form.get('communication_type')?.setValue('wiki');\n const data = this.form?.value;\n this.submitted = true;\n\n const operation = isUpdate\n ? this.groupService.editCommunications(id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const responseId = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(responseId);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunications(id),\n 'Communication Deleted Successfully',\n () => this.onCancel()\n );\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunicationFiles(id),\n 'Communication File Deleted Successfully',\n () => this.filesData.splice(index, 1)\n );\n }\n\n /** Helper method to confirm and execute delete operations */\n private confirmAndExecute(operation, successMessage: string, onSuccess?: () => void) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n operation().subscribe(() => {\n this.toast.success(this.translation.translate(successMessage));\n if (onSuccess) {\n onSuccess();\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n this.cdr.markForCheck();\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n @if (isEdit) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n @if (isEdit) {\n <h3 class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n }\n @if (!isEdit) {\n <h2 [ngClass]=\"{ 'mt-2': isEdit }\">Documentation @if (groupId) {\n <span>for {{ groupName }}</span>\n }</h2>\n }\n </div>\n @if (!isEdit) {\n <p>\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n }\n </div>\n </div>\n </section>\n @if (!isLoaded && isEdit) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isEdit && isLoaded) {\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h3>{{ 'Enterprise.Documentation.Section.Content' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\" controlId=\"enterprise-wiki-title\">\n <input type=\"text\"\n id=\"enterprise-wiki-title\"\n class=\"form-control\"\n formControlName=\"title\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Title' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\" controlId=\"enterprise-wiki-body\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n [attr.aria-labelledby]=\"'enterprise-wiki-body-label'\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Body' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Visibility' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\" controlId=\"enterprise-wiki-group_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select\n [attr.aria-labelledby]=\"'enterprise-wiki-group_id-label'\"\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\" controlId=\"enterprise-wiki-visible_globally\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-visible_globally-label'\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\" controlId=\"enterprise-wiki-published\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-published-label'\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\" controlId=\"enterprise-wiki-pushed\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-pushed-label'\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Attachments' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <div class=\"mb-3\">\n <span id=\"enterprise-wiki-file-label\" class=\"pw-label-style\">Upload File</span>\n <p-fileUpload #forms\n [attr.aria-labelledby]=\"'enterprise-wiki-file-label'\"\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\">\n @if (!uploadedFiles?.length) {\n <div class=\"drag-drop-text\">\n <p>You can drag and drop your file here</p>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n @if (filesData?.length) {\n <div\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n @for (files of filesData; track files; let i = $index) {\n <div class=\"communication-files\"\n >\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (!isEdit) {\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-select\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"enterprise-wiki-search\" class=\"visually-hidden\">Search Documentation</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-wiki-search\"\n name=\"enterprise-wiki-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n @for (files of item.group_communication_files; track files) {\n <span>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n }\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n @if (item.visible_globally) {\n <span\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span>\n }@if (item.published) {\n <span\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span>\n }@if (item.pushed) {\n <span\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n }\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-wiki-details',\n templateUrl: './enterprise-wiki-details.component.html',\n styleUrls: ['./enterprise-wiki-details.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseWikiDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n id: number;\n communicationId: number;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n chatPermission: string;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n this.cdr.markForCheck();\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['wikiId']);\n this.cdr.markForCheck();\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div>\n @if (communicationDetails) {\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n @if (communicationDetails?.pushed_at) {\n <span class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n }\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n @for (\n files of communicationDetails?.group_communication_files; track trackByFileId($index,\n files)) {\n <p>\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport {\n EntityGroupComponent,\n GroupDefinitionComponent,\n GroupsComponent,\n SharedComponentsModule\n} from '@posiwise/shared-components';\n\nimport { PlotlyViaCDNModule } from 'angular-plotly.js';\nimport { QuillModule } from 'ngx-quill';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EnterpriseViewParticularCommunicationComponent } from './components/enterprise-communication-details/enterprise-communication-details.component';\nimport { EnterpriseCommunicationsComponent } from './components/enterprise-communications/enterprise-communications.component';\nimport { EnterpriseInsightsComponent } from './components/enterprise-insights/enterprise-insights.component';\nimport { EnterpriseMembersComponent } from './components/enterprise-members/enterprise-members.component';\nimport { EnterprisePartnersComponent } from './components/enterprise-partners/enterprise-partners.component';\nimport { EnterpriseSubscriptionsComponent } from './components/enterprise-subscriptions/enterprise-subscriptions.component';\nimport { EnterpriseTabsComponent } from './components/enterprise-tabs/enterprise-tabs.component';\nimport { EnterpriseWikiComponent } from './components/enterprise-wiki/enterprise-wiki.component';\nimport { EnterpriseWikiDetailsComponent } from './components/enterprise-wiki-details/enterprise-wiki-details.component';\n\nPlotlyViaCDNModule.setPlotlyVersion(\n '2.33.0',\n 'custom',\n 'https://cdn.jsdelivr.net/npm/plotly.js-strict-dist-min@2.33.0/plotly-strict.min.js'\n);\n\nconst routes: Routes = [\n {\n path: '',\n component: EnterpriseSubscriptionsComponent,\n pathMatch: 'full'\n },\n {\n path: '',\n component: EnterpriseTabsComponent,\n children: [\n {\n path: 'members',\n component: EnterpriseMembersComponent,\n data: {\n title: 'Enterprise - Members'\n }\n },\n {\n path: 'partners',\n component: EnterprisePartnersComponent,\n data: {\n permission: 'Pages.Alpha',\n title: 'Enterprise - Partners'\n }\n },\n {\n path: 'groups',\n component: GroupsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups'\n }\n },\n {\n path: 'groups/labels',\n component: GroupDefinitionComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Definition'\n }\n },\n {\n path: 'groups/:groupId/members',\n component: EntityGroupComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Entity'\n }\n },\n {\n path: 'communications',\n component: EnterpriseCommunicationsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Communication'\n }\n },\n {\n path: 'wiki',\n component: EnterpriseWikiComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'wiki/:wikiId',\n component: EnterpriseWikiDetailsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'communications/:communicationId',\n component: EnterpriseViewParticularCommunicationComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'insights',\n component: EnterpriseInsightsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Insight'\n }\n }\n ]\n }\n];\n\n@NgModule({\n declarations: [\n EnterpriseSubscriptionsComponent,\n EnterpriseMembersComponent,\n EnterprisePartnersComponent,\n EnterpriseTabsComponent,\n EnterpriseInsightsComponent,\n EnterpriseCommunicationsComponent,\n EnterpriseViewParticularCommunicationComponent,\n EnterpriseWikiComponent,\n EnterpriseWikiDetailsComponent\n ],\n imports: [\n CommonModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n CoreTranslocoModule,\n PlotlyViaCDNModule,\n NgbTooltipModule,\n UiSwitchModule,\n FormsModule,\n SelectModule,\n FileUploadModule,\n ReactiveFormsModule,\n PipesModule,\n DirectivesModule,\n SharedComponentsModule,\n RouterModule.forChild(routes),\n NgxUploaderModule,\n MultiSelectModule,\n // SharedModule,\n QuillModule.forRoot()\n // LazyLoadModules\n ]\n})\nexport class EnterpriseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i5","i6","i7","i8","i2","i3","i9","i12","i14","i1","i10","i11","i13","i15","i16","i17","i18"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBM,MAAO,8CACT,SAAQ,gBAAgB,CAAA;AAYxB,IAAA,WAAA,CACI,QAAkB,EACD,YAA0B,EAC1B,SAAuB,EACvB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QANxB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAShB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YAChC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,EAAE;IAC9H;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC;AACA,aAAA,uBAAuB,CAAC,IAAI,CAAC,eAAe;aAC5C,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;AAChB,gBAAA,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7E;YACA,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;IACf;IAEA,aAAa,CAAC,MAAc,EAAE,IAAI,EAAA;QAC9B,OAAO,IAAI,CAAC,EAAE;IAClB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA/DS,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8CAA8C,uHChB3D,+uIA2FA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD3Ea,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAP1D,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,cAInC,KAAK,EAAA,QAAA,EAAA,+uIAAA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA;;;MEZR,aAAa,CAAA;AACtB,IAAA,OAAO,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,kBAAkB,EAAE,CAAC,KAAK,CAAC;YAClC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,kBAAkB,EAAE,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK;AACjB,SAAA,CAAC;IACN;AAEA,IAAA,OAAO,qBAAqB,GAAA;AACxB,QAAA,OAAO,IAAI,kBAAkB,EAAE,CAAC,KAAK,CAAC;YAClC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,YAAA,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,kBAAkB,EAAE,CAAC,eAAe,CAAC;YACrC,SAAS,EAAE,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK;AACjB,SAAA,CAAC;IACN;AACH;;ACMK,MAAO,iCACT,SAAQ,gBAAgB,CAAA;IA4CxB,WAAA,CACqB,YAA0B,EAC3C,QAAkB,EACD,GAAsB,EACtB,QAAmB,EACnB,EAAc,EAAA;QAE/B,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEZ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QA9Cf,IAAA,CAAA,IAAI,GAAG,CAAC;QAEhB,IAAA,CAAA,eAAe,GAAgC,EAAE;QACjD,IAAA,CAAA,SAAS,GAAsB,EAAE;QACjC,IAAA,CAAA,sBAAsB,GAAsB,EAAE;QAC9C,IAAA,CAAA,gBAAgB,GAA8B,EAAE;QAMhD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAWlB,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,QAAQ,GAAG,KAAK;QAGhB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAI1B,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,KAAK,GAAG,KAAK;QAUT,WAAW,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE;IACrD;IACA,eAAe,GAAA;QACX,IAAI,CAAC,yBAAyB,EAAE;QAChC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;gBACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC/D;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;QAEnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;QAE5D,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAChC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;QAC5B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;YAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACN;;IAGQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAClF,YAAA,IAAI,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,iBAAiB;gBACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzC,oBAAA,MAAM,gBAAgB,GAAG,EAAE,KAAK;AAChC,oBAAA,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACtB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACxB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,wBAAA,CAAC,CAAC;oBACN;oBACA,IAAI,gBAAgB,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAClD,IAAI,CAAC,yBAAyB,EAAE;oBACpC;AACJ,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,sBAAsB,GAAG;AAC1B,oBAAA;AACI,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,WAAW,EAAE,EAAE;AACf,wBAAA,mBAAmB,EAAE,CAAC;AACtB,wBAAA,OAAO,EAAE;AACZ,qBAAA;oBACD,GAAG,IAAI,CAAC;iBACX;YACL;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD;IACJ;;AAGQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC;AACA,iBAAA,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;iBACzE,SAAS,CAAC,QAAQ,IAAG;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC,CAAC;QACV;aAAO;AACH,YAAA,IAAI,CAAC;iBACA,kCAAkC,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM;iBACnE,SAAS,CAAC,QAAQ,IAAG;AAClB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC;iBACA,GAAG,CAAC,MAAK;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC,CAAC;QACV;IACJ;;IAGA,iBAAiB,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;IACpC;IAGA,MAAM,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE;QAC/B;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;;IAGA,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChC;;AAGQ,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACnB;QACJ;QAEA,MAAM,SAAS,GAAG;AACd,cAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;cACxD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAEhD;aACK,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG;AACZ,kBAAE;kBACA,kCAAkC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;AAGA,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC;aACA,uBAAuB,CAAC,EAAE;aAC1B,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,yBAAyB;AACnD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;AAGA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACtD,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,oCAAoC,CAAC,CACnE;oBACD,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;IAGA,wBAAwB,CAAC,EAAU,EAAE,KAAa,EAAA;QAC9C,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yCAAyC,CAAC,CACxE;oBACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/B,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,IAAI,CAAC,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B;;IAGA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACtB;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;;IAGA,QAAQ,CAAC,KAAc,EAAE,eAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACnD;IAEA,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAC3B;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;QACJ;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACzD;IACJ;IAEA,yBAAyB,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAE3E,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAK;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,sBAAsB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAEA,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;QACf,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;IAClD;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,uCAAuC,CAAC;AACnE,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GAlXS,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,iCAAiC,gHClC9C,00fAoWA,EAAA,MAAA,EAAA,CAAA,8kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,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,EAAAI,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;ADhJI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AAUpB,CAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;2FA3LQ,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAI5B,KAAK,EAAA,QAAA,EAAA,00fAAA,EAAA,MAAA,EAAA,CAAA,8kCAAA,CAAA,EAAA;;;AElBf,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AAc7D,IAAA,WAAA,CACqB,mBAAwC,EACzD,QAAkB,EACD,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAEnB,IAAA,CAAA,GAAG,GAAH,GAAG;QAXxB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAahB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE;AACtD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7D;IAEQ,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC;aACA,oBAAoB,CACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,iBAAiB,EAAE;cAClB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY;AACtD,cAAE,EAAE,EACR,IAAI,CAAC,iBAAiB,EAAE;cAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY;cAClD,EAAE;aAEX,SAAS,CAAC,QAAQ,IAAG;;YAElB,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,QAAQ;AACxC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,iBAAiB,CAAC,KAA2D,EAAA;QACzE,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAChF,IAAI,CAAC,YAAY,EAAE;IACvB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA/DS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,0GCdxC,sgCAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDzBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,sgCAAA,EAAA;;;AEwCf,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;IAsC5D,WAAA,CACI,QAAkB,EACD,WAA+B,EAC/B,mBAAwC,EACxC,WAAwB,EACxB,YAA0B,EAC1B,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;QAzChB,IAAA,CAAA,IAAI,GAAG,CAAC;AAChB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAoB;QAc9C,IAAA,CAAA,QAAQ,GAAG,EAAE;QAQb,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QAGd,IAAA,CAAA,cAAc,GAAG,CAAC;QAClB,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAE1B,IAAA,CAAA,UAAU,GAAG,EAAE;QAGf,IAAA,CAAA,UAAU,GAAG,KAAK;AAWd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAe;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC;AACpC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9D,SAAA,CAAC;IACN;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACnC,IAAI,CAAC,sBAAsB,EAAE;YACjC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,OAAO;IACnI;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,kBAAkB,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;gBAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;gBACtC,MAAM,EAAE,IAAI,CAAC;AAChB,aAAA,CAAC;QACN;IACJ;AACA,IAAA,cAAc,CAAC,MAAoB,EAAA;AAC/B,QAAA,QAAQ,MAAM,CAAC,IAAI;AACf,YAAA,KAAK,iBAAiB;gBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,KAAK,GAAgB;AACvB,wBAAA,IAAI,EAAE,WAAW;wBACjB,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE;AACF,4BAAA,qBAAqB,EAAE,MAAM;AAC7B,4BAAA,iBAAiB,EAAE;AACtB,yBAAA;AACD,wBAAA,OAAO,EAAE;AACL,4BAAA,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC5B;qBACJ;AACD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChC;gBAEA;AACJ,YAAA,KAAK,cAAc;AACf,gBAAA,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,oBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC7C,oBAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChC;yBAAO;AACH,wBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC;oBAChE;gBACJ;gBACA;AACJ,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;;AAEpC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAC9B,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAC3E;oBACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI;gBACnC;gBACA;AACJ,YAAA,KAAK,SAAS;gBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAgB,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC1E;AACJ,YAAA,KAAK,UAAU;AACX,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB;AACJ,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACrB;AACJ,YAAA,KAAK,MAAM;gBACP;YACJ;;QAGJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC;IACtF;IAEQ,UAAU,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtD,SAAA,CAAC;IACN;IAEA,OAAO,GAAA;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;AAC3E,QAAA,IACI,IAAI,CAAC,eAAe,CAAC,KAAK;YAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAC5D;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD;IACJ;AAEA,IAAA,UAAU,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;QAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD;AAEA;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,MAAc,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACnF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;gBACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC1D,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,IAC7D,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAC/C;AACD,gBAAA,MAAM,aAAa,GAAG,sBAAsB,EAAE,QAAQ,EAAE,IAAI,CACxD,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAC3B;gBACD,MAAM,qBAAqB,GAAG;AAC1B,sBAAE;AACI,wBAAA,GAAG,aAAa;wBAChB,iBAAiB,EAAE,sBAAsB,EAAE;AAC9C;sBACD,IAAI;AACV,gBAAA,IAAI,CAAC,SAAS;AACV,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,wBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB;AACvC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACrC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,qBAAqB,CAAC;AAC9E,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,oBAAoB,EAAE;gBAC/B;YACJ;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9D,YAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AACrE,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;YACtB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAG;AAC/C,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACrD,YAAA,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAC3C;AACD,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzE,QAAA,CAAC,CAAC;IACN;IACA,YAAY,CAAC,KAAK,EAAE,IAAI,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,aAAiC;AACrC,QAAA,IAAI,OAAgB;AACpB,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9E,YAAA,MAAM,UAAU,GAAG;gBACf,eAAe,EAAE,IAAI,CAAC,EAAE;AACxB,gBAAA,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC3B,EAAE,EAAE,IAAI,CAAC;aACZ;YACD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,UAAU,CAAC;YACtE,OAAO,GAAG,IAAI;QAClB;aAAO;AACH,YAAA,MAAM,UAAU,GAAG;AACf,gBAAA,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC3B,eAAe,EAAE,IAAI,CAAC,EAAE;gBACxB,EAAE,EAAE,IAAI,CAAC;aACZ;YACD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,UAAU,CAAC;YACxE,OAAO,GAAG,KAAK;QACnB;AAEA,QAAA,aAAa,CAAC,SAAS,CAAC,MAAK;YACzB,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC7E;iBAAO;AACH,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAChF;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;AAC1E,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAGA,cAAc,GAAA;QACV,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC;YAClD,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAC5B,iEAAiE,CACpE;AACD,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,iBAAiB,EAAE;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC;qBACf,GAAG,CAAC,iBAAiB;sBACpB,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;qBAC9B,IAAI,CAAC,GAAG,CAAC;gBACd,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,oBAAA,MAAM,IAAI,GAAG;AACT,wBAAA,iBAAiB,EAAE,SAAS;wBAC5B,MAAM;AACN,wBAAA,qBAAqB,EAAE;qBAC1B;AACD,oBAAA,IAAI,CAAC;AACA,yBAAA,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI;yBACtC,SAAS,CAAC,QAAQ,IAAG;wBAClB,IAAI,QAAQ,EAAE,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;4BACrC,IAAI,CAAC,kBAAkB,CAAC;gCACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gCAAA,SAAS,EAAE;AACd,6BAAA,CAAC;4BACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpC,4BAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACrB;6BAAO;4BACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;wBAC5C;AACA,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,oBAAA,CAAC;yBACA,GAAG,CAAC,MAAK;AACN,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,oBAAA,CAAC,CAAC;gBACV;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,IAAU,EAAA;QACf,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,KAAK,EAAE,+BAA+B;AACtC,YAAA,IAAI,EAAE,CAAA,gCAAA,EAAmC,IAAI,CAAC,UAAU,CAAA,wBAAA,CAA0B;AAClF,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,IAAI,CAAC;qBACA,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;qBAC3C,SAAS,CAAC,QAAQ,IAAG;oBAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,kBAAkB,CAAC;4BACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACV;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,CAAC,IAAI,EAAE,KAAc,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,YAAY,GAAG,cAAc;YACrD,IAAI,EACA,KAAK,KAAK;AACN,kBAAE,CAAA,2EAAA;AACF,kBAAE,CAAA,aAAA,CAAe;AACzB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG;oBACT,OAAO,EAAE,IAAI,CAAC,EAAE;AAChB,oBAAA,QAAQ,EAAE;iBACb;AACD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACxC;oBACA,IAAI,CAAC,kBAAkB,CAAC;wBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,SAAS,EAAE;AACd,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA7XS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,0BAA0B,yGCpDvC,wpfAwXA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;ADjDI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AA8CpB,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;2FAhUQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAIrB,KAAK,EAAA,QAAA,EAAA,wpfAAA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA;;;AEZf,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AA+C7D,IAAA,WAAA,CACI,QAAkB,EACD,WAA+B,EAC/B,mBAAwC,EACxC,WAAwB,EACxB,YAA0B,EAC1B,cAA8B,EAC9B,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAPE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,GAAG,GAAH,GAAG;QAnDhB,IAAA,CAAA,IAAI,GAAG,CAAC;QAgBhB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,aAAa,GAAsC,EAAE;QACrD,IAAA,CAAA,UAAU,GAAG,EAAE;QAGf,IAAA,CAAA,QAAQ,GAAG,EAAE;QAQb,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,YAAY,GAAG,KAAK;QAEpB,IAAA,CAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC5C,IAAA,CAAA,cAAc,GAAG,CAAC;QAElB,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAC1B,IAAA,CAAA,YAAY,GAAG,CAAC;QAGhB,IAAA,CAAA,UAAU,GAAG,KAAK;AAcd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAe;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC;AACpC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5D,YAAA,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;AACvC,SAAA,CAAC;IACN;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACnC,IAAI,CAAC,sBAAsB,EAAE;YACjC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,OAAO;QAC/H,IAAI,CAAC,eAAe,EAAE;IAC1B;IAEA,OAAO,GAAA;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;AAC3E,QAAA,IACI,IAAI,CAAC,eAAe,CAAC,KAAK;YAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAC5D;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD;IACJ;AAEA,IAAA,UAAU,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;QAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD;IAEQ,UAAU,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtD,SAAA,CAAC;IACN;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,qBAAqB,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,IAAI,CAAC;AAChB,aAAA,CAAC;QACN;IACJ;AACQ,IAAA,qBAAqB,CAAC,MAAc,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACtF,YAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,QAAQ;AAC7C,YAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;AAC1E,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,oBAAoB,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAG;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,OAAO;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACtD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC;iBACf,GAAG,CAAC,iBAAiB;kBACpB,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;iBAC9B,IAAI,CAAC,GAAG,CAAC;YACd,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,SAAS,GAAG;oBACd,MAAM;AACN,oBAAA,UAAU,EAAE;iBACf;AACD,gBAAA,IAAI,CAAC;AACA,qBAAA,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS;qBAC5C,SAAS,CAAC,QAAQ,IAAG;oBAClB,IAAI,QAAQ,EAAE,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACrC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;AACF,wBAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpC,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACrB;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC;qBACA,GAAG,CAAC,MAAK;AACN,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACV;QACJ;IACJ;AAEA,IAAA,QAAQ,CAAC,OAAuB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,CAAA,gCAAA,CAAkC;AACxC,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,YAAY,CAAC,OAA2C,EAAA;QACpD,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,OAAO,CAAC,SAAS,GAAG,YAAY,GAAG,UAAU;YACpD,IAAI,EAAE,OAAO,CAAC;AACV,kBAAE,CAAA,iDAAA;AACF,kBAAE,iDAAiD;AACvD,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG;oBACT,uBAAuB,EAAE,OAAO,CAAC,EAAE;AACnC,oBAAA,SAAS,EAAE,CAAC,OAAO,CAAC;iBACvB;AACD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YACtE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAC3D;YACD,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,IAAG;gBAC3C,OAAO;AACH,oBAAA,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,OAAO,IAAI;iBACrB;AACL,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,OAAO,CAAC,GAAG,EAAA;AACP,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG;AACjB,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjC,aAAA,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AACtB,YAAA,OAAO,MAAM;QACjB,CAAC,EAAE,EAAE,CAAC;IACd;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,CAAC;AACA,aAAA,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE;aAC/C,SAAS,CAAC,QAAQ,IAAG;YAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,eAAe,CAAC,KAAK,EAAA;QACjB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjB,YAAA,UAAU,EAAE;AACf,SAAA,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,MAAM,EAAA;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C;IACJ;AAEQ,IAAA,aAAa,CAAC,QAAQ,EAAA;AAC1B,QAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;YAClB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC9E,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxC,YAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjC,IAAI,YAAY,GAAG,EAAE;;AAErB,YAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAChE;AACD,gBAAA,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B;YACA,YAAY;AACR,gBAAA,YAAY,EAAE,GAAG,CAAC,CAAC,IAAG;oBAClB,OAAO;wBACH,EAAE,EAAE,CAAC,CAAC,EAAE;AACR,wBAAA,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,IAAI,CAAA,GAAA,EAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,iBAAiB,CAAA,GAAA,EAAM,CAAC,CAAC,SAAS,CAAA,GAAA,EAAM,CAC1E,CAAC,CAAC,cAAc,GAAG,GAAG,EACxB,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,CAAC,CAAC,QAAQ,CAAA,CAAE;wBAC9B,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAA,OAAA,EAAU,CAAC,CAAC,SAAS,CAAA,CAAA;qBACtD;gBACL,CAAC,CAAC,IAAI,EAAE;AAEZ,YAAA,OAAO,YAAY;QACvB;AAEA,QAAA,OAAO,EAAE;IACb;8GAjUS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,oNCtCxC,+zTA2NA,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,IAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrLa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAItB,KAAK,EAAA,QAAA,EAAA,+zTAAA,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA;;sBAOhB,SAAS;uBAAC,YAAY;;;AE7BrB,MAAO,gCACT,SAAQ,gBAAgB,CAAA;AAaxB,IAAA,WAAA,CACI,QAAkB,EACD,IAAiB,EACjB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAHE,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;QAbxB,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,QAAQ,GAAG,IAAI;IAYf;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,IAAI;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,IAAU,KAAI;YACtC,IAAI,IAAI,EAAE;gBACN,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAG;oBACzD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAG;wBACxC,QACI,OAAO,EAAE,cAAc;AACvB,4BAAA,iBAAiB,CAAC,eAAe,EAAE,cAAc;AAEzD,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;gBAEF,IAAI,aAAa,EAAE;AACf,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjB,wBAAA,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,eAAe,aAAa,CAAC,EAAE,CAAA,QAAA;AACnD,qBAAA,CAAC;gBACN;YACJ;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACzC,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,yBAAyB,GAAA;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAClD,SAAS,CAAC,IAAI,IAAG;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,CAAC,CAAC,CACL;QAED;aACK,SAAS,CAAC,QAAQ,IAAG;YAClB,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB,IAAI,CAAC,aAAa,GAAG;AACjB,oBAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAG;wBACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAG;4BACxC,OAAO,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;AACvD,wBAAA,CAAC,CAAC;AACN,oBAAA,CAAC;iBACJ;YACL;AACJ,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9B;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GAtFS,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,gCAAgC,+GCd7C,qoDAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnCa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAG3B,KAAK,EAAA,QAAA,EAAA,qoDAAA,EAAA;;;AEAf,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AACzD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;AAKnB,QAAA,IAAA,CAAA,KAAK,GAAe;AAChB,YAAA;AACI,gBAAA,EAAE,EAAE,gBAAgB;AACpB,gBAAA,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,CAAC,qBAAqB,CAAC;AACnC,gBAAA,IAAI,EAAE;AACT,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,CAAC,sBAAsB,CAAC;AACpC,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,aAAa;AACpE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,CAAC,oBAAoB,CAAC;AAClC,gBAAA,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,wBAAwB;AAC5B,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,CAAC,4BAA4B,CAAC;AAC1C,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,eAAe;gBACtB,UAAU,EAAE,CAAC,kBAAkB,CAAC;AAChC,gBAAA,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,CAAC,sBAAsB,CAAC;AACpC,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE;SACJ;IA9CD;8GAHS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sGCZpC,wEAEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDUa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,wEAAA,EAAA;;;AEwBf,MAAO,uBACT,SAAQ,gBAAgB,CAAA;IA6CxB,WAAA,CACqB,YAA0B,EAC3C,QAAkB,EACD,GAAsB,EACtB,QAAmB,EACnB,EAAc,EAAA;QAE/B,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEZ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QA/Cf,IAAA,CAAA,IAAI,GAAG,CAAC;QAEhB,IAAA,CAAA,eAAe,GAAgC,EAAE;QACjD,IAAA,CAAA,SAAS,GAAsB,EAAE;QAEjC,IAAA,CAAA,gBAAgB,GAA8B,EAAE;QAMhD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAMlB,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,eAAe;QAMzE,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,QAAQ,GAAG,KAAK;QAGhB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAI1B,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,KAAK,GAAG,KAAK;QAUT,WAAW,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE;IAC3C;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,yBAAyB,EAAE;QAChC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;gBACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;YACnC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;QAEnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAChC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;QAC5B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;YAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACN;;IAGQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAClF,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,iBAAiB;gBACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzC,oBAAA,MAAM,gBAAgB,GAAG,EAAE,KAAK;AAChC,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACrB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACxB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,wBAAA,CAAC,CAAC;oBACN;oBACA,IAAI,gBAAgB,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAClD,IAAI,CAAC,yBAAyB,EAAE;oBACpC;AACJ,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,sBAAsB,GAAG;AAC1B,oBAAA;AACI,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,WAAW,EAAE,EAAE;AACf,wBAAA,mBAAmB,EAAE,CAAC;AACtB,wBAAA,OAAO,EAAE;AACZ,qBAAA;oBACD,GAAG,IAAI,CAAC;iBACX;YACL;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD;IACJ;;AAGQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC;cACjB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpF,cAAE,IAAI,CAAC,YAAY,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;QAEnF;AACK,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,QAAQ,IAAG;AACb,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC3B,CAAC;YACD,KAAK,EAAE,KAAK,IAAG;AACX,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC3B;SACH;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;IAEA,iBAAiB,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;IACpC;IAGA,MAAM,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;YACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;;AAGA,IAAA,oBAAoB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;IACpC;;IAGQ,iBAAiB,CAAC,QAAiB,EAAE,EAAW,EAAA;AACpD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAErB,MAAM,SAAS,GAAG;cACZ,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI;cAC7C,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAEhD;aACK,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzB,MAAM,OAAO,GAAG;AACZ,kBAAE;kBACA,kCAAkC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;AAGA,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC;aACA,uBAAuB,CAAC,EAAE;aAC1B,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,yBAAyB;AACnD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;AAGA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,CAAC,iBAAiB,CAClB,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAChD,oCAAoC,EACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,CACxB;IACL;;IAGA,wBAAwB,CAAC,EAAU,EAAE,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,CAClB,MAAM,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,EACpD,yCAAyC,EACzC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CACxC;IACL;;AAGQ,IAAA,iBAAiB,CAAC,SAAS,EAAE,cAAsB,EAAE,SAAsB,EAAA;QAC/E,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,SAAS,EAAE,CAAC,SAAS,CAAC,MAAK;AACvB,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC9D,IAAI,SAAS,EAAE;AACX,wBAAA,SAAS,EAAE;oBACf;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,IAAI,CAAC,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B;;IAGA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACtB;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;;IAGA,QAAQ,CAAC,KAAc,EAAE,eAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACnD;IAEA,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAC3B;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;QACJ;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACzD;IACJ;AAEA,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;QACf,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;IAClD;IAEA,yBAAyB,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAE3E,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAK;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,sBAAsB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,uCAAuC,CAAC;AACnE,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA7WS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sGClCpC,s1fAyWA,EAAA,MAAA,EAAA,CAAA,y3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,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,EAAAI,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AD1JI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AAUpB,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;2FAtLQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAIlB,KAAK,EAAA,QAAA,EAAA,s1fAAA,EAAA,MAAA,EAAA,CAAA,y3BAAA,CAAA,EAAA;;;AEhBf,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;AAUhE,IAAA,WAAA,CACI,QAAkB,EACD,YAA0B,EAC1B,SAAuB,EACvB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QARxB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAWhB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YAChC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,EAAE;IAC9H;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC;AACA,aAAA,uBAAuB,CAAC,IAAI,CAAC,eAAe;aAC5C,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;AAChB,gBAAA,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7E;YACA,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;IACf;IAEA,aAAa,CAAC,MAAc,EAAE,IAAI,EAAA;QAC9B,OAAO,IAAI,CAAC,EAAE;IAClB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA5DS,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,8BAA8B,8GChB3C,gvIA2FA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD3Ea,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAI1B,KAAK,EAAA,QAAA,EAAA,gvIAAA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA;;;AEwBrB,kBAAkB,CAAC,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,oFAAoF,CACvF;AAED,MAAM,MAAM,GAAW;AACnB,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,gCAAgC;AAC3C,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,IAAI,EAAE;AACF,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,2BAA2B;AACtC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,SAAS,EAAE,wBAAwB;AACnC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,SAAS,EAAE,oBAAoB;AAC/B,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,SAAS,EAAE,8BAA8B;AACzC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,SAAS,EAAE,8CAA8C;AACzD,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,2BAA2B;AACtC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ;AACJ;AACJ;CACJ;MAsCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAlCrB,gCAAgC;YAChC,0BAA0B;YAC1B,2BAA2B;YAC3B,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,8CAA8C;YAC9C,uBAAuB;AACvB,YAAA,8BAA8B,aAG9B,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;YACX,gBAAgB;AAChB,YAAA,sBAAsB,oBAEtB,iBAAiB;YACjB,iBAAiB,EAAAC,GAAA,CAAA,WAAA,CAAA,EAAA,CAAA,CAAA;AAMZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAvBrB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,sBAAsB;AACtB,YAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,iBAAiB;YACjB,iBAAiB;;YAEjB,WAAW,CAAC,OAAO;;;;2FAId,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,gCAAgC;wBAChC,0BAA0B;wBAC1B,2BAA2B;wBAC3B,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,8CAA8C;wBAC9C,uBAAuB;wBACvB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,mBAAmB;wBACnB,kBAAkB;wBAClB,gBAAgB;wBAChB,cAAc;wBACd,WAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,sBAAsB;AACtB,wBAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC7B,iBAAiB;wBACjB,iBAAiB;;wBAEjB,WAAW,CAAC,OAAO;;AAEtB;AACJ,iBAAA;;;AC5KD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"posiwise-enterprise-module.mjs","sources":["../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communication-details/enterprise-communication-details.component.html","../../../../libs/enterprise-module/src/lib/models/enterprise.model.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-communications/enterprise-communications.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-insights/enterprise-insights.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-members/enterprise-members.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-partners/enterprise-partners.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-subscriptions/enterprise-subscriptions.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-tabs/enterprise-tabs.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki/enterprise-wiki.component.html","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.ts","../../../../libs/enterprise-module/src/lib/components/enterprise-wiki-details/enterprise-wiki-details.component.html","../../../../libs/enterprise-module/src/lib/enterprise.module.ts","../../../../libs/enterprise-module/src/posiwise-enterprise-module.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-communication-details',\n templateUrl: './enterprise-communication-details.component.html',\n styleUrls: ['./enterprise-communication-details.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseViewParticularCommunicationComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n id: number;\n communicationId: number;\n\n chatPermission: string;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n this.cdr.markForCheck();\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['communicationId']);\n this.cdr.markForCheck();\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.isLoaded = true;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.cdr.markForCheck();\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (keydown.enter)=\"onCancel()\"\n (click)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Communication</h2>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div>\n @if (communicationDetails) {\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n @if (communicationDetails?.pushed_at) {\n <span class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n }\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n @for (\n files of communicationDetails?.group_communication_files; track trackByFileId($index,\n files)) {\n <p>\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n","import { UntypedFormBuilder, Validators } from '@angular/forms';\n\nexport class AppEnterprise {\n static getWikiForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [''],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['wiki'],\n published: [false],\n pushed: [false]\n });\n }\n\n static getCommunicationsForm() {\n return new UntypedFormBuilder().group({\n body: ['', [Validators.required]],\n group_id: ['', [Validators.required]],\n user_id: [],\n visible_globally: [false],\n title: ['', [Validators.required]],\n communication_type: ['communication'],\n published: [false],\n pushed: [false]\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-communications',\n templateUrl: './enterprise-communications.component.html',\n styleUrls: ['./enterprise-communications.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseCommunicationsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allCommunicationGroups: EnterPriseGroup[] = [];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getCommunicationsForm();\n }\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n this.hasAccess = this.hasAdminAccess(this.subscription?.id);\n }\n this.cdr.markForCheck();\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n this.getAllGroupDefinition();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response?.group_definitions?.length) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data?.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allCommunicationGroups = [\n {\n id: 0,\n name: 'All Communications',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n this.cdr.markForCheck();\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n if (this.groupId) {\n this.groupService\n .getAllCommunications(this.id, 'communication', this.groupId || '', paging)\n .subscribe(response => {\n this.loading = false;\n this.isLoaded = true;\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n });\n } else {\n this.groupService\n .getAllCommunicationsWithOutGroupId(this.id, 'communication', paging)\n .subscribe(response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.loading = false;\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n }\n\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications();\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications() {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean) {\n this.form.get('user_id').setValue(this.user.id);\n this.form.get('communication_type')?.setValue('communication');\n const data = this.form?.value;\n this.submitted = true;\n\n if (this.form.invalid) {\n return;\n }\n\n const operation = isUpdate\n ? this.groupService.editCommunications(this.data?.id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const id = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(id);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunications(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication Deleted Successfully')\n );\n this.onCancel();\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.groupService.deleteCommunicationFiles(id).subscribe(() => {\n this.toast.success(\n this.translation.translate('Communication File Deleted Successfully')\n );\n this.filesData.splice(index, 1);\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n this.cdr.markForCheck();\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n @if (isEdit) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n @if (isEdit) {\n <h3 class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create new' }} Communication</span>\n </h3>\n }\n @if (!isEdit) {\n <h2 [ngClass]=\"{ 'mt-2': isEdit }\">Communications @if (groupId) {\n <span>for {{ groupName }}</span>\n }</h2>\n }\n </div>\n @if (!isEdit) {\n <p>\n Here you can send communications to your organization, based on the teams they are\n part of.\n </p>\n }\n </div>\n </div>\n </section>\n @if (!isLoaded && isEdit) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isEdit && isLoaded) {\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h3>{{ 'Enterprise.Documentation.Section.Content' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\" controlId=\"enterprise-communications-title\">\n <input type=\"text\"\n id=\"enterprise-communications-title\"\n class=\"form-control\"\n formControlName=\"title\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Title' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f['title'].errors }\" />\n </pw-input-container>\n </div>\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\" controlId=\"enterprise-communications-body\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n [attr.aria-labelledby]=\"'enterprise-communications-body-label'\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Body' | transloco\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [ngClass]=\"{ 'is-invalid': submitted && f['body'].errors }\">\n </quill-editor>\n </pw-input-container>\n <div class=\"col-12 col-md-4\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n name=\"group_id\" controlId=\"enterprise-communications-group_id\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\">\n <p-select\n [attr.aria-labelledby]=\"'enterprise-communications-group_id-label'\"\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Visibility' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\" controlId=\"enterprise-communications-visible_globally\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-visible_globally-label'\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\" controlId=\"enterprise-communications-published\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-published-label'\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-3\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\" controlId=\"enterprise-communications-pushed\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-communications-pushed-label'\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Attachments' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <div class=\"mb-3\">\n <span id=\"enterprise-communications-file-label\" class=\"pw-label-style\">Upload Communication File</span>\n <p-fileUpload #forms\n [attr.aria-labelledby]=\"'enterprise-communications-file-label'\"\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\">\n @if (!uploadedFiles?.length) {\n <div class=\"drag-drop-text\">\n <p>You can drag and drop your file here</p>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n @if (filesData?.length) {\n <div\n class=\"mt-5\">\n <h2>Communications files attached to this communication</h2>\n @for (files of filesData; track files; let i = $index) {\n <div class=\"communication-files\"\n >\n <p>\n <a target=\"blank\"\n href=\"{{ files.name.url }}\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (!isEdit) {\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Communication' }}\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-12 col-md-3 mb-2 mb-md-0 filter-domain-list\">\n <p-select\n [options]=\"allCommunicationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.FilterTeam' | transloco\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"enterprise-communications-search\" class=\"visually-hidden\">Search Communications</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-communications-search\"\n name=\"enterprise-communications-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n @for (files of item.group_communication_files; track files) {\n <span>\n <a target=\"blank\"\n [href]=\"files.name.url\">{{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}</a>\n </span>\n }\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n @if (item.visible_globally) {\n <span\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span>\n }@if (item.published) {\n <span\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span>\n }@if (item.pushed) {\n <span\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Communication.NoCommunication' | transloco\">\n </pw-no-data>\n </div>\n }\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Plotly, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { handleDateRangeSelection } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-enterprise-insights',\n templateUrl: './enterprise-insights.component.html',\n\n standalone: false\n})\nexport class EnterpriseInsightsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n graph: Plotly.Figure;\n\n user: User;\n subscriptionId: number;\n\n hasAccess = false;\n isLoaded = false;\n\n userId: number;\n\n selectedDateRange;\n dateRanges;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.subscriptionId = id;\n this.cdr.markForCheck();\n });\n this.dateRanges = HelperService.initializeDateRanges();\n this.selectedDateRange = '';\n this.getChartData();\n this.hasAccess = this.hasAdminAccess(this.subscriptionId);\n }\n\n private getChartData() {\n this.isLoaded = false;\n this.subscriptionService\n .getEnterpriseInsight(\n this.subscriptionId,\n this.selectedDateRange?.startDate\n ? this.selectedDateRange.startDate.format('YYYY-MM-DD')\n : '',\n this.selectedDateRange?.endDate\n ? this.selectedDateRange.endDate.format('YYYY-MM-DD')\n : ''\n )\n .subscribe(response => {\n // API now returns { items: [], totals: {} } instead of array\n this.graph = response?.items ?? response;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n onDateRangeSelect(event: { startDate: moment.Moment; endDate: moment.Moment }) {\n this.selectedDateRange = handleDateRangeSelection(event, this.selectedDateRange);\n this.getChartData();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <h2>Enterprise Insight</h2>\n\n @if (hasAccess) {\n <p>Please find below some insight for your Enterprise subscription.</p>\n }\n </div>\n\n <app-date-picker\n [selectedDateRange]=\"selectedDateRange\"\n [dateRanges]=\"dateRanges\"\n (dateRangeChange)=\"onDateRangeSelect($event)\">\n </app-date-picker>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n\n\n @if (hasAccess) {\n <div class=\"col-12\"\n >\n @if (graph) {\n <plotly-plot [data]=\"graph?.data\"\n [config]=\"graph?.config\"\n [layout]=\"graph?.layout\" [useResizeHandler]=\"graph? true : false\"></plotly-plot>\n }\n </div>\n }\n\n @if (!hasAccess && isLoaded) {\n <div\n class=\"w-100\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Insight.NoDataMessage' | transloco\"> </pw-no-data>\n </div>\n }\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n PermissionService,\n PrimeNgHelper,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport {\n DOCUMENT_TYPE_EXT,\n PAGE_SIZE,\n Paging,\n Subscription,\n TOKEN_HEADER_KEY,\n User\n} from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport {\n humanizeBytes,\n UploaderOptions,\n UploadFile,\n UploadInput,\n UploadOutput,\n UploadStatus\n} from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { EnterpriseMembersResponse } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-members',\n templateUrl: './enterprise-members.component.html',\n styleUrls: ['./enterprise-members.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseMembersComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n previousRolesMap = new Map<number, string[]>();\n\n id: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n productName: string;\n allRoles = [];\n subscriptionMembers: EnterpriseMembersResponse;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled: boolean;\n\n availableUnits = 0;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()])\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n this.cdr.markForCheck();\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n }\n onUploadOutput(output: UploadOutput): void {\n switch (output.type) {\n case 'allAddedToQueue':\n if (this.files.length > 0) {\n const event: UploadInput = {\n type: 'uploadAll',\n url: this.subscriptionService.signUpMemberUrl(this.id),\n method: 'POST',\n data: {\n send_marketing_emails: 'true',\n confirmation_path: 'confirm'\n },\n headers: {\n [TOKEN_HEADER_KEY]: this.token\n }\n };\n this.uploadInput.emit(event);\n }\n\n break;\n case 'addedToQueue':\n if (typeof output.file !== 'undefined') {\n const ext = output.file.name.split('.').pop();\n if (DOCUMENT_TYPE_EXT.includes(ext)) {\n this.files.push(output.file);\n } else {\n this.toast.error('Only csv and xlsx formats are supported.');\n }\n }\n break;\n case 'uploading':\n if (typeof output.file !== 'undefined') {\n // update current data in files array for uploading file\n const index = this.files.findIndex(\n file => typeof output.file !== 'undefined' && file.id === output.file.id\n );\n this.files[index] = output.file;\n }\n break;\n case 'removed':\n this.files = this.files.filter((file: UploadFile) => file !== output.file);\n break;\n case 'dragOver':\n this.dragOver = true;\n break;\n case 'dragOut':\n case 'drop':\n this.dragOver = false;\n break;\n case 'done':\n break;\n default:\n }\n\n this.files = this.files.filter(file => file.progress.status !== UploadStatus.Done);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n /**\n * Gets the list of members for the subscription and also shows the admins for the\n * subscription\n * @param page Page number\n * @param page_size Page Size\n */\n private getSubscribedUsers(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getEnrolledSubscription(this.id, paging).subscribe(response => {\n this.isLoaded = true;\n if (response?.members && response.members.length > 0) {\n this.subscriptionMembers = response;\n this.subscriptionOwner = this.subscriptionMembers.owner_id;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.isLoaded = true;\n this.loading = false;\n const userMasterSubscription = this.user?.subscriptions?.find(sub =>\n sub.products?.some(p => p.is_master_product)\n );\n const masterProduct = userMasterSubscription?.products?.find(\n p => p.is_master_product\n );\n const masterProductWithSlug = masterProduct\n ? {\n ...masterProduct,\n subscription_slug: userMasterSubscription?.slug\n }\n : null;\n this.hasAccess =\n this.subscriptionMembers.admins.includes(this.user.id) ||\n this.user.id === this.subscriptionOwner ||\n this.permissionService.isSuperAdmin() ||\n this.permissionService.isUserSubscriptionSuperAdmin(masterProductWithSlug);\n if (this.hasAccess) {\n this.getSubscriptionRoles();\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n getSubscriptionRoles() {\n this.adminService.getSubscriptionRoles(this.id).subscribe(roles => {\n this.allRoles = PrimeNgHelper.dropdownDataSource(roles, 'name', 'id');\n if (this.allRoles) {\n this.filterRoles();\n }\n this.cdr.markForCheck();\n });\n }\n\n filterRoles() {\n this.subscriptionMembers.members.forEach(element => {\n const userRoleIds = element.user_roles.map(x => x.id);\n element['selected_roles'] = userRoleIds.filter(roleId =>\n this.allRoles.find(x => x.id === roleId)\n );\n this.previousRolesMap.set(element.id, [...element['selected_roles']]);\n });\n }\n onRoleChange(event, user) {\n const prevRoles = this.previousRolesMap.get(user.id) || [];\n const unselected = prevRoles.find(id => !event.value.includes(id));\n this.previousRolesMap.set(user.id, [...event.value]);\n let subscription$: Observable<string>;\n let isAdded: boolean;\n if (!unselected && user.user_roles.map(x => x.id).indexOf(event.itemValue) <= -1) {\n const updateData = {\n subscription_id: this.id,\n role_id: event.itemValue.id,\n id: user.id\n };\n subscription$ = this.adminService.saveUserSubscriptionRole(updateData);\n isAdded = true;\n } else {\n const deleteData = {\n role_id: event.itemValue.id,\n subscription_id: this.id,\n id: user.id\n };\n subscription$ = this.adminService.deleteUserSubscriptionRole(deleteData);\n isAdded = false;\n }\n\n subscription$.subscribe(() => {\n if (isAdded) {\n this.toast.success(this.translation.translate('Admin.Users.UpdatedRole'));\n } else {\n this.toast.success(this.translation.translate('Admin.Users.DeletedMessage'));\n }\n this.cdr.markForCheck();\n });\n }\n\n private getSubscriptionDetails() {\n this.isLoaded = false;\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.isLoaded = true;\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n this.cdr.markForCheck();\n });\n }\n\n @ValidateForm('form')\n onSignUpMember() {\n swal.fire({\n title: this.translation.translate('Label.Confirm'),\n text: this.translation.translate(\n 'Admin.Subscriptions.confirmEnterpriseMembersSubscriptionMessage'\n ),\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning',\n confirmButtonText: 'Yes'\n }).then(rep => {\n if (rep.value) {\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n this.buttonBusy = true;\n const data = {\n confirmation_path: 'confirm',\n emails,\n send_marketing_emails: true\n };\n this.subscriptionService\n .addMembersToSubscription(this.id, data)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n }\n }\n });\n }\n\n onDelete(user: User) {\n swal.fire({\n title: 'Remove user from subscription',\n text: `Are you sure you want to remove ${user.first_name} from this subscription?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService\n .removeEnrolledSubscription(this.id, user.id)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n makeAdmin(user, value: boolean) {\n swal.fire({\n title: value === true ? 'Make Admin' : 'Remove Admin',\n text:\n value === true\n ? `This user will now have full access to your subscription. Read more in FAQ.`\n : `Are you sure?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n user_id: user.id,\n is_admin: value\n };\n this.subscriptionService.toggleAdmin(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n }\n this.getSubscribedUsers({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n @if (isAddEnabled) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n <h2>Enterprise Members for {{ productName }}</h2>\n </div>\n @if (!isAddEnabled) {\n <p>\n You'll find in this section all the members of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n }\n @if (isAddEnabled) {\n <p>Here you can add members to your subscriptions</p>\n }\n </div>\n </div>\n </section>\n @if (!isAddEnabled) {\n <section id=\"enrolled\"\n >\n <div class=\"row\">\n @if (hasAccess) {\n <div class=\"col-12 text-end\"\n >\n @if (!isAddEnabled) {\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Members\n </button>\n }\n </div>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"subscriptionMembers?.members\"\n [paginator]=\"subscriptionMembers?.members.length !== 0\"\n [totalRecords]=\"subscriptionMembers?.members.length\"\n [globalFilterFields]=\"['email', 'name']\"\n [rows]=\"PAGE_SIZE\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <label for=\"enterprise-members-search-contact\" class=\"visually-hidden\">Search contact</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-members-search-contact\"\n name=\"enterprise-members-search-contact\"\n [(ngModel)]=\"searchText\"\n pInputText\n placeholder=\"Search contact...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Roles' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Members.LastSeen' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-users>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n <span>\n <a [routerLink]=\"['/members', users.slug]\">{{\n users?.preferred_name\n ? users?.preferred_name\n : (users | ifNameNullShowEmail)\n }}\n </a>\n @if (!users?.has_password) {\n <span class=\"ms-2\"\n [pTooltip]=\"'This user hasn\\'t joined yet'\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-exclamation-triangle text-warning\"></i>\n </span>\n }\n @if (users?.enable_two_factor_authenticator) {\n <span class=\"ms-2\"\n [pTooltip]=\"'2FA enabled'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-lock text-success\"></i>\n </span>\n }\n @if (users?.blocked) {\n <span class=\"ms-2\"\n [pTooltip]=\"'This user has been blocked, please contact support'\"\n tooltipPosition=\"top\">\n <i class=\"fa-solid fa-hexagon-exclamation text-danger\"></i>\n </span>\n }\n @if (users.id === subscriptionOwner) {\n <span class=\"badge bg-dark mx-1\"> Owner </span>\n }\n @if (subscriptionMembers.admins.includes(users.id)) {\n <span class=\"badge bg-success mx-1 admin-badge\"> Admin </span>\n }\n @if (users.id === user.id) {\n <span class=\"badge mx-1 you-badge\"> You </span>\n }\n </span>\n </td>\n <td data-head=\"Email\">{{ users.email }}</td>\n <td data-head=\"Team\">\n @for (groups of users.user_groups; track groups) {\n <span><a class=\"badge bg-primary text-white ms-2\"\n [routerLink]=\"[\n '/' + subscription?.slug + '/enterprise',\n 'groups',\n groups.id,\n 'members'\n ]\">{{ groups.name }}</a>\n </span>\n }\n </td>\n <td data-head=\"Roles\">\n @if (hasAccess && allRoles.length) {\n <div *rbacAllow=\"'Pages.Alpha'\">\n <p-multiSelect [(ngModel)]=\"users.selected_roles\" [options]=\"allRoles\" (onChange)=\"onRoleChange($event, users)\"\n inputId=\"enterprise-members-roles-{{ users.id }}\"\n placeholder=\"Set roles\" [showHeader]=\"false\" appendTo=\"body\">\n </p-multiSelect>\n </div>\n }\n </td>\n <td data-head=\"Last seen\">\n @if (users?.current_sign_in_at) {\n <span>\n <span>{{ users.current_sign_in_at | dateFormat }}</span>\n @if (users.current_sign_in_at) {\n <span> ({{ users.current_sign_in_at | sinceAgo }})</span>\n }\n </span>\n } @else {\n <span>\n <span>{{ users.last_sign_in_at | dateFormat }}</span>\n @if (users.last_sign_in_at) {\n <span> ({{ users.last_sign_in_at | sinceAgo }})</span>\n }\n </span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <!-- Message Icon -->\n <li ngbTooltip=\"Message\"\n class=\"me-2 me-sm-3 mx-2\"\n *rbacAllow=\"chatPermission\"\n [class.invisible]=\"user && user.id === users.id\"\n [routerLink]=\"['/message']\"\n [fragment]=\"users.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n <!-- Action Buttons -->\n @if (hasAccess && users.id !== subscriptionOwner) {\n <!-- Make Admin -->\n @if (!this.subscriptionMembers.admins.includes(users.id)) {\n <li ngbTooltip=\"Make Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n >\n <i\n class=\"fa fa-user-crown fa-lg success\"\n (click)=\"makeAdmin(users, true)\"\n (keydown.enter)=\"makeAdmin(users, true)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n <li></li>\n <!-- Remove Admin -->\n @if (this.subscriptionMembers.admins.includes(users.id)) {\n <li ngbTooltip=\"Remove Admin\"\n class=\"me-2 me-sm-3 mx-2\"\n >\n <i\n class=\"fa fa-ban warning fa-lg\"\n (keydown.enter)=\"makeAdmin(users, false)\"\n (click)=\"makeAdmin(users, false)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n } @else {\n <li class=\"mx-3\"></li>\n }\n @if (hasAccess) {\n @if (users.id !== subscriptionOwner) {\n <li class=\"delete-user mx-2\"\n ngbTooltip=\"Remove user from subscription\"\n >\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(users)\"\n (keydown.space)=\"onDelete(users)\"\n (click)=\"onDelete(users)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n }\n }\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (subscriptionMembers?.members.length !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"subscriptionMembers?.members.length || 0\" />\n }\n </div>\n </section>\n}\n\n@if (isAddEnabled) {\n <section id=\"manage-members\"\n >\n <h5 class=\"ms-2 pt-3\">Upload File (CSV)</h5>\n <div class=\"row p-2\">\n <div class=\"col-12\">\n <div class=\"upload-box\">\n <div class=\"upload-box-content\">\n <div class=\"drop-container\"\n ngFileDrop\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\">\n <p>\n Drag files here or\n <label class=\"upload-button\">\n <input type=\"file\"\n id=\"enterprise-members-csv-upload\"\n name=\"enterprise-members-csv-upload\"\n ngFileSelect\n [options]=\"options\"\n (uploadOutput)=\"onUploadOutput($event)\"\n [uploadInput]=\"uploadInput\"\n multiple />\n browse\n </label>\n to upload.\n </p>\n </div>\n @for (f of files; track f; let i = $index) {\n <div class=\"upload-item\"\n >\n <div class=\"upload-item-content\">\n <div class=\"filename\">\n <div class=\"filename-left\">\n <i class=\"ionicon ion-ios-copy\" aria-hidden=\"true\"></i>\n <span>{{ f.name }}</span>\n </div>\n </div>\n <div class=\"progress-content\">\n <div class=\"progress\">\n <span class=\"bar\"\n [style.width]=\"f?.progress?.data?.percentage + '%'\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\"></span>\n </div>\n </div>\n <div class=\"progress-text-content\">\n <span class=\"progress-text\"\n [class.is-done]=\"f?.progress?.data?.percentage === 100\">\n <span>{{ f.progress?.data?.percentage }}% </span>\n @if (f.progress?.data?.percentage !== 100) {\n <span>Uploading...</span>\n }\n @if (f.progress?.data?.percentage === 100) {\n <span>Done</span>\n }\n </span>\n @if (\n f.progress?.data?.percentage !== 0 &&\n f.progress?.data?.percentage !== 100\n ) {\n <span class=\"speed-and-eta-text\"\n >\n <span>{{ f.progress?.data?.speedHuman }} </span>\n <span>ETA {{ f.progress?.data?.etaHuman }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n }\n <div class=\"help-text\">\n <span>Note: You can upload a .csv file containing the comma separated emails\n of the members to add.</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <h5 class=\"ms-2 pt-3 d-inline-block me-2\">Add Member's Email</h5>\n <small><strong> (Available {{ availableUnits }} Seats) </strong></small>\n <div class=\"p-2\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSignUpMember()\">\n @for (\n item of form.get('emailsFormArray')['controls']; track\n item; let i = $index; let last = $last) {\n <div formArrayName=\"emailsFormArray\"\n >\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" [attr.for]=\"'enterprise-members-email-' + i\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n [id]=\"'enterprise-members-email-' + i\"\n class=\"form-control form-control-sm\"\n placeholder=\"Email\" id=\"input_email_3\" name=\"input_email_3\"/>\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (last && emailsFormArray?.controls?.length < availableUnits) {\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"text-center mt-2\">\n <button class=\"btn btn-sm btn-outline-default me-2\"\n (click)=\"isAddEnabled = false\">\n <i class=\"fa fa-plus-times\" aria-hidden=\"true\"></i>\n {{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-sm btn-outline-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"form.invalid || buttonBusy\">\n Add Members\n </button>\n </div>\n </form>\n </div>\n </section>\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n AuthService,\n FormHelperService,\n PermissionService,\n ProductService,\n SubscriptionService,\n ValidationService\n} from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport groupBy from 'lodash/groupBy';\nimport { humanizeBytes, UploaderOptions, UploadFile, UploadInput } from 'ngx-uploader';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport swal from 'sweetalert2';\n\n@Component({\n selector: 'pw-enterprise-partners',\n templateUrl: './enterprise-partners.component.html',\n styleUrls: ['./enterprise-partners.component.scss'],\n\n standalone: false\n})\nexport class EnterprisePartnersComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly token: string;\n private userSubscription: Subscription;\n private page = 1;\n\n @ViewChild('refProduct') refProduct: AutoComplete;\n\n id: number;\n subscriptionId: number;\n\n form: UntypedFormGroup;\n emailsFormArray: UntypedFormArray; // Used for adding the member dynamically\n\n user: User;\n subscription: Subscription;\n subscriptionOwner: number;\n chatPermission: string;\n hasAccess: boolean;\n\n filteredProducts = [];\n searchOptions: { id: unknown; label: unknown }[] = [];\n searchText = '';\n\n productName: string;\n allRoles = [];\n subscriptionPartners;\n\n files: UploadFile[];\n uploadInput: EventEmitter<UploadInput>;\n dragOver: boolean;\n options: UploaderOptions;\n\n isLoaded = false;\n loading = true;\n isAddEnabled = false;\n\n invoiceFrequency = ['week', 'month', 'year'];\n availableUnits = 0;\n\n totalRecordsUnFiltered = 0;\n totalRecords = 0;\n\n humanizeBytes: (bytes: number) => string;\n buttonBusy = false;\n unitsText: string;\n currency: string;\n\n constructor(\n injector: Injector,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n private readonly authService: AuthService,\n private readonly adminService: AdminService,\n private readonly productService: ProductService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.options = { concurrency: 1, maxUploads: 3 };\n this.files = [];\n this.uploadInput = new EventEmitter<UploadInput>();\n this.humanizeBytes = humanizeBytes;\n this.token = btoa(this.authService.getToken());\n this.form = this.formBuilder.group({\n email: ['', ValidationService.email],\n emailsFormArray: this.formBuilder.array([this.createItem()]),\n product_id: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.userSubscription = response;\n if (this.userSubscription?.id) {\n this.id = this.userSubscription?.id;\n this.getSubscriptionDetails();\n }\n this.cdr.markForCheck();\n });\n\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}.Chat`;\n this.getProductsList();\n }\n\n addItem(): void {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n if (\n this.emailsFormArray.valid &&\n this.emailsFormArray.controls.length < this.availableUnits\n ) {\n this.emailsFormArray.push(this.createItem());\n }\n }\n\n removeItem(index) {\n this.emailsFormArray = this.form.get('emailsFormArray') as UntypedFormArray;\n this.emailsFormArray.controls.splice(index, 1);\n }\n\n private createItem(): UntypedFormGroup {\n return this.formBuilder.group({\n email: ['', [Validators.email, Validators.required]]\n });\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n if (this.user) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE,\n search: this.searchText\n });\n }\n }\n private getSubscribedPartners(paging: Paging) {\n this.isLoaded = false;\n this.subscriptionService.getAllSubscriptionPartners(this.id, paging).subscribe(response => {\n this.subscriptionPartners = response.partners;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.totalRecords = response.object_count;\n this.isLoaded = true;\n this.loading = false;\n this.cdr.markForCheck();\n });\n }\n\n private getSubscriptionDetails() {\n this.subscriptionService.getById(this.id).subscribe(resp => {\n this.productName = resp.products[0].name;\n this.subscription = resp;\n this.availableUnits = resp.products[0].purchased_units - resp.units_in_use;\n this.cdr.markForCheck();\n });\n }\n\n getSupportedCurrency() {\n this.productService.getSupportedCurrency().subscribe(res => {\n this.currency = res?.regions;\n this.cdr.markForCheck();\n });\n }\n\n onSave() {\n if (this.form.invalid) {\n FormHelperService.validateAllFormFields(this.form);\n } else {\n this.buttonBusy = true;\n const productId = this.form.get('product_id').value.id;\n const emails = this.form\n .get('emailsFormArray')\n ?.value?.map(item => item.email)\n .join(',');\n if (emails) {\n const inviteObj = {\n emails,\n product_id: productId\n };\n this.subscriptionService\n .addPartnersToSubscription(this.id, inviteObj)\n .subscribe(response => {\n if (response?.status === StatusCodes.OK) {\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.totalRecordsUnFiltered = 0;\n this.isAddEnabled = false;\n this.toast.success(response.message);\n this.form.reset();\n } else {\n this.toast.error(response.error.message);\n }\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n }\n }\n }\n\n onDelete(partner: { id: number }) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.subscriptionService.removePartner(this.id, partner.id).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n onDeactivate(partner: { id: number; is_active: boolean }) {\n swal.fire({\n title: partner.is_active ? 'Deactivate' : 'Activate',\n text: partner.is_active\n ? ` Are you sure you want to deactivate this partner`\n : 'Are you sure you want to activate this partner?',\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n const data = {\n subscription_partner_id: partner.id,\n is_active: !partner.is_active\n };\n this.subscriptionService.deactivatePartner(this.id, data).subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success(response.message);\n this.getSubscribedPartners({\n page: this.page,\n page_size: PAGE_SIZE\n });\n } else {\n this.toast.success(response.error.message);\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n private getProductsList() {\n this.subscriptionService.getProductList({}, this.id).subscribe(response => {\n const featureKeys = Array.from(\n new Set(response.products.map(item => item.feature_key))\n );\n this.searchOptions = featureKeys.map(element => {\n return {\n id: element,\n label: element ?? ''\n };\n });\n this.cdr.markForCheck();\n });\n }\n\n sortObj(obj) {\n return Object.keys(obj)\n .sort((a, b) => a.localeCompare(b))\n .reduce((result, key) => {\n result[key] = obj[key];\n return result;\n }, {});\n }\n\n searchProduct(event) {\n this.subscriptionService\n .getProductList({ search: event.query }, this.id)\n .subscribe(response => {\n this.filteredProducts = this.groupProducts(response.products);\n this.cdr.markForCheck();\n });\n }\n\n onProductChange(event) {\n const productId = Number(event?.value.id);\n const productObj = this.filteredProducts.find(x => x.id === productId);\n this.form.patchValue({\n product_id: productObj\n });\n }\n\n onProductClear(_event) {\n if (!this.refProduct.inputEL.nativeElement.value) {\n this.form.get('product_id').setValue('');\n }\n }\n\n private groupProducts(products) {\n if (products?.length) {\n products = products.filter(x => x.dependency_products?.length < 1 && x.active);\n products = groupBy(products, 'currency');\n products = this.sortObj(products);\n let groupedArray = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const p in products) {\n const value = products[p].sort(\n (a, b) => Number(b.price_per_unit) - Number(a.price_per_unit)\n );\n groupedArray.push(...value);\n }\n groupedArray =\n groupedArray?.map(x => {\n return {\n id: x.id,\n label: `${x.name} | ${x.region} | ${x.billing_frequency} | ${x.min_units} x ${(\n x.price_per_unit / 100\n ).toFixed(2)} | ${x.currency}`,\n unitsText: `(min ${x.min_units} - max ${x.max_units})`\n };\n }) || [];\n\n return groupedArray;\n }\n\n return [];\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12 mb-3\">\n <div class=\"title\">\n @if (isAddEnabled) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"isAddEnabled = false;\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n <h2 [ngClass]=\"{ 'mt-2': isAddEnabled }\">Enterprise Partners for {{ productName }}</h2>\n </div>\n @if (!isAddEnabled) {\n <p>\n You'll find in this section all the partners of your subscription. Based on your role\n in the enterprise, you'll be able to see, add, edit or remove access to them.\n </p>\n }\n @if (isAddEnabled) {\n <p>Here you can add partners to your subscriptions</p>\n }\n </div>\n </div>\n </section>\n @if (!isAddEnabled) {\n <section>\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n @if (!isAddEnabled) {\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"isAddEnabled = true\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Add Partners\n </button>\n }\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"row faqlist primeng-datatable-container actions-collapsed mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #dt\n [value]=\"subscriptionPartners\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <label for=\"enterprise-partners-search\" class=\"visually-hidden\">Search partner</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-partners-search\"\n name=\"enterprise-partners-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Partner.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Label.Name' | transloco }}</th>\n <th scope=\"true\">{{ 'Label.Email' | transloco }}</th>\n <th scope=\"true\">{{ 'Relationship' | transloco }}</th>\n <th scope=\"true\">{{ 'Sessions' | transloco }}</th>\n <th scope=\"true\" class=\"actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-partner>\n <tr class=\"table-row\">\n <td data-head=\"Name\">\n {{partner.organisation}}\n </td>\n <td data-head=\"Email\">{{ partner.contact_email }}</td>\n <td data-head=\"Relationship\">\n {{partner.relationship_to_partner}}\n </td>\n <td>\n <span>{{ partner.sessions_last_month }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Click to remove this partner\" class=\"me-2 me-sm-2\">\n <i class=\"fa fa-trash delete-icon\" (keydown.enter)=\"onDelete(partner)\"\n (keydown.space)=\"onDelete(partner)\"\n (click)=\"onDelete(partner)\" aria-hidden=\"true\"></i>\n </li>\n <li [ngClass]=\"{'me-2 me-sm-2': true, }\"\n [ngbTooltip]=\"partner.is_active ? 'Deactivate this partner' : 'Activate this partner'\"\n (keydown.enter)=\"onDeactivate(partner)\"\n (click)=\"onDeactivate(partner)\">\n <i class=\"fa fa-power-off deactivate-icon\"\n [ngClass]=\"{'text-success': partner.is_active, 'text-danger': !partner.is_active}\"\n aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Partner.NoDataMessage' | transloco\">\n </pw-no-data>\n }\n </section>\n }\n\n @if (isAddEnabled) {\n <section id=\"manage-members\"\n >\n @if (!isGroupEdit) {\n <div class=\"mt-4\"\n >\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"mb-3 col-12 col-md-4 mx-sm-auto\">\n <pw-input-container [label]=\"'Label.Product' | transloco\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Subscriptions.Tooltip.SubscriptionProduct' | transloco\"\n name=\"product_id\" controlId=\"enterprise-partners-product_id\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Admin.Subscriptions.Validation.Product' | transloco\">\n <p-autoComplete appendTo=\"body\" #refProduct\n [attr.aria-labelledby]=\"'enterprise-partners-product_id-label'\"\n [suggestions]=\"filteredProducts\"\n formControlName=\"product_id\"\n dataKey=\"id\"\n optionLabel=\"label\"\n [dropdown]=\"true\"\n [delay]=\"1000\"\n [type]=\"'search'\"\n (completeMethod)=\"searchProduct($event)\"\n (onSelect)=\"onProductChange($event)\"\n (onClear)=\"onProductClear($event)\"\n styleClass=\"w-100\"\n [placeholder]=\"'Enterprise.Partner.Placeholder.Product' | transloco\"\n [inputStyle]=\"\n form.get('product_id').touched && form.get('product_id').invalid\n ? { border: '1px solid #ff586b' }\n : {}\n \"\n [multiple]=\"false\">\n </p-autoComplete>\n </pw-input-container>\n </div>\n @for (\n item of form.get('emailsFormArray')['controls']; track\n item; let i = $index; let last = $last) {\n <div formArrayName=\"emailsFormArray\"\n >\n <div [formGroupName]=\"i\">\n <div class=\"row mb-2\">\n <label class=\"col-12 col-md-4 text-md-end col-form-label col-form-label-sm\" [attr.for]=\"'enterprise-partners-email-' + i\">\n #{{ i + 1 }}</label>\n <div class=\"col-10 col-md-4\">\n <input formControlName=\"email\"\n [id]=\"'enterprise-partners-email-' + i\"\n class=\"form-control form-control-sm\"\n [placeholder]=\"'Enterprise.Partner.Placeholder.Email' | transloco\" name=\"input_email_2\"/>\n </div>\n <div class=\"col-2\">\n <button class=\"btn btn-sm btn-danger\"\n type=\"button\">\n <i\n class=\"fa fa-times\"\n title=\"Delete\"\n (click)=\"removeItem(i)\"\n (keydown.enter)=\"removeItem(i)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n @if (last && emailsFormArray?.controls?.length < availableUnits) {\n <i\n class=\"btn btn-sm btn-primary fal fa-plus ms-2\"\n title=\"Add More\"\n (click)=\"addItem()\"\n (keydown.enter)=\"addItem()\"\n aria-hidden=\"true\"\n ></i>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"text-center mt-4\">\n <input type=\"button\"\n class=\"btn btn-secondary me-3\"\n value=\"Cancel\"\n (click)=\"form.reset(); totalRecordsUnFiltered = 0; isAddEnabled = false;\" />\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n [disabled]=\"buttonBusy\"\n class=\"btn btn-primary\">Submit</button>\n </div>\n </form>\n </div>\n }\n </section>\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { DataService, PermissionService } from '@posiwise/common-services';\nimport { Subscription, User } from '@posiwise/common-utilities';\n\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-enterprise-subscriptions',\n templateUrl: './enterprise-subscriptions.component.html',\n\n standalone: false\n})\nexport class EnterpriseSubscriptionsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n subscriptions = [];\n\n message: number;\n\n isLoaded = true;\n\n subscription: Subscription;\n\n userSlug: string;\n\n constructor(\n injector: Injector,\n private readonly data: DataService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n this.userSlug = response?.slug;\n this.cdr.markForCheck();\n });\n this.userStore().subscribe((user: User) => {\n if (user) {\n const hasEnterprise = user.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return (\n product?.permission_key ===\n PermissionService.selectedProduct?.permission_key\n );\n });\n });\n\n if (hasEnterprise) {\n this.router.navigate([\n `/${this.userSlug}/enterprise/${hasEnterprise.id}/members`\n ]);\n }\n }\n this.cdr.markForCheck();\n });\n this.isLoaded = false;\n this.getEnterpriseSubscription();\n this.data.currentMessage.subscribe(message => {\n this.message = message;\n this.cdr.markForCheck();\n });\n }\n\n private getEnterpriseSubscription() {\n const subscribe$ = this.userService.getUserInfo().pipe(\n switchMap(user => {\n return this.userService.getUserSubscriptions(user.id);\n })\n );\n\n subscribe$\n .subscribe(response => {\n if (response.subscriptions.length > 0) {\n this.isLoaded = true;\n this.subscriptions = [\n response.subscriptions.find(subscription => {\n return subscription.products.some(product => {\n return product.max_units > 1 && !product.is_deleted;\n });\n })\n ];\n }\n })\n .add(() => {\n this.cdr.markForCheck();\n });\n }\n\n nextUrl() {\n this.data.changeMessage(0);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"container-fluid overflow-hidden\">\n <div class=\"row\">\n @for (item of subscriptions; track item) {\n <div class=\"col-12 col-md-6 col-xl-4 my-3\"\n >\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h5 class=\"mb-3\">{{ item?.product?.name }}</h5>\n <p>\n <strong class=\"d-inline-block w-50\">Organisation:</strong>\n {{ item.organisation }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Units Purchased:</strong>\n {{ item.purchased_units }}\n </p>\n <p>\n <strong class=\"d-inline-block w-50\">Seats In Use:</strong>\n {{ item.units_in_use }}\n </p>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end px-2\">\n <a (click)=\"nextUrl()\"\n class=\"btn btn-sm btn-outline-primary\"\n [routerLink]=\"['/' + subscription?.slug + item.id, 'members']\">\n Manage</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n <div class=\"col-12\">\n @if (subscriptions.length === 0) {\n <pw-no-data [withImage]=\"true\" message=\"No current enterprise subscriptions.\"\n >\n </pw-no-data>\n }\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n </div>\n</div>\n","import { Component, Injector } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-enterprise-tabs',\n templateUrl: './enterprise-tabs.component.html',\n\n standalone: false\n})\nexport class EnterpriseTabsComponent extends AppBaseComponent {\n constructor(injector: Injector) {\n super(injector);\n }\n\n activeTab: MenuItem;\n\n items: MenuItem[] = [\n {\n id: 'manage_members',\n label: 'Members',\n routerLink: ['/enterprise/members'],\n icon: 'fa fa-fw fa-users'\n },\n {\n id: 'manage_partners',\n label: 'Partners',\n routerLink: ['/enterprise/partners'],\n icon: 'fa fa-fw fa-users',\n visible: this.permissionService.evaluatePermissions('Pages.Alpha')\n },\n {\n id: 'manage_teams',\n label: 'Teams',\n routerLink: ['/enterprise/groups'],\n icon: 'fa fa-fw fa-users-class',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_communications',\n label: 'Communications',\n routerLink: ['/enterprise/communications'],\n icon: 'fas fa-comments',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_wiki',\n label: 'Documentation',\n routerLink: ['/enterprise/wiki'],\n icon: 'fab fa-wikipedia-w',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n },\n {\n id: 'members_insight',\n label: 'Insight',\n routerLink: ['/enterprise/insights'],\n icon: 'fa fa-fw fa-tag',\n visible: this.permissionService.evaluatePermissions('Pages.Beta')\n }\n ];\n}\n","<pw-tabs [items]=\"items\"\n [withSubscription]=\"true\"></pw-tabs>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService } from '@posiwise/common-services';\nimport { PAGE_SIZE, Paging, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { QuillHelper, ValidateForm } from '@posiwise/utils';\n\nimport { LazyLoadEvent } from 'primeng/api';\n\nimport {\n EnterPriseCommunication,\n EnterPriseGroup,\n EnterPriseGroupDefinition\n} from '../../interfaces/enterprise.interface';\nimport { AppEnterprise } from '../../models/enterprise.model';\n\n@Component({\n selector: 'pw-enterprise-wiki',\n templateUrl: './enterprise-wiki.component.html',\n styleUrls: ['./enterprise-wiki.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseWikiComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n private page = 1;\n\n groupDefinition: EnterPriseGroupDefinition[] = [];\n allGroups: EnterPriseGroup[] = [];\n allDocumentationGroups: EnterPriseGroup[];\n allCommunication: EnterPriseCommunication[] = [];\n\n data: { id?: number };\n\n form: UntypedFormGroup;\n\n submitted = false;\n buttonBusy = false;\n\n user: User;\n hasAccess: boolean;\n subscriptionId: number;\n subscription: Subscription;\n masterSubscriptionId = this.appConfig.master_subscription.subscription_id;\n\n id: number;\n groupId: number;\n groupName: string;\n\n uploadedFiles = [];\n filesData: string[];\n\n busy: boolean;\n loading = true;\n isLoaded = false;\n filesUploaded: boolean;\n\n invalidFile = false;\n searchText = '';\n totalRecords: number;\n totalRecordsUnFiltered = 0;\n\n editorConfig;\n\n isEdit = false;\n isAdd = false;\n\n constructor(\n private readonly groupService: GroupService,\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n QuillHelper.init();\n this.editorConfig = QuillHelper.getEditorConfig();\n this.form = AppEnterprise.getWikiForm();\n }\n\n ngAfterViewInit(): void {\n this.attachCloseButtonListener();\n HelperService.subscribeToEditorChanges(this.form, 'body');\n }\n\n ngOnInit() {\n this.getUserSubscription().subscribe(response => {\n this.subscription = response;\n if (this.subscription?.id) {\n this.id = this.subscription?.id;\n }\n this.cdr.markForCheck();\n });\n this.groupId = Number(this.route.snapshot.queryParams['entity_id']);\n // eslint-disable-next-line no-restricted-globals\n this.groupId = Number.isNaN(this.groupId) ? 0 : this.groupId;\n this.userStore().subscribe(user => {\n if (user) {\n this.user = user;\n }\n this.cdr.markForCheck();\n });\n this.getAllGroupDefinition();\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n /** Function to get all labels */\n private getAllGroupDefinition() {\n this.groupService.groupDefinitionGetAll(this.id, 'Subscription').subscribe(response => {\n if (response.group_definitions.length > 0) {\n this.groupDefinition = response.group_definitions;\n this.groupDefinition.forEach((data, index) => {\n const totalDefinitions = ++index;\n if (data.groups?.length) {\n data.groups.forEach(group => {\n this.allGroups.push(group);\n });\n }\n if (totalDefinitions === this.groupDefinition.length) {\n this.getParticularGroupDetails();\n }\n });\n this.allDocumentationGroups = [\n {\n id: 0,\n name: 'All Documentations',\n description: '',\n group_definition_id: 0,\n members: []\n },\n ...this.allGroups\n ];\n }\n this.cdr.markForCheck();\n });\n }\n\n /** Function to get group name and to setValue to group field if we have group_id */\n private getParticularGroupDetails() {\n if (this.groupId) {\n const data = this.allGroups.find(group => group.id === this.groupId);\n this.groupName = data?.name;\n this.form.get('group_id').setValue(data?.id);\n }\n }\n\n /** Function to get all communications */\n private getAllCommunications(paging: Paging) {\n this.isLoaded = false;\n const operation = this.groupId\n ? this.groupService.getAllCommunications(this.id, 'wiki', this.groupId || '', paging)\n : this.groupService.getAllCommunicationsWithOutGroupId(this.id, 'wiki', paging);\n\n operation\n .subscribe({\n next: response => {\n this.allCommunication = response.group_communications;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.cdr.markForCheck();\n },\n error: error => {\n this.toast.showToast(error);\n this.cdr.markForCheck();\n }\n })\n .add(() => {\n this.isLoaded = true;\n this.loading = false;\n this.cdr.markForCheck();\n });\n }\n /** Function to filter by groups */\n filterDomainsList() {\n this.groupId = Number(this.groupId);\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.getParticularGroupDetails();\n }\n\n @ValidateForm('form')\n onSave() {\n const rawHtml = HelperService.SaveRawHTML();\n this.form.controls['body'].setValue(rawHtml);\n this.buttonBusy = true;\n if (this.data?.id) {\n this.updateCommunications(this.data?.id);\n } else {\n this.postCommunications();\n }\n }\n\n /** Function to Post communications */\n postCommunications() {\n this.saveCommunication(false);\n }\n\n /** Function to edit communications */\n updateCommunications(id: number) {\n this.totalRecordsUnFiltered = 0;\n this.saveCommunication(true, id);\n }\n\n /** Shared method to save communications (post or update) */\n private saveCommunication(isUpdate: boolean, id?: number) {\n this.buttonBusy = true;\n this.form.get('user_id')?.setValue(this.user.id);\n this.form.get('communication_type')?.setValue('wiki');\n const data = this.form?.value;\n this.submitted = true;\n\n const operation = isUpdate\n ? this.groupService.editCommunications(id, data)\n : this.groupService.postCommunications(data);\n\n operation\n .subscribe(response => {\n const responseId = isUpdate ? response.group_communication.id : response.id;\n this.saveFile(responseId);\n const message = isUpdate\n ? 'Communication Updated Successfully'\n : 'Communication Added Successfully';\n this.toast.success(this.translation.translate(message));\n this.onCancel();\n this.cdr.markForCheck();\n })\n .add(() => {\n this.buttonBusy = false;\n this.cdr.markForCheck();\n });\n\n this.submitted = false;\n }\n\n /** Function to get edit communication details */\n getCommunicationDetails(id: number) {\n this.isLoaded = false;\n this.isAdd = false;\n this.isEdit = true;\n this.groupService\n .getCommunicationDetails(id)\n .subscribe(response => {\n this.data = response;\n this.form.patchValue(response);\n this.filesData = response.group_communication_files;\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n /** Function to delete communications */\n onDelete(id: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunications(id),\n 'Communication Deleted Successfully',\n () => this.onCancel()\n );\n }\n\n /** Function to delete communications Files */\n deleteCommunicationFiles(id: number, index: number) {\n this.confirmAndExecute(\n () => this.groupService.deleteCommunicationFiles(id),\n 'Communication File Deleted Successfully',\n () => this.filesData.splice(index, 1)\n );\n }\n\n /** Helper method to confirm and execute delete operations */\n private confirmAndExecute(operation, successMessage: string, onSuccess?: () => void) {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n operation().subscribe(() => {\n this.toast.success(this.translation.translate(successMessage));\n if (onSuccess) {\n onSuccess();\n }\n this.cdr.markForCheck();\n });\n }\n });\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n /** Function to show question edit form */\n showEditForm() {\n this.data = {};\n this.isAdd = true;\n this.isEdit = true;\n }\n\n /** Function to hide the edit form */\n onCancel() {\n this.totalRecordsUnFiltered = 0;\n this.getAllCommunications({\n page: this.page,\n page_size: PAGE_SIZE\n });\n this.form.reset();\n this.submitted = false;\n this.isEdit = false;\n }\n\n /** Function for toggle */\n onChange(event: boolean, formControlName: string) {\n this.form.get(formControlName)?.setValue(event);\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n this.invalidFile = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n saveFile(id: number) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n this.uploadedFiles.forEach(file => {\n const fileData = new FormData();\n fileData.append('name', file, file.name);\n fileData.append('group_communication_id', `${id}`);\n this.groupService.postCommunicationFiles(fileData).subscribe(() => {\n this.translation.translate('Communication File Added Successfully');\n this.cdr.markForCheck();\n });\n });\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<section>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{'mb-3': !isEdit}\">\n <div class=\"title\">\n @if (isEdit) {\n <a\n aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n }\n @if (isEdit) {\n <h3 class=\"m-subheader__title m-subheader__title--separator mt-1\">\n <span>{{ !isAdd ? 'Edit' : 'Create a new' }} documentation page</span>\n </h3>\n }\n @if (!isEdit) {\n <h2 [ngClass]=\"{ 'mt-2': isEdit }\">Documentation @if (groupId) {\n <span>for {{ groupName }}</span>\n }</h2>\n }\n </div>\n @if (!isEdit) {\n <p>\n Here you can write the documentation for your organization's members. Documentation\n pages are visible based on the teams the subscription's members are part of.\n </p>\n }\n </div>\n </div>\n </section>\n @if (!isLoaded && isEdit) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isEdit && isLoaded) {\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"p-2 mt-1\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h3>{{ 'Enterprise.Documentation.Section.Content' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12\">\n <pw-input-container [label]=\"'Enterprise.Documentation.Title' | transloco\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Title' | transloco\"\n name=\"title\" controlId=\"enterprise-wiki-title\">\n <input type=\"text\"\n id=\"enterprise-wiki-title\"\n class=\"form-control\"\n formControlName=\"title\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Title' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n </div>\n <pw-input-container [label]=\"'Enterprise.Documentation.Body' | transloco\"\n class=\"col-12\"\n name=\"body\" controlId=\"enterprise-wiki-body\" [useAriaLabelledbyOnly]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Body' | transloco\">\n <quill-editor [styles]=\"{ height: '220px' }\"\n [attr.aria-labelledby]=\"'enterprise-wiki-body-label'\"\n class=\"quillEditor quill-container\" [modules]=\"editorConfig\"\n formControlName=\"body\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Body' | transloco\"\n [ngClass]=\"{ 'is-invalid': submitted && f.body.errors }\">\n </quill-editor>\n </pw-input-container>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Visibility' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Group' | transloco\"\n [label]=\"'Enterprise.Documentation.Team' | transloco\"\n [isLeftTooltip]=\"true\"\n [errorMsg]=\"'Enterprise.Documentation.Validation.Team' | transloco\"\n name=\"group_id\" controlId=\"enterprise-wiki-group_id\" [useAriaLabelledbyOnly]=\"true\">\n <p-select\n [attr.aria-labelledby]=\"'enterprise-wiki-group_id-label'\"\n [options]=\"allGroups\"\n formControlName=\"group_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['group_id'].errors }\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Team' | transloco\"\n optionValue=\"id\"\n optionLabel=\"name\">\n </p-select>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.VisibleGlobally' | transloco\"\n [label]=\"'Enterprise.Documentation.VisibleGlobally' | transloco\"\n name=\"visible_globally\" controlId=\"enterprise-wiki-visible_globally\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-visible_globally-label'\"\n formControlName=\"visible_globally\"\n (change)=\"onChange($event, 'visible_globally')\"\n name=\"visible_globally\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Published' | transloco\"\n [label]=\"'Enterprise.Documentation.Published' | transloco\"\n name=\"published\" controlId=\"enterprise-wiki-published\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-published-label'\"\n formControlName=\"published\"\n (change)=\"onChange($event, 'published')\"\n name=\"published\">\n </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"col-6 col-md-2\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Enterprise.Tooltip.Pushed' | transloco\"\n [label]=\"'Enterprise.Documentation.Pushed' | transloco\"\n name=\"pushed\" controlId=\"enterprise-wiki-pushed\" [useAriaLabelledbyOnly]=\"true\">\n <ui-switch class=\"d-block\"\n [attr.aria-labelledby]=\"'enterprise-wiki-pushed-label'\"\n formControlName=\"pushed\"\n (change)=\"onChange($event, 'pushed')\"\n name=\"pushed\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <h3>{{ 'Enterprise.Documentation.Section.Attachments' | transloco }}</h3>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-6\">\n <div class=\"mb-3\">\n <span id=\"enterprise-wiki-file-label\" class=\"pw-label-style\">Upload File</span>\n <p-fileUpload #forms\n [attr.aria-labelledby]=\"'enterprise-wiki-file-label'\"\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\">\n @if (!uploadedFiles?.length) {\n <div class=\"drag-drop-text\">\n <p>You can drag and drop your file here</p>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n @if (filesData?.length) {\n <div\n class=\"mt-5\">\n <h2>Files attached to this documentation page</h2>\n @for (files of filesData; track files; let i = $index) {\n <div class=\"communication-files\"\n >\n <p>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name?.url?.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </p>\n <p ngbTooltip=\"Delete\"\n class=\"ms-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"deleteCommunicationFiles(files.id, i)\"\n (keydown.space)=\"deleteCommunicationFiles(files.id, i)\"\n (click)=\"deleteCommunicationFiles(files.id, i)\"\n aria-hidden=\"true\"\n ></i>\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (!isEdit) {\n <div class=\"row\">\n <div class=\"col-12 text-end mb-3\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"showEditForm()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add documentation' }}\n </button>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n <div class=\"primeng-datatable-container actions-collapsed mt-0 table-responsive\"\n [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <p-table #dt\n [value]=\"allCommunication\"\n [paginator]=\"totalRecords !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n (onLazyLoad)=\"onLazyLoad($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-contact\">\n <div class=\"col-sm-3 mb-2 mb-md-0 filter-domain-list\">\n <p-select\n [options]=\"allDocumentationGroups\"\n optionLabel=\"name\"\n optionValue=\"id\"\n [(ngModel)]=\"groupId\"\n [placeholder]=\"'Enterprise.Documentation.Placeholder.FilterTeam' | transloco\"\n [appendTo]=\"'body'\"\n (onChange)=\"filterDomainsList()\">\n </p-select>\n </div>\n <div class=\"text-end\">\n <label for=\"enterprise-wiki-search\" class=\"visually-hidden\">Search Documentation</label>\n <p-iconfield iconPosition=\"left\">\n <p-inputicon><i class=\"fa fa-search\" aria-hidden=\"true\"></i></p-inputicon>\n <input type=\"text\"\n id=\"enterprise-wiki-search\"\n name=\"enterprise-wiki-search\"\n [(ngModel)]=\"searchText\"\n pInputText\n [placeholder]=\"'Enterprise.Documentation.Placeholder.Search' | transloco\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\" />\n </p-iconfield>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Title' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Sender' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Team' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Files' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Date' | transloco }}</th>\n <th scope=\"true\">{{ 'Enterprise.Documentation.Status' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-column actions-list-three\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr class=\"table-row\">\n <td data-head=\"Title\">\n <a [routerLink]=\"[item.id]\">{{ item.title }}</a>\n </td>\n <td data-head=\"Sender\">{{ item.author | ifNameNullShowEmail }}</td>\n <td data-head=\"Team\">{{ item.group?.name }}</td>\n <td data-head=\"Files\">\n @for (files of item.group_communication_files; track files) {\n <span>\n <a target=\"blank\"\n [href]=\"files.name.url\">\n {{\n files.name.url.split('?')[0].split('/')[\n files.name.url.split('?')[0].split('/').length - 1\n ]\n }}\n </a>\n </span>\n }\n </td>\n <td data-head=\"Date\">{{ item.created_at | dateFormat: 'datetime' }}</td>\n <td data-head=\"Status\">\n @if (item.visible_globally) {\n <span\n class=\"badge bg-warning ms-2\">{{\n 'Enterprise.Documentation.Global' | transloco\n }}</span>\n }@if (item.published) {\n <span\n class=\"badge bg-info ms-2\">{{\n 'Enterprise.Documentation.Published' | transloco\n }}</span>\n }@if (item.pushed) {\n <span\n class=\"badge bg-success ms-2\">{{\n 'Enterprise.Documentation.Pushed' | transloco\n }}</span>\n }\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline list-action\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"getCommunicationDetails(item.id)\"\n (keydown.enter)=\"getCommunicationDetails(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (keydown.enter)=\"onDelete(item.id)\"\n (keydown.space)=\"onDelete(item.id)\"\n (click)=\"onDelete(item.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"See Communication\"\n class=\"me-2 me-sm-3 see-icon\"\n [routerLink]=\"[item.id]\">\n <i class=\"fa fa-eye eye-icon \" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n @if (totalRecords === 0 && totalRecordsUnFiltered !== 0 && !groupId) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n }\n @if (totalRecords !== 0) {\n <pw-records-summary [showing]=\"dt?.value?.length ?? 0\" [total]=\"totalRecords\" />\n }\n </div>\n @if (totalRecordsUnFiltered === 0 && isLoaded) {\n <div>\n <pw-no-data [withImage]=\"true\" [message]=\"'Enterprise.Documentation.NoDocumentation' | transloco\">\n </pw-no-data>\n </div>\n }\n }\n","import { ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GroupService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { EnterPriseCommunication } from '../../interfaces/enterprise.interface';\n\n@Component({\n selector: 'pw-enterprise-wiki-details',\n templateUrl: './enterprise-wiki-details.component.html',\n styleUrls: ['./enterprise-wiki-details.component.scss'],\n\n standalone: false\n})\nexport class EnterpriseWikiDetailsComponent extends AppBaseComponent implements OnInit, OnDestroy {\n id: number;\n communicationId: number;\n\n communicationDetails: EnterPriseCommunication;\n\n isLoaded = false;\n\n chatPermission: string;\n\n constructor(\n injector: Injector,\n private readonly groupService: GroupService,\n private readonly sanitizer: DomSanitizer,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserSubscriptionId().subscribe(id => {\n this.id = id;\n this.cdr.markForCheck();\n });\n this.route.params.subscribe(param => {\n this.communicationId = Number(param['wikiId']);\n this.cdr.markForCheck();\n });\n this.getCommunication();\n this.chatPermission = `${PermissionService.selectedProduct?.permission}.${PermissionService.selectedProduct?.feature_key}`;\n }\n\n /** Function to call communication */\n private getCommunication() {\n this.groupService\n .getCommunicationDetails(this.communicationId)\n .subscribe(response => {\n let blogBody;\n if (response?.body) {\n blogBody = HelperService.sanitizeQuillBody(response.body, this.sanitizer);\n }\n this.communicationDetails = { ...response, body: blogBody };\n this.cdr.markForCheck();\n })\n .add(() => {\n this.isLoaded = true;\n this.cdr.markForCheck();\n });\n }\n\n onCancel() {\n this.back();\n }\n\n trackByFileId(_index: number, item) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-0 mb-0\">Documentation</h2>\n </div>\n </div>\n @if (!isLoaded) {\n <div class=\"w-100 text-center mt-3\"\n >\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n }\n @if (isLoaded) {\n <div>\n @if (communicationDetails) {\n <div class=\"content-quill-wrapper container-fluid pw-tab overflow-hidden mt-3\">\n <div class=\"pb-0\">\n <div class=\"card-body p-4\">\n <div class=\"row mb-3\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center mb-md-2\">\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span [ngClass]=\"communicationDetails?.pushed ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.pushed ? 'Pushed' : 'Not Pushed' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.published ? 'Published' : 'Not Published' }}\n </span>\n <span [ngClass]=\"communicationDetails?.published ? 'badge bg-success' : 'badge bg-danger'\" class=\"me-2 mb-2 mb-md-0\">\n {{ communicationDetails?.visible_globally ? 'Visible Globally' : 'Not Visible Globally' }}\n </span>\n </div>\n <div class=\"d-flex flex-wrap mb-3 mb-md-0\">\n <span class=\"badge bg-cyan mb-2 me-2 mb-md-0\">{{communicationDetails?.group?.name}}</span>\n <span class=\"badge bg-blue-grey mb-2 me-2 mb-md-0\">{{ 'Created At (' + (communicationDetails?.created_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n @if (communicationDetails?.pushed_at) {\n <span class=\"badge bg-grey mb-2 mb-md-0\">{{ 'Pushed At (' + (communicationDetails?.pushed_at | date: 'dd-MMM-yyyy') + ')' }}</span>\n }\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-3 ms-2\">\n <h5>{{ communicationDetails?.title }}</h5>\n </div>\n <div class=\"col-12 mb-3 ms-2 message-icon\">\n <a [routerLink]=\"['/members', communicationDetails?.author?.slug]\">{{\n communicationDetails?.author | ifNameNullShowEmail\n }}</a>\n <div class=\"ms-2\"\n ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\">\n <i\n [routerLink]=\"['/message']\"\n [fragment]=\"communicationDetails?.author?.slug\"\n class=\"fa fa-comments cta1-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n <div class=\"col-12 ms-2\">\n <div class=\"ql-container ql-snow body-quill\">\n <div class=\"ql-editor\"\n [innerHTML]=\"communicationDetails?.body\">\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-10\">\n @for (\n files of communicationDetails?.group_communication_files; track trackByFileId($index,\n files)) {\n <p>\n <a [href]=\"files?.name?.url\"\n target=\"blank\">{{\n files?.name?.url?.split('?')[0]?.split('/')[\n files?.name?.url.split('?')[0]?.split('/')?.length - 1\n ]\n }}</a>\n </p>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport {\n EntityGroupComponent,\n GroupDefinitionComponent,\n GroupsComponent,\n SharedComponentsModule\n} from '@posiwise/shared-components';\n\nimport { PlotlyViaCDNModule } from 'angular-plotly.js';\nimport { QuillModule } from 'ngx-quill';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { NgxUploaderModule } from 'ngx-uploader';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { SelectModule } from 'primeng/select';\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EnterpriseViewParticularCommunicationComponent } from './components/enterprise-communication-details/enterprise-communication-details.component';\nimport { EnterpriseCommunicationsComponent } from './components/enterprise-communications/enterprise-communications.component';\nimport { EnterpriseInsightsComponent } from './components/enterprise-insights/enterprise-insights.component';\nimport { EnterpriseMembersComponent } from './components/enterprise-members/enterprise-members.component';\nimport { EnterprisePartnersComponent } from './components/enterprise-partners/enterprise-partners.component';\nimport { EnterpriseSubscriptionsComponent } from './components/enterprise-subscriptions/enterprise-subscriptions.component';\nimport { EnterpriseTabsComponent } from './components/enterprise-tabs/enterprise-tabs.component';\nimport { EnterpriseWikiComponent } from './components/enterprise-wiki/enterprise-wiki.component';\nimport { EnterpriseWikiDetailsComponent } from './components/enterprise-wiki-details/enterprise-wiki-details.component';\n\nPlotlyViaCDNModule.setPlotlyVersion(\n '2.33.0',\n 'custom',\n 'https://cdn.jsdelivr.net/npm/plotly.js-strict-dist-min@2.33.0/plotly-strict.min.js'\n);\n\nconst routes: Routes = [\n {\n path: '',\n component: EnterpriseSubscriptionsComponent,\n pathMatch: 'full'\n },\n {\n path: '',\n component: EnterpriseTabsComponent,\n children: [\n {\n path: 'members',\n component: EnterpriseMembersComponent,\n data: {\n title: 'Enterprise - Members'\n }\n },\n {\n path: 'partners',\n component: EnterprisePartnersComponent,\n data: {\n permission: 'Pages.Alpha',\n title: 'Enterprise - Partners'\n }\n },\n {\n path: 'groups',\n component: GroupsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups'\n }\n },\n {\n path: 'groups/labels',\n component: GroupDefinitionComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Definition'\n }\n },\n {\n path: 'groups/:groupId/members',\n component: EntityGroupComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Groups - Entity'\n }\n },\n {\n path: 'communications',\n component: EnterpriseCommunicationsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Communication'\n }\n },\n {\n path: 'wiki',\n component: EnterpriseWikiComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'wiki/:wikiId',\n component: EnterpriseWikiDetailsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'communications/:communicationId',\n component: EnterpriseViewParticularCommunicationComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Wiki'\n }\n },\n {\n path: 'insights',\n component: EnterpriseInsightsComponent,\n data: {\n permission: 'Pages.Beta',\n title: 'Enterprise - Insight'\n }\n }\n ]\n }\n];\n\n@NgModule({\n declarations: [\n EnterpriseSubscriptionsComponent,\n EnterpriseMembersComponent,\n EnterprisePartnersComponent,\n EnterpriseTabsComponent,\n EnterpriseInsightsComponent,\n EnterpriseCommunicationsComponent,\n EnterpriseViewParticularCommunicationComponent,\n EnterpriseWikiComponent,\n EnterpriseWikiDetailsComponent\n ],\n imports: [\n CommonModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n CoreTranslocoModule,\n PlotlyViaCDNModule,\n NgbTooltipModule,\n UiSwitchModule,\n FormsModule,\n SelectModule,\n FileUploadModule,\n ReactiveFormsModule,\n PipesModule,\n DirectivesModule,\n SharedComponentsModule,\n RouterModule.forChild(routes),\n NgxUploaderModule,\n MultiSelectModule,\n // SharedModule,\n QuillModule.forRoot()\n // LazyLoadModules\n ]\n})\nexport class EnterpriseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i5","i6","i7","i8","i2","i3","i9","i12","i14","i1","i10","i11","i13","i15","i16","i17","i18"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBM,MAAO,8CACT,SAAQ,gBAAgB,CAAA;AAYxB,IAAA,WAAA,CACI,QAAkB,EACD,YAA0B,EAC1B,SAAuB,EACvB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QANxB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAShB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YAChC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,EAAE;IAC9H;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC;AACA,aAAA,uBAAuB,CAAC,IAAI,CAAC,eAAe;aAC5C,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;AAChB,gBAAA,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7E;YACA,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;IACf;IAEA,aAAa,CAAC,MAAc,EAAE,IAAI,EAAA;QAC9B,OAAO,IAAI,CAAC,EAAE;IAClB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA/DS,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8CAA8C,uHChB3D,+uIA2FA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD3Ea,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAP1D,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,cAInC,KAAK,EAAA,QAAA,EAAA,+uIAAA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA;;;MEZR,aAAa,CAAA;AACtB,IAAA,OAAO,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,kBAAkB,EAAE,CAAC,KAAK,CAAC;YAClC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,kBAAkB,EAAE,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK;AACjB,SAAA,CAAC;IACN;AAEA,IAAA,OAAO,qBAAqB,GAAA;AACxB,QAAA,OAAO,IAAI,kBAAkB,EAAE,CAAC,KAAK,CAAC;YAClC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,YAAA,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,CAAC,KAAK,CAAC;YACzB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,kBAAkB,EAAE,CAAC,eAAe,CAAC;YACrC,SAAS,EAAE,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK;AACjB,SAAA,CAAC;IACN;AACH;;ACMK,MAAO,iCACT,SAAQ,gBAAgB,CAAA;IA4CxB,WAAA,CACqB,YAA0B,EAC3C,QAAkB,EACD,GAAsB,EACtB,QAAmB,EACnB,EAAc,EAAA;QAE/B,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEZ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QA9Cf,IAAA,CAAA,IAAI,GAAG,CAAC;QAEhB,IAAA,CAAA,eAAe,GAAgC,EAAE;QACjD,IAAA,CAAA,SAAS,GAAsB,EAAE;QACjC,IAAA,CAAA,sBAAsB,GAAsB,EAAE;QAC9C,IAAA,CAAA,gBAAgB,GAA8B,EAAE;QAMhD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAWlB,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,QAAQ,GAAG,KAAK;QAGhB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAI1B,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,KAAK,GAAG,KAAK;QAUT,WAAW,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE;IACrD;IACA,eAAe,GAAA;QACX,IAAI,CAAC,yBAAyB,EAAE;QAChC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;gBACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC/D;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;QAEnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;QAE5D,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAChC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;QAC5B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;YAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACN;;IAGQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAClF,YAAA,IAAI,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,iBAAiB;gBACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzC,oBAAA,MAAM,gBAAgB,GAAG,EAAE,KAAK;AAChC,oBAAA,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACtB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACxB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,wBAAA,CAAC,CAAC;oBACN;oBACA,IAAI,gBAAgB,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAClD,IAAI,CAAC,yBAAyB,EAAE;oBACpC;AACJ,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,sBAAsB,GAAG;AAC1B,oBAAA;AACI,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,WAAW,EAAE,EAAE;AACf,wBAAA,mBAAmB,EAAE,CAAC;AACtB,wBAAA,OAAO,EAAE;AACZ,qBAAA;oBACD,GAAG,IAAI,CAAC;iBACX;YACL;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD;IACJ;;AAGQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC;AACA,iBAAA,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;iBACzE,SAAS,CAAC,QAAQ,IAAG;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC,CAAC;QACV;aAAO;AACH,YAAA,IAAI,CAAC;iBACA,kCAAkC,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM;iBACnE,SAAS,CAAC,QAAQ,IAAG;AAClB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC;iBACA,GAAG,CAAC,MAAK;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC,CAAC;QACV;IACJ;;IAGA,iBAAiB,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;IACpC;IAGA,MAAM,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE;QAC/B;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;;IAGA,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChC;;AAGQ,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACnB;QACJ;QAEA,MAAM,SAAS,GAAG;AACd,cAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI;cACxD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAEhD;aACK,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG;AACZ,kBAAE;kBACA,kCAAkC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;AAGA,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC;aACA,uBAAuB,CAAC,EAAE;aAC1B,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,yBAAyB;AACnD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;AAGA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACtD,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,oCAAoC,CAAC,CACnE;oBACD,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;IAGA,wBAAwB,CAAC,EAAU,EAAE,KAAa,EAAA;QAC9C,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CACd,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yCAAyC,CAAC,CACxE;oBACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/B,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,IAAI,CAAC,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B;;IAGA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACtB;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;;IAGA,QAAQ,CAAC,KAAc,EAAE,eAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACnD;IAEA,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAC3B;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;QACJ;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACzD;IACJ;IAEA,yBAAyB,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAE3E,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAK;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,sBAAsB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAEA,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;QACf,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;IAClD;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,uCAAuC,CAAC;AACnE,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GAlXS,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,iCAAiC,gHClC9C,g1fAoWA,EAAA,MAAA,EAAA,CAAA,8kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,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,EAAAI,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;ADhJI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AAUpB,CAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;2FA3LQ,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAI5B,KAAK,EAAA,QAAA,EAAA,g1fAAA,EAAA,MAAA,EAAA,CAAA,8kCAAA,CAAA,EAAA;;;AElBf,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AAc7D,IAAA,WAAA,CACqB,mBAAwC,EACzD,QAAkB,EACD,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAEnB,IAAA,CAAA,GAAG,GAAH,GAAG;QAXxB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAahB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE;AACtD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7D;IAEQ,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC;aACA,oBAAoB,CACjB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,iBAAiB,EAAE;cAClB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY;AACtD,cAAE,EAAE,EACR,IAAI,CAAC,iBAAiB,EAAE;cAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY;cAClD,EAAE;aAEX,SAAS,CAAC,QAAQ,IAAG;;YAElB,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,QAAQ;AACxC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,iBAAiB,CAAC,KAA2D,EAAA;QACzE,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAChF,IAAI,CAAC,YAAY,EAAE;IACvB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA/DS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,0GCdxC,sgCAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDzBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,sgCAAA,EAAA;;;AEwCf,MAAO,0BAA2B,SAAQ,gBAAgB,CAAA;IAsC5D,WAAA,CACI,QAAkB,EACD,WAA+B,EAC/B,mBAAwC,EACxC,WAAwB,EACxB,YAA0B,EAC1B,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;QAzChB,IAAA,CAAA,IAAI,GAAG,CAAC;AAChB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAoB;QAc9C,IAAA,CAAA,QAAQ,GAAG,EAAE;QAQb,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QAGd,IAAA,CAAA,cAAc,GAAG,CAAC;QAClB,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAE1B,IAAA,CAAA,UAAU,GAAG,EAAE;QAGf,IAAA,CAAA,UAAU,GAAG,KAAK;AAWd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAe;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC;AACpC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9D,SAAA,CAAC;IACN;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACnC,IAAI,CAAC,sBAAsB,EAAE;YACjC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,OAAO;IACnI;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,kBAAkB,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;gBAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;gBACtC,MAAM,EAAE,IAAI,CAAC;AAChB,aAAA,CAAC;QACN;IACJ;AACA,IAAA,cAAc,CAAC,MAAoB,EAAA;AAC/B,QAAA,QAAQ,MAAM,CAAC,IAAI;AACf,YAAA,KAAK,iBAAiB;gBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,KAAK,GAAgB;AACvB,wBAAA,IAAI,EAAE,WAAW;wBACjB,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE;AACF,4BAAA,qBAAqB,EAAE,MAAM;AAC7B,4BAAA,iBAAiB,EAAE;AACtB,yBAAA;AACD,wBAAA,OAAO,EAAE;AACL,4BAAA,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC5B;qBACJ;AACD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChC;gBAEA;AACJ,YAAA,KAAK,cAAc;AACf,gBAAA,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,oBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC7C,oBAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChC;yBAAO;AACH,wBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC;oBAChE;gBACJ;gBACA;AACJ,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;;AAEpC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAC9B,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAC3E;oBACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI;gBACnC;gBACA;AACJ,YAAA,KAAK,SAAS;gBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAgB,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC1E;AACJ,YAAA,KAAK,UAAU;AACX,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB;AACJ,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACrB;AACJ,YAAA,KAAK,MAAM;gBACP;YACJ;;QAGJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC;IACtF;IAEQ,UAAU,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtD,SAAA,CAAC;IACN;IAEA,OAAO,GAAA;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;AAC3E,QAAA,IACI,IAAI,CAAC,eAAe,CAAC,KAAK;YAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAC5D;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD;IACJ;AAEA,IAAA,UAAU,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;QAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD;AAEA;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,MAAc,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACnF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;gBACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC1D,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,IAC7D,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAC/C;AACD,gBAAA,MAAM,aAAa,GAAG,sBAAsB,EAAE,QAAQ,EAAE,IAAI,CACxD,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAC3B;gBACD,MAAM,qBAAqB,GAAG;AAC1B,sBAAE;AACI,wBAAA,GAAG,aAAa;wBAChB,iBAAiB,EAAE,sBAAsB,EAAE;AAC9C;sBACD,IAAI;AACV,gBAAA,IAAI,CAAC,SAAS;AACV,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,wBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB;AACvC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACrC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,qBAAqB,CAAC;AAC9E,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,oBAAoB,EAAE;gBAC/B;YACJ;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9D,YAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AACrE,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;YACtB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAG;AAC/C,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACrD,YAAA,OAAO,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAC3C;AACD,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzE,QAAA,CAAC,CAAC;IACN;IACA,YAAY,CAAC,KAAK,EAAE,IAAI,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,aAAiC;AACrC,QAAA,IAAI,OAAgB;AACpB,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9E,YAAA,MAAM,UAAU,GAAG;gBACf,eAAe,EAAE,IAAI,CAAC,EAAE;AACxB,gBAAA,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC3B,EAAE,EAAE,IAAI,CAAC;aACZ;YACD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,UAAU,CAAC;YACtE,OAAO,GAAG,IAAI;QAClB;aAAO;AACH,YAAA,MAAM,UAAU,GAAG;AACf,gBAAA,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;gBAC3B,eAAe,EAAE,IAAI,CAAC,EAAE;gBACxB,EAAE,EAAE,IAAI,CAAC;aACZ;YACD,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,UAAU,CAAC;YACxE,OAAO,GAAG,KAAK;QACnB;AAEA,QAAA,aAAa,CAAC,SAAS,CAAC,MAAK;YACzB,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC7E;iBAAO;AACH,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YAChF;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;AAC1E,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAGA,cAAc,GAAA;QACV,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC;YAClD,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAC5B,iEAAiE,CACpE;AACD,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,iBAAiB,EAAE;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC;qBACf,GAAG,CAAC,iBAAiB;sBACpB,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;qBAC9B,IAAI,CAAC,GAAG,CAAC;gBACd,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,oBAAA,MAAM,IAAI,GAAG;AACT,wBAAA,iBAAiB,EAAE,SAAS;wBAC5B,MAAM;AACN,wBAAA,qBAAqB,EAAE;qBAC1B;AACD,oBAAA,IAAI,CAAC;AACA,yBAAA,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI;yBACtC,SAAS,CAAC,QAAQ,IAAG;wBAClB,IAAI,QAAQ,EAAE,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;4BACrC,IAAI,CAAC,kBAAkB,CAAC;gCACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gCAAA,SAAS,EAAE;AACd,6BAAA,CAAC;4BACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpC,4BAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACrB;6BAAO;4BACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;wBAC5C;AACA,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,oBAAA,CAAC;yBACA,GAAG,CAAC,MAAK;AACN,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,oBAAA,CAAC,CAAC;gBACV;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,QAAQ,CAAC,IAAU,EAAA;QACf,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,KAAK,EAAE,+BAA+B;AACtC,YAAA,IAAI,EAAE,CAAA,gCAAA,EAAmC,IAAI,CAAC,UAAU,CAAA,wBAAA,CAA0B;AAClF,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,IAAI,CAAC;qBACA,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;qBAC3C,SAAS,CAAC,QAAQ,IAAG;oBAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,kBAAkB,CAAC;4BACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACV;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,CAAC,IAAI,EAAE,KAAc,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,YAAY,GAAG,cAAc;YACrD,IAAI,EACA,KAAK,KAAK;AACN,kBAAE,CAAA,2EAAA;AACF,kBAAE,CAAA,aAAA,CAAe;AACzB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG;oBACT,OAAO,EAAE,IAAI,CAAC,EAAE;AAChB,oBAAA,QAAQ,EAAE;iBACb;AACD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACxC;oBACA,IAAI,CAAC,kBAAkB,CAAC;wBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,SAAS,EAAE;AACd,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA7XS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,0BAA0B,yGCpDvC,wpfAwXA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;ADjDI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AA8CpB,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;2FAhUQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAIrB,KAAK,EAAA,QAAA,EAAA,wpfAAA,EAAA,MAAA,EAAA,CAAA,ulBAAA,CAAA,EAAA;;;AEZf,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AA+C7D,IAAA,WAAA,CACI,QAAkB,EACD,WAA+B,EAC/B,mBAAwC,EACxC,WAAwB,EACxB,YAA0B,EAC1B,cAA8B,EAC9B,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAPE,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,GAAG,GAAH,GAAG;QAnDhB,IAAA,CAAA,IAAI,GAAG,CAAC;QAgBhB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,aAAa,GAAsC,EAAE;QACrD,IAAA,CAAA,UAAU,GAAG,EAAE;QAGf,IAAA,CAAA,QAAQ,GAAG,EAAE;QAQb,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,YAAY,GAAG,KAAK;QAEpB,IAAA,CAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAC5C,IAAA,CAAA,cAAc,GAAG,CAAC;QAElB,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAC1B,IAAA,CAAA,YAAY,GAAG,CAAC;QAGhB,IAAA,CAAA,UAAU,GAAG,KAAK;AAcd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAe;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC;AACpC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5D,YAAA,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;AACvC,SAAA,CAAC;IACN;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBACnC,IAAI,CAAC,sBAAsB,EAAE;YACjC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,OAAO;QAC/H,IAAI,CAAC,eAAe,EAAE;IAC1B;IAEA,OAAO,GAAA;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;AAC3E,QAAA,IACI,IAAI,CAAC,eAAe,CAAC,KAAK;YAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAC5D;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD;IACJ;AAEA,IAAA,UAAU,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAqB;QAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD;IAEQ,UAAU,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtD,SAAA,CAAC;IACN;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,qBAAqB,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,IAAI,CAAC;AAChB,aAAA,CAAC;QACN;IACJ;AACQ,IAAA,qBAAqB,CAAC,MAAc,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACtF,YAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,QAAQ;AAC7C,YAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY;AAC1E,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,oBAAoB,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAG;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,OAAO;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACtD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC;iBACf,GAAG,CAAC,iBAAiB;kBACpB,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;iBAC9B,IAAI,CAAC,GAAG,CAAC;YACd,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,SAAS,GAAG;oBACd,MAAM;AACN,oBAAA,UAAU,EAAE;iBACf;AACD,gBAAA,IAAI,CAAC;AACA,qBAAA,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS;qBAC5C,SAAS,CAAC,QAAQ,IAAG;oBAClB,IAAI,QAAQ,EAAE,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACrC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;AACF,wBAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpC,wBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACrB;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC;qBACA,GAAG,CAAC,MAAK;AACN,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACV;QACJ;IACJ;AAEA,IAAA,QAAQ,CAAC,OAAuB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE,CAAA,gCAAA,CAAkC;AACxC,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,YAAY,CAAC,OAA2C,EAAA;QACpD,IAAI,CAAC,IAAI,CAAC;YACN,KAAK,EAAE,OAAO,CAAC,SAAS,GAAG,YAAY,GAAG,UAAU;YACpD,IAAI,EAAE,OAAO,CAAC;AACV,kBAAE,CAAA,iDAAA;AACF,kBAAE,iDAAiD;AACvD,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,IAAI,EAAE;AACT,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AACV,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,MAAM,IAAI,GAAG;oBACT,uBAAuB,EAAE,OAAO,CAAC,EAAE;AACnC,oBAAA,SAAS,EAAE,CAAC,OAAO,CAAC;iBACvB;AACD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;oBAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACpC,IAAI,CAAC,qBAAqB,CAAC;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,SAAS,EAAE;AACd,yBAAA,CAAC;oBACN;yBAAO;wBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9C;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YACtE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAC3D;YACD,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,IAAG;gBAC3C,OAAO;AACH,oBAAA,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,OAAO,IAAI;iBACrB;AACL,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,OAAO,CAAC,GAAG,EAAA;AACP,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG;AACjB,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjC,aAAA,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AACtB,YAAA,OAAO,MAAM;QACjB,CAAC,EAAE,EAAE,CAAC;IACd;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,CAAC;AACA,aAAA,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE;aAC/C,SAAS,CAAC,QAAQ,IAAG;YAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;AAEA,IAAA,eAAe,CAAC,KAAK,EAAA;QACjB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjB,YAAA,UAAU,EAAE;AACf,SAAA,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,MAAM,EAAA;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C;IACJ;AAEQ,IAAA,aAAa,CAAC,QAAQ,EAAA;AAC1B,QAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;YAClB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC9E,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACxC,YAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjC,IAAI,YAAY,GAAG,EAAE;;AAErB,YAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAChE;AACD,gBAAA,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B;YACA,YAAY;AACR,gBAAA,YAAY,EAAE,GAAG,CAAC,CAAC,IAAG;oBAClB,OAAO;wBACH,EAAE,EAAE,CAAC,CAAC,EAAE;AACR,wBAAA,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,IAAI,CAAA,GAAA,EAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,iBAAiB,CAAA,GAAA,EAAM,CAAC,CAAC,SAAS,CAAA,GAAA,EAAM,CAC1E,CAAC,CAAC,cAAc,GAAG,GAAG,EACxB,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,CAAC,CAAC,QAAQ,CAAA,CAAE;wBAC9B,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAA,OAAA,EAAU,CAAC,CAAC,SAAS,CAAA,CAAA;qBACtD;gBACL,CAAC,CAAC,IAAI,EAAE;AAEZ,YAAA,OAAO,YAAY;QACvB;AAEA,QAAA,OAAO,EAAE;IACb;8GAjUS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,oNCtCxC,+zTA2NA,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,IAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrLa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAItB,KAAK,EAAA,QAAA,EAAA,+zTAAA,EAAA,MAAA,EAAA,CAAA,gjBAAA,CAAA,EAAA;;sBAOhB,SAAS;uBAAC,YAAY;;;AE7BrB,MAAO,gCACT,SAAQ,gBAAgB,CAAA;AAaxB,IAAA,WAAA,CACI,QAAkB,EACD,IAAiB,EACjB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAHE,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;QAbxB,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,QAAQ,GAAG,IAAI;IAYf;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,IAAI;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,IAAU,KAAI;YACtC,IAAI,IAAI,EAAE;gBACN,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAG;oBACzD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAG;wBACxC,QACI,OAAO,EAAE,cAAc;AACvB,4BAAA,iBAAiB,CAAC,eAAe,EAAE,cAAc;AAEzD,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;gBAEF,IAAI,aAAa,EAAE;AACf,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjB,wBAAA,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,eAAe,aAAa,CAAC,EAAE,CAAA,QAAA;AACnD,qBAAA,CAAC;gBACN;YACJ;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACzC,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEQ,yBAAyB,GAAA;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAClD,SAAS,CAAC,IAAI,IAAG;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,CAAC,CAAC,CACL;QAED;aACK,SAAS,CAAC,QAAQ,IAAG;YAClB,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB,IAAI,CAAC,aAAa,GAAG;AACjB,oBAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAG;wBACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAG;4BACxC,OAAO,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;AACvD,wBAAA,CAAC,CAAC;AACN,oBAAA,CAAC;iBACJ;YACL;AACJ,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9B;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GAtFS,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,QAAA,EAAA,IAAA,EAAA,gCAAgC,+GCd7C,qoDAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnCa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAG3B,KAAK,EAAA,QAAA,EAAA,qoDAAA,EAAA;;;AEAf,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AACzD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC;AAKnB,QAAA,IAAA,CAAA,KAAK,GAAe;AAChB,YAAA;AACI,gBAAA,EAAE,EAAE,gBAAgB;AACpB,gBAAA,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,CAAC,qBAAqB,CAAC;AACnC,gBAAA,IAAI,EAAE;AACT,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,CAAC,sBAAsB,CAAC;AACpC,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,aAAa;AACpE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,CAAC,oBAAoB,CAAC;AAClC,gBAAA,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,wBAAwB;AAC5B,gBAAA,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,CAAC,4BAA4B,CAAC;AAC1C,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,eAAe;gBACtB,UAAU,EAAE,CAAC,kBAAkB,CAAC;AAChC,gBAAA,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE,aAAA;AACD,YAAA;AACI,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,CAAC,sBAAsB,CAAC;AACpC,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY;AACnE;SACJ;IA9CD;8GAHS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sGCZpC,wEAEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDUa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,wEAAA,EAAA;;;AEwBf,MAAO,uBACT,SAAQ,gBAAgB,CAAA;IA6CxB,WAAA,CACqB,YAA0B,EAC3C,QAAkB,EACD,GAAsB,EACtB,QAAmB,EACnB,EAAc,EAAA;QAE/B,KAAK,CAAC,QAAQ,CAAC;QANE,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEZ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,EAAE,GAAF,EAAE;QA/Cf,IAAA,CAAA,IAAI,GAAG,CAAC;QAEhB,IAAA,CAAA,eAAe,GAAgC,EAAE;QACjD,IAAA,CAAA,SAAS,GAAsB,EAAE;QAEjC,IAAA,CAAA,gBAAgB,GAA8B,EAAE;QAMhD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAMlB,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,eAAe;QAMzE,IAAA,CAAA,aAAa,GAAG,EAAE;QAIlB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,QAAQ,GAAG,KAAK;QAGhB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,sBAAsB,GAAG,CAAC;QAI1B,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,KAAK,GAAG,KAAK;QAUT,WAAW,CAAC,IAAI,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE;IAC3C;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,yBAAyB,EAAE;QAChC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;gBACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;YACnC;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;QAEnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9B,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YACpB;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAChC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;QAC5B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,WAAW,CAAC,SAAS;YAC/B,eAAe,EAAE,WAAW,CAAC,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACN;;IAGQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAClF,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,iBAAiB;gBACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzC,oBAAA,MAAM,gBAAgB,GAAG,EAAE,KAAK;AAChC,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AACrB,wBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACxB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,wBAAA,CAAC,CAAC;oBACN;oBACA,IAAI,gBAAgB,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;wBAClD,IAAI,CAAC,yBAAyB,EAAE;oBACpC;AACJ,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,sBAAsB,GAAG;AAC1B,oBAAA;AACI,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,WAAW,EAAE,EAAE;AACf,wBAAA,mBAAmB,EAAE,CAAC;AACtB,wBAAA,OAAO,EAAE;AACZ,qBAAA;oBACD,GAAG,IAAI,CAAC;iBACX;YACL;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AACpE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD;IACJ;;AAGQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC;cACjB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpF,cAAE,IAAI,CAAC,YAAY,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC;QAEnF;AACK,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,QAAQ,IAAG;AACb,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB;AACrD,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC3B,CAAC;YACD,KAAK,EAAE,KAAK,IAAG;AACX,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC3B;SACH;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;IAEA,iBAAiB,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;IACpC;IAGA,MAAM,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;YACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;IACJ;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;;AAGA,IAAA,oBAAoB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;IACpC;;IAGQ,iBAAiB,CAAC,QAAiB,EAAE,EAAW,EAAA;AACpD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAErB,MAAM,SAAS,GAAG;cACZ,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI;cAC7C,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAEhD;aACK,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzB,MAAM,OAAO,GAAG;AACZ,kBAAE;kBACA,kCAAkC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEN,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;AAGA,IAAA,uBAAuB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC;aACA,uBAAuB,CAAC,EAAE;aAC1B,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,yBAAyB;AACnD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;;AAGA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,CAAC,iBAAiB,CAClB,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAChD,oCAAoC,EACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,CACxB;IACL;;IAGA,wBAAwB,CAAC,EAAU,EAAE,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,iBAAiB,CAClB,MAAM,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,EACpD,yCAAyC,EACzC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CACxC;IACL;;AAGQ,IAAA,iBAAiB,CAAC,SAAS,EAAE,cAAsB,EAAE,SAAsB,EAAA;QAC/E,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAG;AACxC,YAAA,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,gBAAA,SAAS,EAAE,CAAC,SAAS,CAAC,MAAK;AACvB,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC9D,IAAI,SAAS,EAAE;AACX,wBAAA,SAAS,EAAE;oBACf;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,IAAI,CAAC,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B;;IAGA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACtB;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACvB;;IAGA,QAAQ,CAAC,KAAc,EAAE,eAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACnD;IAEA,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAC3B;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;QACJ;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACzD;IACJ;AAEA,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAC/E,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAK,EAAA;QACf,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;IAClD;IAEA,yBAAyB,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAE3E,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAK;gBAC5C,IAAI,CAAC,sBAAsB,EAAE;AACjC,YAAA,CAAC,CAAC;QACN;IACJ;IAEA,sBAAsB,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAEA,IAAA,QAAQ,CAAC,EAAU,EAAA;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;gBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;gBACxC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,uCAAuC,CAAC;AACnE,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA7WS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sGClCpC,41fAyWA,EAAA,MAAA,EAAA,CAAA,y3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,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,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,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,EAAAI,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AD1JI,UAAA,CAAA;IADC,YAAY,CAAC,MAAM,CAAC;;;;AAUpB,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;2FAtLQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAIlB,KAAK,EAAA,QAAA,EAAA,41fAAA,EAAA,MAAA,EAAA,CAAA,y3BAAA,CAAA,EAAA;;;AEhBf,MAAO,8BAA+B,SAAQ,gBAAgB,CAAA;AAUhE,IAAA,WAAA,CACI,QAAkB,EACD,YAA0B,EAC1B,SAAuB,EACvB,GAAsB,EAAA;QAEvC,KAAK,CAAC,QAAQ,CAAC;QAJE,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,GAAG,GAAH,GAAG;QARxB,IAAA,CAAA,QAAQ,GAAG,KAAK;IAWhB;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AACxC,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YAChC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,iBAAiB,CAAC,eAAe,EAAE,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAC,eAAe,EAAE,WAAW,EAAE;IAC9H;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC;AACA,aAAA,uBAAuB,CAAC,IAAI,CAAC,eAAe;aAC5C,SAAS,CAAC,QAAQ,IAAG;AAClB,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;AAChB,gBAAA,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7E;YACA,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC;aACA,GAAG,CAAC,MAAK;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;IACV;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE;IACf;IAEA,aAAa,CAAC,MAAc,EAAE,IAAI,EAAA;QAC9B,OAAO,IAAI,CAAC,EAAE;IAClB;IAES,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;IACvB;8GA5DS,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,8BAA8B,8GChB3C,gvIA2FA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD3Ea,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAI1B,KAAK,EAAA,QAAA,EAAA,gvIAAA,EAAA,MAAA,EAAA,CAAA,g0BAAA,CAAA,EAAA;;;AEwBrB,kBAAkB,CAAC,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,oFAAoF,CACvF;AAED,MAAM,MAAM,GAAW;AACnB,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,gCAAgC;AAC3C,QAAA,SAAS,EAAE;AACd,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,uBAAuB;AAClC,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,IAAI,EAAE;AACF,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,2BAA2B;AACtC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,SAAS,EAAE,wBAAwB;AACnC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,SAAS,EAAE,oBAAoB;AAC/B,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,SAAS,EAAE,8BAA8B;AACzC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,SAAS,EAAE,8CAA8C;AACzD,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,2BAA2B;AACtC,gBAAA,IAAI,EAAE;AACF,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,KAAK,EAAE;AACV;AACJ;AACJ;AACJ;CACJ;MAsCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAlCrB,gCAAgC;YAChC,0BAA0B;YAC1B,2BAA2B;YAC3B,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,8CAA8C;YAC9C,uBAAuB;AACvB,YAAA,8BAA8B,aAG9B,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;YACX,gBAAgB;AAChB,YAAA,sBAAsB,oBAEtB,iBAAiB;YACjB,iBAAiB,EAAAC,GAAA,CAAA,WAAA,CAAA,EAAA,CAAA,CAAA;AAMZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAvBrB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,sBAAsB;AACtB,YAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,iBAAiB;YACjB,iBAAiB;;YAEjB,WAAW,CAAC,OAAO;;;;2FAId,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,gCAAgC;wBAChC,0BAA0B;wBAC1B,2BAA2B;wBAC3B,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,8CAA8C;wBAC9C,uBAAuB;wBACvB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,mBAAmB;wBACnB,kBAAkB;wBAClB,gBAAgB;wBAChB,cAAc;wBACd,WAAW;wBACX,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,sBAAsB;AACtB,wBAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC7B,iBAAiB;wBACjB,iBAAiB;;wBAEjB,WAAW,CAAC,OAAO;;AAEtB;AACJ,iBAAA;;;AC5KD;;AAEG;;;;"}
|