@rtsee/ngx 0.0.93 → 0.0.94
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":"rtsee-ngx.mjs","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/auth.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/components/constans/common.const.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/common/components/rating/rating.component.ts","../../../projects/ngx/src/lib/common/components/rating/rating.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/common/directives/viewport-observer.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.ts","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.html","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.ts","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.html","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.ts","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-profile/manage-profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-profile/manage-profile.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/services/payments.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-page/payment-page.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-page/payment-page.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-validation-page/payment-validation-page.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-validation-page/payment-validation-page.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-plan/manage-plan.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-plan/manage-plan.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/join-call/join-call.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/join-call/join-call.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/text-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/text-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/textarea-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/textarea-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/checkbox-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/checkbox-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/radio-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/radio-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/number-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/number-field.component.html","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.ts","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/autocomplete-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/autocomplete-field.component.html","../../../projects/ngx/src/lib/common/components/recursive-select/recursive-select.component.ts","../../../projects/ngx/src/lib/common/components/recursive-select/recursive-select.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/recursive-select-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/recursive-select-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/image-uploader-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/image-uploader-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/form-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/form-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form/form.component.ts","../../../projects/ngx/src/lib/common/components/forms/form/form.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topic/manage-topic.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topic/manage-topic.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topics/manage-topics.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topics/manage-topics.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-settings/presentation-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-settings/presentation-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rate-input/rate-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rate-input/rate-input.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rate-item/rate-item.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rate-item/rate-item.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rater/rater.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rater/rater.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rates-list/rates-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rates-list/rates-list.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rating-section/rating-section.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rating-section/rating-section.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-details/story-details.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-details/story-details.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-rating-configuration/manage-rating-configuration.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-rating-configuration/manage-rating-configuration.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rating-configurations-list/rating-configurations-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rating-configurations-list/rating-configurations-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/entities-list/entities-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/entities-list/entities-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity/manage-entity.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity/manage-entity.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/utils.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/validators/form-fields-validators.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.html","../../../projects/ngx/src/lib/components/enums/form.enum.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n imports: [NgClass],\n standalone: true,\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeConference;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n @if (rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n }\n @if (!rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n }\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n @if (rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n }\n @if (!rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n }\n </div>\n <div class=\"present rtsee-buttons-container\"\n [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\"\n >\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n imports: [NgClass, FormsModule, Select, FloatLabel, Button],\n standalone: true,\n})\nexport class RtseeSettingsComponent implements OnInit {\n @Input() rtSee!: RTSeeConference;\n @Input() fullScreenMode!: boolean;\n constructor() {}\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n audioInputChanged() {\n this.rtSee.setAudioInputDevice();\n }\n\n audioOutputChanged() {\n this.rtSee.setAudioOutputDevice();\n }\n\n videoInputChanged() {\n this.rtSee.setVideoInputDevice();\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices rtsee-form-container\">\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.audioInputDevices\"\n [(ngModel)]=\"rtSee.audioInputDeviceId\"\n (ngModelChange)=\"audioInputChanged()\"\n inputId=\"mic_input\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"mic_input\">Microphone</label>\n </p-floatlabel>\n </div>\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.audioOutputDevices\"\n [(ngModel)]=\"rtSee.audioOutputDeviceId\"\n (ngModelChange)=\"audioOutputChanged()\"\n inputId=\"audio_output\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"audio_output\">Speaker</label>\n </p-floatlabel>\n </div>\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.videoInputDevices\"\n [(ngModel)]=\"rtSee.videoInputDeviceId\"\n (ngModelChange)=\"videoInputChanged()\"\n inputId=\"video_input\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"video_input\">Camera</label>\n </p-floatlabel>\n </div>\n </div>\n\n <div class=\"rtsee-settings-footer\">\n <p-button label=\"Close\"\n (click)=\"rtSee.toggleSettings()\"\n ></p-button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n standalone: true,\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { NgClass, NgIf } from '@angular/common';\nimport { RtseeSoundbarComponent } from '../rtsee-soundbar/rtsee-soundbar.component';\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n imports: [NgClass, NgIf, RtseeSoundbarComponent],\n standalone: true,\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement,\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass, NgIf } from '@angular/common';\nimport { RtseeSettingsComponent } from '../rtsee-settings/rtsee-settings.component';\nimport { RtseePeerComponent } from '../rtsee-peer/rtsee-peer.component';\nimport { RTSeeControlsComponent } from './rtsee-controls/rtsee-controls.component';\n\n@Component({\n selector: 'rtsee-conference',\n templateUrl: './rtsee-conference.component.html',\n imports: [\n NgClass,\n RtseeSettingsComponent,\n RtseePeerComponent,\n RTSeeControlsComponent,\n ],\n standalone: true,\n})\nexport class RTSeeConferenceComponent {\n settingsViewEnabled: boolean;\n\n @Input() rtSee!: RTSeeConference;\n constructor() {\n this.settingsViewEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.rtSee.uiControls.toggle();\n }\n}\n","<div class=\"rtsee-conference-shell\" [ngClass]=\"{\n'rtsee-conference-shell-expanded': rtSee.uiControls.isExpanded,\n'rtsee-conference-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n @if (rtSee.localStream && rtSee.camera) {\n <div class=\"rtsee-local-peer\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n }\n <div class=\"rtsee-window-controls\">\n <button type=\"button\"\n (click)=\"rtSee.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n </div>\n @if (rtSee.settingsOpened) {\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-settings>\n }\n @if (rtSee.screenSharePeer) {\n <div class=\"rtsee-screen-share\">\n <video [autoplay]=\"true\"\n [muted]=\"'true'\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n }\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n @for (peer of rtSee.rtcPeerConnections.connections; track peer.clientId) {\n <div class=\"rtsee-peer-wrapper\">\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n }\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n RTSeeAuth,\n IRtseeSignInRequestOptions,\n IRTSeeSignInResponse,\n IRtseeSignUpRequestOptions,\n IRTSeeSignUpResponse,\n AuthEndpointsKeys,\n RTSeeAuthConfiguration,\n} from '@rtsee/auth';\n\nexport interface IRtseeForgotPasswordRequestOptions {\n email: string;\n}\n\nexport interface IRtseeResetPasswordRequestOptions {\n password: string;\n passwordConfirm: string;\n token: string;\n}\n\nexport interface IRTSeeForgotPasswordResponse {\n success: boolean;\n message: string;\n}\n\nexport interface IRTSeeResetPasswordResponse {\n success: boolean;\n message: string;\n}\nimport { Observable, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RTSeeAuthService {\n rtseeAuth!: RTSeeAuth<any>;\n authConfiguration!: RTSeeAuthConfiguration;\n\n constructor(private http: HttpClient) {}\n\n init(auth: RTSeeAuth<any>) {\n if (this.rtseeAuth && this.authConfiguration) {\n return;\n }\n\n this.rtseeAuth = auth;\n this.authConfiguration = this.rtseeAuth.authConfiguration;\n }\n\n signIn(\n credentials: IRtseeSignInRequestOptions,\n ): Observable<IRTSeeSignInResponse> {\n return this.http\n .post<IRTSeeSignInResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.SIGN_IN,\n ),\n credentials,\n )\n .pipe(tap((res) => this.rtseeAuth.authenticate(res)));\n }\n\n signUp(\n credentials: IRtseeSignUpRequestOptions,\n ): Observable<IRTSeeSignUpResponse> {\n return this.http.post<IRTSeeSignUpResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.SIGN_UP,\n ),\n credentials,\n );\n }\n\n forgotPassword(\n credentials: IRtseeForgotPasswordRequestOptions,\n ): Observable<IRTSeeForgotPasswordResponse> {\n return this.http.post<IRTSeeForgotPasswordResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.FORGOT_PASSWORD,\n ),\n credentials,\n );\n }\n\n resetPassword(\n credentials: IRtseeResetPasswordRequestOptions,\n ): Observable<IRTSeeResetPasswordResponse> {\n return this.http.post<IRTSeeResetPasswordResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.RESET_PASSWORD,\n ),\n credentials,\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IPeer, RTSeeTextLabelKeys } from '@rtsee/core';\nimport { Button } from 'primeng/button';\nimport { Message } from 'primeng/message';\nimport { RTSeeAuthService } from '../../rtsee-auth/services/auth.service';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { Router, RouterLink } from '@angular/router';\nimport { Select } from 'primeng/select';\nimport { FormsModule } from '@angular/forms';\nimport { Divider } from 'primeng/divider';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n imports: [Button, Message, RouterLink, Select, FormsModule, Divider],\n standalone: true,\n})\nexport class ProfileComponent {\n authConfiguration: RTSeeAuthConfiguration;\n\n @Input() messenger!: RTSeeMessenger;\n @Input() peer?: IPeer;\n constructor(\n private authService: RTSeeAuthService,\n private router: Router,\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n setLanguage(): void {\n this.messenger.setLanguage(this.messenger.currentLanguage);\n void this.messenger.propagateLanguageChange(this.messenger.currentLanguage);\n }\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n logOut() {\n this.authService.rtseeAuth.logOut();\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN),\n );\n setTimeout(() => {\n window.location.reload();\n }, 200);\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-messenger-profile\">\n @if (!messenger.ownProfileOpened) {\n <ul class=\"rtsee-messenger-profile-actions\">\n <li class=\"rtsee-messenger-profile-actions-item\">\n <p-button\n (click)=\"call()\"\n size=\"large\"\n severity=\"secondary\"\n icon=\"pi pi-phone\"\n />\n </li>\n <li class=\"rtsee-messenger-profile-actions-item\">\n <p-button\n (click)=\"videoCall()\"\n size=\"large\"\n severity=\"secondary\"\n icon=\"pi pi-video\"\n />\n </li>\n </ul>\n }\n\n @if (messenger.ownProfileOpened && messenger.myPeer && !messenger.myPeer.isAnonymous) {\n <div class=\"rtsee-messenger-profile-info\">\n <p class=\"rtsee-messenger-profile-info-name\">{{messenger.myPeer.name}}</p>\n <div class=\"rtsee-messenger-profile-info-language\">\n <p class=\"rtsee-messenger-profile-info-language-label\">Language:</p>\n <p-select [options]=\"messenger.languageOptions\"\n [(ngModel)]=\"messenger.currentLanguage\"\n (ngModelChange)=\"setLanguage()\"\n optionLabel=\"key\"\n optionValue=\"key\"\n [placeholder]=\"messenger.labels[RTSeeTextLabelKeys.MESSANGER_LANGUAGE_PLACEHOLDER]\"\n class=\"rtsee-messenger-profile-info-language-select\"\n />\n </div>\n <div class=\"rtsee-messenger-profile-edit\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.MESSENGER_EDIT_PROFILE_BTN_LABEL]\"\n (click)=\"messenger.openManageProfile()\"\n ></p-button>\n </div>\n <p-divider></p-divider>\n @if (messenger.myPeer.plan) {\n <p-message severity=\"success\">\n <span>{{messenger.myPeer.plan.productName}}</span>\n </p-message>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.MANAGE_PLAN]\"\n (click)=\"messenger.openManagePlanPage()\"\n ></p-button>\n } @else {\n <div class=\"rtsee-subscribe-button\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SUBSCRIBE_LABEL]\"\n (click)=\"messenger.openPaymentPage()\"\n ></p-button>\n </div>\n }\n <p-divider></p-divider>\n </div>\n }\n\n @if (messenger.ownProfileOpened && messenger.myPeer?.isAnonymous) {\n <div class=\"rtsee-messenger-profile-auth\">\n <div class=\"rtsee-messenger-profile-anon-message\">\n @if (!messenger.currentLanguage || messenger.currentLanguage === 'eng') {\n <p-message severity=\"warn\">\n <span>This is an anonymous identity we've generated for you.</span>\n <span> </span>\n <span>You can use it to play around.</span>\n <span> </span>\n <span>But we are guilty of erasing these time after time.</span>\n <span> </span>\n <span>So please Sign Up if you're looking for something more stable :)</span>\n </p-message>\n } @else if (messenger.currentLanguage === 'ua') {\n <p-message severity=\"warn\">\n <span>Ми згенерували для вас анонімну особистість.</span>\n <span> </span>\n <span>Скористайтеся нею для ознайомлення з сайтом.</span>\n <span> </span>\n <span>Та, час-від-часу, ми їх видаляємо.</span>\n <span> </span>\n <span>Тож краще зареєструтеся, аби не втратити дані :)</span>\n </p-message>\n }\n </div>\n\n <div class=\"rtsee-messenger-profile-auth-buttons\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SIGN_UP_BUTTON]\"\n severity=\"primary\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SIGN_IN_BUTTON]\"\n severity=\"secondary\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n </div>\n </div>\n } @else if (messenger.ownProfileOpened && !messenger.myPeer?.isAnonymous) {\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.LOGOUT_BUTTON]\"\n severity=\"danger\"\n (click)=\"logOut()\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n }\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\nimport { NgClass } from '@angular/common';\nimport { ProfileComponent } from '../profile/profile.component';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n imports: [NgClass, ProfileComponent],\n standalone: true,\n})\nexport class MessengerHeaderComponent {\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {}\n\n openProfile(id: string): void {\n if (this.messenger.ownProfileOpened) {\n return;\n }\n void this.messenger.openProfile(id);\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-chat-header-unread': messenger.openedChat && !messenger.unreadMessagesCount,\n 'rtsee-messenger-header-expanded': messenger.openedProfile || messenger.openedChatDetails,\n 'rtsee-messenger-header-my-profile-mode': messenger.ownProfileOpened,\n 'rtsee-messenger-header-chat-info-mode': (messenger.openedProfile || messenger.openedChatDetails) && !messenger.ownProfileOpened\n }\"\n>\n <span class=\"rtsee-messenger-header-collapse-button\"\n (click)=\"messenger.collapseInfo()\"\n >\n <span class=\"pi pi-arrow-left\"></span>\n </span>\n <div class=\"rtsee-messenger-header-left\">\n @if (!messenger.openedChat && messenger.myPeer) {\n <div class=\"rtsee-messenger-header-avatar\"\n (click)=\"openProfile(messenger.myPeer.clientId)\"\n >\n <div [style.background-image]=\"'url(' + messenger.myPeer.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-header-avatar-image\">\n </div>\n </div>\n } @else if (messenger.openedChat) {\n <button class=\"rtsee-messenger-close-chat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">arrow_back</span>\n @if (messenger.unreadMessagesCount) {\n <span class=\"unread-count\">{{messenger.unreadMessagesCount}}</span>\n }\n </button>\n }\n </div>\n <div class=\"rtsee-messenger-header-right\">\n @if (messenger.openedChat) {\n <div class=\"rtsee-messenger-chat-image-container rtsee-messenger-header-avatar\"\n (click)=\"messenger.openChatInfo()\"\n >\n <div class=\"rtsee-messenger-chat-image rtsee-messenger-header-avatar-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n }\n </div>\n <div class=\"rtsee-messenger-header-center\">\n @if (messenger.openedChat) {\n <div [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': messenger.openedProfile || messenger.openedChatDetails}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n </div>\n\n <div class=\"rtsee-messenger-profile-data-container\">\n @if (messenger.openedChatDetails) {\n <rtsee-profile [messenger]=\"messenger\"\n ></rtsee-profile>\n }\n </div>\n </div>\n } @else if (!messenger.openedChat) {\n <p class=\"rtsee-messenger-header-title\"\n >{{messenger.labels[RTSeeTextLabelKeys.MESSANGER_TITLE]}}</p>\n <rtsee-profile [messenger]=\"messenger\"\n [peer]=\"messenger.myPeer\"\n ></rtsee-profile>\n }\n </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n standalone: true,\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage } from '@rtsee/messenger';\nimport { IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\nimport { NgClass, NgIf } from '@angular/common';\nimport { PreloaderComponent } from '../../../../../common/components/preloader/preloader.component';\n\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n imports: [NgIf, NgClass, PreloaderComponent],\n standalone: true,\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n @Input() inChat?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\" [ngClass]=\"{'showing-status-inside-chat': inChat }\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">done_all</span>\n </span>\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n</div>\n","export const COMMON_CONSTANTS = {\n minPasswordLength: 8,\n requestItemLimit: 20,\n customTimeFormat: 'HH:mm',\n customDateFormat: 'dd/MM/YYYY',\n customDateFormatDaysJs: 'DD/MM/YYYY',\n customDateTimeFormat: 'dd/MM/YYYY HH:mm',\n defaultProfileImgUrl: 'https://werf.co/assets/images/default-profile.png',\n mobileBreakpoint: 800,\n};\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { MessageTimeAndStatusComponent } from '../message/components/message-time-and-status/message-time-and-status.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n imports: [MessageTimeAndStatusComponent, NgClass, NgIf],\n standalone: true,\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n\n protected readonly COMMON_CONSTANTS = COMMON_CONSTANTS;\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl || COMMON_CONSTANTS.defaultProfileImgUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"\n [hideStatus]=\"chat && !!(chat.unreadMessagesCount)\">\n </rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { NgForOf } from '@angular/common';\nimport { ChatThumbnailComponent } from '../chat-thumbnail/chat-thumbnail.component';\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n imports: [NgForOf, ChatThumbnailComponent],\n standalone: true,\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n<!-- <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>-->\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n standalone: true,\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IRatingConfigWithRate } from '@rtsee/common';\nimport { NgClass } from '@angular/common';\nimport { IRTSeeRateBase } from '@rtsee/common/src/interfaces/utilities/rating/Rate';\n\n@Component({\n selector: 'rtsee-rating',\n imports: [NgClass],\n templateUrl: './rating.component.html',\n})\nexport class RatingComponent implements OnInit {\n stars: string[] = [];\n mutable: boolean = false;\n rateValue: number = 0;\n\n @Input() config?: IRatingConfigWithRate;\n @Input() rate?: Pick<IRTSeeRateBase, 'value' | 'maxValue'>;\n\n ngOnInit(): void {\n this.init();\n }\n\n init(): void {\n if (this.rate) {\n this.initStars(this.rate.value, this.rate.maxValue);\n this.rateValue = this.rate.value;\n } else if (this.config) {\n this.mutable = true;\n this.initStars(this.config.rate?.value || 0, this.config.maxRateValue);\n this.rateValue = this.config.rate?.value || 0;\n } else {\n throw new Error(`Neither rate nor vote config provided!`);\n }\n }\n\n initStars(value: number, maxValue: number): void {\n const stars: string[] = [];\n const full: number = Math.floor(value);\n const hasHalf: boolean = value - full >= 0.25;\n for (let i: number = 0; i < full; i++) {\n stars.push('full');\n }\n if (hasHalf) {\n stars.push('half');\n }\n while (stars.length < maxValue) {\n stars.push('empty');\n }\n this.stars = stars;\n }\n\n onStarClicked(index: number): void {\n if (!this.config || !this.config.rate) {\n return;\n }\n this.config.rate.value = index + 1;\n this.init();\n }\n}\n","<div class=\"rtsee-rating\">\n @for (star of stars; track $index) {\n <span class=\"rtsee-rating-star\"\n [ngClass]=\"{\n 'rtsee-rating-star-full': star === 'full',\n 'rtsee-rating-star-half': star === 'half',\n 'rtsee-rating-star-empty': star === 'empty',\n 'rtsee-rating-star-clickable': mutable\n }\"\n (click)=\"onStarClicked($index)\"\n >★</span>\n }\n @if (rateValue) {\n <span class=\"rtsee-rating-number\">{{ rateValue }}</span>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.scss'],\n imports: [NgClass],\n standalone: true,\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n ngOnInit(): void {}\n\n joinCall() {\n console.log('message data: ', this.message.data);\n if (\n !this.messenger ||\n (!this.message.data?.roomId && !this.chat.conferenceRoom)\n ) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n\n const roomId: string | null =\n this.message.data?.roomId || this.chat.conferenceRoom?.id || null;\n\n if (!roomId) {\n console.log('Room Id unavailable!');\n return;\n }\n\n void this.messenger.joinCall(roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p> The call has started</p>\n <button class=\"rtsee-join-call-btn\"\n (click)=\"joinCall()\">\n Join Call\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { NgClass, NgIf } from '@angular/common';\nimport { MessageTimeAndStatusComponent } from './components/message-time-and-status/message-time-and-status.component';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\nimport { IRTSeeRateConfiguration } from '@rtsee/common';\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n imports: [\n NgClass,\n MessageTimeAndStatusComponent,\n WidgetDirective,\n RatingComponent,\n ],\n standalone: true,\n})\nexport class MessageComponent implements OnInit, AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n ) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.instance.chat = this.chat;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from.id === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n @if (message.widget) {\n <ng-template widgetHost></ng-template>\n }\n @if (!message.widget) {\n <p class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n }\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [inChat]=\"true\"\n [hideStatus]=\"message.from.id !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n DOCUMENT,\n ElementRef,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatEvents,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { NgClass, ViewportScroller } from '@angular/common';\nimport { MessageComponent } from '../message/message.component';\nimport { RTSeeChatTypes } from '@rtsee/common';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\n\nexport interface IRTSeeMessageGroup {\n id: string;\n sender: RTSeeChatMember;\n senderVisible: boolean;\n messages: RTSeeMessage[];\n}\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n imports: [InfiniteScrollDirective, MessageComponent, NgClass],\n standalone: true,\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n bindedGroupFunction: () => void;\n messagesGroups: IRTSeeMessageGroup[] = [];\n\n firstGroupedMessage: RTSeeMessage | null = null;\n lastGroupedMessage: RTSeeMessage | null = null;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(\n private timeFormatService: TimeFormatHelperService,\n private scroller: ViewportScroller,\n @Inject(DOCUMENT) private document: Document,\n ) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n this.bindedGroupFunction = this.groupMessages.bind(this) as () => void;\n }\n\n @HostListener('window:scroll', ['$event'])\n onWindowScroll(event: Event): void {\n // Get the vertical scroll position\n const verticalOffset: number =\n window.pageYOffset ||\n this.document.documentElement.scrollTop ||\n this.document.body.scrollTop ||\n 0;\n\n if (window.innerWidth >= COMMON_CONSTANTS.mobileBreakpoint) {\n return;\n }\n\n // You can add logic here, e.g., show a 'scroll to top' button\n if (verticalOffset < 300) {\n this.onScrolledToTop();\n }\n }\n\n ngOnInit() {\n this.chat.on(\n RTSeeChatEvents.MESSAGES_LIST_CHANGED,\n this.bindedGroupFunction,\n );\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n this.groupMessages();\n }\n\n ngAfterViewInit(): void {\n if (this.chat.isStandalone) {\n return;\n }\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n this.chat.off(\n RTSeeChatEvents.MESSAGES_LIST_CHANGED,\n this.bindedGroupFunction,\n );\n }\n\n onScrolledToTop() {\n console.log('scrolledToTop');\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('back');\n }\n\n onScroll() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('front');\n }\n\n scrollToBottom(): void {\n this.groupMessages();\n if (this.chat.isStandalone) {\n return;\n }\n setTimeout(() => {\n if (window.innerWidth < COMMON_CONSTANTS.mobileBreakpoint) {\n this.scroller.scrollToPosition([0, document.body.scrollHeight]);\n }\n\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }, 0);\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n\n private groupMessages() {\n if (!this.chat || !this.chat.messages.length) {\n this.messagesGroups.length = 0;\n }\n\n if (!this.firstGroupedMessage || !this.lastGroupedMessage) {\n this.performGrouping();\n } else {\n if (this.areForwardMessagesAdded()) {\n this.performGrouping(\n this.chat.messages.indexOf(this.lastGroupedMessage) + 1,\n );\n }\n\n if (this.areBackwardMessagesAdded()) {\n console.log('backward added', this.chat.messages);\n this.performGrouping(\n 0,\n this.chat.messages.indexOf(this.firstGroupedMessage) - 1,\n true,\n );\n }\n }\n\n this.saveFirstAndLastGroupedMessages();\n }\n\n private performGrouping(\n startIndex?: number,\n endIndex?: number,\n prepend?: boolean,\n ): void {\n const processedGroups: IRTSeeMessageGroup[] = [];\n let lastSenderId: string | null = null;\n let currentGroup: IRTSeeMessageGroup | null = null;\n\n const startFrom: number = startIndex || 0;\n\n for (\n let i: number = startFrom;\n i < (endIndex || this.chat.messages.length);\n i++\n ) {\n const message: RTSeeMessage = this.chat.messages[i];\n\n if (message.from.id === lastSenderId && currentGroup) {\n currentGroup.messages.push(message);\n } else {\n lastSenderId = message.from.id;\n\n if (currentGroup) {\n processedGroups.push(currentGroup);\n }\n\n if (!message.id && !message.temporaryId) {\n throw new Error('Either m.id or m.temporary id is required');\n }\n\n const isFromMe: boolean = message.from.id === this.messenger.clientId;\n const isSenderVisible: boolean =\n (this.chat.type !== RTSeeChatTypes.INDIVIDUAL && !isFromMe) ||\n this.chat.type === RTSeeChatTypes.COMMENTS ||\n this.chat.type === RTSeeChatTypes.RATINGS;\n\n currentGroup = {\n id: message.id || message.temporaryId!,\n sender: message.from,\n senderVisible: isSenderVisible,\n messages: [message],\n };\n }\n }\n\n if (currentGroup) {\n processedGroups.push(currentGroup);\n }\n\n if (prepend) {\n this.stitchGroups(processedGroups, true);\n } else {\n this.stitchGroups(processedGroups);\n }\n }\n\n private stitchGroups(\n newGroups: IRTSeeMessageGroup[],\n prepend?: boolean,\n ): void {\n if (!newGroups.length) {\n return;\n }\n if (!this.messagesGroups.length) {\n this.messagesGroups.push(...newGroups);\n return;\n }\n\n if (prepend) {\n const lastOfNewGroups: IRTSeeMessageGroup =\n newGroups[newGroups.length - 1];\n const firstOfExistingGroups: IRTSeeMessageGroup = this.messagesGroups[0];\n\n if (lastOfNewGroups.sender.id === firstOfExistingGroups.sender.id) {\n firstOfExistingGroups.messages.unshift(...lastOfNewGroups.messages);\n newGroups.splice(newGroups.length - 1, 1);\n }\n\n this.messagesGroups.unshift(...newGroups);\n } else {\n const firstOfNewGroups: IRTSeeMessageGroup = newGroups[0];\n const lastOfExistingGroups: IRTSeeMessageGroup =\n this.messagesGroups[this.messagesGroups.length - 1];\n if (firstOfNewGroups.sender.id === lastOfExistingGroups.sender.id) {\n lastOfExistingGroups.messages.push(...firstOfNewGroups.messages);\n newGroups.splice(0, 1);\n }\n\n this.messagesGroups.push(...newGroups);\n }\n }\n\n private areForwardMessagesAdded(): boolean {\n console.log('last grouped present', this.lastGroupedMessage);\n if (!this.lastGroupedMessage) {\n return false;\n }\n const index: number = this.chat.messages.indexOf(this.lastGroupedMessage);\n return index !== -1 && index < this.chat.messages.length - 1;\n }\n\n private areBackwardMessagesAdded(): boolean {\n console.log('first grouped present', this.firstGroupedMessage);\n\n if (!this.firstGroupedMessage) {\n return false;\n }\n const index: number = this.chat.messages.indexOf(this.firstGroupedMessage);\n console.log('outcome', index !== -1 && index > 0);\n return index !== -1 && index > 0;\n }\n\n private saveFirstAndLastGroupedMessages(): void {\n const firstAndLast: [RTSeeMessage, RTSeeMessage] | null =\n this.getFirstAndLastMessage();\n\n if (!firstAndLast) {\n this.firstGroupedMessage = null;\n this.lastGroupedMessage = null;\n return;\n }\n\n this.firstGroupedMessage = firstAndLast[0];\n this.lastGroupedMessage = firstAndLast[1];\n }\n\n private getFirstAndLastMessage(): [RTSeeMessage, RTSeeMessage] | null {\n if (!this.chat.messages.length) {\n return null;\n }\n\n return [\n this.chat.messages[0],\n this.chat.messages[this.chat.messages.length - 1],\n ];\n }\n\n protected readonly RTSeeChatTypes = RTSeeChatTypes;\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n [style.padding-bottom]=\"messenger.chatInputHeight + 'px'\"\n>\n @for (messageGroup of messagesGroups; track messageGroup.id) {\n <div class=\"rtsee-messenger-message-wrapper\" [ngClass]=\"{\n 'rtsee-messenger-message-wrapper-with-sender': messageGroup.senderVisible\n }\">\n <div class=\"rtsee-messenger-message-inset\">\n <img [src]=\"messageGroup.sender.imageUrl\"\n class=\"rtsee-messenger-message-sender-image\"\n >\n </div>\n\n <div class=\"rtsee-messenger-message-sender-name\">\n <p>{{messageGroup.sender.name}}</p>\n </div>\n\n @for (message of messageGroup.messages; track message.id) {\n <rtsee-message [message]=\"message\"\n [messenger]=\"messenger\"\n [chat]=\"chat\"\n ></rtsee-message>\n }\n </div>\n }\n</div>\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { Textarea } from 'primeng/textarea';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n imports: [ReactiveFormsModule, Textarea],\n standalone: true,\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n @ViewChild('chatInput') chatInput!: ElementRef<HTMLTextAreaElement>;\n\n sendMessage() {\n const text: string =\n (this.sendMessageForm.get('message')?.value as string) || '';\n const trimmedText: string = text.trim();\n\n if (trimmedText) {\n this.chat.sendMessage(text);\n }\n\n this.sendMessageForm.get('message')?.setValue('');\n this.handleResize();\n }\n\n onKeyUp(event: KeyboardEvent): void {\n this.handleResize();\n\n if (event.key === 'Enter' && !event.shiftKey) {\n this.sendMessage();\n }\n }\n\n handleResize(): void {\n const newHeight: number = this.chatInput.nativeElement.offsetHeight + 16;\n\n if (newHeight !== this.messenger.chatInputHeight) {\n this.messenger.setChatInputHeight(newHeight);\n }\n }\n}\n","<div #chatInput\n class=\"rtsee-chat-input\"\n xmlns=\"http://www.w3.org/1999/html\"\n>\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\" class=\"rtsee-chat-input-form\">\n <textarea [invalid]=\"false\"\n [autoResize]=\"true\"\n (keyup)=\"onKeyUp($event)\"\n formControlName=\"message\"\n pTextarea\n placeholder=\"Type a message...\"\n class=\"rtsee-chat-input-field\"\n rows=\"1\"\n cols=\"30\"\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\"\n >\n <span class=\"pi pi-send\"></span>\n </button>\n</div>\n","import {\n Directive,\n ElementRef,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\n\n@Directive({\n selector: '[rtseeViewportObserver]',\n standalone: true, // Use `standalone: true` in modern Angular\n})\nexport class ViewportObserverDirective implements AfterViewInit, OnDestroy {\n @Output() inViewport = new EventEmitter<boolean>();\n private observer!: IntersectionObserver;\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n // Options for the observer: 0.2 means 20% of the element must be visible\n // to trigger the callback\n const options = {\n root: null, // observing relative to the document's viewport\n rootMargin: '0px',\n threshold: 0,\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // entry.isIntersecting is true if the element is in the viewport\n this.inViewport.emit(entry.isIntersecting);\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { MessagesListComponent } from '../messages-list/messages-list.component';\nimport { ChatInputComponent } from '../chat-input/chat-input.component';\nimport { IRTSeeChat } from '@rtsee/common';\nimport { ViewportObserverDirective } from '../../../common/directives/viewport-observer.directive';\nimport { NgClass } from '@angular/common';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n imports: [\n MessagesListComponent,\n ChatInputComponent,\n ViewportObserverDirective,\n NgClass,\n ],\n standalone: true,\n})\nexport class ChatComponent implements OnInit, OnDestroy {\n @Input() chat!: RTSeeChat;\n @Input() chatData?: IRTSeeChat;\n @Input() entity?: RTSeeEntity;\n @Input() messenger!: RTSeeMessenger;\n\n onInViewPortChange(value: boolean): void {\n console.log('Received inViewPortChange', value);\n this.chat.isInViewPort = value;\n }\n\n ngOnInit(): void {\n if (!this.chat && !this.chatData) {\n console.log(`Either chat ot chatData is required!`);\n }\n\n if (!this.chat && this.chatData) {\n this.chat = this.messenger.addStandaloneChat({\n ...this.chatData,\n utilitiesSignalingClient: this.entity?.signalingClient,\n });\n this.chat.loadRemoteMessages('back');\n }\n }\n\n ngOnDestroy() {\n if (this.chat.isStandalone) {\n this.messenger.removeStandaloneChat(this.chat.id);\n }\n }\n}\n","<div class=\"rtsee-chat\"\n [ngClass]=\"{\n 'rtsee-chat-standalone': chat.isStandalone,\n 'rtsee-chat-in-viewport': chat.isInViewPort\n }\"\n rtseeViewportObserver\n (inViewport)=\"onInViewPortChange($event)\"\n>\n <div class=\"rtsee-chat-footer-container\">\n <div class=\"rtsee-chat-footer-container-inner\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n </div>\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ImageCroppedEvent, ImageCropperComponent } from 'ngx-image-cropper';\nimport { NgClass } from '@angular/common';\nimport { RadioButton } from 'primeng/radiobutton';\nimport { PreloaderComponent } from '../preloader/preloader.component';\nimport { RTSeeImageCropper } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-cropper',\n imports: [\n ImageCropperComponent,\n NgClass,\n RadioButton,\n PreloaderComponent,\n Button,\n ],\n templateUrl: './cropper.component.html',\n standalone: true,\n})\nexport class RTSeeCropperComponent {\n loadInProgress: boolean = true;\n\n @Input() cropper!: RTSeeImageCropper;\n @Output() nextClicked = new EventEmitter();\n\n @ViewChild(ImageCropperComponent) imageCropper!: ImageCropperComponent;\n constructor() {}\n\n ngOnInit() {}\n\n onCropperReady() {\n this.loadInProgress = false;\n this.cropper.setCropperElem(this.imageCropper);\n }\n\n onImageCropped(event: ImageCroppedEvent) {\n if (!event.blob) {\n console.log('ImageCropped no Blob after Cropped event');\n return;\n }\n this.cropper.onCropped(event.blob);\n }\n\n // selectValue(event) {\n // this.cropper.setAspectRatio(event.value);\n // }\n}\n","<div class=\"rtsee-image-cropper-container\"\n [ngClass]=\"{'rtsee-image-cropper-loading': loadInProgress}\"\n>\n @if (cropper.activeImage) {\n <div class=\"rtsee-image-cropper-container-inner\">\n <image-cropper style=\"visibility: hidden\"\n [imageFile]=\"cropper.activeImage.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"cropper.aspectRatio\"\n [resizeToWidth]=\"cropper.resizeToWidth\"\n [autoCrop]=\"false\"\n (imageCropped)=\"onImageCropped($event)\"\n (cropperReady)=\"onCropperReady()\"\n [imageQuality]=\"70\"\n format='jpeg'\n ></image-cropper>\n </div>\n }\n @if (cropper.aspectRatioConfigurable) {\n <div class=\"rtsee-select-aspect-ratio-container\">\n <span class=\"radio-btn title-text\">Aspect Ratio:</span>\n\n <p-radio-button name=\"pizza\" value=\"Cheese\" inputId=\"ingredient1\" />\n <label for=\"ingredient1\" class=\"ml-2\">Cheese</label>\n </div>\n }\n\n @if (!loadInProgress) {\n <div class=\"image-cropper-actions\">\n <p-button label=\"Next\"\n severity=\"primary\"\n (click)=\"cropper.onNextButtonClicked()\"\n ></p-button>\n </div>\n }\n\n <rtsee-preloader [diameter]=\"5\"></rtsee-preloader>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeFileUploader } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-uploader',\n imports: [],\n templateUrl: './uploader.component.html',\n})\nexport class RTSeeUploaderComponent implements OnInit {\n @Input() uploader!: RTSeeFileUploader;\n\n ngOnInit(): void {\n this.uploader.show();\n }\n}\n","<div id=\"rtsee-drag-drop-area\"></div>\n\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { RTSeeCropperComponent } from '../cropper/cropper.component';\nimport { RTSeeUploaderComponent } from '../uploader/uploader.component';\nimport { RTSeeImageUploader } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-image-uploader',\n imports: [RTSeeUploaderComponent, RTSeeCropperComponent, Button],\n templateUrl: './image-uploader.component.html',\n})\nexport class RTSeeImageUploaderComponent implements OnInit {\n @ViewChild(RTSeeCropperComponent) cropperComponent!: RTSeeCropperComponent;\n @Input() imageUploader!: RTSeeImageUploader;\n\n ngOnInit(): void {\n this.attachEventHandlers();\n }\n\n attachEventHandlers() {\n this.imageUploader.on('completed', this.onImagesUploaded.bind(this));\n }\n\n onNextButtonClicked() {\n this.imageUploader.onNextClicked();\n }\n\n onImagesUploaded(response: any): void {\n console.log(response);\n }\n}\n","<div class=\"rtsee-image-uploader\">\n @if (!imageUploader.awaitsUploadOrCrop) {\n <div class=\"rtsee-image-uploader-image\"\n (click)=\"imageUploader.init()\"\n >\n @if (imageUploader.uploadedPhotoPreview) {\n <img [src]=\"imageUploader.uploadedPhotoPreview\"\n class=\"rtsee-image-uploader-preview-image\"\n alt=\"uploaded_photo\"\n >\n }\n @if (!imageUploader.uploadedPhotoPreview) {\n <div class=\"rtsee-preloader-image-placeholder\"></div>\n }\n <div class=\"rtsee-image-uploader-image-change-btn\">\n <p-button icon=\"pi pi-pencil\" severity=\"info\"></p-button>\n </div>\n </div>\n }\n\n @if (imageUploader.awaitsUploadOrCrop) {\n <rtsee-uploader [uploader]=\"imageUploader.uploader\"\n [hidden]=\"imageUploader.cropper?.activeImage\"\n ></rtsee-uploader>\n\n @if (imageUploader.cropper?.activeImage) {\n <rtsee-cropper [cropper]=\"imageUploader.cropper\"\n (nextClicked)=\"onNextButtonClicked()\"\n ></rtsee-cropper>\n }\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Message } from 'primeng/message';\nimport { RTSeeImageUploaderComponent } from '../../../common/components/image-uploader/image-uploader.component';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputText } from 'primeng/inputtext';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageProfile, RTSeeMessenger } from '@rtsee/messenger';\n\nexport type RTSeeProfileForm = {\n firstName: string | null;\n lastName: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-profile',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n Message,\n RTSeeImageUploaderComponent,\n ReactiveFormsModule,\n InputText,\n ],\n templateUrl: './manage-profile.component.html',\n})\nexport class ManageProfileComponent implements OnInit {\n profileForm: FormGroup;\n\n @Input() messenger!: RTSeeMessenger;\n @Input() manageProfile!: RTSeeManageProfile;\n constructor(private formBuilder: FormBuilder) {\n this.profileForm = this.formBuilder.group<\n TypedReactiveForm<RTSeeProfileForm>\n >({\n firstName: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(141),\n ],\n }),\n lastName: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(141),\n ],\n }),\n });\n }\n\n ngOnInit() {\n if (!this.messenger.myPeer || !this.messenger.myPeer.name) {\n return;\n }\n\n const nameSplit: string[] = this.messenger.myPeer.name.split(' ');\n this.firstNameField.setValue(nameSplit[0]);\n nameSplit.splice(0, 1);\n this.lastNameField.setValue(nameSplit.join(' '));\n }\n\n async submit(): Promise<void> {\n if (this.profileForm.invalid) {\n this.profileForm.markAsTouched();\n return;\n }\n\n await this.manageProfile.save({\n firstName: this.firstNameField.getRawValue(),\n lastName: this.lastNameField.getRawValue(),\n });\n }\n\n get firstNameField(): FormControl<string> {\n return this.profileForm.get('firstName') as FormControl<string>;\n }\n\n get lastNameField(): FormControl<string> {\n return this.profileForm.get('lastName') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-messenger-manage-profile\">\n <div class=\"rtsee-messenger-manage-profile-info rtsee-form-container\">\n <div class=\"rtsee-messenger-manage-profile-image\">\n <rtsee-image-uploader [imageUploader]=\"manageProfile.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n\n <form class=\"rtsee-manage-profile-form rtsee-form\"\n [formGroup]=\"profileForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"firstNameField\"\n [class.p-invalid]=\"firstNameField.invalid && firstNameField.touched\"\n />\n <label for=\"sign-up-email\">First Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (firstNameField.hasError('required') && firstNameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >First Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"lastNameField\"\n [class.p-invalid]=\"lastNameField.invalid && lastNameField.touched\"\n />\n <label for=\"sign-up-email\">Last Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (lastNameField.hasError('required') && lastNameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Last Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-manage-profile-buttons\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageProfile.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageProfile.cancel()\"\n [disabled]=\"manageProfile.saveInProgress\"\n />\n </div>\n </form>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Card } from 'primeng/card';\nimport { IRTSeePaymentPriceItem, IRTSeePaymentProduct } from '@rtsee/common';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-payment-product-snippet',\n imports: [Card, Button],\n templateUrl: './payment-product-snippet.component.html',\n})\nexport class PaymentProductSnippetComponent {\n @Input() product!: IRTSeePaymentProduct;\n @Output() priceSelected: EventEmitter<IRTSeePaymentPriceItem> =\n new EventEmitter<IRTSeePaymentPriceItem>();\n\n selectPrice(price: IRTSeePaymentPriceItem) {\n this.priceSelected.emit(price);\n }\n}\n","<div class=\"rtsee-payment-product-snippet\">\n <p-card [header]=\"product.name\">\n <p class=\"rtsee-payment-product-snippet-description\">{{product.description}}</p>\n <div class=\"rtsee-payment-product-prices\">\n @for (price of product.prices; track price.id) {\n <div class=\"rtsee-payment-product-price\">\n <p-card [header]=\"price.label\" >\n <p>{{price.description}}</p>\n <p-button label=\"Select Plan\"\n (click)=\"selectPrice(price)\"\n ></p-button>\n </p-card>\n </div>\n }\n </div>\n </p-card>\n</div>\n","import { Injectable } from '@angular/core';\nimport { map, Observable, tap } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport {\n IRTSeeCreatePaymentSessionResponse,\n IRTSeeCreatePaymentSessionRequest,\n IRTSeePaymentProduct,\n IRTSeePaymentProductsListResponse,\n} from '@rtsee/common';\nimport { IRTSeePlan } from '@rtsee/core';\nimport { RTSeePayments } from '@rtsee/messenger';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentsService {\n paymentsConfig: RTSeePayments | null = null;\n isInitialized: boolean = false;\n\n constructor(private http: HttpClient) {}\n\n init(configuration: RTSeePayments) {\n this.paymentsConfig = configuration;\n this.isInitialized = true;\n }\n\n createSession(\n options: IRTSeeCreatePaymentSessionRequest,\n ): Observable<IRTSeeCreatePaymentSessionResponse> {\n if (!this.paymentsConfig) {\n throw new Error('Payments not configured');\n }\n\n return this.http.post<IRTSeeCreatePaymentSessionResponse>(\n this.paymentsConfig.createSessionEndpoint,\n options,\n );\n }\n\n getSession(): Observable<IRTSeePlan> {\n if (!this.paymentsConfig) {\n throw new Error('Payments not configured');\n }\n\n if (!this.paymentsConfig.sessionId) {\n throw new Error('No SessionId provided');\n }\n\n return this.http\n .get<IRTSeePlan>(\n `${this.paymentsConfig.getSessionEndpoint}/?sessionId=${this.paymentsConfig.sessionId}`,\n )\n .pipe(\n tap((res) => {\n console.log('tap here', res);\n this.paymentsConfig?.setValidationInProgress(false);\n }),\n );\n }\n\n getProducts(): Observable<IRTSeePaymentProduct[]> {\n if (!this.paymentsConfig || !this.paymentsConfig.appId) {\n throw new Error('Payments Config not initialized!');\n }\n\n this.paymentsConfig.setProductsLoadInProgress(true);\n\n return this.http\n .get<IRTSeePaymentProductsListResponse>(\n this.paymentsConfig.productsEndpoint,\n )\n .pipe(\n map((res) => res.products),\n tap((res) => this.paymentsConfig?.setProducts(res)),\n );\n }\n\n unsubscribe(subscriptionId: string): Observable<IRTSeePlan> {\n if (!this.paymentsConfig || !this.paymentsConfig.appId) {\n throw new Error('Payments Config not initialized!');\n }\n\n return this.http.post<IRTSeePlan>(\n `${this.paymentsConfig?.unsubscribeEndpoint}`,\n {\n subscriptionId,\n },\n );\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PaymentsService } from '../services/payments.service';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { loadStripe, Stripe, StripeEmbeddedCheckout } from '@stripe/stripe-js';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { PaymentProductSnippetComponent } from '../payment-product-snippet/payment-product-snippet.component';\nimport { IRTSeePaymentPriceItem } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-payment-page',\n imports: [\n ReactiveFormsModule,\n ProgressSpinner,\n PaymentProductSnippetComponent,\n Button,\n ],\n templateUrl: './payment-page.component.html',\n})\nexport class PaymentPageComponent implements OnInit {\n stripe?: Stripe;\n planSelected: boolean = false;\n loadInProgress: boolean = false;\n\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('checkoutContainer')\n checkoutContainer!: ElementRef<HTMLDivElement>;\n constructor(private paymentsService: PaymentsService) {}\n\n async init(): Promise<void> {\n if (!this.paymentsService.paymentsConfig?.publicKey) {\n return;\n }\n\n this.stripe =\n (await loadStripe(this.paymentsService.paymentsConfig.publicKey)) ||\n undefined;\n this.getProducts();\n }\n\n getProducts(): void {\n this.paymentsService.getProducts().subscribe();\n }\n\n selectPlan(price: IRTSeePaymentPriceItem): void {\n const priceId: string = price.priceId;\n\n if (\n !this.messenger.payments ||\n !this.messenger.payments.createSessionEndpoint\n ) {\n console.log('No payments config.');\n return;\n }\n\n if (!this.messenger.myPeer.rtseeAppId) {\n console.log('No app id on peer.');\n return;\n }\n\n this.planSelected = true;\n this.loadInProgress = true;\n\n this.paymentsService\n .createSession({\n priceId: priceId,\n userId: this.messenger.myPeer.clientId,\n route: `/profile/${this.messenger.myPeer.clientId}`,\n applicationId: this.messenger.myPeer.rtseeAppId,\n })\n .subscribe((response) => {\n void this.initCheckout(response.clientSecret);\n });\n }\n\n async initCheckout(secret: string): Promise<void> {\n if (!this.stripe) {\n console.log('Stripe not yet initialized!');\n return;\n }\n const checkout: StripeEmbeddedCheckout =\n await this.stripe.initEmbeddedCheckout({\n clientSecret: secret,\n });\n\n if (!checkout) {\n return;\n }\n\n this.loadInProgress = false;\n\n checkout.mount(this.checkoutContainer.nativeElement);\n }\n\n ngOnInit() {\n if (!this.paymentsService.isInitialized && this.messenger.payments) {\n this.paymentsService.init(this.messenger.payments);\n }\n\n void this.init();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-payment-page rtsee-form-container\">\n @if (messenger.payments && !planSelected) {\n @if (messenger.payments.products) {\n <div class=\"rtsee-payment-page-products\">\n @for (product of messenger.payments.products ; track product.id) {\n <rtsee-payment-product-snippet [product]=\"product\"\n (priceSelected)=\"selectPlan($event)\"\n ></rtsee-payment-product-snippet>\n }\n </div>\n } @else {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n }\n @if (loadInProgress) {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n <div #checkoutContainer class=\"stripe-checkout-container\"></div>\n <div class=\"rtsee-payment-page-footer\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.CANCEL_LABEL]\"\n (click)=\"messenger.closePaymentPage()\"\n severity=\"warn\"\n ></p-button>\n </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PaymentsService } from '../services/payments.service';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { loadStripe, Stripe } from '@stripe/stripe-js';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { Button } from 'primeng/button';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-payment-validation-page',\n imports: [ReactiveFormsModule, ProgressSpinner, Button],\n templateUrl: './payment-validation-page.component.html',\n})\nexport class PaymentValidationPageComponent implements OnInit {\n stripe?: Stripe;\n loadInProgress: boolean = false;\n\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('checkoutContainer')\n checkoutContainer!: ElementRef<HTMLDivElement>;\n constructor(private paymentsService: PaymentsService) {}\n\n async init(): Promise<void> {\n if (!this.paymentsService.paymentsConfig?.publicKey) {\n return;\n }\n\n this.stripe =\n (await loadStripe(this.paymentsService.paymentsConfig.publicKey)) ||\n undefined;\n this.validatePayment();\n }\n\n validatePayment(): void {\n this.paymentsService.getSession().subscribe((res) => {\n this.messenger.closePaymentValidationPage();\n });\n }\n\n ngOnInit() {\n if (!this.paymentsService.isInitialized && this.messenger.payments) {\n this.paymentsService.init(this.messenger.payments);\n }\n\n void this.init();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-payment-page rtsee-form-container\">\n @if (messenger.payments?.validationInProgress) {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n <div class=\"rtsee-payment-page-footer\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.CANCEL_LABEL]\"\n (click)=\"messenger.closePaymentPage()\"\n severity=\"warn\"\n ></p-button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Card } from 'primeng/card';\nimport { Divider } from 'primeng/divider';\nimport { Button } from 'primeng/button';\nimport { IRTSeePlan, RTSeeTextLabelKeys } from '@rtsee/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { PaymentsService } from '../services/payments.service';\nimport dayjs from 'dayjs';\n\n@Component({\n selector: 'rtsee-manage-plan',\n imports: [Card, Divider, Button],\n templateUrl: './manage-plan.component.html',\n})\nexport class ManagePlanComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n plan!: IRTSeePlan;\n activeFromFormated: string = '';\n activeToFormated: string = '';\n\n constructor(private paymentsService: PaymentsService) {}\n\n onUnsubscribeClicked(): void {\n console.log(this.plan);\n }\n\n ngOnInit(): void {\n if (!this.messenger.myPeer || !this.messenger.myPeer.plan) {\n throw new Error('No Plans found.');\n }\n\n this.plan = this.messenger.myPeer.plan;\n this.activeFromFormated = dayjs(\n this.messenger.myPeer.plan.activeFrom,\n ).format('YYYY-MM-DD');\n this.activeToFormated = dayjs(this.messenger.myPeer.plan.activeTo).format(\n 'YYYY-MM-DD',\n );\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-manage-plan\">\n <h2>{{messenger.labels[RTSeeTextLabelKeys.MANAGE_PLAN]}}</h2>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.BACK_LABEL]\"\n severity=\"secondary\"\n (click)=\"messenger.closeManagePlanPage()\"\n ></p-button>\n @if (plan) {\n <p-card [header]=\"plan.productName\">\n <p>{{plan.productDescription}}</p>\n <p-divider></p-divider>\n <div class=\"rtsee-manage-plan-info\">\n <p>Active From: {{activeFromFormated}}</p>\n <p>Active To: {{activeToFormated}}</p>\n </div>\n <p-button [label]=\"'Unsubscribe'\"\n (click)=\"onUnsubscribeClicked()\"\n ></p-button>\n </p-card>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { MessengerHeaderComponent } from '../messenger-header/messenger-header.component';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { NgClass } from '@angular/common';\nimport { ChatsListComponent } from '../chats-list/chats-list.component';\nimport { ChatComponent } from '../chat/chat.component';\nimport { PreloaderComponent } from '../../../common/components/preloader/preloader.component';\nimport { ProfileComponent } from '../profile/profile.component';\nimport { ManageProfileComponent } from '../manage-profile/manage-profile.component';\nimport { PaymentPageComponent } from '../payment-page/payment-page.component';\nimport { PaymentValidationPageComponent } from '../payment-validation-page/payment-validation-page.component';\nimport { ManagePlanComponent } from '../manage-plan/manage-plan.component';\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n imports: [\n MessengerHeaderComponent,\n InfiniteScrollDirective,\n NgClass,\n ChatsListComponent,\n ChatComponent,\n PreloaderComponent,\n ProfileComponent,\n ManageProfileComponent,\n PaymentPageComponent,\n PaymentValidationPageComponent,\n ManagePlanComponent,\n ],\n standalone: true,\n})\nexport class MessengerComponent {\n @Input() messenger!: RTSeeMessenger;\n\n onScroll() {\n this.messenger.loadChats();\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-header-expanded': messenger.openedProfile || messenger.openedChatDetails,\n 'rtsee-messenger-folded': messenger.folded,\n 'rtsee-messenger-overlay-window': messenger.isOverlayPageOpened\n}\">\n @if (messenger.manageProfile) {\n <div class=\"rtsee-manage-profile\">\n <rtsee-manage-profile [manageProfile]=\"messenger.manageProfile\"\n [messenger]=\"messenger\"\n ></rtsee-manage-profile>\n </div>\n }\n\n @if (messenger.isPaymentPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-payment-page [messenger]=\"messenger\"></rtsee-payment-page>\n </div>\n }\n\n @if (messenger.isPaymentValidationPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-payment-validation-page [messenger]=\"messenger\"></rtsee-payment-validation-page>\n </div>\n }\n\n @if (messenger.isManagePlanPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-manage-plan [messenger]=\"messenger\"></rtsee-manage-plan>\n </div>\n }\n\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\"\n ></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n @if (messenger.openedChat) {\n <rtsee-chat [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n } @else if (!messenger.openedChat) {\n <rtsee-chats-list [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n } @else if (messenger.openedProfile) {\n <rtsee-profile></rtsee-profile>\n }\n @if (messenger.loadingChatsInProgress) {\n <rtsee-preloader [diameter]=\"50\" ></rtsee-preloader>\n }\n </div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-dashboard';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n imports: [WidgetDirective, NgClass],\n standalone: true,\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n timeInAgoFormat: string = '';\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n private cd: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n\n this.timeInAgoFormat = this.timeFormatService.toAgo(this.event.createdAt);\n\n setInterval(() => {\n this.timeInAgoFormat = this.timeFormatService.toAgo(this.event.createdAt);\n }, 20000);\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '
';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n @if (event.widget) {\n <ng-template widgetHost></ng-template>\n } @else if (!event.widget) {\n <div class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n @if (event.data) {\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n }\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeInAgoFormat }}</span>\n </div>\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-dashboard';\nimport { NgIf, SlicePipe } from '@angular/common';\nimport { EventThumbnailComponent } from '../event-thumbnail/event-thumbnail.component';\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n imports: [NgIf, EventThumbnailComponent, SlicePipe],\n standalone: true,\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n <div class=\"rtsee-events-dashboard-session-header\" *ngIf=\"session.info\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n <span *ngIf=\"session.info.deviceType === 'smartphone' && !session.info.botName\"\n class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'tablet' && !session.info.botName\"\n >tablet_mac</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'desktop' && !session.info.botName\"\n >computer</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.botName\"\n >smart_toy</span>\n </div>\n </div>\n <ul *ngIf=\"session.events && session.events.length\"\n class=\"rtsee-events-dashboard-session-events-list\"\n >\n @for (event of session.events | slice:0:5; track event.id) {\n <li class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n }\n </ul>\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\nimport {\n RTSeeEventsDashboard,\n RTSeeDashboardClient,\n} from '@rtsee/events-dashboard';\nimport { RtseeEventsDashboardSessionComponent } from '../rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n imports: [RtseeEventsDashboardSessionComponent],\n standalone: true,\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService,\n ) {}\n\n ngOnInit(): void {}\n\n openChat() {\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n @if (client.isConnected) {\n <div class=\"rtsee-dashboard-client-live-indicator\"></div>\n }\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n @for(session of client.sessions; track session.id) {\n <div class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-dashboard';\n\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\n\n@Component({\n selector: 'rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n imports: [RtseeEventsDashboardClientThumbnailComponent],\n standalone: true,\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n @for (client of eventsDashboard.clients; track client.id) {\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { CdkCopyToClipboard } from '@angular/cdk/clipboard';\nimport { IPresentationRoom } from '@rtsee/common';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { Message } from 'primeng/message';\nimport { Toast } from 'primeng/toast';\nimport { MessageService } from 'primeng/api';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-join-call',\n imports: [Button, CdkCopyToClipboard, Message, Toast],\n templateUrl: './join-call.component.html',\n providers: [MessageService],\n})\nexport class JoinCallComponent {\n recentlyCopied: boolean = false;\n\n @Input() presentation!: RTSeePresentation;\n @Input() room!: IPresentationRoom;\n constructor(private messageService: MessageService) {}\n\n copyClicked(): void {\n this.messageService.add({\n severity: 'success',\n summary: 'Link Copied!',\n detail: 'The link was copied to clipboard!',\n });\n this.recentlyCopied = true;\n setTimeout(() => {\n this.recentlyCopied = false;\n }, 2000);\n }\n\n protected readonly window = window;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-join-call\">\n <div class=\"rtsee-join-call-button\">\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.START_A_CALL_BUTTON]\"\n (click)=\"presentation.emitJoinRoomCallEvent()\"\n ></p-button>\n </div>\n <div class=\"rtsee-share-call-link\">\n <div class=\"rtsee-share-call-explain-section\">\n <div class=\"rtsee-share-call-explain-section-icon\">\n <span class=\"pi pi-link rtsee-link-icon\"></span>\n </div>\n <div class=\"rtsee-share-call-explain-section-text\">\n <span>Anyone can join your storytelling session using this link.</span>\n </div>\n </div>\n <div class=\"rtsee-share-call-link-section\">\n <p-toast position=\"bottom-center\" />\n <p-button [icon]=\"recentlyCopied ? 'pi pi-check' : 'pi pi-copy'\"\n severity=\"secondary\"\n class=\"rtsee-share-call-link-copy-btn\"\n [cdkCopyToClipboard]=\"window.location.origin + '?room_id=' + room.id\"\n (cdkCopyToClipboardCopied)=\"copyClicked()\"\n ></p-button>\n <p-message severity=\"info\"\n class=\"rtsee-share-call-link-text\"\n >{{ window.location.origin + '?room_id=' + room.id }}</p-message>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { NgClass } from '@angular/common';\nimport { Chip } from 'primeng/chip';\nimport { JoinCallComponent } from '../join-call/join-call.component';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-presentation-header',\n templateUrl: './presentation-header.component.html',\n imports: [Button, NgClass, Chip, JoinCallComponent],\n standalone: true,\n})\nexport class PresentationHeaderComponent {\n @Input() public presentation!: RTSeePresentation;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n\n @if (presentation.activeRoom && !presentation.activeStory) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeStory } from '@rtsee/presentation';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\n\n@Component({\n selector: 'rtsee-story-thumbnail',\n templateUrl: './story-thumbnail.component.html',\n imports: [RatingComponent],\n standalone: true,\n})\nexport class StoryThumbnailComponent implements OnInit {\n progressPercent: number = 0;\n protected readonly Math = Math;\n @Input() story!: RTSeeStory;\n\n ngOnInit(): void {\n if (this.story.preselectedSlideNumber) {\n this.progressPercent = Math.round(\n (this.story.preselectedSlideNumber / this.story.totalSlides) * 100,\n );\n }\n }\n}\n","<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} хв</span>\n </span>\n <span class=\"rtsee-story-thumbnail-label-container\">{{\"7\"}}+</span>\n }\n </div>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Input } from '@angular/core';\nimport { RTSeeStory, RTSeeStorySlide } from '@rtsee/presentation';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { Button } from 'primeng/button';\nimport { RTSeePresentationSettings } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-slide',\n templateUrl: './slide.component.html',\n imports: [NgStyle, WidgetDirective, Button, NgClass],\n standalone: true,\n})\nexport class SlideComponent implements AfterViewInit {\n hideRewindControls: boolean = true;\n lastScrollPosition: number = 0;\n scrollingDown: boolean = false;\n\n @Input() story!: RTSeeStory;\n @Input() slide!: RTSeeStorySlide;\n @Input() settings!: RTSeePresentationSettings;\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n slideRewindClicked(forward: boolean) {\n if (forward) {\n this.story.nextSlide();\n } else {\n this.story.previousSlide();\n }\n }\n\n ngAfterViewInit() {\n const parentSlideEl: HTMLElement | null =\n this.elementRef.nativeElement.closest('.story-player-slide-container');\n if (!parentSlideEl) {\n return;\n }\n\n this.story.onNewSlideRendered(this.slide.slideNumber, parentSlideEl);\n this.scrollingDown = !this.story.headerVisible;\n\n setTimeout(() => {\n this.hideRewindControls = false;\n }, 500);\n }\n\n onScroll(target: EventTarget | null): void {\n if (target && target instanceof HTMLElement) {\n this.handleScroll(\n target.scrollTop,\n target.scrollHeight,\n target.clientHeight,\n );\n }\n }\n\n private handleScroll(\n position: number,\n scrollHeight: number,\n clientHeight: number,\n ) {\n const BUFFER: number = 50;\n const isAtBottom: boolean =\n Math.abs(scrollHeight - position - clientHeight) < 10;\n\n if (position > this.lastScrollPosition + BUFFER) {\n if (!this.scrollingDown) {\n this.scrollingDown = true;\n console.log('started scrolling down');\n this.story.toggleHeader(false);\n }\n\n this.lastScrollPosition = position;\n } else if (position + BUFFER < this.lastScrollPosition) {\n if (this.scrollingDown) {\n this.scrollingDown = false;\n console.log('scrolled up');\n this.story.toggleHeader(true);\n }\n\n this.lastScrollPosition = position;\n } else if (isAtBottom) {\n this.lastScrollPosition = position;\n this.story.toggleHeader(true);\n }\n }\n}\n","<div class=\"rtsee-presentation-slide\" (scroll)=\"onScroll($event.target)\">\n @if (slide.widget) {\n <ng-template widgetHost></ng-template>\n }\n <div class=\"rtsee-presentation-slide-default\">\n @if (slide.imageUrl) {\n <div class=\"rtsee-presentation-slide-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + slide.imageUrl + ')'}\"\n >\n </div>\n }\n <div class=\"rtsee-presentation-slide-text\">\n <p [style.font-size]=\"settings.fontSize + 'rem'\">{{slide.text}}</p>\n </div>\n <div class=\"rtsee-presentation-slide-controls\"\n [ngClass]=\"{'rtsee-presentation-slide-controls-hidden': hideRewindControls}\"\n >\n @if (story.activeSlideNumber !== 1) {\n <p-button class=\"slide-navigation-btn navigation-prev\"\n label=\"Previous Page\"\n icon=\"pi pi-arrow-left\"\n [severity]=\"'secondary'\"\n [iconPos]=\"'left'\"\n (click)=\"slideRewindClicked(false)\"\n >\n </p-button>\n }\n @if (story.activeSlideNumber !== this.story.totalSlides) {\n <p-button class=\"slide-navigation-btn navigation-next\"\n label=\"Next Page\"\n icon=\"pi pi-arrow-right\"\n [iconPos]=\"'right'\"\n (click)=\"slideRewindClicked(true)\"\n >\n </p-button>\n }\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeStory } from '@rtsee/presentation';\nimport { NgClass } from '@angular/common';\nimport { SlideComponent } from '../slide/slide.component';\nimport Swiper from 'swiper';\nimport { EffectCards, Manipulation } from 'swiper/modules';\nimport { RTSeePresentationSettings } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-story-player',\n templateUrl: './story-player.component.html',\n imports: [NgClass, SlideComponent],\n standalone: true,\n})\nexport class StoryPlayerComponent implements OnInit, AfterViewInit {\n @Input() story!: RTSeeStory;\n @Input() settings!: RTSeePresentationSettings;\n @ViewChild('swiperContainer') swiperEl!: ElementRef<HTMLElement>;\n constructor() {\n Swiper.use([EffectCards, Manipulation]);\n }\n\n ngOnInit() {\n console.log('Story Player: Story = ', this.story);\n }\n\n ngAfterViewInit() {\n const swiper = new Swiper(this.swiperEl.nativeElement, {\n effect: 'cards',\n grabCursor: true,\n });\n\n this.story.initSwiper(swiper);\n }\n}\n","<div class=\"rtsee-story-player\">\n <div class=\"rtsee-story-player-slider swiper\" #swiperContainer>\n <div class=\"rtsee-story-player-slider-inner swiper-wrapper\">\n @for (slide of story.slides; track slide.id) {\n <div class=\"story-player-slide-container swiper-slide\"\n [ngClass]=\"{'story-player-slide-active': slide.isActive}\"\n >\n <rtsee-slide [slide]=\"slide\"\n [story]=\"story\"\n [settings]=\"settings\"\n ></rtsee-slide>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { OrderList } from 'primeng/orderlist';\nimport { RTSeeManageStorySlides } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-manage-slides',\n imports: [OrderList, Button, NgClass],\n templateUrl: './manage-slides.component.html',\n})\nexport class ManageSlidesComponent {\n @Input() manageSlides!: RTSeeManageStorySlides;\n}\n","<div class=\"rtsee-presentation-manage-slides\">\n <div class=\"rtsee-presentation-manage-slides-header\">\n <p-button (click)=\"manageSlides.selectNewSlide()\"\n label=\"Create A New Slide\"\n ></p-button>\n </div>\n <div class=\"rtsee-presentation-manage-slides-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageSlides.slides\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n scrollHeight=\"40rem\"\n controlsPosition=\"right\"\n (onReorder)=\"manageSlides.onReorder($event)\"\n [disabled]=\"manageSlides.loadInProgress\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-slides-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-slides-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-slides-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n class=\"rtsee-ordered-list-item-info-label\"\n >{{ option.slideNumber }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageSlides.selectSlide(option.slideNumber)\"\n ></p-button>\n <p-button label=\"Delete\"\n severity=\"warn\"\n class=\"rtsee-ordered-list-item-info-button\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStorySlide } from '@rtsee/presentation';\nimport { RTSeeImageUploaderComponent } from '../../../../../common/components/image-uploader/image-uploader.component';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { TypedReactiveForm } from '../../../../rtsee-auth/types/auth-form.type';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { Button } from 'primeng/button';\n\nexport type RTSeeSlideForm = {\n text: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-slide',\n imports: [\n RTSeeImageUploaderComponent,\n FormsModule,\n ReactiveFormsModule,\n FloatLabel,\n InputGroup,\n Message,\n Textarea,\n Button,\n ],\n templateUrl: './manage-slide.component.html',\n})\nexport class ManageSlideComponent implements OnInit {\n slideForm: FormGroup;\n\n @Input() manageSlide!: RTSeeManageStorySlide;\n constructor(private readonly formBuilder: FormBuilder) {\n this.slideForm = this.formBuilder.group<TypedReactiveForm<RTSeeSlideForm>>({\n text: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131000),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.textField.setValue(this.manageSlide.slide.text);\n }\n\n get textField(): FormControl<string> {\n return this.slideForm.get('text') as FormControl<string>;\n }\n\n submit() {\n if (this.slideForm.valid) {\n void this.manageSlide.save({\n text: this.textField.value,\n });\n } else {\n this.slideForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n}\n","<div class=\"rtsee-presentation-manage-story-slide\">\n <div class=\"rtsee-manage-story-slide-info rtsee-form-container\">\n <div class=\"rtsee-manage-story-image\">\n <rtsee-image-uploader [imageUploader]=\"manageSlide.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"slideForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"textField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"textField.invalid && textField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Text</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (textField.hasError('required') && textField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageSlide.cancel()\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { InputText } from \"primeng/inputtext\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-text\",\n standalone: true,\n imports: [FormsModule, InputText, InputGroup, FloatLabel, Message],\n templateUrl: \"./text-field.component.html\"\n})\nexport class TextFieldComponent {\n @Input() field!: RTSeeFormField<string>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input [id]=\"field.name\"\n class=\"rtsee-form-field\"\n pInputText\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n />\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Textarea } from \"primeng/textarea\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-textarea\",\n standalone: true,\n imports: [FormsModule, Textarea, InputGroup, FloatLabel, Message],\n templateUrl: \"./textarea-field.component.html\"\n})\nexport class TextareaFieldComponent {\n @Input() field!: RTSeeFormField<string>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [id]=\"field.name\"\n class=\"rtsee-form-field\"\n pTextarea\n rows=\"3\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></textarea>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Checkbox } from \"primeng/checkbox\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-checkbox\",\n standalone: true,\n imports: [FormsModule, Checkbox, Message],\n templateUrl: \"./checkbox-field.component.html\"\n})\nexport class CheckboxFieldComponent {\n @Input() field!: RTSeeFormField<boolean>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container flex items-center\">\n <p-checkbox [inputId]=\"field.name\"\n [binary]=\"true\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n ></p-checkbox>\n <label [for]=\"field.name\" class=\"ml-2\">{{ field.name }}</label>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButton } from \"primeng/radiobutton\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldRadioGroup } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-radio\",\n standalone: true,\n imports: [FormsModule, RadioButton, Message],\n templateUrl: \"./radio-field.component.html\"\n})\nexport class RadioFieldComponent {\n @Input() field!: RTSeeFormFieldRadioGroup;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <div class=\"rtsee-radio-group-label font-semibold\">{{ field.name }}</div>\n @for (option of field.radioOptions; track option.value) {\n <div class=\"flex items-center mt-2\">\n <p-radioButton [name]=\"field.name\"\n [value]=\"option.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [inputId]=\"field.name + '_' + option.value\"\n ></p-radioButton>\n <label [for]=\"field.name + '_' + option.value\" class=\"ml-2\">{{ option.label }}</label>\n </div>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-number\",\n standalone: true,\n imports: [FormsModule, InputNumber, InputGroup, FloatLabel, Message],\n templateUrl: \"./number-field.component.html\"\n})\nexport class NumberFieldComponent {\n @Input() field!: RTSeeFormField<number>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-inputNumber>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { RTSeeFormAutocomplete } from '@rtsee/utilities-ui';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rtsee-autocomplete',\n imports: [AutoCompleteModule, FloatLabel, InputGroup, FormsModule],\n templateUrl: './autocomplete.component.html',\n})\nexport class AutocompleteComponent {\n @Input() config!: RTSeeFormAutocomplete;\n}\n","<div class=\"rtsee-autocomplete rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-autoComplete [(ngModel)]=\"config.selectedSuggestions\"\n [inputId]=\"config.inputId\"\n [multiple]=\"true\"\n [fluid]=\"config.fluid\"\n [suggestions]=\"config.visibleSuggestions\"\n [optionLabel]=\"config.suggestionLabel\"\n (completeMethod)=\"config.onQueryChanged($event)\"\n (onSelect)=\"config.onSelect($event)\"\n ></p-autoComplete>\n <label [for]=\"config.inputId\">{{config.inputName}}</label>\n </p-floatlabel>\n </p-inputgroup>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\nimport { AutocompleteComponent } from \"../../../autocomplete/autocomplete.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldAutocomplete } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-autocomplete\",\n standalone: true,\n imports: [AutocompleteComponent, Message],\n templateUrl: \"./autocomplete-field.component.html\"\n})\nexport class AutocompleteFieldComponent implements OnInit {\n @Input() field!: RTSeeFormFieldAutocomplete;\n @Output() fieldChanged = new EventEmitter<void>();\n\n ngOnInit() {\n this.field.autocomplete.on(\"select\", () => {\n this.onModelChange();\n });\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <rtsee-autocomplete [config]=\"field.autocomplete\"></rtsee-autocomplete>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { Select } from 'primeng/select';\nimport { RecursiveSelect } from '@rtsee/utilities-ui';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'rtsee-recursive-select',\n imports: [Select, FormsModule],\n templateUrl: './recursive-select.component.html',\n})\nexport class RecursiveSelectComponent<E> implements OnInit {\n @Input() selectModel!: RecursiveSelect<E>;\n value: E | undefined = undefined;\n\n ngOnInit(): void {\n this.value = this.selectModel.value;\n }\n}\n","<div class=\"rtsee-recursive-select\">\n @for (item of selectModel.selectionHierarchy; track item.level) {\n <div class=\"rtsee-form-field-container\">\n <p-select [options]=\"item.children\"\n [(ngModel)]=\"item.selected\"\n [optionLabel]=\"'label'\"\n [placeholder]=\"selectModel.placeholderValue\"\n (onChange)=\"selectModel.onSelectionChanged(item.selected, item.level)\"\n class=\"rtsee-form-field\"\n />\n </div>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, DoCheck } from \"@angular/core\";\nimport { RecursiveSelectComponent } from \"../../../recursive-select/recursive-select.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldRecursiveSelect } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-recursive-select\",\n standalone: true,\n imports: [RecursiveSelectComponent, Message],\n templateUrl: \"./recursive-select-field.component.html\"\n})\nexport class RecursiveSelectFieldComponent implements DoCheck {\n @Input() field!: RTSeeFormFieldRecursiveSelect;\n @Output() fieldChanged = new EventEmitter<void>();\n\n private lastValue: any;\n\n ngDoCheck() {\n if (this.field.recursiveSelect.value !== this.lastValue) {\n this.lastValue = this.field.recursiveSelect.value;\n this.onModelChange();\n }\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <rtsee-recursive-select [selectModel]=\"field.recursiveSelect\"></rtsee-recursive-select>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\nimport { RTSeeImageUploaderComponent } from \"../../../image-uploader/image-uploader.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldImageUploader } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-image-uploader\",\n standalone: true,\n imports: [RTSeeImageUploaderComponent, Message],\n templateUrl: \"./image-uploader-field.component.html\"\n})\nexport class ImageUploaderFieldComponent implements OnInit {\n @Input() field!: RTSeeFormFieldImageUploader;\n @Output() fieldChanged = new EventEmitter<void>();\n\n ngOnInit() {\n this.field.imageUploader.on(\"completed\", () => {\n this.onModelChange();\n });\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <div class=\"rtsee-image-uploader-label font-semibold mb-2\">{{ field.name }}</div>\n <rtsee-image-uploader [imageUploader]=\"field.imageUploader\"></rtsee-image-uploader>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\nimport { TextFieldComponent } from \"./field-sub-types/text-field.component\";\nimport { TextareaFieldComponent } from \"./field-sub-types/textarea-field.component\";\nimport { CheckboxFieldComponent } from \"./field-sub-types/checkbox-field.component\";\nimport { RadioFieldComponent } from \"./field-sub-types/radio-field.component\";\nimport { NumberFieldComponent } from \"./field-sub-types/number-field.component\";\nimport { AutocompleteFieldComponent } from \"./field-sub-types/autocomplete-field.component\";\nimport { RecursiveSelectFieldComponent } from \"./field-sub-types/recursive-select-field.component\";\nimport { ImageUploaderFieldComponent } from \"./field-sub-types/image-uploader-field.component\";\n\n@Component({\n selector: \"rtsee-form-field\",\n standalone: true,\n imports: [\n TextFieldComponent,\n TextareaFieldComponent,\n CheckboxFieldComponent,\n RadioFieldComponent,\n NumberFieldComponent,\n AutocompleteFieldComponent,\n RecursiveSelectFieldComponent,\n ImageUploaderFieldComponent\n ],\n templateUrl: \"./form-field.component.html\"\n})\nexport class FormFieldComponent {\n @Input() field!: RTSeeFormField;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onFieldChanged() {\n this.fieldChanged.emit();\n }\n}\n","@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n}\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { RTSeeForm } from \"@rtsee/utilities-ui\";\nimport { FormFieldComponent } from \"../form-field/form-field.component\";\nimport { Button } from \"primeng/button\";\nimport { FormsModule } from \"@angular/forms\";\n\n@Component({\n selector: \"rtsee-form\",\n standalone: true,\n imports: [FormFieldComponent, Button, FormsModule],\n templateUrl: \"./form.component.html\"\n})\nexport class FormComponent {\n @Input() form!: RTSeeForm;\n @Output() formSubmit = new EventEmitter<RTSeeForm>();\n\n submit() {\n this.formSubmit.emit(this.form);\n }\n\n onFieldChanged() {\n this.form.evaluateIsValid();\n this.form.evaluateIsDirty();\n this.form.evaluateIsChanged();\n }\n}\n","<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n </div>\n }\n\n <div class=\"rtsee-form-submit-container mt-4\">\n <ng-content>\n <p-button type=\"submit\" label=\"Submit\" [disabled]=\"!form.isValid\"></p-button>\n </ng-content>\n </div>\n </form>\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { RTSeeManageStory } from \"@rtsee/presentation\";\nimport { Button } from \"primeng/button\";\nimport { ManageSlidesComponent } from \"./manage-slides/manage-slides.component\";\nimport { ManageSlideComponent } from \"./manage-slide/manage-slide.component\";\nimport { Divider } from \"primeng/divider\";\nimport { FormComponent } from \"../../../../common/components/forms/form/form.component\";\n\n@Component({\n selector: \"rtsee-manage-story\",\n standalone: true,\n imports: [\n Button,\n ManageSlidesComponent,\n ManageSlideComponent,\n Divider,\n FormComponent,\n ],\n templateUrl: \"./manage-story.component.html\",\n})\nexport class ManageStoryComponent implements OnInit {\n @Input() manageStory!: RTSeeManageStory;\n\n ngOnInit() {\n if (!this.manageStory.activeStoryForm) {\n this.manageStory.initForm();\n }\n\n if (!this.manageStory.activeStoryForm) {\n throw new Error(`Active story form should be selected`);\n }\n }\n\n submit() {\n if (!this.manageStory.activeStoryForm) {\n return;\n }\n this.manageStory.activeStoryForm.submit();\n }\n}\n","<div class=\"rtsee-manage-story\">\n @if (!manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-info rtsee-form-container\">\n @if (manageStory.activeStoryForm) {\n <rtsee-form [form]=\"manageStory.activeStoryForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageStory.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageStory.cancel()\"\n [disabled]=\"manageStory.saveInProgress\"\n />\n </rtsee-form>\n\n <p-divider />\n <div class=\"rtsee-story-slides-wrapper\">\n <rtsee-manage-slides [manageSlides]=\"manageStory.manageSlides\"></rtsee-manage-slides>\n </div>\n }\n </div>\n }\n @if (manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-slide-wrapper\">\n <rtsee-manage-slide [manageSlide]=\"manageStory.manageSlides.selectedSlide\"\n ></rtsee-manage-slide>\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStories } from '@rtsee/presentation';\nimport { ManageStoryComponent } from '../manage-story/manage-story.component';\nimport { Button } from 'primeng/button';\nimport { OrderList } from 'primeng/orderlist';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-manage-stories',\n imports: [ManageStoryComponent, Button, OrderList, NgClass],\n templateUrl: './manage-stories.component.html',\n})\nexport class ManageStoriesComponent implements OnInit {\n @Input() manageStories!: RTSeeManageStories;\n\n ngOnInit(): void {\n this.manageStories.init();\n }\n}\n","<div class=\"rtsee-manage-stories\">\n <div class=\"rtsee-manage-stories-header\">\n @if (!manageStories.selectedStory) {\n <p-button (click)=\"manageStories.selectNewStory()\"\n label=\"Create A New Story\"\n ></p-button>\n }\n </div>\n @if (manageStories.selectedStory) {\n <div class=\"rtsee-manage-story-container\">\n <rtsee-manage-story [manageStory]=\"manageStories.selectedStory\"\n ></rtsee-manage-story>\n </div>\n }\n @if (!manageStories.selectedStory) {\n <div class=\"rtsee-manage-stories-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageStories.stories\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n [scrollHeight]=\"'40rem'\"\n class=\"rtsee-ordered-list-inner\"\n (onReorder)=\"manageStories.onReorder()\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-stories-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-stories-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-stories-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n >{{ option.name }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n <p-button label=\"Delete\"\n [severity]=\"'warn'\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageStoryCategory } from '@rtsee/presentation';\n\nexport type RTSeeCategoryForm = {\n name: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-category',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n ],\n templateUrl: './manage-category.component.html',\n})\nexport class ManageCategoryComponent implements OnInit {\n categoryForm: FormGroup;\n\n @Input() manageCategory!: RTSeeManageStoryCategory;\n\n constructor(private formBuilder: FormBuilder) {\n this.categoryForm = this.formBuilder.group<\n TypedReactiveForm<RTSeeCategoryForm>\n >({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageCategory.category.name);\n this.descriptionField.setValue(\n this.manageCategory.category.description || '',\n );\n }\n\n submit() {\n if (this.categoryForm.valid) {\n void this.manageCategory.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n });\n } else {\n this.categoryForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.categoryForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.categoryForm.get('description') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-category\">\n <div class=\"rtsee-manage-category-info rtsee-form-container\">\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"categoryForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"sign-up-email\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageCategory.cancel()\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStoryCategories } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ManageCategoryComponent } from '../manage-category/manage-category.component';\n\n@Component({\n selector: 'rtsee-manage-categories',\n imports: [Button, ManageCategoryComponent],\n templateUrl: './manage-categories.component.html',\n})\nexport class ManageCategoriesComponent implements OnInit {\n @Input() manageCategories!: RTSeeManageStoryCategories;\n\n ngOnInit(): void {\n this.manageCategories.init();\n }\n}\n","<div class=\"rtsee-manage-stories-categories\">\n <div class=\"rtsee-manage-stories-categories-header\">\n @if (!manageCategories.selectedCategory) {\n <p-button (click)=\"manageCategories.selectNewCategory()\"\n label=\"Create A New Category\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-categories-body\">\n @if (manageCategories.selectedCategory) {\n <rtsee-manage-category [manageCategory]=\"manageCategories.selectedCategory\"\n ></rtsee-manage-category>\n }\n @if (!manageCategories.selectedCategory) {\n @for (category of manageCategories.categories; track category.id) {\n <p (click)=\"manageCategories.selectCategory(category.id)\">{{category.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStoryLabel } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { ColorPicker } from 'primeng/colorpicker';\n\nexport type RTSeeLabelForm = {\n name: string | null;\n description: string | null;\n symbol: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-label',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n ColorPicker,\n ],\n templateUrl: './manage-label.component.html',\n})\nexport class ManageLabelComponent implements OnInit {\n labelForm: FormGroup;\n\n @Input() manageLabel!: RTSeeManageStoryLabel;\n constructor(private formBuilder: FormBuilder) {\n this.labelForm = this.formBuilder.group<TypedReactiveForm<RTSeeLabelForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n symbol: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageLabel.label.name);\n this.descriptionField.setValue(this.manageLabel.label.description || '');\n }\n\n submit() {\n if (this.labelForm.valid) {\n void this.manageLabel.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n color: '',\n symbol: this.symbolField.value,\n });\n } else {\n this.labelForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.labelForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.labelForm.get('description') as FormControl<string>;\n }\n\n get symbolField(): FormControl<string> {\n return this.labelForm.get('symbol') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-label\">\n <div class=\"rtsee-manage-story-label-info rtsee-form-container\">\n <form class=\"rtsee-story-label-form rtsee-form\"\n [formGroup]=\"labelForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-symbol-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"symbolField\"\n [class.p-invalid]=\"symbolField.invalid && symbolField.touched\"\n />\n <label for=\"rtsee-story-label-symbol-field\">Symbol</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (symbolField.hasError('required') && symbolField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Symbol is required, pick a smile, dummy</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-colorPicker [(ngModel)]=\"manageLabel.label.color\"/>\n </div>\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageLabel.cancel()\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { RTSeeManageStoryLabels } from '@rtsee/presentation';\nimport { ManageLabelComponent } from '../manage-label/manage-label.component';\n\n@Component({\n selector: 'rtsee-manage-labels',\n imports: [Button, ManageLabelComponent],\n templateUrl: './manage-labels.component.html',\n})\nexport class ManageLabelsComponent implements OnInit {\n @Input() manageLabels!: RTSeeManageStoryLabels;\n\n ngOnInit(): void {\n this.manageLabels.init();\n }\n}\n","<div class=\"rtsee-manage-stories-labels\">\n <div class=\"rtsee-manage-stories-labels-header\">\n @if (!manageLabels.selectedLabel) {\n <p-button (click)=\"manageLabels.selectNewLabel()\"\n label=\"Create A New Label\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-labels-body\">\n @if (manageLabels.selectedLabel) {\n <rtsee-manage-label [manageLabel]=\"manageLabels.selectedLabel\"\n ></rtsee-manage-label>\n }\n @if (!manageLabels.selectedLabel) {\n @for (label of manageLabels.labels; track label.id) {\n <p (click)=\"manageLabels.selectLabel(label.id)\">{{label.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageStoryTopic } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ColorPicker } from 'primeng/colorpicker';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { AutocompleteComponent } from '../../../../common/components/autocomplete/autocomplete.component';\nimport { OrderList } from 'primeng/orderlist';\n\nexport type RTSeeTopicForm = {\n name: string | null;\n key: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-topic',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n AutocompleteComponent,\n OrderList,\n ],\n templateUrl: './manage-topic.component.html',\n})\nexport class ManageTopicComponent {\n topicForm: FormGroup;\n\n @Input() manageTopic!: RTSeeManageStoryTopic;\n constructor(private formBuilder: FormBuilder) {\n this.topicForm = this.formBuilder.group<TypedReactiveForm<RTSeeTopicForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n key: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(244),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageTopic.topic.name);\n this.descriptionField.setValue(this.manageTopic.topic.description || '');\n this.keyField.setValue(this.manageTopic.topic.key || '');\n }\n\n submit() {\n if (this.topicForm.valid) {\n void this.manageTopic.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n key: this.keyField.value,\n });\n } else {\n this.topicForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.topicForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.topicForm.get('description') as FormControl<string>;\n }\n\n get keyField(): FormControl<string> {\n return this.topicForm.get('key') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-topic\">\n <div class=\"rtsee-manage-story-topic-info rtsee-form-container\">\n <form class=\"rtsee-story-topic-form rtsee-form\"\n [formGroup]=\"topicForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-topic-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-topic-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-topic-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-topic-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-topic-key-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"keyField\"\n [class.p-invalid]=\"keyField.invalid && keyField.touched\"\n />\n <label for=\"rtsee-story-topic-key-field\">Key</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (keyField.hasError('required') && keyField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Key is required, pick a smile, dummy</p-message>\n }\n </div>\n <rtsee-autocomplete [config]=\"manageTopic.categoriesMultiselect\"></rtsee-autocomplete>\n <div class=\"rtsee-manage-story-topic-categories-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageTopic.topic.categories\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n scrollHeight=\"40rem\"\n controlsPosition=\"right\"\n (onReorder)=\"manageTopic.onReorder($event)\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <p>{{option.name}}</p>\n <p-button label=\"Delete\" (click)=\"manageTopic.removeCategory(option.id)\"></p-button>\n </ng-template>\n </p-orderList>\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTopic.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageTopic.cancel()\"\n [disabled]=\"manageTopic.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { ManageTopicComponent } from '../manage-topic/manage-topic.component';\nimport { RTSeeManageStoryTopics } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-manage-topics',\n imports: [Button, ManageTopicComponent],\n templateUrl: './manage-topics.component.html',\n})\nexport class ManageTopicsComponent implements OnInit {\n @Input() manageTopics!: RTSeeManageStoryTopics;\n\n ngOnInit(): void {\n this.manageTopics.init();\n }\n}\n","<div class=\"rtsee-manage-stories-topics\">\n <div class=\"rtsee-manage-stories-topics-header\">\n @if (!manageTopics.selectedTopic) {\n <p-button (click)=\"manageTopics.selectNewTopic()\"\n label=\"Create A New Topic\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-topics-body\">\n @if (manageTopics.selectedTopic) {\n <rtsee-manage-topic [manageTopic]=\"manageTopics.selectedTopic\"\n ></rtsee-manage-topic>\n }\n @if (!manageTopics.selectedTopic) {\n @for (topic of manageTopics.topics; track topic.id) {\n <p (click)=\"manageTopics.selectTopic(topic.id)\">{{topic.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ManageStoriesComponent } from '../manage-stories/manage-stories.component';\nimport { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs';\nimport { RTSeePresentationDashboard } from '@rtsee/presentation';\nimport { ManageCategoriesComponent } from '../manage-categories/manage-categories.component';\nimport { Button } from 'primeng/button';\nimport { Chip } from 'primeng/chip';\nimport { ManageLabelsComponent } from '../manage-labels/manage-labels.component';\nimport { ManageTopicsComponent } from '../manage-topics/manage-topics.component';\n\n@Component({\n selector: 'rtsee-presentations-dashboard',\n imports: [\n ManageStoriesComponent,\n Tabs,\n TabList,\n Tab,\n TabPanels,\n TabPanel,\n ManageCategoriesComponent,\n Button,\n Chip,\n ManageLabelsComponent,\n ManageTopicsComponent,\n ],\n templateUrl: './presentations-dashboard.component.html',\n})\nexport class PresentationsDashboardComponent {\n @Input() dashboard!: RTSeePresentationDashboard;\n}\n","<div class=\"rtsee-presentations-dashboard\">\n <div class=\"rtsee-presentations-dashboard-header\">\n <p-chip label=\"Presentation Dashboard\" />\n <p-button label=\"Close\"\n (click)=\"dashboard.onCloseDashboardClicked()\"\n class=\"rtsee-presentations-dashboard-close-btn\"\n ></p-button>\n </div>\n\n <div class=\"manage-stories-container\">\n <p-tabs lazy value=\"stories\">\n <p-tablist>\n <p-tab value=\"stories\">Stories</p-tab>\n <p-tab value=\"categories\">Categories</p-tab>\n <p-tab value=\"labels\">Labels</p-tab>\n <p-tab value=\"topics\">Topics</p-tab>\n </p-tablist>\n <p-tabpanels>\n <p-tabpanel value=\"stories\">\n <ng-template #content>\n <rtsee-manage-stories [manageStories]=\"dashboard.manageStories\"></rtsee-manage-stories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"categories\">\n <ng-template #content>\n <rtsee-manage-categories [manageCategories]=\"dashboard.manageCategories\"></rtsee-manage-categories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"labels\">\n <ng-template #content>\n <rtsee-manage-labels [manageLabels]=\"dashboard.manageLabels\"></rtsee-manage-labels>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"topics\">\n <ng-template #content>\n <rtsee-manage-topics [manageTopics]=\"dashboard.manageTopics\"></rtsee-manage-topics>\n </ng-template>\n </p-tabpanel>\n </p-tabpanels>\n </p-tabs>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Slider } from 'primeng/slider';\nimport { Fieldset } from 'primeng/fieldset';\nimport { FormsModule } from '@angular/forms';\nimport { Button } from 'primeng/button';\nimport {\n RTSeePresentationSettings,\n RTSeePresentation,\n} from '@rtsee/presentation';\nimport { Chip } from 'primeng/chip';\nimport { Message } from 'primeng/message';\nimport { Tag } from 'primeng/tag';\nimport { Listbox } from 'primeng/listbox';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport { JoinCallComponent } from '../join-call/join-call.component';\n\n@Component({\n selector: 'rtsee-presentation-settings',\n imports: [\n Slider,\n Fieldset,\n FormsModule,\n Button,\n Chip,\n Message,\n Tag,\n Listbox,\n JoinCallComponent,\n ],\n templateUrl: './presentation-settings.component.html',\n})\nexport class PresentationSettingsComponent {\n @Input() public settings!: RTSeePresentationSettings;\n @Input() public presentation!: RTSeePresentation;\n protected readonly COMMON_CONSTANTS = COMMON_CONSTANTS;\n protected readonly window = window;\n}\n","<div class=\"rtsee-presentation-settings\">\n <div class=\"rtsee-presentation-settings-header\">\n <p-chip label=\"Settings\" />\n <p-button label=\"Close\"\n (click)=\"settings.collapse()\"\n class=\"rtsee-presentations-dashboard-close-btn\"\n ></p-button>\n </div>\n\n <div class=\"rtsee-presentation-rooms\">\n <p-fieldset legend=\"Rooms\">\n <p-listbox [options]=\"presentation.rooms\"\n [(ngModel)]=\"presentation.selectedRoom\"\n (onChange)=\"presentation.setActiveRoom()\"\n class=\"rtsee-presentation-settings-rooms-list\"\n >\n <ng-template #item let-room>\n <div class=\"rtsee-presentation-settings-rooms-list-item\">\n\n <img [src]=\"room.imageUrl || COMMON_CONSTANTS.defaultProfileImgUrl\"\n class=\"rtsee-presentation-settings-rooms-list-item-image\" />\n <div>{{ room.name }}</div>\n </div>\n </ng-template>\n </p-listbox>\n @if (presentation.selectedRoom) {\n <rtsee-join-call [room]=\"presentation.selectedRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n }\n </p-fieldset>\n </div>\n <div class=\"rtsee-presentation-sound-settings\">\n <p-fieldset legend=\"Volume\" class=\"rtsee-presentation-sound-settings-fieldset\">\n <div class=\"rtsee-presentation-sound-settings-inner\">\n <div class=\"rtsee-presentation-sound-settings-inner-left\">\n <p-slider [(ngModel)]=\"settings.volume\"\n (onChange)=\"settings.setVolume(settings.volume)\"\n />\n </div>\n <div class=\"rtsee-presentation-sound-settings-inner-right\">\n <p-tag severity=\"info\"\n class=\"rtsee-presentation-sound-value-label\"\n [icon]=\"settings.volume ? 'pi pi-volume-up' : 'pi pi-volume-off'\"\n [value]=\"settings.volume.toString()\"\n [rounded]=\"true\" />\n </div>\n </div>\n </p-fieldset>\n </div>\n <div class=\"rtsee-presentation-font-size-settings\">\n <p-fieldset legend=\"Font Size\">\n <div class=\"rtsee-presentation-font-size-range\">\n <p-slider [(ngModel)]=\"settings.fontSizeOption\"\n (onChange)=\"settings.setFontSize(settings.fontSizeOption)\"\n [min]=\"1\"\n [max]=\"10\"\n />\n </div>\n <p-message severity=\"secondary\" class=\"rtsee-presentation-font-size-example\">\n <span [style.font-size]=\"settings.fontSize + 'rem'\">A long time ago in a galaxy far, far away...</span>\n </p-message>\n </p-fieldset>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ChatComponent } from '../../rtsee-messenger/chat/chat.component';\nimport { IRTSeeChat } from '@rtsee/common';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-entity-comments',\n imports: [ChatComponent],\n templateUrl: './rtsee-entity-comments.component.html',\n})\nexport class RtseeEntityCommentsComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: IRTSeeChat;\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-entity-comments\">\n @if (messenger && chat) {\n <rtsee-chat [messenger]=\"messenger\"\n [chatData]=\"chat\"\n [entity]=\"entity\"\n ></rtsee-chat>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\nimport { Chip } from 'primeng/chip';\n\n@Component({\n selector: 'rtsee-entity-tags',\n imports: [Chip],\n templateUrl: './rtsee-entity-tags.component.html',\n})\nexport class RtseeEntityTagsComponent {\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-entity-tags\">\n @if (entity && entity.tags?.length) {\n <div class=\"rtsee-entity-tags-list\">\n @for (tag of entity.tags; track tag.id) {\n <p-chip class=\"rtsee-entity-tag\">\n <span class=\"rtsee-entity-tag-right\"\n >{{tag.name}}</span>\n </p-chip>\n }\n </div>\n }\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { Textarea } from 'primeng/textarea';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\nimport { Message } from 'primeng/message';\nimport { IRatingConfigWithRate } from '@rtsee/common';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'rtsee-rate-input',\n templateUrl: './rate-input.component.html',\n imports: [ReactiveFormsModule, Textarea, RatingComponent, Message],\n standalone: true,\n})\nexport class RateInputComponent implements OnInit, OnDestroy {\n sendRateForm: FormGroup = new FormGroup({\n comment: new FormControl(''),\n });\n showMissingRateError: boolean = false;\n\n private _config!: IRatingConfigWithRate;\n private commentSubscription?: Subscription;\n\n @Input()\n set config(value: IRatingConfigWithRate) {\n this._config = value;\n this.updateCommentControl();\n }\n\n get config(): IRatingConfigWithRate {\n return this._config;\n }\n\n ngOnInit(): void {\n this.updateCommentControl();\n }\n\n ngOnDestroy(): void {\n this.commentSubscription?.unsubscribe();\n }\n\n private updateCommentControl(): void {\n this.commentSubscription?.unsubscribe();\n if (this._config && this._config.rate) {\n this.sendRateForm\n .get('comment')\n ?.setValue(this._config.rate.text || '', { emitEvent: false });\n\n this.commentSubscription = this.sendRateForm\n .get('comment')\n ?.valueChanges.subscribe((value) => {\n if (this._config.rate) {\n this._config.rate.text = value || '';\n }\n });\n }\n }\n}\n","<div class=\"rtsee-rate-input\">\n <div class=\"rtsee-rate-input-header\">\n <h3 class=\"rtsee-rate-input-name\">{{ config.name }}</h3>\n @if (config.description) {\n <p class=\"rtsee-rate-input-description\">{{ config.description }}</p>\n }\n </div>\n <div class=\"rtsee-rate-form-container\">\n <form [formGroup]=\"sendRateForm\" class=\"rtsee-rate-form\">\n <textarea\n [invalid]=\"false\"\n [autoResize]=\"true\"\n formControlName=\"comment\"\n pTextarea\n placeholder=\"Your comment here...\"\n class=\"rtsee-rate-comment-field\"\n rows=\"1\"\n cols=\"30\"\n ></textarea>\n </form>\n </div>\n <div class=\"rtsee-rate-select-container\">\n <rtsee-rating [config]=\"config\"></rtsee-rating>\n @if (!config.rate?.value && showMissingRateError) {\n <p-message severity=\"error\">Please add your rate!</p-message>\n }\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { Button } from 'primeng/button';\nimport { IRTSeeRatesGroup } from '@rtsee/common';\nimport { RTSeeRater } from '@rtsee/utilities-ui';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\n\n@Component({\n selector: 'rtsee-rate-item',\n imports: [RatingComponent, DatePipe, Button],\n templateUrl: './rate-item.component.html',\n})\nexport class RateItemComponent {\n @Input() group!: IRTSeeRatesGroup;\n @Input() rater!: RTSeeRater;\n @Input() showActions: boolean = false;\n\n @Output() edit = new EventEmitter<void>();\n @Output() delete = new EventEmitter<void>();\n\n onEdit(event: Event): void {\n event.stopPropagation();\n this.edit.emit();\n }\n\n onDelete(event: Event): void {\n event.stopPropagation();\n this.delete.emit();\n }\n\n getRatingConfigName(configId: string): string {\n if (!this.rater) {\n return '';\n }\n const config = this.rater.ratingConfigurations.find(\n (c) => c.id === configId,\n );\n return config ? config.name : '';\n }\n}\n","<div class=\"rtsee-rates-group-item\">\n <div class=\"rtsee-rates-group-header\">\n <div class=\"rtsee-rates-group-user-info\">\n @if (group.peer?.imageUrl) {\n <img\n class=\"rtsee-rates-group-avatar\"\n [src]=\"group.peer.imageUrl\"\n alt=\"User avatar\"\n />\n } @else {\n <div class=\"rtsee-rates-group-avatar-fallback\">\n {{ (group.peer?.name || \"?\").substring(0, 1) }}\n </div>\n }\n <span class=\"rtsee-rates-group-peer-name\">{{\n group.peer?.name || group.peerId\n }}</span>\n </div>\n\n <div class=\"rtsee-rates-group-right-header\">\n <span class=\"rtsee-rates-group-date\">{{\n group.createdAt | date: \"short\"\n }}</span>\n\n @if (showActions) {\n <div class=\"rtsee-rates-group-actions\">\n <p-button\n (click)=\"onEdit($event)\"\n [severity]=\"'secondary'\"\n [text]=\"true\"\n class=\"rtsee-rates-group-btn-edit\"\n >\n <span class=\"pi pi-pencil\"></span>\n </p-button>\n <p-button\n (click)=\"onDelete($event)\"\n [severity]=\"'danger'\"\n [text]=\"true\"\n class=\"rtsee-rates-group-btn-delete\"\n >\n <span class=\"pi pi-trash\"></span>\n </p-button>\n </div>\n }\n </div>\n </div>\n <div class=\"rtsee-rates-group-body\">\n @for (rate of group.rates; track rate.id) {\n <div class=\"rtsee-rates-group-rate-item-container\">\n <div class=\"rtsee-rates-group-rate-item\">\n <span class=\"rtsee-rates-group-rate-config-name\">{{\n getRatingConfigName(rate.configurationId)\n }}</span>\n <rtsee-rating [rate]=\"rate\"></rtsee-rating>\n </div>\n @if (rate.text) {\n <p class=\"rtsee-rates-group-rate-comment\">\"{{ rate.text }}\"</p>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { IRTSeeRate } from '@rtsee/common';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { RateInputComponent } from '../rate-input/rate-input.component';\nimport { RateItemComponent } from '../rate-item/rate-item.component';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-rater',\n imports: [Button, RateInputComponent, RateItemComponent, NgClass],\n templateUrl: './rater.component.html',\n})\nexport class RaterComponent implements OnInit {\n @Input() entity!: RTSeeEntity;\n @Input() rater!: RTSeeRater;\n\n isEditing: boolean = false;\n\n ngOnInit(): void {\n this.getRatingConfigurations()\n .then(() => {\n console.log('Getting rating configurations...');\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n async sendRate(): Promise<void> {\n const rates: IRTSeeRate[] = this.rater.configsWithRates\n .map((config) => config.rate)\n .filter((r): r is IRTSeeRate => !!r);\n if (this.rater.userRateGroup) {\n await this.rater.editRateGroup({\n ...this.rater.userRateGroup,\n rates,\n });\n } else {\n await this.rater.createRateGroup({\n entityId: this.rater.entityId,\n peerId: this.rater.peer.clientId,\n rates,\n applicationId: this.rater.applicationId,\n createdAt: new Date(),\n peer: this.rater.peer,\n });\n }\n this.isEditing = false;\n }\n\n async deleteRate(): Promise<void> {\n if (this.rater.userRateGroup) {\n await this.rater.deleteRateGroup(this.rater.userRateGroup.id);\n }\n }\n\n startEdit(): void {\n this.isEditing = true;\n }\n\n private async getRatingConfigurations(): Promise<IRTSeeRate[]> {\n if (!this.rater || !this.entity) {\n console.log('No rater or entity found.');\n return [];\n }\n\n const rates: IRTSeeRate[] = await this.rater.getRates();\n console.log('Rates found.', rates);\n\n return rates;\n }\n}\n","<div class=\"rtsee-rater\" [ngClass]=\"{'rtsee-rater-view-mode': rater.userRateGroup && !isEditing}\">\n @if (rater.userRateGroup && !isEditing) {\n <rtsee-rate-item\n [group]=\"rater.userRateGroup\"\n [rater]=\"rater\"\n [showActions]=\"true\"\n (edit)=\"startEdit()\"\n (delete)=\"deleteRate()\"\n ></rtsee-rate-item>\n } @else {\n <div class=\"rtsee-rater-user-header\">\n @if (rater.peer?.imageUrl) {\n <img\n class=\"rtsee-rater-avatar\"\n [src]=\"rater.peer?.imageUrl\"\n alt=\"User avatar\"\n />\n } @else {\n <div class=\"rtsee-rater-avatar-fallback\">\n {{ (rater.peer?.name || \"?\").substring(0, 1) }}\n </div>\n }\n <div class=\"rtsee-rater-user-info\">\n <span class=\"rtsee-rater-user-name\">{{\n rater.peer?.name || \"Anonymous\"\n }}</span>\n <span class=\"rtsee-rater-user-status\">Rating publicly</span>\n </div>\n </div>\n <hr class=\"rtsee-rater-divider\" />\n @for (config of rater.configsWithRates; track config.id) {\n <rtsee-rate-input [config]=\"config\"></rtsee-rate-input>\n }\n <div class=\"rtsee-rater-actions\">\n @if (rater.userRateGroup) {\n <p-button\n (click)=\"sendRate()\"\n [severity]=\"'success'\"\n [label]=\"'Update'\"\n type=\"submit\"\n class=\"rtsee-rater-btn-update rts-action-button\"\n >\n <span class=\"pi pi-check\"></span>\n </p-button>\n <p-button\n (click)=\"deleteRate()\"\n [severity]=\"'danger'\"\n [label]=\"'Delete'\"\n class=\"rtsee-rater-btn-delete rts-action-button\"\n >\n <span class=\"pi pi-trash\"></span>\n </p-button>\n } @else {\n <p-button\n (click)=\"sendRate()\"\n [severity]=\"'primary'\"\n [label]=\"'Send'\"\n type=\"submit\"\n class=\"rtsee-rater-btn-send rts-action-button\"\n >\n <span class=\"pi pi-send\"></span>\n </p-button>\n }\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { RateItemComponent } from '../rate-item/rate-item.component';\n\n@Component({\n selector: 'rtsee-rates-list',\n imports: [InfiniteScrollDirective, RateItemComponent],\n templateUrl: './rates-list.component.html',\n})\nexport class RatesListComponent implements OnInit {\n @Input() rater!: RTSeeRater;\n @Input() entity!: RTSeeEntity;\n\n ngOnInit(): void {\n if (this.rater) {\n this.rater\n .loadOtherUsersRateGroups(true)\n .then(() => {\n console.log('Other users rate groups loaded.');\n })\n .catch((err) => {\n console.error(err);\n });\n }\n }\n\n onScroll(): void {\n if (this.rater) {\n this.rater\n .loadOtherUsersRateGroups()\n .then(() => {\n console.log('More other users rate groups loaded.');\n })\n .catch((err) => {\n console.error(err);\n });\n }\n }\n}\n","<div\n class=\"rtsee-rates-list\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n>\n @for (group of rater.otherUsersRateGroups; track group.id) {\n <rtsee-rate-item\n [group]=\"group\"\n [rater]=\"rater\"\n [showActions]=\"false\"\n ></rtsee-rate-item>\n }\n @if (rater.loadingRatesGroups) {\n <div class=\"rtsee-rates-list-loading\">Loading more...</div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RaterComponent } from '../rater/rater.component';\nimport { RatesListComponent } from '../rates-list/rates-list.component';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-rating-section',\n imports: [RaterComponent, RatesListComponent],\n templateUrl: './rating-section.component.html',\n})\nexport class RatingSectionComponent {\n @Input() rater!: RTSeeRater;\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-rating-section\">\n <rtsee-rater [rater]=\"rater\"\n [entity]=\"entity\"\n ></rtsee-rater>\n <rtsee-rates-list [rater]=\"rater\"\n [entity]=\"entity\"\n ></rtsee-rates-list>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RtseeEntityCommentsComponent } from '../rtsee-entity-comments/rtsee-entity-comments.component';\nimport { RtseeEntityTagsComponent } from '../rtsee-entity-tags/rtsee-entity-tags.component';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RatingSectionComponent } from '../../rtsee-rates/rating-section/rating-section.component';\n\n@Component({\n selector: 'rtsee-entity-preview',\n imports: [\n RtseeEntityCommentsComponent,\n RtseeEntityTagsComponent,\n RatingSectionComponent,\n ],\n templateUrl: './rtsee-entity-preview.component.html',\n})\nexport class RtseeEntityPreviewComponent implements OnInit {\n rater: RTSeeRater | null = null;\n\n @Input() entity!: RTSeeEntity;\n @Input() messenger!: RTSeeMessenger;\n\n showRating: boolean = true;\n\n ngOnInit() {\n void this.entity.reload();\n this.rater = new RTSeeRater({\n entityId: this.entity.id,\n entityConfigurationId: this.entity.configurationId,\n ...this.entity.getHandlerCommonOptions(),\n });\n }\n}\n","<div class=\"rtsee-entity-preview\">\n <div class=\"rtsee-entity-preview-tags\">\n <rtsee-entity-tags [entity]=\"entity\"></rtsee-entity-tags>\n </div>\n\n @if (showRating && rater) {\n <rtsee-rating-section [entity]=\"entity\"\n [rater]=\"rater\"\n ></rtsee-rating-section>\n } @else if (!showRating && entity.comments && messenger) {\n <div class=\"rtsee-entity-preview-comments\">\n <rtsee-entity-comments [messenger]=\"messenger\"\n [chat]=\"entity.comments\"\n [entity]=\"entity\"\n ></rtsee-entity-comments>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Chip } from 'primeng/chip';\nimport { Tag } from 'primeng/tag';\nimport { RTSeePresentation, RTSeeStory } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ChatComponent } from '../../rtsee-messenger/chat/chat.component';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RtseeEntityPreviewComponent } from '../../rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component';\n\n@Component({\n selector: 'rtsee-story-details',\n imports: [Chip, Tag, Button, ChatComponent, RtseeEntityPreviewComponent],\n templateUrl: './story-details.component.html',\n})\nexport class StoryDetailsComponent {\n @Input() story!: RTSeeStory;\n @Input() presentation!: RTSeePresentation;\n @Input() messenger?: RTSeeMessenger;\n\n getStarArray(rating: number | null): string[] {\n const stars: string[] = [];\n const val = rating || 0;\n for (let i = 1; i <= 5; i++) {\n if (val >= i) {\n stars.push('full');\n } else if (val + 0.5 >= i) {\n stars.push('half');\n } else {\n stars.push('empty');\n }\n }\n return stars;\n }\n}\n","<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n ★\n } @else if (star === \"half\") {\n ★\n } @else {\n ☆\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { PresentationHeaderComponent } from '../presentation-header/presentation-header.component';\nimport { StoryThumbnailComponent } from '../story-thumbnail/story-thumbnail.component';\nimport { StoryPlayerComponent } from '../story-player/story-player.component';\nimport { PreloaderComponent } from '../../../common/components/preloader/preloader.component';\nimport { PresentationsDashboardComponent } from '../manage/presentations-dashboard/presentations-dashboard.component';\nimport { PresentationSettingsComponent } from '../presentation-settings/presentation-settings.component';\nimport { StoryDetailsComponent } from '../story-details/story-details.component';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-presentation',\n templateUrl: './presentation.component.html',\n imports: [\n PresentationHeaderComponent,\n StoryThumbnailComponent,\n StoryPlayerComponent,\n PreloaderComponent,\n PreloaderComponent,\n PresentationsDashboardComponent,\n PresentationSettingsComponent,\n StoryDetailsComponent,\n ],\n standalone: true,\n})\nexport class PresentationComponent {\n @Input() presentation!: RTSeePresentation;\n @Input() messenger?: RTSeeMessenger;\n constructor() {}\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id, story.preselectedSlideNumber || undefined)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n INavigationConfig,\n IRouteConfig,\n RTSee,\n RTSeeRoutesList,\n} from '@rtsee/factory';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgClass } from '@angular/common';\nimport { Avatar } from 'primeng/avatar';\nimport { Image } from 'primeng/image';\nimport { Divider } from 'primeng/divider';\nimport { Tooltip } from 'primeng/tooltip';\nimport { RTSeeAuthService } from '../../rtsee-auth/services/auth.service';\nimport { hasPermission, IPeer, RTSeePeerPermissions } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-nav',\n templateUrl: './rtsee-nav.component.html',\n imports: [\n RouterLink,\n RouterLinkActive,\n NgClass,\n Avatar,\n Image,\n Divider,\n Tooltip,\n ],\n standalone: true,\n})\nexport class RtseeNavComponent implements OnInit {\n @Input() public config!: INavigationConfig<IRouteConfig>;\n @Input() rtsee!: RTSee;\n\n profileLink: string = '';\n queryParams: { [key: string]: string } = {};\n\n constructor(private authService: RTSeeAuthService) {}\n\n ngOnInit(): void {\n this.populateProfileLinkTillSuccess();\n }\n\n populateProfileLinkTillSuccess(): void {\n const success: boolean = this.populateProfileLink();\n\n if (!success) {\n setTimeout(() => {\n this.populateProfileLinkTillSuccess();\n }, 1000);\n }\n }\n\n populateProfileLink(): boolean {\n const peer: IPeer | null = this.rtsee.socketConnection?.myPeer || null;\n\n if (!peer) {\n console.log('RTSeeContainer: user peer not found');\n return false;\n }\n\n const profileRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.PROFILE,\n ) || null;\n\n const dashboardRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.EVENTS_DASHBOARD,\n ) || null;\n\n const messengerRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.MESSENGER,\n ) || null;\n\n if (dashboardRoute) {\n dashboardRoute.isEnabled = hasPermission(\n peer,\n RTSeePeerPermissions.ACCESS_EVENTS_DASHBOARD,\n );\n }\n\n if (profileRoute && profileRoute.link) {\n this.profileLink = `${profileRoute.link}/${peer.clientId}`;\n return true;\n }\n\n if (messengerRoute && messengerRoute.link) {\n this.profileLink = messengerRoute.link;\n this.queryParams = { userId: peer.clientId };\n return true;\n }\n\n return false;\n }\n}\n","<div class=\"rtsee-nav\">\n @if (config.siteLogo) {\n <div class=\"rtsee-site-logo\">\n <p-image [src]=\"config.siteLogo.src\" class=\"rtsee-site-logo-image\"></p-image>\n <p-divider class=\"rtsee-site-logo-divider\" />\n </div>\n }\n <div class=\"rtsee-nav-bar\">\n @for (route of config.routes; track route.name) {\n <a [routerLink]=\"route.link\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [ngClass]=\"{'rtsee-nav-item-hidden': !route.isEnabled || !route.iconClassName}\"\n [routerLinkActiveOptions]=\"{ exact: route.exactActiveLinkMatcher || false }\"\n class=\"rtsee-nav-item\"\n [pTooltip]=\"route.name\"\n >\n <span [ngClass]=\"route.iconClassName\"\n class=\"rtsee-nav-item-icon\" >\n </span>\n </a>\n }\n <p-avatar [image]=\"rtsee.socketConnection?.myPeer?.imageUrl\"\n class=\"rtsee-nav-item rtsee-nav-image rtsee-nav-profile\"\n [routerLink]=\"profileLink\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [queryParams]=\"queryParams\"\n ></p-avatar>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSee, INavigationConfig, IRouteConfig } from '@rtsee/factory';\nimport { NgClass } from '@angular/common';\nimport { RTSeeConferenceComponent } from '../rtsee/rtsee-conference.component';\nimport { MessengerComponent } from '../rtsee-messenger/messenger/messenger.component';\nimport { RtseeEventsDashboardComponent } from '../rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { PresentationComponent } from '../rtsee-presentation/presentation/presentation.component';\nimport { RtseeNavComponent } from './rtsee-nav/rtsee-nav.component';\nimport { RTSeeAuthService } from '../rtsee-auth/services/auth.service';\nimport { RTSeeAuth } from '@rtsee/auth';\nimport { filter, Subscription } from 'rxjs';\nimport { Event, NavigationEnd, Router } from '@angular/router';\n\n@Component({\n selector: 'rtsee-container',\n templateUrl: './rtsee-container.component.html',\n imports: [\n NgClass,\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n PresentationComponent,\n RtseeNavComponent,\n ],\n standalone: true,\n})\nexport class RTSeeContainerComponent implements OnInit {\n isSidenavExpanded: boolean = true;\n isSidenavContent: boolean = false;\n isSidenavFullScreen: boolean = false;\n\n private routeSubscription!: Subscription;\n\n @Input() rtsee!: RTSee;\n @Input() public navigationConfig!: INavigationConfig<IRouteConfig>;\n @Input() auth!: RTSeeAuth<any>;\n\n constructor(\n private authService: RTSeeAuthService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.authService.init(this.auth);\n this.routeSubscription = this.router.events\n .pipe(\n // Filter for the NavigationEnd event to know when navigation is complete\n filter(\n (event: Event): event is NavigationEnd =>\n event instanceof NavigationEnd,\n ),\n )\n .subscribe((event: NavigationEnd) => {\n this.defineSideNavState(event.url);\n });\n }\n\n onSidenavToggleClicked() {\n this.isSidenavExpanded = !this.isSidenavExpanded;\n }\n\n defineSideNavState(url: string): void {\n const isBase: boolean = url === '/' || url.startsWith('/?');\n const routeUrlSplit: string[] = url.split('/');\n const rootRoutePath: string | null = isBase ? '' : routeUrlSplit[1] || null;\n if (!rootRoutePath && !isBase) {\n return;\n }\n const rtseeRoute: IRouteConfig | null =\n this.navigationConfig.routes.find((rn) => rn.link === rootRoutePath) ||\n null;\n\n if (!rtseeRoute) {\n return;\n }\n\n this.isSidenavContent = rtseeRoute.fullContent || false;\n this.isSidenavFullScreen = rtseeRoute.fullScreen || false;\n }\n}\n","<div class=\"rtsee-shell\"\n [ngClass]=\"{\n 'rtsee-shell-conference-mode': rtsee.conference && rtsee.conference.isInActiveCall,\n 'rtsee-shell-messenger-active': rtsee.messenger && rtsee.activeTab === 'messenger',\n 'rtsee-shell-dashboard-active': rtsee.eventsDashboard && rtsee.activeTab === 'events-dashboard',\n 'rtsee-shell-presentation-active': rtsee.presentation && rtsee.activeTab === 'presentation',\n 'rtsee-shell-side-nav-expanded': isSidenavExpanded,\n 'rtsee-shell-side-nav-is-content': isSidenavContent,\n 'rtsee-shell-side-nav-full-screen': isSidenavFullScreen\n }\"\n>\n <div class=\"rtsee-nav-block\">\n <rtsee-nav [config]=\"navigationConfig\" [rtsee]=\"rtsee\"></rtsee-nav>\n </div>\n\n <div class=\"rtsee-shell-panel\">\n <div class=\"rtsee-shell-panel-inner\">\n @if (rtsee.conference && rtsee.conference.isInActiveCall) {\n <div class=\"rtsee-conference-container\">\n <rtsee-conference [rtSee]=\"rtsee.conference\"\n ></rtsee-conference>\n </div>\n }\n\n @if (rtsee.messenger) {\n <div class=\"rtsee-messenger-container\">\n <rtsee-messenger [messenger]=\"rtsee.messenger\"\n ></rtsee-messenger>\n </div>\n }\n\n @if (rtsee.eventsDashboard && rtsee.eventsDashboard.isReady) {\n <div class=\"rtsee-events-dashboard-container\">\n <rtsee-events-dashboard [eventsDashboard]=\"rtsee.eventsDashboard\"\n ></rtsee-events-dashboard>\n </div>\n }\n\n @if (rtsee.presentation && rtsee.presentation.isActive) {\n <div class=\"rtsee-presentation-container\">\n <rtsee-presentation [presentation]=\"rtsee.presentation\"\n [messenger]=\"rtsee.messenger\"\n ></rtsee-presentation>\n </div>\n }\n </div>\n </div>\n\n <div class=\"rtsee-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { PanelMenu } from 'primeng/panelmenu';\nimport { RTSeeManageTags, RTSeeTag } from '@rtsee/utilities-ui';\n\nexport interface IAccordionItem {\n label: string;\n icon?: string;\n command?: () => void;\n items?: IAccordionItem[];\n url?: string;\n isSelected: boolean;\n}\n\n@Component({\n selector: 'rtsee-tags-accordion',\n imports: [PanelMenu],\n templateUrl: './rtsee-tags-accordion-menu.component.html',\n})\nexport class RtseeTagsAccordionMenuComponent implements OnInit {\n items: IAccordionItem[] = [];\n onTagClicked: OutputEmitterRef<RTSeeTag> = output<RTSeeTag>();\n\n @Input() manageTags!: RTSeeManageTags;\n\n ngOnInit(): void {\n this.manageTags\n .loadTags()\n .then(() => {\n this.items = this.tagsToItems(this.manageTags.tags);\n console.log(this.items);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private tagsToItems(tags: RTSeeTag[]): IAccordionItem[] {\n return tags.map((t) => {\n return {\n label: t.name,\n icon: t.iconClassName || undefined,\n items: t.children ? this.tagsToItems(t.children) : undefined,\n isSelected: false,\n command: (): void => {\n this.onTagClicked.emit(t);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-tags-accordion\">\n <p-panel-menu [model]=\"items\"/>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { IRTSeeTag } from '@rtsee/common';\nimport {\n RTSeeManageTags,\n IRecursiveSelectOptions,\n RecursiveSelect,\n} from '@rtsee/utilities-ui';\nimport { RecursiveSelectComponent } from '../../../common/components/recursive-select/recursive-select.component';\nimport { Divider } from 'primeng/divider';\n\nexport type RTSeeTagForm = {\n name: string | null;\n description: string | null;\n iconClass: string | null;\n value: string | null;\n};\n\n@Component({\n selector: 'rtsee-rtsee-tag-manage',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n RecursiveSelectComponent,\n Divider,\n ],\n templateUrl: './rtsee-tag-manage.component.html',\n})\nexport class RtseeTagManageComponent implements OnInit {\n tagForm: FormGroup;\n\n tagsRecursiveSelect: RecursiveSelect<IRTSeeTag> | null = null;\n\n @Input() manageTags!: RTSeeManageTags;\n constructor(private formBuilder: FormBuilder) {\n this.tagForm = this.getTagForm();\n }\n\n ngOnInit() {\n if (!this.manageTags.activeTag) {\n this.manageTags.setBlankActiveTag();\n }\n\n if (!this.manageTags.activeTag) {\n throw new Error(`Active tag should be selected`);\n }\n\n this.presetFields(this.manageTags.activeTag);\n }\n\n private async presetParent(): Promise<void> {\n console.log('presetParent', this.manageTags.activeTag);\n if (!this.manageTags.activeTag) {\n return;\n }\n\n const selectOptions: IRecursiveSelectOptions<IRTSeeTag> = {\n items: this.manageTags.tags,\n placeholderValue: 'Select A tag',\n getChildren: (tag: IRTSeeTag) => {\n return tag.children || [];\n },\n getLabel: (tag: IRTSeeTag): string => {\n return tag.name;\n },\n getRemoteParent: (tag: IRTSeeTag): Promise<IRTSeeTag | null> => {\n if (!tag.parentId) {\n return Promise.resolve(null);\n }\n return this.manageTags.getTag(tag.parentId);\n },\n };\n\n console.log('active tag', this.manageTags.activeTag);\n\n if (this.manageTags.activeTag.parentId) {\n selectOptions.value = await this.manageTags.getTag(\n this.manageTags.activeTag.parentId,\n );\n }\n\n this.tagsRecursiveSelect = new RecursiveSelect<IRTSeeTag>(selectOptions);\n }\n\n async submit(): Promise<void> {\n if (\n this.tagForm.invalid ||\n !this.manageTags.peer.rtseeAppId ||\n !this.manageTags.activeTag\n ) {\n console.log('Form Invalid!');\n return;\n }\n\n const parentId: string | undefined = this.tagsRecursiveSelect?.value?.id;\n\n const tagParams: Omit<IRTSeeTag, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n applicationId: this.manageTags.applicationId,\n parentId,\n };\n\n if (this.manageTags.activeTag.id) {\n const options: IRTSeeTag = {\n id: this.manageTags.activeTag.id,\n ...tagParams,\n };\n await this.manageTags.updateTag(options);\n } else {\n await this.manageTags.createTag(tagParams);\n }\n }\n\n cancel(): void {\n console.log('Cancel');\n }\n\n private presetFields(tag: Omit<IRTSeeTag, 'id'>): void {\n this.nameField.setValue(tag.name);\n this.descriptionField.setValue(tag.description || '');\n this.iconClassField.setValue(tag.iconClassName || '');\n\n console.log('preset fields');\n void this.presetParent();\n }\n\n private getTagForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RTSeeTagForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n iconClass: this.formBuilder.control('', {\n validators: [Validators.minLength(1), Validators.maxLength(244)],\n }),\n value: this.formBuilder.control('', {\n validators: [Validators.minLength(1), Validators.maxLength(244)],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.tagForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.tagForm.get('description') as FormControl<string>;\n }\n\n get iconClassField(): FormControl<string> {\n return this.tagForm.get('iconClass') as FormControl<string>;\n }\n\n get valueField(): FormControl<string> {\n return this.tagForm.get('value') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-tag\">\n <div class=\"rtsee-manage-tag-info rtsee-form-container\">\n <form class=\"rtsee-tag-form rtsee-form\"\n [formGroup]=\"tagForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n @if (tagsRecursiveSelect && manageTags.activeTag) {\n <div class=\"rtsee-select-tag-container\">\n <p-divider></p-divider>\n <p>Parent Tag</p>\n <rtsee-recursive-select [selectModel]=\"tagsRecursiveSelect\"\n ></rtsee-recursive-select>\n <p-divider></p-divider>\n </div>\n }\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-symbol-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"iconClassField\"\n [class.p-invalid]=\"iconClassField.invalid && iconClassField.touched\"\n />\n <label for=\"rtsee-story-label-symbol-field\">Symbol</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (iconClassField.hasError('required') && iconClassField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Symbol is required, pick a smile, dummy</p-message>\n }\n </div>\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTags.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageTags.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { RTSeeManageTagGroups, RTSeeTagGroup } from '@rtsee/utilities-ui';\nimport { IAccordionItem } from '../rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport { Menu } from 'primeng/menu';\n\n@Component({\n selector: 'rtsee-rtsee-tag-groups-manage',\n imports: [Menu],\n templateUrl: './rtsee-tag-groups-manage.component.html',\n})\nexport class RtseeTagGroupsManageComponent implements OnInit {\n items: IAccordionItem[] = [];\n selectedTagGroup: RTSeeTagGroup | undefined = undefined;\n onTagGroupClicked: OutputEmitterRef<RTSeeTagGroup> = output<RTSeeTagGroup>();\n\n @Input() manageTagGroups!: RTSeeManageTagGroups;\n\n ngOnInit(): void {\n this.manageTagGroups\n .loadTagGroups()\n .then(() => {\n this.items = this.tagGroupsToItems(this.manageTagGroups.tagGroups);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private tagGroupsToItems(tagGroups: RTSeeTagGroup[]): IAccordionItem[] {\n console.log('tagGroupsToItems', tagGroups);\n return tagGroups.map((tg) => {\n return {\n label: tg.name,\n isSelected: false,\n command: (): void => {\n this.selectedTagGroup = tg;\n this.onTagGroupClicked.emit(tg);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-manage-tag-groups\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { IRTSeeTagGroup } from '@rtsee/common';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageTagGroups } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { AutocompleteComponent } from '../../../common/components/autocomplete/autocomplete.component';\n\nexport type RTSeeTagGroupForm = {\n name: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-rtsee-tag-group-manage',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n AutocompleteComponent,\n ],\n templateUrl: './rtsee-tag-group-manage.component.html',\n})\nexport class RtseeTagGroupManageComponent implements OnInit {\n tagGroupForm: FormGroup;\n\n @Input() manageTagGroups!: RTSeeManageTagGroups;\n\n constructor(private formBuilder: FormBuilder) {\n this.tagGroupForm = this.getTagGroupForm();\n }\n\n ngOnInit() {\n if (!this.manageTagGroups.activeTagGroup) {\n this.manageTagGroups.setBlankActiveTag();\n }\n\n if (!this.manageTagGroups.activeTagGroup) {\n throw new Error(`Active tagGroup should be selected`);\n }\n\n this.presetFields(this.manageTagGroups.activeTagGroup);\n void this.manageTagGroups.initMultiselect();\n }\n\n async submit(): Promise<void> {\n if (!this.manageTagGroups.activeTagGroup) {\n throw new Error(`Active tagGroup should be selected`);\n }\n\n if (this.tagGroupForm.invalid || !this.manageTagGroups.peer.rtseeAppId) {\n console.log('Form Invalid!');\n return;\n }\n\n const tagGroupParams: Omit<IRTSeeTagGroup, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n applicationId: this.manageTagGroups.peer.rtseeAppId,\n };\n\n if (this.manageTagGroups.activeTagGroup.id) {\n await this.manageTagGroups.updateTagGroup({\n ...tagGroupParams,\n id: this.manageTagGroups.activeTagGroup.id,\n });\n } else {\n await this.manageTagGroups.createTagGroup(tagGroupParams);\n }\n }\n\n cancel(): void {\n console.log('Cancel');\n }\n\n private presetFields(tagGroup: Omit<IRTSeeTagGroup, 'id'>): void {\n this.nameField.setValue(tagGroup.name);\n this.descriptionField.setValue(tagGroup.description || '');\n }\n\n private getTagGroupForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RTSeeTagGroupForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.tagGroupForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.tagGroupForm.get('description') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-tag-group\">\n <div class=\"rtsee-manage-tag-group-info rtsee-form-container\">\n <form class=\"rtsee-tag-form rtsee-form\"\n [formGroup]=\"tagGroupForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n\n @if (manageTagGroups && manageTagGroups.tagsMultiselect) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-autocomplete [config]=\"manageTagGroups.tagsMultiselect\"></rtsee-autocomplete>\n </div>\n }\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTagGroups.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageTagGroups.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { Menu } from 'primeng/menu';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport {\n RTSeeEntityConfiguration,\n RTSeeManageEntityConfigurations,\n} from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-entities-configurations-list',\n imports: [Menu],\n templateUrl: './entities-configurations-list.component.html',\n})\nexport class EntitiesConfigurationsListComponent {\n items: IAccordionItem[] = [];\n selectedEntityConfiguration?: RTSeeEntityConfiguration;\n onConfigurationClicked: OutputEmitterRef<RTSeeEntityConfiguration> =\n output<RTSeeEntityConfiguration>();\n\n @Input() manageEntityConfigurations!: RTSeeManageEntityConfigurations;\n\n ngOnInit(): void {\n this.manageEntityConfigurations\n .loadEntityConfigurations()\n .then(() => {\n this.items = this.configurationsToItems(\n this.manageEntityConfigurations.entityConfigurations,\n );\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private configurationsToItems(\n entityConfigurations: RTSeeEntityConfiguration[],\n ): IAccordionItem[] {\n console.log('entityConfigsToItems', entityConfigurations);\n return entityConfigurations.map((ec) => {\n return {\n label: ec.name,\n isSelected: false,\n command: (): void => {\n this.selectedEntityConfiguration = ec;\n this.onConfigurationClicked.emit(ec);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-entities-configurations-list\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageRatingConfigurations } from '@rtsee/utilities-ui';\nimport { IRTSeeRatingConfiguration } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { Textarea } from 'primeng/textarea';\nimport { InputNumber } from 'primeng/inputnumber';\n\nexport type RatingConfigurationForm = {\n name: string | null;\n description: string | null;\n maxRate: number | null;\n step: number | null;\n};\n\n@Component({\n selector: 'rtsee-manage-rating-configuration',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n InputNumber,\n ],\n templateUrl: './manage-rating-configuration.component.html',\n})\nexport class ManageRatingConfigurationComponent implements OnInit {\n ratingConfigurationForm: FormGroup;\n\n @Input() manageRatingConfigurations!: RTSeeManageRatingConfigurations;\n @Input() ratingConfiguration!: IRTSeeRatingConfiguration;\n constructor(private formBuilder: FormBuilder) {\n this.ratingConfigurationForm = this.getRatingConfigurationForm();\n }\n\n ngOnInit(): void {\n this.presetFields();\n }\n\n private presetFields(): void {\n if (!this.ratingConfiguration) {\n return;\n }\n\n this.nameField.setValue(this.ratingConfiguration.name);\n this.descriptionField.setValue(this.ratingConfiguration.description || '');\n this.maxRateField.setValue(this.ratingConfiguration.maxRateValue || 5);\n this.stepField.setValue(this.ratingConfiguration.stepValue || 1);\n }\n\n async submit(): Promise<void> {\n if (!this.manageRatingConfigurations.entityConfigurationId) {\n throw new Error(`No entity config id found`);\n }\n\n if (\n this.ratingConfigurationForm.invalid ||\n !this.manageRatingConfigurations.applicationId\n ) {\n console.log('Form Invalid!');\n return;\n }\n\n const configurationParams: Omit<IRTSeeRatingConfiguration, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n entityConfigurationId:\n this.manageRatingConfigurations.entityConfigurationId,\n applicationId: this.manageRatingConfigurations.applicationId,\n maxRateValue: this.maxRateField.getRawValue(),\n stepValue: this.stepField.getRawValue(),\n };\n\n if (this.ratingConfiguration?.id) {\n await this.manageRatingConfigurations.updateRatingConfiguration({\n ...configurationParams,\n id: this.ratingConfiguration.id,\n });\n } else {\n await this.manageRatingConfigurations.createRatingConfiguration(\n configurationParams,\n );\n }\n }\n\n cancel(): void {\n console.log('cancel');\n }\n\n private getRatingConfigurationForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RatingConfigurationForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n maxRate: this.formBuilder.control(5, {\n validators: [Validators.required, Validators.min(4)],\n }),\n step: this.formBuilder.control(1, {\n validators: [Validators.required, Validators.min(1)],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.ratingConfigurationForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.ratingConfigurationForm.get(\n 'description',\n ) as FormControl<string>;\n }\n\n get maxRateField(): FormControl<number> {\n return this.ratingConfigurationForm.get('maxRate') as FormControl<number>;\n }\n\n get stepField(): FormControl<number> {\n return this.ratingConfigurationForm.get('step') as FormControl<number>;\n }\n}\n","<div class=\"rtsee-manage-rating-configuration\">\n <div class=\"rtsee-form-container\">\n <form class=\"rtsee-rating-configuration-form rtsee-form\"\n [formGroup]=\"ratingConfigurationForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-rating-configuration-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-rating-configuration-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-rating-configuration-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-rating-configuration-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [formControl]=\"maxRateField\"\n [min]=\"1\"\n [max]=\"10\"\n id=\"rtsee-rating-configuration-max-rate-field\"\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n />\n <label for=\"rtsee-rating-configuration-max-rate-field\">Max Rate</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (maxRateField.hasError('required') && maxRateField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Max rate is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [formControl]=\"stepField\"\n [min]=\"1\"\n [max]=\"2\"\n id=\"rtsee-rating-configuration-step-field\"\n [class.p-invalid]=\"stepField.invalid && stepField.touched\"\n />\n <label for=\"rtsee-rating-configuration-step-field\">Max Rate</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (maxRateField.hasError('required') && maxRateField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Step is required</p-message>\n }\n </div>\n\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageRatingConfigurations.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageRatingConfigurations.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { Menu } from 'primeng/menu';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport {\n RTSeeEntityConfiguration,\n RTSeeManageRatingConfigurations,\n} from '@rtsee/utilities-ui';\nimport { IRTSeeRatingConfiguration } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { Divider } from 'primeng/divider';\nimport { ManageRatingConfigurationComponent } from '../manage-rating-configuration/manage-rating-configuration.component';\n\n@Component({\n selector: 'rtsee-rating-configurations-list',\n imports: [Menu, Button, Divider, ManageRatingConfigurationComponent],\n templateUrl: './rating-configurations-list.component.html',\n})\nexport class RatingConfigurationsListComponent {\n items: IAccordionItem[] = [];\n selectedRatingConfiguration?: IRTSeeRatingConfiguration;\n onRatingConfigurationClicked: OutputEmitterRef<IRTSeeRatingConfiguration> =\n output<IRTSeeRatingConfiguration>();\n @Input() entityConfiguration!: RTSeeEntityConfiguration;\n @Input() manageRatingConfigurations!: RTSeeManageRatingConfigurations;\n\n ngOnInit(): void {\n this.manageRatingConfigurations\n .loadRatingConfigurations(this.entityConfiguration.id)\n .then(() => {\n this.items = this.ratingConfigurationsToItems(\n this.manageRatingConfigurations.ratingConfigurations,\n );\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n onCreateClicked(): void {\n this.manageRatingConfigurations.setBlankActiveConfiguration();\n this.selectedRatingConfiguration =\n this.manageRatingConfigurations.activeRatingConfiguration || undefined;\n }\n\n private ratingConfigurationsToItems(\n ratingConfigurations: IRTSeeRatingConfiguration[],\n ): IAccordionItem[] {\n return ratingConfigurations.map((rc) => {\n return {\n label: rc.name,\n isSelected: false,\n command: (): void => {\n this.selectedRatingConfiguration = rc;\n this.onRatingConfigurationClicked.emit(rc);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-rating-configurations-list\">\n <p-divider></p-divider>\n <p>Rating Configurations</p>\n @if (selectedRatingConfiguration) {\n <rtsee-manage-rating-configuration [manageRatingConfigurations]=\"manageRatingConfigurations\"\n [ratingConfiguration]=\"selectedRatingConfiguration\"\n ></rtsee-manage-rating-configuration>\n } @else {\n <div class=\"rtsee-rating-configurations-controls\">\n <p-button label=\"Create\" (click)=\"onCreateClicked()\"></p-button>\n </div>\n <div class=\"rtsee-rating-configurations-list-items\">\n <p-menu [model]=\"items\" />\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { Button } from \"primeng/button\";\nimport { RTSeeManageEntityConfigurations } from \"@rtsee/utilities-ui\";\nimport { FormComponent } from \"../../../common/components/forms/form/form.component\";\nimport { RatingConfigurationsListComponent } from \"../rating-configurations-list/rating-configurations-list.component\";\n\n@Component({\n selector: \"rtsee-manage-entity-configuration\",\n standalone: true,\n imports: [\n Button,\n FormComponent,\n RatingConfigurationsListComponent,\n ],\n templateUrl: \"./manage-entity-configuration.component.html\",\n})\nexport class ManageEntityConfigurationComponent implements OnInit {\n @Input() manageEntityConfigurations!: RTSeeManageEntityConfigurations;\n\n ngOnInit() {\n if (!this.manageEntityConfigurations.activeEntityConfiguration) {\n this.manageEntityConfigurations.setBlankActiveEntityConfiguration();\n }\n\n if (!this.manageEntityConfigurations.activeEntityConfigurationForm) {\n throw new Error(`Active entityConfig form should be selected`);\n }\n }\n\n submit(): void {\n if (!this.manageEntityConfigurations.activeEntityConfigurationForm) {\n return;\n }\n\n this.manageEntityConfigurations.activeEntityConfigurationForm.submit();\n }\n\n cancel(): void {\n this.manageEntityConfigurations.flushActiveEntityConfiguration();\n }\n}\n","<div class=\"rtsee-manage-entity-configuration\">\n <div class=\"rtsee-manage-entity-configuration-info rtsee-form-container\">\n @if (manageEntityConfigurations.activeEntityConfigurationForm) {\n <rtsee-form [form]=\"manageEntityConfigurations.activeEntityConfigurationForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageEntityConfigurations.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageEntityConfigurations.saveInProgress\"\n />\n </rtsee-form>\n\n @if (manageEntityConfigurations.activeEntityConfiguration && manageEntityConfigurations.activeEntityConfiguration.id) {\n <rtsee-rating-configurations-list [entityConfiguration]=\"manageEntityConfigurations.activeEntityConfiguration\"\n [manageRatingConfigurations]=\"manageEntityConfigurations.activeEntityConfiguration.manageRatingConfigurations\"\n ></rtsee-rating-configurations-list>\n }\n }\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport { RTSeeEntity, RTSeeManageEntities } from '@rtsee/utilities-ui';\nimport { Menu } from 'primeng/menu';\n\n@Component({\n selector: 'rtsee-entities-list',\n imports: [Menu],\n templateUrl: './entities-list.component.html',\n})\nexport class EntitiesListComponent {\n items: IAccordionItem[] = [];\n selectedEntity?: RTSeeEntity;\n onEntityClicked: OutputEmitterRef<RTSeeEntity> = output<RTSeeEntity>();\n\n @Input() manageEntities!: RTSeeManageEntities;\n\n ngOnInit(): void {\n this.manageEntities\n .loadEntities()\n .then(() => {\n this.items = this.entitiesToItems(this.manageEntities.entities);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private entitiesToItems(\n entityConfigurations: RTSeeEntity[],\n ): IAccordionItem[] {\n console.log('entityConfigsToItems', entityConfigurations);\n return entityConfigurations.map((et) => {\n return {\n label: et.name,\n isSelected: false,\n command: (): void => {\n this.selectedEntity = et;\n this.onEntityClicked.emit(et);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-entities-list\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { Button } from \"primeng/button\";\nimport { RTSeeManageEntities } from \"@rtsee/utilities-ui\";\nimport { FormComponent } from \"../../../common/components/forms/form/form.component\";\n\n@Component({\n selector: \"rtsee-manage-entity\",\n standalone: true,\n imports: [\n Button,\n FormComponent\n ],\n templateUrl: \"./manage-entity.component.html\"\n})\nexport class ManageEntityComponent implements OnInit {\n @Input() manageEntities!: RTSeeManageEntities;\n\n ngOnInit() {\n if (!this.manageEntities.activeEntity) {\n this.manageEntities.setBlankActiveEntity();\n }\n\n if (!this.manageEntities.activeEntityForm) {\n throw new Error(`Active entity form should be selected`);\n }\n }\n\n submit(): void {\n if (!this.manageEntities.activeEntityForm) {\n return;\n }\n\n this.manageEntities.activeEntityForm.submit();\n }\n\n cancel(): void {\n this.manageEntities.flushActiveEntity();\n }\n}\n","<div class=\"rtsee-manage-entity\">\n @if (manageEntities.activeEntityForm) {\n <rtsee-form [form]=\"manageEntities.activeEntityForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n label=\"Submit\"\n [disabled]=\"manageEntities.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageEntities.saveInProgress\"\n />\n </rtsee-form>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { SignInForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { AuthEndpointsKeys, RTSeeAuthConfiguration } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { ServerSideError } from '../../../common/interfaces';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-sign-in',\n templateUrl: './sign-in.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class SignInComponent {\n public readonly signInForm: FormGroup<TypedReactiveForm<SignInForm>> =\n this.formBuilder.group<TypedReactiveForm<SignInForm>>({\n username: this.formBuilder.nonNullable.control(\n {\n value: '',\n disabled: false,\n },\n {\n validators: [Validators.required, Validators.email],\n },\n ),\n password: this.formBuilder.nonNullable.control(\n {\n value: '',\n disabled: false,\n },\n { validators: [Validators.required] },\n ),\n remember: this.formBuilder.nonNullable.control(false),\n });\n public readonly authConfiguration: RTSeeAuthConfiguration;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n public loadInProgress: boolean = false;\n public serverSideError: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n public authService: RTSeeAuthService,\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get usernameField(): FormControl<string> {\n return this.signInForm.get('username') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signInForm.get('password') as FormControl<string>;\n }\n\n get rememberField(): FormControl<boolean> {\n return this.signInForm.get('remember') as FormControl<boolean>;\n }\n\n public login(): void {\n if (this.signInForm.valid) {\n this.disableFormFields();\n this.authService.signIn(this.signInForm.getRawValue()).subscribe({\n next: () => {\n void this.router.navigate(\n this.authService.rtseeAuth.authConfiguration.defaultPostLoginRoute,\n );\n this.enableFormFields();\n setTimeout(() => {\n window.location.reload();\n }, 100);\n },\n error: (error: ServerSideError) => {\n console.log(error);\n this.showServerSideErrorForXSeconds(error.error.message);\n this.enableFormFields();\n },\n complete: () => {\n this.enableFormFields();\n },\n });\n } else {\n this.signInForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n private showServerSideErrorForXSeconds(message: string, x: number = 3): void {\n this.serverSideError = message;\n\n setTimeout(() => {\n this.serverSideError = '';\n }, x * 1000); // we can do pop-up message instead\n }\n\n private disableFormFields(): void {\n this.loadInProgress = true;\n this.usernameField.disable();\n this.passwordField.disable();\n this.rememberField.disable();\n }\n\n private enableFormFields(): void {\n this.loadInProgress = false;\n this.usernameField.enable(); // fuck me, but [disabled]=\"loadInProgress\" on the field no longer works :(\n this.passwordField.enable();\n this.rememberField.enable();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"auth-container rtsee-form-container\" >\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">{{ authService.rtseeAuth.labels[RTSeeTextLabelKeys.SIGN_IN_FORM_HEADER] }}</h2>\n <p class=\"auth-title-description\">{{ authService.rtseeAuth.labels[RTSeeTextLabelKeys.SIGN_IN_TEXT_SUBHEADER] }}</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signInForm\" (ngSubmit)=\"login()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup >\n <p-floatlabel variant=\"on\">\n <input id=\"user-email\"\n pInputText\n [formControl]=\"usernameField\"\n />\n <label for=\"user-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!usernameField.valid && usernameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is invalid</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"user-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n />\n <label for=\"user-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (serverSideError) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{serverSideError}}</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"remember\" [binary]=\"true\" [formControl]=\"rememberField\" />\n <label for=\"remember\" class=\"ml-2\">\n <span>\n {{authService.rtseeAuth.labels[RTSeeTextLabelKeys.REMEMBER_ME_CHECKBOX_LABEL] }}\n </span>\n </label>\n </div>\n <div class=\"rtsee-form-field-container\">\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.FORGOT_PASSWORD)\"\n class=\"auth-deep-blue-sm-medium\"\n >Forgot password?</a>\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign In\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n <p class=\"rtsee-form-label\">\n <span>Don't have an account?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"auth-deep-blue-sm-medium\"\n >Create one!</a>\n </p>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilsService {\n constructor() {}\n\n public static getKeysAsValueObject<T extends object>(\n obj: T,\n ): Record<string, string> {\n // object was {}\n if (obj) {\n return Object.keys(obj).reduce<Record<string, string>>(\n (result, value) => {\n result[value] = value;\n return result;\n },\n {},\n );\n }\n return {};\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport class ConfirmPasswordValidator {\n /**\n * Check matching password with confirm password\n * @param control AbstractControl\n */\n static MatchFields(control: AbstractControl): ValidationErrors | null {\n const passwordField: AbstractControl | null = control.get('password');\n const passwordConfirmationField: AbstractControl | null = control.get(\n 'passwordConfirmation',\n );\n\n if (!passwordField || !passwordConfirmationField) {\n throw new Error('MatchFieldsValidator unable to find password controls!');\n }\n\n const password: string = passwordField.getRawValue() as string;\n const passwordConfirmation: string =\n passwordConfirmationField.getRawValue() as string;\n\n if (password !== passwordConfirmation) {\n return {\n confirmPassword: true,\n };\n }\n\n return null;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { SignUpForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ConfirmPasswordValidator } from '../validators/form-fields-validators';\nimport { Router, RouterLink } from '@angular/router';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { IRtseeSignUpRequestOptions, IRTSeeSignUpResponse } from '@rtsee/auth';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-sign-up',\n templateUrl: './sign-up.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class SignUpComponent {\n public readonly signUpForm: FormGroup<TypedReactiveForm<SignUpForm>>;\n public readonly signUpFormKeys: Record<keyof SignUpForm, string>;\n public readonly authConfiguration: RTSeeAuthConfiguration;\n public loadInProgress: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.signUpForm = this.formBuilder.group<TypedReactiveForm<SignUpForm>>(\n {\n email: this.formBuilder.control('', {\n validators: [Validators.required, Validators.email],\n }),\n password: this.formBuilder.control('', {\n validators: [Validators.required, Validators.minLength(6)],\n }),\n passwordConfirmation: this.formBuilder.control('', {\n validators: [Validators.required, Validators.minLength(6)],\n }),\n terms: this.formBuilder.control(false, {\n nonNullable: true,\n validators: [Validators.requiredTrue],\n }),\n },\n { validators: [ConfirmPasswordValidator.MatchFields] },\n );\n this.signUpFormKeys = UtilsService.getKeysAsValueObject(\n this.signUpForm.getRawValue(),\n );\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.signUpForm.get('email') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signUpForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmationField(): FormControl<string> {\n return this.signUpForm.get('passwordConfirmation') as FormControl<string>;\n }\n\n get termsField(): FormControl<boolean> {\n return this.signUpForm.get('terms') as FormControl<boolean>;\n }\n\n public signUp(): void {\n this.signUpForm.markAllAsTouched();\n\n if (this.signUpForm.valid) {\n this.loadInProgress = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues: SignUpForm = this.signUpForm.getRawValue();\n\n this.authService\n .signUp({\n email: formValues.email!,\n password: formValues.password!,\n terms: formValues.terms!,\n } as IRtseeSignUpRequestOptions)\n .subscribe({\n next: (response: IRTSeeSignUpResponse) => {\n this.loadInProgress = false;\n this.successMessage =\n 'Registration successful! You can now sign in.';\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n console.log('User registered successfully', response);\n },\n error: (error) => {\n this.loadInProgress = false;\n this.errorMessage =\n error.error?.message ||\n 'Error during registration. Please try again.';\n console.error('Error during registration', error);\n },\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Personal Account Registration</h2>\n <p class=\"auth-title-description\">Create your personal account to view stories</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signUpForm\" (ngSubmit)=\"signUp()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"sign-up-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"sign-up-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"sign-up-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordField.invalid && passwordField.touched) || (signUpForm.hasError('confirmPassword') && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"sign-up-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordField.hasError('required') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (passwordField.hasError('minlength') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password must be at least 6 characters long</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmationField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordConfirmationField.invalid && passwordConfirmationField.touched) || (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordConfirmationField.hasError('required') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (passwordConfirmationField.hasError('minlength') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation must be at least 6 characters long</p-message>\n }\n @if (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"terms\" [binary]=\"true\" [formControl]=\"termsField\" />\n <label for=\"terms\" class=\"ml-2\">I agree to the <a href=\"#\" [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.PRIVACY_POLICY)\" class=\"auth-deep-blue-sm-medium\">terms of use</a></label>\n @if (termsField.hasError('required') && termsField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >You must accept the terms and conditions</p-message>\n }\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign Up\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Already have an account?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { UtilsService } from '../services/utils.service';\nimport { ForgotPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { Router, RouterLink } from '@angular/router';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport {\n RTSeeAuthService,\n IRtseeForgotPasswordRequestOptions,\n IRTSeeForgotPasswordResponse,\n} from '../services/auth.service';\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-forgot-password',\n templateUrl: './forgot-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n FloatLabel,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class ForgotPasswordComponent {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public readonly emailForm: FormGroup<TypedReactiveForm<ForgotPasswordForm>>;\n public readonly forgotPasswordFormKeys: Record<\n keyof ForgotPasswordForm,\n string\n >;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.emailForm = this.formBuilder.group<\n TypedReactiveForm<ForgotPasswordForm>\n >({\n email: this.formBuilder.nonNullable.control('', {\n validators: [Validators.required, Validators.email],\n }),\n });\n this.forgotPasswordFormKeys = UtilsService.getKeysAsValueObject(\n this.emailForm.getRawValue(),\n );\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.emailForm.get('email') as FormControl<string>;\n }\n\n public submitEmail(): void {\n this.emailForm.markAllAsTouched();\n\n if (this.emailForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const email = this.emailForm.getRawValue().email;\n\n this.authService\n .forgotPassword({ email } as IRtseeForgotPasswordRequestOptions)\n .subscribe({\n next: (response: IRTSeeForgotPasswordResponse) => {\n this.isLoading = false;\n this.successMessage =\n response.message || 'Password reset email sent successfully!';\n console.log('Password reset email sent successfully', response);\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage =\n error.error?.message ||\n 'Error sending password reset email. Please try again.';\n console.error('Error sending password reset email', error);\n },\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Recovery</h2>\n <p class=\"auth-title-description\">Enter your email address to receive password reset instructions</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"emailForm\" (ngSubmit)=\"submitEmail()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"forgot-password-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"forgot-password-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Send\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","export enum FormErrorKey {\n required = 'required',\n email = 'email',\n minLength = 'minlength',\n maxLength = 'maxlength',\n requiredLength = 'requiredLength',\n passwordsMismatch = 'passwordsMismatch',\n}\n","import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n ValidatorFn,\n Validators,\n ValidationErrors,\n} from '@angular/forms';\nimport { ResetPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormErrorKey } from '../../enums/form.enum';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport {\n RTSeeAuthService,\n IRtseeResetPasswordRequestOptions,\n IRTSeeResetPasswordResponse,\n} from '../services/auth.service';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-reset-password',\n templateUrl: './reset-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n ButtonModule,\n InputGroup,\n Password,\n FloatLabel,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class ResetPasswordComponent implements OnInit {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public resetPasswordForm: FormGroup<TypedReactiveForm<ResetPasswordForm>>;\n public passwordFormKeys: Record<keyof ResetPasswordForm, string>;\n public hidePassword: Record<keyof ResetPasswordForm, boolean> = {\n password: true,\n passwordConfirm: true,\n };\n private token!: string;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.resetPasswordForm = this.formBuilder.group(\n {\n password: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(COMMON_CONSTANTS.minPasswordLength),\n ],\n nonNullable: true,\n }),\n passwordConfirm: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(COMMON_CONSTANTS.minPasswordLength),\n ],\n nonNullable: true,\n }),\n },\n { validators: [this.passwordMatchValidator()] },\n );\n this.passwordFormKeys = UtilsService.getKeysAsValueObject(\n this.resetPasswordForm.value,\n );\n this.authConfiguration = this.authService.authConfiguration;\n }\n\n get passwordField(): FormControl<string> {\n return this.resetPasswordForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmField(): FormControl<string> {\n return this.resetPasswordForm.get('passwordConfirm') as FormControl<string>;\n }\n\n public ngOnInit(): void {\n this.token = this.route.snapshot.params['token'];\n }\n\n public resetPassword(): void {\n this.resetPasswordForm.markAllAsTouched();\n\n if (this.resetPasswordForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues = this.resetPasswordForm.getRawValue();\n\n this.authService\n .resetPassword({\n password: formValues.password,\n passwordConfirm: formValues.passwordConfirm,\n token: this.token,\n } as IRtseeResetPasswordRequestOptions)\n .subscribe({\n next: (response: IRTSeeResetPasswordResponse) => {\n this.isLoading = false;\n this.successMessage =\n response.message || 'Password reset successfully!';\n console.log('Password reset successfully', response);\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage =\n error.error?.message ||\n 'Error resetting password. Please try again.';\n console.error('Error resetting password', error);\n },\n });\n }\n }\n\n private passwordMatchValidator(): ValidatorFn {\n // @ts-ignore\n return (\n form: FormGroup<TypedReactiveForm<ResetPasswordForm>>,\n ): ValidationErrors | null => {\n const password = form.value.password;\n const passwordConfirm = form.value.passwordConfirm;\n if (password !== passwordConfirm) {\n if (form.controls.password.valid) {\n form.controls.password.setErrors({\n [FormErrorKey.passwordsMismatch]: true,\n });\n }\n if (form.controls.passwordConfirm.valid) {\n form.controls.passwordConfirm.setErrors({\n [FormErrorKey.passwordsMismatch]: true,\n });\n }\n return { [FormErrorKey.passwordsMismatch]: true };\n }\n if (form.controls.password.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.password.setErrors(null);\n }\n if (\n form.controls.passwordConfirm.hasError(FormErrorKey.passwordsMismatch)\n ) {\n form.controls.passwordConfirm.setErrors(null);\n }\n return null;\n };\n }\n\n protected readonly FormErrorKey = FormErrorKey;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Reset</h2>\n <p class=\"auth-title-description\">Please enter a new password for your account.</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"new-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [class]=\"(passwordField.invalid && passwordField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"new-password\">New Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmField\"\n [feedback]=\"false\"\n [class]=\"(passwordConfirmField.invalid && passwordConfirmField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordConfirmField.valid && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Reset Password\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span> </span>\n <a href=\"#\" class=\"auth-deep-blue-sm-medium\">Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'rtsee-privacy-policy',\n templateUrl: './privacy-policy.component.html',\n styleUrls: ['./privacy-policy.component.scss'],\n imports: [ButtonModule, MessageModule],\n standalone: true,\n})\nexport class PrivacyPolicyComponent {}\n","<div class=\"privacy-policy-container\">\n <div class=\"policy-card\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"flex justify-content-center align-items-center\">\n <h1>Terms of Use & Privacy Policy</h1>\n </div>\n </div>\n </div>\n\n <div class=\"content-section\">\n <p-message severity=\"info\" [closable]=\"false\" class=\"info-banner\">\n <ng-template pTemplate>\n <div class=\"p-message-content\">\n <p class=\"last-updated\"><strong>Last Updated:</strong> December 2024</p>\n <p>By using our services, you agree to the terms and conditions outlined in this document. Please read this Privacy Policy and Terms of Use carefully before using our platform.</p>\n </div>\n </ng-template>\n </p-message>\n\n <h2>1. Acceptance of Terms</h2>\n <p>By accessing and using this service, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service.</p>\n\n <h2>2. Privacy Policy</h2>\n\n <h3>2.1 Information We Collect</h3>\n <p>We collect information you provide directly to us, such as when you create an account, use our services, or contact us for support. This may include:</p>\n <ul>\n <li><strong>Personal Information:</strong> Name, email address, phone number, and other contact details</li>\n <li><strong>Account Information:</strong> Username, password, and profile information</li>\n <li><strong>Usage Data:</strong> Information about how you use our services, including pages visited, time spent, and features used</li>\n <li><strong>Device Information:</strong> IP address, browser type, operating system, and device identifiers</li>\n <li><strong>Cookies and Tracking:</strong> We use cookies and similar technologies to enhance your experience</li>\n </ul>\n\n <h3>2.2 How We Use Your Information</h3>\n <p>We use the information we collect to:</p>\n <ul>\n <li>Provide, maintain, and improve our services</li>\n <li>Process transactions and send related information</li>\n <li>Send technical notices, updates, security alerts, and support messages</li>\n <li>Respond to your comments, questions, and requests</li>\n <li>Monitor and analyze trends, usage, and activities</li>\n <li>Personalize and improve your experience</li>\n <li>Detect, investigate, and prevent fraudulent transactions and other illegal activities</li>\n </ul>\n\n <h3>2.3 Information Sharing and Disclosure</h3>\n <p>We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except in the following circumstances:</p>\n <ul>\n <li><strong>Service Providers:</strong> We may share information with trusted third-party service providers who assist us in operating our platform</li>\n <li><strong>Legal Requirements:</strong> We may disclose information when required by law or to protect our rights and safety</li>\n <li><strong>Business Transfers:</strong> In connection with any merger, sale of assets, or acquisition of all or a portion of our business</li>\n <li><strong>Consent:</strong> We may share information with your explicit consent</li>\n </ul>\n\n <h3>2.4 Data Security</h3>\n <p>We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet or electronic storage is 100% secure.</p>\n\n <h3>2.5 Data Retention</h3>\n <p>We retain your personal information for as long as necessary to provide our services and fulfill the purposes outlined in this privacy policy, unless a longer retention period is required or permitted by law.</p>\n\n <h3>2.6 Your Rights</h3>\n <p>Depending on your location, you may have certain rights regarding your personal information, including:</p>\n <ul>\n <li>The right to access and receive a copy of your personal information</li>\n <li>The right to rectify or update your personal information</li>\n <li>The right to erase your personal information</li>\n <li>The right to restrict or object to the processing of your personal information</li>\n <li>The right to data portability</li>\n <li>The right to withdraw consent at any time</li>\n </ul>\n\n <h2>3. Terms of Service</h2>\n\n <h3>3.1 User Accounts</h3>\n <p>To access certain features of our service, you may be required to create an account. You are responsible for:</p>\n <ul>\n <li>Maintaining the confidentiality of your account credentials</li>\n <li>All activities that occur under your account</li>\n <li>Notifying us immediately of any unauthorized use of your account</li>\n <li>Providing accurate and up-to-date information</li>\n </ul>\n\n <h3>3.2 Acceptable Use</h3>\n <p>You agree not to use our service for any unlawful purpose or any purpose prohibited under this clause. You may not use our service in any manner that could damage, disable, overburden, or impair our servers or networks.</p>\n\n <h3>3.3 Prohibited Activities</h3>\n <p>The following activities are prohibited:</p>\n <ul>\n <li>Violating any applicable laws or regulations</li>\n <li>Transmitting or procuring the sending of any unsolicited or unauthorized advertising</li>\n <li>Attempting to gain unauthorized access to any portion of our service</li>\n <li>Interfering with or disrupting the service or servers connected to the service</li>\n <li>Using any automated system to access the service for any purpose</li>\n <li>Impersonating any person or entity or misrepresenting your affiliation with a person or entity</li>\n </ul>\n\n <h3>3.4 Intellectual Property</h3>\n <p>The service and its original content, features, and functionality are and will remain the exclusive property of our company and its licensors. The service is protected by copyright, trademark, and other laws.</p>\n\n <h3>3.5 Termination</h3>\n <p>We may terminate or suspend your account and bar access to the service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever, including without limitation if you breach the Terms.</p>\n\n <h3>3.6 Disclaimer</h3>\n <p>The information on this service is provided on an \"as is\" basis. To the fullest extent permitted by law, this company excludes all representations, warranties, conditions and terms relating to our service and the use of this service.</p>\n\n <h3>3.7 Limitation of Liability</h3>\n <p>In no event shall our company, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of the service.</p>\n\n <h2>4. Cookies and Tracking Technologies</h2>\n <p>We use cookies and similar tracking technologies to track activity on our service and hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent.</p>\n\n <h2>5. Third-Party Services</h2>\n <p>Our service may contain links to third-party websites or services that are not owned or controlled by us. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party websites or services.</p>\n\n <h2>6. Children's Privacy</h2>\n <p>Our service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us.</p>\n\n <h2>7. International Data Transfers</h2>\n <p>Your information may be transferred to and processed in countries other than your own. We ensure that such transfers comply with applicable data protection laws and implement appropriate safeguards to protect your personal information.</p>\n\n <h2>8. Changes to This Policy</h2>\n <p>We reserve the right to update or change our Privacy Policy and Terms of Use at any time. We will notify you of any changes by posting the new Privacy Policy and Terms of Use on this page and updating the \"Last Updated\" date.</p>\n\n <div class=\"contact-section\">\n <h2>9. Contact Information</h2>\n <p>If you have any questions about this Privacy Policy and Terms of Use, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> [Your Email Address]</li>\n <li><strong>Address:</strong> [Your Company Address]</li>\n <li><strong>Phone:</strong> [Your Contact Number]</li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <p>This document was last updated on December 2024</p>\n </div>\n </div>\n </div>\n</div>\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SignInComponent } from '../sign-in/sign-in.component';\nimport { SignUpComponent } from '../sign-up/sign-up.component';\nimport { ForgotPasswordComponent } from '../forgot-password/forgot-password.component';\nimport { ResetPasswordComponent } from '../reset-password/reset-password.component';\nimport { PrivacyPolicyComponent } from '../privacy-policy/privacy-policy.component';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { RTSeeAuth } from '@rtsee/auth';\nimport { AuthEndpointsKeys, DEFAULT_ROUTE_NAMES } from '@rtsee/auth';\n\n@Component({\n selector: 'rtsee-auth',\n templateUrl: './auth.component.html',\n imports: [\n SignInComponent,\n SignUpComponent,\n ForgotPasswordComponent,\n ResetPasswordComponent,\n PrivacyPolicyComponent,\n ],\n standalone: true,\n})\nexport class RTSeeAuthComponent implements OnInit {\n @Input() auth!: RTSeeAuth<any>;\n\n activeComponent:\n | 'reset-password'\n | 'sign-up'\n | 'sign-in'\n | 'forgot-password'\n | 'privacy-policy' = 'sign-in';\n\n constructor(public authService: RTSeeAuthService) {\n if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_IN],\n )\n ) {\n this.activeComponent = 'sign-in';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_UP],\n )\n ) {\n this.activeComponent = 'sign-up';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.FORGOT_PASSWORD],\n )\n ) {\n this.activeComponent = 'forgot-password';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.RESET_PASSWORD].split('/')[0],\n )\n ) {\n this.activeComponent = 'reset-password';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.PRIVACY_POLICY],\n )\n ) {\n this.activeComponent = 'privacy-policy';\n }\n }\n\n ngOnInit() {\n this.authService.init(this.auth);\n }\n}\n","<div class=\"rtsee-auth\">\n @if (authService.rtseeAuth) {\n @if (activeComponent === 'sign-in') {\n <rtsee-sign-in></rtsee-sign-in>\n }\n @if (activeComponent === 'sign-up') {\n <rtsee-sign-up></rtsee-sign-up>\n }\n @if (activeComponent === 'forgot-password') {\n <rtsee-forgot-password></rtsee-forgot-password>\n }\n @if (activeComponent === 'reset-password') {\n <rtsee-reset-password></rtsee-reset-password>\n }\n @if (activeComponent === 'privacy-policy') {\n <rtsee-privacy-policy></rtsee-privacy-policy>\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n standalone: true,\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n standalone: true,\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { PreloaderComponent } from '../../../../../common/components/preloader/preloader.component';\nimport { NgForOf } from '@angular/common';\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n imports: [ReactiveFormsModule, PreloaderComponent, NgForOf],\n standalone: true,\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value: string) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\"\n *ngIf=\"search.searchInProgress\"\n ></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\"\n class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n standalone: true,\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { SearchComponent } from '../search/search.component';\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n imports: [SearchComponent],\n standalone: true,\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\nimport { NgIf } from '@angular/common';\nimport { SearchComponent } from './components/search/search.component';\nimport { ManageChatComponent } from './components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/contacts-multiselect/contacts-multiselect.component';\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n imports: [\n NgIf,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent,\n ],\n standalone: true,\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewGroupClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">people</span>\n </div>\n <span>New Group</span>\n </div>\n </li>\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewChannelClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">campaign</span>\n </div>\n <span>New Channel</span>\n </div>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n standalone: true,\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-vendors',\n templateUrl: './vendors.component.html',\n standalone: true,\n})\nexport class VendorsComponent {}\n","<p>vendors works!</p>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { FormComponent } from './common/components/forms/form/form.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RTSeeContainerComponent } from './components/rtsee-container/rtsee-container.component';\nimport { RTSeeConferenceComponent } from './components/rtsee/rtsee-conference.component';\nimport { PresentationComponent } from './components/rtsee-presentation/presentation/presentation.component';\nimport { StoryPlayerComponent } from './components/rtsee-presentation/story-player/story-player.component';\nimport { SlideComponent } from './components/rtsee-presentation/slide/slide.component';\nimport { StoryThumbnailComponent } from './components/rtsee-presentation/story-thumbnail/story-thumbnail.component';\nimport { SignUpComponent } from './components/rtsee-auth/sign-up/sign-up.component';\nimport { SignInComponent } from './components/rtsee-auth/sign-in/sign-in.component';\nimport { ForgotPasswordComponent } from './components/rtsee-auth/forgot-password/forgot-password.component';\nimport { VendorsComponent } from './components/rtsee-auth/vendors/vendors.component';\nimport { RTSeeAuthComponent } from './components/rtsee-auth/auth/auth.component';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { ResetPasswordComponent } from './components/rtsee-auth/reset-password/reset-password.component';\nimport { PresentationHeaderComponent } from './components/rtsee-presentation/presentation-header/presentation-header.component';\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { providePrimeNG } from 'primeng/config';\nimport Aura from '@primeuix/themes/aura';\nimport { PaymentProductSnippetComponent } from './components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component';\n\n@NgModule({\n providers: [\n provideAnimationsAsync(),\n providePrimeNG({\n theme: {\n preset: Aura,\n },\n }),\n ],\n declarations: [],\n imports: [\n RTSeeAuthComponent,\n VendorsComponent,\n ForgotPasswordComponent,\n SignInComponent,\n SignUpComponent,\n RtseeEventsDashboardSessionComponent,\n EventThumbnailComponent,\n ShaveDirective,\n ContactsMultiselectComponent,\n ManageChatComponent,\n CallWidgetComponent,\n WidgetDirective,\n RtseeEventsDashboardClientComponent,\n ResetPasswordComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n RtseePeersListComponent,\n ChatComponent,\n MessageComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n RtseeEventsDashboardComponent,\n MessengerComponent,\n RTSeeControlsComponent,\n RTSeeContainerComponent,\n RTSeeConferenceComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseeSettingsComponent,\n MessengerHeaderComponent,\n ChatsListComponent,\n ProfileComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n PresentationComponent,\n StoryPlayerComponent,\n SlideComponent,\n StoryThumbnailComponent,\n PresentationHeaderComponent,\n PaymentProductSnippetComponent,\n CommonModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n FormsModule,\n NgOptimizedImage,\n RouterLink,\n RouterLinkActive,\n NgxCaptchaModule,\n FormComponent,\n ],\n exports: [\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n RTSeeContainerComponent,\n PresentationComponent,\n RTSeeAuthComponent,\n PaymentProductSnippetComponent,\n FormComponent,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee-settings/rtsee-settings.component';\nexport * from './lib/components/rtsee/rtsee-conference.component';\nexport * from './lib/components/rtsee-peer/rtsee-peer.component';\nexport * from './lib/components/rtsee-messenger/profile/profile.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/components/rtsee-container/rtsee-container.component';\nexport * from './lib/components/rtsee-presentation/presentation/presentation.component';\nexport * from './lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component';\nexport * from './lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component';\nexport * from './lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component';\nexport * from './lib/components/rtsee-entities/entities-list/entities-list.component';\nexport * from './lib/components/rtsee-entities/manage-entity/manage-entity.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component';\nexport * from './lib/components/rtsee-auth/auth/auth.component';\nexport * from './lib/ngx.module';\nexport * from './lib/common/components/forms/form/form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.RTSeeAuthService","i1.DefaultImagesService","i1.TimeFormatHelperService","i1.MessageWidgetsService","i2.TimeFormatHelperService","i1.PaymentsService","i1.EventsWidgetsService","i2.DefaultImagesService","i2","i3.RTSeeAuthService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rtsee-ngx.mjs","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-conference.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/auth.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/components/constans/common.const.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/common/components/rating/rating.component.ts","../../../projects/ngx/src/lib/common/components/rating/rating.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/common/directives/viewport-observer.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.ts","../../../projects/ngx/src/lib/common/components/cropper/cropper.component.html","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.ts","../../../projects/ngx/src/lib/common/components/uploader/uploader.component.html","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.ts","../../../projects/ngx/src/lib/common/components/image-uploader/image-uploader.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-profile/manage-profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-profile/manage-profile.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/services/payments.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-page/payment-page.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-page/payment-page.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-validation-page/payment-validation-page.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/payment-validation-page/payment-validation-page.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-plan/manage-plan.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/manage-plan/manage-plan.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/join-call/join-call.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/join-call/join-call.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-header/presentation-header.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-thumbnail/story-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/slide/slide.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-player/story-player.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slides/manage-slides.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-slide/manage-slide.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/text-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/text-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/textarea-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/textarea-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/checkbox-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/checkbox-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/radio-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/radio-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/number-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/number-field.component.html","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.ts","../../../projects/ngx/src/lib/common/components/autocomplete/autocomplete.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/autocomplete-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/autocomplete-field.component.html","../../../projects/ngx/src/lib/common/components/recursive-select/recursive-select.component.ts","../../../projects/ngx/src/lib/common/components/recursive-select/recursive-select.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/recursive-select-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/recursive-select-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/image-uploader-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/field-sub-types/image-uploader-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form-field/form-field.component.ts","../../../projects/ngx/src/lib/common/components/forms/form-field/form-field.component.html","../../../projects/ngx/src/lib/common/components/forms/form/form.component.ts","../../../projects/ngx/src/lib/common/components/forms/form/form.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-story/manage-story.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-stories/manage-stories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-category/manage-category.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-categories/manage-categories.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-label/manage-label.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-labels/manage-labels.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topic/manage-topic.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topic/manage-topic.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topics/manage-topics.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/manage-topics/manage-topics.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/manage/presentations-dashboard/presentations-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-settings/presentation-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation-settings/presentation-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rate-input/rate-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rate-input/rate-input.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rate-item/rate-item.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rate-item/rate-item.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rater/rater.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rater/rater.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rates-list/rates-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rates-list/rates-list.component.html","../../../projects/ngx/src/lib/components/rtsee-rates/rating-section/rating-section.component.ts","../../../projects/ngx/src/lib/components/rtsee-rates/rating-section/rating-section.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/story-details/story-details.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/story-details/story-details.component.html","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.ts","../../../projects/ngx/src/lib/components/rtsee-presentation/presentation/presentation.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-nav/rtsee-nav.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component.ts","../../../projects/ngx/src/lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-rating-configuration/manage-rating-configuration.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-rating-configuration/manage-rating-configuration.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/rating-configurations-list/rating-configurations-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/rating-configurations-list/rating-configurations-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/entities-list/entities-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/entities-list/entities-list.component.html","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity/manage-entity.component.ts","../../../projects/ngx/src/lib/components/rtsee-entities/manage-entity/manage-entity.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-in/sign-in.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/services/utils.service.ts","../../../projects/ngx/src/lib/components/rtsee-auth/validators/form-fields-validators.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/sign-up/sign-up.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/forgot-password/forgot-password.component.html","../../../projects/ngx/src/lib/components/enums/form.enum.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/reset-password/reset-password.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/privacy-policy/privacy-policy.component.html","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/auth/auth.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.ts","../../../projects/ngx/src/lib/components/rtsee-auth/vendors/vendors.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n imports: [NgClass],\n standalone: true,\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeConference;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n @if (rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n }\n @if (!rtsee.microphone) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n }\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n @if (rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n }\n @if (!rtsee.camera) {\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n }\n </div>\n <div class=\"present rtsee-buttons-container\"\n [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\"\n >\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n imports: [NgClass, FormsModule, Select, FloatLabel, Button],\n standalone: true,\n})\nexport class RtseeSettingsComponent implements OnInit {\n @Input() rtSee!: RTSeeConference;\n @Input() fullScreenMode!: boolean;\n constructor() {}\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n audioInputChanged() {\n this.rtSee.setAudioInputDevice();\n }\n\n audioOutputChanged() {\n this.rtSee.setAudioOutputDevice();\n }\n\n videoInputChanged() {\n this.rtSee.setVideoInputDevice();\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices rtsee-form-container\">\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.audioInputDevices\"\n [(ngModel)]=\"rtSee.audioInputDeviceId\"\n (ngModelChange)=\"audioInputChanged()\"\n inputId=\"mic_input\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"mic_input\">Microphone</label>\n </p-floatlabel>\n </div>\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.audioOutputDevices\"\n [(ngModel)]=\"rtSee.audioOutputDeviceId\"\n (ngModelChange)=\"audioOutputChanged()\"\n inputId=\"audio_output\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"audio_output\">Speaker</label>\n </p-floatlabel>\n </div>\n <div class=\"rtsee-device-select-wrapper rtsee-form-field-container\">\n <p-floatlabel variant=\"on\">\n <p-select [options]=\"rtSee.videoInputDevices\"\n [(ngModel)]=\"rtSee.videoInputDeviceId\"\n (ngModelChange)=\"videoInputChanged()\"\n inputId=\"video_input\"\n optionLabel=\"label\"\n optionValue=\"deviceId\"\n class=\"rtsee-device-select-field\" />\n <label for=\"video_input\">Camera</label>\n </p-floatlabel>\n </div>\n </div>\n\n <div class=\"rtsee-settings-footer\">\n <p-button label=\"Close\"\n (click)=\"rtSee.toggleSettings()\"\n ></p-button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n standalone: true,\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { NgClass, NgIf } from '@angular/common';\nimport { RtseeSoundbarComponent } from '../rtsee-soundbar/rtsee-soundbar.component';\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n imports: [NgClass, NgIf, RtseeSoundbarComponent],\n standalone: true,\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement,\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\nimport { NgClass, NgIf } from '@angular/common';\nimport { RtseeSettingsComponent } from '../rtsee-settings/rtsee-settings.component';\nimport { RtseePeerComponent } from '../rtsee-peer/rtsee-peer.component';\nimport { RTSeeControlsComponent } from './rtsee-controls/rtsee-controls.component';\n\n@Component({\n selector: 'rtsee-conference',\n templateUrl: './rtsee-conference.component.html',\n imports: [\n NgClass,\n RtseeSettingsComponent,\n RtseePeerComponent,\n RTSeeControlsComponent,\n ],\n standalone: true,\n})\nexport class RTSeeConferenceComponent {\n settingsViewEnabled: boolean;\n\n @Input() rtSee!: RTSeeConference;\n constructor() {\n this.settingsViewEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.rtSee.uiControls.toggle();\n }\n}\n","<div class=\"rtsee-conference-shell\" [ngClass]=\"{\n'rtsee-conference-shell-expanded': rtSee.uiControls.isExpanded,\n'rtsee-conference-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n @if (rtSee.localStream && rtSee.camera) {\n <div class=\"rtsee-local-peer\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n }\n <div class=\"rtsee-window-controls\">\n <button type=\"button\"\n (click)=\"rtSee.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n </div>\n @if (rtSee.settingsOpened) {\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-settings>\n }\n @if (rtSee.screenSharePeer) {\n <div class=\"rtsee-screen-share\">\n <video [autoplay]=\"true\"\n [muted]=\"'true'\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n }\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n @for (peer of rtSee.rtcPeerConnections.connections; track peer.clientId) {\n <div class=\"rtsee-peer-wrapper\">\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n }\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"rtSee.uiControls.isExpanded\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n RTSeeAuth,\n IRtseeSignInRequestOptions,\n IRTSeeSignInResponse,\n IRtseeSignUpRequestOptions,\n IRTSeeSignUpResponse,\n AuthEndpointsKeys,\n RTSeeAuthConfiguration,\n} from '@rtsee/auth';\n\nexport interface IRtseeForgotPasswordRequestOptions {\n email: string;\n}\n\nexport interface IRtseeResetPasswordRequestOptions {\n password: string;\n passwordConfirm: string;\n token: string;\n}\n\nexport interface IRTSeeForgotPasswordResponse {\n success: boolean;\n message: string;\n}\n\nexport interface IRTSeeResetPasswordResponse {\n success: boolean;\n message: string;\n}\nimport { Observable, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RTSeeAuthService {\n rtseeAuth!: RTSeeAuth<any>;\n authConfiguration!: RTSeeAuthConfiguration;\n\n constructor(private http: HttpClient) {}\n\n init(auth: RTSeeAuth<any>) {\n if (this.rtseeAuth && this.authConfiguration) {\n return;\n }\n\n this.rtseeAuth = auth;\n this.authConfiguration = this.rtseeAuth.authConfiguration;\n }\n\n signIn(\n credentials: IRtseeSignInRequestOptions,\n ): Observable<IRTSeeSignInResponse> {\n return this.http\n .post<IRTSeeSignInResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.SIGN_IN,\n ),\n credentials,\n )\n .pipe(tap((res) => this.rtseeAuth.authenticate(res)));\n }\n\n signUp(\n credentials: IRtseeSignUpRequestOptions,\n ): Observable<IRTSeeSignUpResponse> {\n return this.http.post<IRTSeeSignUpResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.SIGN_UP,\n ),\n credentials,\n );\n }\n\n forgotPassword(\n credentials: IRtseeForgotPasswordRequestOptions,\n ): Observable<IRTSeeForgotPasswordResponse> {\n return this.http.post<IRTSeeForgotPasswordResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.FORGOT_PASSWORD,\n ),\n credentials,\n );\n }\n\n resetPassword(\n credentials: IRtseeResetPasswordRequestOptions,\n ): Observable<IRTSeeResetPasswordResponse> {\n return this.http.post<IRTSeeResetPasswordResponse>(\n this.authConfiguration.getEndpointPathByEndpointName(\n AuthEndpointsKeys.RESET_PASSWORD,\n ),\n credentials,\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IPeer, RTSeeTextLabelKeys } from '@rtsee/core';\nimport { Button } from 'primeng/button';\nimport { Message } from 'primeng/message';\nimport { RTSeeAuthService } from '../../rtsee-auth/services/auth.service';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { Router, RouterLink } from '@angular/router';\nimport { Select } from 'primeng/select';\nimport { FormsModule } from '@angular/forms';\nimport { Divider } from 'primeng/divider';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n imports: [Button, Message, RouterLink, Select, FormsModule, Divider],\n standalone: true,\n})\nexport class ProfileComponent {\n authConfiguration: RTSeeAuthConfiguration;\n\n @Input() messenger!: RTSeeMessenger;\n @Input() peer?: IPeer;\n constructor(\n private authService: RTSeeAuthService,\n private router: Router,\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n setLanguage(): void {\n this.messenger.setLanguage(this.messenger.currentLanguage);\n void this.messenger.propagateLanguageChange(this.messenger.currentLanguage);\n }\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n logOut() {\n this.authService.rtseeAuth.logOut();\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN),\n );\n setTimeout(() => {\n window.location.reload();\n }, 200);\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-messenger-profile\">\n @if (!messenger.ownProfileOpened) {\n <ul class=\"rtsee-messenger-profile-actions\">\n <li class=\"rtsee-messenger-profile-actions-item\">\n <p-button\n (click)=\"call()\"\n size=\"large\"\n severity=\"secondary\"\n icon=\"pi pi-phone\"\n />\n </li>\n <li class=\"rtsee-messenger-profile-actions-item\">\n <p-button\n (click)=\"videoCall()\"\n size=\"large\"\n severity=\"secondary\"\n icon=\"pi pi-video\"\n />\n </li>\n </ul>\n }\n\n @if (messenger.ownProfileOpened && messenger.myPeer && !messenger.myPeer.isAnonymous) {\n <div class=\"rtsee-messenger-profile-info\">\n <p class=\"rtsee-messenger-profile-info-name\">{{messenger.myPeer.name}}</p>\n <div class=\"rtsee-messenger-profile-info-language\">\n <p class=\"rtsee-messenger-profile-info-language-label\">Language:</p>\n <p-select [options]=\"messenger.languageOptions\"\n [(ngModel)]=\"messenger.currentLanguage\"\n (ngModelChange)=\"setLanguage()\"\n optionLabel=\"key\"\n optionValue=\"key\"\n [placeholder]=\"messenger.labels[RTSeeTextLabelKeys.MESSANGER_LANGUAGE_PLACEHOLDER]\"\n class=\"rtsee-messenger-profile-info-language-select\"\n />\n </div>\n <div class=\"rtsee-messenger-profile-edit\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.MESSENGER_EDIT_PROFILE_BTN_LABEL]\"\n (click)=\"messenger.openManageProfile()\"\n ></p-button>\n </div>\n <p-divider></p-divider>\n @if (messenger.myPeer.plan) {\n <p-message severity=\"success\">\n <span>{{messenger.myPeer.plan.productName}}</span>\n </p-message>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.MANAGE_PLAN]\"\n (click)=\"messenger.openManagePlanPage()\"\n ></p-button>\n } @else {\n <div class=\"rtsee-subscribe-button\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SUBSCRIBE_LABEL]\"\n (click)=\"messenger.openPaymentPage()\"\n ></p-button>\n </div>\n }\n <p-divider></p-divider>\n </div>\n }\n\n @if (messenger.ownProfileOpened && messenger.myPeer?.isAnonymous) {\n <div class=\"rtsee-messenger-profile-auth\">\n <div class=\"rtsee-messenger-profile-anon-message\">\n @if (!messenger.currentLanguage || messenger.currentLanguage === 'eng') {\n <p-message severity=\"warn\">\n <span>This is an anonymous identity we've generated for you.</span>\n <span> </span>\n <span>You can use it to play around.</span>\n <span> </span>\n <span>But we are guilty of erasing these time after time.</span>\n <span> </span>\n <span>So please Sign Up if you're looking for something more stable :)</span>\n </p-message>\n } @else if (messenger.currentLanguage === 'ua') {\n <p-message severity=\"warn\">\n <span>Ми згенерували для вас анонімну особистість.</span>\n <span> </span>\n <span>Скористайтеся нею для ознайомлення з сайтом.</span>\n <span> </span>\n <span>Та, час-від-часу, ми їх видаляємо.</span>\n <span> </span>\n <span>Тож краще зареєструтеся, аби не втратити дані :)</span>\n </p-message>\n }\n </div>\n\n <div class=\"rtsee-messenger-profile-auth-buttons\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SIGN_UP_BUTTON]\"\n severity=\"primary\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.SIGN_IN_BUTTON]\"\n severity=\"secondary\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n </div>\n </div>\n } @else if (messenger.ownProfileOpened && !messenger.myPeer?.isAnonymous) {\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.LOGOUT_BUTTON]\"\n severity=\"danger\"\n (click)=\"logOut()\"\n class=\"rtsee-messenger-profile-auth-button\"\n ></p-button>\n }\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\nimport { NgClass } from '@angular/common';\nimport { ProfileComponent } from '../profile/profile.component';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n imports: [NgClass, ProfileComponent],\n standalone: true,\n})\nexport class MessengerHeaderComponent {\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {}\n\n openProfile(id: string): void {\n if (this.messenger.ownProfileOpened) {\n return;\n }\n void this.messenger.openProfile(id);\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-chat-header-unread': messenger.openedChat && !messenger.unreadMessagesCount,\n 'rtsee-messenger-header-expanded': messenger.openedProfile || messenger.openedChatDetails,\n 'rtsee-messenger-header-my-profile-mode': messenger.ownProfileOpened,\n 'rtsee-messenger-header-chat-info-mode': (messenger.openedProfile || messenger.openedChatDetails) && !messenger.ownProfileOpened\n }\"\n>\n <span class=\"rtsee-messenger-header-collapse-button\"\n (click)=\"messenger.collapseInfo()\"\n >\n <span class=\"pi pi-arrow-left\"></span>\n </span>\n <div class=\"rtsee-messenger-header-left\">\n @if (!messenger.openedChat && messenger.myPeer) {\n <div class=\"rtsee-messenger-header-avatar\"\n (click)=\"openProfile(messenger.myPeer.clientId)\"\n >\n <div [style.background-image]=\"'url(' + messenger.myPeer.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-header-avatar-image\">\n </div>\n </div>\n } @else if (messenger.openedChat) {\n <button class=\"rtsee-messenger-close-chat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">arrow_back</span>\n @if (messenger.unreadMessagesCount) {\n <span class=\"unread-count\">{{messenger.unreadMessagesCount}}</span>\n }\n </button>\n }\n </div>\n <div class=\"rtsee-messenger-header-right\">\n @if (messenger.openedChat) {\n <div class=\"rtsee-messenger-chat-image-container rtsee-messenger-header-avatar\"\n (click)=\"messenger.openChatInfo()\"\n >\n <div class=\"rtsee-messenger-chat-image rtsee-messenger-header-avatar-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n }\n </div>\n <div class=\"rtsee-messenger-header-center\">\n @if (messenger.openedChat) {\n <div [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': messenger.openedProfile || messenger.openedChatDetails}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n </div>\n\n <div class=\"rtsee-messenger-profile-data-container\">\n @if (messenger.openedChatDetails) {\n <rtsee-profile [messenger]=\"messenger\"\n ></rtsee-profile>\n }\n </div>\n </div>\n } @else if (!messenger.openedChat) {\n <p class=\"rtsee-messenger-header-title\"\n >{{messenger.labels[RTSeeTextLabelKeys.MESSANGER_TITLE]}}</p>\n <rtsee-profile [messenger]=\"messenger\"\n [peer]=\"messenger.myPeer\"\n ></rtsee-profile>\n }\n </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n standalone: true,\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage } from '@rtsee/messenger';\nimport { IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\nimport { NgClass, NgIf } from '@angular/common';\nimport { PreloaderComponent } from '../../../../../common/components/preloader/preloader.component';\n\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n imports: [NgIf, NgClass, PreloaderComponent],\n standalone: true,\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n @Input() inChat?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\" [ngClass]=\"{'showing-status-inside-chat': inChat }\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">done_all</span>\n </span>\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n</div>\n","export const COMMON_CONSTANTS = {\n minPasswordLength: 8,\n requestItemLimit: 20,\n customTimeFormat: 'HH:mm',\n customDateFormat: 'dd/MM/YYYY',\n customDateFormatDaysJs: 'DD/MM/YYYY',\n customDateTimeFormat: 'dd/MM/YYYY HH:mm',\n defaultProfileImgUrl: 'https://werf.co/assets/images/default-profile.png',\n mobileBreakpoint: 800,\n};\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { MessageTimeAndStatusComponent } from '../message/components/message-time-and-status/message-time-and-status.component';\nimport { NgClass, NgIf } from '@angular/common';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n imports: [MessageTimeAndStatusComponent, NgClass, NgIf],\n standalone: true,\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n\n protected readonly COMMON_CONSTANTS = COMMON_CONSTANTS;\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl || COMMON_CONSTANTS.defaultProfileImgUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"\n [hideStatus]=\"chat && !!(chat.unreadMessagesCount)\">\n </rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { NgForOf } from '@angular/common';\nimport { ChatThumbnailComponent } from '../chat-thumbnail/chat-thumbnail.component';\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n imports: [NgForOf, ChatThumbnailComponent],\n standalone: true,\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n<!-- <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>-->\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n standalone: true,\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IRatingConfigWithRate } from '@rtsee/common';\nimport { NgClass } from '@angular/common';\nimport { IRTSeeRateBase } from '@rtsee/common/src/interfaces/utilities/rating/Rate';\n\n@Component({\n selector: 'rtsee-rating',\n imports: [NgClass],\n templateUrl: './rating.component.html',\n})\nexport class RatingComponent implements OnInit {\n stars: string[] = [];\n mutable: boolean = false;\n rateValue: number = 0;\n\n @Input() config?: IRatingConfigWithRate;\n @Input() rate?: Pick<IRTSeeRateBase, 'value' | 'maxValue'>;\n\n ngOnInit(): void {\n this.init();\n }\n\n init(): void {\n if (this.rate) {\n this.initStars(this.rate.value, this.rate.maxValue);\n this.rateValue = this.rate.value;\n } else if (this.config) {\n this.mutable = true;\n this.initStars(this.config.rate?.value || 0, this.config.maxRateValue);\n this.rateValue = this.config.rate?.value || 0;\n } else {\n throw new Error(`Neither rate nor vote config provided!`);\n }\n }\n\n initStars(value: number, maxValue: number): void {\n const stars: string[] = [];\n const full: number = Math.floor(value);\n const hasHalf: boolean = value - full >= 0.25;\n for (let i: number = 0; i < full; i++) {\n stars.push('full');\n }\n if (hasHalf) {\n stars.push('half');\n }\n while (stars.length < maxValue) {\n stars.push('empty');\n }\n this.stars = stars;\n }\n\n onStarClicked(index: number): void {\n if (!this.config || !this.config.rate) {\n return;\n }\n this.config.rate.value = index + 1;\n this.init();\n }\n}\n","<div class=\"rtsee-rating\">\n @for (star of stars; track $index) {\n <span class=\"rtsee-rating-star\"\n [ngClass]=\"{\n 'rtsee-rating-star-full': star === 'full',\n 'rtsee-rating-star-half': star === 'half',\n 'rtsee-rating-star-empty': star === 'empty',\n 'rtsee-rating-star-clickable': mutable\n }\"\n (click)=\"onStarClicked($index)\"\n >★</span>\n }\n @if (rateValue) {\n <span class=\"rtsee-rating-number\">{{ rateValue }}</span>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.scss'],\n imports: [NgClass],\n standalone: true,\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n ngOnInit(): void {}\n\n joinCall() {\n console.log('message data: ', this.message.data);\n if (\n !this.messenger ||\n (!this.message.data?.roomId && !this.chat.conferenceRoom)\n ) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n\n const roomId: string | null =\n this.message.data?.roomId || this.chat.conferenceRoom?.id || null;\n\n if (!roomId) {\n console.log('Room Id unavailable!');\n return;\n }\n\n void this.messenger.joinCall(roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p> The call has started</p>\n <button class=\"rtsee-join-call-btn\"\n (click)=\"joinCall()\">\n Join Call\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { NgClass, NgIf } from '@angular/common';\nimport { MessageTimeAndStatusComponent } from './components/message-time-and-status/message-time-and-status.component';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\nimport { IRTSeeRateConfiguration } from '@rtsee/common';\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n imports: [\n NgClass,\n MessageTimeAndStatusComponent,\n WidgetDirective,\n RatingComponent,\n ],\n standalone: true,\n})\nexport class MessageComponent implements OnInit, AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n ) {}\n\n ngOnInit() {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.instance.chat = this.chat;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from.id === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n @if (message.widget) {\n <ng-template widgetHost></ng-template>\n }\n @if (!message.widget) {\n <p class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n }\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [inChat]=\"true\"\n [hideStatus]=\"message.from.id !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n DOCUMENT,\n ElementRef,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatEvents,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { NgClass, ViewportScroller } from '@angular/common';\nimport { MessageComponent } from '../message/message.component';\nimport { RTSeeChatTypes } from '@rtsee/common';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\n\nexport interface IRTSeeMessageGroup {\n id: string;\n sender: RTSeeChatMember;\n senderVisible: boolean;\n messages: RTSeeMessage[];\n}\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n imports: [InfiniteScrollDirective, MessageComponent, NgClass],\n standalone: true,\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n bindedGroupFunction: () => void;\n messagesGroups: IRTSeeMessageGroup[] = [];\n\n firstGroupedMessage: RTSeeMessage | null = null;\n lastGroupedMessage: RTSeeMessage | null = null;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(\n private timeFormatService: TimeFormatHelperService,\n private scroller: ViewportScroller,\n @Inject(DOCUMENT) private document: Document,\n ) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n this.bindedGroupFunction = this.groupMessages.bind(this) as () => void;\n }\n\n @HostListener('window:scroll', ['$event'])\n onWindowScroll(event: Event): void {\n // Get the vertical scroll position\n const verticalOffset: number =\n window.pageYOffset ||\n this.document.documentElement.scrollTop ||\n this.document.body.scrollTop ||\n 0;\n\n if (window.innerWidth >= COMMON_CONSTANTS.mobileBreakpoint) {\n return;\n }\n\n // You can add logic here, e.g., show a 'scroll to top' button\n if (verticalOffset < 300) {\n this.onScrolledToTop();\n }\n }\n\n ngOnInit() {\n this.chat.on(\n RTSeeChatEvents.MESSAGES_LIST_CHANGED,\n this.bindedGroupFunction,\n );\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n this.groupMessages();\n }\n\n ngAfterViewInit(): void {\n if (this.chat.isStandalone) {\n return;\n }\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n this.chat.off(\n RTSeeChatEvents.MESSAGES_LIST_CHANGED,\n this.bindedGroupFunction,\n );\n }\n\n onScrolledToTop() {\n console.log('scrolledToTop');\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('back');\n }\n\n onScroll() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages('front');\n }\n\n scrollToBottom(): void {\n this.groupMessages();\n if (this.chat.isStandalone) {\n return;\n }\n setTimeout(() => {\n if (window.innerWidth < COMMON_CONSTANTS.mobileBreakpoint) {\n this.scroller.scrollToPosition([0, document.body.scrollHeight]);\n }\n\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }, 0);\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n\n private groupMessages() {\n if (!this.chat || !this.chat.messages.length) {\n this.messagesGroups.length = 0;\n }\n\n if (!this.firstGroupedMessage || !this.lastGroupedMessage) {\n this.performGrouping();\n } else {\n if (this.areForwardMessagesAdded()) {\n this.performGrouping(\n this.chat.messages.indexOf(this.lastGroupedMessage) + 1,\n );\n }\n\n if (this.areBackwardMessagesAdded()) {\n console.log('backward added', this.chat.messages);\n this.performGrouping(\n 0,\n this.chat.messages.indexOf(this.firstGroupedMessage) - 1,\n true,\n );\n }\n }\n\n this.saveFirstAndLastGroupedMessages();\n }\n\n private performGrouping(\n startIndex?: number,\n endIndex?: number,\n prepend?: boolean,\n ): void {\n const processedGroups: IRTSeeMessageGroup[] = [];\n let lastSenderId: string | null = null;\n let currentGroup: IRTSeeMessageGroup | null = null;\n\n const startFrom: number = startIndex || 0;\n\n for (\n let i: number = startFrom;\n i < (endIndex || this.chat.messages.length);\n i++\n ) {\n const message: RTSeeMessage = this.chat.messages[i];\n\n if (message.from.id === lastSenderId && currentGroup) {\n currentGroup.messages.push(message);\n } else {\n lastSenderId = message.from.id;\n\n if (currentGroup) {\n processedGroups.push(currentGroup);\n }\n\n if (!message.id && !message.temporaryId) {\n throw new Error('Either m.id or m.temporary id is required');\n }\n\n const isFromMe: boolean = message.from.id === this.messenger.clientId;\n const isSenderVisible: boolean =\n (this.chat.type !== RTSeeChatTypes.INDIVIDUAL && !isFromMe) ||\n this.chat.type === RTSeeChatTypes.COMMENTS ||\n this.chat.type === RTSeeChatTypes.RATINGS;\n\n currentGroup = {\n id: message.id || message.temporaryId!,\n sender: message.from,\n senderVisible: isSenderVisible,\n messages: [message],\n };\n }\n }\n\n if (currentGroup) {\n processedGroups.push(currentGroup);\n }\n\n if (prepend) {\n this.stitchGroups(processedGroups, true);\n } else {\n this.stitchGroups(processedGroups);\n }\n }\n\n private stitchGroups(\n newGroups: IRTSeeMessageGroup[],\n prepend?: boolean,\n ): void {\n if (!newGroups.length) {\n return;\n }\n if (!this.messagesGroups.length) {\n this.messagesGroups.push(...newGroups);\n return;\n }\n\n if (prepend) {\n const lastOfNewGroups: IRTSeeMessageGroup =\n newGroups[newGroups.length - 1];\n const firstOfExistingGroups: IRTSeeMessageGroup = this.messagesGroups[0];\n\n if (lastOfNewGroups.sender.id === firstOfExistingGroups.sender.id) {\n firstOfExistingGroups.messages.unshift(...lastOfNewGroups.messages);\n newGroups.splice(newGroups.length - 1, 1);\n }\n\n this.messagesGroups.unshift(...newGroups);\n } else {\n const firstOfNewGroups: IRTSeeMessageGroup = newGroups[0];\n const lastOfExistingGroups: IRTSeeMessageGroup =\n this.messagesGroups[this.messagesGroups.length - 1];\n if (firstOfNewGroups.sender.id === lastOfExistingGroups.sender.id) {\n lastOfExistingGroups.messages.push(...firstOfNewGroups.messages);\n newGroups.splice(0, 1);\n }\n\n this.messagesGroups.push(...newGroups);\n }\n }\n\n private areForwardMessagesAdded(): boolean {\n console.log('last grouped present', this.lastGroupedMessage);\n if (!this.lastGroupedMessage) {\n return false;\n }\n const index: number = this.chat.messages.indexOf(this.lastGroupedMessage);\n return index !== -1 && index < this.chat.messages.length - 1;\n }\n\n private areBackwardMessagesAdded(): boolean {\n console.log('first grouped present', this.firstGroupedMessage);\n\n if (!this.firstGroupedMessage) {\n return false;\n }\n const index: number = this.chat.messages.indexOf(this.firstGroupedMessage);\n console.log('outcome', index !== -1 && index > 0);\n return index !== -1 && index > 0;\n }\n\n private saveFirstAndLastGroupedMessages(): void {\n const firstAndLast: [RTSeeMessage, RTSeeMessage] | null =\n this.getFirstAndLastMessage();\n\n if (!firstAndLast) {\n this.firstGroupedMessage = null;\n this.lastGroupedMessage = null;\n return;\n }\n\n this.firstGroupedMessage = firstAndLast[0];\n this.lastGroupedMessage = firstAndLast[1];\n }\n\n private getFirstAndLastMessage(): [RTSeeMessage, RTSeeMessage] | null {\n if (!this.chat.messages.length) {\n return null;\n }\n\n return [\n this.chat.messages[0],\n this.chat.messages[this.chat.messages.length - 1],\n ];\n }\n\n protected readonly RTSeeChatTypes = RTSeeChatTypes;\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n [style.padding-bottom]=\"messenger.chatInputHeight + 'px'\"\n>\n @for (messageGroup of messagesGroups; track messageGroup.id) {\n <div class=\"rtsee-messenger-message-wrapper\" [ngClass]=\"{\n 'rtsee-messenger-message-wrapper-with-sender': messageGroup.senderVisible\n }\">\n <div class=\"rtsee-messenger-message-inset\">\n <img [src]=\"messageGroup.sender.imageUrl\"\n class=\"rtsee-messenger-message-sender-image\"\n >\n </div>\n\n <div class=\"rtsee-messenger-message-sender-name\">\n <p>{{messageGroup.sender.name}}</p>\n </div>\n\n @for (message of messageGroup.messages; track message.id) {\n <rtsee-message [message]=\"message\"\n [messenger]=\"messenger\"\n [chat]=\"chat\"\n ></rtsee-message>\n }\n </div>\n }\n</div>\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { Textarea } from 'primeng/textarea';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n imports: [ReactiveFormsModule, Textarea],\n standalone: true,\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n @ViewChild('chatInput') chatInput!: ElementRef<HTMLTextAreaElement>;\n\n sendMessage() {\n const text: string =\n (this.sendMessageForm.get('message')?.value as string) || '';\n const trimmedText: string = text.trim();\n\n if (trimmedText) {\n this.chat.sendMessage(text);\n }\n\n this.sendMessageForm.get('message')?.setValue('');\n this.handleResize();\n }\n\n onKeyUp(event: KeyboardEvent): void {\n this.handleResize();\n\n if (event.key === 'Enter' && !event.shiftKey) {\n this.sendMessage();\n }\n }\n\n handleResize(): void {\n const newHeight: number = this.chatInput.nativeElement.offsetHeight + 16;\n\n if (newHeight !== this.messenger.chatInputHeight) {\n this.messenger.setChatInputHeight(newHeight);\n }\n }\n}\n","<div #chatInput\n class=\"rtsee-chat-input\"\n xmlns=\"http://www.w3.org/1999/html\"\n>\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\" class=\"rtsee-chat-input-form\">\n <textarea [invalid]=\"false\"\n [autoResize]=\"true\"\n (keyup)=\"onKeyUp($event)\"\n formControlName=\"message\"\n pTextarea\n placeholder=\"Type a message...\"\n class=\"rtsee-chat-input-field\"\n rows=\"1\"\n cols=\"30\"\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\"\n >\n <span class=\"pi pi-send\"></span>\n </button>\n</div>\n","import {\n Directive,\n ElementRef,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\n\n@Directive({\n selector: '[rtseeViewportObserver]',\n standalone: true, // Use `standalone: true` in modern Angular\n})\nexport class ViewportObserverDirective implements AfterViewInit, OnDestroy {\n @Output() inViewport = new EventEmitter<boolean>();\n private observer!: IntersectionObserver;\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n // Options for the observer: 0.2 means 20% of the element must be visible\n // to trigger the callback\n const options = {\n root: null, // observing relative to the document's viewport\n rootMargin: '0px',\n threshold: 0,\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // entry.isIntersecting is true if the element is in the viewport\n this.inViewport.emit(entry.isIntersecting);\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\nimport { MessagesListComponent } from '../messages-list/messages-list.component';\nimport { ChatInputComponent } from '../chat-input/chat-input.component';\nimport { IRTSeeChat } from '@rtsee/common';\nimport { ViewportObserverDirective } from '../../../common/directives/viewport-observer.directive';\nimport { NgClass } from '@angular/common';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n imports: [\n MessagesListComponent,\n ChatInputComponent,\n ViewportObserverDirective,\n NgClass,\n ],\n standalone: true,\n})\nexport class ChatComponent implements OnInit, OnDestroy {\n @Input() chat!: RTSeeChat;\n @Input() chatData?: IRTSeeChat;\n @Input() entity?: RTSeeEntity;\n @Input() messenger!: RTSeeMessenger;\n\n onInViewPortChange(value: boolean): void {\n console.log('Received inViewPortChange', value);\n this.chat.isInViewPort = value;\n }\n\n ngOnInit(): void {\n if (!this.chat && !this.chatData) {\n console.log(`Either chat ot chatData is required!`);\n }\n\n if (!this.chat && this.chatData) {\n this.chat = this.messenger.addStandaloneChat({\n ...this.chatData,\n utilitiesSignalingClient: this.entity?.signalingClient,\n });\n this.chat.loadRemoteMessages('back');\n }\n }\n\n ngOnDestroy() {\n if (this.chat.isStandalone) {\n this.messenger.removeStandaloneChat(this.chat.id);\n }\n }\n}\n","<div class=\"rtsee-chat\"\n [ngClass]=\"{\n 'rtsee-chat-standalone': chat.isStandalone,\n 'rtsee-chat-in-viewport': chat.isInViewPort\n }\"\n rtseeViewportObserver\n (inViewport)=\"onInViewPortChange($event)\"\n>\n <div class=\"rtsee-chat-footer-container\">\n <div class=\"rtsee-chat-footer-container-inner\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n </div>\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ImageCroppedEvent, ImageCropperComponent } from 'ngx-image-cropper';\nimport { NgClass } from '@angular/common';\nimport { RadioButton } from 'primeng/radiobutton';\nimport { PreloaderComponent } from '../preloader/preloader.component';\nimport { RTSeeImageCropper } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-cropper',\n imports: [\n ImageCropperComponent,\n NgClass,\n RadioButton,\n PreloaderComponent,\n Button,\n ],\n templateUrl: './cropper.component.html',\n standalone: true,\n})\nexport class RTSeeCropperComponent {\n loadInProgress: boolean = true;\n\n @Input() cropper!: RTSeeImageCropper;\n @Output() nextClicked = new EventEmitter();\n\n @ViewChild(ImageCropperComponent) imageCropper!: ImageCropperComponent;\n constructor() {}\n\n ngOnInit() {}\n\n onCropperReady() {\n this.loadInProgress = false;\n this.cropper.setCropperElem(this.imageCropper);\n }\n\n onImageCropped(event: ImageCroppedEvent) {\n if (!event.blob) {\n console.log('ImageCropped no Blob after Cropped event');\n return;\n }\n this.cropper.onCropped(event.blob);\n }\n\n // selectValue(event) {\n // this.cropper.setAspectRatio(event.value);\n // }\n}\n","<div class=\"rtsee-image-cropper-container\"\n [ngClass]=\"{'rtsee-image-cropper-loading': loadInProgress}\"\n>\n @if (cropper.activeImage) {\n <div class=\"rtsee-image-cropper-container-inner\">\n <image-cropper style=\"visibility: hidden\"\n [imageFile]=\"cropper.activeImage.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"cropper.aspectRatio\"\n [resizeToWidth]=\"cropper.resizeToWidth\"\n [autoCrop]=\"false\"\n (imageCropped)=\"onImageCropped($event)\"\n (cropperReady)=\"onCropperReady()\"\n [imageQuality]=\"70\"\n format='jpeg'\n ></image-cropper>\n </div>\n }\n @if (cropper.aspectRatioConfigurable) {\n <div class=\"rtsee-select-aspect-ratio-container\">\n <span class=\"radio-btn title-text\">Aspect Ratio:</span>\n\n <p-radio-button name=\"pizza\" value=\"Cheese\" inputId=\"ingredient1\" />\n <label for=\"ingredient1\" class=\"ml-2\">Cheese</label>\n </div>\n }\n\n @if (!loadInProgress) {\n <div class=\"image-cropper-actions\">\n <p-button label=\"Next\"\n severity=\"primary\"\n (click)=\"cropper.onNextButtonClicked()\"\n ></p-button>\n </div>\n }\n\n <rtsee-preloader [diameter]=\"5\"></rtsee-preloader>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeFileUploader } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-uploader',\n imports: [],\n templateUrl: './uploader.component.html',\n})\nexport class RTSeeUploaderComponent implements OnInit {\n @Input() uploader!: RTSeeFileUploader;\n\n ngOnInit(): void {\n this.uploader.show();\n }\n}\n","<div id=\"rtsee-drag-drop-area\"></div>\n\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { RTSeeCropperComponent } from '../cropper/cropper.component';\nimport { RTSeeUploaderComponent } from '../uploader/uploader.component';\nimport { RTSeeImageUploader } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-image-uploader',\n imports: [RTSeeUploaderComponent, RTSeeCropperComponent, Button],\n templateUrl: './image-uploader.component.html',\n})\nexport class RTSeeImageUploaderComponent implements OnInit {\n @ViewChild(RTSeeCropperComponent) cropperComponent!: RTSeeCropperComponent;\n @Input() imageUploader!: RTSeeImageUploader;\n\n ngOnInit(): void {\n this.attachEventHandlers();\n }\n\n attachEventHandlers() {\n this.imageUploader.on('completed', this.onImagesUploaded.bind(this));\n }\n\n onNextButtonClicked() {\n this.imageUploader.onNextClicked();\n }\n\n onImagesUploaded(response: any): void {\n console.log(response);\n }\n}\n","<div class=\"rtsee-image-uploader\">\n @if (!imageUploader.awaitsUploadOrCrop) {\n <div class=\"rtsee-image-uploader-image\"\n (click)=\"imageUploader.init()\"\n >\n @if (imageUploader.uploadedPhotoPreview) {\n <img [src]=\"imageUploader.uploadedPhotoPreview\"\n class=\"rtsee-image-uploader-preview-image\"\n alt=\"uploaded_photo\"\n >\n }\n @if (!imageUploader.uploadedPhotoPreview) {\n <div class=\"rtsee-preloader-image-placeholder\"></div>\n }\n <div class=\"rtsee-image-uploader-image-change-btn\">\n <p-button icon=\"pi pi-pencil\" severity=\"info\"></p-button>\n </div>\n </div>\n }\n\n @if (imageUploader.awaitsUploadOrCrop) {\n <rtsee-uploader [uploader]=\"imageUploader.uploader\"\n [hidden]=\"imageUploader.cropper?.activeImage\"\n ></rtsee-uploader>\n\n @if (imageUploader.cropper?.activeImage) {\n <rtsee-cropper [cropper]=\"imageUploader.cropper\"\n (nextClicked)=\"onNextButtonClicked()\"\n ></rtsee-cropper>\n }\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Message } from 'primeng/message';\nimport { RTSeeImageUploaderComponent } from '../../../common/components/image-uploader/image-uploader.component';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputText } from 'primeng/inputtext';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageProfile, RTSeeMessenger } from '@rtsee/messenger';\n\nexport type RTSeeProfileForm = {\n firstName: string | null;\n lastName: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-profile',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n Message,\n RTSeeImageUploaderComponent,\n ReactiveFormsModule,\n InputText,\n ],\n templateUrl: './manage-profile.component.html',\n})\nexport class ManageProfileComponent implements OnInit {\n profileForm: FormGroup;\n\n @Input() messenger!: RTSeeMessenger;\n @Input() manageProfile!: RTSeeManageProfile;\n constructor(private formBuilder: FormBuilder) {\n this.profileForm = this.formBuilder.group<\n TypedReactiveForm<RTSeeProfileForm>\n >({\n firstName: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(141),\n ],\n }),\n lastName: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(141),\n ],\n }),\n });\n }\n\n ngOnInit() {\n if (!this.messenger.myPeer || !this.messenger.myPeer.name) {\n return;\n }\n\n const nameSplit: string[] = this.messenger.myPeer.name.split(' ');\n this.firstNameField.setValue(nameSplit[0]);\n nameSplit.splice(0, 1);\n this.lastNameField.setValue(nameSplit.join(' '));\n }\n\n async submit(): Promise<void> {\n if (this.profileForm.invalid) {\n this.profileForm.markAsTouched();\n return;\n }\n\n await this.manageProfile.save({\n firstName: this.firstNameField.getRawValue(),\n lastName: this.lastNameField.getRawValue(),\n });\n }\n\n get firstNameField(): FormControl<string> {\n return this.profileForm.get('firstName') as FormControl<string>;\n }\n\n get lastNameField(): FormControl<string> {\n return this.profileForm.get('lastName') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-messenger-manage-profile\">\n <div class=\"rtsee-messenger-manage-profile-info rtsee-form-container\">\n <div class=\"rtsee-messenger-manage-profile-image\">\n <rtsee-image-uploader [imageUploader]=\"manageProfile.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n\n <form class=\"rtsee-manage-profile-form rtsee-form\"\n [formGroup]=\"profileForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"firstNameField\"\n [class.p-invalid]=\"firstNameField.invalid && firstNameField.touched\"\n />\n <label for=\"sign-up-email\">First Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (firstNameField.hasError('required') && firstNameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >First Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"lastNameField\"\n [class.p-invalid]=\"lastNameField.invalid && lastNameField.touched\"\n />\n <label for=\"sign-up-email\">Last Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (lastNameField.hasError('required') && lastNameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Last Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-manage-profile-buttons\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageProfile.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageProfile.cancel()\"\n [disabled]=\"manageProfile.saveInProgress\"\n />\n </div>\n </form>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Card } from 'primeng/card';\nimport { IRTSeePaymentPriceItem, IRTSeePaymentProduct } from '@rtsee/common';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'rtsee-payment-product-snippet',\n imports: [Card, Button],\n templateUrl: './payment-product-snippet.component.html',\n})\nexport class PaymentProductSnippetComponent {\n @Input() product!: IRTSeePaymentProduct;\n @Output() priceSelected: EventEmitter<IRTSeePaymentPriceItem> =\n new EventEmitter<IRTSeePaymentPriceItem>();\n\n selectPrice(price: IRTSeePaymentPriceItem) {\n this.priceSelected.emit(price);\n }\n}\n","<div class=\"rtsee-payment-product-snippet\">\n <p-card [header]=\"product.name\">\n <p class=\"rtsee-payment-product-snippet-description\">{{product.description}}</p>\n <div class=\"rtsee-payment-product-prices\">\n @for (price of product.prices; track price.id) {\n <div class=\"rtsee-payment-product-price\">\n <p-card [header]=\"price.label\" >\n <p>{{price.description}}</p>\n <p-button label=\"Select Plan\"\n (click)=\"selectPrice(price)\"\n ></p-button>\n </p-card>\n </div>\n }\n </div>\n </p-card>\n</div>\n","import { Injectable } from '@angular/core';\nimport { map, Observable, tap } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport {\n IRTSeeCreatePaymentSessionResponse,\n IRTSeeCreatePaymentSessionRequest,\n IRTSeePaymentProduct,\n IRTSeePaymentProductsListResponse,\n} from '@rtsee/common';\nimport { IRTSeePlan } from '@rtsee/core';\nimport { RTSeePayments } from '@rtsee/messenger';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentsService {\n paymentsConfig: RTSeePayments | null = null;\n isInitialized: boolean = false;\n\n constructor(private http: HttpClient) {}\n\n init(configuration: RTSeePayments) {\n this.paymentsConfig = configuration;\n this.isInitialized = true;\n }\n\n createSession(\n options: IRTSeeCreatePaymentSessionRequest,\n ): Observable<IRTSeeCreatePaymentSessionResponse> {\n if (!this.paymentsConfig) {\n throw new Error('Payments not configured');\n }\n\n return this.http.post<IRTSeeCreatePaymentSessionResponse>(\n this.paymentsConfig.createSessionEndpoint,\n options,\n );\n }\n\n getSession(): Observable<IRTSeePlan> {\n if (!this.paymentsConfig) {\n throw new Error('Payments not configured');\n }\n\n if (!this.paymentsConfig.sessionId) {\n throw new Error('No SessionId provided');\n }\n\n return this.http\n .get<IRTSeePlan>(\n `${this.paymentsConfig.getSessionEndpoint}/?sessionId=${this.paymentsConfig.sessionId}`,\n )\n .pipe(\n tap((res) => {\n console.log('tap here', res);\n this.paymentsConfig?.setValidationInProgress(false);\n }),\n );\n }\n\n getProducts(): Observable<IRTSeePaymentProduct[]> {\n if (!this.paymentsConfig || !this.paymentsConfig.appId) {\n throw new Error('Payments Config not initialized!');\n }\n\n this.paymentsConfig.setProductsLoadInProgress(true);\n\n return this.http\n .get<IRTSeePaymentProductsListResponse>(\n this.paymentsConfig.productsEndpoint,\n )\n .pipe(\n map((res) => res.products),\n tap((res) => this.paymentsConfig?.setProducts(res)),\n );\n }\n\n unsubscribe(subscriptionId: string): Observable<IRTSeePlan> {\n if (!this.paymentsConfig || !this.paymentsConfig.appId) {\n throw new Error('Payments Config not initialized!');\n }\n\n return this.http.post<IRTSeePlan>(\n `${this.paymentsConfig?.unsubscribeEndpoint}`,\n {\n subscriptionId,\n },\n );\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PaymentsService } from '../services/payments.service';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { loadStripe, Stripe, StripeEmbeddedCheckout } from '@stripe/stripe-js';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { PaymentProductSnippetComponent } from '../payment-product-snippet/payment-product-snippet.component';\nimport { IRTSeePaymentPriceItem } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-payment-page',\n imports: [\n ReactiveFormsModule,\n ProgressSpinner,\n PaymentProductSnippetComponent,\n Button,\n ],\n templateUrl: './payment-page.component.html',\n})\nexport class PaymentPageComponent implements OnInit {\n stripe?: Stripe;\n planSelected: boolean = false;\n loadInProgress: boolean = false;\n\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('checkoutContainer')\n checkoutContainer!: ElementRef<HTMLDivElement>;\n constructor(private paymentsService: PaymentsService) {}\n\n async init(): Promise<void> {\n if (!this.paymentsService.paymentsConfig?.publicKey) {\n return;\n }\n\n this.stripe =\n (await loadStripe(this.paymentsService.paymentsConfig.publicKey)) ||\n undefined;\n this.getProducts();\n }\n\n getProducts(): void {\n this.paymentsService.getProducts().subscribe();\n }\n\n selectPlan(price: IRTSeePaymentPriceItem): void {\n const priceId: string = price.priceId;\n\n if (\n !this.messenger.payments ||\n !this.messenger.payments.createSessionEndpoint\n ) {\n console.log('No payments config.');\n return;\n }\n\n if (!this.messenger.myPeer.rtseeAppId) {\n console.log('No app id on peer.');\n return;\n }\n\n this.planSelected = true;\n this.loadInProgress = true;\n\n this.paymentsService\n .createSession({\n priceId: priceId,\n userId: this.messenger.myPeer.clientId,\n route: `/profile/${this.messenger.myPeer.clientId}`,\n applicationId: this.messenger.myPeer.rtseeAppId,\n })\n .subscribe((response) => {\n void this.initCheckout(response.clientSecret);\n });\n }\n\n async initCheckout(secret: string): Promise<void> {\n if (!this.stripe) {\n console.log('Stripe not yet initialized!');\n return;\n }\n const checkout: StripeEmbeddedCheckout =\n await this.stripe.initEmbeddedCheckout({\n clientSecret: secret,\n });\n\n if (!checkout) {\n return;\n }\n\n this.loadInProgress = false;\n\n checkout.mount(this.checkoutContainer.nativeElement);\n }\n\n ngOnInit() {\n if (!this.paymentsService.isInitialized && this.messenger.payments) {\n this.paymentsService.init(this.messenger.payments);\n }\n\n void this.init();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-payment-page rtsee-form-container\">\n @if (messenger.payments && !planSelected) {\n @if (messenger.payments.products) {\n <div class=\"rtsee-payment-page-products\">\n @for (product of messenger.payments.products ; track product.id) {\n <rtsee-payment-product-snippet [product]=\"product\"\n (priceSelected)=\"selectPlan($event)\"\n ></rtsee-payment-product-snippet>\n }\n </div>\n } @else {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n }\n @if (loadInProgress) {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n <div #checkoutContainer class=\"stripe-checkout-container\"></div>\n <div class=\"rtsee-payment-page-footer\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.CANCEL_LABEL]\"\n (click)=\"messenger.closePaymentPage()\"\n severity=\"warn\"\n ></p-button>\n </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PaymentsService } from '../services/payments.service';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { loadStripe, Stripe } from '@stripe/stripe-js';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { Button } from 'primeng/button';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-payment-validation-page',\n imports: [ReactiveFormsModule, ProgressSpinner, Button],\n templateUrl: './payment-validation-page.component.html',\n})\nexport class PaymentValidationPageComponent implements OnInit {\n stripe?: Stripe;\n loadInProgress: boolean = false;\n\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('checkoutContainer')\n checkoutContainer!: ElementRef<HTMLDivElement>;\n constructor(private paymentsService: PaymentsService) {}\n\n async init(): Promise<void> {\n if (!this.paymentsService.paymentsConfig?.publicKey) {\n return;\n }\n\n this.stripe =\n (await loadStripe(this.paymentsService.paymentsConfig.publicKey)) ||\n undefined;\n this.validatePayment();\n }\n\n validatePayment(): void {\n this.paymentsService.getSession().subscribe((res) => {\n this.messenger.closePaymentValidationPage();\n });\n }\n\n ngOnInit() {\n if (!this.paymentsService.isInitialized && this.messenger.payments) {\n this.paymentsService.init(this.messenger.payments);\n }\n\n void this.init();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-payment-page rtsee-form-container\">\n @if (messenger.payments?.validationInProgress) {\n <p-progress-spinner strokeWidth=\"8\"></p-progress-spinner>\n }\n <div class=\"rtsee-payment-page-footer\">\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.CANCEL_LABEL]\"\n (click)=\"messenger.closePaymentPage()\"\n severity=\"warn\"\n ></p-button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Card } from 'primeng/card';\nimport { Divider } from 'primeng/divider';\nimport { Button } from 'primeng/button';\nimport { IRTSeePlan, RTSeeTextLabelKeys } from '@rtsee/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { PaymentsService } from '../services/payments.service';\nimport dayjs from 'dayjs';\n\n@Component({\n selector: 'rtsee-manage-plan',\n imports: [Card, Divider, Button],\n templateUrl: './manage-plan.component.html',\n})\nexport class ManagePlanComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n plan!: IRTSeePlan;\n activeFromFormated: string = '';\n activeToFormated: string = '';\n\n constructor(private paymentsService: PaymentsService) {}\n\n onUnsubscribeClicked(): void {\n console.log(this.plan);\n }\n\n ngOnInit(): void {\n if (!this.messenger.myPeer || !this.messenger.myPeer.plan) {\n throw new Error('No Plans found.');\n }\n\n this.plan = this.messenger.myPeer.plan;\n this.activeFromFormated = dayjs(\n this.messenger.myPeer.plan.activeFrom,\n ).format('YYYY-MM-DD');\n this.activeToFormated = dayjs(this.messenger.myPeer.plan.activeTo).format(\n 'YYYY-MM-DD',\n );\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-manage-plan\">\n <h2>{{messenger.labels[RTSeeTextLabelKeys.MANAGE_PLAN]}}</h2>\n <p-button [label]=\"messenger.labels[RTSeeTextLabelKeys.BACK_LABEL]\"\n severity=\"secondary\"\n (click)=\"messenger.closeManagePlanPage()\"\n ></p-button>\n @if (plan) {\n <p-card [header]=\"plan.productName\">\n <p>{{plan.productDescription}}</p>\n <p-divider></p-divider>\n <div class=\"rtsee-manage-plan-info\">\n <p>Active From: {{activeFromFormated}}</p>\n <p>Active To: {{activeToFormated}}</p>\n </div>\n <p-button [label]=\"'Unsubscribe'\"\n (click)=\"onUnsubscribeClicked()\"\n ></p-button>\n </p-card>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { MessengerHeaderComponent } from '../messenger-header/messenger-header.component';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { NgClass } from '@angular/common';\nimport { ChatsListComponent } from '../chats-list/chats-list.component';\nimport { ChatComponent } from '../chat/chat.component';\nimport { PreloaderComponent } from '../../../common/components/preloader/preloader.component';\nimport { ProfileComponent } from '../profile/profile.component';\nimport { ManageProfileComponent } from '../manage-profile/manage-profile.component';\nimport { PaymentPageComponent } from '../payment-page/payment-page.component';\nimport { PaymentValidationPageComponent } from '../payment-validation-page/payment-validation-page.component';\nimport { ManagePlanComponent } from '../manage-plan/manage-plan.component';\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n imports: [\n MessengerHeaderComponent,\n InfiniteScrollDirective,\n NgClass,\n ChatsListComponent,\n ChatComponent,\n PreloaderComponent,\n ProfileComponent,\n ManageProfileComponent,\n PaymentPageComponent,\n PaymentValidationPageComponent,\n ManagePlanComponent,\n ],\n standalone: true,\n})\nexport class MessengerComponent {\n @Input() messenger!: RTSeeMessenger;\n\n onScroll() {\n this.messenger.loadChats();\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-header-expanded': messenger.openedProfile || messenger.openedChatDetails,\n 'rtsee-messenger-folded': messenger.folded,\n 'rtsee-messenger-overlay-window': messenger.isOverlayPageOpened\n}\">\n @if (messenger.manageProfile) {\n <div class=\"rtsee-manage-profile\">\n <rtsee-manage-profile [manageProfile]=\"messenger.manageProfile\"\n [messenger]=\"messenger\"\n ></rtsee-manage-profile>\n </div>\n }\n\n @if (messenger.isPaymentPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-payment-page [messenger]=\"messenger\"></rtsee-payment-page>\n </div>\n }\n\n @if (messenger.isPaymentValidationPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-payment-validation-page [messenger]=\"messenger\"></rtsee-payment-validation-page>\n </div>\n }\n\n @if (messenger.isManagePlanPageOpened) {\n <div class=\"rtsee-payment-page-container\">\n <rtsee-manage-plan [messenger]=\"messenger\"></rtsee-manage-plan>\n </div>\n }\n\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\"\n ></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n @if (messenger.openedChat) {\n <rtsee-chat [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n } @else if (!messenger.openedChat) {\n <rtsee-chats-list [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n } @else if (messenger.openedProfile) {\n <rtsee-profile></rtsee-profile>\n }\n @if (messenger.loadingChatsInProgress) {\n <rtsee-preloader [diameter]=\"50\" ></rtsee-preloader>\n }\n </div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-dashboard';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n imports: [WidgetDirective, NgClass],\n standalone: true,\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n timeInAgoFormat: string = '';\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService,\n private cd: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n\n this.timeInAgoFormat = this.timeFormatService.toAgo(this.event.createdAt);\n\n setInterval(() => {\n this.timeInAgoFormat = this.timeFormatService.toAgo(this.event.createdAt);\n }, 20000);\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '
';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget,\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n @if (event.widget) {\n <ng-template widgetHost></ng-template>\n } @else if (!event.widget) {\n <div class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n @if (event.data) {\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n }\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeInAgoFormat }}</span>\n </div>\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-dashboard';\nimport { NgIf, SlicePipe } from '@angular/common';\nimport { EventThumbnailComponent } from '../event-thumbnail/event-thumbnail.component';\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n imports: [NgIf, EventThumbnailComponent, SlicePipe],\n standalone: true,\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n @if (session.info) {\n <div class=\"rtsee-events-dashboard-session-header\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n @if (session.info.deviceType === 'smartphone' && !session.info.botName) {\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n }\n @if (session.info.deviceType === 'tablet' && !session.info.botName) {\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >tablet_mac</span>\n }\n @if (session.info.deviceType === 'desktop' && !session.info.botName) {\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >computer</span>\n }\n @if (session.info.botName) {\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >smart_toy</span>\n }\n </div>\n </div>\n }\n @if (session.events && session.events.length) {\n <ul class=\"rtsee-events-dashboard-session-events-list\"\n >\n @for (event of session.events | slice:0:5; track event.id) {\n <li class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n }\n </ul>\n }\n\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\nimport {\n RTSeeEventsDashboard,\n RTSeeDashboardClient,\n} from '@rtsee/events-dashboard';\nimport { RtseeEventsDashboardSessionComponent } from '../rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n imports: [RtseeEventsDashboardSessionComponent],\n standalone: true,\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService,\n ) {}\n\n ngOnInit(): void {}\n\n openChat() {\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n @if (client.isConnected) {\n <div class=\"rtsee-dashboard-client-live-indicator\"></div>\n }\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n @for(session of client.sessions; track session.id) {\n <div class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-dashboard';\n\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\n\n@Component({\n selector: 'rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n imports: [RtseeEventsDashboardClientThumbnailComponent],\n standalone: true,\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n @for (client of eventsDashboard.clients; track client.id) {\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { CdkCopyToClipboard } from '@angular/cdk/clipboard';\nimport { IPresentationRoom } from '@rtsee/common';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { Message } from 'primeng/message';\nimport { Toast } from 'primeng/toast';\nimport { MessageService } from 'primeng/api';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-join-call',\n imports: [Button, CdkCopyToClipboard, Message, Toast],\n templateUrl: './join-call.component.html',\n providers: [MessageService],\n})\nexport class JoinCallComponent {\n recentlyCopied: boolean = false;\n\n @Input() presentation!: RTSeePresentation;\n @Input() room!: IPresentationRoom;\n constructor(private messageService: MessageService) {}\n\n copyClicked(): void {\n this.messageService.add({\n severity: 'success',\n summary: 'Link Copied!',\n detail: 'The link was copied to clipboard!',\n });\n this.recentlyCopied = true;\n setTimeout(() => {\n this.recentlyCopied = false;\n }, 2000);\n }\n\n protected readonly window = window;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-join-call\">\n <div class=\"rtsee-join-call-button\">\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.START_A_CALL_BUTTON]\"\n (click)=\"presentation.emitJoinRoomCallEvent()\"\n ></p-button>\n </div>\n <div class=\"rtsee-share-call-link\">\n <div class=\"rtsee-share-call-explain-section\">\n <div class=\"rtsee-share-call-explain-section-icon\">\n <span class=\"pi pi-link rtsee-link-icon\"></span>\n </div>\n <div class=\"rtsee-share-call-explain-section-text\">\n <span>Anyone can join your storytelling session using this link.</span>\n </div>\n </div>\n <div class=\"rtsee-share-call-link-section\">\n <p-toast position=\"bottom-center\" />\n <p-button [icon]=\"recentlyCopied ? 'pi pi-check' : 'pi pi-copy'\"\n severity=\"secondary\"\n class=\"rtsee-share-call-link-copy-btn\"\n [cdkCopyToClipboard]=\"window.location.origin + '?room_id=' + room.id\"\n (cdkCopyToClipboardCopied)=\"copyClicked()\"\n ></p-button>\n <p-message severity=\"info\"\n class=\"rtsee-share-call-link-text\"\n >{{ window.location.origin + '?room_id=' + room.id }}</p-message>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { NgClass } from '@angular/common';\nimport { Chip } from 'primeng/chip';\nimport { JoinCallComponent } from '../join-call/join-call.component';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-presentation-header',\n templateUrl: './presentation-header.component.html',\n imports: [Button, NgClass, Chip, JoinCallComponent],\n standalone: true,\n})\nexport class PresentationHeaderComponent {\n @Input() public presentation!: RTSeePresentation;\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<header class=\"rtsee-presentation-header\"\n [ngClass]=\"{\n 'rtsee-presentation-header-convertable': presentation.activeStory,\n 'rtsee-presentation-header-visible': presentation.activeStory?.headerVisible\n }\"\n>\n @if (!presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentations-header-title\">\n <div class=\"rtsee-presentations-header-title-overlay\"></div>\n <div class=\"rtsee-presentations-header-title-content\">\n <h1>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_TITLE_LABEL]}}</h1>\n <p class=\"rtsee-presentations-header-title-subtitle\">\n <span>{{presentation.labels[RTSeeTextLabelKeys.PRESENTATION_SUBTITLE_LABEL]}}</span>\n </p>\n </div>\n </div>\n }\n\n @if (presentation.activeRoom && !presentation.activeStory && !presentation.openedStoryDetails) {\n <div class=\"rtsee-presentation-room-block\">\n <rtsee-join-call [room]=\"presentation.activeRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n </div>\n }\n\n @if (presentation.activeStory) {\n <div class=\"rtsee-presentation-header-active-story-info\">\n <div class=\"rtsee-presentation-header-active-story-info-close\"\n (click)=\"presentation.disableActiveStory()\"\n >\n <i class=\"pi pi-arrow-left rtsee-presentation-header-active-story-info-close-icon\"></i>\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-details\">\n <p-chip [label]=\"presentation.activeStory.name\"\n [image]=\"presentation.activeStory.imageUrl || undefined\"\n class=\"rtsee-presentation-header-active-story-name\"\n alt=\"Story image\" />\n </div>\n <div class=\"rtsee-presentation-header-active-story-info-settings\"\n (click)=\"presentation.settings.expand()\"\n >\n <i class=\"pi pi-ellipsis-h rtsee-presentation-header-active-story-info-settings-icon\"></i>\n </div>\n </div>\n }\n @if (presentation.dashboard && !presentation.activeStory && !presentation.isDashboardOpen && !presentation.openedStoryDetails) {\n <p-button [label]=\"presentation.labels[RTSeeTextLabelKeys.DASHBOARD_BUTTON]\"\n (click)=\"presentation.toggleDashboardState()\"\n ></p-button>\n }\n</header>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeStory } from '@rtsee/presentation';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\n\n@Component({\n selector: 'rtsee-story-thumbnail',\n templateUrl: './story-thumbnail.component.html',\n imports: [RatingComponent],\n standalone: true,\n})\nexport class StoryThumbnailComponent implements OnInit {\n progressPercent: number = 0;\n protected readonly Math = Math;\n @Input() story!: RTSeeStory;\n\n ngOnInit(): void {\n if (this.story.preselectedSlideNumber) {\n this.progressPercent = Math.round(\n (this.story.preselectedSlideNumber / this.story.totalSlides) * 100,\n );\n }\n }\n}\n","<div class=\"rtsee-story-thumbnail\">\n <div class=\"rtsee-story-thumbnail-image-container\">\n <div class=\"rtsee-story-thumbnail-image\">\n <img [src]=\"story.imageUrl\"\n [alt]=\"story.name\"\n class=\"rtsee-story-thumbnail-image\"\n />\n </div>\n @if (story.preselectedSlideNumber) {\n <div class=\"rtsee-story-thumbnail-progress-bar-container\">\n <div class=\"rtsee-story-thumbnail-progress-bar\">\n <div class=\"rtsee-story-thumbnail-progress-bar-inner\"\n [style.width]=\"progressPercent + '%'\"\n ></div>\n </div>\n </div>\n }\n </div>\n <div class=\"rtsee-story-thumbnail-body-container\">\n <h4 class=\"rtsee-story-thumbnail-title\">{{story.name}}</h4>\n <div class=\"rtsee-story-thumbnail-body-meta\">\n @if (story.rating) {\n <rtsee-rating [rate]=\"{maxValue: 5, value: story.rating}\"></rtsee-rating>\n }\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-thumbnail-time-container\">\n <span class=\"rtsee-story-thumbnail-info-time-icon material-icons-outlined\">schedule</span>\n <span class=\"rtsee-story-thumbnail-info-read-time\">{{ Math.ceil(story.averageReadTime / 60) }} хв</span>\n </span>\n <span class=\"rtsee-story-thumbnail-label-container\">{{\"7\"}}+</span>\n }\n </div>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Input } from '@angular/core';\nimport { RTSeeStory, RTSeeStorySlide } from '@rtsee/presentation';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { Button } from 'primeng/button';\nimport { RTSeePresentationSettings } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-slide',\n templateUrl: './slide.component.html',\n imports: [NgStyle, WidgetDirective, Button, NgClass],\n standalone: true,\n})\nexport class SlideComponent implements AfterViewInit {\n hideRewindControls: boolean = true;\n lastScrollPosition: number = 0;\n scrollingDown: boolean = false;\n\n @Input() story!: RTSeeStory;\n @Input() slide!: RTSeeStorySlide;\n @Input() settings!: RTSeePresentationSettings;\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n slideRewindClicked(forward: boolean) {\n if (forward) {\n this.story.nextSlide();\n } else {\n this.story.previousSlide();\n }\n }\n\n ngAfterViewInit() {\n const parentSlideEl: HTMLElement | null =\n this.elementRef.nativeElement.closest('.story-player-slide-container');\n if (!parentSlideEl) {\n return;\n }\n\n this.story.onNewSlideRendered(this.slide.slideNumber, parentSlideEl);\n this.scrollingDown = !this.story.headerVisible;\n\n setTimeout(() => {\n this.hideRewindControls = false;\n }, 500);\n }\n\n onScroll(target: EventTarget | null): void {\n if (target && target instanceof HTMLElement) {\n this.handleScroll(\n target.scrollTop,\n target.scrollHeight,\n target.clientHeight,\n );\n }\n }\n\n private handleScroll(\n position: number,\n scrollHeight: number,\n clientHeight: number,\n ) {\n const BUFFER: number = 50;\n const isAtBottom: boolean =\n Math.abs(scrollHeight - position - clientHeight) < 10;\n\n if (position > this.lastScrollPosition + BUFFER) {\n if (!this.scrollingDown) {\n this.scrollingDown = true;\n console.log('started scrolling down');\n this.story.toggleHeader(false);\n }\n\n this.lastScrollPosition = position;\n } else if (position + BUFFER < this.lastScrollPosition) {\n if (this.scrollingDown) {\n this.scrollingDown = false;\n console.log('scrolled up');\n this.story.toggleHeader(true);\n }\n\n this.lastScrollPosition = position;\n } else if (isAtBottom) {\n this.lastScrollPosition = position;\n this.story.toggleHeader(true);\n }\n }\n}\n","<div class=\"rtsee-presentation-slide\" (scroll)=\"onScroll($event.target)\">\n @if (slide.widget) {\n <ng-template widgetHost></ng-template>\n }\n <div class=\"rtsee-presentation-slide-default\">\n @if (slide.imageUrl) {\n <div class=\"rtsee-presentation-slide-image-container\"\n [ngStyle]=\"{'background-image': 'url(' + slide.imageUrl + ')'}\"\n >\n </div>\n }\n <div class=\"rtsee-presentation-slide-text\">\n <p [style.font-size]=\"settings.fontSize + 'rem'\">{{slide.text}}</p>\n </div>\n <div class=\"rtsee-presentation-slide-controls\"\n [ngClass]=\"{'rtsee-presentation-slide-controls-hidden': hideRewindControls}\"\n >\n @if (story.activeSlideNumber !== 1) {\n <p-button class=\"slide-navigation-btn navigation-prev\"\n label=\"Previous Page\"\n icon=\"pi pi-arrow-left\"\n [severity]=\"'secondary'\"\n [iconPos]=\"'left'\"\n (click)=\"slideRewindClicked(false)\"\n >\n </p-button>\n }\n @if (story.activeSlideNumber !== this.story.totalSlides) {\n <p-button class=\"slide-navigation-btn navigation-next\"\n label=\"Next Page\"\n icon=\"pi pi-arrow-right\"\n [iconPos]=\"'right'\"\n (click)=\"slideRewindClicked(true)\"\n >\n </p-button>\n }\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeStory } from '@rtsee/presentation';\nimport { NgClass } from '@angular/common';\nimport { SlideComponent } from '../slide/slide.component';\nimport Swiper from 'swiper';\nimport { EffectCards, Manipulation } from 'swiper/modules';\nimport { RTSeePresentationSettings } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-story-player',\n templateUrl: './story-player.component.html',\n imports: [NgClass, SlideComponent],\n standalone: true,\n})\nexport class StoryPlayerComponent implements OnInit, AfterViewInit {\n @Input() story!: RTSeeStory;\n @Input() settings!: RTSeePresentationSettings;\n @ViewChild('swiperContainer') swiperEl!: ElementRef<HTMLElement>;\n constructor() {\n Swiper.use([EffectCards, Manipulation]);\n }\n\n ngOnInit() {\n console.log('Story Player: Story = ', this.story);\n }\n\n ngAfterViewInit() {\n const swiper = new Swiper(this.swiperEl.nativeElement, {\n effect: 'cards',\n grabCursor: true,\n });\n\n this.story.initSwiper(swiper);\n }\n}\n","<div class=\"rtsee-story-player\">\n <div class=\"rtsee-story-player-slider swiper\" #swiperContainer>\n <div class=\"rtsee-story-player-slider-inner swiper-wrapper\">\n @for (slide of story.slides; track slide.id) {\n <div class=\"story-player-slide-container swiper-slide\"\n [ngClass]=\"{'story-player-slide-active': slide.isActive}\"\n >\n <rtsee-slide [slide]=\"slide\"\n [story]=\"story\"\n [settings]=\"settings\"\n ></rtsee-slide>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { OrderList } from 'primeng/orderlist';\nimport { RTSeeManageStorySlides } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-manage-slides',\n imports: [OrderList, Button, NgClass],\n templateUrl: './manage-slides.component.html',\n})\nexport class ManageSlidesComponent {\n @Input() manageSlides!: RTSeeManageStorySlides;\n}\n","<div class=\"rtsee-presentation-manage-slides\">\n <div class=\"rtsee-presentation-manage-slides-header\">\n <p-button (click)=\"manageSlides.selectNewSlide()\"\n label=\"Create A New Slide\"\n ></p-button>\n </div>\n <div class=\"rtsee-presentation-manage-slides-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageSlides.slides\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n scrollHeight=\"40rem\"\n controlsPosition=\"right\"\n (onReorder)=\"manageSlides.onReorder($event)\"\n [disabled]=\"manageSlides.loadInProgress\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-slides-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-slides-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-slides-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n class=\"rtsee-ordered-list-item-info-label\"\n >{{ option.slideNumber }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageSlides.selectSlide(option.slideNumber)\"\n ></p-button>\n <p-button label=\"Delete\"\n severity=\"warn\"\n class=\"rtsee-ordered-list-item-info-button\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStorySlide } from '@rtsee/presentation';\nimport { RTSeeImageUploaderComponent } from '../../../../../common/components/image-uploader/image-uploader.component';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { TypedReactiveForm } from '../../../../rtsee-auth/types/auth-form.type';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { Button } from 'primeng/button';\n\nexport type RTSeeSlideForm = {\n text: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-slide',\n imports: [\n RTSeeImageUploaderComponent,\n FormsModule,\n ReactiveFormsModule,\n FloatLabel,\n InputGroup,\n Message,\n Textarea,\n Button,\n ],\n templateUrl: './manage-slide.component.html',\n})\nexport class ManageSlideComponent implements OnInit {\n slideForm: FormGroup;\n\n @Input() manageSlide!: RTSeeManageStorySlide;\n constructor(private readonly formBuilder: FormBuilder) {\n this.slideForm = this.formBuilder.group<TypedReactiveForm<RTSeeSlideForm>>({\n text: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131000),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.textField.setValue(this.manageSlide.slide.text);\n }\n\n get textField(): FormControl<string> {\n return this.slideForm.get('text') as FormControl<string>;\n }\n\n submit() {\n if (this.slideForm.valid) {\n void this.manageSlide.save({\n text: this.textField.value,\n });\n } else {\n this.slideForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n}\n","<div class=\"rtsee-presentation-manage-story-slide\">\n <div class=\"rtsee-manage-story-slide-info rtsee-form-container\">\n <div class=\"rtsee-manage-story-image\">\n <rtsee-image-uploader [imageUploader]=\"manageSlide.imageUploader\"\n ></rtsee-image-uploader>\n </div>\n\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"slideForm\"\n (ngSubmit)=\"submit()\"\n >\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"textField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"textField.invalid && textField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Text</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (textField.hasError('required') && textField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageSlide.cancel()\"\n [disabled]=\"manageSlide.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { InputText } from \"primeng/inputtext\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-text\",\n standalone: true,\n imports: [FormsModule, InputText, InputGroup, FloatLabel, Message],\n templateUrl: \"./text-field.component.html\"\n})\nexport class TextFieldComponent {\n @Input() field!: RTSeeFormField<string>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input [id]=\"field.name\"\n class=\"rtsee-form-field\"\n pInputText\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n />\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Textarea } from \"primeng/textarea\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-textarea\",\n standalone: true,\n imports: [FormsModule, Textarea, InputGroup, FloatLabel, Message],\n templateUrl: \"./textarea-field.component.html\"\n})\nexport class TextareaFieldComponent {\n @Input() field!: RTSeeFormField<string>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [id]=\"field.name\"\n class=\"rtsee-form-field\"\n pTextarea\n rows=\"3\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></textarea>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Checkbox } from \"primeng/checkbox\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-checkbox\",\n standalone: true,\n imports: [FormsModule, Checkbox, Message],\n templateUrl: \"./checkbox-field.component.html\"\n})\nexport class CheckboxFieldComponent {\n @Input() field!: RTSeeFormField<boolean>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container flex items-center\">\n <p-checkbox [inputId]=\"field.name\"\n [binary]=\"true\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n ></p-checkbox>\n <label [for]=\"field.name\" class=\"ml-2\">{{ field.name }}</label>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButton } from \"primeng/radiobutton\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldRadioGroup } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-radio\",\n standalone: true,\n imports: [FormsModule, RadioButton, Message],\n templateUrl: \"./radio-field.component.html\"\n})\nexport class RadioFieldComponent {\n @Input() field!: RTSeeFormFieldRadioGroup;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <div class=\"rtsee-radio-group-label font-semibold\">{{ field.name }}</div>\n @for (option of field.radioOptions; track option.value) {\n <div class=\"flex items-center mt-2\">\n <p-radioButton [name]=\"field.name\"\n [value]=\"option.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [inputId]=\"field.name + '_' + option.value\"\n ></p-radioButton>\n <label [for]=\"field.name + '_' + option.value\" class=\"ml-2\">{{ option.label }}</label>\n </div>\n }\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputGroup } from \"primeng/inputgroup\";\nimport { FloatLabel } from \"primeng/floatlabel\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-number\",\n standalone: true,\n imports: [FormsModule, InputNumber, InputGroup, FloatLabel, Message],\n templateUrl: \"./number-field.component.html\"\n})\nexport class NumberFieldComponent {\n @Input() field!: RTSeeFormField<number>;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [inputId]=\"field.name\"\n class=\"rtsee-form-field\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onModelChange()\"\n [class.p-invalid]=\"!field.isValid && field.isDirty\"\n ></p-inputNumber>\n <label [for]=\"field.name\">{{ field.name }}</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { RTSeeFormAutocomplete } from '@rtsee/utilities-ui';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rtsee-autocomplete',\n imports: [AutoCompleteModule, FloatLabel, InputGroup, FormsModule],\n templateUrl: './autocomplete.component.html',\n})\nexport class AutocompleteComponent {\n @Input() config!: RTSeeFormAutocomplete;\n}\n","<div class=\"rtsee-autocomplete rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-autoComplete [(ngModel)]=\"config.selectedSuggestions\"\n [inputId]=\"config.inputId\"\n [multiple]=\"true\"\n [fluid]=\"config.fluid\"\n [suggestions]=\"config.visibleSuggestions\"\n [optionLabel]=\"config.suggestionLabel\"\n (completeMethod)=\"config.onQueryChanged($event)\"\n (onSelect)=\"config.onSelect($event)\"\n ></p-autoComplete>\n <label [for]=\"config.inputId\">{{config.inputName}}</label>\n </p-floatlabel>\n </p-inputgroup>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\nimport { AutocompleteComponent } from \"../../../autocomplete/autocomplete.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldAutocomplete } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-autocomplete\",\n standalone: true,\n imports: [AutocompleteComponent, Message],\n templateUrl: \"./autocomplete-field.component.html\"\n})\nexport class AutocompleteFieldComponent implements OnInit {\n @Input() field!: RTSeeFormFieldAutocomplete;\n @Output() fieldChanged = new EventEmitter<void>();\n\n ngOnInit() {\n this.field.autocomplete.on(\"select\", () => {\n this.onModelChange();\n });\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <rtsee-autocomplete [config]=\"field.autocomplete\"></rtsee-autocomplete>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, forwardRef, Input, OnInit } from '@angular/core';\nimport { Select } from 'primeng/select';\nimport { RecursiveSelect } from '@rtsee/utilities-ui';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'rtsee-recursive-select',\n imports: [Select, FormsModule],\n templateUrl: './recursive-select.component.html',\n})\nexport class RecursiveSelectComponent<E> implements OnInit {\n @Input() selectModel!: RecursiveSelect<E>;\n value: E | undefined = undefined;\n\n ngOnInit(): void {\n this.value = this.selectModel.value;\n }\n}\n","<div class=\"rtsee-recursive-select\">\n @for (item of selectModel.selectionHierarchy; track item.level) {\n <div class=\"rtsee-form-field-container\">\n <p-select [options]=\"item.children\"\n [(ngModel)]=\"item.selected\"\n [optionLabel]=\"'label'\"\n [placeholder]=\"selectModel.placeholderValue\"\n (onChange)=\"selectModel.onSelectionChanged(item.selected, item.level)\"\n class=\"rtsee-form-field\"\n />\n </div>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, DoCheck } from \"@angular/core\";\nimport { RecursiveSelectComponent } from \"../../../recursive-select/recursive-select.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldRecursiveSelect } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-recursive-select\",\n standalone: true,\n imports: [RecursiveSelectComponent, Message],\n templateUrl: \"./recursive-select-field.component.html\"\n})\nexport class RecursiveSelectFieldComponent implements DoCheck {\n @Input() field!: RTSeeFormFieldRecursiveSelect;\n @Output() fieldChanged = new EventEmitter<void>();\n\n private lastValue: any;\n\n ngDoCheck() {\n if (this.field.recursiveSelect.value !== this.lastValue) {\n this.lastValue = this.field.recursiveSelect.value;\n this.onModelChange();\n }\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <rtsee-recursive-select [selectModel]=\"field.recursiveSelect\"></rtsee-recursive-select>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\nimport { RTSeeImageUploaderComponent } from \"../../../image-uploader/image-uploader.component\";\nimport { Message } from \"primeng/message\";\nimport { RTSeeFormFieldImageUploader } from \"@rtsee/utilities-ui\";\n\n@Component({\n selector: \"rtsee-field-image-uploader\",\n standalone: true,\n imports: [RTSeeImageUploaderComponent, Message],\n templateUrl: \"./image-uploader-field.component.html\"\n})\nexport class ImageUploaderFieldComponent implements OnInit {\n @Input() field!: RTSeeFormFieldImageUploader;\n @Output() fieldChanged = new EventEmitter<void>();\n\n ngOnInit() {\n this.field.imageUploader.on(\"completed\", () => {\n this.onModelChange();\n });\n }\n\n onModelChange() {\n this.field.digest();\n this.fieldChanged.emit();\n }\n}\n","<div class=\"rtsee-form-field-container\">\n <div class=\"rtsee-image-uploader-label font-semibold mb-2\">{{ field.name }}</div>\n <rtsee-image-uploader [imageUploader]=\"field.imageUploader\"></rtsee-image-uploader>\n @if (!field.isValid && field.isDirty) {\n @for (error of field.validator.result.errors; track error.message) {\n <p-message class=\"rtsee-form-field-error-message block mt-1\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ error.message }}</p-message>\n }\n }\n</div>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { RTSeeFormField } from \"@rtsee/utilities-ui\";\nimport { TextFieldComponent } from \"./field-sub-types/text-field.component\";\nimport { TextareaFieldComponent } from \"./field-sub-types/textarea-field.component\";\nimport { CheckboxFieldComponent } from \"./field-sub-types/checkbox-field.component\";\nimport { RadioFieldComponent } from \"./field-sub-types/radio-field.component\";\nimport { NumberFieldComponent } from \"./field-sub-types/number-field.component\";\nimport { AutocompleteFieldComponent } from \"./field-sub-types/autocomplete-field.component\";\nimport { RecursiveSelectFieldComponent } from \"./field-sub-types/recursive-select-field.component\";\nimport { ImageUploaderFieldComponent } from \"./field-sub-types/image-uploader-field.component\";\n\n@Component({\n selector: \"rtsee-form-field\",\n standalone: true,\n imports: [\n TextFieldComponent,\n TextareaFieldComponent,\n CheckboxFieldComponent,\n RadioFieldComponent,\n NumberFieldComponent,\n AutocompleteFieldComponent,\n RecursiveSelectFieldComponent,\n ImageUploaderFieldComponent\n ],\n templateUrl: \"./form-field.component.html\"\n})\nexport class FormFieldComponent {\n @Input() field!: RTSeeFormField;\n @Output() fieldChanged = new EventEmitter<void>();\n\n onFieldChanged() {\n this.fieldChanged.emit();\n }\n}\n","@switch (field.type) {\n @case ('text') {\n <rtsee-field-text [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-text>\n }\n @case ('textarea') {\n <rtsee-field-textarea [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-textarea>\n }\n @case ('checkbox') {\n <rtsee-field-checkbox [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-checkbox>\n }\n @case ('radio') {\n <rtsee-field-radio [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-radio>\n }\n @case ('number') {\n <rtsee-field-number [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-number>\n }\n @case ('autocomplete') {\n <rtsee-field-autocomplete [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-autocomplete>\n }\n @case ('recursive-select') {\n <rtsee-field-recursive-select [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-recursive-select>\n }\n @case ('image-uploader') {\n <rtsee-field-image-uploader [field]=\"$any(field)\" (fieldChanged)=\"onFieldChanged()\"></rtsee-field-image-uploader>\n }\n}\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\nimport { RTSeeForm } from \"@rtsee/utilities-ui\";\nimport { FormFieldComponent } from \"../form-field/form-field.component\";\nimport { Button } from \"primeng/button\";\nimport { FormsModule } from \"@angular/forms\";\n\n@Component({\n selector: \"rtsee-form\",\n standalone: true,\n imports: [FormFieldComponent, Button, FormsModule],\n templateUrl: \"./form.component.html\"\n})\nexport class FormComponent {\n @Input() form!: RTSeeForm;\n @Output() formSubmit = new EventEmitter<RTSeeForm>();\n\n submit() {\n this.formSubmit.emit(this.form);\n }\n\n onFieldChanged() {\n this.form.evaluateIsValid();\n this.form.evaluateIsDirty();\n this.form.evaluateIsChanged();\n }\n}\n","<div class=\"rtsee-form-container\">\n @if (form.name) {\n <h3 class=\"rtsee-form-title font-bold text-lg mb-2\">{{ form.name }}</h3>\n }\n @if (form.description) {\n <p class=\"rtsee-form-description text-sm text-gray-500 mb-4\">{{ form.description }}</p>\n }\n <form class=\"rtsee-story-form rtsee-form\" (ngSubmit)=\"submit()\">\n @for (field of form.fields; track field.name) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-form-field [field]=\"field\"\n (fieldChanged)=\"onFieldChanged()\"\n ></rtsee-form-field>\n </div>\n }\n\n <div class=\"rtsee-form-submit-container mt-4\">\n <ng-content>\n <p-button type=\"submit\" label=\"Submit\" [disabled]=\"!form.isValid\"></p-button>\n </ng-content>\n </div>\n </form>\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { RTSeeManageStory } from \"@rtsee/presentation\";\nimport { Button } from \"primeng/button\";\nimport { ManageSlidesComponent } from \"./manage-slides/manage-slides.component\";\nimport { ManageSlideComponent } from \"./manage-slide/manage-slide.component\";\nimport { Divider } from \"primeng/divider\";\nimport { FormComponent } from \"../../../../common/components/forms/form/form.component\";\n\n@Component({\n selector: \"rtsee-manage-story\",\n standalone: true,\n imports: [\n Button,\n ManageSlidesComponent,\n ManageSlideComponent,\n Divider,\n FormComponent,\n ],\n templateUrl: \"./manage-story.component.html\",\n})\nexport class ManageStoryComponent implements OnInit {\n @Input() manageStory!: RTSeeManageStory;\n\n ngOnInit() {\n if (!this.manageStory.activeStoryForm) {\n this.manageStory.initForm();\n }\n\n if (!this.manageStory.activeStoryForm) {\n throw new Error(`Active story form should be selected`);\n }\n }\n\n submit() {\n if (!this.manageStory.activeStoryForm) {\n return;\n }\n this.manageStory.activeStoryForm.submit();\n }\n}\n","<div class=\"rtsee-manage-story\">\n @if (!manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-info rtsee-form-container\">\n @if (manageStory.activeStoryForm) {\n <rtsee-form [form]=\"manageStory.activeStoryForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageStory.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageStory.cancel()\"\n [disabled]=\"manageStory.saveInProgress\"\n />\n </rtsee-form>\n\n @if (manageStory.story.id) {\n <p-divider />\n <div class=\"rtsee-story-slides-wrapper\">\n <rtsee-manage-slides [manageSlides]=\"manageStory.manageSlides\"></rtsee-manage-slides>\n </div>\n }\n }\n </div>\n }\n @if (manageStory.manageSlides.selectedSlide) {\n <div class=\"rtsee-manage-story-slide-wrapper\">\n <rtsee-manage-slide [manageSlide]=\"manageStory.manageSlides.selectedSlide\"\n ></rtsee-manage-slide>\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStories } from '@rtsee/presentation';\nimport { ManageStoryComponent } from '../manage-story/manage-story.component';\nimport { Button } from 'primeng/button';\nimport { OrderList } from 'primeng/orderlist';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'rtsee-manage-stories',\n imports: [ManageStoryComponent, Button, OrderList, NgClass],\n templateUrl: './manage-stories.component.html',\n})\nexport class ManageStoriesComponent implements OnInit {\n @Input() manageStories!: RTSeeManageStories;\n\n ngOnInit(): void {\n this.manageStories.init();\n }\n}\n","<div class=\"rtsee-manage-stories\">\n <div class=\"rtsee-manage-stories-header\">\n @if (!manageStories.selectedStory) {\n <p-button (click)=\"manageStories.selectNewStory()\"\n label=\"Create A New Story\"\n ></p-button>\n }\n </div>\n @if (manageStories.selectedStory) {\n <div class=\"rtsee-manage-story-container\">\n <rtsee-manage-story [manageStory]=\"manageStories.selectedStory\"\n ></rtsee-manage-story>\n </div>\n }\n @if (!manageStories.selectedStory) {\n <div class=\"rtsee-manage-stories-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageStories.stories\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n [scrollHeight]=\"'40rem'\"\n class=\"rtsee-ordered-list-inner\"\n (onReorder)=\"manageStories.onReorder()\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <div class=\"rtsee-presentation-manage-stories-list-item rtsee-ordered-list-item\">\n <img\n [src]=\"option.imageUrl\"\n [alt]=\"'slide_image'\"\n [style.width]=\"'60px'\"\n class=\"rtsee-presentation-manage-stories-list-item-image rtsee-ordered-list-item-image\"\n />\n <div class=\"rtsee-presentation-manage-stories-list-item-info rtsee-ordered-list-item-info\">\n <span [ngClass]=\"{\n 'text-sm': true,\n 'text-surface-500': !selected,\n 'dark:text-surface-400': !selected,\n 'text-inherit': selected,\n }\"\n >{{ option.name }}</span>\n <div class=\"rtsee-ordered-list-item-info-buttons\">\n <p-button label=\"Edit\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n <p-button label=\"Delete\"\n [severity]=\"'warn'\"\n class=\"rtsee-ordered-list-item-info-button\"\n (click)=\"manageStories.selectStory(option.id)\"\n ></p-button>\n </div>\n </div>\n </div>\n </ng-template>\n </p-orderList>\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageStoryCategory } from '@rtsee/presentation';\n\nexport type RTSeeCategoryForm = {\n name: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-category',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n ],\n templateUrl: './manage-category.component.html',\n})\nexport class ManageCategoryComponent implements OnInit {\n categoryForm: FormGroup;\n\n @Input() manageCategory!: RTSeeManageStoryCategory;\n\n constructor(private formBuilder: FormBuilder) {\n this.categoryForm = this.formBuilder.group<\n TypedReactiveForm<RTSeeCategoryForm>\n >({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageCategory.category.name);\n this.descriptionField.setValue(\n this.manageCategory.category.description || '',\n );\n }\n\n submit() {\n if (this.categoryForm.valid) {\n void this.manageCategory.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n });\n } else {\n this.categoryForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.categoryForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.categoryForm.get('description') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-category\">\n <div class=\"rtsee-manage-category-info rtsee-form-container\">\n <form class=\"rtsee-story-form rtsee-form\"\n [formGroup]=\"categoryForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"sign-up-email\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageCategory.cancel()\"\n [disabled]=\"manageCategory.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStoryCategories } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ManageCategoryComponent } from '../manage-category/manage-category.component';\n\n@Component({\n selector: 'rtsee-manage-categories',\n imports: [Button, ManageCategoryComponent],\n templateUrl: './manage-categories.component.html',\n})\nexport class ManageCategoriesComponent implements OnInit {\n @Input() manageCategories!: RTSeeManageStoryCategories;\n\n ngOnInit(): void {\n this.manageCategories.init();\n }\n}\n","<div class=\"rtsee-manage-stories-categories\">\n <div class=\"rtsee-manage-stories-categories-header\">\n @if (!manageCategories.selectedCategory) {\n <p-button (click)=\"manageCategories.selectNewCategory()\"\n label=\"Create A New Category\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-categories-body\">\n @if (manageCategories.selectedCategory) {\n <rtsee-manage-category [manageCategory]=\"manageCategories.selectedCategory\"\n ></rtsee-manage-category>\n }\n @if (!manageCategories.selectedCategory) {\n @for (category of manageCategories.categories; track category.id) {\n <p (click)=\"manageCategories.selectCategory(category.id)\">{{category.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageStoryLabel } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { ColorPicker } from 'primeng/colorpicker';\n\nexport type RTSeeLabelForm = {\n name: string | null;\n description: string | null;\n symbol: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-label',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n ColorPicker,\n ],\n templateUrl: './manage-label.component.html',\n})\nexport class ManageLabelComponent implements OnInit {\n labelForm: FormGroup;\n\n @Input() manageLabel!: RTSeeManageStoryLabel;\n constructor(private formBuilder: FormBuilder) {\n this.labelForm = this.formBuilder.group<TypedReactiveForm<RTSeeLabelForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n symbol: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageLabel.label.name);\n this.descriptionField.setValue(this.manageLabel.label.description || '');\n }\n\n submit() {\n if (this.labelForm.valid) {\n void this.manageLabel.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n color: '',\n symbol: this.symbolField.value,\n });\n } else {\n this.labelForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.labelForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.labelForm.get('description') as FormControl<string>;\n }\n\n get symbolField(): FormControl<string> {\n return this.labelForm.get('symbol') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-label\">\n <div class=\"rtsee-manage-story-label-info rtsee-form-container\">\n <form class=\"rtsee-story-label-form rtsee-form\"\n [formGroup]=\"labelForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-symbol-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"symbolField\"\n [class.p-invalid]=\"symbolField.invalid && symbolField.touched\"\n />\n <label for=\"rtsee-story-label-symbol-field\">Symbol</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (symbolField.hasError('required') && symbolField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Symbol is required, pick a smile, dummy</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-colorPicker [(ngModel)]=\"manageLabel.label.color\"/>\n </div>\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageLabel.cancel()\"\n [disabled]=\"manageLabel.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { RTSeeManageStoryLabels } from '@rtsee/presentation';\nimport { ManageLabelComponent } from '../manage-label/manage-label.component';\n\n@Component({\n selector: 'rtsee-manage-labels',\n imports: [Button, ManageLabelComponent],\n templateUrl: './manage-labels.component.html',\n})\nexport class ManageLabelsComponent implements OnInit {\n @Input() manageLabels!: RTSeeManageStoryLabels;\n\n ngOnInit(): void {\n this.manageLabels.init();\n }\n}\n","<div class=\"rtsee-manage-stories-labels\">\n <div class=\"rtsee-manage-stories-labels-header\">\n @if (!manageLabels.selectedLabel) {\n <p-button (click)=\"manageLabels.selectNewLabel()\"\n label=\"Create A New Label\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-labels-body\">\n @if (manageLabels.selectedLabel) {\n <rtsee-manage-label [manageLabel]=\"manageLabels.selectedLabel\"\n ></rtsee-manage-label>\n }\n @if (!manageLabels.selectedLabel) {\n @for (label of manageLabels.labels; track label.id) {\n <p (click)=\"manageLabels.selectLabel(label.id)\">{{label.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { TypedReactiveForm } from '../../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageStoryTopic } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ColorPicker } from 'primeng/colorpicker';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { AutocompleteComponent } from '../../../../common/components/autocomplete/autocomplete.component';\nimport { OrderList } from 'primeng/orderlist';\n\nexport type RTSeeTopicForm = {\n name: string | null;\n key: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-manage-topic',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n AutocompleteComponent,\n OrderList,\n ],\n templateUrl: './manage-topic.component.html',\n})\nexport class ManageTopicComponent {\n topicForm: FormGroup;\n\n @Input() manageTopic!: RTSeeManageStoryTopic;\n constructor(private formBuilder: FormBuilder) {\n this.topicForm = this.formBuilder.group<TypedReactiveForm<RTSeeTopicForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n key: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(1),\n Validators.maxLength(244),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n ngOnInit() {\n this.nameField.setValue(this.manageTopic.topic.name);\n this.descriptionField.setValue(this.manageTopic.topic.description || '');\n this.keyField.setValue(this.manageTopic.topic.key || '');\n }\n\n submit() {\n if (this.topicForm.valid) {\n void this.manageTopic.save({\n name: this.nameField.value,\n description: this.descriptionField.value,\n key: this.keyField.value,\n });\n } else {\n this.topicForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n get nameField(): FormControl<string> {\n return this.topicForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.topicForm.get('description') as FormControl<string>;\n }\n\n get keyField(): FormControl<string> {\n return this.topicForm.get('key') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-story-topic\">\n <div class=\"rtsee-manage-story-topic-info rtsee-form-container\">\n <form class=\"rtsee-story-topic-form rtsee-form\"\n [formGroup]=\"topicForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-topic-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-topic-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-topic-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-topic-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-topic-key-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"keyField\"\n [class.p-invalid]=\"keyField.invalid && keyField.touched\"\n />\n <label for=\"rtsee-story-topic-key-field\">Key</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (keyField.hasError('required') && keyField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Key is required, pick a smile, dummy</p-message>\n }\n </div>\n <rtsee-autocomplete [config]=\"manageTopic.categoriesMultiselect\"></rtsee-autocomplete>\n <div class=\"rtsee-manage-story-topic-categories-list rtsee-ordered-list\">\n <p-orderList [value]=\"manageTopic.topic.categories\"\n dataKey=\"id\"\n [dragdrop]=\"true\"\n [responsive]=\"true\"\n scrollHeight=\"40rem\"\n controlsPosition=\"right\"\n (onReorder)=\"manageTopic.onReorder($event)\"\n >\n <ng-template let-option let-selected=\"selected\" #item>\n <p>{{option.name}}</p>\n <p-button label=\"Delete\" (click)=\"manageTopic.removeCategory(option.id)\"></p-button>\n </ng-template>\n </p-orderList>\n </div>\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTopic.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"manageTopic.cancel()\"\n [disabled]=\"manageTopic.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { ManageTopicComponent } from '../manage-topic/manage-topic.component';\nimport { RTSeeManageStoryTopics } from '@rtsee/presentation';\n\n@Component({\n selector: 'rtsee-manage-topics',\n imports: [Button, ManageTopicComponent],\n templateUrl: './manage-topics.component.html',\n})\nexport class ManageTopicsComponent implements OnInit {\n @Input() manageTopics!: RTSeeManageStoryTopics;\n\n ngOnInit(): void {\n this.manageTopics.init();\n }\n}\n","<div class=\"rtsee-manage-stories-topics\">\n <div class=\"rtsee-manage-stories-topics-header\">\n @if (!manageTopics.selectedTopic) {\n <p-button (click)=\"manageTopics.selectNewTopic()\"\n label=\"Create A New Topic\"\n ></p-button>\n }\n </div>\n <div class=\"rtsee-manage-stories-topics-body\">\n @if (manageTopics.selectedTopic) {\n <rtsee-manage-topic [manageTopic]=\"manageTopics.selectedTopic\"\n ></rtsee-manage-topic>\n }\n @if (!manageTopics.selectedTopic) {\n @for (topic of manageTopics.topics; track topic.id) {\n <p (click)=\"manageTopics.selectTopic(topic.id)\">{{topic.name}}</p>\n }\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ManageStoriesComponent } from '../manage-stories/manage-stories.component';\nimport { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs';\nimport { RTSeePresentationDashboard } from '@rtsee/presentation';\nimport { ManageCategoriesComponent } from '../manage-categories/manage-categories.component';\nimport { Button } from 'primeng/button';\nimport { Chip } from 'primeng/chip';\nimport { ManageLabelsComponent } from '../manage-labels/manage-labels.component';\nimport { ManageTopicsComponent } from '../manage-topics/manage-topics.component';\n\n@Component({\n selector: 'rtsee-presentations-dashboard',\n imports: [\n ManageStoriesComponent,\n Tabs,\n TabList,\n Tab,\n TabPanels,\n TabPanel,\n ManageCategoriesComponent,\n Button,\n Chip,\n ManageLabelsComponent,\n ManageTopicsComponent,\n ],\n templateUrl: './presentations-dashboard.component.html',\n})\nexport class PresentationsDashboardComponent {\n @Input() dashboard!: RTSeePresentationDashboard;\n}\n","<div class=\"rtsee-presentations-dashboard\">\n <div class=\"rtsee-presentations-dashboard-header\">\n <p-chip label=\"Presentation Dashboard\" />\n <p-button label=\"Close\"\n (click)=\"dashboard.onCloseDashboardClicked()\"\n class=\"rtsee-presentations-dashboard-close-btn\"\n ></p-button>\n </div>\n\n <div class=\"manage-stories-container\">\n <p-tabs lazy value=\"stories\">\n <p-tablist>\n <p-tab value=\"stories\">Stories</p-tab>\n <p-tab value=\"categories\">Categories</p-tab>\n <p-tab value=\"labels\">Labels</p-tab>\n <p-tab value=\"topics\">Topics</p-tab>\n </p-tablist>\n <p-tabpanels>\n <p-tabpanel value=\"stories\">\n <ng-template #content>\n <rtsee-manage-stories [manageStories]=\"dashboard.manageStories\"></rtsee-manage-stories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"categories\">\n <ng-template #content>\n <rtsee-manage-categories [manageCategories]=\"dashboard.manageCategories\"></rtsee-manage-categories>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"labels\">\n <ng-template #content>\n <rtsee-manage-labels [manageLabels]=\"dashboard.manageLabels\"></rtsee-manage-labels>\n </ng-template>\n </p-tabpanel>\n <p-tabpanel value=\"topics\">\n <ng-template #content>\n <rtsee-manage-topics [manageTopics]=\"dashboard.manageTopics\"></rtsee-manage-topics>\n </ng-template>\n </p-tabpanel>\n </p-tabpanels>\n </p-tabs>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Slider } from 'primeng/slider';\nimport { Fieldset } from 'primeng/fieldset';\nimport { FormsModule } from '@angular/forms';\nimport { Button } from 'primeng/button';\nimport {\n RTSeePresentationSettings,\n RTSeePresentation,\n} from '@rtsee/presentation';\nimport { Chip } from 'primeng/chip';\nimport { Message } from 'primeng/message';\nimport { Tag } from 'primeng/tag';\nimport { Listbox } from 'primeng/listbox';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport { JoinCallComponent } from '../join-call/join-call.component';\n\n@Component({\n selector: 'rtsee-presentation-settings',\n imports: [\n Slider,\n Fieldset,\n FormsModule,\n Button,\n Chip,\n Message,\n Tag,\n Listbox,\n JoinCallComponent,\n ],\n templateUrl: './presentation-settings.component.html',\n})\nexport class PresentationSettingsComponent {\n @Input() public settings!: RTSeePresentationSettings;\n @Input() public presentation!: RTSeePresentation;\n protected readonly COMMON_CONSTANTS = COMMON_CONSTANTS;\n protected readonly window = window;\n}\n","<div class=\"rtsee-presentation-settings\">\n <div class=\"rtsee-presentation-settings-header\">\n <p-chip label=\"Settings\" />\n <p-button label=\"Close\"\n (click)=\"settings.collapse()\"\n class=\"rtsee-presentations-dashboard-close-btn\"\n ></p-button>\n </div>\n\n <div class=\"rtsee-presentation-rooms\">\n <p-fieldset legend=\"Rooms\">\n <p-listbox [options]=\"presentation.rooms\"\n [(ngModel)]=\"presentation.selectedRoom\"\n (onChange)=\"presentation.setActiveRoom()\"\n class=\"rtsee-presentation-settings-rooms-list\"\n >\n <ng-template #item let-room>\n <div class=\"rtsee-presentation-settings-rooms-list-item\">\n\n <img [src]=\"room.imageUrl || COMMON_CONSTANTS.defaultProfileImgUrl\"\n class=\"rtsee-presentation-settings-rooms-list-item-image\" />\n <div>{{ room.name }}</div>\n </div>\n </ng-template>\n </p-listbox>\n @if (presentation.selectedRoom) {\n <rtsee-join-call [room]=\"presentation.selectedRoom\"\n [presentation]=\"presentation\"\n ></rtsee-join-call>\n }\n </p-fieldset>\n </div>\n <div class=\"rtsee-presentation-sound-settings\">\n <p-fieldset legend=\"Volume\" class=\"rtsee-presentation-sound-settings-fieldset\">\n <div class=\"rtsee-presentation-sound-settings-inner\">\n <div class=\"rtsee-presentation-sound-settings-inner-left\">\n <p-slider [(ngModel)]=\"settings.volume\"\n (onChange)=\"settings.setVolume(settings.volume)\"\n />\n </div>\n <div class=\"rtsee-presentation-sound-settings-inner-right\">\n <p-tag severity=\"info\"\n class=\"rtsee-presentation-sound-value-label\"\n [icon]=\"settings.volume ? 'pi pi-volume-up' : 'pi pi-volume-off'\"\n [value]=\"settings.volume.toString()\"\n [rounded]=\"true\" />\n </div>\n </div>\n </p-fieldset>\n </div>\n <div class=\"rtsee-presentation-font-size-settings\">\n <p-fieldset legend=\"Font Size\">\n <div class=\"rtsee-presentation-font-size-range\">\n <p-slider [(ngModel)]=\"settings.fontSizeOption\"\n (onChange)=\"settings.setFontSize(settings.fontSizeOption)\"\n [min]=\"1\"\n [max]=\"10\"\n />\n </div>\n <p-message severity=\"secondary\" class=\"rtsee-presentation-font-size-example\">\n <span [style.font-size]=\"settings.fontSize + 'rem'\">A long time ago in a galaxy far, far away...</span>\n </p-message>\n </p-fieldset>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ChatComponent } from '../../rtsee-messenger/chat/chat.component';\nimport { IRTSeeChat } from '@rtsee/common';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-entity-comments',\n imports: [ChatComponent],\n templateUrl: './rtsee-entity-comments.component.html',\n})\nexport class RtseeEntityCommentsComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: IRTSeeChat;\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-entity-comments\">\n @if (messenger && chat) {\n <rtsee-chat [messenger]=\"messenger\"\n [chatData]=\"chat\"\n [entity]=\"entity\"\n ></rtsee-chat>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEntity } from '@rtsee/utilities-ui';\nimport { Chip } from 'primeng/chip';\n\n@Component({\n selector: 'rtsee-entity-tags',\n imports: [Chip],\n templateUrl: './rtsee-entity-tags.component.html',\n})\nexport class RtseeEntityTagsComponent {\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-entity-tags\">\n @if (entity && entity.tags?.length) {\n <div class=\"rtsee-entity-tags-list\">\n @for (tag of entity.tags; track tag.id) {\n <p-chip class=\"rtsee-entity-tag\">\n <span class=\"rtsee-entity-tag-right\"\n >{{tag.name}}</span>\n </p-chip>\n }\n </div>\n }\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { Textarea } from 'primeng/textarea';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\nimport { Message } from 'primeng/message';\nimport { IRatingConfigWithRate } from '@rtsee/common';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'rtsee-rate-input',\n templateUrl: './rate-input.component.html',\n imports: [ReactiveFormsModule, Textarea, RatingComponent, Message],\n standalone: true,\n})\nexport class RateInputComponent implements OnInit, OnDestroy {\n sendRateForm: FormGroup = new FormGroup({\n comment: new FormControl(''),\n });\n showMissingRateError: boolean = false;\n\n private _config!: IRatingConfigWithRate;\n private commentSubscription?: Subscription;\n\n @Input()\n set config(value: IRatingConfigWithRate) {\n this._config = value;\n this.updateCommentControl();\n }\n\n get config(): IRatingConfigWithRate {\n return this._config;\n }\n\n ngOnInit(): void {\n this.updateCommentControl();\n }\n\n ngOnDestroy(): void {\n this.commentSubscription?.unsubscribe();\n }\n\n private updateCommentControl(): void {\n this.commentSubscription?.unsubscribe();\n if (this._config && this._config.rate) {\n this.sendRateForm\n .get('comment')\n ?.setValue(this._config.rate.text || '', { emitEvent: false });\n\n this.commentSubscription = this.sendRateForm\n .get('comment')\n ?.valueChanges.subscribe((value) => {\n if (this._config.rate) {\n this._config.rate.text = value || '';\n }\n });\n }\n }\n}\n","<div class=\"rtsee-rate-input\">\n <div class=\"rtsee-rate-input-header\">\n <h3 class=\"rtsee-rate-input-name\">{{ config.name }}</h3>\n @if (config.description) {\n <p class=\"rtsee-rate-input-description\">{{ config.description }}</p>\n }\n </div>\n <div class=\"rtsee-rate-form-container\">\n <form [formGroup]=\"sendRateForm\" class=\"rtsee-rate-form\">\n <textarea\n [invalid]=\"false\"\n [autoResize]=\"true\"\n formControlName=\"comment\"\n pTextarea\n placeholder=\"Your comment here...\"\n class=\"rtsee-rate-comment-field\"\n rows=\"1\"\n cols=\"30\"\n ></textarea>\n </form>\n </div>\n <div class=\"rtsee-rate-select-container\">\n <rtsee-rating [config]=\"config\"></rtsee-rating>\n @if (!config.rate?.value && showMissingRateError) {\n <p-message severity=\"error\">Please add your rate!</p-message>\n }\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { Button } from 'primeng/button';\nimport { IRTSeeRatesGroup } from '@rtsee/common';\nimport { RTSeeRater } from '@rtsee/utilities-ui';\nimport { RatingComponent } from '../../../common/components/rating/rating.component';\n\n@Component({\n selector: 'rtsee-rate-item',\n imports: [RatingComponent, DatePipe, Button],\n templateUrl: './rate-item.component.html',\n})\nexport class RateItemComponent {\n @Input() group!: IRTSeeRatesGroup;\n @Input() rater!: RTSeeRater;\n @Input() showActions: boolean = false;\n\n @Output() edit = new EventEmitter<void>();\n @Output() delete = new EventEmitter<void>();\n\n onEdit(event: Event): void {\n event.stopPropagation();\n this.edit.emit();\n }\n\n onDelete(event: Event): void {\n event.stopPropagation();\n this.delete.emit();\n }\n\n getRatingConfigName(configId: string): string {\n if (!this.rater) {\n return '';\n }\n const config = this.rater.ratingConfigurations.find(\n (c) => c.id === configId,\n );\n return config ? config.name : '';\n }\n}\n","<div class=\"rtsee-rates-group-item\">\n <div class=\"rtsee-rates-group-header\">\n <div class=\"rtsee-rates-group-user-info\">\n @if (group.peer?.imageUrl) {\n <img\n class=\"rtsee-rates-group-avatar\"\n [src]=\"group.peer.imageUrl\"\n alt=\"User avatar\"\n />\n } @else {\n <div class=\"rtsee-rates-group-avatar-fallback\">\n {{ (group.peer?.name || \"?\").substring(0, 1) }}\n </div>\n }\n <span class=\"rtsee-rates-group-peer-name\">{{\n group.peer?.name || group.peerId\n }}</span>\n </div>\n\n <div class=\"rtsee-rates-group-right-header\">\n <span class=\"rtsee-rates-group-date\">{{\n group.createdAt | date: \"short\"\n }}</span>\n\n @if (showActions) {\n <div class=\"rtsee-rates-group-actions\">\n <p-button\n (click)=\"onEdit($event)\"\n [severity]=\"'secondary'\"\n [text]=\"true\"\n class=\"rtsee-rates-group-btn-edit\"\n >\n <span class=\"pi pi-pencil\"></span>\n </p-button>\n <p-button\n (click)=\"onDelete($event)\"\n [severity]=\"'danger'\"\n [text]=\"true\"\n class=\"rtsee-rates-group-btn-delete\"\n >\n <span class=\"pi pi-trash\"></span>\n </p-button>\n </div>\n }\n </div>\n </div>\n <div class=\"rtsee-rates-group-body\">\n @for (rate of group.rates; track rate.id) {\n <div class=\"rtsee-rates-group-rate-item-container\">\n <div class=\"rtsee-rates-group-rate-item\">\n <span class=\"rtsee-rates-group-rate-config-name\">{{\n getRatingConfigName(rate.configurationId)\n }}</span>\n <rtsee-rating [rate]=\"rate\"></rtsee-rating>\n </div>\n @if (rate.text) {\n <p class=\"rtsee-rates-group-rate-comment\">\"{{ rate.text }}\"</p>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { IRTSeeRate } from '@rtsee/common';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { RateInputComponent } from '../rate-input/rate-input.component';\nimport { RateItemComponent } from '../rate-item/rate-item.component';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rtsee-rater',\n imports: [Button, RateInputComponent, RateItemComponent, NgClass],\n templateUrl: './rater.component.html',\n})\nexport class RaterComponent implements OnInit {\n @Input() entity!: RTSeeEntity;\n @Input() rater!: RTSeeRater;\n\n isEditing: boolean = false;\n\n ngOnInit(): void {\n this.getRatingConfigurations()\n .then(() => {\n console.log('Getting rating configurations...');\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n async sendRate(): Promise<void> {\n const rates: IRTSeeRate[] = this.rater.configsWithRates\n .map((config) => config.rate)\n .filter((r): r is IRTSeeRate => !!r);\n if (this.rater.userRateGroup) {\n await this.rater.editRateGroup({\n ...this.rater.userRateGroup,\n rates,\n });\n } else {\n await this.rater.createRateGroup({\n entityId: this.rater.entityId,\n peerId: this.rater.peer.clientId,\n rates,\n applicationId: this.rater.applicationId,\n createdAt: new Date(),\n peer: this.rater.peer,\n });\n }\n this.isEditing = false;\n }\n\n async deleteRate(): Promise<void> {\n if (this.rater.userRateGroup) {\n await this.rater.deleteRateGroup(this.rater.userRateGroup.id);\n }\n }\n\n startEdit(): void {\n this.isEditing = true;\n }\n\n private async getRatingConfigurations(): Promise<IRTSeeRate[]> {\n if (!this.rater || !this.entity) {\n console.log('No rater or entity found.');\n return [];\n }\n\n const rates: IRTSeeRate[] = await this.rater.getRates();\n console.log('Rates found.', rates);\n\n return rates;\n }\n}\n","<div class=\"rtsee-rater\" [ngClass]=\"{'rtsee-rater-view-mode': rater.userRateGroup && !isEditing}\">\n @if (rater.userRateGroup && !isEditing) {\n <rtsee-rate-item\n [group]=\"rater.userRateGroup\"\n [rater]=\"rater\"\n [showActions]=\"true\"\n (edit)=\"startEdit()\"\n (delete)=\"deleteRate()\"\n ></rtsee-rate-item>\n } @else {\n <div class=\"rtsee-rater-user-header\">\n @if (rater.peer?.imageUrl) {\n <img\n class=\"rtsee-rater-avatar\"\n [src]=\"rater.peer?.imageUrl\"\n alt=\"User avatar\"\n />\n } @else {\n <div class=\"rtsee-rater-avatar-fallback\">\n {{ (rater.peer?.name || \"?\").substring(0, 1) }}\n </div>\n }\n <div class=\"rtsee-rater-user-info\">\n <span class=\"rtsee-rater-user-name\">{{\n rater.peer?.name || \"Anonymous\"\n }}</span>\n <span class=\"rtsee-rater-user-status\">Rating publicly</span>\n </div>\n </div>\n <hr class=\"rtsee-rater-divider\" />\n @for (config of rater.configsWithRates; track config.id) {\n <rtsee-rate-input [config]=\"config\"></rtsee-rate-input>\n }\n <div class=\"rtsee-rater-actions\">\n @if (rater.userRateGroup) {\n <p-button\n (click)=\"sendRate()\"\n [severity]=\"'success'\"\n [label]=\"'Update'\"\n type=\"submit\"\n class=\"rtsee-rater-btn-update rts-action-button\"\n >\n <span class=\"pi pi-check\"></span>\n </p-button>\n <p-button\n (click)=\"deleteRate()\"\n [severity]=\"'danger'\"\n [label]=\"'Delete'\"\n class=\"rtsee-rater-btn-delete rts-action-button\"\n >\n <span class=\"pi pi-trash\"></span>\n </p-button>\n } @else {\n <p-button\n (click)=\"sendRate()\"\n [severity]=\"'primary'\"\n [label]=\"'Send'\"\n type=\"submit\"\n class=\"rtsee-rater-btn-send rts-action-button\"\n >\n <span class=\"pi pi-send\"></span>\n </p-button>\n }\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { RateItemComponent } from '../rate-item/rate-item.component';\n\n@Component({\n selector: 'rtsee-rates-list',\n imports: [InfiniteScrollDirective, RateItemComponent],\n templateUrl: './rates-list.component.html',\n})\nexport class RatesListComponent implements OnInit {\n @Input() rater!: RTSeeRater;\n @Input() entity!: RTSeeEntity;\n\n ngOnInit(): void {\n if (this.rater) {\n this.rater\n .loadOtherUsersRateGroups(true)\n .then(() => {\n console.log('Other users rate groups loaded.');\n })\n .catch((err) => {\n console.error(err);\n });\n }\n }\n\n onScroll(): void {\n if (this.rater) {\n this.rater\n .loadOtherUsersRateGroups()\n .then(() => {\n console.log('More other users rate groups loaded.');\n })\n .catch((err) => {\n console.error(err);\n });\n }\n }\n}\n","<div\n class=\"rtsee-rates-list\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n>\n @for (group of rater.otherUsersRateGroups; track group.id) {\n <rtsee-rate-item\n [group]=\"group\"\n [rater]=\"rater\"\n [showActions]=\"false\"\n ></rtsee-rate-item>\n }\n @if (rater.loadingRatesGroups) {\n <div class=\"rtsee-rates-list-loading\">Loading more...</div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RaterComponent } from '../rater/rater.component';\nimport { RatesListComponent } from '../rates-list/rates-list.component';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-rating-section',\n imports: [RaterComponent, RatesListComponent],\n templateUrl: './rating-section.component.html',\n})\nexport class RatingSectionComponent {\n @Input() rater!: RTSeeRater;\n @Input() entity!: RTSeeEntity;\n}\n","<div class=\"rtsee-rating-section\">\n <rtsee-rater [rater]=\"rater\"\n [entity]=\"entity\"\n ></rtsee-rater>\n <rtsee-rates-list [rater]=\"rater\"\n [entity]=\"entity\"\n ></rtsee-rates-list>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RtseeEntityCommentsComponent } from '../rtsee-entity-comments/rtsee-entity-comments.component';\nimport { RtseeEntityTagsComponent } from '../rtsee-entity-tags/rtsee-entity-tags.component';\nimport { RTSeeEntity, RTSeeRater } from '@rtsee/utilities-ui';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RatingSectionComponent } from '../../rtsee-rates/rating-section/rating-section.component';\n\n@Component({\n selector: 'rtsee-entity-preview',\n imports: [\n RtseeEntityCommentsComponent,\n RtseeEntityTagsComponent,\n RatingSectionComponent,\n ],\n templateUrl: './rtsee-entity-preview.component.html',\n})\nexport class RtseeEntityPreviewComponent implements OnInit {\n rater: RTSeeRater | null = null;\n\n @Input() entity!: RTSeeEntity;\n @Input() messenger!: RTSeeMessenger;\n\n showRating: boolean = true;\n\n ngOnInit() {\n void this.entity.reload();\n this.rater = new RTSeeRater({\n entityId: this.entity.id,\n entityConfigurationId: this.entity.configurationId,\n ...this.entity.getHandlerCommonOptions(),\n });\n }\n}\n","<div class=\"rtsee-entity-preview\">\n <div class=\"rtsee-entity-preview-tags\">\n <rtsee-entity-tags [entity]=\"entity\"></rtsee-entity-tags>\n </div>\n\n @if (showRating && rater) {\n <rtsee-rating-section [entity]=\"entity\"\n [rater]=\"rater\"\n ></rtsee-rating-section>\n } @else if (!showRating && entity.comments && messenger) {\n <div class=\"rtsee-entity-preview-comments\">\n <rtsee-entity-comments [messenger]=\"messenger\"\n [chat]=\"entity.comments\"\n [entity]=\"entity\"\n ></rtsee-entity-comments>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Chip } from 'primeng/chip';\nimport { Tag } from 'primeng/tag';\nimport { RTSeePresentation, RTSeeStory } from '@rtsee/presentation';\nimport { Button } from 'primeng/button';\nimport { ChatComponent } from '../../rtsee-messenger/chat/chat.component';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RtseeEntityPreviewComponent } from '../../rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component';\n\n@Component({\n selector: 'rtsee-story-details',\n imports: [Chip, Tag, Button, ChatComponent, RtseeEntityPreviewComponent],\n templateUrl: './story-details.component.html',\n})\nexport class StoryDetailsComponent {\n @Input() story!: RTSeeStory;\n @Input() presentation!: RTSeePresentation;\n @Input() messenger?: RTSeeMessenger;\n\n getStarArray(rating: number | null): string[] {\n const stars: string[] = [];\n const val = rating || 0;\n for (let i = 1; i <= 5; i++) {\n if (val >= i) {\n stars.push('full');\n } else if (val + 0.5 >= i) {\n stars.push('half');\n } else {\n stars.push('empty');\n }\n }\n return stars;\n }\n}\n","<div class=\"rtsee-story-details\">\n <section\n class=\"rtsee-story-details-cover\"\n [style.background-image]=\"'url(' + story.imageUrl + ')'\"\n >\n <button\n class=\"rtsee-story-details-btn-close\"\n (click)=\"presentation.closeStoryDetails()\"\n aria-label=\"Close\"\n >\n <span class=\"pi pi-times\"></span>\n </button>\n <div class=\"rtsee-story-details-cover-overlay\"></div>\n <div class=\"rtsee-story-details-cover-content\">\n <div class=\"rtsee-story-details-cover-badges\">\n @if (story.categories?.length) {\n @for (category of story.categories; track category.id) {\n <span class=\"rtsee-story-details-tag-pill\">\n {{ category.name }}\n </span>\n }\n }\n @if (story.tags?.length) {\n @for (tag of story.tags; track tag.id) {\n <span\n class=\"rtsee-story-details-tag-pill rtsee-story-details-tag-pill-label\"\n >\n @if (tag.symbol) {\n <span class=\"symbol\">{{ tag.symbol }}</span>\n }\n {{ tag.name }}\n </span>\n }\n }\n </div>\n\n <h1 class=\"rtsee-story-details-cover-title\">{{ story.name }}</h1>\n\n <div class=\"rtsee-story-details-cover-meta\">\n @if (story.rating !== null) {\n <div class=\"rtsee-story-details-cover-rating\">\n <span class=\"rtsee-story-details-stars\">\n @for (star of getStarArray(story.rating); track $index) {\n <span\n class=\"rtsee-story-details-star\"\n [class.rtsee-story-details-star-full]=\"star === 'full'\"\n [class.rtsee-story-details-star-half]=\"star === 'half'\"\n [class.rtsee-story-details-star-empty]=\"star === 'empty'\"\n >\n @if (star === \"full\") {\n ★\n } @else if (star === \"half\") {\n ★\n } @else {\n ☆\n }\n </span>\n }\n </span>\n <span class=\"rtsee-story-details-rating-number\">{{\n story.rating\n }}</span>\n @if (story.ratesCount !== null) {\n <span class=\"rtsee-story-details-rating-count\"\n >({{ story.ratesCount }} ratings)</span\n >\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-cover-info-chips\">\n @if (story.averageReadTime) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n {{ story.averageReadTime }} min\n </span>\n }\n @if (story.totalSlides) {\n <span class=\"rtsee-story-details-info-chip\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n {{ story.totalSlides }} slides\n </span>\n }\n </div>\n </div>\n </div>\n </section>\n\n <!-- CONTENT AREA -->\n <div class=\"rtsee-story-details-content-wrapper\">\n <div class=\"rtsee-story-details-cover-actions\">\n <p-button\n (click)=\"presentation.setActiveStory(story)\"\n [severity]=\"'primary'\"\n [label]=\"story.preselectedSlideNumber ? 'Continue Reading' : 'Start Reading'\"\n class=\"rtsee-story-details-start-reading rts-action-button\"\n >\n </p-button>\n </div>\n <div class=\"rtsee-story-details-content-grid\">\n <!-- Description Card -->\n <article class=\"rtsee-story-details-glass-card\">\n <div class=\"rtsee-story-details-glass-card-header\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\" />\n <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\" />\n </svg>\n <h2>About This Story</h2>\n </div>\n <p class=\"rtsee-story-details-glass-card-text\">\n {{ story.description }}\n </p>\n </article>\n </div>\n\n @if (messenger) {\n <rtsee-entity-preview\n [entity]=\"story\"\n [messenger]=\"messenger\"\n ></rtsee-entity-preview>\n }\n\n @if (story.categories?.length && false) {\n <div class=\"rtsee-story-details-categories\">\n @for (category of story.categories; track category.id) {\n <p-tag [value]=\"category.name\"></p-tag>\n }\n </div>\n }\n\n @if (story.tags?.length && false) {\n <div class=\"rtsee-story-details-labels\">\n @for (tag of story.tags; track tag.id) {\n <p-chip class=\"rtsee-story-details-label\">\n @if (tag.symbol) {\n <span class=\"rtsee-story-details-label-left\">{{\n tag.symbol\n }}</span>\n }\n <span class=\"rtsee-story-details-label-right\">{{\n tag.name\n }}</span>\n </p-chip>\n }\n </div>\n }\n\n <div class=\"rtsee-story-details-description-history\"></div>\n @if (story.isPublished && false) {\n <div class=\"rtsee-story-details-feedback\">\n <p>feedback here</p>\n </div>\n } @else if (messenger && story.discussion && false) {\n <div class=\"rtsee-story-details-votes\">\n <p class=\"rtsee-story-details-comments-label\">Comments</p>\n <rtsee-chat\n [messenger]=\"messenger\"\n [chatData]=\"story.discussion\"\n ></rtsee-chat>\n </div>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeePresentation } from '@rtsee/presentation';\nimport { PresentationHeaderComponent } from '../presentation-header/presentation-header.component';\nimport { StoryThumbnailComponent } from '../story-thumbnail/story-thumbnail.component';\nimport { StoryPlayerComponent } from '../story-player/story-player.component';\nimport { PreloaderComponent } from '../../../common/components/preloader/preloader.component';\nimport { PresentationsDashboardComponent } from '../manage/presentations-dashboard/presentations-dashboard.component';\nimport { PresentationSettingsComponent } from '../presentation-settings/presentation-settings.component';\nimport { StoryDetailsComponent } from '../story-details/story-details.component';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-presentation',\n templateUrl: './presentation.component.html',\n imports: [\n PresentationHeaderComponent,\n StoryThumbnailComponent,\n StoryPlayerComponent,\n PreloaderComponent,\n PreloaderComponent,\n PresentationsDashboardComponent,\n PresentationSettingsComponent,\n StoryDetailsComponent,\n ],\n standalone: true,\n})\nexport class PresentationComponent {\n @Input() presentation!: RTSeePresentation;\n @Input() messenger?: RTSeeMessenger;\n constructor() {}\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"rtsee-presentation\">\n <div class=\"rtsee-presentation-header-block\">\n <rtsee-presentation-header [presentation]=\"presentation\"\n ></rtsee-presentation-header>\n </div>\n\n @if (presentation.storyLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if(presentation.isDashboardOpen && presentation.dashboard) {\n <rtsee-presentations-dashboard [dashboard]=\"presentation.dashboard\"\n ></rtsee-presentations-dashboard>\n }\n\n @if (presentation.settings.isExpanded) {\n <rtsee-presentation-settings [settings]=\"presentation.settings\"\n [presentation]=\"presentation\"\n ></rtsee-presentation-settings>\n }\n\n @if (presentation.isCategoriesListVisible && !presentation.storyLoadInProgress) {\n <div class=\"rtsee-presentation-categories-list\">\n @if (presentation.categoriesLoadInProgress) {\n <rtsee-preloader [diameter]=\"15\"></rtsee-preloader>\n }\n\n @if (presentation.activeSessionsStories.length) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{presentation.labels[RTSeeTextLabelKeys.CONTINUE_SESSIONS_LABEL]}}</h2>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of presentation.activeSessionsStories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id, story.preselectedSlideNumber || undefined)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n\n @for (category of presentation.categories; track category.id) {\n <div class=\"rtsee-presentation-category-header\">\n <h2 class=\"rtsee-presentation-category-name\">{{ category.name }}</h2>\n <span class=\"rtsee-presentation-category-description\">{{ category.description }}</span>\n </div>\n <div class=\"rtsee-presentation-stories-list\">\n @for (story of category.stories; track story.id) {\n <div class=\"rtsee-presentation-story-thumbnail-container\"\n (click)=\"presentation.openStoryDetails(story.id)\"\n >\n <rtsee-story-thumbnail\n [story]=\"story\"\n ></rtsee-story-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n\n @if (presentation.activeStory && !presentation.isDashboardOpen) {\n <div class=\"rtsee-presentation-story-viewer-container\">\n <rtsee-story-player [story]=\"presentation.activeStory\"\n [settings]=\"presentation.settings\"\n ></rtsee-story-player>\n </div>\n } @else if (presentation.openedStoryDetails && !presentation.isDashboardOpen) {\n <rtsee-story-details [story]=\"presentation.openedStoryDetails\"\n [presentation]=\"presentation\"\n [messenger]=\"messenger\"\n ></rtsee-story-details>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n INavigationConfig,\n IRouteConfig,\n RTSee,\n RTSeeRoutesList,\n} from '@rtsee/factory';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgClass } from '@angular/common';\nimport { Avatar } from 'primeng/avatar';\nimport { Image } from 'primeng/image';\nimport { Divider } from 'primeng/divider';\nimport { Tooltip } from 'primeng/tooltip';\nimport { RTSeeAuthService } from '../../rtsee-auth/services/auth.service';\nimport { hasPermission, IPeer, RTSeePeerPermissions } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-nav',\n templateUrl: './rtsee-nav.component.html',\n imports: [\n RouterLink,\n RouterLinkActive,\n NgClass,\n Avatar,\n Image,\n Divider,\n Tooltip,\n ],\n standalone: true,\n})\nexport class RtseeNavComponent implements OnInit {\n @Input() public config!: INavigationConfig<IRouteConfig>;\n @Input() rtsee!: RTSee;\n\n profileLink: string = '';\n queryParams: { [key: string]: string } = {};\n\n constructor(private authService: RTSeeAuthService) {}\n\n ngOnInit(): void {\n this.populateProfileLinkTillSuccess();\n }\n\n populateProfileLinkTillSuccess(): void {\n const success: boolean = this.populateProfileLink();\n\n if (!success) {\n setTimeout(() => {\n this.populateProfileLinkTillSuccess();\n }, 1000);\n }\n }\n\n populateProfileLink(): boolean {\n const peer: IPeer | null = this.rtsee.socketConnection?.myPeer || null;\n\n if (!peer) {\n console.log('RTSeeContainer: user peer not found');\n return false;\n }\n\n const profileRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.PROFILE,\n ) || null;\n\n const dashboardRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.EVENTS_DASHBOARD,\n ) || null;\n\n const messengerRoute: IRouteConfig | null =\n this.config.routes.find(\n (r) => r.rtseeRoute === RTSeeRoutesList.MESSENGER,\n ) || null;\n\n if (dashboardRoute) {\n dashboardRoute.isEnabled = hasPermission(\n peer,\n RTSeePeerPermissions.ACCESS_EVENTS_DASHBOARD,\n );\n }\n\n if (profileRoute && profileRoute.link) {\n this.profileLink = `${profileRoute.link}/${peer.clientId}`;\n return true;\n }\n\n if (messengerRoute && messengerRoute.link) {\n this.profileLink = messengerRoute.link;\n this.queryParams = { userId: peer.clientId };\n return true;\n }\n\n return false;\n }\n}\n","<div class=\"rtsee-nav\">\n @if (config.siteLogo) {\n <div class=\"rtsee-site-logo\">\n <p-image [src]=\"config.siteLogo.src\" class=\"rtsee-site-logo-image\"></p-image>\n <p-divider class=\"rtsee-site-logo-divider\" />\n </div>\n }\n <div class=\"rtsee-nav-bar\">\n @for (route of config.routes; track route.name) {\n <a [routerLink]=\"route.link\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [ngClass]=\"{'rtsee-nav-item-hidden': !route.isEnabled || !route.iconClassName}\"\n [routerLinkActiveOptions]=\"{ exact: route.exactActiveLinkMatcher || false }\"\n class=\"rtsee-nav-item\"\n [pTooltip]=\"route.name\"\n >\n <span [ngClass]=\"route.iconClassName\"\n class=\"rtsee-nav-item-icon\" >\n </span>\n </a>\n }\n <p-avatar [image]=\"rtsee.socketConnection?.myPeer?.imageUrl\"\n class=\"rtsee-nav-item rtsee-nav-image rtsee-nav-profile\"\n [routerLink]=\"profileLink\"\n routerLinkActive=\"rtsee-nav-item-active\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [queryParams]=\"queryParams\"\n ></p-avatar>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSee, INavigationConfig, IRouteConfig } from '@rtsee/factory';\nimport { NgClass } from '@angular/common';\nimport { RTSeeConferenceComponent } from '../rtsee/rtsee-conference.component';\nimport { MessengerComponent } from '../rtsee-messenger/messenger/messenger.component';\nimport { RtseeEventsDashboardComponent } from '../rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { PresentationComponent } from '../rtsee-presentation/presentation/presentation.component';\nimport { RtseeNavComponent } from './rtsee-nav/rtsee-nav.component';\nimport { RTSeeAuthService } from '../rtsee-auth/services/auth.service';\nimport { RTSeeAuth } from '@rtsee/auth';\nimport { filter, Subscription } from 'rxjs';\nimport { Event, NavigationEnd, Router } from '@angular/router';\n\n@Component({\n selector: 'rtsee-container',\n templateUrl: './rtsee-container.component.html',\n imports: [\n NgClass,\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n PresentationComponent,\n RtseeNavComponent,\n ],\n standalone: true,\n})\nexport class RTSeeContainerComponent implements OnInit {\n isSidenavExpanded: boolean = true;\n isSidenavContent: boolean = false;\n isSidenavFullScreen: boolean = false;\n\n private routeSubscription!: Subscription;\n\n @Input() rtsee!: RTSee;\n @Input() public navigationConfig!: INavigationConfig<IRouteConfig>;\n @Input() auth!: RTSeeAuth<any>;\n\n constructor(\n private authService: RTSeeAuthService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n this.authService.init(this.auth);\n this.routeSubscription = this.router.events\n .pipe(\n // Filter for the NavigationEnd event to know when navigation is complete\n filter(\n (event: Event): event is NavigationEnd =>\n event instanceof NavigationEnd,\n ),\n )\n .subscribe((event: NavigationEnd) => {\n this.defineSideNavState(event.url);\n });\n }\n\n onSidenavToggleClicked() {\n this.isSidenavExpanded = !this.isSidenavExpanded;\n }\n\n defineSideNavState(url: string): void {\n const isBase: boolean = url === '/' || url.startsWith('/?');\n const routeUrlSplit: string[] = url.split('/');\n const rootRoutePath: string | null = isBase ? '' : routeUrlSplit[1] || null;\n if (!rootRoutePath && !isBase) {\n return;\n }\n const rtseeRoute: IRouteConfig | null =\n this.navigationConfig.routes.find((rn) => rn.link === rootRoutePath) ||\n null;\n\n if (!rtseeRoute) {\n return;\n }\n\n this.isSidenavContent = rtseeRoute.fullContent || false;\n this.isSidenavFullScreen = rtseeRoute.fullScreen || false;\n }\n}\n","<div class=\"rtsee-shell\"\n [ngClass]=\"{\n 'rtsee-shell-conference-mode': rtsee.conference && rtsee.conference.isInActiveCall,\n 'rtsee-shell-messenger-active': rtsee.messenger && rtsee.activeTab === 'messenger',\n 'rtsee-shell-dashboard-active': rtsee.eventsDashboard && rtsee.activeTab === 'events-dashboard',\n 'rtsee-shell-presentation-active': rtsee.presentation && rtsee.activeTab === 'presentation',\n 'rtsee-shell-side-nav-expanded': isSidenavExpanded,\n 'rtsee-shell-side-nav-is-content': isSidenavContent,\n 'rtsee-shell-side-nav-full-screen': isSidenavFullScreen\n }\"\n>\n <div class=\"rtsee-nav-block\">\n <rtsee-nav [config]=\"navigationConfig\" [rtsee]=\"rtsee\"></rtsee-nav>\n </div>\n\n <div class=\"rtsee-shell-panel\">\n <div class=\"rtsee-shell-panel-inner\">\n @if (rtsee.conference && rtsee.conference.isInActiveCall) {\n <div class=\"rtsee-conference-container\">\n <rtsee-conference [rtSee]=\"rtsee.conference\"\n ></rtsee-conference>\n </div>\n }\n\n @if (rtsee.messenger) {\n <div class=\"rtsee-messenger-container\">\n <rtsee-messenger [messenger]=\"rtsee.messenger\"\n ></rtsee-messenger>\n </div>\n }\n\n @if (rtsee.eventsDashboard && rtsee.eventsDashboard.isReady) {\n <div class=\"rtsee-events-dashboard-container\">\n <rtsee-events-dashboard [eventsDashboard]=\"rtsee.eventsDashboard\"\n ></rtsee-events-dashboard>\n </div>\n }\n\n @if (rtsee.presentation && rtsee.presentation.isActive) {\n <div class=\"rtsee-presentation-container\">\n <rtsee-presentation [presentation]=\"rtsee.presentation\"\n [messenger]=\"rtsee.messenger\"\n ></rtsee-presentation>\n </div>\n }\n </div>\n </div>\n\n <div class=\"rtsee-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { PanelMenu } from 'primeng/panelmenu';\nimport { RTSeeManageTags, RTSeeTag } from '@rtsee/utilities-ui';\n\nexport interface IAccordionItem {\n label: string;\n icon?: string;\n command?: () => void;\n items?: IAccordionItem[];\n url?: string;\n isSelected: boolean;\n}\n\n@Component({\n selector: 'rtsee-tags-accordion',\n imports: [PanelMenu],\n templateUrl: './rtsee-tags-accordion-menu.component.html',\n})\nexport class RtseeTagsAccordionMenuComponent implements OnInit {\n items: IAccordionItem[] = [];\n onTagClicked: OutputEmitterRef<RTSeeTag> = output<RTSeeTag>();\n\n @Input() manageTags!: RTSeeManageTags;\n\n ngOnInit(): void {\n this.manageTags\n .loadTags()\n .then(() => {\n this.items = this.tagsToItems(this.manageTags.tags);\n console.log(this.items);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private tagsToItems(tags: RTSeeTag[]): IAccordionItem[] {\n return tags.map((t) => {\n return {\n label: t.name,\n icon: t.iconClassName || undefined,\n items: t.children ? this.tagsToItems(t.children) : undefined,\n isSelected: false,\n command: (): void => {\n this.onTagClicked.emit(t);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-tags-accordion\">\n <p-panel-menu [model]=\"items\"/>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { IRTSeeTag } from '@rtsee/common';\nimport {\n RTSeeManageTags,\n IRecursiveSelectOptions,\n RecursiveSelect,\n} from '@rtsee/utilities-ui';\nimport { RecursiveSelectComponent } from '../../../common/components/recursive-select/recursive-select.component';\nimport { Divider } from 'primeng/divider';\n\nexport type RTSeeTagForm = {\n name: string | null;\n description: string | null;\n iconClass: string | null;\n value: string | null;\n};\n\n@Component({\n selector: 'rtsee-rtsee-tag-manage',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n Textarea,\n ReactiveFormsModule,\n RecursiveSelectComponent,\n Divider,\n ],\n templateUrl: './rtsee-tag-manage.component.html',\n})\nexport class RtseeTagManageComponent implements OnInit {\n tagForm: FormGroup;\n\n tagsRecursiveSelect: RecursiveSelect<IRTSeeTag> | null = null;\n\n @Input() manageTags!: RTSeeManageTags;\n constructor(private formBuilder: FormBuilder) {\n this.tagForm = this.getTagForm();\n }\n\n ngOnInit() {\n if (!this.manageTags.activeTag) {\n this.manageTags.setBlankActiveTag();\n }\n\n if (!this.manageTags.activeTag) {\n throw new Error(`Active tag should be selected`);\n }\n\n this.presetFields(this.manageTags.activeTag);\n }\n\n private async presetParent(): Promise<void> {\n console.log('presetParent', this.manageTags.activeTag);\n if (!this.manageTags.activeTag) {\n return;\n }\n\n const selectOptions: IRecursiveSelectOptions<IRTSeeTag> = {\n items: this.manageTags.tags,\n placeholderValue: 'Select A tag',\n getChildren: (tag: IRTSeeTag) => {\n return tag.children || [];\n },\n getLabel: (tag: IRTSeeTag): string => {\n return tag.name;\n },\n getRemoteParent: (tag: IRTSeeTag): Promise<IRTSeeTag | null> => {\n if (!tag.parentId) {\n return Promise.resolve(null);\n }\n return this.manageTags.getTag(tag.parentId);\n },\n };\n\n console.log('active tag', this.manageTags.activeTag);\n\n if (this.manageTags.activeTag.parentId) {\n selectOptions.value = await this.manageTags.getTag(\n this.manageTags.activeTag.parentId,\n );\n }\n\n this.tagsRecursiveSelect = new RecursiveSelect<IRTSeeTag>(selectOptions);\n }\n\n async submit(): Promise<void> {\n if (\n this.tagForm.invalid ||\n !this.manageTags.peer.rtseeAppId ||\n !this.manageTags.activeTag\n ) {\n console.log('Form Invalid!');\n return;\n }\n\n const parentId: string | undefined = this.tagsRecursiveSelect?.value?.id;\n\n const tagParams: Omit<IRTSeeTag, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n applicationId: this.manageTags.applicationId,\n parentId,\n };\n\n if (this.manageTags.activeTag.id) {\n const options: IRTSeeTag = {\n id: this.manageTags.activeTag.id,\n ...tagParams,\n };\n await this.manageTags.updateTag(options);\n } else {\n await this.manageTags.createTag(tagParams);\n }\n }\n\n cancel(): void {\n console.log('Cancel');\n }\n\n private presetFields(tag: Omit<IRTSeeTag, 'id'>): void {\n this.nameField.setValue(tag.name);\n this.descriptionField.setValue(tag.description || '');\n this.iconClassField.setValue(tag.iconClassName || '');\n\n console.log('preset fields');\n void this.presetParent();\n }\n\n private getTagForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RTSeeTagForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n iconClass: this.formBuilder.control('', {\n validators: [Validators.minLength(1), Validators.maxLength(244)],\n }),\n value: this.formBuilder.control('', {\n validators: [Validators.minLength(1), Validators.maxLength(244)],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.tagForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.tagForm.get('description') as FormControl<string>;\n }\n\n get iconClassField(): FormControl<string> {\n return this.tagForm.get('iconClass') as FormControl<string>;\n }\n\n get valueField(): FormControl<string> {\n return this.tagForm.get('value') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-tag\">\n <div class=\"rtsee-manage-tag-info rtsee-form-container\">\n <form class=\"rtsee-tag-form rtsee-form\"\n [formGroup]=\"tagForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n @if (tagsRecursiveSelect && manageTags.activeTag) {\n <div class=\"rtsee-select-tag-container\">\n <p-divider></p-divider>\n <p>Parent Tag</p>\n <rtsee-recursive-select [selectModel]=\"tagsRecursiveSelect\"\n ></rtsee-recursive-select>\n <p-divider></p-divider>\n </div>\n }\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-symbol-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"iconClassField\"\n [class.p-invalid]=\"iconClassField.invalid && iconClassField.touched\"\n />\n <label for=\"rtsee-story-label-symbol-field\">Symbol</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (iconClassField.hasError('required') && iconClassField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Symbol is required, pick a smile, dummy</p-message>\n }\n </div>\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTags.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageTags.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { RTSeeManageTagGroups, RTSeeTagGroup } from '@rtsee/utilities-ui';\nimport { IAccordionItem } from '../rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport { Menu } from 'primeng/menu';\n\n@Component({\n selector: 'rtsee-rtsee-tag-groups-manage',\n imports: [Menu],\n templateUrl: './rtsee-tag-groups-manage.component.html',\n})\nexport class RtseeTagGroupsManageComponent implements OnInit {\n items: IAccordionItem[] = [];\n selectedTagGroup: RTSeeTagGroup | undefined = undefined;\n onTagGroupClicked: OutputEmitterRef<RTSeeTagGroup> = output<RTSeeTagGroup>();\n\n @Input() manageTagGroups!: RTSeeManageTagGroups;\n\n ngOnInit(): void {\n this.manageTagGroups\n .loadTagGroups()\n .then(() => {\n this.items = this.tagGroupsToItems(this.manageTagGroups.tagGroups);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private tagGroupsToItems(tagGroups: RTSeeTagGroup[]): IAccordionItem[] {\n console.log('tagGroupsToItems', tagGroups);\n return tagGroups.map((tg) => {\n return {\n label: tg.name,\n isSelected: false,\n command: (): void => {\n this.selectedTagGroup = tg;\n this.onTagGroupClicked.emit(tg);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-manage-tag-groups\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { IRTSeeTagGroup } from '@rtsee/common';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { RTSeeManageTagGroups } from '@rtsee/utilities-ui';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { Textarea } from 'primeng/textarea';\nimport { AutocompleteComponent } from '../../../common/components/autocomplete/autocomplete.component';\n\nexport type RTSeeTagGroupForm = {\n name: string | null;\n description: string | null;\n};\n\n@Component({\n selector: 'rtsee-rtsee-tag-group-manage',\n imports: [\n Button,\n FloatLabel,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n AutocompleteComponent,\n ],\n templateUrl: './rtsee-tag-group-manage.component.html',\n})\nexport class RtseeTagGroupManageComponent implements OnInit {\n tagGroupForm: FormGroup;\n\n @Input() manageTagGroups!: RTSeeManageTagGroups;\n\n constructor(private formBuilder: FormBuilder) {\n this.tagGroupForm = this.getTagGroupForm();\n }\n\n ngOnInit() {\n if (!this.manageTagGroups.activeTagGroup) {\n this.manageTagGroups.setBlankActiveTag();\n }\n\n if (!this.manageTagGroups.activeTagGroup) {\n throw new Error(`Active tagGroup should be selected`);\n }\n\n this.presetFields(this.manageTagGroups.activeTagGroup);\n void this.manageTagGroups.initMultiselect();\n }\n\n async submit(): Promise<void> {\n if (!this.manageTagGroups.activeTagGroup) {\n throw new Error(`Active tagGroup should be selected`);\n }\n\n if (this.tagGroupForm.invalid || !this.manageTagGroups.peer.rtseeAppId) {\n console.log('Form Invalid!');\n return;\n }\n\n const tagGroupParams: Omit<IRTSeeTagGroup, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n applicationId: this.manageTagGroups.peer.rtseeAppId,\n };\n\n if (this.manageTagGroups.activeTagGroup.id) {\n await this.manageTagGroups.updateTagGroup({\n ...tagGroupParams,\n id: this.manageTagGroups.activeTagGroup.id,\n });\n } else {\n await this.manageTagGroups.createTagGroup(tagGroupParams);\n }\n }\n\n cancel(): void {\n console.log('Cancel');\n }\n\n private presetFields(tagGroup: Omit<IRTSeeTagGroup, 'id'>): void {\n this.nameField.setValue(tagGroup.name);\n this.descriptionField.setValue(tagGroup.description || '');\n }\n\n private getTagGroupForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RTSeeTagGroupForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.tagGroupForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.tagGroupForm.get('description') as FormControl<string>;\n }\n}\n","<div class=\"rtsee-manage-tag-group\">\n <div class=\"rtsee-manage-tag-group-info rtsee-form-container\">\n <form class=\"rtsee-tag-form rtsee-form\"\n [formGroup]=\"tagGroupForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-story-label-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-story-label-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-story-label-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-story-label-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n\n @if (manageTagGroups && manageTagGroups.tagsMultiselect) {\n <div class=\"rtsee-form-field-container\">\n <rtsee-autocomplete [config]=\"manageTagGroups.tagsMultiselect\"></rtsee-autocomplete>\n </div>\n }\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageTagGroups.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageTagGroups.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { Menu } from 'primeng/menu';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport {\n RTSeeEntityConfiguration,\n RTSeeManageEntityConfigurations,\n} from '@rtsee/utilities-ui';\n\n@Component({\n selector: 'rtsee-entities-configurations-list',\n imports: [Menu],\n templateUrl: './entities-configurations-list.component.html',\n})\nexport class EntitiesConfigurationsListComponent {\n items: IAccordionItem[] = [];\n selectedEntityConfiguration?: RTSeeEntityConfiguration;\n onConfigurationClicked: OutputEmitterRef<RTSeeEntityConfiguration> =\n output<RTSeeEntityConfiguration>();\n\n @Input() manageEntityConfigurations!: RTSeeManageEntityConfigurations;\n\n ngOnInit(): void {\n this.manageEntityConfigurations\n .loadEntityConfigurations()\n .then(() => {\n this.items = this.configurationsToItems(\n this.manageEntityConfigurations.entityConfigurations,\n );\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private configurationsToItems(\n entityConfigurations: RTSeeEntityConfiguration[],\n ): IAccordionItem[] {\n console.log('entityConfigsToItems', entityConfigurations);\n return entityConfigurations.map((ec) => {\n return {\n label: ec.name,\n isSelected: false,\n command: (): void => {\n this.selectedEntityConfiguration = ec;\n this.onConfigurationClicked.emit(ec);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-entities-configurations-list\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeManageRatingConfigurations } from '@rtsee/utilities-ui';\nimport { IRTSeeRatingConfiguration } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Message } from 'primeng/message';\nimport { TypedReactiveForm } from '../../rtsee-auth/types/auth-form.type';\nimport { Textarea } from 'primeng/textarea';\nimport { InputNumber } from 'primeng/inputnumber';\n\nexport type RatingConfigurationForm = {\n name: string | null;\n description: string | null;\n maxRate: number | null;\n step: number | null;\n};\n\n@Component({\n selector: 'rtsee-manage-rating-configuration',\n imports: [\n Button,\n FloatLabel,\n FormsModule,\n InputGroup,\n InputText,\n Message,\n ReactiveFormsModule,\n Textarea,\n InputNumber,\n ],\n templateUrl: './manage-rating-configuration.component.html',\n})\nexport class ManageRatingConfigurationComponent implements OnInit {\n ratingConfigurationForm: FormGroup;\n\n @Input() manageRatingConfigurations!: RTSeeManageRatingConfigurations;\n @Input() ratingConfiguration!: IRTSeeRatingConfiguration;\n constructor(private formBuilder: FormBuilder) {\n this.ratingConfigurationForm = this.getRatingConfigurationForm();\n }\n\n ngOnInit(): void {\n this.presetFields();\n }\n\n private presetFields(): void {\n if (!this.ratingConfiguration) {\n return;\n }\n\n this.nameField.setValue(this.ratingConfiguration.name);\n this.descriptionField.setValue(this.ratingConfiguration.description || '');\n this.maxRateField.setValue(this.ratingConfiguration.maxRateValue || 5);\n this.stepField.setValue(this.ratingConfiguration.stepValue || 1);\n }\n\n async submit(): Promise<void> {\n if (!this.manageRatingConfigurations.entityConfigurationId) {\n throw new Error(`No entity config id found`);\n }\n\n if (\n this.ratingConfigurationForm.invalid ||\n !this.manageRatingConfigurations.applicationId\n ) {\n console.log('Form Invalid!');\n return;\n }\n\n const configurationParams: Omit<IRTSeeRatingConfiguration, 'id'> = {\n name: this.nameField.getRawValue(),\n description: this.descriptionField.getRawValue(),\n entityConfigurationId:\n this.manageRatingConfigurations.entityConfigurationId,\n applicationId: this.manageRatingConfigurations.applicationId,\n maxRateValue: this.maxRateField.getRawValue(),\n stepValue: this.stepField.getRawValue(),\n };\n\n if (this.ratingConfiguration?.id) {\n await this.manageRatingConfigurations.updateRatingConfiguration({\n ...configurationParams,\n id: this.ratingConfiguration.id,\n });\n } else {\n await this.manageRatingConfigurations.createRatingConfiguration(\n configurationParams,\n );\n }\n }\n\n cancel(): void {\n console.log('cancel');\n }\n\n private getRatingConfigurationForm(): FormGroup {\n return this.formBuilder.group<TypedReactiveForm<RatingConfigurationForm>>({\n name: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(131),\n ],\n }),\n description: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(6),\n Validators.maxLength(244),\n ],\n }),\n maxRate: this.formBuilder.control(5, {\n validators: [Validators.required, Validators.min(4)],\n }),\n step: this.formBuilder.control(1, {\n validators: [Validators.required, Validators.min(1)],\n }),\n });\n }\n\n get nameField(): FormControl<string> {\n return this.ratingConfigurationForm.get('name') as FormControl<string>;\n }\n\n get descriptionField(): FormControl<string> {\n return this.ratingConfigurationForm.get(\n 'description',\n ) as FormControl<string>;\n }\n\n get maxRateField(): FormControl<number> {\n return this.ratingConfigurationForm.get('maxRate') as FormControl<number>;\n }\n\n get stepField(): FormControl<number> {\n return this.ratingConfigurationForm.get('step') as FormControl<number>;\n }\n}\n","<div class=\"rtsee-manage-rating-configuration\">\n <div class=\"rtsee-form-container\">\n <form class=\"rtsee-rating-configuration-form rtsee-form\"\n [formGroup]=\"ratingConfigurationForm\" (ngSubmit)=\"submit()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"rtsee-rating-configuration-name-field\"\n class=\"rtsee-form-field\"\n pInputText\n [formControl]=\"nameField\"\n [class.p-invalid]=\"nameField.invalid && nameField.touched\"\n />\n <label for=\"rtsee-rating-configuration-name-field\">Name</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (nameField.hasError('required') && nameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Name is required</p-message>\n }\n </div>\n\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <textarea [formControl]=\"descriptionField\"\n id=\"rtsee-rating-configuration-description-field\"\n class=\"rtsee-form-field\"\n rows=\"3\"\n cols=\"30\"\n pTextarea\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n ></textarea>\n <label for=\"rtsee-rating-configuration-description-field\">Description</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (descriptionField.hasError('required') && descriptionField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Description is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [formControl]=\"maxRateField\"\n [min]=\"1\"\n [max]=\"10\"\n id=\"rtsee-rating-configuration-max-rate-field\"\n [class.p-invalid]=\"descriptionField.invalid && descriptionField.touched\"\n />\n <label for=\"rtsee-rating-configuration-max-rate-field\">Max Rate</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (maxRateField.hasError('required') && maxRateField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Max rate is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-inputNumber [formControl]=\"stepField\"\n [min]=\"1\"\n [max]=\"2\"\n id=\"rtsee-rating-configuration-step-field\"\n [class.p-invalid]=\"stepField.invalid && stepField.touched\"\n />\n <label for=\"rtsee-rating-configuration-step-field\">Max Rate</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (maxRateField.hasError('required') && maxRateField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Step is required</p-message>\n }\n </div>\n\n\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageRatingConfigurations.saveInProgress\"\n />\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageRatingConfigurations.saveInProgress\"\n />\n </form>\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { Menu } from 'primeng/menu';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport {\n RTSeeEntityConfiguration,\n RTSeeManageRatingConfigurations,\n} from '@rtsee/utilities-ui';\nimport { IRTSeeRatingConfiguration } from '@rtsee/common';\nimport { Button } from 'primeng/button';\nimport { Divider } from 'primeng/divider';\nimport { ManageRatingConfigurationComponent } from '../manage-rating-configuration/manage-rating-configuration.component';\n\n@Component({\n selector: 'rtsee-rating-configurations-list',\n imports: [Menu, Button, Divider, ManageRatingConfigurationComponent],\n templateUrl: './rating-configurations-list.component.html',\n})\nexport class RatingConfigurationsListComponent {\n items: IAccordionItem[] = [];\n selectedRatingConfiguration?: IRTSeeRatingConfiguration;\n onRatingConfigurationClicked: OutputEmitterRef<IRTSeeRatingConfiguration> =\n output<IRTSeeRatingConfiguration>();\n @Input() entityConfiguration!: RTSeeEntityConfiguration;\n @Input() manageRatingConfigurations!: RTSeeManageRatingConfigurations;\n\n ngOnInit(): void {\n this.manageRatingConfigurations\n .loadRatingConfigurations(this.entityConfiguration.id)\n .then(() => {\n this.items = this.ratingConfigurationsToItems(\n this.manageRatingConfigurations.ratingConfigurations,\n );\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n onCreateClicked(): void {\n this.manageRatingConfigurations.setBlankActiveConfiguration();\n this.selectedRatingConfiguration =\n this.manageRatingConfigurations.activeRatingConfiguration || undefined;\n }\n\n private ratingConfigurationsToItems(\n ratingConfigurations: IRTSeeRatingConfiguration[],\n ): IAccordionItem[] {\n return ratingConfigurations.map((rc) => {\n return {\n label: rc.name,\n isSelected: false,\n command: (): void => {\n this.selectedRatingConfiguration = rc;\n this.onRatingConfigurationClicked.emit(rc);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-rating-configurations-list\">\n <p-divider></p-divider>\n <p>Rating Configurations</p>\n @if (selectedRatingConfiguration) {\n <rtsee-manage-rating-configuration [manageRatingConfigurations]=\"manageRatingConfigurations\"\n [ratingConfiguration]=\"selectedRatingConfiguration\"\n ></rtsee-manage-rating-configuration>\n } @else {\n <div class=\"rtsee-rating-configurations-controls\">\n <p-button label=\"Create\" (click)=\"onCreateClicked()\"></p-button>\n </div>\n <div class=\"rtsee-rating-configurations-list-items\">\n <p-menu [model]=\"items\" />\n </div>\n }\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { Button } from \"primeng/button\";\nimport { RTSeeManageEntityConfigurations } from \"@rtsee/utilities-ui\";\nimport { FormComponent } from \"../../../common/components/forms/form/form.component\";\nimport { RatingConfigurationsListComponent } from \"../rating-configurations-list/rating-configurations-list.component\";\n\n@Component({\n selector: \"rtsee-manage-entity-configuration\",\n standalone: true,\n imports: [\n Button,\n FormComponent,\n RatingConfigurationsListComponent,\n ],\n templateUrl: \"./manage-entity-configuration.component.html\",\n})\nexport class ManageEntityConfigurationComponent implements OnInit {\n @Input() manageEntityConfigurations!: RTSeeManageEntityConfigurations;\n\n ngOnInit() {\n if (!this.manageEntityConfigurations.activeEntityConfiguration) {\n this.manageEntityConfigurations.setBlankActiveEntityConfiguration();\n }\n\n if (!this.manageEntityConfigurations.activeEntityConfigurationForm) {\n throw new Error(`Active entityConfig form should be selected`);\n }\n }\n\n submit(): void {\n if (!this.manageEntityConfigurations.activeEntityConfigurationForm) {\n return;\n }\n\n this.manageEntityConfigurations.activeEntityConfigurationForm.submit();\n }\n\n cancel(): void {\n this.manageEntityConfigurations.flushActiveEntityConfiguration();\n }\n}\n","<div class=\"rtsee-manage-entity-configuration\">\n <div class=\"rtsee-manage-entity-configuration-info rtsee-form-container\">\n @if (manageEntityConfigurations.activeEntityConfigurationForm) {\n <rtsee-form [form]=\"manageEntityConfigurations.activeEntityConfigurationForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n [label]=\"'Save'\"\n [disabled]=\"manageEntityConfigurations.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageEntityConfigurations.saveInProgress\"\n />\n </rtsee-form>\n\n @if (manageEntityConfigurations.activeEntityConfiguration && manageEntityConfigurations.activeEntityConfiguration.id) {\n <rtsee-rating-configurations-list [entityConfiguration]=\"manageEntityConfigurations.activeEntityConfiguration\"\n [manageRatingConfigurations]=\"manageEntityConfigurations.activeEntityConfiguration.manageRatingConfigurations\"\n ></rtsee-rating-configurations-list>\n }\n }\n </div>\n</div>\n","import { Component, Input, output, OutputEmitterRef } from '@angular/core';\nimport { IAccordionItem } from '../../rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nimport { RTSeeEntity, RTSeeManageEntities } from '@rtsee/utilities-ui';\nimport { Menu } from 'primeng/menu';\n\n@Component({\n selector: 'rtsee-entities-list',\n imports: [Menu],\n templateUrl: './entities-list.component.html',\n})\nexport class EntitiesListComponent {\n items: IAccordionItem[] = [];\n selectedEntity?: RTSeeEntity;\n onEntityClicked: OutputEmitterRef<RTSeeEntity> = output<RTSeeEntity>();\n\n @Input() manageEntities!: RTSeeManageEntities;\n\n ngOnInit(): void {\n this.manageEntities\n .loadEntities()\n .then(() => {\n this.items = this.entitiesToItems(this.manageEntities.entities);\n })\n .catch((err: any) => {\n console.log(err);\n });\n }\n\n private entitiesToItems(\n entityConfigurations: RTSeeEntity[],\n ): IAccordionItem[] {\n console.log('entityConfigsToItems', entityConfigurations);\n return entityConfigurations.map((et) => {\n return {\n label: et.name,\n isSelected: false,\n command: (): void => {\n this.selectedEntity = et;\n this.onEntityClicked.emit(et);\n },\n };\n });\n }\n}\n","<div class=\"rtsee-entities-list\">\n <p-menu [model]=\"items\" />\n</div>\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { Button } from \"primeng/button\";\nimport { RTSeeManageEntities } from \"@rtsee/utilities-ui\";\nimport { FormComponent } from \"../../../common/components/forms/form/form.component\";\n\n@Component({\n selector: \"rtsee-manage-entity\",\n standalone: true,\n imports: [\n Button,\n FormComponent\n ],\n templateUrl: \"./manage-entity.component.html\"\n})\nexport class ManageEntityComponent implements OnInit {\n @Input() manageEntities!: RTSeeManageEntities;\n\n ngOnInit() {\n if (!this.manageEntities.activeEntity) {\n this.manageEntities.setBlankActiveEntity();\n }\n\n if (!this.manageEntities.activeEntityForm) {\n throw new Error(`Active entity form should be selected`);\n }\n }\n\n submit(): void {\n if (!this.manageEntities.activeEntityForm) {\n return;\n }\n\n this.manageEntities.activeEntityForm.submit();\n }\n\n cancel(): void {\n this.manageEntities.flushActiveEntity();\n }\n}\n","<div class=\"rtsee-manage-entity\">\n @if (manageEntities.activeEntityForm) {\n <rtsee-form [form]=\"manageEntities.activeEntityForm\" (formSubmit)=\"submit()\">\n <p-button type=\"submit\"\n label=\"Submit\"\n [disabled]=\"manageEntities.saveInProgress\"\n ></p-button>\n <p-button [label]=\"'Cancel'\"\n severity=\"secondary\"\n (click)=\"cancel()\"\n [disabled]=\"manageEntities.saveInProgress\"\n />\n </rtsee-form>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { SignInForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { AuthEndpointsKeys, RTSeeAuthConfiguration } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\nimport { ServerSideError } from '../../../common/interfaces';\nimport { RTSeeTextLabelKeys } from '@rtsee/core';\n\n@Component({\n selector: 'rtsee-sign-in',\n templateUrl: './sign-in.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class SignInComponent {\n public readonly signInForm: FormGroup<TypedReactiveForm<SignInForm>> =\n this.formBuilder.group<TypedReactiveForm<SignInForm>>({\n username: this.formBuilder.nonNullable.control(\n {\n value: '',\n disabled: false,\n },\n {\n validators: [Validators.required, Validators.email],\n },\n ),\n password: this.formBuilder.nonNullable.control(\n {\n value: '',\n disabled: false,\n },\n { validators: [Validators.required] },\n ),\n remember: this.formBuilder.nonNullable.control(false),\n });\n public readonly authConfiguration: RTSeeAuthConfiguration;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n public loadInProgress: boolean = false;\n public serverSideError: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n public authService: RTSeeAuthService,\n ) {\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get usernameField(): FormControl<string> {\n return this.signInForm.get('username') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signInForm.get('password') as FormControl<string>;\n }\n\n get rememberField(): FormControl<boolean> {\n return this.signInForm.get('remember') as FormControl<boolean>;\n }\n\n public login(): void {\n if (this.signInForm.valid) {\n this.disableFormFields();\n this.authService.signIn(this.signInForm.getRawValue()).subscribe({\n next: () => {\n void this.router.navigate(\n this.authService.rtseeAuth.authConfiguration.defaultPostLoginRoute,\n );\n this.enableFormFields();\n setTimeout(() => {\n window.location.reload();\n }, 100);\n },\n error: (error: ServerSideError) => {\n console.log(error);\n this.showServerSideErrorForXSeconds(error.error.message);\n this.enableFormFields();\n },\n complete: () => {\n this.enableFormFields();\n },\n });\n } else {\n this.signInForm.markAsTouched(); // this does not work after switching to \"nonNullable\" form fields\n }\n }\n\n private showServerSideErrorForXSeconds(message: string, x: number = 3): void {\n this.serverSideError = message;\n\n setTimeout(() => {\n this.serverSideError = '';\n }, x * 1000); // we can do pop-up message instead\n }\n\n private disableFormFields(): void {\n this.loadInProgress = true;\n this.usernameField.disable();\n this.passwordField.disable();\n this.rememberField.disable();\n }\n\n private enableFormFields(): void {\n this.loadInProgress = false;\n this.usernameField.enable(); // fuck me, but [disabled]=\"loadInProgress\" on the field no longer works :(\n this.passwordField.enable();\n this.rememberField.enable();\n }\n\n protected readonly RTSeeTextLabelKeys = RTSeeTextLabelKeys;\n}\n","<div class=\"auth-container rtsee-form-container\" >\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">{{ authService.rtseeAuth.labels[RTSeeTextLabelKeys.SIGN_IN_FORM_HEADER] }}</h2>\n <p class=\"auth-title-description\">{{ authService.rtseeAuth.labels[RTSeeTextLabelKeys.SIGN_IN_TEXT_SUBHEADER] }}</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signInForm\" (ngSubmit)=\"login()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup >\n <p-floatlabel variant=\"on\">\n <input id=\"user-email\"\n pInputText\n [formControl]=\"usernameField\"\n />\n <label for=\"user-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!usernameField.valid && usernameField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is invalid</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"user-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n />\n <label for=\"user-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (serverSideError) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{serverSideError}}</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"remember\" [binary]=\"true\" [formControl]=\"rememberField\" />\n <label for=\"remember\" class=\"ml-2\">\n <span>\n {{authService.rtseeAuth.labels[RTSeeTextLabelKeys.REMEMBER_ME_CHECKBOX_LABEL] }}\n </span>\n </label>\n </div>\n <div class=\"rtsee-form-field-container\">\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.FORGOT_PASSWORD)\"\n class=\"auth-deep-blue-sm-medium\"\n >Forgot password?</a>\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign In\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n <p class=\"rtsee-form-label\">\n <span>Don't have an account?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_UP)\"\n class=\"auth-deep-blue-sm-medium\"\n >Create one!</a>\n </p>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilsService {\n constructor() {}\n\n public static getKeysAsValueObject<T extends object>(\n obj: T,\n ): Record<string, string> {\n // object was {}\n if (obj) {\n return Object.keys(obj).reduce<Record<string, string>>(\n (result, value) => {\n result[value] = value;\n return result;\n },\n {},\n );\n }\n return {};\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport class ConfirmPasswordValidator {\n /**\n * Check matching password with confirm password\n * @param control AbstractControl\n */\n static MatchFields(control: AbstractControl): ValidationErrors | null {\n const passwordField: AbstractControl | null = control.get('password');\n const passwordConfirmationField: AbstractControl | null = control.get(\n 'passwordConfirmation',\n );\n\n if (!passwordField || !passwordConfirmationField) {\n throw new Error('MatchFieldsValidator unable to find password controls!');\n }\n\n const password: string = passwordField.getRawValue() as string;\n const passwordConfirmation: string =\n passwordConfirmationField.getRawValue() as string;\n\n if (password !== passwordConfirmation) {\n return {\n confirmPassword: true,\n };\n }\n\n return null;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { SignUpForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ConfirmPasswordValidator } from '../validators/form-fields-validators';\nimport { Router, RouterLink } from '@angular/router';\nimport { NgOptimizedImage } from '@angular/common';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { IRtseeSignUpRequestOptions, IRTSeeSignUpResponse } from '@rtsee/auth';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Checkbox } from 'primeng/checkbox';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-sign-up',\n templateUrl: './sign-up.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n Password,\n FloatLabel,\n Checkbox,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class SignUpComponent {\n public readonly signUpForm: FormGroup<TypedReactiveForm<SignUpForm>>;\n public readonly signUpFormKeys: Record<keyof SignUpForm, string>;\n public readonly authConfiguration: RTSeeAuthConfiguration;\n public loadInProgress: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.signUpForm = this.formBuilder.group<TypedReactiveForm<SignUpForm>>(\n {\n email: this.formBuilder.control('', {\n validators: [Validators.required, Validators.email],\n }),\n password: this.formBuilder.control('', {\n validators: [Validators.required, Validators.minLength(6)],\n }),\n passwordConfirmation: this.formBuilder.control('', {\n validators: [Validators.required, Validators.minLength(6)],\n }),\n terms: this.formBuilder.control(false, {\n nonNullable: true,\n validators: [Validators.requiredTrue],\n }),\n },\n { validators: [ConfirmPasswordValidator.MatchFields] },\n );\n this.signUpFormKeys = UtilsService.getKeysAsValueObject(\n this.signUpForm.getRawValue(),\n );\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.signUpForm.get('email') as FormControl<string>;\n }\n\n get passwordField(): FormControl<string> {\n return this.signUpForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmationField(): FormControl<string> {\n return this.signUpForm.get('passwordConfirmation') as FormControl<string>;\n }\n\n get termsField(): FormControl<boolean> {\n return this.signUpForm.get('terms') as FormControl<boolean>;\n }\n\n public signUp(): void {\n this.signUpForm.markAllAsTouched();\n\n if (this.signUpForm.valid) {\n this.loadInProgress = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues: SignUpForm = this.signUpForm.getRawValue();\n\n this.authService\n .signUp({\n email: formValues.email!,\n password: formValues.password!,\n terms: formValues.terms!,\n } as IRtseeSignUpRequestOptions)\n .subscribe({\n next: (response: IRTSeeSignUpResponse) => {\n this.loadInProgress = false;\n this.successMessage =\n 'Registration successful! You can now sign in.';\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n console.log('User registered successfully', response);\n },\n error: (error) => {\n this.loadInProgress = false;\n this.errorMessage =\n error.error?.message ||\n 'Error during registration. Please try again.';\n console.error('Error during registration', error);\n },\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Personal Account Registration</h2>\n <p class=\"auth-title-description\">Create your personal account to view stories</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"signUpForm\" (ngSubmit)=\"signUp()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"sign-up-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"sign-up-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"sign-up-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordField.invalid && passwordField.touched) || (signUpForm.hasError('confirmPassword') && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"sign-up-password\">Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordField.hasError('required') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n @if (passwordField.hasError('minlength') && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password must be at least 6 characters long</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmationField\"\n [feedback]=\"false\"\n [styleClass]=\"(passwordConfirmationField.invalid && passwordConfirmationField.touched) || (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (passwordConfirmationField.hasError('required') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (passwordConfirmationField.hasError('minlength') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation must be at least 6 characters long</p-message>\n }\n @if (signUpForm.hasError('confirmPassword') && passwordConfirmationField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n <div class=\"rtsee-form-field-container\">\n <p-checkbox inputId=\"terms\" [binary]=\"true\" [formControl]=\"termsField\" />\n <label for=\"terms\" class=\"ml-2\">I agree to the <a href=\"#\" [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.PRIVACY_POLICY)\" class=\"auth-deep-blue-sm-medium\">terms of use</a></label>\n @if (termsField.hasError('required') && termsField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >You must accept the terms and conditions</p-message>\n }\n </div>\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Sign Up\"\n [disabled]=\"loadInProgress\"\n />\n @if (loadInProgress) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Already have an account?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { UtilsService } from '../services/utils.service';\nimport { ForgotPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { Router, RouterLink } from '@angular/router';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport {\n RTSeeAuthService,\n IRtseeForgotPasswordRequestOptions,\n IRTSeeForgotPasswordResponse,\n} from '../services/auth.service';\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputText } from 'primeng/inputtext';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-forgot-password',\n templateUrl: './forgot-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n RouterLink,\n ButtonModule,\n InputGroup,\n InputText,\n FloatLabel,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class ForgotPasswordComponent {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public readonly emailForm: FormGroup<TypedReactiveForm<ForgotPasswordForm>>;\n public readonly forgotPasswordFormKeys: Record<\n keyof ForgotPasswordForm,\n string\n >;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.emailForm = this.formBuilder.group<\n TypedReactiveForm<ForgotPasswordForm>\n >({\n email: this.formBuilder.nonNullable.control('', {\n validators: [Validators.required, Validators.email],\n }),\n });\n this.forgotPasswordFormKeys = UtilsService.getKeysAsValueObject(\n this.emailForm.getRawValue(),\n );\n this.authConfiguration = this.authService.rtseeAuth.authConfiguration;\n }\n\n get emailField(): FormControl<string> {\n return this.emailForm.get('email') as FormControl<string>;\n }\n\n public submitEmail(): void {\n this.emailForm.markAllAsTouched();\n\n if (this.emailForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const email = this.emailForm.getRawValue().email;\n\n this.authService\n .forgotPassword({ email } as IRtseeForgotPasswordRequestOptions)\n .subscribe({\n next: (response: IRTSeeForgotPasswordResponse) => {\n this.isLoading = false;\n this.successMessage =\n response.message || 'Password reset email sent successfully!';\n console.log('Password reset email sent successfully', response);\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage =\n error.error?.message ||\n 'Error sending password reset email. Please try again.';\n console.error('Error sending password reset email', error);\n },\n });\n }\n }\n\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Recovery</h2>\n <p class=\"auth-title-description\">Enter your email address to receive password reset instructions</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"emailForm\" (ngSubmit)=\"submitEmail()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <input id=\"forgot-password-email\"\n pInputText\n [formControl]=\"emailField\"\n [class.p-invalid]=\"emailField.invalid && emailField.touched\"\n />\n <label for=\"forgot-password-email\">Email</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (emailField.hasError('required') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Email is required</p-message>\n }\n @if (emailField.hasError('email') && emailField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Please enter a valid email address</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Send\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span> </span>\n <a href=\"#\"\n [routerLink]=\"authConfiguration.getRoutePathSplit(AuthEndpointsKeys.SIGN_IN)\"\n class=\"auth-deep-blue-sm-medium\"\n >Sign In</a>\n </p>\n</div>\n","export enum FormErrorKey {\n required = 'required',\n email = 'email',\n minLength = 'minlength',\n maxLength = 'maxlength',\n requiredLength = 'requiredLength',\n passwordsMismatch = 'passwordsMismatch',\n}\n","import { Component, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n ValidatorFn,\n Validators,\n ValidationErrors,\n} from '@angular/forms';\nimport { ResetPasswordForm, TypedReactiveForm } from '../types/auth-form.type';\nimport { UtilsService } from '../services/utils.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormErrorKey } from '../../enums/form.enum';\nimport { COMMON_CONSTANTS } from '../../constans/common.const';\nimport {\n RTSeeAuthService,\n IRtseeResetPasswordRequestOptions,\n IRTSeeResetPasswordResponse,\n} from '../services/auth.service';\nimport { RTSeeAuthConfiguration, AuthEndpointsKeys } from '@rtsee/auth';\nimport { NgOptimizedImage } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { Password } from 'primeng/password';\nimport { FloatLabel } from 'primeng/floatlabel';\nimport { Message } from 'primeng/message';\nimport { ProgressSpinner } from 'primeng/progressspinner';\n\n@Component({\n selector: 'rtsee-reset-password',\n templateUrl: './reset-password.component.html',\n imports: [\n NgOptimizedImage,\n ReactiveFormsModule,\n ButtonModule,\n InputGroup,\n Password,\n FloatLabel,\n Message,\n ProgressSpinner,\n ],\n standalone: true,\n})\nexport class ResetPasswordComponent implements OnInit {\n public isLoading: boolean = false;\n public successMessage: string = '';\n public errorMessage: string = '';\n public resetPasswordForm: FormGroup<TypedReactiveForm<ResetPasswordForm>>;\n public passwordFormKeys: Record<keyof ResetPasswordForm, string>;\n public hidePassword: Record<keyof ResetPasswordForm, boolean> = {\n password: true,\n passwordConfirm: true,\n };\n private token!: string;\n authConfiguration: RTSeeAuthConfiguration;\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private readonly router: Router,\n private authService: RTSeeAuthService,\n ) {\n this.resetPasswordForm = this.formBuilder.group(\n {\n password: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(COMMON_CONSTANTS.minPasswordLength),\n ],\n nonNullable: true,\n }),\n passwordConfirm: this.formBuilder.control('', {\n validators: [\n Validators.required,\n Validators.minLength(COMMON_CONSTANTS.minPasswordLength),\n ],\n nonNullable: true,\n }),\n },\n { validators: [this.passwordMatchValidator()] },\n );\n this.passwordFormKeys = UtilsService.getKeysAsValueObject(\n this.resetPasswordForm.value,\n );\n this.authConfiguration = this.authService.authConfiguration;\n }\n\n get passwordField(): FormControl<string> {\n return this.resetPasswordForm.get('password') as FormControl<string>;\n }\n\n get passwordConfirmField(): FormControl<string> {\n return this.resetPasswordForm.get('passwordConfirm') as FormControl<string>;\n }\n\n public ngOnInit(): void {\n this.token = this.route.snapshot.params['token'];\n }\n\n public resetPassword(): void {\n this.resetPasswordForm.markAllAsTouched();\n\n if (this.resetPasswordForm.valid) {\n this.isLoading = true;\n this.errorMessage = '';\n this.successMessage = '';\n const formValues = this.resetPasswordForm.getRawValue();\n\n this.authService\n .resetPassword({\n password: formValues.password,\n passwordConfirm: formValues.passwordConfirm,\n token: this.token,\n } as IRtseeResetPasswordRequestOptions)\n .subscribe({\n next: (response: IRTSeeResetPasswordResponse) => {\n this.isLoading = false;\n this.successMessage =\n response.message || 'Password reset successfully!';\n console.log('Password reset successfully', response);\n void this.router.navigate(\n this.authConfiguration.getRoutePathSplit(\n this.AuthEndpointsKeys.SIGN_IN,\n ),\n );\n },\n error: (error) => {\n this.isLoading = false;\n this.errorMessage =\n error.error?.message ||\n 'Error resetting password. Please try again.';\n console.error('Error resetting password', error);\n },\n });\n }\n }\n\n private passwordMatchValidator(): ValidatorFn {\n // @ts-ignore\n return (\n form: FormGroup<TypedReactiveForm<ResetPasswordForm>>,\n ): ValidationErrors | null => {\n const password = form.value.password;\n const passwordConfirm = form.value.passwordConfirm;\n if (password !== passwordConfirm) {\n if (form.controls.password.valid) {\n form.controls.password.setErrors({\n [FormErrorKey.passwordsMismatch]: true,\n });\n }\n if (form.controls.passwordConfirm.valid) {\n form.controls.passwordConfirm.setErrors({\n [FormErrorKey.passwordsMismatch]: true,\n });\n }\n return { [FormErrorKey.passwordsMismatch]: true };\n }\n if (form.controls.password.hasError(FormErrorKey.passwordsMismatch)) {\n form.controls.password.setErrors(null);\n }\n if (\n form.controls.passwordConfirm.hasError(FormErrorKey.passwordsMismatch)\n ) {\n form.controls.passwordConfirm.setErrors(null);\n }\n return null;\n };\n }\n\n protected readonly FormErrorKey = FormErrorKey;\n protected readonly AuthEndpointsKeys = AuthEndpointsKeys;\n}\n","<div class=\"auth-container rtsee-form-container\">\n <img [ngSrc]=\"authConfiguration.appLogo\"\n alt=\"Company Logo\"\n class=\"auth-logo\"\n height=\"37\"\n width=\"37\"\n />\n <h2 class=\"auth-title\">Password Reset</h2>\n <p class=\"auth-title-description\">Please enter a new password for your account.</p>\n\n <form class=\"auth-form rtsee-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"new-password\"\n [formControl]=\"passwordField\"\n [feedback]=\"false\"\n [class]=\"(passwordField.invalid && passwordField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"new-password\">New Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordField.valid && passwordField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password is required</p-message>\n }\n </div>\n <div class=\"rtsee-form-field-container\">\n <p-inputgroup>\n <p-floatlabel variant=\"on\">\n <p-password id=\"confirm-password\"\n [formControl]=\"passwordConfirmField\"\n [feedback]=\"false\"\n [class]=\"(passwordConfirmField.invalid && passwordConfirmField.touched) || (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) ? 'p-invalid' : ''\"\n />\n <label for=\"confirm-password\">Confirm Password</label>\n </p-floatlabel>\n </p-inputgroup>\n @if (!passwordConfirmField.valid && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Password confirmation is required</p-message>\n }\n @if (resetPasswordForm.hasError(FormErrorKey.passwordsMismatch) && passwordConfirmField.touched) {\n <p-message class=\"rtsee-form-field-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >Passwords do not match</p-message>\n }\n </div>\n\n @if (successMessage) {\n <p-message class=\"rtsee-form-success-message\"\n severity=\"success\"\n variant=\"simple\"\n size=\"small\"\n >{{ successMessage }}</p-message>\n }\n\n @if (errorMessage) {\n <p-message class=\"rtsee-form-error-message\"\n severity=\"error\"\n variant=\"simple\"\n size=\"small\"\n >{{ errorMessage }}</p-message>\n }\n\n <div class=\"rtsee-form-submit-container\">\n <p-button type=\"submit\"\n label=\"Reset Password\"\n [disabled]=\"isLoading\"\n />\n @if (isLoading) {\n <p-progress-spinner class=\"rtsee-progress-spinner rtsee-progress-spinner-sm\"></p-progress-spinner>\n }\n </div>\n </form>\n\n <p class=\"rtsee-form-label\">\n <span>Remember your password?</span>\n <span> </span>\n <a href=\"#\" class=\"auth-deep-blue-sm-medium\">Sign In</a>\n </p>\n</div>\n","import { Component } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { MessageModule } from 'primeng/message';\n\n@Component({\n selector: 'rtsee-privacy-policy',\n templateUrl: './privacy-policy.component.html',\n styleUrls: ['./privacy-policy.component.scss'],\n imports: [ButtonModule, MessageModule],\n standalone: true,\n})\nexport class PrivacyPolicyComponent {}\n","<div class=\"privacy-policy-container\">\n <div class=\"policy-card\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"flex justify-content-center align-items-center\">\n <h1>Terms of Use & Privacy Policy</h1>\n </div>\n </div>\n </div>\n\n <div class=\"content-section\">\n <p-message severity=\"info\" [closable]=\"false\" class=\"info-banner\">\n <ng-template pTemplate>\n <div class=\"p-message-content\">\n <p class=\"last-updated\"><strong>Last Updated:</strong> December 2024</p>\n <p>By using our services, you agree to the terms and conditions outlined in this document. Please read this Privacy Policy and Terms of Use carefully before using our platform.</p>\n </div>\n </ng-template>\n </p-message>\n\n <h2>1. Acceptance of Terms</h2>\n <p>By accessing and using this service, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service.</p>\n\n <h2>2. Privacy Policy</h2>\n\n <h3>2.1 Information We Collect</h3>\n <p>We collect information you provide directly to us, such as when you create an account, use our services, or contact us for support. This may include:</p>\n <ul>\n <li><strong>Personal Information:</strong> Name, email address, phone number, and other contact details</li>\n <li><strong>Account Information:</strong> Username, password, and profile information</li>\n <li><strong>Usage Data:</strong> Information about how you use our services, including pages visited, time spent, and features used</li>\n <li><strong>Device Information:</strong> IP address, browser type, operating system, and device identifiers</li>\n <li><strong>Cookies and Tracking:</strong> We use cookies and similar technologies to enhance your experience</li>\n </ul>\n\n <h3>2.2 How We Use Your Information</h3>\n <p>We use the information we collect to:</p>\n <ul>\n <li>Provide, maintain, and improve our services</li>\n <li>Process transactions and send related information</li>\n <li>Send technical notices, updates, security alerts, and support messages</li>\n <li>Respond to your comments, questions, and requests</li>\n <li>Monitor and analyze trends, usage, and activities</li>\n <li>Personalize and improve your experience</li>\n <li>Detect, investigate, and prevent fraudulent transactions and other illegal activities</li>\n </ul>\n\n <h3>2.3 Information Sharing and Disclosure</h3>\n <p>We do not sell, trade, or otherwise transfer your personal information to third parties without your consent, except in the following circumstances:</p>\n <ul>\n <li><strong>Service Providers:</strong> We may share information with trusted third-party service providers who assist us in operating our platform</li>\n <li><strong>Legal Requirements:</strong> We may disclose information when required by law or to protect our rights and safety</li>\n <li><strong>Business Transfers:</strong> In connection with any merger, sale of assets, or acquisition of all or a portion of our business</li>\n <li><strong>Consent:</strong> We may share information with your explicit consent</li>\n </ul>\n\n <h3>2.4 Data Security</h3>\n <p>We implement appropriate technical and organizational security measures to protect your personal information against unauthorized access, alteration, disclosure, or destruction. However, no method of transmission over the internet or electronic storage is 100% secure.</p>\n\n <h3>2.5 Data Retention</h3>\n <p>We retain your personal information for as long as necessary to provide our services and fulfill the purposes outlined in this privacy policy, unless a longer retention period is required or permitted by law.</p>\n\n <h3>2.6 Your Rights</h3>\n <p>Depending on your location, you may have certain rights regarding your personal information, including:</p>\n <ul>\n <li>The right to access and receive a copy of your personal information</li>\n <li>The right to rectify or update your personal information</li>\n <li>The right to erase your personal information</li>\n <li>The right to restrict or object to the processing of your personal information</li>\n <li>The right to data portability</li>\n <li>The right to withdraw consent at any time</li>\n </ul>\n\n <h2>3. Terms of Service</h2>\n\n <h3>3.1 User Accounts</h3>\n <p>To access certain features of our service, you may be required to create an account. You are responsible for:</p>\n <ul>\n <li>Maintaining the confidentiality of your account credentials</li>\n <li>All activities that occur under your account</li>\n <li>Notifying us immediately of any unauthorized use of your account</li>\n <li>Providing accurate and up-to-date information</li>\n </ul>\n\n <h3>3.2 Acceptable Use</h3>\n <p>You agree not to use our service for any unlawful purpose or any purpose prohibited under this clause. You may not use our service in any manner that could damage, disable, overburden, or impair our servers or networks.</p>\n\n <h3>3.3 Prohibited Activities</h3>\n <p>The following activities are prohibited:</p>\n <ul>\n <li>Violating any applicable laws or regulations</li>\n <li>Transmitting or procuring the sending of any unsolicited or unauthorized advertising</li>\n <li>Attempting to gain unauthorized access to any portion of our service</li>\n <li>Interfering with or disrupting the service or servers connected to the service</li>\n <li>Using any automated system to access the service for any purpose</li>\n <li>Impersonating any person or entity or misrepresenting your affiliation with a person or entity</li>\n </ul>\n\n <h3>3.4 Intellectual Property</h3>\n <p>The service and its original content, features, and functionality are and will remain the exclusive property of our company and its licensors. The service is protected by copyright, trademark, and other laws.</p>\n\n <h3>3.5 Termination</h3>\n <p>We may terminate or suspend your account and bar access to the service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever, including without limitation if you breach the Terms.</p>\n\n <h3>3.6 Disclaimer</h3>\n <p>The information on this service is provided on an \"as is\" basis. To the fullest extent permitted by law, this company excludes all representations, warranties, conditions and terms relating to our service and the use of this service.</p>\n\n <h3>3.7 Limitation of Liability</h3>\n <p>In no event shall our company, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of the service.</p>\n\n <h2>4. Cookies and Tracking Technologies</h2>\n <p>We use cookies and similar tracking technologies to track activity on our service and hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent.</p>\n\n <h2>5. Third-Party Services</h2>\n <p>Our service may contain links to third-party websites or services that are not owned or controlled by us. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party websites or services.</p>\n\n <h2>6. Children's Privacy</h2>\n <p>Our service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us.</p>\n\n <h2>7. International Data Transfers</h2>\n <p>Your information may be transferred to and processed in countries other than your own. We ensure that such transfers comply with applicable data protection laws and implement appropriate safeguards to protect your personal information.</p>\n\n <h2>8. Changes to This Policy</h2>\n <p>We reserve the right to update or change our Privacy Policy and Terms of Use at any time. We will notify you of any changes by posting the new Privacy Policy and Terms of Use on this page and updating the \"Last Updated\" date.</p>\n\n <div class=\"contact-section\">\n <h2>9. Contact Information</h2>\n <p>If you have any questions about this Privacy Policy and Terms of Use, please contact us:</p>\n <ul>\n <li><strong>Email:</strong> [Your Email Address]</li>\n <li><strong>Address:</strong> [Your Company Address]</li>\n <li><strong>Phone:</strong> [Your Contact Number]</li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <p>This document was last updated on December 2024</p>\n </div>\n </div>\n </div>\n</div>\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SignInComponent } from '../sign-in/sign-in.component';\nimport { SignUpComponent } from '../sign-up/sign-up.component';\nimport { ForgotPasswordComponent } from '../forgot-password/forgot-password.component';\nimport { ResetPasswordComponent } from '../reset-password/reset-password.component';\nimport { PrivacyPolicyComponent } from '../privacy-policy/privacy-policy.component';\nimport { RTSeeAuthService } from '../services/auth.service';\nimport { RTSeeAuth } from '@rtsee/auth';\nimport { AuthEndpointsKeys, DEFAULT_ROUTE_NAMES } from '@rtsee/auth';\n\n@Component({\n selector: 'rtsee-auth',\n templateUrl: './auth.component.html',\n imports: [\n SignInComponent,\n SignUpComponent,\n ForgotPasswordComponent,\n ResetPasswordComponent,\n PrivacyPolicyComponent,\n ],\n standalone: true,\n})\nexport class RTSeeAuthComponent implements OnInit {\n @Input() auth!: RTSeeAuth<any>;\n\n activeComponent:\n | 'reset-password'\n | 'sign-up'\n | 'sign-in'\n | 'forgot-password'\n | 'privacy-policy' = 'sign-in';\n\n constructor(public authService: RTSeeAuthService) {\n if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_IN],\n )\n ) {\n this.activeComponent = 'sign-in';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.SIGN_UP],\n )\n ) {\n this.activeComponent = 'sign-up';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.FORGOT_PASSWORD],\n )\n ) {\n this.activeComponent = 'forgot-password';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.RESET_PASSWORD].split('/')[0],\n )\n ) {\n this.activeComponent = 'reset-password';\n } else if (\n window.location.pathname.includes(\n DEFAULT_ROUTE_NAMES[AuthEndpointsKeys.PRIVACY_POLICY],\n )\n ) {\n this.activeComponent = 'privacy-policy';\n }\n }\n\n ngOnInit() {\n this.authService.init(this.auth);\n }\n}\n","<div class=\"rtsee-auth\">\n @if (authService.rtseeAuth) {\n @if (activeComponent === 'sign-in') {\n <rtsee-sign-in></rtsee-sign-in>\n }\n @if (activeComponent === 'sign-up') {\n <rtsee-sign-up></rtsee-sign-up>\n }\n @if (activeComponent === 'forgot-password') {\n <rtsee-forgot-password></rtsee-forgot-password>\n }\n @if (activeComponent === 'reset-password') {\n <rtsee-reset-password></rtsee-reset-password>\n }\n @if (activeComponent === 'privacy-policy') {\n <rtsee-privacy-policy></rtsee-privacy-policy>\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n standalone: true,\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n standalone: true,\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { PreloaderComponent } from '../../../../../common/components/preloader/preloader.component';\nimport { NgForOf } from '@angular/common';\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n imports: [ReactiveFormsModule, PreloaderComponent, NgForOf],\n standalone: true,\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value: string) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\"\n *ngIf=\"search.searchInProgress\"\n ></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\"\n class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n standalone: true,\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\nimport { SearchComponent } from '../search/search.component';\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n imports: [SearchComponent],\n standalone: true,\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\nimport { NgIf } from '@angular/common';\nimport { SearchComponent } from './components/search/search.component';\nimport { ManageChatComponent } from './components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/contacts-multiselect/contacts-multiselect.component';\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n imports: [\n NgIf,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent,\n ],\n standalone: true,\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewGroupClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">people</span>\n </div>\n <span>New Group</span>\n </div>\n </li>\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewChannelClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">campaign</span>\n </div>\n <span>New Channel</span>\n </div>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n standalone: true,\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-vendors',\n templateUrl: './vendors.component.html',\n standalone: true,\n})\nexport class VendorsComponent {}\n","<p>vendors works!</p>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { FormComponent } from './common/components/forms/form/form.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RTSeeContainerComponent } from './components/rtsee-container/rtsee-container.component';\nimport { RTSeeConferenceComponent } from './components/rtsee/rtsee-conference.component';\nimport { PresentationComponent } from './components/rtsee-presentation/presentation/presentation.component';\nimport { StoryPlayerComponent } from './components/rtsee-presentation/story-player/story-player.component';\nimport { SlideComponent } from './components/rtsee-presentation/slide/slide.component';\nimport { StoryThumbnailComponent } from './components/rtsee-presentation/story-thumbnail/story-thumbnail.component';\nimport { SignUpComponent } from './components/rtsee-auth/sign-up/sign-up.component';\nimport { SignInComponent } from './components/rtsee-auth/sign-in/sign-in.component';\nimport { ForgotPasswordComponent } from './components/rtsee-auth/forgot-password/forgot-password.component';\nimport { VendorsComponent } from './components/rtsee-auth/vendors/vendors.component';\nimport { RTSeeAuthComponent } from './components/rtsee-auth/auth/auth.component';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { ResetPasswordComponent } from './components/rtsee-auth/reset-password/reset-password.component';\nimport { PresentationHeaderComponent } from './components/rtsee-presentation/presentation-header/presentation-header.component';\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { providePrimeNG } from 'primeng/config';\nimport Aura from '@primeuix/themes/aura';\nimport { PaymentProductSnippetComponent } from './components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component';\n\n@NgModule({\n providers: [\n provideAnimationsAsync(),\n providePrimeNG({\n theme: {\n preset: Aura,\n },\n }),\n ],\n declarations: [],\n imports: [\n RTSeeAuthComponent,\n VendorsComponent,\n ForgotPasswordComponent,\n SignInComponent,\n SignUpComponent,\n RtseeEventsDashboardSessionComponent,\n EventThumbnailComponent,\n ShaveDirective,\n ContactsMultiselectComponent,\n ManageChatComponent,\n CallWidgetComponent,\n WidgetDirective,\n RtseeEventsDashboardClientComponent,\n ResetPasswordComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n RtseePeersListComponent,\n ChatComponent,\n MessageComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n RtseeEventsDashboardComponent,\n MessengerComponent,\n RTSeeControlsComponent,\n RTSeeContainerComponent,\n RTSeeConferenceComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseeSettingsComponent,\n MessengerHeaderComponent,\n ChatsListComponent,\n ProfileComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n PresentationComponent,\n StoryPlayerComponent,\n SlideComponent,\n StoryThumbnailComponent,\n PresentationHeaderComponent,\n PaymentProductSnippetComponent,\n CommonModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n FormsModule,\n NgOptimizedImage,\n RouterLink,\n RouterLinkActive,\n NgxCaptchaModule,\n FormComponent,\n ],\n exports: [\n RTSeeConferenceComponent,\n MessengerComponent,\n RtseeEventsDashboardComponent,\n RTSeeContainerComponent,\n PresentationComponent,\n RTSeeAuthComponent,\n PaymentProductSnippetComponent,\n FormComponent,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee-settings/rtsee-settings.component';\nexport * from './lib/components/rtsee/rtsee-conference.component';\nexport * from './lib/components/rtsee-peer/rtsee-peer.component';\nexport * from './lib/components/rtsee-messenger/profile/profile.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-messenger/payment-product-snippet/payment-product-snippet.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/components/rtsee-container/rtsee-container.component';\nexport * from './lib/components/rtsee-presentation/presentation/presentation.component';\nexport * from './lib/components/rtsee-tags/rtsee-tags-accordion-menu/rtsee-tags-accordion-menu.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-manage/rtsee-tag-manage.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-groups-manage/rtsee-tag-groups-manage.component';\nexport * from './lib/components/rtsee-tags/rtsee-tag-group-manage/rtsee-tag-group-manage.component';\nexport * from './lib/components/rtsee-entities/entities-configurations-list/entities-configurations-list.component';\nexport * from './lib/components/rtsee-entities/manage-entity-configuration/manage-entity-configuration.component';\nexport * from './lib/components/rtsee-entities/entities-list/entities-list.component';\nexport * from './lib/components/rtsee-entities/manage-entity/manage-entity.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-comments/rtsee-entity-comments.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-tags/rtsee-entity-tags.component';\nexport * from './lib/components/rtsee-entities/rtsee-entity-preview/rtsee-entity-preview.component';\nexport * from './lib/components/rtsee-auth/auth/auth.component';\nexport * from './lib/ngx.module';\nexport * from './lib/common/components/forms/form/form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.RTSeeAuthService","i1.DefaultImagesService","i1.TimeFormatHelperService","i1.MessageWidgetsService","i2.TimeFormatHelperService","i1.PaymentsService","i1.EventsWidgetsService","i2.DefaultImagesService","i2","i3.RTSeeAuthService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,UAAU,CAAA;AAErB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK;IAClB;8GAJW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCOY,sBAAsB,CAAA;IAIjC,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC;AAChB,cAAE,IAAI,CAAC,KAAK,CAAC,eAAe;AAC5B,cAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;IACnC;8GARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnC,88DA0DA,EAAA,MAAA,EAAA,CAAA,4kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlDY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB,CAAC,OAAO,CAAC,cACN,IAAI,EAAA,QAAA,EAAA,88DAAA,EAAA,MAAA,EAAA,CAAA,4kCAAA,CAAA,EAAA;8BAGP,KAAK,EAAA,CAAA;sBAAb;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;MEEU,sBAAsB,CAAA;AAGjC,IAAA,WAAA,GAAA,EAAe;IAEf,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;AAClB,QAAA,KAAK,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;IAC3C;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;IAClC;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;IACnC;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;IAClC;8GAvBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfnC,y9DA8CA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,MAAM,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,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,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG/C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,cAC/C,IAAI,EAAA,QAAA,EAAA,y9DAAA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA;wDAGP,KAAK,EAAA,CAAA;sBAAb;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;MEPU,sBAAsB,CAAA;AAQjC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC;IAC1B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,wBAAwB,EAAE;IACjC;IAEA,wBAAwB,GAAA;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACxD,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;YACrB;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,GAAG,IAAI,CAAC;YAC1D;YAEA,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,oBAAoB,GAAA;QAClB,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU;AAC7C,QAAA,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU;AAEhD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE;AACvE,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC;QAC1B;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,IAAI,GAAG;AACzE,QAAA,MAAM,aAAa,GACjB,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,IAAI,UAAU,IAAI,GAAG;AACxD,QAAA,MAAM,eAAe,GACnB,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,IAAI,UAAU,IAAI,GAAG;AAExD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;AAC1D,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC;IAChE;8GAtDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,wGCVnC,ytBAmBA,EAAA,MAAA,EAAA,CAAA,4iCAAA,CAAA,EAAA,CAAA,CAAA;;2FDTa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,IAAI,EAAA,QAAA,EAAA,ytBAAA,EAAA,MAAA,EAAA,CAAA,4iCAAA,CAAA,EAAA;wDASP,IAAI,EAAA,CAAA;sBAAZ;;;MEAU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;QACA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAC7B,IAAI,CAAC,WAAW,CAAC,aAAiC,CACnD;IACH;8GApBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6SCjB/B,4hCA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,6FAAE,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGpC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,gBAAgB,EAAA,OAAA,EAEjB,CAAC,OAAO,EAAE,IAAI,EAAE,sBAAsB,CAAC,EAAA,UAAA,EACpC,IAAI,EAAA,QAAA,EAAA,4hCAAA,EAAA;wDAMU,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBACE,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa;gBACf,IAAI,EAAA,CAAA;sBAAZ;;;MELU,wBAAwB,CAAA;AAInC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;IAClC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB;IACtD;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;IAChC;8GAdW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBrC,i4EA2DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhDI,OAAO,oFACP,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAEnB;wBACP,OAAO;wBACP,sBAAsB;wBACtB,kBAAkB;wBAClB,sBAAsB;AACvB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,i4EAAA,EAAA;wDAKP,KAAK,EAAA,CAAA;sBAAb;;;MEeU,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;AAEvC,IAAA,IAAI,CAAC,IAAoB,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC5C;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;IAC3D;AAEA,IAAA,MAAM,CACJ,WAAuC,EAAA;QAEvC,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CACH,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAClD,iBAAiB,CAAC,OAAO,CAC1B,EACD,WAAW;AAEZ,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD;AAEA,IAAA,MAAM,CACJ,WAAuC,EAAA;AAEvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAClD,iBAAiB,CAAC,OAAO,CAC1B,EACD,WAAW,CACZ;IACH;AAEA,IAAA,cAAc,CACZ,WAA+C,EAAA;AAE/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAClD,iBAAiB,CAAC,eAAe,CAClC,EACD,WAAW,CACZ;IACH;AAEA,IAAA,aAAa,CACX,WAA8C,EAAA;AAE9C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAClD,iBAAiB,CAAC,cAAc,CACjC,EACD,WAAW,CACZ;IACH;8GA3DW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCjBY,gBAAgB,CAAA;IAK3B,WAAA,CACU,WAA6B,EAC7B,MAAc,EAAA;QADd,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QAkCG,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QACrC,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;QAjCxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC1D,QAAA,KAAK,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;IAC7E;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACpE;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B;QACF;AACA,QAAA,KAAK,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACpE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE;AACnC,QAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CACpE;QACD,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1B,CAAC,EAAE,GAAG,CAAC;IACT;8GAvCW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB7B,otKA2GA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5FY,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,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,EAAE,MAAM,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,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,UAAA,EAAA,IAAA,EAAE,WAAW,+VAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,cACxD,IAAI,EAAA,QAAA,EAAA,otKAAA,EAAA;uGAKP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEjBU,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,OAAO,GAAG,+DAA+D;AAC1E,IAAA;8GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCSY,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAAmB,oBAA0C,EAAA;QAA1C,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QASpB,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IATM;AAEhE,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACnC;QACF;QACA,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;IACrC;8GATW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbrC,m+FAsEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5DY,OAAO,oFAAE,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WAEzB,CAAC,OAAO,EAAE,gBAAgB,CAAC,cACxB,IAAI,EAAA,QAAA,EAAA,m+FAAA,EAAA;sFAGP,SAAS,EAAA,CAAA;sBAAjB;;;MEPU,kBAAkB,CAAA;AAO7B,IAAA,WAAA,GAAA;QANA,IAAA,CAAA,OAAO,GAAG,aAAa;QACvB,IAAA,CAAA,CAAC,GAAG,8CAA8C;QAIzC,IAAA,CAAA,KAAK,GAAY,SAAS;AAEjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAA,CAAE;YACtD,IAAI,CAAC,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,GAAA,EACrD,IAAI,CAAC,QAAQ,GAAG,IAClB,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,GAAG,IAAI,IACvD,IAAI,CAAC,QAAQ,GAAG,IAClB,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,CAAE;QAC5D;IACF;IAEA,QAAQ,GAAA;;;IAGR;8GArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,+NCP/B,uLAKA,EAAA,CAAA,CAAA;;2FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,IAAI,EAAA,QAAA,EAAA,uLAAA,EAAA;wDAMK,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;gBACV,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AETH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;MAKb,uBAAuB,CAAA;AAClC,IAAA,KAAK,CAAC,IAAU,EAAA;;AAEd,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAY;;IAExC;AACA,IAAA,WAAW,CAAC,IAAU,EAAA;;QAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;IAElC;AACA,IAAA,MAAM,CAAC,IAAU,EAAA;;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAW;;IAE9C;AACA,IAAA,MAAM,CAAC,IAAU,EAAA;;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAW;;IAE/C;AACA,IAAA,aAAa,CAAC,IAAU,EAAA;;QAEtB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;IAEpC;AAEA,IAAA,qBAAqB,CAAC,IAAU,EAAA;;QAE9B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;;IAEvC;AAEA,IAAA,cAAc,CAAC,IAAU,EAAA;;QAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAW;;IAEtD;AAEA,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,OAAO;QAChB;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO;YAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,WAAW;QACpB;QAEA,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAEjC,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;YACxC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAChC;AACA,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B;QAEA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK;AACxC,YAAA,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,EAC5C;AACA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B;AAEA,QAAA,IACE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC;YAC5C,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAC1C;AACA,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACjC;AAEA,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IACzC;8GApGW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCKY,6BAA6B,CAAA;AAIxC,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAA4B;8GAJrD,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,qKCb1C,iyBASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,oFAAE,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGhC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,+BAA+B,EAAA,OAAA,EAEhC,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAA,UAAA,EAChC,IAAI,EAAA,QAAA,EAAA,iyBAAA,EAAA;yFAGP,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;AEhBI,MAAM,gBAAgB,GAAG;AAC9B,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,gBAAgB,EAAE,OAAO;AACzB,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,sBAAsB,EAAE,YAAY;AACpC,IAAA,oBAAoB,EAAE,kBAAkB;AACxC,IAAA,oBAAoB,EAAE,mDAAmD;AACzE,IAAA,gBAAgB,EAAE,GAAG;CACtB;;MCKY,sBAAsB,CAAA;AAMjC,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAF3B,IAAA,CAAA,cAAc,GAAG,cAAc;QAIrB,IAAA,CAAA,gBAAgB,GAAG,gBAAgB;IAFU;8GANrD,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,kICdnC,yzCA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,6BAA6B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,oFAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,sBAAsB,EAAA,OAAA,EAEvB,CAAC,6BAA6B,EAAE,OAAO,EAAE,IAAI,CAAC,EAAA,UAAA,EAC3C,IAAI,EAAA,QAAA,EAAA,yzCAAA,EAAA;yFAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MELU,kBAAkB,CAAA;IAI7B,QAAQ,GAAA;;IAER;8GANW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX/B,+UAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,OAAO,mHAAE,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG9B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WAEnB,CAAC,OAAO,EAAE,sBAAsB,CAAC,cAC9B,IAAI,EAAA,QAAA,EAAA,+UAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MEPU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAmB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;8GAD7C,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCKY,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAa,EAAE;QACpB,IAAA,CAAA,OAAO,GAAY,KAAK;QACxB,IAAA,CAAA,SAAS,GAAW,CAAC;AA6CtB,IAAA;IAxCC,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;QAClC;AAAO,aAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACtE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QAC/C;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sCAAA,CAAwC,CAAC;QAC3D;IACF;IAEA,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAA;QACvC,MAAM,KAAK,GAAa,EAAE;QAC1B,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC,QAAA,MAAM,OAAO,GAAY,KAAK,GAAG,IAAI,IAAI,IAAI;AAC7C,QAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB;QACA,IAAI,OAAO,EAAE;AACX,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB;AACA,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE;AAC9B,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACrC;QACF;QACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE;IACb;8GA/CW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV5B,6hBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,cAAc,EAAA,OAAA,EACf,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,6hBAAA,EAAA;8BAQT,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEJU,mBAAmB,CAAA;AAK9B,IAAA,QAAQ,KAAU;IAElB,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAChD,IACE,CAAC,IAAI,CAAC,SAAS;AACf,aAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EACzD;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;YACpD;QACF;AAEA,QAAA,MAAM,MAAM,GACV,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI;QAEnE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACnC;QACF;QAEA,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC;8GA1BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,iJCZhC,qLAOA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAGlB,CAAC,OAAO,CAAC,cACN,IAAI,EAAA,QAAA,EAAA,qLAAA,EAAA;8BAGP,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEJU,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,UAAU,GAAqB;AAC7B,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE;SACvD;AAWF,IAAA;AATC,IAAA,wBAAwB,CAAC,IAAY,EAAA;;AAEnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QACA,OAAO,OAAO,CAAC,SAAS;;IAE1B;8GAbW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCwBY,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACU,cAAqC,EACrC,wBAAkD,EACnD,iBAA0C,EAAA;QAFzC,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACzB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IACvB;AAEH,IAAA,QAAQ,KAAI;IAEZ,eAAe,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CACzD,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB;YACD,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;AACA,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB;YACzD,gBAAgB,CAAC,KAAK,EAAE;YACxB,MAAM,eAAe,GACnB,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAC/D,MAAM,YAAY,GAChB,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;YACnD,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YAC5C,YAAY,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAChD,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACtC,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAChD;;IAEF;8GAnCW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKhB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC5B,yuBAmBA,4CDQI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,6BAA6B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,OAAO;wBACP,6BAA6B;wBAC7B,eAAe;wBACf,eAAe;AAChB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,yuBAAA,EAAA;iKAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAC8C,UAAU,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEAlC,qBAAqB,CAAA;AAWhC,IAAA,WAAA,CACU,iBAA0C,EAC1C,QAA0B,EACR,QAAkB,EAAA;QAFpC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACU,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAXpC,IAAA,CAAA,cAAc,GAAyB,EAAE;QAEzC,IAAA,CAAA,mBAAmB,GAAwB,IAAI;QAC/C,IAAA,CAAA,kBAAkB,GAAwB,IAAI;QA4Q3B,IAAA,CAAA,cAAc,GAAG,cAAc;QAlQhD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAe;QACtE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAe;IACxE;AAGA,IAAA,cAAc,CAAC,KAAY,EAAA;;AAEzB,QAAA,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;AAC5B,YAAA,CAAC;QAEH,IAAI,MAAM,CAAC,UAAU,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;YAC1D;QACF;;AAGA,QAAA,IAAI,cAAc,GAAG,GAAG,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CACV,eAAe,CAAC,qBAAqB,EACrC,IAAI,CAAC,mBAAmB,CACzB;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACpE,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B;QACF;QACA,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,eAAe,CAAC,qBAAqB,EACrC,IAAI,CAAC,mBAAmB,CACzB;IACH;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACtC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;IACvC;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B;QACF;QACA,UAAU,CAAC,MAAK;YACd,IAAI,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,EAAE;AACzD,gBAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjE;YAEA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE;gBACtD;YACF;AAEA,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS;AAC1C,oBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY;YACnD;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACjC;QACF,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,UAAU,CAAC,OAAqB,EAAA;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;IAC7D;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAChC;QAEA,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACzD,IAAI,CAAC,eAAe,EAAE;QACxB;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;AAClC,gBAAA,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CACxD;YACH;AAEA,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjD,IAAI,CAAC,eAAe,CAClB,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EACxD,IAAI,CACL;YACH;QACF;QAEA,IAAI,CAAC,+BAA+B,EAAE;IACxC;AAEQ,IAAA,eAAe,CACrB,UAAmB,EACnB,QAAiB,EACjB,OAAiB,EAAA;QAEjB,MAAM,eAAe,GAAyB,EAAE;QAChD,IAAI,YAAY,GAAkB,IAAI;QACtC,IAAI,YAAY,GAA8B,IAAI;AAElD,QAAA,MAAM,SAAS,GAAW,UAAU,IAAI,CAAC;QAEzC,KACE,IAAI,CAAC,GAAW,SAAS,EACzB,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC3C,CAAC,EAAE,EACH;YACA,MAAM,OAAO,GAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEnD,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,IAAI,YAAY,EAAE;AACpD,gBAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC;iBAAO;AACL,gBAAA,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;gBAE9B,IAAI,YAAY,EAAE;AAChB,oBAAA,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACpC;gBAEA,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACvC,oBAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;gBAC9D;AAEA,gBAAA,MAAM,QAAQ,GAAY,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ;AACrE,gBAAA,MAAM,eAAe,GACnB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,IAAI,CAAC,QAAQ;AAC1D,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;oBAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;AAE3C,gBAAA,YAAY,GAAG;AACb,oBAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,WAAY;oBACtC,MAAM,EAAE,OAAO,CAAC,IAAI;AACpB,oBAAA,aAAa,EAAE,eAAe;oBAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;YACH;QACF;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QACpC;QAEA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;QAC1C;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;QACpC;IACF;IAEQ,YAAY,CAClB,SAA+B,EAC/B,OAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YACtC;QACF;QAEA,IAAI,OAAO,EAAE;YACX,MAAM,eAAe,GACnB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM,qBAAqB,GAAuB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAExE,YAAA,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,qBAAqB,CAAC,MAAM,CAAC,EAAE,EAAE;gBACjE,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC;gBACnE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C;YAEA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;QAC3C;aAAO;AACL,YAAA,MAAM,gBAAgB,GAAuB,SAAS,CAAC,CAAC,CAAC;AACzD,YAAA,MAAM,oBAAoB,GACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,YAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE;gBACjE,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAChE,gBAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YACxB;YAEA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QACxC;IACF;IAEQ,uBAAuB,GAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;AACA,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACzE,QAAA,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC9D;IAEQ,wBAAwB,GAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAE9D,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;AACA,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC1E,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QACjD,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IAClC;IAEQ,+BAA+B,GAAA;AACrC,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,sBAAsB,EAAE;QAE/B,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,CAAC,CAAC;IAC3C;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC9B,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SAClD;IACH;AAhRW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,wFActB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAdP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,qTCvClC,qpCAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,uBAAuB,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,8GAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGjD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EAEtB,CAAC,uBAAuB,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAA,UAAA,EACjD,IAAI,EAAA,QAAA,EAAA,qpCAAA,EAAA;;0BAgBb,MAAM;2BAAC,QAAQ;yCANT,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACyB,eAAe,EAAA,CAAA;sBAAxC,SAAS;uBAAC,aAAa;gBAWxB,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;ME3C9B,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,eAAe,GAAc,IAAI,SAAS,CAAC;;YAEzC,OAAO,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;;AAElD,SAAA,CAAC;AAkCH,IAAA;IA5BC,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GACP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAgB,IAAI,EAAE;AAC9D,QAAA,MAAM,WAAW,GAAW,IAAI,CAAC,IAAI,EAAE;QAEvC,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,OAAO,CAAC,KAAoB,EAAA;QAC1B,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,YAAY,GAAA;QACV,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE;QAExE,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAC9C;IACF;8GAtCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/B,gxBAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,mBAAmB,68BAAE,QAAQ,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG5B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WAEnB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,cAC5B,IAAI,EAAA,QAAA,EAAA,gxBAAA,EAAA;8BASP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACuB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;;;MEZX,yBAAyB,CAAA;AAIpC,IAAA,WAAA,CAAoB,OAAgC,EAAA;QAAhC,IAAA,CAAA,OAAO,GAAP,OAAO;AAHjB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW;IAGK;IAEvD,eAAe,GAAA;;;AAGb,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE,CAAC;SACb;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;gBAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AAC5C,YAAA,CAAC,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACnD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QAC5B;IACF;8GA7BW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;oBACnC,UAAU,EAAE,IAAI;AACjB,iBAAA;+EAEW,UAAU,EAAA,CAAA;sBAAnB;;;MCMU,aAAa,CAAA;AAMxB,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC/B,QAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK;IAChC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,oCAAA,CAAsC,CAAC;QACrD;QAEA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAC3C,GAAG,IAAI,CAAC,QAAQ;AAChB,gBAAA,wBAAwB,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe;AACvD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACtC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD;IACF;8GA7BW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB1B,mmBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJI,qBAAqB,+FACrB,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAEb;wBACP,qBAAqB;wBACrB,kBAAkB;wBAClB,yBAAyB;wBACzB,OAAO;AACR,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mmBAAA,EAAA;8BAGP,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEEU,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;QANA,IAAA,CAAA,cAAc,GAAY,IAAI;AAGpB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;IAG3B;AAEf,IAAA,QAAQ,KAAI;IAEZ,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;IAChD;AAEA,IAAA,cAAc,CAAC,KAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC;YACvD;QACF;QACA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IACpC;8GAtBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMrB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChClC,24CAsCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBI,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,kBAAkB,2FAClB,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKG,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB;wBACP,qBAAqB;wBACrB,OAAO;wBACP,WAAW;wBACX,kBAAkB;wBAClB,MAAM;AACP,qBAAA,EAAA,UAAA,EAEW,IAAI,EAAA,QAAA,EAAA,24CAAA,EAAA;wDAKP,OAAO,EAAA,CAAA;sBAAf;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAEiC,YAAY,EAAA,CAAA;sBAA7C,SAAS;uBAAC,qBAAqB;;;MExBrB,sBAAsB,CAAA;IAGjC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;8GALW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4GCRnC,6CAEA,EAAA,CAAA,CAAA;;2FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,EAAE,EAAA,QAAA,EAAA,6CAAA,EAAA;8BAIF,QAAQ,EAAA,CAAA;sBAAhB;;;MEEU,2BAA2B,CAAA;IAItC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;IAC5B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;IACpC;AAEA,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB;8GAlBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3B,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlC,olCAgCA,4CDxBY,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGpD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,olCAAA,EAAA;8BAI9B,gBAAgB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,qBAAqB;gBACvB,aAAa,EAAA,CAAA;sBAArB;;;MEsBU,sBAAsB,CAAA;AAKjC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAEvC;YACA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACtC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACrC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;YACzD;QACF;AAEA,QAAA,MAAM,SAAS,GAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YAChC;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,YAAA,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AAC5C,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAC3C,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAwB;IACjE;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAwB;IAChE;8GAvDW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCnC,iiFAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxCI,MAAM,0YACN,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,mBAAmB,g+BACnB,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIA,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,MAAM;wBACN,UAAU;wBACV,UAAU;wBACV,OAAO;wBACP,2BAA2B;wBAC3B,mBAAmB;wBACnB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,iiFAAA,EAAA;gFAMQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,aAAa,EAAA,CAAA;sBAArB;;;ME7BU,8BAA8B,CAAA;AAL3C,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,aAAa,GACrB,IAAI,YAAY,EAA0B;AAK7C,IAAA;AAHC,IAAA,WAAW,CAAC,KAA6B,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;8GAPW,8BAA8B,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3C,knBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,IAAI,2GAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGX,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAChC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,knBAAA,EAAA;8BAId,OAAO,EAAA,CAAA;sBAAf;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;MEGU,eAAe,CAAA;AAI1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAHxB,IAAA,CAAA,cAAc,GAAyB,IAAI;QAC3C,IAAA,CAAA,aAAa,GAAY,KAAK;IAES;AAEvC,IAAA,IAAI,CAAC,aAA4B,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;AAEA,IAAA,aAAa,CACX,OAA0C,EAAA;AAE1C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,IAAI,CAAC,cAAc,CAAC,qBAAqB,EACzC,OAAO,CACR;IACH;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC5C;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;QAC1C;QAEA,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAA,YAAA,EAAe,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AAExF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAI;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,EAAE,uBAAuB,CAAC,KAAK,CAAC;QACrD,CAAC,CAAC,CACH;IACL;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;QACrD;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAEnD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAErC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,EAC1B,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CACpD;IACL;AAEA,IAAA,WAAW,CAAC,cAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;QACrD;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,cAAc,EAAE,mBAAmB,EAAE,EAC7C;YACE,cAAc;AACf,SAAA,CACF;IACH;8GAzEW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCOY,oBAAoB,CAAA;AAQ/B,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAA,CAAA,eAAe,GAAf,eAAe;QANnC,IAAA,CAAA,YAAY,GAAY,KAAK;QAC7B,IAAA,CAAA,cAAc,GAAY,KAAK;QAgFZ,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IA3EH;AAEvD,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,EAAE;YACnD;QACF;AAEA,QAAA,IAAI,CAAC,MAAM;YACT,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC;AAChE,gBAAA,SAAS;QACX,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE;IAChD;AAEA,IAAA,UAAU,CAAC,KAA6B,EAAA;AACtC,QAAA,MAAM,OAAO,GAAW,KAAK,CAAC,OAAO;AAErC,QAAA,IACE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YACxB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAC9C;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAClC;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,YAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAE1B,QAAA,IAAI,CAAC;AACF,aAAA,aAAa,CAAC;AACb,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ;YACtC,KAAK,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAE;AACnD,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU;SAChD;AACA,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;YACtB,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;IAEA,MAAM,YAAY,CAAC,MAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;YAC1C;QACF;QACA,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACrC,YAAA,YAAY,EAAE,MAAM;AACrB,SAAA,CAAC;QAEJ,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;IACtD;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAClE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD;AAEA,QAAA,KAAK,IAAI,CAAC,IAAI,EAAE;IAClB;8GAjFW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBjC,o+BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXI,mBAAmB,+BACnB,eAAe,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,EACf,8BAA8B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,mBAAmB;wBACnB,eAAe;wBACf,8BAA8B;wBAC9B,MAAM;AACP,qBAAA,EAAA,QAAA,EAAA,o+BAAA,EAAA;iFAQQ,SAAS,EAAA,CAAA;sBAAjB;gBAED,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,mBAAmB;;;MEbnB,8BAA8B,CAAA;AAOzC,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAA,CAAA,eAAe,GAAf,eAAe;QALnC,IAAA,CAAA,cAAc,GAAY,KAAK;QAgCZ,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IA3BH;AAEvD,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,SAAS,EAAE;YACnD;QACF;AAEA,QAAA,IAAI,CAAC,MAAM;YACT,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC;AAChE,gBAAA,SAAS;QACX,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAClD,YAAA,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;AAC7C,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAClE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD;AAEA,QAAA,KAAK,IAAI,CAAC,IAAI,EAAE;IAClB;8GAhCW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,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,qPCd3C,4aAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,sLAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3C,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,WAChC,CAAC,mBAAmB,EAAE,eAAe,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,4aAAA,EAAA;iFAO9C,SAAS,EAAA,CAAA;sBAAjB;gBAED,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,mBAAmB;;;MELnB,mBAAmB,CAAA;AAM9B,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAA,CAAA,eAAe,GAAf,eAAe;QAHnC,IAAA,CAAA,kBAAkB,GAAW,EAAE;QAC/B,IAAA,CAAA,gBAAgB,GAAW,EAAE;QAsBV,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IApBH;IAEvD,oBAAoB,GAAA;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AACzD,YAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;QACpC;QAEA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;QACtC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CACtC,CAAC,MAAM,CAAC,YAAY,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACvE,YAAY,CACb;IACH;8GAxBW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,iHCdhC,gtBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,yGAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGpB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,WACpB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,gtBAAA,EAAA;iFAIvB,SAAS,EAAA,CAAA;sBAAjB;;;MEiBU,kBAAkB,CAAA;IAG7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;IAC5B;8GALW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChC/B,m7DAwDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtCI,wBAAwB,0FACxB,uBAAuB,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,yGACtB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,8BAA8B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,wBAAwB;wBACxB,uBAAuB;wBACvB,OAAO;wBACP,kBAAkB;wBAClB,aAAa;wBACb,kBAAkB;wBAClB,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;wBACpB,8BAA8B;wBAC9B,mBAAmB;AACpB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,m7DAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;;;ME3BU,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,UAAU,GAAqB,EAAE;AAWlC,IAAA;AATC,IAAA,wBAAwB,CAAC,IAAY,EAAA;;AAEnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QACA,OAAO,OAAO,CAAC,SAAS;;IAE1B;8GAXW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCiBY,uBAAuB,CAAA;AAMlC,IAAA,WAAA,CACU,cAAoC,EACpC,wBAAkD,EACnD,iBAA0C,EACzC,EAAqB,EAAA;QAHrB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACzB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAChB,IAAA,CAAA,EAAE,GAAF,EAAE;QARZ,IAAA,CAAA,eAAe,GAAW,EAAE;IASzB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEzE,WAAW,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3E,CAAC,EAAE,KAAK,CAAC;IACX;IAEA,eAAe,GAAA;;QAEb,IAAI,OAAO,GAAG,EAAE;QAChB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvC;QACF;AACA,QAAA,IAAI;YACF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,IAAI,OAAO,EAAE;wBACX,OAAO,IAAI,QAAQ;oBACrB;AACA,oBAAA,OAAO,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChD;YACF;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACxB;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C;;IAEF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAEvB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CACzD,IAAI,CAAC,KAAK,CAAC,MAAM,CAClB;YACD,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;AACA,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB;YACzD,gBAAgB,CAAC,KAAK,EAAE;YACxB,MAAM,eAAe,GACnB,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,MAAM,CAAC;YAC/D,MAAM,YAAY,GAChB,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;YACnD,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YACxC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACxC,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAChD;;IAEF;8GApEW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,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,yJAKvB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5B,u+BAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,eAAe,yDAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WAExB,CAAC,eAAe,EAAE,OAAO,CAAC,cACvB,IAAI,EAAA,QAAA,EAAA,u+BAAA,EAAA;gMAMP,KAAK,EAAA,CAAA;sBAAb;gBAC8C,UAAU,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEflC,oCAAoC,CAAA;AAE/C,IAAA,WAAA,CAAmB,iBAA0C,EAAA;QAA1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAA4B;8GAFrD,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,gICZjD,8yDAwCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,gFAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGvC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;+BACE,sCAAsC,EAAA,OAAA,EAEvC,CAAC,IAAI,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAA,UAAA,EACvC,IAAI,EAAA,QAAA,EAAA,8yDAAA,EAAA;yFAGP,OAAO,EAAA,CAAA;sBAAf;;;MEEU,4CAA4C,CAAA;IAIvD,WAAA,CACS,iBAA0C,EAC1C,oBAA0C,EAAA;QAD1C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAC1B;AAEH,IAAA,QAAQ,KAAU;IAElB,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;8GAbW,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5C,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfzD,umCAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,oCAAoC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGnC,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBANxD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6CAA6C,EAAA,OAAA,EAE9C,CAAC,oCAAoC,CAAC,cACnC,IAAI,EAAA,QAAA,EAAA,umCAAA,EAAA;yHAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MENU,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX1C,8cAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJY,4CAA4C,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAEzB,CAAC,4CAA4C,CAAC,cAC3C,IAAI,EAAA,QAAA,EAAA,8cAAA,EAAA;8BAGP,eAAe,EAAA,CAAA;sBAAvB;;;MEIU,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAA,CAAA,cAAc,GAAd,cAAc;QAJlC,IAAA,CAAA,cAAc,GAAY,KAAK;QAkBZ,IAAA,CAAA,MAAM,GAAG,MAAM;QACf,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IAfL;IAErD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,MAAM,EAAE,mCAAmC;AAC5C,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B,CAAC,EAAE,IAAI,CAAC;IACV;8GAjBW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd7B,wwCA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,yPAAE,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIzC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,EAAA,SAAA,EAE1C,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,wwCAAA,EAAA;qFAKlB,YAAY,EAAA,CAAA;sBAApB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MENU,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;QAQqB,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;AAC3D,IAAA;8GAHY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdxC,+0EAoDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCY,MAAM,0YAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGvC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,2BAA2B,EAAA,OAAA,EAE5B,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAAA,UAAA,EACvC,IAAI,EAAA,QAAA,EAAA,+0EAAA,EAAA;8BAGA,YAAY,EAAA,CAAA;sBAA3B;;;MELU,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,eAAe,GAAW,CAAC;QACR,IAAA,CAAA,IAAI,GAAG,IAAI;AAU/B,IAAA;IAPC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAC/B,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,GAAG,CACnE;QACH;IACF;8GAXW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVpC,u4CAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3BY,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGd,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB,CAAC,eAAe,CAAC,cACd,IAAI,EAAA,QAAA,EAAA,u4CAAA,EAAA;8BAKP,KAAK,EAAA,CAAA;sBAAb;;;MEAU,cAAc,CAAA;AAQzB,IAAA,WAAA,CAAoB,UAAmC,EAAA;QAAnC,IAAA,CAAA,UAAU,GAAV,UAAU;QAP9B,IAAA,CAAA,kBAAkB,GAAY,IAAI;QAClC,IAAA,CAAA,kBAAkB,GAAW,CAAC;QAC9B,IAAA,CAAA,aAAa,GAAY,KAAK;IAK4B;AAE1D,IAAA,kBAAkB,CAAC,OAAgB,EAAA;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5B;IACF;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,+BAA+B,CAAC;QACxE,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;QAE9C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QACjC,CAAC,EAAE,GAAG,CAAC;IACT;AAEA,IAAA,QAAQ,CAAC,MAA0B,EAAA;AACjC,QAAA,IAAI,MAAM,IAAI,MAAM,YAAY,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,YAAY,CACf,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,CACpB;QACH;IACF;AAEQ,IAAA,YAAY,CAClB,QAAgB,EAChB,YAAoB,EACpB,YAAoB,EAAA;QAEpB,MAAM,MAAM,GAAW,EAAE;AACzB,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE;QAEvD,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM,EAAE;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACrC,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;YAChC;AAEA,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ;QACpC;aAAO,IAAI,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACtD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,gBAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;YAC/B;AAEA,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ;QACpC;aAAO,IAAI,UAAU,EAAE;AACrB,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/B;IACF;8GAxEW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,u7CAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7BY,OAAO,2EAAE,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,aAAa,EAAA,OAAA,EAEd,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAA,UAAA,EACxC,IAAI,EAAA,QAAA,EAAA,u7CAAA,EAAA;+EAOP,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MECU,oBAAoB,CAAA;AAI/B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACzC;IAEA,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC;IACnD;IAEA,eAAe,GAAA;QACb,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AACrD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B;8GAnBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBjC,klBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,OAAO,oFAAE,cAAc,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGtB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WAErB,CAAC,OAAO,EAAE,cAAc,CAAC,cACtB,IAAI,EAAA,QAAA,EAAA,klBAAA,EAAA;wDAGP,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAC6B,QAAQ,EAAA,CAAA;sBAArC,SAAS;uBAAC,iBAAiB;;;MEbjB,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yHCXlC,qnEAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCY,SAAS,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,0YAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGzB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,WACtB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,qnEAAA,EAAA;8BAI5B,YAAY,EAAA,CAAA;sBAApB;;;MEwBU,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAA6B,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAoC;YACzE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;IACtD;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAwB;IAC1D;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;AAC3B,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACjC;IACF;8GAhCW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sHCpCjC,2rDA6CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBI,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,UAAU,2GACV,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,iKACR,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,2BAA2B;wBAC3B,WAAW;wBACX,mBAAmB;wBACnB,UAAU;wBACV,UAAU;wBACV,OAAO;wBACP,QAAQ;wBACR,MAAM;AACP,qBAAA,EAAA,QAAA,EAAA,2rDAAA,EAAA;gFAMQ,WAAW,EAAA,CAAA;sBAAnB;;;MEzBU,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAMlD,IAAA;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAPW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,4yBAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGtD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,4yBAAA,EAAA;8BAIzD,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEFU,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAMlD,IAAA;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAPW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdnC,m2BAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,QAAQ,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,m2BAAA,EAAA;8BAIxD,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEJU,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAMlD,IAAA;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAPW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uJCZnC,kqBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,QAAQ,gXAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG7B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,kqBAAA,EAAA;8BAIhC,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEFU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAMlD,IAAA;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAPW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,oJCZhC,+9BAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,WAAW,qQAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGhC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,+9BAAA,EAAA;8BAInC,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEAU,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAMlD,IAAA;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdjC,+0BAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,+0BAAA,EAAA;8BAI3D,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEJU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlC,4vBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPY,kBAAkB,mvCAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA;;2FAGtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,4vBAAA,EAAA;8BAIzD,MAAM,EAAA,CAAA;sBAAd;;;MEFU,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAYlD,IAAA;IAVC,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAK;YACxC,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAbW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvC,6dAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJY,qBAAqB,mFAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG7B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,OAAA,EACP,CAAC,qBAAqB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,6dAAA,EAAA;8BAIhC,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEHU,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,KAAK,GAAkB,SAAS;AAKjC,IAAA;IAHC,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;IACrC;8GANW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVrC,+gBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNY,MAAM,g9BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA;;2FAGlB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,+gBAAA,EAAA;8BAIrB,WAAW,EAAA,CAAA;sBAAnB;;;MEAU,6BAA6B,CAAA;AAN1C,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAelD,IAAA;IAXC,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;YACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK;YACjD,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAhBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX1C,6eAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJY,wBAAwB,4FAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGhC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAC5B,IAAI,EAAA,OAAA,EACP,CAAC,wBAAwB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,6eAAA,EAAA;8BAInC,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEFU,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAYlD,IAAA;IAVC,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;YAC5C,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC,CAAC;IACJ;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAbW,2BAA2B,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxC,gkBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLY,2BAA2B,4FAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGnC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAC1B,IAAI,EAAA,OAAA,EACP,CAAC,2BAA2B,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,gkBAAA,EAAA;8BAItC,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEaU,kBAAkB,CAAA;AAf/B,IAAA,WAAA,GAAA;AAiBY,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AAKlD,IAAA;IAHC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GANW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mJC1B/B,wpCA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXI,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,mBAAmB,4GACnB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,6BAA6B,uHAC7B,2BAA2B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,mBAAmB;wBACnB,oBAAoB;wBACpB,0BAA0B;wBAC1B,6BAA6B;wBAC7B;AACD,qBAAA,EAAA,QAAA,EAAA,wpCAAA,EAAA;8BAIQ,KAAK,EAAA,CAAA;sBAAb;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEhBU,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAa;AAWrD,IAAA;IATC,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;IAC/B;8GAZW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,uICZ1B,6zBAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdY,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,yYAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGtC,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,6zBAAA,EAAA;8BAIzC,IAAI,EAAA,CAAA;sBAAZ;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;MEMU,oBAAoB,CAAA;IAG/B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC7B;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,CAAsC,CAAC;QACzD;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE;IAC3C;8GAlBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBjC,urCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIJ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,MAAM;wBACN,qBAAqB;wBACrB,oBAAoB;wBACpB,OAAO;wBACP,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,urCAAA,EAAA;8BAIQ,WAAW,EAAA,CAAA;sBAAnB;;;METU,sBAAsB,CAAA;IAGjC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;8GALW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZnC,y5EA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjDY,oBAAoB,wFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG/C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,sBAAsB,EAAA,OAAA,EACvB,CAAC,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,y5EAAA,EAAA;8BAIlD,aAAa,EAAA,CAAA;sBAArB;;;MEwBU,uBAAuB,CAAA;AAKlC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAExC;YACA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1D,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAC/C;IACH;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,YAAA,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;AAC1B,gBAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;AACzC,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACpC;IACF;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAwB;IAC7D;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAwB;IACpE;8GAlDW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,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,+HCrCpC,w1EA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,UAAU,8GACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,gKACR,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA;;2FAIV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB;wBACP,MAAM;wBACN,UAAU;wBACV,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EAAA,w1EAAA,EAAA;gFAMQ,cAAc,EAAA,CAAA;sBAAtB;;;ME9BU,yBAAyB,CAAA;IAGpC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC9B;8GALW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtC,ixBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,MAAM,0YAAE,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG9B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,ixBAAA,EAAA;8BAIjC,gBAAgB,EAAA,CAAA;sBAAxB;;;ME6BU,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAoC;YACzE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACnC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC1E;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;AAC1B,gBAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;AACxC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC/B,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACjC;IACF;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAwB;IAC1D;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAwB;IACjE;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAwB;IAC5D;8GA1DW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sHCxCjC,+1GAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtDI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,0GACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACX,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,2GACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,mBAAmB,mWACnB,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,MAAM;wBACN,UAAU;wBACV,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,mBAAmB;wBACnB,WAAW;AACZ,qBAAA,EAAA,QAAA,EAAA,+1GAAA,EAAA;gFAMQ,WAAW,EAAA,CAAA;sBAAnB;;;MEjCU,qBAAqB,CAAA;IAGhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GALW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,2rBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,MAAM,0YAAE,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,2rBAAA,EAAA;8BAI9B,YAAY,EAAA,CAAA;sBAApB;;;ME8BU,oBAAoB,CAAA;AAI/B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAoC;YACzE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AAChC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;IAC1D;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;AAC1B,gBAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;AACxC,gBAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;AACzB,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACjC;IACF;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAwB;IAC1D;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAwB;IACjE;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAwB;IACzD;8GA1DW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,sHCzCjC,w+HA8FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,2GACV,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,wPACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,QAAQ,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,qBAAqB,mFACrB,SAAS,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIA,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,MAAM;wBACN,UAAU;wBACV,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,mBAAmB;wBACnB,QAAQ;wBACR,qBAAqB;wBACrB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,w+HAAA,EAAA;gFAMQ,WAAW,EAAA,CAAA;sBAAnB;;;MElCU,qBAAqB,CAAA;IAGhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GALW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,2rBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,MAAM,0YAAE,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,2rBAAA,EAAA;8BAI9B,YAAY,EAAA,CAAA;sBAApB;;;MEgBU,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5C,knDA0CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7BI,sBAAsB,4FACtB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,GAAG,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACH,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,yBAAyB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,MAAM,0YACN,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIZ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAjB3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAChC;wBACP,sBAAsB;wBACtB,IAAI;wBACJ,OAAO;wBACP,GAAG;wBACH,SAAS;wBACT,QAAQ;wBACR,yBAAyB;wBACzB,MAAM;wBACN,IAAI;wBACJ,qBAAqB;wBACrB,qBAAqB;AACtB,qBAAA,EAAA,QAAA,EAAA,knDAAA,EAAA;8BAIQ,SAAS,EAAA,CAAA;sBAAjB;;;MEGU,6BAA6B,CAAA;AAf1C,IAAA,WAAA,GAAA;QAkBqB,IAAA,CAAA,gBAAgB,GAAG,gBAAgB;QACnC,IAAA,CAAA,MAAM,GAAG,MAAM;AACnC,IAAA;8GALY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uJC/B1C,0qFAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9CI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,KAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,QAAQ,kNACR,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACX,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,IAAI,uMACJ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,GAAG,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACH,OAAO,s9BACP,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIR,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAfzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B;wBACP,MAAM;wBACN,QAAQ;wBACR,WAAW;wBACX,MAAM;wBACN,IAAI;wBACJ,OAAO;wBACP,GAAG;wBACH,OAAO;wBACP,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,0qFAAA,EAAA;8BAIe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,YAAY,EAAA,CAAA;sBAA3B;;;MEtBU,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXzC,4NAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGZ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,uBAAuB,EAAA,OAAA,EACxB,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,4NAAA,EAAA;8BAIf,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MELU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTrC,+VAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGH,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,+VAAA,EAAA;8BAIN,MAAM,EAAA,CAAA;sBAAd;;;MESU,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,YAAY,GAAc,IAAI,SAAS,CAAC;AACtC,YAAA,OAAO,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAC7B,SAAA,CAAC;QACF,IAAA,CAAA,oBAAoB,GAAY,KAAK;AAuCtC,IAAA;IAlCC,IACI,MAAM,CAAC,KAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;IACzC;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;QACvC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC;iBACF,GAAG,CAAC,SAAS;AACd,kBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAEhE,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;iBAC7B,GAAG,CAAC,SAAS;AACd,kBAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACjC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;gBACtC;AACF,YAAA,CAAC,CAAC;QACN;IACF;8GA1CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,g7BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,mBAAmB,68BAAE,QAAQ,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGtD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,kBAAkB,EAAA,OAAA,EAEnB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,EAAA,UAAA,EACtD,IAAI,EAAA,QAAA,EAAA,g7BAAA,EAAA;8BAYZ,MAAM,EAAA,CAAA;sBADT;;;MEhBU,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,WAAW,GAAY,KAAK;AAE3B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAqB5C,IAAA;AAnBC,IAAA,MAAM,CAAC,KAAY,EAAA;QACjB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IAClB;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,mBAAmB,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,EAAE;QACX;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CACzB;QACD,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE;IAClC;8GA1BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gMCZ9B,+8DA8DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrDY,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAY,MAAM,qYAAhB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,+8DAAA,EAAA;8BAInC,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,IAAI,EAAA,CAAA;sBAAb;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MELU,cAAc,CAAA;AAL3B,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,SAAS,GAAY,KAAK;AAuD3B,IAAA;IArDC,QAAQ,GAAA;QACN,IAAI,CAAC,uBAAuB;aACzB,IAAI,CAAC,MAAK;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;AACjD,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,KAAK,GAAiB,IAAI,CAAC,KAAK,CAAC;aACpC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI;aAC3B,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC5B,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC7B,gBAAA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC3B,KAAK;AACN,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AAC/B,gBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC7B,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;gBAChC,KAAK;AACL,gBAAA,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AACtB,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAEA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC5B,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/D;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAEQ,IAAA,MAAM,uBAAuB,GAAA;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;AACxC,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,KAAK,GAAiB,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACvD,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;AAElC,QAAA,OAAO,KAAK;IACd;8GA1DW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,8lEAkEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxDY,MAAM,0YAAE,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGrD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,8lEAAA,EAAA;8BAIxD,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MELU,kBAAkB,CAAA;IAI7B,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC;iBACF,wBAAwB,CAAC,IAAI;iBAC7B,IAAI,CAAC,MAAK;AACT,gBAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AAChD,YAAA,CAAC;AACA,iBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACpB,YAAA,CAAC,CAAC;QACN;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC;AACF,iBAAA,wBAAwB;iBACxB,IAAI,CAAC,MAAK;AACT,gBAAA,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;AACrD,YAAA,CAAC;AACA,iBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACpB,YAAA,CAAC,CAAC;QACN;IACF;8GA5BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,kfAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZY,uBAAuB,0WAAE,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGzC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,kfAAA,EAAA;8BAI5C,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEFU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVnC,iPAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,cAAc,qFAAE,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGjC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,iPAAA,EAAA;8BAIpC,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MEIU,2BAA2B,CAAA;AATxC,IAAA,WAAA,GAAA;QAUE,IAAA,CAAA,KAAK,GAAsB,IAAI;QAK/B,IAAA,CAAA,UAAU,GAAY,IAAI;AAU3B,IAAA;IARC,QAAQ,GAAA;AACN,QAAA,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AACxB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;AAClD,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;AACzC,SAAA,CAAC;IACJ;8GAfW,2BAA2B,EAAA,IAAA,EAAA,EAAA,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,sIChBxC,yoBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRI,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,wBAAwB,kFACxB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,4BAA4B;wBAC5B,wBAAwB;wBACxB,sBAAsB;AACvB,qBAAA,EAAA,QAAA,EAAA,yoBAAA,EAAA;8BAMQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MENU,qBAAqB,CAAA;AAKhC,IAAA,YAAY,CAAC,MAAqB,EAAA;QAChC,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB;AAAO,iBAAA,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE;AACzB,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB;iBAAO;AACL,gBAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACrB;QACF;AACA,QAAA,OAAO,KAAK;IACd;8GAlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdlC,qwNAuMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5LY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,GAAG,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG5D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,qwNAAA,EAAA;8BAI/D,KAAK,EAAA,CAAA;sBAAb;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEUU,qBAAqB,CAAA;AAGhC,IAAA,WAAA,GAAA;QAEmB,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;IAF3C;8GAHJ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BlC,mmGA6EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7DI,2BAA2B,gGAC3B,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,+BAA+B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/B,6BAA6B,8GAC7B,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAErB;wBACP,2BAA2B;wBAC3B,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,kBAAkB;wBAClB,+BAA+B;wBAC/B,6BAA6B;wBAC7B,qBAAqB;AACtB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mmGAAA,EAAA;wDAGP,YAAY,EAAA,CAAA;sBAApB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MECU,iBAAiB,CAAA;AAO5B,IAAA,WAAA,CAAoB,WAA6B,EAAA;QAA7B,IAAA,CAAA,WAAW,GAAX,WAAW;QAH/B,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,WAAW,GAA8B,EAAE;IAES;IAEpD,QAAQ,GAAA;QACN,IAAI,CAAC,8BAA8B,EAAE;IACvC;IAEA,8BAA8B,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAY,IAAI,CAAC,mBAAmB,EAAE;QAEnD,IAAI,CAAC,OAAO,EAAE;YACZ,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,8BAA8B,EAAE;YACvC,CAAC,EAAE,IAAI,CAAC;QACV;IACF;IAEA,mBAAmB,GAAA;QACjB,MAAM,IAAI,GAAiB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,IAAI,IAAI;QAEtE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC;AAClD,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,OAAO,CAChD,IAAI,IAAI;QAEX,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,gBAAgB,CACzD,IAAI,IAAI;QAEX,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,SAAS,CAClD,IAAI,IAAI;QAEX,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,SAAS,GAAG,aAAa,CACtC,IAAI,EACJ,oBAAoB,CAAC,uBAAuB,CAC7C;QACH;AAEA,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAG,YAAY,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAA,CAAE;AAC1D,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI;YACtC,IAAI,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;8GAjEW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B9B,srCA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVI,UAAU,oOACV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,OAAO,yGACP,OAAO,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,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAEZ;wBACP,UAAU;wBACV,gBAAgB;wBAChB,OAAO;wBACP,MAAM;wBACN,KAAK;wBACL,OAAO;wBACP,OAAO;AACR,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,srCAAA,EAAA;kFAGA,MAAM,EAAA,CAAA;sBAArB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;MENU,uBAAuB,CAAA;IAWlC,WAAA,CACU,WAA6B,EAC7B,MAAc,EAAA;QADd,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QAZhB,IAAA,CAAA,iBAAiB,GAAY,IAAI;QACjC,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,mBAAmB,GAAY,KAAK;IAWjC;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;aAClC,IAAI;;QAEH,MAAM,CACJ,CAAC,KAAY,KACX,KAAK,YAAY,aAAa,CACjC;AAEF,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAA,CAAC,CAAC;IACN;IAEA,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;IAClD;AAEA,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAY,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAC3D,MAAM,aAAa,GAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,QAAA,MAAM,aAAa,GAAkB,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;AAC3E,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE;YAC7B;QACF;QACA,MAAM,UAAU,GACd,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC;AACpE,YAAA,IAAI;QAEN,IAAI,CAAC,UAAU,EAAE;YACf;QACF;QAEA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,WAAW,IAAI,KAAK;QACvD,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK;IAC3D;8GApDW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BpC,o6DAoDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnCI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,qBAAqB,sGACrB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIR,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,OAAO;wBACP,wBAAwB;wBACxB,kBAAkB;wBAClB,6BAA6B;wBAC7B,qBAAqB;wBACrB,iBAAiB;AAClB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,o6DAAA,EAAA;uGASP,KAAK,EAAA,CAAA;sBAAb;gBACe,gBAAgB,EAAA,CAAA;sBAA/B;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEXU,+BAA+B,CAAA;AAL5C,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAqB,EAAE;QAC5B,IAAA,CAAA,YAAY,GAA+B,MAAM,EAAY;AA6B9D,IAAA;IAzBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,QAAQ;aACR,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnD,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAQ,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,WAAW,CAAC,IAAgB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACpB,OAAO;gBACL,KAAK,EAAE,CAAC,CAAC,IAAI;AACb,gBAAA,IAAI,EAAE,CAAC,CAAC,aAAa,IAAI,SAAS;AAClC,gBAAA,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS;AAC5D,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,MAAW;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3B,CAAC;aACF;AACH,QAAA,CAAC,CAAC;IACJ;8GA9BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB5C,qFAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBY,SAAS,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGR,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,sBAAsB,EAAA,OAAA,EACvB,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,qFAAA,EAAA;8BAOX,UAAU,EAAA,CAAA;sBAAlB;;;MEoBU,uBAAuB,CAAA;AAMlC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAH/B,IAAA,CAAA,mBAAmB,GAAsC,IAAI;AAI3D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;IAClC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACrC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,CAA+B,CAAC;QAClD;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAC9C;AAEQ,IAAA,MAAM,YAAY,GAAA;QACxB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC9B;QACF;AAEA,QAAA,MAAM,aAAa,GAAuC;AACxD,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;AAC3B,YAAA,gBAAgB,EAAE,cAAc;AAChC,YAAA,WAAW,EAAE,CAAC,GAAc,KAAI;AAC9B,gBAAA,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE;YAC3B,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,GAAc,KAAY;gBACnC,OAAO,GAAG,CAAC,IAAI;YACjB,CAAC;AACD,YAAA,eAAe,EAAE,CAAC,GAAc,KAA+B;AAC7D,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACjB,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC9B;gBACA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7C,CAAC;SACF;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAEpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE;AACtC,YAAA,aAAa,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAChD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CACnC;QACH;QAEA,IAAI,CAAC,mBAAmB,GAAG,IAAI,eAAe,CAAY,aAAa,CAAC;IAC1E;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,OAAO;AACpB,YAAA,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU;AAChC,YAAA,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAC1B;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5B;QACF;QAEA,MAAM,QAAQ,GAAuB,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE;AAExE,QAAA,MAAM,SAAS,GAA0B;AACvC,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAClC,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAChD,YAAA,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;YAC5C,QAAQ;SACT;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;AAChC,YAAA,MAAM,OAAO,GAAc;AACzB,gBAAA,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAChC,gBAAA,GAAG,SAAS;aACb;YACD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1C;aAAO;YACL,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5C;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB;AAEQ,IAAA,YAAY,CAAC,GAA0B,EAAA;QAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;AAErD,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC5B,QAAA,KAAK,IAAI,CAAC,YAAY,EAAE;IAC1B;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAkC;YAC7D,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACtC,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACjE,CAAC;YACF,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AAClC,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACjE,CAAC;AACH,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAwB;IACxD;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAwB;IAC/D;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAwB;IAC7D;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAwB;IACzD;8GA1IW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDpC,8gHAwFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrDI,MAAM,0YACN,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,UAAU,8GACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,gKACR,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,wBAAwB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB;wBACP,MAAM;wBACN,UAAU;wBACV,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,mBAAmB;wBACnB,wBAAwB;wBACxB,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,8gHAAA,EAAA;gFAQQ,UAAU,EAAA,CAAA;sBAAlB;;;MErCU,6BAA6B,CAAA;AAL1C,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAqB,EAAE;QAC5B,IAAA,CAAA,gBAAgB,GAA8B,SAAS;QACvD,IAAA,CAAA,iBAAiB,GAAoC,MAAM,EAAiB;AA4B7E,IAAA;IAxBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;aACb,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACpE,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAQ,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,gBAAgB,CAAC,SAA0B,EAAA;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC;AAC1C,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;YAC1B,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,IAAI;AACd,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,MAAW;AAClB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,CAAC;aACF;AACH,QAAA,CAAC,CAAC;IACJ;8GA9BW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB1C,mFAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDUY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGH,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,+BAA+B,EAAA,OAAA,EAChC,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,mFAAA,EAAA;8BAQN,eAAe,EAAA,CAAA;sBAAvB;;;MEiBU,4BAA4B,CAAA;AAKvC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;IAC5C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;QAC1C;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,kCAAA,CAAoC,CAAC;QACvD;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;AACtD,QAAA,KAAK,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;IAC7C;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,kCAAA,CAAoC,CAAC;QACvD;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE;AACtE,YAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5B;QACF;AAEA,QAAA,MAAM,cAAc,GAA+B;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAClC,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAChD,YAAA,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU;SACpD;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;AACxC,gBAAA,GAAG,cAAc;AACjB,gBAAA,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;AAC3C,aAAA,CAAC;QACJ;aAAO;YACL,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC;QAC3D;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB;AAEQ,IAAA,YAAY,CAAC,QAAoC,EAAA;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5D;IAEQ,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAuC;YAClE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;AACH,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAwB;IAC7D;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAwB;IACpE;8GAlFW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,wICtCzC,6kFAkEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvCI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,2GACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,QAAQ,iKACR,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIZ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,OAAA,EAC/B;wBACP,MAAM;wBACN,UAAU;wBACV,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,mBAAmB;wBACnB,QAAQ;wBACR,qBAAqB;AACtB,qBAAA,EAAA,QAAA,EAAA,6kFAAA,EAAA;gFAMQ,eAAe,EAAA,CAAA;sBAAvB;;;ME5BU,mCAAmC,CAAA;AALhD,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAqB,EAAE;QAE5B,IAAA,CAAA,sBAAsB,GACpB,MAAM,EAA4B;AAgCrC,IAAA;IA5BC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB;aACxB,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CACrC,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CACrD;AACH,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAQ,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,qBAAqB,CAC3B,oBAAgD,EAAA;AAEhD,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;AACzD,QAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;YACrC,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,IAAI;AACd,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,MAAW;AAClB,oBAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE;AACrC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,CAAC;aACF;AACH,QAAA,CAAC,CAAC;IACJ;8GAnCW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbhD,8FAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGH,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACE,oCAAoC,EAAA,OAAA,EACrC,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,8FAAA,EAAA;8BASN,0BAA0B,EAAA,CAAA;sBAAlC;;;MEuBU,kCAAkC,CAAA;AAK7C,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;AAC7B,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IAClE;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACtD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,IAAI,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,IAAI,CAAC,CAAC;IAClE;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,EAAE;AAC1D,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,CAA2B,CAAC;QAC9C;AAEA,QAAA,IACE,IAAI,CAAC,uBAAuB,CAAC,OAAO;AACpC,YAAA,CAAC,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAC9C;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5B;QACF;AAEA,QAAA,MAAM,mBAAmB,GAA0C;AACjE,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAClC,YAAA,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAChD,YAAA,qBAAqB,EACnB,IAAI,CAAC,0BAA0B,CAAC,qBAAqB;AACvD,YAAA,aAAa,EAAE,IAAI,CAAC,0BAA0B,CAAC,aAAa;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC7C,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;SACxC;AAED,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE;AAChC,YAAA,MAAM,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC;AAC9D,gBAAA,GAAG,mBAAmB;AACtB,gBAAA,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAChC,aAAA,CAAC;QACJ;aAAO;YACL,MAAM,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAC7D,mBAAmB,CACpB;QACH;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB;IAEQ,0BAA0B,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAA6C;YACxE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,iBAAA;aACF,CAAC;YACF,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE;AACnC,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACrD,CAAC;YACF,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE;AAChC,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACrD,CAAC;AACH,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAwB;IACxE;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CACrC,aAAa,CACS;IAC1B;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAwB;IAC3E;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAwB;IACxE;8GAxGW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,+MC1C/C,mrIAwGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1EI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,0GACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,2GACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,QAAQ,iKACR,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIF,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAf9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAAA,OAAA,EACpC;wBACP,MAAM;wBACN,UAAU;wBACV,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,mBAAmB;wBACnB,QAAQ;wBACR,WAAW;AACZ,qBAAA,EAAA,QAAA,EAAA,mrIAAA,EAAA;gFAMQ,0BAA0B,EAAA,CAAA;sBAAlC;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;;;ME7BU,iCAAiC,CAAA;AAL9C,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAqB,EAAE;QAE5B,IAAA,CAAA,4BAA4B,GAC1B,MAAM,EAA6B;AAqCtC,IAAA;IAjCC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;aACpD,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAC3C,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CACrD;AACH,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAQ,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,0BAA0B,CAAC,2BAA2B,EAAE;AAC7D,QAAA,IAAI,CAAC,2BAA2B;AAC9B,YAAA,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,IAAI,SAAS;IAC1E;AAEQ,IAAA,2BAA2B,CACjC,oBAAiD,EAAA;AAEjD,QAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;YACrC,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,IAAI;AACd,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,MAAW;AAClB,oBAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE;AACrC,oBAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,CAAC;aACF;AACH,QAAA,CAAC,CAAC;IACJ;8GAxCW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB9C,2pBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,IAAI,qSAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kCAAkC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxD,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,kCAAkC,EAAA,OAAA,EACnC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,CAAC,EAAA,QAAA,EAAA,2pBAAA,EAAA;8BAQ3D,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,0BAA0B,EAAA,CAAA;sBAAlC;;;MEPU,kCAAkC,CAAA;IAG7C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,EAAE;AAC9D,YAAA,IAAI,CAAC,0BAA0B,CAAC,iCAAiC,EAAE;QACrE;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,6BAA6B,EAAE;AAClE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2CAAA,CAA6C,CAAC;QAChE;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,6BAA6B,EAAE;YAClE;QACF;AAEA,QAAA,IAAI,CAAC,0BAA0B,CAAC,6BAA6B,CAAC,MAAM,EAAE;IACxE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,0BAA0B,CAAC,8BAA8B,EAAE;IAClE;8GAvBW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,mKChB/C,qrCAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbI,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,aAAa,kGACb,iCAAiC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIxB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAV9C,SAAS;+BACE,mCAAmC,EAAA,UAAA,EACjC,IAAI,EAAA,OAAA,EACP;wBACP,MAAM;wBACN,aAAa;wBACb,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,qrCAAA,EAAA;8BAIQ,0BAA0B,EAAA,CAAA;sBAAlC;;;MEPU,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;QAME,IAAA,CAAA,KAAK,GAAqB,EAAE;QAE5B,IAAA,CAAA,eAAe,GAAkC,MAAM,EAAe;AA8BvE,IAAA;IA1BC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,YAAY;aACZ,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AACjE,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,GAAQ,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,eAAe,CACrB,oBAAmC,EAAA;AAEnC,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;AACzD,QAAA,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;YACrC,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,IAAI;AACd,gBAAA,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,MAAW;AAClB,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,CAAC;aACF;AACH,QAAA,CAAC,CAAC;IACJ;8GAhCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,+EAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,+EAAA,EAAA;8BAQN,cAAc,EAAA,CAAA;sBAAtB;;;MEDU,qBAAqB,CAAA;IAGhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE;QAC5C;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,CAAuC,CAAC;QAC1D;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;YACzC;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE;IAC/C;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;IACzC;8GAvBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdlC,0hBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNI,MAAM,0YACN,aAAa,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,MAAM;wBACN;AACD,qBAAA,EAAA,QAAA,EAAA,0hBAAA,EAAA;8BAIQ,cAAc,EAAA,CAAA;sBAAtB;;;ME2BU,eAAe,CAAA;AA0B1B,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACxB,WAA6B,EAAA;QAFnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;AA5BJ,QAAA,IAAA,CAAA,UAAU,GACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAgC;YACpD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAC5C;AACE,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,KAAK;aAChB,EACD;gBACE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;aACpD,CACF;YACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAC5C;AACE,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,KAAK;aAChB,EACD,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CACtC;YACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,SAAA,CAAC;QAEe,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QACjD,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,eAAe,GAAW,EAAE;QAuEhB,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;QAhExD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAyB;IAChE;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;gBAC/D,IAAI,EAAE,MAAK;AACT,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,CACnE;oBACD,IAAI,CAAC,gBAAgB,EAAE;oBACvB,UAAU,CAAC,MAAK;AACd,wBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC1B,CAAC,EAAE,GAAG,CAAC;gBACT,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAsB,KAAI;AAChC,oBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;oBAClB,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;oBACxD,IAAI,CAAC,gBAAgB,EAAE;gBACzB,CAAC;gBACD,QAAQ,EAAE,MAAK;oBACb,IAAI,CAAC,gBAAgB,EAAE;gBACzB,CAAC;AACF,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAClC;IACF;AAEQ,IAAA,8BAA8B,CAAC,OAAe,EAAE,CAAA,GAAY,CAAC,EAAA;AACnE,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;QAE9B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,QAAA,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACf;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;IAC9B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC7B;8GA7FW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1C5B,uvGAwFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5DI,gBAAgB,2PAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,UAAU,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,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,2GACV,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,OAAO;wBACP,eAAe;AAChB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,uvGAAA,EAAA;;;MEnCL,YAAY,CAAA;AACvB,IAAA,WAAA,GAAA,EAAe;IAER,OAAO,oBAAoB,CAChC,GAAM,EAAA;;QAGN,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAC5B,CAAC,MAAM,EAAE,KAAK,KAAI;AAChB,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK;AACrB,gBAAA,OAAO,MAAM;YACf,CAAC,EACD,EAAE,CACH;QACH;AACA,QAAA,OAAO,EAAE;IACX;8GAjBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCFY,wBAAwB,CAAA;AACnC;;;AAGG;IACH,OAAO,WAAW,CAAC,OAAwB,EAAA;QACzC,MAAM,aAAa,GAA2B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACrE,MAAM,yBAAyB,GAA2B,OAAO,CAAC,GAAG,CACnE,sBAAsB,CACvB;AAED,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,yBAAyB,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;AAEA,QAAA,MAAM,QAAQ,GAAW,aAAa,CAAC,WAAW,EAAY;AAC9D,QAAA,MAAM,oBAAoB,GACxB,yBAAyB,CAAC,WAAW,EAAY;AAEnD,QAAA,IAAI,QAAQ,KAAK,oBAAoB,EAAE;YACrC,OAAO;AACL,gBAAA,eAAe,EAAE,IAAI;aACtB;QACH;AAEA,QAAA,OAAO,IAAI;IACb;AACD;;MCcY,eAAe,CAAA;AAQ1B,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACvB,WAA6B,EAAA;QAFpB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAPd,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;QAqFb,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QA9EtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CACtC;YACE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;gBAClC,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;aACpD,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACrC,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3D,CAAC;YACF,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACjD,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3D,CAAC;YACF,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;AACrC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;aACtC,CAAC;SACH,EACD,EAAE,UAAU,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CACvD;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,oBAAoB,CACrD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAC9B;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAwB;IAC5D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAwB;IAC/D;AAEA,IAAA,IAAI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAwB;IAC3E;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAyB;IAC7D;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,UAAU,GAAe,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAE5D,YAAA,IAAI,CAAC;AACF,iBAAA,MAAM,CAAC;gBACN,KAAK,EAAE,UAAU,CAAC,KAAM;gBACxB,QAAQ,EAAE,UAAU,CAAC,QAAS;gBAC9B,KAAK,EAAE,UAAU,CAAC,KAAM;aACK;AAC9B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAA8B,KAAI;AACvC,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,oBAAA,IAAI,CAAC,cAAc;AACjB,wBAAA,+CAA+C;AACjD,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CACtC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC/B,CACF;AACD,oBAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC;gBACvD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,oBAAA,IAAI,CAAC,YAAY;wBACf,KAAK,CAAC,KAAK,EAAE,OAAO;AACpB,4BAAA,8CAA8C;AAChD,oBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;gBACnD,CAAC;AACF,aAAA,CAAC;QACN;IACF;8GAzFW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C5B,g+LA+IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlHI,gBAAgB,2PAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EACnB,UAAU,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,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,2GACV,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAEhB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,QAAQ;wBACR,UAAU;wBACV,QAAQ;wBACR,OAAO;wBACP,eAAe;AAChB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,g+LAAA,EAAA;;;MEAL,uBAAuB,CAAA;AAWlC,IAAA,WAAA,CACmB,WAAwB,EACxB,MAAc,EACvB,WAA6B,EAAA;QAFpB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAbd,IAAA,CAAA,SAAS,GAAY,KAAK;QAC1B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;QAgEb,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QAnDtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAErC;YACA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;gBAC9C,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;aACpD,CAAC;AACH,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,oBAAoB,CAC7D,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAC7B;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB;IACvE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAwB;IAC3D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK;AAEhD,YAAA,IAAI,CAAC;AACF,iBAAA,cAAc,CAAC,EAAE,KAAK,EAAwC;AAC9D,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAAsC,KAAI;AAC/C,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,cAAc;AACjB,wBAAA,QAAQ,CAAC,OAAO,IAAI,yCAAyC;AAC/D,oBAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,QAAQ,CAAC;AAC/D,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CACtC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC/B,CACF;gBACH,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,YAAY;wBACf,KAAK,CAAC,KAAK,EAAE,OAAO;AACpB,4BAAA,uDAAuD;AACzD,oBAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;gBAC5D,CAAC;AACF,aAAA,CAAC;QACN;IACF;8GAjEW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,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,iFCzCpC,gjFA0EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7CI,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,g+BACnB,UAAU,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,UAAA,EAAA,IAAA,EACV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,8GACV,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,yPACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,UAAU;wBACV,SAAS;wBACT,UAAU;wBACV,OAAO;wBACP,eAAe;AAChB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,gjFAAA,EAAA;;;AEvClB,IAAY,YAOX;AAPD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACzC,CAAC,EAPW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;MC4CX,sBAAsB,CAAA;AAajC,IAAA,WAAA,CACU,WAAwB,EACxB,KAAqB,EACZ,MAAc,EACvB,WAA6B,EAAA;QAH7B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACI,IAAA,CAAA,MAAM,GAAN,MAAM;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QAhBd,IAAA,CAAA,SAAS,GAAY,KAAK;QAC1B,IAAA,CAAA,cAAc,GAAW,EAAE;QAC3B,IAAA,CAAA,YAAY,GAAW,EAAE;AAGzB,QAAA,IAAA,CAAA,YAAY,GAA6C;AAC9D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,eAAe,EAAE,IAAI;SACtB;QAqHkB,IAAA,CAAA,YAAY,GAAG,YAAY;QAC3B,IAAA,CAAA,iBAAiB,GAAG,iBAAiB;QA5GtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAC7C;YACE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACrC,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AACzD,iBAAA;AACD,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;YACF,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AAC5C,gBAAA,UAAU,EAAE;AACV,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AACzD,iBAAA;AACD,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;SACH,EACD,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAChD;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,oBAAoB,CACvD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAC7B;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB;IAC7D;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAwB;IACtE;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAwB;IAC7E;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAClD;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;AAEzC,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAEvD,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa,CAAC;gBACb,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;gBAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;aACmB;AACrC,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAAqC,KAAI;AAC9C,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,cAAc;AACjB,wBAAA,QAAQ,CAAC,OAAO,IAAI,8BAA8B;AACpD,oBAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC;AACpD,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CACtC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC/B,CACF;gBACH,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,oBAAA,IAAI,CAAC,YAAY;wBACf,KAAK,CAAC,KAAK,EAAE,OAAO;AACpB,4BAAA,6CAA6C;AAC/C,oBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;gBAClD,CAAC;AACF,aAAA,CAAC;QACN;IACF;IAEQ,sBAAsB,GAAA;;QAE5B,OAAO,CACL,IAAqD,KAC1B;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACpC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;AAClD,YAAA,IAAI,QAAQ,KAAK,eAAe,EAAE;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChC,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/B,wBAAA,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI;AACvC,qBAAA,CAAC;gBACJ;gBACA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE;AACvC,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;AACtC,wBAAA,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI;AACvC,qBAAA,CAAC;gBACJ;gBACA,OAAO,EAAE,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,EAAE;YACnD;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE;gBACnE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACxC;AACA,YAAA,IACE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,EACtE;gBACA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;YAC/C;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;IACH;8GA5HW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,gFC5CnC,mgHA0FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzDI,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,UAAU,8GACV,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,yPACP,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAEvB;wBACP,gBAAgB;wBAChB,mBAAmB;wBACnB,YAAY;wBACZ,UAAU;wBACV,QAAQ;wBACR,UAAU;wBACV,OAAO;wBACP,eAAe;AAChB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mgHAAA,EAAA;;;ME/BL,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnC,s/TA8IA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtIY,YAAY,uIAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WAGvB,CAAC,YAAY,EAAE,aAAa,CAAC,cAC1B,IAAI,EAAA,QAAA,EAAA,s/TAAA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA;;;MEaL,kBAAkB,CAAA;AAU7B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAA,CAAA,WAAW,GAAX,WAAW;QAP9B,IAAA,CAAA,eAAe,GAKQ,SAAS;AAG9B,QAAA,IACE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAC/B,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC/C,EACD;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;AAAO,aAAA,IACL,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAC/B,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC/C,EACD;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QAClC;AAAO,aAAA,IACL,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAC/B,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CACvD,EACD;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB;QAC1C;aAAO,IACL,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAC/B,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACpE,EACD;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;QACzC;AAAO,aAAA,IACL,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAC/B,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CACtD,EACD;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;QACzC;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;8GA9CW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB/B,2kBAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLI,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAEb;wBACP,eAAe;wBACf,eAAe;wBACf,uBAAuB;wBACvB,sBAAsB;wBACtB,sBAAsB;AACvB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,2kBAAA,EAAA;kFAGP,IAAI,EAAA,CAAA;sBAAZ;;;MEfU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,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,gFCRpC,kCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,IAAI,EAAA,QAAA,EAAA,kCAAA,EAAA;;;MECL,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,6FCPhD,+CACA,EAAA,CAAA,CAAA;;2FDMa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,cAEjC,IAAI,EAAA,QAAA,EAAA,+CAAA,EAAA;;;AELlB,IAAY,cAIX;AAJD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAUnB,MAAM,uBAAuB,GAAG,cAAc,CAAC,IAAI;;MCI7C,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,EAAE;AAgBjC,IAAA;IAXC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACnC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnE;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACjC;IACF;8GAhBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sGCd5B,y3BAyBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,2FAAE,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG/C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,cAAc,EAAA,OAAA,EAEf,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAA,UAAA,EAC/C,IAAI,EAAA,QAAA,EAAA,y3BAAA,EAAA;8BAMP,MAAM,EAAA,CAAA;sBAAd;;;MERU,mBAAmB,CAAA;IAI9B,uBAAuB,GAAA;QACrB,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC,eAAe;IAC7D;8GANW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yICVhC,4KAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,IAAI,EAAA,QAAA,EAAA,4KAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MEAU,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZzC,qHAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMY,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGd,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,OAAA,EAG7B,CAAC,eAAe,CAAC,cACd,IAAI,EAAA,QAAA,EAAA,qHAAA,EAAA;8BAGP,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MESU,iBAAiB,CAAA;AAX9B,IAAA,WAAA,GAAA;QAeW,IAAA,CAAA,cAAc,GAAG,cAAc;AAExC,QAAA,IAAA,CAAA,KAAK,GAAmB;AACtB,YAAA,WAAW,EAAE,uBAAuB;SACrC;AASF,IAAA;IAPC,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,eAAe;IACzD;IAEA,mBAAmB,GAAA;QACjB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW;IACrD;8GAhBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB9B,uyCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBI,IAAI,6FACJ,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAInB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,IAAI;wBACJ,eAAe;wBACf,mBAAmB;wBACnB,4BAA4B;AAC7B,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,uyCAAA,EAAA;8BAGP,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;MElBU,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,IAAgC,EAAA;QAAhC,IAAA,CAAA,IAAI,GAAJ,IAAI;IAA+B;IAEvD,eAAe,GAAA;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY;QACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAoC,EAAE,MAAM,CAAC;IAC/D;8GANW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,yECP7B,yBACA,EAAA,CAAA,CAAA;;2FDMa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAEb,IAAI,EAAA,QAAA,EAAA,yBAAA,EAAA;;;ME6HL,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,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,WAAW,YAjEpB,kBAAkB;YAClB,gBAAgB;YAChB,uBAAuB;YACvB,eAAe;YACf,eAAe;YACf,oCAAoC;YACpC,uBAAuB;YACvB,cAAc;YACd,4BAA4B;YAC5B,mBAAmB;YACnB,mBAAmB;YACnB,eAAe;YACf,mCAAmC;YACnC,sBAAsB;YACtB,4CAA4C;YAC5C,uBAAuB;YACvB,aAAa;YACb,gBAAgB;YAChB,qBAAqB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,6BAA6B;YAC7B,kBAAkB;YAClB,sBAAsB;YACtB,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,wBAAwB;YACxB,kBAAkB;YAClB,gBAAgB;YAChB,iBAAiB;YACjB,6BAA6B;YAC7B,kBAAkB;YAClB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,cAAc;YACd,uBAAuB;YACvB,2BAA2B;YAC3B,8BAA8B;YAC9B,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,oBAAoB;YACpB,WAAW;YACX,gBAAgB;YAChB,UAAU;YACV,gBAAgB;YAChB,gBAAgB;AAChB,YAAA,aAAa,aAGb,wBAAwB;YACxB,kBAAkB;YAClB,6BAA6B;YAC7B,uBAAuB;YACvB,qBAAqB;YACrB,kBAAkB;YAClB,8BAA8B;YAC9B,aAAa,CAAA,EAAA,CAAA,CAAA;AAIJ,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,WAAW,EAAA,SAAA,EA3EX;AACT,YAAA,sBAAsB,EAAE;AACxB,YAAA,cAAc,CAAC;AACb,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,IAAI;AACb,iBAAA;aACF,CAAC;AACH,SAAA,EAAA,OAAA,EAAA,CAGC,kBAAkB;YAElB,uBAAuB;YACvB,eAAe;YACf,eAAe;YAIf,4BAA4B;YAK5B,sBAAsB;YAGtB,aAAa;YAIb,kBAAkB;YAElB,kBAAkB;YAElB,uBAAuB;YACvB,wBAAwB;YAGxB,sBAAsB;YACtB,wBAAwB;YAExB,gBAAgB;YAChB,iBAAiB;YAGjB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,cAAc;YAEd,2BAA2B;YAC3B,8BAA8B;YAC9B,YAAY;YACZ,mBAAmB;YACnB,cAAc;YACd,oBAAoB;YACpB,WAAW;YAIX,gBAAgB;YAChB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAcJ,WAAW,EAAA,UAAA,EAAA,CAAA;kBA5EvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,sBAAsB,EAAE;AACxB,wBAAA,cAAc,CAAC;AACb,4BAAA,KAAK,EAAE;AACL,gCAAA,MAAM,EAAE,IAAI;AACb,6BAAA;yBACF,CAAC;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,eAAe;wBACf,oCAAoC;wBACpC,uBAAuB;wBACvB,cAAc;wBACd,4BAA4B;wBAC5B,mBAAmB;wBACnB,mBAAmB;wBACnB,eAAe;wBACf,mCAAmC;wBACnC,sBAAsB;wBACtB,4CAA4C;wBAC5C,uBAAuB;wBACvB,aAAa;wBACb,gBAAgB;wBAChB,qBAAqB;wBACrB,sBAAsB;wBACtB,kBAAkB;wBAClB,6BAA6B;wBAC7B,kBAAkB;wBAClB,sBAAsB;wBACtB,uBAAuB;wBACvB,wBAAwB;wBACxB,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,wBAAwB;wBACxB,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,6BAA6B;wBAC7B,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,oBAAoB;wBACpB,cAAc;wBACd,uBAAuB;wBACvB,2BAA2B;wBAC3B,8BAA8B;wBAC9B,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,oBAAoB;wBACpB,WAAW;wBACX,gBAAgB;wBAChB,UAAU;wBACV,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,kBAAkB;wBAClB,6BAA6B;wBAC7B,uBAAuB;wBACvB,qBAAqB;wBACrB,kBAAkB;wBAClB,8BAA8B;wBAC9B,aAAa;AACd,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACjID;;AAEG;;ACFH;;AAEG;;;;"}
|