vc-create-dashboard 2.2.9 → 2.3.2

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":"create-dashboard.js","sources":["../../../projects/create-dashboard/src/lib/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/configurations.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/auth.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/pagination.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/configure-widgets.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/services/cs-select.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/safe-html.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/select.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/pascal.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/click-outside.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/formgroup.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/filter.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/scroll-in-view.directive.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/directives.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/v-loader.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.module.ts","../../../projects/create-dashboard/src/public-api.ts","../../../projects/create-dashboard/src/create-dashboard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CreateDashboardService {\r\n constructor() {}\r\n}","export class Configurations {\r\n public envConfig: any;\r\n\r\n constructor() {\r\n this.envConfig = {};\r\n }\r\n\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { of, BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map, shareReplay, catchError, delay} from 'rxjs/operators';\r\nimport { Configurations } from '../../configurations';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n public env !: any;\r\n\r\n constructor(private http: HttpClient, @Optional() config?: Configurations) { \r\n if (config) {\r\n this.env = config.envConfig;\r\n }\r\n }\r\n getAuthorizationToken() {\r\n if (localStorage.getItem('currentUser')) {\r\n const currentUser = JSON.parse(localStorage.getItem('currentUser') || '{}');\r\n return currentUser.token;\r\n }\r\n }\r\n\r\n \r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { of } from 'rxjs';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\nimport { Configurations } from '../../configurations';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CreateDashboardService {\r\n public env !: any;\r\n\r\n httpOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json', token: this.authService.getAuthorizationToken() })\r\n };\r\n constructor(private http: HttpClient,\r\n private authService: AuthService, @Optional() config?: Configurations) {\r\n if (config) {\r\n this.env = config.envConfig;\r\n }\r\n }\r\n\r\n /*\r\n * Fetches the Organization Users List by making an API call\r\n */\r\n getOrganizationUsers(url?: any) {\r\n return this.http.get(this.env.organizationGet + 'organisationUsersList&paginationType=small' +\r\n (url.p ? '&p=' + url.p : '') + (url.type ? '&type=' + url.type : '') +\r\n (url.q ? '&q=' + url.q : ''), this.httpOptions).pipe(map((res: any) => {\r\n return res;\r\n }), retry(2), catchError(err => of(err)));\r\n }\r\n\r\n /**\r\n * Fetches the OrganizationUsers details of users List to set pagination details including number of\r\n * pages and records limit per page,\r\n * @param url contains info about type & search query\r\n */\r\n getOrganizationUsersCount(url?: any) {\r\n return this.http.get(this.env.organizationGet + 'organisationUsersCount&paginationType=small' +\r\n (url.type ? '&type=' + url.type : '') + (url.q ? '&q=' + url.q : ''), this.httpOptions).pipe(map(res => {\r\n return res;\r\n }), catchError(err => of(err)));\r\n }\r\n\r\n getCategoryList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http\r\n .get<any[]>(this.env.riskGet + 'category/list', { headers })\r\n .pipe(retry(2));\r\n }\r\n\r\n /**\r\n * Fetches all users by making an API call\r\n */\r\n getAllUsers() {\r\n return this.http.get(this.env.organizationGet + 'selectAllUsers&type=all', this.httpOptions).pipe(retry(2));\r\n }\r\n\r\n /**\r\n * Fetches responsibilityCentersList by making an API call\r\n */\r\n getResponsibilityCenterList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.get<any[]>(this.env.complianceGet + 'responsibilityCenterTree', {\r\n headers,\r\n }).pipe(retry(2));\r\n }\r\n\r\n getComplianceCategoriesList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.get<any[]>(this.env.complianceGet + 'complianceCategory/CategoryListTree', {\r\n headers,\r\n }).pipe(retry(2));\r\n }\r\n\r\n submitDashboard(payload: any) {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.post(this.env.dashboard+'CreateDashboard', payload, { headers }).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n /**\r\n * Fetches the Dashboard details for data population to Edit the dashboard\r\n * @param id \r\n */\r\n fetchDashboard(id: any) {\r\n return this.http.get(this.env.dashboard + id + '?mode=edit', this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n updateDashboard(id: any, payload: any) {\r\n return this.http.put(this.env.dashboard + 'UpdateDashboard/' + id, payload, this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n getUserInformation() {\r\n return this.http.get(this.env.organizationGet + 'users&id=' + this._ID(), this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n _ID() {\r\n const helper = new JwtHelperService();\r\n const myRawToken = localStorage.getItem('currentUser') || '{}';\r\n const isExpired = helper?.isTokenExpired(myRawToken);\r\n if (isExpired === false) {\r\n const tokenInfo = helper?.decodeToken(myRawToken);\r\n return tokenInfo._id;\r\n }\r\n return '';\r\n }\r\n\r\n checkDuplicateDashboardName(payload: any) {\r\n return this.http.post(this.env.dashboard + 'DuplicateDashboard', payload, this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n/**\r\n * Service to implement pagination for users while creating an app\r\n */\r\nexport class PaginationService {\r\n currentPage = 1;\r\n searchValue = '';\r\n currentValues = new BehaviorSubject({});\r\n\r\n constructor() { }\r\n\r\n setCurrentState() {\r\n this.currentValues.next(true);\r\n }\r\n reset(){\r\n this.currentPage = 1;\r\n this.searchValue = '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n snackbarSubject = new Subject<any>();\r\n constructor() {}\r\n\r\n show(message: string, icon?: string) {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon,\r\n });\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { widgetDataModel} from '../interfaces/widget-data-model'\r\nimport { HttpClient, HttpHeaders, JsonpClientBackend } from '@angular/common/http';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { of } from 'rxjs';\r\nimport { AuthService } from './auth.service';\r\nimport { identifierModuleUrl } from '@angular/compiler';\r\nimport { Configurations } from '../../configurations';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigureWidgetsService {\r\n public env !: any;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n @Optional() config?: Configurations) { \r\n if (config) {\r\n this.env = config.envConfig;\r\n }}\r\n\r\n complianceWidgetsData = [\r\n {\r\n title: 'Overview',\r\n id: 'overview_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Responsibility Calendar',\r\n id: 'compliance_calendar_flag',\r\n description: 'Displays all responsibilities that are due on a particular day.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-calender.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Responsibility Center Overview',\r\n id: 'responsibility_center_overview_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'My Responsibilities',\r\n id: 'my_responsibilities',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/my-responsibilities.png',\r\n tabOption: true,\r\n value: 0,\r\n },\r\n {\r\n title: 'Key Responsibilities',\r\n id: 'key_responsibilities',\r\n description: 'Displays all responsibilities that are due on a particular day.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/key-responsibilities.png',\r\n tabOption: true,\r\n value: 0,\r\n },\r\n {\r\n title: 'Trend Analysis',\r\n id: 'trend_analysis_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/trend-analysis.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Workroom Updates',\r\n id: 'workroom_alert_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/workroom-updates.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Recent Activities',\r\n id: 'recent_activity_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/recent-activities.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Exception Summary',\r\n id: 'exception_summary_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/exception-summary.png',\r\n value: 0,\r\n }\r\n ];\r\n\r\n\r\n\r\n riskWidgetsData = [\r\n {\r\n title: 'Risk Overview',\r\n id: 'risk_overview',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Appetite & Tolerance',\r\n id: 'risk_appetite_tolerance',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Ratings',\r\n id: 'risk_ratings',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risks Without Controls',\r\n id: 'risks_without_controls',\r\n description: 'Description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n }, \r\n {\r\n title: 'Risks Exceeding Risk Tolerance',\r\n id: 'exceeds_risk_tolerance',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Responsibility Centers ',\r\n id: 'inherent_risk_rating_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Residual Risk Rating by Responsibility Centers ',\r\n id: 'residual_risk_rating_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Category Overview',\r\n id: 'risk_category_overview',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Heatmap',\r\n id: 'risk_heatmap',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-heatmap.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Categories',\r\n id: 'inherent_risk_rating_by_categories',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\r\n value: 0,\r\n },\r\n \r\n {\r\n title: 'Residual Risk Rating by Categories',\r\n id: 'residual_risk_rating_by_categories',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\r\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Residual Risk Rating Trend by Responsibility Centers',\r\n id: 'residual_risk_rating_trend_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',\r\n value: 0,\r\n }, \r\n {\r\n title: 'Risk Rating Trend by Categories',\r\n id: 'risk_rating_trend_by_categories',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Top 5 Risk Ratings',\r\n id: 'top_5_residual_risk_ratings',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\r\n value: 0,\r\n },\r\n ];\r\n auditWidgetsData = [];\r\n policyWidgetsData = [];\r\n\r\n\r\n // For dashboard view\r\n dashBoardWidgetUpdate(widGetJson: any) {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.put(this.env.OrganizationPut + 'dashboardWidgets', widGetJson).pipe(retry(2));\r\n }\r\n\r\n moduleType(identifier:string){\r\n if(JSON.stringify(this.complianceWidgetsData).includes(identifier)){\r\n return 'COMPLIANCE'\r\n }else if(JSON.stringify(this.riskWidgetsData).includes(identifier)){\r\n return 'RISK'\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PopoverService {\r\n stopScroll = false;\r\n positionX!: number;\r\n positionY!: number;\r\n popoverHeight: any;\r\n popoverWidth: any;\r\n elementPosition: any;\r\n elementDirection: any;\r\n constructor() {\r\n console.log(this.popoverHeight);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { EditorConfig } from 'vcomply-editor';\r\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\r\nimport { CreateDashboardService } from './services/create-dashboard.service';\r\nimport { PaginationService } from './services/pagination.service';\r\nimport { UserListConfiguration } from './user-list/user-list.config';\r\nimport { CreateDashboardForm } from './create-dashboard-config';\r\nimport { SnackBarService } from '../ui-kit/snack-bar/snack-bar.service';\r\nimport { ConfigureWidgetsService } from './services/configure-widgets.service';\r\nimport { findIndex } from 'rxjs/operators';\r\n\r\n\r\nimport * as dayjs from 'dayjs';\r\nimport * as customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport { PopoverService } from '../ui-kit/popover/popover.service';\r\ndayjs.extend(customParseFormat);\r\n\r\n@Component({\r\n selector: 'app-create-dashboard',\r\n templateUrl: './create-dashboard.component.html',\r\n styleUrls: ['./create-dashboard.component.less']\r\n})\r\nexport class CreateDashboardComponent implements OnInit, OnChanges {\r\n\r\n activeSelector = '';\r\n disabled = false;\r\n @Input() mode = 'CREATE';\r\n @Input() dashboardId = '';\r\n @Output() close = new EventEmitter();\r\n @Input() createdBy = 0;\r\n\r\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\r\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\r\n animation = true;\r\n @Input() configureWidget = false\r\n\r\n totalPages = 1;\r\n totalList = 1;\r\n usersList: any[] = [];\r\n vLoader = true;\r\n userListLoaded = false;\r\n rcListLoaded = false;\r\n complianceCategoriesListLoaded = false;\r\n riskCategoryListLoaded = false;\r\n hideToDate = false;\r\n listDetails: UserListConfiguration = {\r\n selectedUsersList: [],\r\n nonRemovableUsersList: [],\r\n displayElementKey: 'member_name',\r\n elementIdKey: 'member_id',\r\n tooltipKey: 'member_email',\r\n };\r\n dashboardDescription: EditorConfig = {\r\n placeholder: 'Description (Max limit: 250 characters)',\r\n mode: 'prime',\r\n id: 'description'\r\n }\r\n responsibilityCategoriesTree: any = {\r\n regulations: {\r\n list: [],\r\n selectedList: []\r\n },\r\n standards: {\r\n list: [],\r\n selectedList: []\r\n },\r\n internalControls: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n }\r\n };\r\n allComplianceCategories: any[] = [];\r\n allRiskCategories: any[] = [];\r\n showRiskCategory = false;\r\n showCriteria = true;\r\n\r\n dashboardForm: CreateDashboardForm = {\r\n dashboardName: '',\r\n dashboardDescriptionText: '',\r\n selectedViewers: [],\r\n selectedFromDate: undefined,\r\n selectedToDate: undefined,\r\n selectedResponsibilityCenters: [],\r\n selectedResponsibilityCategories: [],\r\n selectedRiskCategories: [],\r\n displayCriteria: 'or',\r\n configureWidget: [],\r\n frequencyDetails: '',\r\n selectedFrequencyType: '',\r\n selectedFrequencies: [0],\r\n frequencyMessage: '',\r\n frequencyDate: 1\r\n }\r\n\r\n\r\n openConfigureWidgets = false;\r\n selectedWidgets: any = [];\r\n displayedWidgets: any = []\r\n\r\n\r\n responsibilityCentersList = [];\r\n datePickerOverlay = false;\r\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\r\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\r\n\r\n categoryListLoaded = false;\r\n showRiskWidgets = false;\r\n showComplianceWidgets = false;\r\n\r\n riskCategoryList = {\r\n strategic: {\r\n list: [],\r\n selectedList: []\r\n },\r\n operational: {\r\n list: [],\r\n selectedList: []\r\n },\r\n compliance: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n },\r\n };\r\n\r\n fromDatePickerConfig: IDatePickerConfig = {\r\n min: this.getCurrentDate()\r\n }\r\n\r\n toDatePickerConfig: IDatePickerConfig = {\r\n }\r\n\r\n isSmiley!: boolean;\r\n smileyMessage: string = '';\r\n\r\n constructor(\r\n private createDashboardService: CreateDashboardService,\r\n private paginationService: PaginationService,\r\n private cdr: ChangeDetectorRef,\r\n private snackBar: SnackBarService,\r\n public popoverService: PopoverService,\r\n private configureWidgetsService: ConfigureWidgetsService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n if (this.createdBy) {\r\n this.listDetails.nonRemovableUsersList.push(this.createdBy);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\r\n this.close.emit({ mode: 'discard' });\r\n this.isSmiley = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.getOrganizationUsersCount('');\r\n this.getCategoryList();\r\n this.getRCList();\r\n this.getComplianceCategoryList();\r\n this.setFrequency(\"2~1~0~0\", 'import');\r\n this.checkWhetherAllListsLoaded();\r\n this.getUsersList('');\r\n this.createDashboardService.getUserInformation().subscribe((res: any) => {\r\n const quickLink = res.quick_link;\r\n if (quickLink.risk) {\r\n this.showRiskCategory = true;\r\n } else {\r\n this.showRiskCategory = false;\r\n }\r\n }, error => { console.log(error) });\r\n\r\n }\r\n\r\n /**\r\n * Displays the listing pages the left side of policy form to set and edit the dropdown fields values\r\n * @param type holds name of particular list is to be displayed\r\n * @param event contains boolean value to display the list or not\r\n */\r\n activateSelector(type: any, event: boolean) {\r\n if (type == 'frequency' || this.activeSelector == 'frequency') {\r\n this.showCriteria = false;\r\n setTimeout(() => {\r\n this.showCriteria = true;\r\n }, 1);\r\n }\r\n this.activeSelector = event ? type : '';\r\n }\r\n\r\n openFromDatePicker() {\r\n this.fromDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n openToDatePicker() {\r\n this.toDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n closeFromDatePicker() {\r\n if (!this.dashboardForm.selectedFromDate) {\r\n this.dashboardForm.selectedToDate = undefined;\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n return\r\n }\r\n let minToDate = this.setToDate(this.dashboardForm.selectedFromDate)\r\n this.toDatePickerConfig = { min: minToDate };\r\n\r\n const fromDate = new Date(minToDate.split('-').reverse().join('-'));\r\n const toDate = new Date(this.dashboardForm.selectedToDate)\r\n const inValidDate = (fromDate >= toDate) ? true : false;\r\n if (inValidDate) {\r\n this.dashboardForm.selectedToDate = undefined;\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n }\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n closeToDatePicker() {\r\n this.toDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n animateImage() {\r\n const circleImage = document.getElementsByClassName('image')\r\n }\r\n\r\n saveFrequency(eventValues: any) {\r\n this.dashboardForm.selectedFrequencyType = eventValues.frequencyType;\r\n this.dashboardForm.selectedFrequencies = eventValues.frequencies;\r\n this.dashboardForm.frequencyMessage = eventValues.frequencyString;\r\n this.dashboardForm.frequencyDate = eventValues.selectedDate;\r\n this.activateSelector('', false)\r\n }\r\n\r\n getCurrentDate() {\r\n let today = new Date();\r\n return today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n setToDate(data: string) {\r\n let today = new Date(data);\r\n return today.getDate() + 1 + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n getFromDate(data: string) {\r\n let today = new Date(data);\r\n return today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n configureDashboard() {\r\n let fieldsStatus = this.validateDashboard();\r\n if (fieldsStatus) {\r\n if (this.mode == 'CREATE') {\r\n this.vLoader = true;\r\n const payload = {\r\n dashboard_name: this.dashboardForm.dashboardName,\r\n dashboard_id: ''\r\n }\r\n this.createDashboardService.checkDuplicateDashboardName(payload).subscribe(res => {\r\n if (!res) {\r\n this.vLoader = false;\r\n this.showRiskWidgets = (this.showRiskCategory && (this.dashboardForm.selectedRiskCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0)) ? true : false;\r\n this.showComplianceWidgets = (this.dashboardForm.selectedResponsibilityCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0) ? true : false;\r\n this.openConfigureWidgets = true;\r\n } else {\r\n this.vLoader = false;\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n return;\r\n }\r\n }, error => {\r\n console.error(error)\r\n this.vLoader = false;\r\n });\r\n } else if (this.mode == 'EDIT') {\r\n this.vLoader = true;\r\n const payload = {\r\n dashboard_name: this.dashboardForm.dashboardName,\r\n dashboard_id: this.dashboardId\r\n }\r\n this.createDashboardService.checkDuplicateDashboardName(payload).subscribe(res => {\r\n if (!res) {\r\n this.vLoader = false;\r\n this.showRiskWidgets = (this.showRiskCategory && (this.dashboardForm.selectedRiskCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0)) ? true : false;\r\n this.showComplianceWidgets = (this.dashboardForm.selectedResponsibilityCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0) ? true : false;\r\n this.openConfigureWidgets = true;\r\n } else {\r\n this.vLoader = false;\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n return;\r\n }\r\n }, error => {\r\n this.vLoader = false;\r\n console.error(error)\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Fetches organization users count api to get total number of pages\r\n * @param Url contains prams\r\n */\r\n getOrganizationUsersCount(Url: any) {\r\n this.createDashboardService.getOrganizationUsersCount(Url).subscribe(res => {\r\n this.totalList = res.total_members;\r\n if (res.total_members && res.limit_per_page > 1) {\r\n this.totalPages = res.create_page;\r\n } else {\r\n this.totalPages = 1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get users list by making api call and pre selects all admins by adding to viewers\r\n * @param url contains query params for organization users api\r\n */\r\n getUsersList(url: any) {\r\n this.createDashboardService.getAllUsers().subscribe((res: any) => {\r\n\r\n this.usersList = res;\r\n this.userListLoaded = true;\r\n\r\n if (this.mode === 'EDIT') {\r\n this.vLoader = true;\r\n } else {\r\n this.dashboardForm.selectedViewers = this.setList(this.usersList, [this.createdBy], 'member_id');\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n this.vLoader = false;\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n getComplianceCategoryList() {\r\n this.createDashboardService.getComplianceCategoriesList().subscribe((res: any) => {\r\n const data = res;\r\n this.allComplianceCategories = Object.assign(res)\r\n // cloneDeep(res);\r\n data.forEach((element: any) => {\r\n if (element && element.compliance_type == 0) {\r\n this.responsibilityCategoriesTree.others.list.push(element);\r\n }\r\n if (element && element.compliance_type == 1) {\r\n this.responsibilityCategoriesTree.regulations.list.push(element);\r\n }\r\n if (element && element.compliance_type == 2) {\r\n this.responsibilityCategoriesTree.standards.list.push(element);\r\n }\r\n if (element && element.compliance_type == 3) {\r\n this.responsibilityCategoriesTree.internalControls.list.push(element);\r\n }\r\n });\r\n this.complianceCategoriesListLoaded = true;\r\n }, (err: any) => {\r\n console.error(err);\r\n this.complianceCategoriesListLoaded = true;\r\n });\r\n }\r\n\r\n\r\n saveSelectedCategory(event: any) {\r\n console.log(\"event==>>>\", event);\r\n }\r\n\r\n getCategoryList() {\r\n this.createDashboardService.getCategoryList().subscribe((res: any) => {\r\n this.riskCategoryList.strategic.list = res.strategic_arr;\r\n this.riskCategoryList.operational.list = res.operational_arr;\r\n this.riskCategoryList.compliance.list = res.compliance_arr;\r\n this.riskCategoryList.others.list = res.others_arr;\r\n this.riskCategoryListLoaded = true;\r\n this.allRiskCategories = [...new Set(this.allRiskCategories.concat(res.strategic_arr, res.operational_arr, res.compliance_arr, res.others_arr))]\r\n\r\n }, err => {\r\n console.error(err);\r\n this.riskCategoryListLoaded = true;\r\n\r\n });\r\n }\r\n\r\n /**\r\n * It is to ensure whether all required lists on Policy from is loaded from the api call or not\r\n */\r\n checkWhetherAllListsLoaded() {\r\n if (this.rcListLoaded && this.complianceCategoriesListLoaded && this.riskCategoryListLoaded && this.userListLoaded) {\r\n if (this.mode === 'EDIT') {\r\n this.editDashboard();\r\n } else {\r\n this.vLoader = false;\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.checkWhetherAllListsLoaded();\r\n }, 300);\r\n }\r\n }\r\n\r\n setSelectedWidgets(data: any) {\r\n if (this.mode === 'CREATE') {\r\n const widgetsArray: any = []\r\n data.forEach((element: any) => {\r\n let obj: any = {}\r\n obj.module_name = element.module;\r\n obj._id = '';\r\n obj.widget_name = element.title\r\n obj.widget_code = element.id;\r\n obj.sub_widgets = [];\r\n obj.state = 'ACTIVE'\r\n if (element.subWidgets.length > 0) {\r\n element.subWidgets.forEach((subWidget: any) => {\r\n let subWidgetObject: any = {}\r\n subWidgetObject._id = '';\r\n subWidgetObject.widget_name = subWidget.title\r\n subWidgetObject.widget_code = subWidget.id;\r\n subWidgetObject.state = (subWidget.value) ? 'ACTIVE' : 'INACTIVE'\r\n obj.sub_widgets.push(Object.assign(subWidgetObject))\r\n });\r\n }\r\n widgetsArray.push(obj)\r\n });\r\n\r\n this.dashboardForm.configureWidget = widgetsArray;\r\n } else if (this.mode === 'EDIT') {\r\n const widgetsArray: any = []\r\n\r\n data.forEach((element: any) => {\r\n if (!JSON.stringify(this.dashboardForm.configureWidget).includes(element.id)) {\r\n let obj: any = {}\r\n obj.module_name = element.module;\r\n obj._id = '';\r\n obj.widget_name = element.title\r\n obj.widget_code = element.id;\r\n obj.sub_widgets = [];\r\n obj.state = 'ACTIVE'\r\n if (element.subWidgets.length > 0) {\r\n element.subWidgets.forEach((subWidget: any) => {\r\n let subWidgetObject: any = {}\r\n subWidgetObject._id = '';\r\n subWidgetObject.widget_name = subWidget.title\r\n subWidgetObject.widget_code = subWidget.id;\r\n subWidgetObject.state = (subWidget.value) ? 'ACTIVE' : 'INACTIVE'\r\n obj.sub_widgets.push(subWidgetObject)\r\n });\r\n }\r\n this.dashboardForm.configureWidget.push(obj)\r\n } else {\r\n const index = this.selectedWidgets.findIndex((ele: any) => ele.widget_code == element.id)\r\n if (index != -1) {\r\n this.selectedWidgets[index].state = 'ACTIVE'\r\n if (this.selectedWidgets[index].sub_widgets.length > 0) {\r\n this.selectedWidgets[index].sub_widgets.forEach((subWidgetData: any) => {\r\n const elementIndex = element.subWidgets.findIndex((ele: any) => ele.id == subWidgetData.widget_code)\r\n if (elementIndex != -1) {\r\n subWidgetData.state = (element.subWidgets[elementIndex].value) ? 'ACTIVE' : 'INACTIVE'\r\n }\r\n });\r\n }\r\n }\r\n\r\n }\r\n });\r\n this.dashboardForm.configureWidget.forEach((savedWidget: any) => {\r\n const index = data.findIndex((dataElement: any) => dataElement.id == savedWidget.widget_code)\r\n if (index == -1) {\r\n savedWidget.state = 'INACTIVE';\r\n if (savedWidget.sub_widgets.length > 0) {\r\n savedWidget.sub_widgets.forEach((saveSubWidget: any) => {\r\n saveSubWidget.state = 'INACTIVE'\r\n });\r\n }\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets = data\r\n this.openConfigureWidgets = false;\r\n this.submitDashboard();\r\n\r\n }\r\n\r\n closeConfigureWidgets(event: boolean) {\r\n this.openConfigureWidgets = event;\r\n }\r\n\r\n /**\r\n * Filter list user's list based on pagination by making api call\r\n * @param event specifies a boolean value to call api\r\n */\r\n paginationFilter(event: any) {\r\n if (event) {\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: 'all_except_executive',\r\n q: (!this.paginationService.searchValue) ? '' : this.paginationService.searchValue,\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n getRCList() {\r\n this.createDashboardService.getResponsibilityCenterList().subscribe((res: any) => {\r\n this.responsibilityCentersList = res;\r\n this.rcListLoaded = true;\r\n\r\n }, (err: any) => {\r\n console.error(err);\r\n this.rcListLoaded = true;\r\n });\r\n }\r\n\r\n saveSelectedList(type: string, selectedItems: any) {\r\n switch (type) {\r\n case 'rc':\r\n this.dashboardForm.selectedResponsibilityCenters = this.setList(this.responsibilityCentersList, selectedItems, 'item_id');\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n case 'whoCanView':\r\n this.dashboardForm.selectedViewers = selectedItems\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n break;\r\n case 'responsibilityCategories':\r\n this.dashboardForm.selectedResponsibilityCategories = selectedItems;\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n case 'riskCategory':\r\n this.dashboardForm.selectedRiskCategories = selectedItems;\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n }\r\n this.activateSelector('', false);\r\n }\r\n\r\n remove(type: any, event: any, removeIndex?: any) {\r\n switch (type) {\r\n case 'rc':\r\n const rcIndex = this.dashboardForm.selectedResponsibilityCenters.findIndex((rc: any) => rc.rc_id == event.rc_id);\r\n if (rcIndex !== -1) {\r\n const parentRc: any = this.dashboardForm.selectedResponsibilityCenters[rcIndex];\r\n this.dashboardForm.selectedResponsibilityCenters.splice(rcIndex, 1);\r\n\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n const removeIndex = this.dashboardForm.selectedResponsibilityCenters.findIndex((removeElement: any) => removeElement.rc_id == childElement);\r\n this.dashboardForm.selectedResponsibilityCenters.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n case 'whoCanView':\r\n const reviewerIndex = this.dashboardForm.selectedViewers.findIndex((viewer: any) => viewer.member_id == event.member_id);\r\n this.dashboardForm.selectedViewers.splice(reviewerIndex, 1);\r\n break;\r\n\r\n case 'responsibilityCategories':\r\n const CCcategoryIndex = this.dashboardForm.selectedResponsibilityCategories.findIndex((CCcategory: any) => CCcategory.category_id == event.category_id);\r\n this.dashboardForm.selectedResponsibilityCategories.splice(CCcategoryIndex, 1);\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n case 'riskCategory':\r\n const riskCategoryIndex = this.dashboardForm.selectedRiskCategories.findIndex((riskCategory: any) => riskCategory.category_id == event.category_id);\r\n if (riskCategoryIndex !== -1) {\r\n const parent: any = this.dashboardForm.selectedRiskCategories[riskCategoryIndex];\r\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\r\n if (parent?.child_cat_ids?.length > 0) {\r\n parent.child_cat_ids.forEach((childElement: any) => {\r\n const removeIndex = this.dashboardForm.selectedRiskCategories.findIndex((removeElement: any) => removeElement.category_id == childElement);\r\n this.dashboardForm.selectedRiskCategories.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n }\r\n }\r\n\r\n setList(list: any[], ids: any[], key: string) {\r\n const data: any = [];\r\n\r\n ids.forEach((element: any) => {\r\n const index = list.findIndex((listElement: any) => listElement[key] == element);\r\n if (index !== -1) {\r\n data.push(list[index]);\r\n }\r\n });\r\n return data;\r\n }\r\n submitted = false\r\n\r\n /**\r\n * Returns id's from a particular list elements\r\n * @param list actual selected list\r\n * @param key contains key to extract id from the list\r\n */\r\n returnIds(list: any[], key: string) {\r\n return list.map(ele => { if (ele[key]) { return ele[key]; } });\r\n }\r\n\r\n /**\r\n * Validates the data submitted on create dashboard form\r\n */\r\n validateDashboard() {\r\n setTimeout(() => {\r\n this.submitted = true;\r\n\r\n }, 100);\r\n const event = this.dashboardForm.dashboardName;\r\n const re = /&nbsp;|<br>/g;\r\n this.dashboardForm.dashboardName = event.replace(re, '').trim();\r\n const description = this.dashboardForm.dashboardDescriptionText;\r\n this.dashboardForm.dashboardDescriptionText = description.replace(re, '').trim();\r\n if (!this.dashboardForm.dashboardName || this.dashboardForm.dashboardName.trim() == ''\r\n || (this.dashboardForm.dashboardName.length > 30)\r\n || (this.dashboardForm.dashboardDescriptionText.length > 250)\r\n || (this.dashboardForm.selectedFromDate && (!this.dashboardForm.selectedToDate))\r\n || (this.dashboardForm.selectedResponsibilityCenters.length == 0 &&\r\n this.dashboardForm.selectedResponsibilityCategories.length == 0 &&\r\n this.dashboardForm.selectedRiskCategories.length == 0)) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Makes an api call to create a policy\r\n * @param dashboard contains dashboardForm data\r\n */\r\n submitDashboard() {\r\n\r\n this.submitted = false;\r\n const valid = this.validateDashboard();\r\n if (!valid) {\r\n return false;\r\n }\r\n this.vLoader = true;\r\n const dashboard = this.dashboardForm;\r\n const payload: any = {\r\n dashboard_name: dashboard.dashboardName,\r\n description: [\r\n {\r\n content: dashboard.dashboardDescriptionText,\r\n attachments: []\r\n }\r\n ],\r\n visible_to_users: this.returnIds(dashboard.selectedViewers, 'member_id'),\r\n responsibility_center: this.returnIds(dashboard.selectedResponsibilityCenters, 'item_id'),\r\n responsibility_category: this.returnIds(dashboard.selectedResponsibilityCategories, 'category_id'),\r\n risk_category: this.returnIds(dashboard.selectedRiskCategories, 'category_id'),\r\n display_criteria: (dashboard.displayCriteria === 'and') ? 'BOTH_RC_AND_CATEGORY' : 'RC_OR_CATEGORY',\r\n timeframe: {\r\n start_date: (dashboard.selectedFromDate) ? dayjs(dashboard.selectedFromDate).format('YYYY-MM-DD') : '',\r\n end_date: (dashboard.selectedToDate) ? dayjs(dashboard.selectedToDate).format('YYYY-MM-DD') : '',\r\n\r\n },\r\n email_summary: this.setFrequency('', 'export'), //setFormat\r\n widget_details: dashboard.configureWidget\r\n\r\n }\r\n if (this.mode == 'CREATE') {\r\n this.createDashboardService.submitDashboard(payload).subscribe((res: any) => {\r\n this.vLoader = false;\r\n // this.snackBar.show('The dashboard has been created.');\r\n this.isSmiley = true;\r\n this.smileyMessage = 'The dashboard has been created.'\r\n setTimeout(() => {\r\n this.isSmiley = false;\r\n this.close.emit({ mode: 'created', id: res._id });\r\n }, 3000);\r\n\r\n },\r\n err => {\r\n if (err.status === 409) {\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n this.vLoader = false;\r\n } else {\r\n console.error(err);\r\n this.vLoader = false;\r\n this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');\r\n }\r\n\r\n\r\n }\r\n );\r\n }\r\n if (this.mode === 'EDIT') {\r\n payload.widget_update_flag = true\r\n this.createDashboardService.updateDashboard(this.dashboardId, payload).subscribe({\r\n next: (res: any) => {\r\n this.vLoader = false;\r\n // this.snackBar.show('The dashboard has been updated');\r\n this.isSmiley = true;\r\n this.smileyMessage = 'The dashboard has been updated';\r\n setTimeout(() => {\r\n this.isSmiley = false;\r\n this.close.emit({ mode: 'updated' });\r\n }, 3000);\r\n\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.vLoader = false;\r\n this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');\r\n }\r\n });\r\n\r\n\r\n }\r\n }\r\n\r\n editDashboard() {\r\n if (this.dashboardId) {\r\n this.createDashboardService.fetchDashboard(this.dashboardId).subscribe((res: any) => {\r\n const data = res;\r\n this.listDetails.nonRemovableUsersList = [res.created_by]\r\n this.populateDashboardForm(data);\r\n }, error => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n\r\n populateDashboardForm(data: any) {\r\n this.dashboardForm.dashboardName = data.dashboard_name,\r\n this.dashboardForm.dashboardDescriptionText = data.description[0].content,\r\n this.dashboardForm.selectedViewers = this.setList(this.usersList, data.visible_to_users, 'member_id');\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n this.dashboardForm.selectedResponsibilityCenters = this.setList(this.responsibilityCentersList, data.responsibility_center, 'item_id');\r\n this.dashboardForm.selectedResponsibilityCategories = this.setList(this.allComplianceCategories, data.responsibility_category, 'category_id');\r\n this.dashboardForm.selectedRiskCategories = this.setList(this.allRiskCategories, data.risk_category, 'category_id');\r\n this.dashboardForm.displayCriteria = (data.display_criteria === \"BOTH_RC_AND_CATEGORY\") ? 'and' : 'or';\r\n this.dashboardForm.selectedFromDate = (data.timeframe.start_date) ? dayjs(data.timeframe.start_date) : undefined;\r\n this.dashboardForm.selectedToDate = (data.timeframe.end_date) ? dayjs(data.timeframe.end_date) : undefined;\r\n this.vLoader = false;\r\n this.dashboardForm.configureWidget = data.widget_details\r\n this.selectedWidgets = data.widget_details.length > 0 ? [...new Set(data.widget_details)] : [];\r\n this.displayedWidgets = data.all_widgets.length > 0 ? [...new Set(data.all_widgets)] : [];\r\n this.setFrequency(data.email_summary, 'import');\r\n let minToDate = this.setToDate(data.timeframe.start_date);\r\n this.toDatePickerConfig = { min: minToDate };\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n\r\n }\r\n\r\n setFrequency(event: any, mode: any) {\r\n if (mode === 'export') {\r\n switch (this.dashboardForm.selectedFrequencyType) {\r\n case 'weekly':\r\n const weeklyValueData = this.dashboardForm.selectedFrequencies.map((ele: any) => Number(ele) + 1);\r\n const weeklyValue = weeklyValueData.join();\r\n return '2~' + weeklyValue + '~0~0'\r\n case 'monthly':\r\n const monthlyValueData = this.dashboardForm.selectedFrequencies.map((ele: any) => Number(ele) + 1);\r\n const monthlyValue = monthlyValueData.join();\r\n return '3~' + this.dashboardForm.frequencyDate + '~' + monthlyValue + '~0'\r\n case 'quarterly':\r\n const quarterlyValueData = Number(this.dashboardForm.selectedFrequencies) + 1;\r\n return '7~' + this.dashboardForm.frequencyDate + '~' + quarterlyValueData + '~0'\r\n\r\n }\r\n }\r\n if (mode === 'import') {\r\n const val = event.split('~')\r\n switch (val[0]) {\r\n case '2': {\r\n let stringVal = \"Every \";\r\n this.dashboardForm.selectedFrequencyType = 'weekly'\r\n this.dashboardForm.selectedFrequencies = val[1].split(',').map((element: any) => Number(element) - 1);\r\n this.dashboardForm.selectedFrequencies.forEach((dayIndex: any, index: any) => {\r\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\r\n })\r\n this.dashboardForm.frequencyMessage = stringVal;\r\n }\r\n\r\n break\r\n case '3': {\r\n let stringVal = \"every \";\r\n this.dashboardForm.selectedFrequencyType = 'monthly'\r\n this.dashboardForm.frequencyDate = val[1]\r\n this.dashboardForm.selectedFrequencies = val[2].split(',').map((element: any) => Number(element) - 1);\r\n this.dashboardForm.selectedFrequencies.forEach((monthIndex: any, index: any) => {\r\n stringVal += index === 0 ? this.monthNames[monthIndex] : ', ' + this.monthNames[monthIndex];\r\n })\r\n let monthDateName;\r\n if (this.dashboardForm.frequencyDate == \"1\") {\r\n monthDateName = '1st'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"2\") {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"3\") {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.dashboardForm.frequencyDate + 'th'\r\n }\r\n this.dashboardForm.frequencyMessage = monthDateName + ' of ' + stringVal;\r\n }\r\n break\r\n case '7': {\r\n let stringVal = \"every \";\r\n this.dashboardForm.selectedFrequencyType = 'quarterly'\r\n this.dashboardForm.frequencyDate = val[1];\r\n this.dashboardForm.selectedFrequencies = Number(val[2].split(',')[0]) - 1;\r\n stringVal += this.quarters[this.dashboardForm.selectedFrequencies];\r\n let monthDateName;\r\n if (this.dashboardForm.frequencyDate == \"1\") {\r\n monthDateName = '1st'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"2\") {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"3\") {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.dashboardForm.frequencyDate + 'th'\r\n }\r\n this.dashboardForm.frequencyMessage = monthDateName + ' of ' + stringVal;\r\n }\r\n break\r\n\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n //your code to update the model\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, QueryList, ContentChildren } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { nanoid } from 'nanoid';\r\n// import { CsOptionComponent } from '../cs-option/cs-option.component';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'cs-select',\r\n templateUrl: './cs-select.component.html',\r\n styleUrls: ['./cs-select.component.less'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CsSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CsSelectComponent implements OnInit {\r\n @Input() dropdownLabel!: string;\r\n @Input() dropdownSubLabel!: string;\r\n @Input() isRequired!: string;\r\n @Input() placeholder!: string;\r\n\r\n // @ContentChildren(CsOptionComponent) op !: QueryList<CsOptionComponent>;\r\n\r\n dropdownToggle!: boolean;\r\n positionReset!: boolean;\r\n getLeft!: number;\r\n getTop!: number;\r\n getWidth!: number;\r\n maxWidth!: number;\r\n\r\n valuePlaceholder!: string;\r\n private optionList!: ElementRef;\r\n\r\n @ViewChild('optionList') set content(content: ElementRef) {\r\n if (content) {\r\n // initially setter gets called with undefined\r\n this.optionList = content;\r\n }\r\n }\r\n name!: string;\r\n val!: string;\r\n showOptions!: boolean;\r\n constructor() {\r\n this.name = nanoid();\r\n this.valuePlaceholder = '';\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onChange: any = () => {};\r\n onTouch: any = () => {};\r\n\r\n set RadioVal(val: any) {\r\n if (val !== undefined && val !== null && this.val !== val) {\r\n this.val = val;\r\n console.log('VALUE', this.val);\r\n this.onChange(val);\r\n this.onTouch(val);\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.RadioVal = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n openDropdown(event: any): void {\r\n this.dropdownToggle = true;\r\n setTimeout(() => {\r\n const dropdown = event.target.getBoundingClientRect();\r\n const selectOption = this.optionList.nativeElement.offsetHeight;\r\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\r\n this.getTop = dropdown.top - selectOption;\r\n } else {\r\n this.getTop = dropdown.top + dropdown.height;\r\n }\r\n this.getLeft = dropdown.left;\r\n this.getWidth = dropdown.width;\r\n this.maxWidth = dropdown.width * 1.25;\r\n this.showOptions = true;\r\n }, 10);\r\n }\r\n closeDropdown(): void {\r\n this.dropdownToggle = false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsSelectService {\r\n color: any;\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CsSelectService } from '../../services/cs-select.service';\r\nimport { CsSelectComponent } from '../cs-select/cs-select.component';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'cs-option',\r\n templateUrl: './cs-option.component.html',\r\n styleUrls: ['./cs-option.component.less'],\r\n})\r\nexport class CsOptionComponent implements OnInit {\r\n @Input() value!: string;\r\n @ViewChild('options') option!: ElementRef;\r\n @Input() color!: any;\r\n constructor(public csSelect: CsSelectComponent, public colorSelector: CsSelectService) {\r\n this.value = '';\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n change(event: any): void {\r\n if (this.option) {\r\n setTimeout(() => {\r\n this.csSelect.valuePlaceholder = this.option.nativeElement.innerHTML;\r\n this.colorSelector.color = this.color;\r\n console.log(this.color);\r\n }, 1);\r\n }\r\n this.csSelect.writeValue(this.value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer:DomSanitizer){}\r\n transform(html: any) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CsSelectComponent } from './cs-select/cs-select.component';\r\nimport { CsOptionComponent } from './cs-option/cs-option.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\n\r\n@NgModule({\r\n declarations: [CsSelectComponent, CsOptionComponent, SafeHtmlPipe],\r\n imports: [FormsModule, CommonModule],\r\n exports: [CsSelectComponent, CsOptionComponent],\r\n})\r\nexport class SelectModule {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { CreateDashboardService } from '../services/create-dashboard.service';\r\nimport { PaginationService } from '../services/pagination.service';\r\nimport { UserListConfiguration } from './user-list.config';\r\n\r\n@Component({\r\n selector: 'app-user-list',\r\n templateUrl: './user-list.component.html',\r\n styleUrls: ['./user-list.component.less']\r\n})\r\nexport class UserListComponent implements OnInit {\r\n @Output() closeUserList = new EventEmitter();\r\n @Output() saveSelectedUsers = new EventEmitter();\r\n @Input() selectionType = '';\r\n @Input() listDetails: UserListConfiguration = {\r\n displayElementKey: '',\r\n elementIdKey: '',\r\n tooltipKey: '',\r\n selectedUsersList: [],\r\n nonRemovableUsersList: []\r\n };\r\n\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList: [],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: 'User selected',\r\n pluralText: 'Users selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n vLoader = false;\r\n\r\n @Input() totalPages = 1;\r\n @Input() limit = 1;\r\n @Input() totalList = 1;\r\n\r\n searchList = [];\r\n searchValue = '';\r\n searchFilter = '';\r\n selectedIds: any[] = [];\r\n selectedList: any[] = [];\r\n\r\n\r\n animation = true;\r\n constructor(\r\n private paginationService: PaginationService,\r\n private dashboardService: CreateDashboardService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n if (this.listDetails.selectedUsersList.length > 0) {\r\n this.selectedList = [...new Set(this.listDetails.selectedUsersList)];\r\n const selectedData = [...new Set(this.listDetails.selectedUsersList)];\r\n this.footerDetails.selectedData = selectedData;\r\n this.footerDetails.nonRemovableList = this.listDetails.nonRemovableUsersList;\r\n this.selectedIds = selectedData.map((ele: any) => {\r\n if (ele[this.listDetails.elementIdKey]) { return ele[this.listDetails.elementIdKey]; }\r\n });\r\n\r\n }\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: '',\r\n });\r\n this.footerDetails.displayElementKey = this.listDetails.displayElementKey;\r\n this.footerDetails.elementId = this.listDetails.elementIdKey;\r\n\r\n\r\n }\r\n\r\n cancelChanges() {\r\n\r\n }\r\n removeElement(event: any) {\r\n\r\n }\r\n submitChanges() {\r\n\r\n }\r\n selectAll(event: any) {\r\n if (event) {\r\n this.searchList.forEach(searchElement => {\r\n\r\n if (!this.selectedIds.includes(searchElement[this.listDetails.elementIdKey])) {\r\n this.selectedList.push(searchElement);\r\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n }\r\n });\r\n\r\n } else {\r\n this.searchList.forEach(searchElement => {\r\n if (!this.listDetails.nonRemovableUsersList.includes(searchElement[this.listDetails.elementIdKey])) {\r\n const index = this.selectedList.findIndex(ele => ele[this.listDetails.elementIdKey] ===\r\n searchElement[this.listDetails.elementIdKey]);\r\n this.selectedList.splice(index, 1);\r\n const filteredList = [...this.selectedList];\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n const idIndex = this.selectedIds.findIndex(ele => ele === searchElement[this.listDetails.elementIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Selects all admins and managers at once by making api call.\r\n * @param event consists boolean value to select of unselect.\r\n */\r\n selectAllUsers(event: any) {\r\n if (event) {\r\n this.vLoader = true;\r\n this.dashboardService.getAllUsers().subscribe((res: any) => {\r\n // this.selectedList = [...res];\r\n // const selectedData = [...res];\r\n // this.footerDetails.selectedData = this.selectedList;\r\n\r\n // this.selectedIds = selectedData.map((ele: any) => {\r\n // if (ele[this.listDetails.elementIdKey]) { return ele[this.listDetails.elementIdKey]; }\r\n // });\r\n if(res.length>1){\r\n res.forEach((searchElement:any) => {\r\n \r\n if (!this.selectedIds.includes(searchElement[this.listDetails.elementIdKey])) {\r\n this.selectedList.push(searchElement);\r\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n }\r\n });\r\n }\r\n this.vLoader = false;\r\n });\r\n\r\n } else {\r\n\r\n // this.selectedList = [];\r\n // this.selectedIds = [];\r\n // this.footerDetails.selectedData = [];\r\n\r\n // this.searchList.forEach(searchElement => {\r\n // if (!this.listDetails.nonRemovableUsersList.includes(searchElement[this.listDetails.elementIdKey])) {\r\n // this.selectedList.push(searchElement);\r\n // this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\r\n // this.footerDetails.selectedData = this.selectedList;\r\n // }\r\n // });\r\n\r\n const selectedData = [...new Set(this.selectedList)];\r\n const index = selectedData.findIndex(ele => ele[this.listDetails.elementIdKey] === this.listDetails.nonRemovableUsersList[0]);\r\n if (index != -1) {\r\n const owner = Object.assign(selectedData[index]);\r\n\r\n this.selectedList = [];\r\n this.selectedIds = [];\r\n this.footerDetails.selectedData = [];\r\n\r\n this.selectedList.push(owner);\r\n this.selectedIds.push(owner.member_id);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n } else {\r\n this.selectedList = [];\r\n this.selectedIds = [];\r\n this.footerDetails.selectedData = [];\r\n }\r\n }\r\n }\r\n\r\n/**\r\n * Selects checked item from the list.\r\n * In case of user's list calculates number of admins/manages to set visibility(either to all admins/ admins and managers)\r\n * @param data is the selected element\r\n */\r\nselectElement(data: any) {\r\n if (this.selectedIds.includes(data[this.listDetails.elementIdKey])) {\r\n if (!this.listDetails.nonRemovableUsersList.includes(data[this.listDetails.elementIdKey])) {\r\n const index = this.selectedList.findIndex(ele => ele[this.listDetails.elementIdKey] === data[this.listDetails.elementIdKey]);\r\n this.selectedList.splice(index, 1);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n const idIndex = this.selectedIds.findIndex(ele => ele === data[this.listDetails.elementIdKey]);\r\n\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n\r\n } else {\r\n this.selectedList.push(data);\r\n this.selectedIds.push(data[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n }\r\n}\r\n\r\n/**\r\n * It is used to set and search value incase of backend driven list to differentiate search list and original list\r\n */\r\nsetSearchValue() {\r\n this.paginationService.searchValue = this.searchValue;\r\n this.paginationFilter(true);\r\n\r\n}\r\n\r\n/**\r\n* it is used check select all condition incase of backend driven search\r\n*/\r\ncheckSelectAll() {\r\n if (this.searchList.length > 0) {\r\n const data: boolean = this.searchList.every(ele => this.selectedIds.includes(ele[this.listDetails.elementIdKey]));\r\n return data;\r\n } else {\r\n return false;\r\n\r\n }\r\n\r\n}\r\n/**\r\n * Filter list user's list based on pagination by making api call\r\n * @param event specifies a boolean value to call api\r\n */\r\npaginationFilter(event: any) {\r\n // this.paginationFilterEvent.emit(event);\r\n if (event) {\r\n this.vLoader = true;\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: '',\r\n q: (!this.paginationService.searchValue) ? '' : this.paginationService.searchValue,\r\n });\r\n\r\n }\r\n}\r\n/**\r\n * Gets user's list by making api call\r\n * @param url contains userlist filter details\r\n */\r\ngetUsersList(url: any) {\r\n this.vLoader = true;\r\n\r\n this.dashboardService.getOrganizationUsers(url ? url : '').subscribe(res => {\r\n // console.log(this.selectedList,this.selectedIds)\r\n // debugger\r\n this.searchList = res;\r\n this.vLoader = false;\r\n\r\n\r\n });\r\n\r\n}\r\n/**\r\n * on click on next button from the list, it emits the selected list of elements to parent component.\r\n */\r\nonSubmit() {\r\n const data = [...new Set(this.selectedList)];\r\n this.saveSelectedUsers.emit(data);\r\n this.paginationService.reset();\r\n}\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\n\r\n@Component({\r\n selector: 'app-responsibility-center',\r\n templateUrl: './responsibility-center.component.html',\r\n styleUrls: ['./responsibility-center.component.less']\r\n})\r\nexport class ResponsibilityCenterComponent implements OnInit, OnChanges {\r\n @Output() saveSelectedList = new EventEmitter();\r\n @Output() closeRcList = new EventEmitter();\r\n @Input() responsibilityCentersList = [];\r\n @Input() selectedResponsibilityCenters = [];\r\n @Input() rcIdKey = '';\r\n @Input() radioSelection = false;\r\n\r\n\r\n selectedIds: any[] = [];\r\n animation = false;\r\n search = '';\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'item_name',\r\n elementId: 'item_id',\r\n singularText: 'Responsibility Center selected',\r\n pluralText: 'Responsibility Centers selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n constructor() { }\r\n\r\n ngOnChanges(): void {\r\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\r\n this.selectedIds = this.selectedResponsibilityCenters.map((ele: any) => { if (ele[this.rcIdKey]) { return ele[this.rcIdKey]; } });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n }\r\n\r\n selectRc(rc: any, mode: any) {\r\n if (this.radioSelection) {\r\n if (mode) {\r\n this.selectedIds = [];\r\n this.selectedIds.push(rc);\r\n }\r\n this.setList();\r\n } else {\r\n if (mode) {\r\n this.selectedIds.push(rc);\r\n const rcElement = this.responsibilityCentersList.findIndex((ele: any) => ele.item_id == rc);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.responsibilityCentersList[rcElement];\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n if(!this.selectedIds.includes(childElement)){\r\n this.selectedIds.push(childElement);\r\n }\r\n });\r\n }\r\n }\r\n\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == rc);\r\n this.selectedIds.splice(index, 1);\r\n const rcElement = this.responsibilityCentersList.findIndex((ele: any) => ele.item_id == rc);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.responsibilityCentersList[rcElement];\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n const removeIndex = this.selectedIds.findIndex((removeElement: any) => removeElement == childElement);\r\n this.selectedIds.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n\r\n }\r\n this.setList();\r\n }\r\n\r\n\r\n }\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.rcIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any) {\r\n if (mode) {\r\n const list = [...this.responsibilityCentersList];\r\n this.selectedIds = [];\r\n list.forEach(element => {\r\n this.selectedIds.push(element[this.rcIdKey]);\r\n });\r\n } else {\r\n this.selectedIds = [];\r\n }\r\n this.setList();\r\n }\r\n\r\n\r\n setList() {\r\n const data: any = [];\r\n const rcList = [...new Set(this.responsibilityCentersList)]\r\n // cloneDeep(this.responsibilityCentersList);\r\n const selectedIds = [...new Set(this.selectedIds)]\r\n // cloneDeep(this.selectedIds);\r\n rcList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.rcIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedResponsibilityCenters = data;\r\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\r\n }\r\n\r\n checkSelectAll() {\r\n const data = this.responsibilityCentersList.every((rc: any) => this.selectedIds.includes(rc[this.rcIdKey]));\r\n return data;\r\n }\r\n\r\n save() {\r\n this.saveSelectedList.emit(this.selectedIds);\r\n }\r\n\r\n closeResponsibilityCenterList() {\r\n this.closeRcList.emit();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { CategoriesConfig } from './categories-config';\r\n\r\n@Component({\r\n selector: 'app-categories',\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.less']\r\n})\r\nexport class CategoriesComponent implements OnInit {\r\n\r\n\r\n @Input() categoryList: CategoriesConfig = {\r\n regulations: {\r\n list: [],\r\n selectedList: []\r\n },\r\n standards: {\r\n list: [],\r\n selectedList: []\r\n },\r\n internalControls: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n }\r\n };\r\n @Input() allCategories: any[] = [];\r\n\r\n @Input() categoryIdKey: any;\r\n @Input() selectedCategories: any[] = [];\r\n\r\n search = '';\r\n activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\"=\"regulations\";\r\n selectedIds: any[] = [];\r\n animation = false;\r\n blockWidth: any;\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'item_name',\r\n elementId: 'item_id',\r\n singularText: 'Responsibility Category selected',\r\n pluralText: 'Responsibility Categories selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n\r\n @Output() saveSelectedCategory = new EventEmitter();\r\n @Output() closeList = new EventEmitter();\r\n @Output() closeCategoriesList = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.selectedIds = [];\r\n if (this.selectedCategories) {\r\n this.selectedCategories.forEach(element => {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n });\r\n }\r\n this.setList()\r\n\r\n\r\n }\r\n\r\n selectCategory(mode: any, activeTab: any, category: any) {\r\n if (mode) {\r\n this.selectedIds.push(category[this.categoryIdKey]);\r\n const rcElement = this.allCategories.findIndex((ele: any) => ele.category_id == category[this.categoryIdKey]);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.allCategories[rcElement];\r\n if (parentRc?.child_cat_ids?.length > 0) {\r\n parentRc.child_cat_ids.forEach((childElement: any) => {\r\n if(!this.selectedIds.includes(childElement)){\r\n this.selectedIds.push(childElement);\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == category[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n const rcElement = this.allCategories.findIndex((ele: any) => ele.category_id == category[this.categoryIdKey]);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.allCategories[rcElement];\r\n if (parentRc?.child_cat_ids?.length > 0) {\r\n parentRc.child_cat_ids.forEach((childElement: any) => {\r\n const removeIndex = this.selectedIds.findIndex((removeElement: any) => removeElement == childElement);\r\n this.selectedIds.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n }\r\n this.setList();\r\n\r\n }\r\n\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any, activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\") {\r\n\r\n if (mode) {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n }\r\n }); \r\n } else {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\r\n let idIndex = this.selectedIds.findIndex((id: any) => id == element[this.categoryIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n }\r\n this.setList();\r\n }\r\n\r\n setList() {\r\n const data: any = [];\r\n const categoryList = [...new Set(this.allCategories)] \r\n // cloneDeep(this.allCategories)\r\n const selectedIds =[...new Set(this.selectedIds)] \r\n // cloneDeep(this.selectedIds);\r\n this.categoryList.regulations.selectedList = [];\r\n this.categoryList.standards.selectedList = [];\r\n this.categoryList.internalControls.selectedList = [];\r\n this.categoryList.others.selectedList = [];\r\n\r\n categoryList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.categoryIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedCategories = data;\r\n this.footerDetails.selectedData = data;\r\n\r\n this.categoryList.regulations.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.regulations.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.standards.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.standards.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.internalControls.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.internalControls.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.others.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.others.selectedList.push(category)\r\n }\r\n });\r\n if (!this.activeTab) {\r\n this.setActiveTab();\r\n }\r\n }\r\n setActiveTab() {\r\n if (this.categoryList.regulations.selectedList.length > 0) {\r\n this.activeTab = 'regulations'\r\n } else if (this.categoryList.standards.selectedList.length > 0) {\r\n this.activeTab = 'standards'\r\n } else if (this.categoryList.internalControls.selectedList.length > 0) {\r\n this.activeTab = 'internalControls'\r\n } else if (this.categoryList.others.selectedList.length > 0) {\r\n this.activeTab = 'others'\r\n } else {\r\n this.activeTab = 'regulations'\r\n }\r\n }\r\n\r\n\r\n checkSelectAll(activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\") {\r\n const data = this.categoryList[activeTab].list.every((user: any) => this.selectedIds.includes(user[this.categoryIdKey]));\r\n return data;\r\n }\r\n\r\n save() {\r\n this.saveSelectedCategory.emit(this.selectedCategories);\r\n }\r\n\r\n close() {\r\n this.closeCategoriesList.emit();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-frequency',\r\n templateUrl: './frequency.component.html',\r\n styleUrls: ['./frequency.component.less']\r\n})\r\nexport class FrequencyComponent implements OnInit,OnChanges {\r\n @Input() savedFrequencyTab: string | undefined;\r\n monthlyDate = 1;\r\n quarterlyDate = 1;\r\n @Input() savedFrequencies: any;\r\n @Input() selectedDate: any;\r\n frequencyTab = 'weekly';\r\n showFrequency = true;\r\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\r\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\r\n selectedDays: any[] = [0];\r\n selectedMonths: any[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n selectedQuarter = 0;\r\n @Output() closeFrequencyPopup = new EventEmitter<string>();\r\n @Output() saveFrequency = new EventEmitter<any>();\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: '',\r\n pluralText: '',\r\n showFrequency: true,\r\n frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',\r\n isDisabled: false\r\n\r\n };\r\n showRadio = true;\r\n constructor(private snackBar:SnackBarService) { }\r\n ngOnChanges(){\r\n this.savedFrequencies = [...new Set(this.savedFrequencies)]\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.savedFrequencyTab) {\r\n this.changeTab(this.savedFrequencyTab);\r\n }\r\n if (this.selectedDate) {\r\n switch (this.savedFrequencyTab) {\r\n case 'weekly':\r\n this.selectedDays = [...new Set(this.savedFrequencies)]\r\n break;\r\n case 'monthly':\r\n this.monthlyDate = this.selectedDate;\r\n this.selectedMonths = [...new Set(this.savedFrequencies)]\r\n\r\n break;\r\n case 'quarterly':\r\n this.showRadio = false;\r\n setTimeout(() => {\r\n this.showRadio = true\r\n }, 100);\r\n this.quarterlyDate = this.selectedDate\r\n this.selectedQuarter = this.savedFrequencies;\r\n\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n closeFrequency() {\r\n this.closeFrequencyPopup.emit();\r\n }\r\n daySelectionChange(event: any, index: any) {\r\n if (event) { //checkbox was selected\r\n this.selectedDays.push(index);\r\n } else {\r\n let unselectedElementIndex = this.selectedDays.indexOf(index);\r\n this.selectedDays.splice(unselectedElementIndex, 1);\r\n }\r\n this.checkFrequencyValidity();\r\n }\r\n monthSelectionChange(event: any, index: any) {\r\n if (event) {\r\n this.selectedMonths.push(index);\r\n } else {\r\n let unselectedElementIndex = this.selectedMonths.indexOf(index);\r\n this.selectedMonths.splice(unselectedElementIndex, 1);\r\n }\r\n this.checkDateValidity(this.monthlyDate,'monthly')\r\n this.checkFrequencyValidity();\r\n }\r\n\r\n quarterSelectionChange(event: any, index: any) {\r\n this.selectedQuarter = index;\r\n this.checkDateValidity(this.quarterlyDate,'quarterly');\r\n this.checkFrequencyValidity();\r\n }\r\n\r\n changeTab(tabValue: string) {\r\n this.frequencyTab = tabValue;\r\n this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';\r\n this.footerDetails.isDisabled = false;\r\n this.setToDefaultValues()\r\n if (this.frequencyTab === this.savedFrequencyTab) {\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n this.selectedDays = [...this.savedFrequencies];\r\n this.monthlyDate = 1;\r\n this.quarterlyDate = 1;\r\n break;\r\n }\r\n case 'monthly': {\r\n this.selectedMonths = [...this.savedFrequencies];\r\n this.monthlyDate = this.selectedDate;\r\n this.quarterlyDate = 1;\r\n this.checkDateValidity(this.monthlyDate,'monthly')\r\n break;\r\n }\r\n case 'quarterly': {\r\n this.selectedQuarter = this.savedFrequencies;\r\n this.quarterlyDate = this.selectedDate;\r\n this.monthlyDate = 1;\r\n this.checkDateValidity(this.quarterlyDate,'quarterly')\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setToDefaultValues() {\r\n this.selectedDays = [0];\r\n this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n this.selectedQuarter = 0;\r\n }\r\n\r\n submitFrequency() {\r\n let stringVal = \"Every \";\r\n let frequencies;\r\n let selectedDate = 1;\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n if (this.selectedDays.length > 0) {\r\n this.selectedDays.sort();\r\n frequencies = this.selectedDays;\r\n this.selectedDays.forEach((dayIndex, index) => {\r\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\r\n })\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n case 'monthly': {\r\n stringVal = \" of every \";\r\n if (this.selectedMonths.length > 0) {\r\n frequencies = this.selectedMonths;\r\n this.monthNames.forEach((monthNames: string, monthIndex: number) => {\r\n if (this.selectedMonths.includes(monthIndex)) {\r\n stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;\r\n\r\n }\r\n })\r\n let monthDateName;\r\n if (this.monthlyDate == 1) {\r\n monthDateName = '1st'\r\n }\r\n else if (this.monthlyDate == 2) {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.monthlyDate == 3) {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.monthlyDate + 'th'\r\n }\r\n stringVal = monthDateName + stringVal;\r\n selectedDate = this.monthlyDate;\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n case 'quarterly': {\r\n stringVal = \" of every \";\r\n\r\n if (this.selectedQuarter >= 0) {\r\n frequencies = this.selectedQuarter;\r\n stringVal += this.quarters[this.selectedQuarter];\r\n selectedDate = this.quarterlyDate;\r\n let monthDateName;\r\n if (this.quarterlyDate == 1) {\r\n monthDateName = '1st'\r\n }\r\n else if (this.quarterlyDate == 2) {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.quarterlyDate == 3) {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.quarterlyDate + 'th'\r\n }\r\n stringVal = monthDateName + stringVal;\r\n selectedDate = this.quarterlyDate;\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n }\r\n this.saveFrequency.emit({\r\n frequencyString: stringVal,\r\n frequencyType: this.frequencyTab,\r\n frequencies: frequencies,\r\n selectedDate\r\n })\r\n }\r\n \r\n checkDateValidity(date:number, type:string){\r\n if(date>31 || date<1){\r\n this.snackBar.show('Select valid date.');\r\n this.footerDetails.isDisabled = true;\r\n return\r\n }else{\r\n this.footerDetails.isDisabled = false;\r\n }\r\n const monthList=[{name:'January',maxDays:31,value:0},{name:'February',maxDays:28,value:1},{name:'March',maxDays:31,value:2},\r\n {name:'April',maxDays:30,value:3},{name:'May',maxDays:31,value:4},{name:'June',maxDays:30,value:5},\r\n {name:'July',maxDays:31,value:6},{name:'August',maxDays:31,value:7},{name:'September',maxDays:30,value:8},\r\n {name:'October',maxDays:31,value:9},{name:'November',maxDays:30,value:10},{name:'December',maxDays:31,value:11}]\r\n switch (type) {\r\n case 'monthly':\r\n if(this.selectedMonths.length==1){\r\n const index = monthList.findIndex((ele:any)=>ele.value==this.selectedMonths[0]);\r\n if(date<=monthList[index].maxDays){\r\n this.footerDetails.isDisabled = false;\r\n \r\n }else{\r\n this.snackBar.show('Select valid date.');\r\n this.footerDetails.isDisabled = true; \r\n }\r\n }else if(this.selectedMonths.length==0){\r\n this.footerDetails.isDisabled = true; \r\n }else{\r\n this.footerDetails.isDisabled = false;\r\n }\r\n\r\n break;\r\n default:\r\n this.footerDetails.isDisabled = false;\r\n return true;\r\n break;\r\n\r\n }\r\n\r\n}\r\n\r\ncheckFrequencyValidity(){\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n if (this.selectedDays.length > 0) {\r\n this.footerDetails.isDisabled = false;\r\n\r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n case 'monthly': {\r\n \r\n if (this.selectedMonths.length > 0) {\r\n this.footerDetails.isDisabled = false;\r\n \r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n case 'quarterly': {\r\n\r\n if (this.selectedQuarter >= 0){\r\n this.footerDetails.isDisabled = false;\r\n \r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n } \r\n}\r\n\r\n}\r\n","import { Component, OnInit, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { PaginationService } from '../../create-dashboard-container/services/pagination.service';\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.less']\r\n})\r\n/**\r\n * Adds place holder for Pagination on the lists\r\n */\r\nexport class PaginationComponent implements OnInit, OnChanges {\r\n start = 1;\r\n totalCount!: number;\r\n paginationArray: any[] = [];\r\n currentPage!: number;\r\n @Input() totalPages = 1;\r\n @Input() limit = 1;\r\n @Input() totalList = 1;\r\n @Output() paginationFilter = new EventEmitter();\r\n\r\n constructor(private paginationService: PaginationService) {\r\n }\r\n ngOnChanges() {\r\n this.currentPage = Number(this.paginationService.currentPage);\r\n this.start = Number(this.paginationService.currentPage);\r\n this.rebuildPagination(this.currentPage, this.totalPages);\r\n }\r\n\r\n ngOnInit() {\r\n this.currentPage = Number(this.paginationService.currentPage);\r\n this.start = Number(this.paginationService.currentPage);\r\n this.rebuildPagination(this.currentPage, this.totalPages);\r\n this.paginationService.currentValues.subscribe(event => {\r\n if (event && (this.paginationService.currentPage !== this.currentPage)) {\r\n this.currentPage = this.paginationService.currentPage;\r\n }\r\n });\r\n }\r\n\r\n /* In this function we will recreate the pagination structure as per current page and\r\n total number of pages */\r\n\r\n rebuildPagination(currentPage: number, totalCount: number) {\r\n this.paginationArray = [];\r\n this.totalCount = totalCount;\r\n this.currentPage = currentPage;\r\n if (this.paginationService.currentPage !== this.currentPage) {\r\n this.paginationService.currentPage = this.currentPage;\r\n this.paginationFilter.emit(true);\r\n }\r\n\r\n // If there are only 6 pages or less in total, just display all pages without \"...\"\r\n if (totalCount <= 6) {\r\n for (let i = 1; i <= totalCount; i++) {\r\n this.paginationArray.push(i);\r\n }\r\n }\r\n // ELSE display with ...\r\n else {\r\n\r\n // Always print first page button\r\n this.paginationArray.push(1);\r\n\r\n // Print \"...\" if currentPage is > 3\r\n if (currentPage > 3) {\r\n // this.paginationArray.push(2);\r\n this.paginationArray.push('...');\r\n\r\n }\r\n // special case where last page is selected...\r\n // Without this special case, only 2 buttons would be shown after ... if you were on last page\r\n if (currentPage === totalCount) {\r\n this.paginationArray.push(currentPage - 2);\r\n }\r\n\r\n // Print previous number button if currentPage > 2\r\n if (currentPage > 2) {\r\n this.paginationArray.push(currentPage - 1);\r\n }\r\n\r\n // Print current page number button as long as it not the first or last page\r\n if (currentPage !== 1 && currentPage !== totalCount) {\r\n this.paginationArray.push(currentPage);\r\n\r\n }\r\n\r\n // print next page number button if currentPage < lastPage - 1\r\n if (currentPage < totalCount - 1) {\r\n this.paginationArray.push(currentPage + 1);\r\n\r\n }\r\n\r\n // special case where first page is selected...\r\n // Without this special case, only 2 buttons would be shown before ... if you were on first page\r\n if (currentPage === 1) {\r\n this.paginationArray.push(currentPage + 2);\r\n\r\n }\r\n\r\n // print \"...\" if currentPage is < lastPage -2\r\n if (currentPage < totalCount - 2) {\r\n this.paginationArray.push('...');\r\n\r\n // HTML += \"...\";\r\n }\r\n\r\n // Always print last page button if there is more than 1 page\r\n if (totalCount > 1) {\r\n this.paginationArray.push(totalCount);\r\n\r\n }\r\n }\r\n\r\n }\r\n/* In this function we will set current page according to the action performed on browser\r\n ex: prev next buttons clicks or selecting a particular page */\r\n\r\n changePage(prev: string, page: number, next: string) {\r\n if (prev) {\r\n if (this.start > 1) {\r\n this.start--;\r\n // We have changed the start page, total rebuild the pagination\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n if (next) {\r\n if (this.start < this.totalCount) {\r\n this.start++;\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n if (page) {\r\n this.start = page;\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n declarations: [PaginationComponent],\r\n imports: [CommonModule],\r\n exports: [PaginationComponent],\r\n})\r\nexport class PaginationModule {}","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-checkbox',\r\n templateUrl: './cs-checkbox.component.html',\r\n styleUrls: ['./cs-checkbox.component.less'],\r\n})\r\nexport class CsCheckboxComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() ngValue: any;\r\n @Input() value: any;\r\n @Output() ngValueChange = new EventEmitter<any>();\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n valueChanged() {\r\n this.ngValueChange.emit(this.ngValue);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-radio',\r\n templateUrl: './cs-radio.component.html',\r\n styleUrls: ['./cs-radio.component.less'],\r\n})\r\nexport class CsRadioComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() readonly!: boolean;\r\n @Input() name!: string;\r\n @Input() checked!: boolean;\r\n @Input() value: any;\r\n @Output() checkedEvent = new EventEmitter();\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n changeState(evt: any) {\r\n this.checkedEvent.emit(evt);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-switch',\r\n templateUrl: './cs-switch.component.html',\r\n styleUrls: ['./cs-switch.component.less'],\r\n})\r\nexport class CsSwitchComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() ngValue: any;\r\n @Input() value: any;\r\n @Output() ngValueChange = new EventEmitter<any>();\r\n @Input() tooltipMessage: any;\r\n @Input() position: any;\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // console.log(this.value);\r\n }\r\n valueChanged() {\r\n this.ngValueChange.emit(this.ngValue);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-radio-group',\r\n templateUrl: './cs-radio-group.component.html',\r\n styleUrls: ['./cs-radio-group.component.less'],\r\n})\r\nexport class CsRadioGroupComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-select',\r\n templateUrl: './cs-select.component.html',\r\n styleUrls: ['./cs-select.component.less'],\r\n})\r\nexport class CsSelectComponent implements OnChanges {\r\n @Input() dataList!: any[];\r\n @Input() dropdownLabel!: string;\r\n @Input() displayProperty!: string;\r\n @Input() selectedValue!: string;\r\n @Input() isRequired!: boolean;\r\n @Input() dropdownSubLabel!: string;\r\n @Input() disabled!: boolean;\r\n @ViewChild('option') option!: ElementRef;\r\n\r\n @Output() selectedData = new EventEmitter();\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Input() placeholder: any;\r\n @Input() stylex: any;\r\n @Input() valueKey: any;\r\n @Input() multipleSelect: any;\r\n @Input() colorProperty!: string;\r\n\r\n @Input() colorSelected!: string;\r\n colorCode!: string;\r\n\r\n dropdownOption = false;\r\n positionReset!: boolean;\r\n getLeft!: number;\r\n getTop!: number;\r\n getWidth!: number;\r\n maxWidth!: number;\r\n activeDoropdown = false;\r\n\r\n private optionList!: ElementRef;\r\n\r\n @ViewChild('optionList') set content(content: ElementRef) {\r\n if (content) {\r\n // initially setter gets called with undefined\r\n this.optionList = content;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedValue) {\r\n this.selectedValue = this.selectedValue || '--';\r\n }\r\n }\r\n\r\n openDropdown(event: any): void {\r\n this.dropdownOption = true;\r\n setTimeout(() => {\r\n const dropdown = event.target.getBoundingClientRect();\r\n const selectOption = this.optionList.nativeElement.offsetHeight;\r\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\r\n this.getTop = dropdown.top - selectOption;\r\n } else {\r\n this.getTop = dropdown.top + dropdown.height;\r\n }\r\n this.getLeft = dropdown.left;\r\n this.getWidth = dropdown.width;\r\n this.maxWidth = dropdown.width * 1.25;\r\n }, 10);\r\n setTimeout(() => {\r\n this.activeDoropdown = true;\r\n }, 100);\r\n }\r\n selectOption(selectedData: any) {\r\n if (typeof selectedData === 'object') {\r\n this.selectedValue = selectedData[this.displayProperty];\r\n this.colorSelected = selectedData[this.colorProperty];\r\n } else {\r\n this.selectedValue = selectedData;\r\n }\r\n this.selectedData.emit(selectedData);\r\n this.dropdownOption = false;\r\n }\r\n closeDropdown() {\r\n this.dropdownOption = false;\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[arTooltip]',\r\n})\r\nexport class ToolTipDirective implements OnInit {\r\n @Input('arTooltip') tooltipTitle!: string;\r\n @Input() placement!: string;\r\n @Input() type: any;\r\n @Input() tooltipMandatory!: boolean;\r\n @Input() showTooltip = true;\r\n @Input() animate!: boolean;\r\n tooltip!: HTMLElement;\r\n offset = 8;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n ngOnInit() {}\r\n @HostListener('mouseenter') onMouseEnter() {\r\n this.hide();\r\n this.show();\r\n }\r\n @HostListener('mouseover') onMouseOver() {\r\n this.hide();\r\n this.show();\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n this.hide();\r\n }\r\n @HostListener('mouseout') onMouseOut() {\r\n this.hide();\r\n }\r\n @HostListener('click') onClick() {\r\n this.hide();\r\n }\r\n show() {\r\n if (!this.showTooltip) {\r\n return;\r\n }\r\n this.create();\r\n const element = this.el.nativeElement;\r\n if (this.tooltipMandatory === true) {\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n } else {\r\n if (element.scrollWidth * element.scrollHeight > element.offsetWidth * element.offsetHeight) {\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n }\r\n }\r\n }\r\n\r\n hide() {\r\n if (document.body.contains(this.tooltip)) {\r\n if (this.renderer) {\r\n this.renderer.removeChild(document.body, document.getElementById('tooltip'));\r\n }\r\n }\r\n }\r\n\r\n create() {\r\n this.tooltip = this.renderer.createElement('span');\r\n this.tooltip.setAttribute('id', 'tooltip');\r\n this.tooltip.innerHTML = this.tooltipTitle;\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\r\n this.renderer.addClass(this.tooltip, `${this.type}`);\r\n if (this.animate) {\r\n this.renderer.addClass(this.tooltip, `animate-${this.placement}`);\r\n }\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n let top;\r\n let left;\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n if (hostPos.top + tooltipPos.height > h) {\r\n top = hostPos.top - tooltipPos.height;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom`);\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-top`);\r\n } else {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n if (this.placement === 'bottom-right') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left - (tooltipPos.width - 28);\r\n }\r\n if (this.placement === 'bottom-left') {\r\n if (hostPos.top + tooltipPos.height > h - 30) {\r\n top = hostPos.top - tooltipPos.height;\r\n console.log('bottom left', hostPos.top - tooltipPos.height);\r\n left = hostPos.left;\r\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom-left`);\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-top-left`);\r\n } else {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left;\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolTipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [ToolTipDirective],\r\n imports: [CommonModule],\r\n exports: [ToolTipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pascal',\r\n})\r\nexport class PascalPipe implements PipeTransform {\r\n transform(value: string, ...args: unknown[]): unknown {\r\n if (typeof value !== 'string') {\r\n return value;\r\n }\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'searchMultiSelect',\r\n})\r\nexport class SearchMultiSelectPipe implements PipeTransform {\r\n transform(value: any[], key: string, searchKey: string): any[] {\r\n if (searchKey && searchKey.length > 0) {\r\n searchKey = searchKey.toLowerCase();\r\n return value.filter((item) => {\r\n if (item[key].toLowerCase().includes(searchKey)) {\r\n return item;\r\n }\r\n });\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\r\n\r\n @HostListener('document:click', ['$event.target']) onMouseEnter(targetElement: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit(null);\r\n }\r\n }\r\n}\r\n","import { FormsModule } from '@angular/forms';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CsCheckboxComponent } from './cs-checkbox/cs-checkbox.component';\r\nimport { CsRadioComponent } from './cs-radio/cs-radio.component';\r\nimport { CsSwitchComponent } from './cs-switch/cs-switch.component';\r\nimport { CsRadioGroupComponent } from './cs-radio-group/cs-radio-group.component';\r\nimport { CsSelectComponent } from './cs-select/cs-select.component';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { PascalPipe } from './pipes/pascal.pipe';\r\nimport { SearchMultiSelectPipe } from './pipes/searchMultiSelect.pipe';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CsCheckboxComponent,\r\n CsRadioComponent,\r\n CsSwitchComponent,\r\n CsRadioGroupComponent,\r\n CsSelectComponent,\r\n PascalPipe,\r\n SearchMultiSelectPipe,\r\n ClickOutsideDirective,\r\n ],\r\n imports: [CommonModule, FormsModule, TooltipModule],\r\n exports: [\r\n CsCheckboxComponent,\r\n CsRadioComponent,\r\n CsSwitchComponent,\r\n CsRadioGroupComponent,\r\n CsSelectComponent,\r\n SearchMultiSelectPipe,\r\n ],\r\n})\r\nexport class FormgroupModule {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../dashboard-footer-config';\r\n\r\n@Component({\r\n selector: 'app-dashboard-footer',\r\n templateUrl: './dashboard-footer.component.html',\r\n styleUrls: ['./dashboard-footer.component.less']\r\n})\r\nexport class DashboardFooterComponent implements OnInit {\r\n @Output() cancelEvent = new EventEmitter();\r\n @Output() submitEvent = new EventEmitter();\r\n @Output() deleteEvent = new EventEmitter();\r\n @Input() footerDetails:DashboardFooterConfig={\r\n selectedData : [],\r\n nonRemovableList:[],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: '',\r\n pluralText:'',\r\n showFrequency:false,\r\n frequencyText:'',\r\n isDisabled :false\r\n\r\n };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n cancelFloatingBar() {\r\n this.cancelEvent.emit();\r\n }\r\n submitFloatingBar() {\r\n this.submitEvent.emit(this.footerDetails.selectedData);\r\n }\r\n\r\n deleteSelected(element: any) {\r\n this.deleteEvent.emit(element);\r\n }\r\n\r\n\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@Component({\r\n selector: 'app-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.less'],\r\n})\r\nexport class PopoverComponent implements OnInit {\r\n @Input() dontCloseonClick = false;\r\n popoverContainer = false;\r\n @ViewChild('popoverRatio') popoverRatio!: ElementRef;\r\n @ViewChild('popoverContent') popoverContent!: ElementRef;\r\n @Output() closedOnOverlay = new EventEmitter();\r\n constructor(public popoverService: PopoverService) {}\r\n showPopover = false;\r\n leftValue: any;\r\n topValue: any;\r\n popoverHeight: any;\r\n popoverWidth: any;\r\n positionX!: number;\r\n positionY!: number;\r\n ngOnInit(): void {}\r\n popover() {\r\n this.popoverContainer = false;\r\n this.popoverContainer = true;\r\n setTimeout(() => {\r\n this.getPosition();\r\n this.showPopover = true;\r\n this.popoverService.stopScroll = true;\r\n // document.body.style.overflow = 'hidden';\r\n }, 10);\r\n return false;\r\n }\r\n popoverEvent() {\r\n this.popoverContainer = false;\r\n this.popoverContainer = true;\r\n setTimeout(() => {\r\n // this.getPosition();\r\n this.positionX = this.popoverService.positionX;\r\n this.positionY = this.popoverService.positionY;\r\n this.showPopover = true;\r\n this.popoverService.stopScroll = true;\r\n\r\n }, 10);\r\n return false;\r\n }\r\n closePopover(top?: string) {\r\n if (!this.dontCloseonClick || top === 'top') {\r\n this.popoverContainer = false;\r\n this.showPopover = false;\r\n this.popoverService.stopScroll = false;\r\n // document.body.style.overflow = 'auto';\r\n }\r\n }\r\n\r\n close(){\r\n this.popoverContainer = false;\r\n this.showPopover = false;\r\n this.popoverService.stopScroll = false;\r\n }\r\n\r\n clickedPopover() {\r\n this.getPosition();\r\n }\r\n getPosition() {\r\n // setTimeout(() => {\r\n const elementPositionn = this.popoverService.elementPosition;\r\n this.popoverHeight = this.popoverRatio.nativeElement.offsetHeight;\r\n this.popoverWidth = this.popoverRatio.nativeElement.offsetWidth;\r\n if (this.popoverService.elementDirection === 'left') {\r\n this.leftValue = elementPositionn.left;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'right') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverWidth;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'top') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'bottom') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'self-position') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - 15;\r\n }\r\n if (this.popoverService.elementDirection === 'top-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n // this.topValue = elementPositionn.top - this.popoverHeight;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight) {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n this.positionX = this.leftValue;\r\n this.positionY = this.topValue;\r\n // }, 10);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@Directive({\r\n selector: '[appPopover]',\r\n})\r\nexport class PopoverDirective {\r\n dynamicComponent: any;\r\n @Input() refrence: any;\r\n @Input() placement!: string;\r\n leftValue: any;\r\n topValue: any;\r\n constructor(private elRef: ElementRef, private popoverService: PopoverService) {}\r\n @HostListener('click') click() {\r\n this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n this.popoverService.elementDirection = this.placement;\r\n // this.getPosition();\r\n }\r\n\r\n getPosition() {\r\n setTimeout(() => {\r\n // this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n const elementPositionn = this.elRef.nativeElement.getBoundingClientRect();\r\n if (this.placement === 'left') {\r\n this.leftValue = elementPositionn.left;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'right') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverService.popoverWidth;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'top') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n }\r\n }\r\n if (this.placement === 'bottom') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'self-position') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - 15;\r\n }\r\n if (this.placement === 'top-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n }\r\n if (this.placement === 'bottom-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top + this.popoverService.popoverHeight;\r\n }\r\n this.popoverService.positionX = this.leftValue;\r\n this.popoverService.positionY = this.topValue;\r\n }, 10);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PopoverComponent } from './popover.component';\r\nimport { PopoverDirective } from './popover.directive';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@NgModule({\r\n declarations: [PopoverComponent, PopoverDirective],\r\n imports: [CommonModule],\r\n exports: [PopoverComponent, PopoverDirective],\r\n providers: [PopoverService],\r\n})\r\nexport class PopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DashboardFooterComponent } from './dashboard-footer/dashboard-footer.component';\r\nimport { PopoverModule } from '../popover/popover.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DashboardFooterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n PopoverModule\r\n ],\r\n exports:[\r\n DashboardFooterComponent\r\n ]\r\n})\r\nexport class DashboardFooterModule { }\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close() {\r\n this.onDialogClose.next();\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n entryComponents: [DialogComponent],\r\n providers: [DialogRef],\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\r\nimport { DialogService } from '../../ui-kit/dialog/dialog.service';\r\nimport { EditorConfig } from 'vcomply-editor';\r\n// import { ConfigureWidgetsComponent } from '../../configure-widgets/configure-widgets/configure-widgets.component';\r\n\r\n@Component({\r\n selector: 'app-form-group',\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.less']\r\n})\r\nexport class FormGroupComponent implements OnInit {\r\n @Output() openCategoryList = new EventEmitter<string>();\r\n @Output() openResponsibilityCenterList = new EventEmitter<string>();\r\n @Output() openWhoCanViewThis = new EventEmitter<string>();\r\n @Output() closeCreateDashboard = new EventEmitter<string>();\r\n @Output() openFrequency = new EventEmitter<string>();\r\n @Input() disabled!: boolean;\r\n\r\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\r\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\r\n datePickerOverlay = false;\r\n selectedFromDate!: any;\r\n selectedToDate!: any;\r\n dashboardName!: any;\r\n dashboardDescriptionText!: any;\r\n fieldEmptyErrorMessage: string = 'Enter a value for this input box.';\r\n fieldLimitExceededErrorMessage: string = 'You have exceeded the maximum character limit of XYZ characters.';\r\n dashboardNameNotUniqueErrorMessage: string = 'A dashboard with this name already exists. Specify a different name for the dashboard.';\r\n dashboardNameError! : string;\r\n dashboardDescriptionError! : string;\r\n displayCriteria! : string;\r\n\r\n constructor(private dialog: DialogService) { }\r\n \r\n dashboardDescription: EditorConfig = {\r\n placeholder: 'Description (Max limit: 250 characters)',\r\n mode: 'prime',\r\n id: 'description'\r\n }\r\n\r\n fromDatePickerConfig : IDatePickerConfig = {\r\n min: this.getCurrentDate()\r\n }\r\n\r\n toDatePickerConfig : IDatePickerConfig = {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n openFromDatePicker() {\r\n this.fromDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n openToDatePicker() {\r\n this.toDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n closeFromDatePicker() {\r\n let minToDate = this.selectedFromDate.clone().add(1, 'days');\r\n this.toDatePickerConfig = {min : minToDate, minTime : minToDate};\r\n\r\n if(this.selectedToDate && minToDate.diff(this.selectedToDate) > 0) {\r\n this.selectedToDate = undefined;\r\n }\r\n\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n closeToDatePicker() {\r\n this.toDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n animateImage() {\r\n const circleImage = document.getElementsByClassName('image')\r\n console.log(circleImage);\r\n }\r\n\r\n selectWhoCanViewThis() {\r\n this.openWhoCanViewThis.emit();\r\n }\r\n\r\n selectResponsibilityCenter() {\r\n this.openResponsibilityCenterList.emit();\r\n }\r\n\r\n selectCategories() {\r\n this.openCategoryList.emit();\r\n }\r\n\r\n selectFrequency() {\r\n this.openFrequency.emit();\r\n }\r\n\r\n configureDashboard() {\r\n let fieldsStatus = this.verifyFields();\r\n // if(fieldsStatus) {\r\n // this.closeCreateDashboard.emit();\r\n // const ref = this.dialog.open(ConfigureWidgetsComponent, {\r\n // data: {},\r\n // position: 'CENTER',\r\n // pointer: 'none'\r\n // });\r\n // }\r\n }\r\n\r\n verifyFields() {\r\n let allFieldsValid = true;\r\n this.dashboardNameError = '';\r\n this.dashboardDescriptionError = '';\r\n \r\n if(this.dashboardName === null || this.dashboardName === undefined || this.dashboardName === '') {\r\n this.dashboardNameError = this.fieldEmptyErrorMessage;\r\n allFieldsValid = false;\r\n } else if(this.dashboardName.length > 30) {\r\n this.dashboardNameError = this.fieldLimitExceededErrorMessage.replace('XYZ', '30');\r\n allFieldsValid = false;\r\n } else if(this.dashboardDescriptionText === null || this.dashboardDescriptionText === undefined || this.dashboardDescriptionText === '') {\r\n this.dashboardDescriptionError = this.fieldEmptyErrorMessage;\r\n allFieldsValid = false;\r\n } else if(this.dashboardDescriptionText.length > 250) {\r\n this.dashboardDescriptionError = this.fieldLimitExceededErrorMessage.replace('XYZ', '250');\r\n allFieldsValid = false;\r\n }\r\n return allFieldsValid;\r\n }\r\n\r\n getCurrentDate(){\r\n let today = new Date();\r\n return today.getDate() + '-' + (today.getMonth()+1) + '-' + today.getFullYear();\r\n }\r\n\r\n displayCriteriaSelected(event: boolean, selection: string) {\r\n this.displayCriteria = selection;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { SnackBarService } from '../snack-bar/snack-bar.service';\r\n\r\n@Component({\r\n selector: 'floating-bar',\r\n templateUrl: './floating-bar.component.html',\r\n styleUrls: ['./floating-bar.component.less']\r\n})\r\nexport class FloatingBarComponent implements OnInit {\r\n @Output() cancelEvent = new EventEmitter<string>();\r\n @Output() submitEvent = new EventEmitter<string>();\r\n @Output() deleteEvent: EventEmitter<number> = new EventEmitter();\r\n @Input() text!: boolean;\r\n @Input() frequencyMessage: any;\r\n @Input() singleCategory: any;\r\n @Input() selectedData: any;\r\n\r\n constructor(private snackBar: SnackBarService\r\n ) {\r\n this.selectedData = [];\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n cancelFloatingBar() {\r\n this.cancelEvent.emit();\r\n }\r\n submitFloatingBar() {\r\n if (this.selectedData.length < 1) {\r\n this.snackBar.show('Select a widget.');\r\n return\r\n }\r\n this.submitEvent.emit(this.selectedData);\r\n }\r\n\r\n deleteSelected(index: number) {\r\n this.deleteEvent.emit(index);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FloatingBarComponent } from './floating-bar.component';\r\nimport { PopoverModule } from '../popover/popover.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FloatingBarComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n PopoverModule,\r\n ],\r\n exports: [\r\n FloatingBarComponent\r\n ]\r\n})\r\nexport class FloatingBarModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\r\n transform(items: any[], searchText: string): any[] {\r\n if (!items) {\r\n return [];\r\n }\r\n if (!searchText) {\r\n return items;\r\n }\r\n searchText = searchText.toLowerCase();\r\n if(items?.length){\r\n return items.filter((it: any) => {\r\n return JSON.stringify(it).toLowerCase().includes(searchText);\r\n });\r\n }else{\r\n return [];\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { RiskCategoriesConfig } from './risk-categories-config';\r\n\r\n@Component({\r\n selector: 'app-risk-categories',\r\n templateUrl: './risk-categories.component.html',\r\n styleUrls: ['./risk-categories.component.less']\r\n})\r\nexport class RiskCategoriesComponent implements OnInit {\r\n\r\n\r\n @Input() categoryList: RiskCategoriesConfig = {\r\n strategic: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n operational: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n compliance: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n others: {\r\n list: [],\r\n selectedList: [],\r\n }\r\n }\r\n @Input() allCategories: any[] = [];\r\n\r\n @Input() categoryIdKey: any;\r\n @Input() selectedCategories: any[] = [];\r\n\r\n search = '';\r\n activeTab: \"strategic\" | \"operational\" | \"compliance\" | \"others\"=\"strategic\";\r\n selectedIds: any[] = [];\r\n animation = false;\r\n blockWidth: any;\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'category_name',\r\n elementId: 'category_id',\r\n singularText: 'Risk Category selected',\r\n pluralText: 'Risk Categories selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n\r\n @Output() saveSelectedCategory = new EventEmitter();\r\n @Output() closeList = new EventEmitter();\r\n @Output() closeCategoriesList = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.selectedIds = [];\r\n if (this.selectedCategories) {\r\n this.selectedCategories.forEach(element => {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n });\r\n }\r\n this.setList()\r\n \r\n }\r\n\r\n selectCategory(mode: any, activeTab: any, category: any) {\r\n if (mode) {\r\n this.selectedIds.push(category[this.categoryIdKey]);\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == category[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n }\r\n this.setList();\r\n\r\n }\r\n\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any, activeTab: string) {\r\n\r\n if (mode) {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const list = this.categoryList[activeTab].list;\r\n list.forEach(element => {\r\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n }\r\n });\r\n }\r\n\r\n } else {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\r\n let idIndex = this.selectedIds.findIndex((id: any) => id == element[this.categoryIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n }\r\n\r\n }\r\n this.setList();\r\n }\r\n\r\n setList() {\r\n const data: any = [];\r\n const categoryList = [...new Set(this.allCategories)] \r\n // cloneDeep(this.allCategories)\r\n const selectedIds =[...new Set(this.selectedIds)] \r\n // cloneDeep(this.selectedIds);\r\n this.categoryList.strategic.selectedList = [];\r\n this.categoryList.operational.selectedList = [];\r\n this.categoryList.compliance.selectedList = [];\r\n this.categoryList.others.selectedList = [];\r\n\r\n categoryList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.categoryIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedCategories = data;\r\n this.footerDetails.selectedData = data;\r\n\r\n this.categoryList.strategic.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.strategic.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.operational.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.operational.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.compliance.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.compliance.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.others.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.others.selectedList.push(category)\r\n }\r\n });\r\n if (!this.activeTab) {\r\n this.setActiveTab();\r\n }\r\n }\r\n setActiveTab() {\r\n if (this.categoryList.strategic.selectedList.length > 0) {\r\n this.activeTab = 'strategic'\r\n } else if (this.categoryList.operational.selectedList.length > 0) {\r\n this.activeTab = 'operational'\r\n } else if (this.categoryList.compliance.selectedList.length > 0) {\r\n this.activeTab = 'compliance'\r\n } else if (this.categoryList.others.selectedList.length > 0) {\r\n this.activeTab = 'others'\r\n } else {\r\n this.activeTab = 'strategic'\r\n }\r\n }\r\n\r\n\r\n checkSelectAll(activeTab: string) {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const data = this.categoryList[activeTab].list.every((user: any) => this.selectedIds.includes(user[this.categoryIdKey]));\r\n return data;\r\n }\r\n }\r\n\r\n save() {\r\n this.saveSelectedCategory.emit(this.selectedCategories);\r\n }\r\n\r\n close() {\r\n this.closeCategoriesList.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'search'\r\n})\r\nexport class SearchPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return null;\r\n }\r\n if (!args) {\r\n return value;\r\n }\r\n\r\n args = args.toLowerCase();\r\n\r\n return value.filter((item: any) => {\r\n return JSON.stringify(item).toLowerCase().includes(args);\r\n });\r\n }\r\n\r\n}\r\n","import { ConfigureWidgetsService } from '../../services/configure-widgets.service';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { retry } from 'rxjs/operators';\r\nimport { widgetDataModel } from '../../interfaces/widget-data-model';\r\nimport { DialogRef } from '../../../ui-kit/dialog/dialog-ref';\r\nimport { widgetConfig } from './widget.interface';\r\nimport { SnackBarService } from '../../../ui-kit/snack-bar/snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-configure-widgets',\r\n templateUrl: './configure-widgets.component.html',\r\n styleUrls: ['./configure-widgets.component.less']\r\n})\r\nexport class ConfigureWidgetsComponent implements OnInit, OnChanges {\r\n\r\n @Output() widgetsDataModified: EventEmitter<any> = new EventEmitter();\r\n @Output() closeConfigureWidgets: EventEmitter<any> = new EventEmitter();\r\n checkboxStatus!: any;\r\n search: string = '';\r\n checkedArray: Array<{ index: number, status: number }> = [];\r\n selectedWidgets: Array<widgetDataModel> = [];\r\n\r\n module: \"COMPLIANCE\" | \"RISK\" = 'COMPLIANCE';\r\n @Input() selectedWidgetsData: any = [];\r\n @Input() displayedWidgets: any = [];\r\n @Input() showRisk = false;\r\n @Input() showCompliance = false;\r\n @Input() mode = 'CREATE'\r\n noDataText = 'You have not configured any widgets. Click on the <strong>Configure Widgets</strong> button to begin.';\r\n\r\n selectedWidgetIds: any = [];\r\n subResponsibilitiesSelected: boolean = false\r\n subKeyResponsibilitiesSelected: boolean = false\r\n showWidgets = true;\r\n complianceWidgetsDisplayCount = 9;\r\n riskWidgetsDisplayCount = 12;\r\n\r\n\r\n constructor(\r\n private dialog: DialogRef,\r\n public configureWidgetsService: ConfigureWidgetsService,\r\n private snackBar: SnackBarService) {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.mode == 'EDIT') {\r\n this.setWidgetsVisibilityToFalse()\r\n this.riskWidgetsDisplayCount = 0;\r\n this.complianceWidgetsDisplayCount = 0;\r\n const finalData = [...new Set(this.displayedWidgets)];\r\n finalData.forEach((element: any, index: any) => {\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.id == element.widget_code) {\r\n ele.visibility = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n filterData.push(subwidget.widget_code);\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].visibility = true;\r\n } else {\r\n ele.subWidgets[subIndex].visibility = false;\r\n }\r\n });\r\n }\r\n this.complianceWidgetsDisplayCount++\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.id == element.widget_code) {\r\n ele.visibility = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n filterData.push(subwidget.widget_code);\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].visibility = true;\r\n } else {\r\n ele.subWidgets[subIndex].visibility = false;\r\n }\r\n });\r\n\r\n }\r\n this.riskWidgetsDisplayCount++\r\n }\r\n })\r\n });\r\n }\r\n const data = [...new Set(this.selectedWidgetsData)];\r\n data.forEach((element: any, index: any) => {\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.id == element.widget_code && element.state == 'ACTIVE') {\r\n ele.value = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n if (subwidget.state == 'ACTIVE') {\r\n filterData.push(subwidget.widget_code);\r\n }\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].value = true;\r\n } else {\r\n ele.subWidgets[subIndex].value = false;\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets.push(ele);\r\n\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.id == element.widget_code && element.state == 'ACTIVE') {\r\n ele.value = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n if (subwidget.state == 'ACTIVE') {\r\n filterData.push(subwidget.widget_code);\r\n }\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].value = true;\r\n } else {\r\n ele.subWidgets[subIndex].value = false;\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets.push(ele);\r\n\r\n }\r\n })\r\n\r\n });\r\n this.module = (this.showCompliance) ? 'COMPLIANCE' : 'RISK';\r\n this.setSelectedWidgets();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n widgetsList = {\r\n COMPLIANCE: [\r\n {\r\n title: 'Overview',\r\n id: 'overview',\r\n description: 'Overview shows the performance of responsibilities and Responsibility Categories.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibility Calendar',\r\n id: 'compliance_calendar_flag',\r\n description: 'The Responsibility Calendar shows the due dates of responsibilities in a calendar format. The responsibilities are color coded to reflect the status of the responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-calender.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibility Center Overview',\r\n id: 'responsibility_center_overview_flag',\r\n description: 'The Responsibility Center Overview shows the performance of responsibilities and Responsibility Centers.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-center-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibilities',\r\n id: 'my_responsibilities',\r\n description: 'This widget shows the performance of the responsibilities that you are required to complete, the responsibilities that you are reviewing and the responsibilities that you are overseeing.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/my-responsibilities.png',\r\n tabOption: true,\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: [\r\n {\r\n title: 'My Responsibilities',\r\n id: 'my_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Reviewing',\r\n id: 'reviewer_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Overseeing',\r\n id: 'cc_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Key Responsibilities',\r\n id: 'key_responsibilities',\r\n description: 'This widget shows the performance of key responsibilities that you are required to complete, that you are reviewing, that you are overseeing and that you have assigned to another person.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/key-responsibilities.png',\r\n tabOption: true,\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: [\r\n {\r\n title: 'Overview',\r\n id: 'key_responsibilities_overview_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'My Responsibilities',\r\n id: 'key_my_responsibilities_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Reviewing',\r\n id: 'key_i_am_reviewing_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Overseeing',\r\n id: 'key_i_am_overseeing_flag',\r\n value: false,\r\n visibility:true,\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Trend Analysis',\r\n id: 'trend_analysis_flag',\r\n description: 'The Trend Analysis is a graphical representation of the performance of responsibilities over a period.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/trend-analysis.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Workroom Updates',\r\n id: 'workroom_alert_flag',\r\n description: 'The Responsibility Workroom shows updates from the Responsibility Workrooms. A Responsibility Workroom exists for all responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/workroom-updates.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Recent Activities',\r\n id: 'recent_activity_flag',\r\n description: 'This is a chronological view of the recent updates of responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/recent-activities.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Exception Summary',\r\n id: 'exception_summary_flag',\r\n description: 'Exceptions Summary show the number of responsibilities that are either not accepted, not completed or deleted.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/exception-summary.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n }\r\n ],\r\n RISK: [\r\n {\r\n title: 'Risk Overview',\r\n id: 'risk_overview',\r\n description: 'This widget shows the number and percentage of risks within each risk response strategy.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Metrics',\r\n id: 'risk_metrics',\r\n description: 'This widget shows the number of risks within each risk appetite, the number of risks that exceed the risk appetite, the number of risks that exceed the risk tolerance, the number of risks within each risk rating, and the number of risks that do not have any linked controls.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: [\r\n {\r\n title: 'Risk Appetite & Tolerance',\r\n id: 'risk_appetite_tolerance',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Risk Ratings',\r\n id: 'risk_ratings',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Risks Without Controls',\r\n id: 'risks_without_controls',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Exceeds Risk Tolerance',\r\n id: 'exceeds_risk_tolerance',\r\n value: false,\r\n visibility:true,\r\n },\r\n ]\r\n },\r\n\r\n {\r\n title: 'Inherent Risk Rating by Responsibility Centers ',\r\n id: 'inherent_risk_rating_by_responsibility_centers',\r\n description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Residual Risk Rating by Responsibility Centers ',\r\n id: 'residual_risk_rating_by_responsibility_centers',\r\n description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Category Overview',\r\n id: 'risk_category_overview',\r\n description: 'This widgets shows the number of risks within each status, grouped according to the Risk Category the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Heatmap',\r\n id: 'risk_heatmap',\r\n description: 'The Risk Heatmap displays the risk matrix for any two risk factors.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-heatmap.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Categories',\r\n id: 'inherent_risk_rating_by_categories',\r\n description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Risk Category that the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n\r\n {\r\n title: 'Residual Risk Rating by Categories',\r\n id: 'residual_risk_rating_by_categories',\r\n description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Risk Category that the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\r\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\r\n description: 'This widget is a graphical representation of the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Residual Risk Rating Trend by Responsibility Centers',\r\n id: 'residual_risk_rating_trend_by_responsibility_centers',\r\n description: 'This widget is a graphical representation of the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Rating Trend by Categories',\r\n id: 'risk_rating_trend_by_categories',\r\n description: 'This widgets is a trend chart that shows the inherent and residual risk rating trend across the different Risk Categories.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Top 5 Risk Ratings',\r\n id: 'top_5_residual_risk_ratings',\r\n description: 'This widgets shows ths top five risks with the highest risk rating.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n }\r\n ]\r\n }\r\n\r\n selectWidget(event: any, module: 'COMPLIANCE' | 'RISK', widgetId: string, subWidgetId?: string) {\r\n const widgetIndex = this.widgetsList[module].findIndex((ele: any) => ele.id == widgetId);\r\n if (event) {\r\n if (this.selectedWidgets.length >= 10) {\r\n this.snackBar.show('You cannot add more than 10 widgets.');\r\n this.showWidgets = false;\r\n setTimeout(() => {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n this.showWidgets = true;\r\n }, 10);\r\n return\r\n }\r\n this.widgetsList[module][widgetIndex].value = true;\r\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\r\n if (!subWidgetId) {\r\n this.widgetsList[module][widgetIndex].subWidgets.forEach(ele => ele.value = true);\r\n } else {\r\n const subWidgetIndex = this.widgetsList[module][widgetIndex].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\r\n this.widgetsList[module][widgetIndex].subWidgets[subWidgetIndex].value = true;\r\n }\r\n }\r\n } else {\r\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\r\n if (!subWidgetId) {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n this.widgetsList[module][widgetIndex].subWidgets.forEach((ele: any) => ele.value = false);\r\n } else {\r\n const subWidgetIndex = this.widgetsList[module][widgetIndex].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\r\n this.widgetsList[module][widgetIndex].subWidgets[subWidgetIndex].value = false;\r\n\r\n const isAllWidgetsRemoved = this.widgetsList[module][widgetIndex].subWidgets.every((ele: any) => ele.value == false);\r\n if (isAllWidgetsRemoved) {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n }\r\n }\r\n } else {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n }\r\n }\r\n this.setSelectedWidgets();\r\n\r\n }\r\n setSelectedWidgets() {\r\n this.selectedWidgets = []\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.value) {\r\n this.selectedWidgets.push(ele)\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.value) {\r\n this.selectedWidgets.push(ele)\r\n }\r\n })\r\n }\r\n\r\n removeWidget(widget: widgetConfig) {\r\n const widgetIndex = this.widgetsList[widget.module].findIndex((ele: any) => ele.id == widget.id);\r\n this.widgetsList[widget.module][widgetIndex].value = false;\r\n if (this.widgetsList[widget.module][widgetIndex].subWidgets.length > 0) {\r\n this.widgetsList[widget.module][widgetIndex].subWidgets.forEach((ele: any) => ele.value = false);\r\n }\r\n this.setSelectedWidgets()\r\n }\r\n\r\n onNextClick() {\r\n this.widgetsDataModified.emit(this.selectedWidgets);\r\n }\r\n\r\n closeConfigureDashboard() {\r\n this.selectedWidgets = [];\r\n this.dialog.close();\r\n this.closeConfigureWidgets.emit(false);\r\n }\r\n\r\n setWidgetsVisibilityToFalse(){\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n ele.visibility = false;\r\n if (ele.subWidgets.length > 0) { \r\n ele.subWidgets.forEach((subElement: any) => { \r\n subElement.visibility = false;\r\n });\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n ele.visibility = false;\r\n if (ele.subWidgets.length > 0) {\r\n ele.subWidgets.forEach((subElement: any) => {\r\n subElement.visibility = false;\r\n });\r\n }\r\n })\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appScrollInView]'\r\n})\r\nexport class ScrollInViewDirective implements OnChanges {\r\n@Input() appScrollInView = false;\r\n constructor(private el: ElementRef) {\r\n }\r\nngOnChanges(change:SimpleChanges){\r\n if(change?.appScrollInView && change?.appScrollInView?.currentValue === true){\r\n this.scroll();\r\n }\r\n}\r\n ngAfterViewInit() {\r\n // Otherwise Angular throws error: Expression has changed after it was checked.\r\n this.scroll();\r\n }\r\n\r\n scroll(){\r\n if(this.appScrollInView){\r\n window.setTimeout(() => {\r\n this.el.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollInViewDirective } from './scroll-in-view.directive';\n\n\n\n@NgModule({\n declarations: [\n ScrollInViewDirective\n ],\n imports: [\n CommonModule\n ],\n exports:[\n ScrollInViewDirective\n ]\n})\nexport class DirectivesModule { }\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-no-data',\r\n templateUrl: './no-data.component.html',\r\n styleUrls: ['./no-data.component.less'],\r\n})\r\nexport class NoDataComponent implements OnInit {\r\n @Input() action!: any;\r\n @Input() noDataImage!: string;\r\n @Input() noDataText = '';\r\n @Input() noDataButton!: string | boolean;\r\n @Input() noDataSecButton!: string | boolean;\r\n @Input() altText!: string;\r\n @Output() buttonAction = new EventEmitter<object>();\r\n @Input() smallButton!: boolean;\r\n @Input() buttonIcon!: any;\r\n @Input() iconClass!: any;\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n actionEmitter(button: object) {\r\n this.buttonAction.emit(button);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NoDataComponent } from './no-data.component';\r\n\r\n@NgModule({\r\n declarations: [NoDataComponent],\r\n imports: [CommonModule],\r\n exports: [NoDataComponent],\r\n})\r\nexport class NoDataModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FloatingBarModule } from '../../ui-kit//floating-bar/floating-bar.module';\r\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SearchPipe } from '../pipes/search.pipe';\r\nimport { ConfigureWidgetsComponent } from './configure-widgets/configure-widgets.component';\r\nimport { DirectivesModule } from '../directives/directives.module';\r\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ConfigureWidgetsComponent, SearchPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n FloatingBarModule,\r\n FormgroupModule,\r\n FormsModule,\r\n DirectivesModule,\r\n NoDataModule\r\n ],\r\n exports: [\r\n ConfigureWidgetsComponent\r\n ]\r\n})\r\nexport class ConfigureWidgetsModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.less'],\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader-inline',\r\n templateUrl: './loader-inline.component.html',\r\n styleUrls: ['./loader-inline.component.less'],\r\n})\r\nexport class LoaderInlineComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { LoaderInlineComponent } from './loader-inline/loader-inline.component';\r\n\r\n@NgModule({\r\n declarations: [LoaderComponent, LoaderInlineComponent],\r\n imports: [CommonModule],\r\n exports: [LoaderComponent, LoaderInlineComponent],\r\n})\r\nexport class VLoaderModule {}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit {\r\n show = false;\r\n message: string = '--';\r\n icon: string = '&#xe914;';\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarService.snackbarSubject.subscribe((state) => {\r\n if (state.icon) {\r\n this.icon = state.icon;\r\n } else {\r\n this.icon = '&#xe914;';\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n setTimeout(() => {\r\n this.show = false;\r\n }, 3000);\r\n });\r\n }\r\n close() {\r\n this.show = false;\r\n }\r\n ngOnDestroy() {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","import { Component, Input, OnInit, EventEmitter, Output, HostListener } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-smiley-dialog',\r\n templateUrl: './smiley-dialog.component.html',\r\n styleUrls: ['./smiley-dialog.component.less'],\r\n})\r\nexport class SmileyDialogComponent implements OnInit {\r\n @Input() message!: string;\r\n @Input() autoClose!: boolean;\r\n @Input() actionButtons!: any[];\r\n @Output() action: EventEmitter<string> = new EventEmitter();\r\n @Output() closeSmiley: EventEmitter<any> = new EventEmitter();\r\n\r\n @HostListener('window:keyup', ['$event']) handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.smileyCloseEmitter({});\r\n }\r\n }\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (this.autoClose) {\r\n setTimeout(() => {\r\n this.close();\r\n }, 8000);\r\n }\r\n }\r\n close() {\r\n this.closeSmiley.emit();\r\n }\r\n\r\n actionEmitter(event: any) {\r\n this.action.emit(event?.id);\r\n }\r\n\r\n smileyCloseEmitter(event: any) {\r\n this.closeSmiley.emit();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SmileyDialogComponent } from './smiley-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [SmileyDialogComponent],\r\n imports: [CommonModule],\r\n\r\n exports: [SmileyDialogComponent],\r\n})\r\nexport class SmileyDialogModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MarxEditorModule } from 'vcomply-editor';\r\nimport { DpDatePickerModule } from 'ng2-date-picker';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CreateDashboardComponent } from './create-dashboard.component';\r\nimport { SelectModule } from '../ui-kit/select/select.module';\r\nimport { UserListComponent } from './user-list/user-list.component';\r\nimport { ResponsibilityCenterComponent } from './responsibility-center/responsibility-center.component';\r\nimport { CategoriesComponent } from './categories/categories.component';\r\nimport { FrequencyComponent } from './frequency/frequency.component';\r\nimport { PaginationModule } from '../ui-kit/pagination/pagination.module';\r\nimport { FormgroupModule } from '../ui-kit/formgroup/formgroup.module';\r\nimport { DashboardFooterModule } from '../ui-kit/dashboard-footer/dashboard-footer.module';\r\nimport { FormGroupComponent } from './form-group/form-group.component';\r\nimport { TooltipModule } from '../ui-kit/tooltip/tooltip.module';\r\nimport { FloatingBarModule } from '../ui-kit/floating-bar/floating-bar.module';\r\nimport { DialogModule } from '../ui-kit/dialog/dialog.module';\r\nimport { Configurations } from '../configurations';\r\nimport { FilterPipe } from './pipes/filter.pipe';\r\nimport { RiskCategoriesComponent } from './risk-categories/risk-categories.component';\r\nimport { ConfigureWidgetsModule } from './configure-widgets/configure-widgets.module';\r\nimport { PopoverModule } from '../ui-kit/popover/popover.module';\r\nimport { VLoaderModule } from '../ui-kit/v-loader/v-loader.module';\r\nimport { SnackBarModule } from '../ui-kit/snack-bar/snack-bar.module';\r\nimport { NoDataModule } from '../ui-kit/no-data/no-data.module';\r\nimport { DirectivesModule } from './directives/directives.module';\r\nimport { SmileyDialogModule } from '../ui-kit/smiley-dialog/smiley-dialog.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CreateDashboardComponent,\r\n UserListComponent,\r\n FormGroupComponent,\r\n ResponsibilityCenterComponent,\r\n CategoriesComponent,\r\n RiskCategoriesComponent,\r\n FrequencyComponent,\r\n FilterPipe,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MarxEditorModule,\r\n FormgroupModule,\r\n DpDatePickerModule,\r\n FormsModule,\r\n TooltipModule,\r\n SelectModule,\r\n DashboardFooterModule,\r\n PaginationModule,\r\n FloatingBarModule,\r\n DialogModule,\r\n ConfigureWidgetsModule, \r\n PopoverModule,\r\n VLoaderModule,\r\n SnackBarModule,\r\n NoDataModule,\r\n DirectivesModule,\r\n SmileyDialogModule\r\n \r\n ],\r\n exports: [\r\n CreateDashboardComponent\r\n ]\r\n \r\n})\r\nexport class CreateDashboardModule { \r\n public static forRoot(environmentConfig: Configurations): ModuleWithProviders<CreateDashboardModule> {\r\n\r\n return {\r\n ngModule: CreateDashboardModule,\r\n providers: [\r\n { provide: Configurations, useValue: environmentConfig }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of create-dashboard\r\n */\r\n\r\n// export * from './lib/create-dashboard.service';\r\n// export * from './lib/create-dashboard.component';\r\n// export * from './lib/create-dashboard.module';\r\n\r\nexport * from './lib/create-dashboard.service';\r\nexport * from './lib/create-dashboard-container/create-dashboard.component';\r\nexport * from './lib/create-dashboard-container/create-dashboard.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {Configurations as ɵc} from './lib/configurations';\nexport {CategoriesComponent as ɵq} from './lib/create-dashboard-container/categories/categories.component';\nexport {ConfigureWidgetsModule as ɵbt} from './lib/create-dashboard-container/configure-widgets/configure-widgets.module';\nexport {ConfigureWidgetsComponent as ɵbu} from './lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component';\nexport {DirectivesModule as ɵbw} from './lib/create-dashboard-container/directives/directives.module';\nexport {ScrollInViewDirective as ɵbx} from './lib/create-dashboard-container/directives/scroll-in-view.directive';\nexport {FormGroupComponent as ɵi} from './lib/create-dashboard-container/form-group/form-group.component';\nexport {FrequencyComponent as ɵs} from './lib/create-dashboard-container/frequency/frequency.component';\nexport {FilterPipe as ɵt} from './lib/create-dashboard-container/pipes/filter.pipe';\nexport {SearchPipe as ɵbv} from './lib/create-dashboard-container/pipes/search.pipe';\nexport {ResponsibilityCenterComponent as ɵp} from './lib/create-dashboard-container/responsibility-center/responsibility-center.component';\nexport {RiskCategoriesComponent as ɵr} from './lib/create-dashboard-container/risk-categories/risk-categories.component';\nexport {AuthService as ɵb} from './lib/create-dashboard-container/services/auth.service';\nexport {ConfigureWidgetsService as ɵg} from './lib/create-dashboard-container/services/configure-widgets.service';\nexport {CreateDashboardService as ɵa} from './lib/create-dashboard-container/services/create-dashboard.service';\nexport {PaginationService as ɵd} from './lib/create-dashboard-container/services/pagination.service';\nexport {UserListComponent as ɵh} from './lib/create-dashboard-container/user-list/user-list.component';\nexport {DashboardFooterModule as ɵbk} from './lib/ui-kit/dashboard-footer/dashboard-footer.module';\nexport {DashboardFooterComponent as ɵbl} from './lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component';\nexport {DialogConfig as ɵo} from './lib/ui-kit/dialog/dialog-config';\nexport {DialogRef as ɵn} from './lib/ui-kit/dialog/dialog-ref';\nexport {DialogComponent as ɵl} from './lib/ui-kit/dialog/dialog.component';\nexport {DialogModule as ɵk} from './lib/ui-kit/dialog/dialog.module';\nexport {DialogService as ɵj} from './lib/ui-kit/dialog/dialog.service';\nexport {InsertionDirective as ɵm} from './lib/ui-kit/dialog/insertion.directive';\nexport {FloatingBarComponent as ɵbs} from './lib/ui-kit/floating-bar/floating-bar.component';\nexport {FloatingBarModule as ɵbr} from './lib/ui-kit/floating-bar/floating-bar.module';\nexport {ClickOutsideDirective as ɵbc} from './lib/ui-kit/formgroup/click-outside.directive';\nexport {CsCheckboxComponent as ɵv} from './lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component';\nexport {CsRadioGroupComponent as ɵy} from './lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component';\nexport {CsRadioComponent as ɵw} from './lib/ui-kit/formgroup/cs-radio/cs-radio.component';\nexport {CsSelectComponent as ɵz} from './lib/ui-kit/formgroup/cs-select/cs-select.component';\nexport {CsSwitchComponent as ɵx} from './lib/ui-kit/formgroup/cs-switch/cs-switch.component';\nexport {FormgroupModule as ɵu} from './lib/ui-kit/formgroup/formgroup.module';\nexport {PascalPipe as ɵba} from './lib/ui-kit/formgroup/pipes/pascal.pipe';\nexport {SearchMultiSelectPipe as ɵbb} from './lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe';\nexport {NoDataComponent as ɵbz} from './lib/ui-kit/no-data/no-data.component';\nexport {NoDataModule as ɵby} from './lib/ui-kit/no-data/no-data.module';\nexport {PaginationComponent as ɵbq} from './lib/ui-kit/pagination/pagination.component';\nexport {PaginationModule as ɵbp} from './lib/ui-kit/pagination/pagination.module';\nexport {PopoverComponent as ɵbn} from './lib/ui-kit/popover/popover.component';\nexport {PopoverDirective as ɵbo} from './lib/ui-kit/popover/popover.directive';\nexport {PopoverModule as ɵbm} from './lib/ui-kit/popover/popover.module';\nexport {PopoverService as ɵf} from './lib/ui-kit/popover/popover.service';\nexport {CsOptionComponent as ɵbh} from './lib/ui-kit/select/cs-option/cs-option.component';\nexport {CsSelectComponent as ɵbg} from './lib/ui-kit/select/cs-select/cs-select.component';\nexport {SafeHtmlPipe as ɵbj} from './lib/ui-kit/select/safe-html.pipe';\nexport {SelectModule as ɵbf} from './lib/ui-kit/select/select.module';\nexport {CsSelectService as ɵbi} from './lib/ui-kit/services/cs-select.service';\nexport {SmileyDialogComponent as ɵcg} from './lib/ui-kit/smiley-dialog/smiley-dialog.component';\nexport {SmileyDialogModule as ɵcf} from './lib/ui-kit/smiley-dialog/smiley-dialog.module';\nexport {SnackBarModule as ɵcd} from './lib/ui-kit/snack-bar/snack-bar.module';\nexport {SnackBarService as ɵe} from './lib/ui-kit/snack-bar/snack-bar.service';\nexport {SnackBarComponent as ɵce} from './lib/ui-kit/snack-bar/snack-bar/snack-bar.component';\nexport {ToolTipDirective as ɵbe} from './lib/ui-kit/tooltip/tooltip.directive';\nexport {TooltipModule as ɵbd} from './lib/ui-kit/tooltip/tooltip.module';\nexport {LoaderInlineComponent as ɵcc} from './lib/ui-kit/v-loader/loader-inline/loader-inline.component';\nexport {LoaderComponent as ɵcb} from './lib/ui-kit/v-loader/loader/loader.component';\nexport {VLoaderModule as ɵca} from './lib/ui-kit/v-loader/v-loader.module';"],"names":["CreateDashboardService","CsSelectComponent"],"mappings":";;;;;;;;;;;;;;;;;MAKaA,wBAAsB;IACjC,iBAAgB;;;;YAJjB,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCJY,cAAc;IAGzB;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;MCKU,WAAW;IAGtB,YAAoB,IAAgB,EAAc,MAAuB;QAArD,SAAI,GAAJ,IAAI,CAAY;QAClC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;SAC7B;KACF;IACD,qBAAqB;QACnB,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;YAC5E,OAAO,WAAW,CAAC,KAAK,CAAC;SAC1B;KACF;;;;YAhBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;YAPQ,UAAU;YAGV,cAAc,uBAQkB,QAAQ;;;MCFpC,sBAAsB;IAMjC,YAAoB,IAAgB,EAC1B,WAAwB,EAAc,MAAuB;QADnD,SAAI,GAAJ,IAAI,CAAY;QAC1B,gBAAW,GAAX,WAAW,CAAa;QAJlC,gBAAW,GAAG;YACZ,OAAO,EAAE,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClH,CAAC;QAGA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;SAC7B;KACF;;;;IAKD,oBAAoB,CAAC,GAAS;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,4CAA4C;aACzF,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;aACnE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ;YAChE,OAAO,GAAG,CAAC;SACZ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC7C;;;;;;IAOD,yBAAyB,CAAC,GAAS;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,6CAA6C;aAC1F,GAAG,CAAC,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAClG,OAAO,GAAG,CAAC;SACZ,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,eAAe;QACb,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACnB;;;;IAKD,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,yBAAyB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7G;;;;IAKD,2BAA2B;QACzB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,0BAA0B,EAAE;YAC/E,OAAO;SACR,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,2BAA2B;QACzB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,qCAAqC,EAAE;YAC1F,OAAO;SACR,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,eAAe,CAAC,OAAY;QAC1B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CACpF,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACH;;;;;IAMD,cAAc,CAAC,EAAO;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,GAAG,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACjF,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACH;IAED,eAAe,CAAC,EAAO,EAAE,OAAY;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,kBAAkB,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAChG,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACH;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAC9F,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACH;IACD,GAAG;QACD,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC,GAAG,CAAC;SACtB;QACD,OAAO,EAAE,CAAC;KACX;IAED,2BAA2B,CAAC,OAAY;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAC9F,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KAEH;;;;YAlHF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;YAVQ,UAAU;YAMV,WAAW;YADX,cAAc,uBAagB,QAAQ;;;ACX/C;;;MAGa,iBAAiB;IAK5B;QAJA,gBAAW,GAAG,CAAC,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;QACjB,kBAAa,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;KAEvB;IAEjB,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IACD,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACvB;;;;YApBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCCY,eAAe;IAE1B;QADA,oBAAe,GAAG,IAAI,OAAO,EAAO,CAAC;KACrB;IAEhB,IAAI,CAAC,OAAe,EAAE,IAAa;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI;YACV,OAAO;YACP,IAAI;SACL,CAAC,CAAC;KACJ;;;;YAbF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCSY,uBAAuB;IAGlC,YACU,IAAgB,EAChB,WAAwB,EACnB,MAAuB;QAF5B,SAAI,GAAJ,IAAI,CAAY;QAChB,gBAAW,GAAX,WAAW,CAAa;QAMlC,0BAAqB,GAAG;YACtB;gBACE,KAAK,EAAE,UAAU;gBACjB,EAAE,EAAE,eAAe;gBACnB,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,gFAAgF;gBAC7F,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,yBAAyB;gBAChC,EAAE,EAAE,0BAA0B;gBAC9B,WAAW,EAAE,iEAAiE;gBAC9E,WAAW,EAAE,+FAA+F;gBAC5G,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,gCAAgC;gBACvC,EAAE,EAAE,qCAAqC;gBACzC,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,gFAAgF;gBAC7F,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,EAAE,EAAE,qBAAqB;gBACzB,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,2FAA2F;gBACxG,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,EAAE,EAAE,sBAAsB;gBAC1B,WAAW,EAAE,iEAAiE;gBAC9E,WAAW,EAAE,4FAA4F;gBACzG,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,gBAAgB;gBACvB,EAAE,EAAE,qBAAqB;gBACzB,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,sFAAsF;gBACnG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,kBAAkB;gBACzB,EAAE,EAAE,qBAAqB;gBACzB,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,wFAAwF;gBACrG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,EAAE,EAAE,sBAAsB;gBAC1B,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,yFAAyF;gBACtG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,EAAE,EAAE,wBAAwB;gBAC5B,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE,yFAAyF;gBACtG,KAAK,EAAE,CAAC;aACT;SACF,CAAC;QAIF,oBAAe,GAAG;YAChB;gBACE,KAAK,EAAE,eAAe;gBACtB,EAAE,EAAE,eAAe;gBACnB,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,qFAAqF;gBAClG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,2BAA2B;gBAClC,EAAE,EAAE,yBAAyB;gBAC7B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,0FAA0F;gBACvG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,cAAc;gBACrB,EAAE,EAAE,cAAc;gBAClB,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,0FAA0F;gBACvG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,wBAAwB;gBAC/B,EAAE,EAAE,wBAAwB;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,0FAA0F;gBACvG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,gCAAgC;gBACvC,EAAE,EAAE,wBAAwB;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,0FAA0F;gBACvG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,iDAAiD;gBACxD,EAAE,EAAE,gDAAgD;gBACpD,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,mFAAmF;gBAChG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,iDAAiD;gBACxD,EAAE,EAAE,gDAAgD;gBACpD,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,mFAAmF;gBAChG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,wBAAwB;gBAC/B,EAAE,EAAE,wBAAwB;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,8FAA8F;gBAC3G,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,cAAc;gBACrB,EAAE,EAAE,cAAc;gBAClB,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,oFAAoF;gBACjG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,oCAAoC;gBAC3C,EAAE,EAAE,oCAAoC;gBACxC,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,2FAA2F;gBACxG,KAAK,EAAE,CAAC;aACT;YAED;gBACE,KAAK,EAAE,oCAAoC;gBAC3C,EAAE,EAAE,oCAAoC;gBACxC,WAAW,EAAE,aAAa;gBAC1B,WAAW,EAAE,2FAA2F;gBACxG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,sDAAsD;gBAC7D,EAAE,EAAE,sDAAsD;gBAC1D,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,sFAAsF;gBACnG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,sDAAsD;gBAC7D,EAAE,EAAE,sDAAsD;gBAC1D,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,sFAAsF;gBACnG,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,iCAAiC;gBACxC,EAAE,EAAE,iCAAiC;gBACrC,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,kFAAkF;gBAC/F,KAAK,EAAE,CAAC;aACT;YACD;gBACE,KAAK,EAAE,oBAAoB;gBAC3B,EAAE,EAAE,6BAA6B;gBACjC,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,sFAAsF;gBACnG,KAAK,EAAE,CAAC;aACT;SACF,CAAC;QACF,qBAAgB,GAAG,EAAE,CAAC;QACtB,sBAAiB,GAAG,EAAE,CAAC;QAvLnB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;SAC7B;KAAC;;IAyLN,qBAAqB,CAAC,UAAe;QACnC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,kBAAkB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAChG;IAED,UAAU,CAAC,UAAiB;QAC3B,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC;YAClE,OAAO,YAAY,CAAA;SACnB;aAAK,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC;YAClE,OAAO,MAAM,CAAA;SACb;KACD;;;;YAhNF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;YAXQ,UAAU;YAIV,WAAW;YAEX,cAAc,uBAYjB,QAAQ;;;MCfD,cAAc;IAQzB;QAPA,eAAU,GAAG,KAAK,CAAC;QAQjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACjC;;;;YAbF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;ACWD,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;MAOnB,wBAAwB;IAyHnC,YACU,sBAA8C,EAC9C,iBAAoC,EACpC,GAAsB,EACtB,QAAyB,EAC1B,cAA8B,EAC7B,uBAAgD;QALhD,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,QAAG,GAAH,GAAG,CAAmB;QACtB,aAAQ,GAAR,QAAQ,CAAiB;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAC7B,4BAAuB,GAAvB,uBAAuB,CAAyB;QA7H1D,mBAAc,GAAG,EAAE,CAAC;QACpB,aAAQ,GAAG,KAAK,CAAC;QACR,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;QAChB,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5B,cAAS,GAAG,CAAC,CAAC;QAIvB,cAAS,GAAG,IAAI,CAAC;QACR,oBAAe,GAAG,KAAK,CAAA;QAEhC,eAAU,GAAG,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC;QACd,cAAS,GAAU,EAAE,CAAC;QACtB,YAAO,GAAG,IAAI,CAAC;QACf,mBAAc,GAAG,KAAK,CAAC;QACvB,iBAAY,GAAG,KAAK,CAAC;QACrB,mCAA8B,GAAG,KAAK,CAAC;QACvC,2BAAsB,GAAG,KAAK,CAAC;QAC/B,eAAU,GAAG,KAAK,CAAC;QACnB,gBAAW,GAA0B;YACnC,iBAAiB,EAAE,EAAE;YACrB,qBAAqB,EAAE,EAAE;YACzB,iBAAiB,EAAE,aAAa;YAChC,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,yBAAoB,GAAiB;YACnC,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,aAAa;SAClB,CAAA;QACD,iCAA4B,GAAQ;YAClC,WAAW,EAAE;gBACX,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;SACF,CAAC;QACF,4BAAuB,GAAU,EAAE,CAAC;QACpC,sBAAiB,GAAU,EAAE,CAAC;QAC9B,qBAAgB,GAAG,KAAK,CAAC;QACzB,iBAAY,GAAG,IAAI,CAAC;QAEpB,kBAAa,GAAwB;YACnC,aAAa,EAAE,EAAE;YACjB,wBAAwB,EAAE,EAAE;YAC5B,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,SAAS;YACzB,6BAA6B,EAAE,EAAE;YACjC,gCAAgC,EAAE,EAAE;YACpC,sBAAsB,EAAE,EAAE;YAC1B,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,EAAE;YACpB,qBAAqB,EAAE,EAAE;YACzB,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACxB,gBAAgB,EAAE,EAAE;YACpB,aAAa,EAAE,CAAC;SACjB,CAAA;QAGD,yBAAoB,GAAG,KAAK,CAAC;QAC7B,oBAAe,GAAQ,EAAE,CAAC;QAC1B,qBAAgB,GAAQ,EAAE,CAAA;QAG1B,8BAAyB,GAAG,EAAE,CAAC;QAC/B,sBAAiB,GAAG,KAAK,CAAC;QAC1B,aAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1F,eAAU,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACxI,aAAQ,GAAG,CAAC,+BAA+B,EAAE,iCAAiC,EAAE,kCAAkC,CAAC,CAAC;QAEpH,uBAAkB,GAAG,KAAK,CAAC;QAC3B,oBAAe,GAAG,KAAK,CAAC;QACxB,0BAAqB,GAAG,KAAK,CAAC;QAE9B,qBAAgB,GAAG;YACjB,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;SACF,CAAC;QAEF,yBAAoB,GAAsB;YACxC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE;SAC3B,CAAA;QAED,uBAAkB,GAAsB,EACvC,CAAA;QAGD,kBAAa,GAAW,EAAE,CAAC;QA6f3B,cAAS,GAAG,KAAK,CAAA;KApfZ;IAEL,WAAW;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7D;KACF;IAEoD,gBAAgB,CAAC,KAAoB;QACxF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;YAClE,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;YACjC,IAAI,SAAS,CAAC,IAAI,EAAE;gBAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;SACF,EAAE,KAAK,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA,EAAE,CAAC,CAAC;KAErC;;;;;;IAOD,gBAAgB,CAAC,IAAS,EAAE,KAAc;QACxC,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE;YAC7D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,UAAU,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B,EAAE,CAAC,CAAC,CAAC;SACP;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;KACzC;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IAED,gBAAgB;QACd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IACD,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACxC,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,UAAU,CAAC;gBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB,EAAE,EAAE,CAAC,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,OAAM;SACP;QACD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACnE,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC;QACxD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,UAAU,CAAC;gBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB,EAAE,EAAE,CAAC,CAAC;SACR;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IAED,YAAY;QACV,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAC7D;IAED,aAAa,CAAC,WAAgB;QAC5B,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,WAAW,CAAC,aAAa,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,WAAW,CAAC,WAAW,CAAC;QACjE,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;KACjC;IAED,cAAc;QACZ,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;KACnF;IACD,SAAS,CAAC,IAAY;QACpB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;KACvF;IACD,WAAW,CAAC,IAAY;QACtB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;KACnF;IACD,kBAAkB;QAChB,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,IAAI,YAAY,EAAE;YAChB,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;gBACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,MAAM,OAAO,GAAG;oBACd,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;oBAChD,YAAY,EAAE,EAAE;iBACjB,CAAA;gBACD,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG;oBAC5E,IAAI,CAAC,GAAG,EAAE;wBACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;wBACvL,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;wBAC5K,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;qBAClC;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;wBAC7G,OAAO;qBACR;iBACF,EAAE,KAAK;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACtB,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE;gBAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,MAAM,OAAO,GAAG;oBACd,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;oBAChD,YAAY,EAAE,IAAI,CAAC,WAAW;iBAC/B,CAAA;gBACD,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG;oBAC5E,IAAI,CAAC,GAAG,EAAE;wBACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;wBACvL,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;wBAC5K,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;qBAClC;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;wBAC7G,OAAO;qBACR;iBACF,EAAE,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;iBACrB,CAAC,CAAC;aACJ;SACF;KACF;;;;;IAOD,yBAAyB,CAAC,GAAQ;QAChC,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG;YACtE,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC;YACnC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC;aACnC;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACrB;SACF,CAAC,CAAC;KACJ;;;;;IAMD,YAAY,CAAC,GAAQ;QACnB,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;YAE3D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAE3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;gBACjG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;gBACxE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aAEtB;SACF,CAAC,CAAC;KAEJ;IAED,yBAAyB;QACvB,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;YAC3E,MAAM,IAAI,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;YAEjD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY;gBACxB,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,EAAE;oBAC3C,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC7D;gBACD,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,EAAE;oBAC3C,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAClE;gBACD,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,EAAE;oBAC3C,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAChE;gBACD,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,EAAE;oBAC3C,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvE;aACF,CAAC,CAAC;YACH,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;SAC5C,EAAE,CAAC,GAAQ;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;SAC5C,CAAC,CAAC;KACJ;IAGD,oBAAoB,CAAC,KAAU;QAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KAClC;IAED,eAAe;QACb,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;YAC/D,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC;YACzD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC;YACnD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;SAEjJ,EAAE,GAAG;YACJ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SAEpC,CAAC,CAAC;KACJ;;;;IAKD,0BAA0B;QACxB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,cAAc,EAAE;YAClH,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;iBAAM;gBACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;SACF;aAAM;YACL,UAAU,CAAC;gBACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC,EAAE,GAAG,CAAC,CAAC;SACT;KACF;IAED,kBAAkB,CAAC,IAAS;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1B,MAAM,YAAY,GAAQ,EAAE,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY;gBACxB,IAAI,GAAG,GAAQ,EAAE,CAAA;gBACjB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;gBACjC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAA;gBAC/B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;gBACrB,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAA;gBACpB,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc;wBACxC,IAAI,eAAe,GAAQ,EAAE,CAAA;wBAC7B,eAAe,CAAC,GAAG,GAAG,EAAE,CAAC;wBACzB,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAA;wBAC7C,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;wBAC3C,eAAe,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,QAAQ,GAAG,UAAU,CAAA;wBACjE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;qBACrD,CAAC,CAAC;iBACJ;gBACD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC;SACnD;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YAC/B,MAAM,YAAY,GAAQ,EAAE,CAAA;YAE5B,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY;gBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBAC5E,IAAI,GAAG,GAAQ,EAAE,CAAA;oBACjB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;oBACjC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAA;oBAC/B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC;oBAC7B,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;oBACrB,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAA;oBACpB,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc;4BACxC,IAAI,eAAe,GAAQ,EAAE,CAAA;4BAC7B,eAAe,CAAC,GAAG,GAAG,EAAE,CAAC;4BACzB,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAA;4BAC7C,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;4BAC3C,eAAe,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,QAAQ,GAAG,UAAU,CAAA;4BACjE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;yBACtC,CAAC,CAAC;qBACJ;oBACD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBAC7C;qBAAM;oBACL,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC,CAAA;oBACzF,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;wBACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAA;wBAC5C,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAkB;gCACjE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;gCACpG,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE;oCACtB,aAAa,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,QAAQ,GAAG,UAAU,CAAA;iCACvF;6BACF,CAAC,CAAC;yBACJ;qBACF;iBAEF;aACF,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,WAAgB;gBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,WAAgB,KAAK,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,WAAW,CAAC,CAAA;gBAC7F,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;oBACf,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC;oBAC/B,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBACtC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAkB;4BACjD,aAAa,CAAC,KAAK,GAAG,UAAU,CAAA;yBACjC,CAAC,CAAC;qBACJ;iBACF;aACF,CAAC,CAAC;SAEJ;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;KAExB;IAED,qBAAqB,CAAC,KAAc;QAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACnC;;;;;IAMD,gBAAgB,CAAC,KAAU;QACzB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,CAAC;gBAChB,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;gBACrF,IAAI,EAAE,sBAAsB;gBAC5B,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;aACnF,CAAC,CAAC;SAEJ;KAEF;IAGD,SAAS;QACP,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;YAC3E,IAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAE1B,EAAE,CAAC,GAAQ;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B,CAAC,CAAC;KACJ;IAED,gBAAgB,CAAC,IAAY,EAAE,aAAkB;QAC/C,QAAQ,IAAI;YACV,KAAK,IAAI;gBACP,IAAI,CAAC,aAAa,CAAC,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC1H,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,aAAa,CAAA;gBAClD,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;gBACxE,MAAM;YACR,KAAK,0BAA0B;gBAC7B,IAAI,CAAC,aAAa,CAAC,gCAAgC,GAAG,aAAa,CAAC;gBACpE,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,aAAa,CAAC,sBAAsB,GAAG,aAAa,CAAC;gBAC1D,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;SACT;QACD,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KAClC;IAED,MAAM,CAAC,IAAS,EAAE,KAAU,EAAE,WAAiB;;QAC7C,QAAQ,IAAI;YACV,KAAK,IAAI;gBACP,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,EAAO,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjH,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;oBAClB,MAAM,QAAQ,GAAQ,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;oBAChF,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAEpE,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,MAAM,IAAG,CAAC,EAAE;wBACxC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,YAAiB;4BAChD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,aAAkB,KAAK,aAAa,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;4BAC5I,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;yBACzE,CAAC,CAAC;qBACJ;iBACF;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;YAER,KAAK,YAAY;gBACf,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;gBACzH,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBAC5D,MAAM;YAER,KAAK,0BAA0B;gBAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,UAAe,KAAK,UAAU,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;gBACxJ,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;gBAC/E,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;YAER,KAAK,cAAc;gBACjB,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,YAAiB,KAAK,YAAY,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;gBACpJ,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;oBAC5B,MAAM,MAAM,GAAQ,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;oBACjF,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBACvE,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,0CAAE,MAAM,IAAG,CAAC,EAAE;wBACrC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAiB;4BAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,aAAkB,KAAK,aAAa,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;4BAC3I,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;yBAClE,CAAC,CAAC;qBACJ;iBACF;gBACD,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBACvE,IAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAE,CAAC,EAAC;wBACjE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,YAAY,CAAC,CAAA;qBACpG;yBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAE,CAAC,EAAC;wBAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAW,KAAG,OAAO,CAAC,WAAW,IAAE,MAAM,CAAC,CAAA;qBAC/F;iBACF;gBACD,MAAM;SAET;KACF;IAED,OAAO,CAAC,IAAW,EAAE,GAAU,EAAE,GAAW;QAC1C,MAAM,IAAI,GAAQ,EAAE,CAAC;QAErB,GAAG,CAAC,OAAO,CAAC,CAAC,OAAY;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,WAAgB,KAAK,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;YAChF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACxB;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb;;;;;;IAQD,SAAS,CAAC,IAAW,EAAE,GAAW;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;SAAE,EAAE,CAAC,CAAC;KAChE;;;;IAKD,iBAAiB;QACf,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SAEvB,EAAE,GAAG,CAAC,CAAC;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAC/C,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,wBAAwB,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;gBAChF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,MAAM,GAAG,GAAG,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC5E,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,IAAI,CAAC;gBAC9D,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,MAAM,IAAI,CAAC;gBAC/D,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;YAC1D,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,IAAI,CAAC;SACb;KACF;;;;;IAMD,eAAe;QAEb,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,MAAM,OAAO,GAAQ;YACnB,cAAc,EAAE,SAAS,CAAC,aAAa;YACvC,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,SAAS,CAAC,wBAAwB;oBAC3C,WAAW,EAAE,EAAE;iBAChB;aACF;YACD,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC;YACxE,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,EAAE,SAAS,CAAC;YACzF,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gCAAgC,EAAE,aAAa,CAAC;YAClG,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,aAAa,CAAC;YAC9E,gBAAgB,EAAE,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,IAAI,sBAAsB,GAAG,gBAAgB;YACnG,SAAS,EAAE;gBACT,UAAU,EAAE,CAAC,SAAS,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;gBACtG,QAAQ,EAAE,CAAC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;aAEjG;YACD,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC;YAC9C,cAAc,EAAE,SAAS,CAAC,eAAe;SAE1C,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ;gBACtE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;gBAErB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,aAAa,GAAG,iCAAiC,CAAA;gBACtD,UAAU,CAAC;oBACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;iBACnD,EAAE,IAAI,CAAC,CAAC;aAEV,EACC,GAAG;gBACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;oBAC7G,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACtB;qBAAM;oBACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;iBACxH;aAGF,CACF,CAAC;SACH;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAA;YACjC,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC;gBAC/E,IAAI,EAAE,CAAC,GAAQ;oBACb,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;oBAErB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,aAAa,GAAG,gCAAgC,CAAC;oBACtD,UAAU,CAAC;wBACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;qBACtC,EAAE,IAAI,CAAC,CAAC;iBAEV;gBACD,KAAK,EAAE,CAAC,KAAU;oBAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;iBACxH;aACF,CAAC,CAAC;SAGJ;KACF;IAED,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ;gBAC9E,MAAM,IAAI,GAAG,GAAG,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBACzD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;aAClC,EAAE,KAAK;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACtB,CAAC,CAAC;SACJ;KACF;IAED,qBAAqB,CAAC,IAAS;QAC7B,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;YACpD,IAAI,CAAC,aAAa,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;YACzE,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,6BAA6B,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QACvI,IAAI,CAAC,aAAa,CAAC,gCAAgC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;QAC9I,IAAI,CAAC,aAAa,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACpH,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,sBAAsB,IAAI,KAAK,GAAG,IAAI,CAAC;QACvG,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;QACjH,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;QAC3G,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAA;QACxD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,UAAU,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB,EAAE,EAAE,CAAC,CAAC;KAER;IAED,YAAY,CAAC,KAAU,EAAE,IAAS;QAChC,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,QAAQ,IAAI,CAAC,aAAa,CAAC,qBAAqB;gBAC9C,KAAK,QAAQ;oBACX,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClG,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;oBAC3C,OAAO,IAAI,GAAG,WAAW,GAAG,MAAM,CAAA;gBACpC,KAAK,SAAS;oBACZ,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnG,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;oBAC7C,OAAO,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,CAAA;gBAC5E,KAAK,WAAW;oBACd,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBAC9E,OAAO,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,GAAG,kBAAkB,GAAG,IAAI,CAAA;aAEnF;SACF;QACD,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5B,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACZ,KAAK,GAAG;oBAAE;wBACR,IAAI,SAAS,GAAG,QAAQ,CAAC;wBACzB,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,QAAQ,CAAA;wBACnD,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,KAAU;4BACvE,SAAS,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;yBACrF,CAAC,CAAA;wBACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;qBACjD;oBAEC,MAAK;gBACP,KAAK,GAAG;oBAAE;wBACR,IAAI,SAAS,GAAG,QAAQ,CAAC;wBACzB,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,SAAS,CAAA;wBACpD,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBACzC,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,KAAU;4BACzE,SAAS,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;yBAC7F,CAAC,CAAA;wBACF,IAAI,aAAa,CAAC;wBAClB,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAC3C,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAChD,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAChD,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI;4BACH,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAA;yBACxD;wBACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;qBAC1E;oBACC,MAAK;gBACP,KAAK,GAAG;oBAAE;wBACR,IAAI,SAAS,GAAG,QAAQ,CAAC;wBACzB,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,WAAW,CAAA;wBACtD,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC1C,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC1E,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;wBACnE,IAAI,aAAa,CAAC;wBAClB,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAC3C,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAChD,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,GAAG,EAAE;4BAChD,aAAa,GAAG,KAAK,CAAA;yBACtB;6BACI;4BACH,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAA;yBACxD;wBACD,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;qBAC1E;oBACC,MAAK;aAER;SACF;KACF;IAED,kBAAkB;;QAEhB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;;;YA92BF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,2/nCAAgD;;aAEjD;;;YAlBQ,sBAAsB;YACtB,iBAAiB;YAJjB,iBAAiB;YAOjB,eAAe;YAOf,cAAc;YANd,uBAAuB;;;mBAkB7B,KAAK;0BACL,KAAK;oBACL,MAAM;wBACN,KAAK;6BAEL,SAAS,SAAC,gBAAgB;2BAC1B,SAAS,SAAC,cAAc;8BAExB,KAAK;+BA4HL,YAAY,SAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;;AC3JrD;MAeaC,mBAAiB;IA2B5B;QAOA,aAAQ,GAAQ,SAAQ,CAAC;QACzB,YAAO,GAAQ,SAAQ,CAAC;QAPtB,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;IAZD,IAA6B,OAAO,CAAC,OAAmB;QACtD,IAAI,OAAO,EAAE;;YAEX,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;SAC3B;KACF;IASD,QAAQ,MAAW;IAKnB,IAAI,QAAQ,CAAC,GAAQ;QACnB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;YACzD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACnB;KACF;IAED,UAAU,CAAC,KAAU;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC;YACT,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;YAChE,IAAI,QAAQ,CAAC,GAAG,GAAG,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE;gBACxD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;aAC9C;YACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB,EAAE,EAAE,CAAC,CAAC;KACR;IACD,aAAa;QACX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;;;YAzFF,SAAS,SAAC;;gBAET,QAAQ,EAAE,WAAW;gBACrB,g/BAAyC;gBAEzC,SAAS,EAAE;oBACT;wBACE,OAAO,EAAE,iBAAiB;wBAC1B,WAAW,EAAE,UAAU,CAAC,MAAMA,mBAAiB,CAAC;wBAChD,KAAK,EAAE,IAAI;qBACZ;iBACF;;aACF;;;;4BAEE,KAAK;+BACL,KAAK;yBACL,KAAK;0BACL,KAAK;sBAcL,SAAS,SAAC,YAAY;;;MC/BZ,eAAe;IAE1B;KACC;;;;YANF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCMY,iBAAiB;IAI5B,YAAmB,QAA2B,EAAS,aAA8B;QAAlE,aAAQ,GAAR,QAAQ,CAAmB;QAAS,kBAAa,GAAb,aAAa,CAAiB;QACnF,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;IAED,QAAQ,MAAY;IAEpB,MAAM,CAAC,KAAU;QACf,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,UAAU,CAAC;gBACT,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;gBACrE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzB,EAAE,CAAC,CAAC,CAAC;SACP;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;;;YAzBF,SAAS,SAAC;;gBAET,QAAQ,EAAE,WAAW;gBACrB,iUAAyC;;aAE1C;;;YAPQA,mBAAiB;YADjB,eAAe;;;oBAUrB,KAAK;qBACL,SAAS,SAAC,SAAS;oBACnB,KAAK;;;MCPK,YAAY;IACvB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;KAAG;IAC7C,SAAS,CAAC,IAAS;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACrD;;;YAPF,IAAI,SAAC;gBACJ,IAAI,EAAE,UAAU;aACjB;;;YAJQ,YAAY;;;MCWR,YAAY;;;YALxB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAACA,mBAAiB,EAAE,iBAAiB,EAAE,YAAY,CAAC;gBAClE,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;gBACpC,OAAO,EAAE,CAACA,mBAAiB,EAAE,iBAAiB,CAAC;aAChD;;;MCAY,iBAAiB;IAsC5B,YACU,iBAAoC,EACpC,gBAAwC;QADxC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,qBAAgB,GAAhB,gBAAgB,CAAwB;QAvCxC,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,sBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,kBAAa,GAAG,EAAE,CAAC;QACnB,gBAAW,GAA0B;YAC5C,iBAAiB,EAAE,EAAE;YACrB,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;YACrB,qBAAqB,EAAE,EAAE;SAC1B,CAAC;QAEF,kBAAa,GAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,EAAE;YACpB,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,eAAe;YAC7B,UAAU,EAAE,gBAAgB;YAC5B,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,KAAK;SAElB,CAAC;QACF,YAAO,GAAG,KAAK,CAAC;QAEP,eAAU,GAAG,CAAC,CAAC;QACf,UAAK,GAAG,CAAC,CAAC;QACV,cAAS,GAAG,CAAC,CAAC;QAEvB,eAAU,GAAG,EAAE,CAAC;QAChB,gBAAW,GAAG,EAAE,CAAC;QACjB,iBAAY,GAAG,EAAE,CAAC;QAClB,gBAAW,GAAU,EAAE,CAAC;QACxB,iBAAY,GAAU,EAAE,CAAC;QAGzB,cAAS,GAAG,IAAI,CAAC;KAIZ;IAEL,WAAW;KAEV;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;YAC7E,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAQ;gBAC3C,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;oBAAE,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;iBAAE;aACvF,CAAC,CAAC;SAEJ;QACD,IAAI,CAAC,YAAY,CAAC;YAChB,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;YACrF,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC1E,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;KAG9D;IAED,aAAa;KAEZ;IACD,aAAa,CAAC,KAAU;KAEvB;IACD,aAAa;KAEZ;IACD,SAAS,CAAC,KAAU;QAClB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa;gBAEnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;oBAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;iBACrD;aACF,CAAC,CAAC;SAEJ;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa;gBACnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;oBAClG,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;wBACjF,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACnC,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC5C,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;oBACxG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACrC;aACF,CAAC,CAAC;SAEJ;KACF;;;;;IAMD,cAAc,CAAC,KAAU;QACvB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,GAAQ;;;;;;;gBAQrD,IAAG,GAAG,CAAC,MAAM,GAAC,CAAC,EAAC;oBACd,GAAG,CAAC,OAAO,CAAC,CAAC,aAAiB;wBAE9B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;4BAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;4BACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;4BACpE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;yBACrD;qBACF,CAAC,CAAC;iBACF;gBACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB,CAAC,CAAC;SAEJ;aAAM;;;;;;;;;;;YAcL,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9H,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBACf,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,CAAC;gBAErC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAErD;iBAAM;gBACL,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,CAAC;aACtC;SACF;KACF;;;;;;IAOH,aAAa,CAAC,IAAS;QACrB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE;gBACzF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC7H,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;gBAE/F,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aACrC;SAEF;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAErD;KACF;;;;IAKD,cAAc;QACZ,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;KAE7B;;;;IAKD,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,GAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClH,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SAEd;KAEF;;;;;IAKD,gBAAgB,CAAC,KAAU;;QAEzB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC;gBAChB,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;gBACrF,IAAI,EAAE,EAAE;gBACR,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW;aACnF,CAAC,CAAC;SAEJ;KACF;;;;;IAKD,YAAY,CAAC,GAAQ;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG;;;YAGtE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SAGtB,CAAC,CAAC;KAEJ;;;;IAID,QAAQ;QACN,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;KAChC;;;YAxQA,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,gpGAAyC;;aAE1C;;;YAPQ,iBAAiB;YADjB,sBAAsB;;;4BAU5B,MAAM;gCACN,MAAM;4BACN,KAAK;0BACL,KAAK;yBAsBL,KAAK;oBACL,KAAK;wBACL,KAAK;;;MC/BK,6BAA6B;IAwBxC;QAvBU,qBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;QACtC,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,8BAAyB,GAAG,EAAE,CAAC;QAC/B,kCAA6B,GAAG,EAAE,CAAC;QACnC,YAAO,GAAG,EAAE,CAAC;QACb,mBAAc,GAAG,KAAK,CAAC;QAGhC,gBAAW,GAAU,EAAE,CAAC;QACxB,cAAS,GAAG,KAAK,CAAC;QAClB,WAAM,GAAG,EAAE,CAAC;QACZ,kBAAa,GAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAC,EAAE;YACnB,iBAAiB,EAAE,WAAW;YAC9B,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,gCAAgC;YAC9C,UAAU,EAAE,iCAAiC;YAC7C,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,KAAK;SAElB,CAAC;KACe;IAEjB,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC;QACrE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,GAAQ,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAAE,EAAE,CAAC,CAAC;KACnI;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;KACT;IAED,QAAQ,CAAC,EAAO,EAAE,IAAS;;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC3B;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;aAAM;YACL,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC5F,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;oBACpB,MAAM,QAAQ,GAAQ,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;oBAChE,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,MAAM,IAAG,CAAC,EAAE;wBACxC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,YAAiB;4BAChD,IAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAC;gCAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;6BACrC;yBACF,CAAC,CAAC;qBACJ;iBACF;aAEF;iBAAM;gBACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC5F,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;oBACpB,MAAM,QAAQ,GAAQ,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;oBAChE,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,MAAM,IAAG,CAAC,EAAE;wBACxC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,YAAiB;4BAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,aAAkB,KAAK,aAAa,IAAI,YAAY,CAAC,CAAC;4BACtG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;yBACzC,CAAC,CAAC;qBACJ;iBACF;aAEF;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;KAGF;IACD,WAAW,CAAC,KAAU;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,SAAS,CAAC,IAAS;QACjB,IAAI,IAAI,EAAE;YACR,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,OAAO;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAGD,OAAO;QACL,MAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAA;;QAE3D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;;QAElD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAY;YAC1B,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;gBAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC;KACtE;IAED,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,EAAO,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9C;IAED,6BAA6B;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;;YAnIF,SAAS,SAAC;gBACT,QAAQ,EAAE,2BAA2B;gBACrC,89EAAqD;;aAEtD;;;;+BAEE,MAAM;0BACN,MAAM;wCACN,KAAK;4CACL,KAAK;sBACL,KAAK;6BACL,KAAK;;;MCLK,mBAAmB;IAgD9B;QA7CS,iBAAY,GAAqB;YACxC,WAAW,EAAE;gBACX,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACH,SAAS,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACH,gBAAgB,EAAE;gBACd,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACH,MAAM,EAAE;gBACJ,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;SACF,CAAC;QACO,kBAAa,GAAU,EAAE,CAAC;QAG1B,uBAAkB,GAAU,EAAE,CAAC;QAExC,WAAM,GAAG,EAAE,CAAC;QACZ,cAAS,GAA8D,aAAa,CAAC;QACrF,gBAAW,GAAU,EAAE,CAAC;QACxB,cAAS,GAAG,KAAK,CAAC;QAElB,kBAAa,GAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAC,EAAE;YACnB,iBAAiB,EAAE,WAAW;YAC9B,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,kCAAkC;YAChD,UAAU,EAAE,oCAAoC;YAChD,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,KAAK;SAElB,CAAC;QAEQ,yBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,wBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;KAElC;IAEjB,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO;gBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;aACpD,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;KAGf;IAED,cAAc,CAAC,IAAS,EAAE,SAAc,EAAE,QAAa;;QACrD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9G,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gBACpB,MAAM,QAAQ,GAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,0CAAE,MAAM,IAAG,CAAC,EAAE;oBACvC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAiB;wBAC/C,IAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAC;4BAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;yBACrC;qBACF,CAAC,CAAC;iBACJ;aACF;SACF;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5G,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gBACpB,MAAM,QAAQ,GAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,0CAAE,MAAM,IAAG,CAAC,EAAE;oBACvC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAiB;wBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,aAAkB,KAAK,aAAa,IAAI,YAAY,CAAC,CAAC;wBACtG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;qBACzC,CAAC,CAAC;iBACJ;aACF;SACJ;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAEhB;IAED,WAAW,CAAC,KAAU;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,SAAS,CAAC,IAAS,EAAE,SAAuE;QAE1F,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,OAAO;gBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;oBAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;iBACpD;aACF,CAAC,CAAC;SACN;aAAM;YACL,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,OAAO;gBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;oBAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAO,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBACzF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACrC;aACF,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,OAAO;QACL,MAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;;QAErD,MAAM,WAAW,GAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;;QAEjD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,GAAG,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QAE3C,YAAY,CAAC,OAAO,CAAC,CAAC,OAAY;YAChC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;QAEvC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YACvD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC1D;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YACrD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACxD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YAC5D,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC/D;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YAClD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACrD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;IACD,YAAY;QACV,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;SAC/B;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,IAAI,CAAC,SAAS,GAAG,WAAW,CAAA;SAC7B;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACrE,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAA;SACpC;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;SAC1B;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;SAC/B;KACF;IAGD,cAAc,CAAC,SAAuE;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzH,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACzD;IAED,KAAK;QACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;;;YAvMF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,kjLAA0C;;aAE3C;;;;2BAIE,KAAK;4BAkBL,KAAK;4BAEL,KAAK;iCACL,KAAK;mCAoBL,MAAM;wBACN,MAAM;kCACN,MAAM;;;MC7CI,kBAAkB;IA6B7B,YAAoB,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;QA3B5C,gBAAW,GAAG,CAAC,CAAC;QAChB,kBAAa,GAAG,CAAC,CAAC;QAGlB,iBAAY,GAAG,QAAQ,CAAC;QACxB,kBAAa,GAAG,IAAI,CAAC;QACrB,aAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1F,eAAU,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACxI,aAAQ,GAAG,CAAC,+BAA+B,EAAE,iCAAiC,EAAE,kCAAkC,CAAC,CAAC;QACpH,iBAAY,GAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,mBAAc,GAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,oBAAe,GAAG,CAAC,CAAC;QACV,wBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;QACjD,kBAAa,GAAG,IAAI,YAAY,EAAO,CAAC;QAClD,kBAAa,GAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAC,EAAE;YACnB,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,8BAA8B,GAAG,IAAI,CAAC,YAAY,GAAG,sBAAsB;YAC1F,UAAU,EAAE,KAAK;SAElB,CAAC;QACF,cAAS,GAAG,IAAI,CAAC;KACgC;IACjD,WAAW;QACT,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;KAC5D;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,QAAQ,IAAI,CAAC,iBAAiB;gBAC5B,KAAK,QAAQ;oBACZ,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;oBACtD,MAAM;gBACR,KAAK,SAAS;oBACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;oBACrC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;oBAExD,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,UAAU,CAAC;wBACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;qBACtB,EAAE,GAAG,CAAC,CAAC;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAA;oBACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAE7C,MAAM;aAET;SACF;KAEF;IACD,cAAc;QACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;IACD,kBAAkB,CAAC,KAAU,EAAE,KAAU;QACvC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IACD,oBAAoB,CAAC,KAAU,EAAE,KAAU;QACzC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACL,IAAI,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAC,SAAS,CAAC,CAAA;QAClD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,sBAAsB,CAAC,KAAU,EAAE,KAAU;QAC3C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,SAAS,CAAC,QAAgB;QACxB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,8BAA8B,GAAG,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC/G,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAChD,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,QAAQ,EAAE;oBACb,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC/C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,MAAM;iBACP;gBACD,KAAK,SAAS,EAAE;oBACd,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;oBACrC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAC,SAAS,CAAC,CAAA;oBAClD,MAAM;iBACP;gBACD,KAAK,WAAW,EAAE;oBAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAC,WAAW,CAAC,CAAA;oBACtD,MAAM;iBACP;aACF;SACF;KACF;IAED,kBAAkB;QAChB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;KAC1B;IAED,eAAe;QACb,IAAI,SAAS,GAAG,QAAQ,CAAC;QACzB,IAAI,WAAW,CAAC;QAChB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,QAAQ,IAAI,CAAC,YAAY;YACvB,KAAK,QAAQ,EAAE;gBACb,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBACzB,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK;wBACxC,SAAS,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;qBACrF,CAAC,CAAA;iBACH;qBAAM;;oBAEL,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBACD,MAAM;aACP;YACD,KAAK,SAAS,EAAE;gBACd,SAAS,GAAG,YAAY,CAAC;gBACzB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;oBAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAkB,EAAE,UAAkB;wBAC7D,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BAC5C,SAAS,IAAI,UAAU,KAAM,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC;yBAEjE;qBACF,CAAC,CAAA;oBACF,IAAI,aAAa,CAAC;oBAClB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;wBACzB,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;wBAC9B,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;wBAC9B,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI;wBACH,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;qBACxC;oBACD,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;oBACtC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;iBACjC;qBAAM;;oBAEL,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBACD,MAAM;aACP;YACD,KAAK,WAAW,EAAE;gBAChB,SAAS,GAAG,YAAY,CAAC;gBAEzB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE;oBAC7B,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;oBACnC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACjD,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;oBAClC,IAAI,aAAa,CAAC;oBAClB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;wBAC3B,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;wBAChC,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;wBAChC,aAAa,GAAG,KAAK,CAAA;qBACtB;yBACI;wBACH,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;qBAC1C;oBACD,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;oBACtC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;iBACnC;qBAAM;;oBAEL,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBACD,MAAM;aACP;SACF;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtB,eAAe,EAAE,SAAS;YAC1B,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,WAAW,EAAE,WAAW;YACxB,YAAY;SACb,CAAC,CAAA;KACH;IAED,iBAAiB,CAAC,IAAW,EAAE,IAAW;QACxC,IAAG,IAAI,GAAC,EAAE,IAAI,IAAI,GAAC,CAAC,EAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACzC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;YACtC,OAAM;SACN;aAAI;YACH,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;SACvC;QACF,MAAO,SAAS,GAAC,CAAC,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC;YAC5H,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC;YAClG,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,WAAW,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC;YACzG,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,EAAC,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,CAAC,CAAA;QACjH,QAAQ,IAAI;YACV,KAAK,SAAS;gBACZ,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAE,CAAC,EAAC;oBAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,GAAO,KAAG,GAAG,CAAC,KAAK,IAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAG,IAAI,IAAE,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAC;wBAChC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;qBAEvC;yBAAI;wBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;wBACzC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;qBACtC;iBACF;qBAAK,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAE,CAAC,EAAC;oBACrC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;iBACtC;qBAAI;oBACH,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;iBACvC;gBAED,MAAM;YACN;gBACE,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;gBACtC,OAAO,IAAI,CAAC;gBACZ,MAAM;SAEX;KAEF;IAED,sBAAsB;QACpB,QAAQ,IAAI,CAAC,YAAY;YACvB,KAAK,QAAQ,EAAE;gBACb,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;iBAEvC;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;iBACtC;gBACD,MAAM;aACP;YACD,KAAK,SAAS,EAAE;gBAEZ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;iBAEvC;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;iBACtC;gBACH,MAAM;aACP;YACD,KAAK,WAAW,EAAE;gBAEhB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAC;oBAC1B,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;iBAEvC;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;iBACtC;gBACH,MAAM;aACP;SACF;KACF;;;YAlSA,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,ykHAAyC;;aAE1C;;;YAPQ,eAAe;;;gCASrB,KAAK;+BAGL,KAAK;2BACL,KAAK;kCASL,MAAM;4BACN,MAAM;;;ACjBT;;;MAGa,mBAAmB;IAU9B,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QATxD,UAAK,GAAG,CAAC,CAAC;QAEV,oBAAe,GAAU,EAAE,CAAC;QAEnB,eAAU,GAAG,CAAC,CAAC;QACf,UAAK,GAAG,CAAC,CAAC;QACV,cAAS,GAAG,CAAC,CAAC;QACb,qBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;KAG/C;IACD,WAAW;QACT,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3D;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK;YAClD,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;gBACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;aACvD;SACF,CAAC,CAAC;KACJ;;;IAKD,iBAAiB,CAAC,WAAmB,EAAE,UAAkB;QACvD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC;;QAGD,IAAI,UAAU,IAAI,CAAC,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC9B;SACF;;aAEI;;YAGH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAG7B,IAAI,WAAW,GAAG,CAAC,EAAE;;gBAEnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAElC;;;YAGD,IAAI,WAAW,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;aAC5C;;YAGD,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;aAC5C;;YAGD,IAAI,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,UAAU,EAAE;gBACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAExC;;YAGD,IAAI,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;aAE5C;;;YAID,IAAI,WAAW,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;aAE5C;;YAGD,IAAI,WAAW,GAAG,UAAU,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;aAGlC;;YAGD,IAAI,UAAU,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAEvC;SACF;KAEF;;;IAID,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QACjD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE,CAAC;;gBAEb,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACrD;SACF;QACD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;gBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACrD;SACF;QACD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACrD;KACF;;;YArIF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,spBAA0C;;aAE3C;;;YANQ,iBAAiB;;;yBAevB,KAAK;oBACL,KAAK;wBACL,KAAK;+BACL,MAAM;;;MCVI,gBAAgB;;;YAL5B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;gBACnC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;aAC/B;;;MCDY,mBAAmB;IAK9B;QADU,kBAAa,GAAG,IAAI,YAAY,EAAO,CAAC;KAClC;IAEhB,QAAQ,MAAW;IACnB,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,soBAA2C;;aAE5C;;;;uBAEE,KAAK;sBACL,KAAK;oBACL,KAAK;4BACL,MAAM;;;MCJI,gBAAgB;IAO3B;QADU,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KAC5B;IAEhB,QAAQ,MAAW;IACnB,WAAW,CAAC,GAAQ;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;;;YAjBF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,qoBAAwC;;aAEzC;;;;uBAEE,KAAK;uBACL,KAAK;mBACL,KAAK;sBACL,KAAK;oBACL,KAAK;2BACL,MAAM;;;MCNI,iBAAiB;IAO5B;QAHU,kBAAa,GAAG,IAAI,YAAY,EAAO,CAAC;KAGlC;IAEhB,QAAQ;;KAEP;IACD,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;;YAnBF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,kzCAAyC;;aAE1C;;;;uBAEE,KAAK;sBACL,KAAK;oBACL,KAAK;4BACL,MAAM;6BACN,KAAK;uBACL,KAAK;;;MCNK,qBAAqB;IAChC,iBAAgB;IAEhB,QAAQ,MAAW;;;YARpB,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,oKAA8C;;aAE/C;;;;MCCY,iBAAiB;IAL9B;QAeY,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,wBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;QAUnD,mBAAc,GAAG,KAAK,CAAC;QAMvB,oBAAe,GAAG,KAAK,CAAC;KAgDzB;IA5CC,IAA6B,OAAO,CAAC,OAAmB;QACtD,IAAI,OAAO,EAAE;;YAEX,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;SAC3B;KACF;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;SACjD;KACF;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC;YACT,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;YAChE,IAAI,QAAQ,CAAC,GAAG,GAAG,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE;gBACxD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,YAAY,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;aAC9C;YACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;SACvC,EAAE,EAAE,CAAC,CAAC;QACP,UAAU,CAAC;YACT,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B,EAAE,GAAG,CAAC,CAAC;KACT;IACD,YAAY,CAAC,YAAiB;QAC5B,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;SACnC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;IACD,aAAa;QACX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;;;YA/EF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,okHAAyC;;aAE1C;;;uBAEE,KAAK;4BACL,KAAK;8BACL,KAAK;4BACL,KAAK;yBACL,KAAK;+BACL,KAAK;uBACL,KAAK;qBACL,SAAS,SAAC,QAAQ;2BAElB,MAAM;kCACN,MAAM;0BACN,KAAK;qBACL,KAAK;uBACL,KAAK;6BACL,KAAK;4BACL,KAAK;4BAEL,KAAK;sBAaL,SAAS,SAAC,YAAY;;;MCjCZ,gBAAgB;IAU3B,YAAoB,EAAc,EAAU,QAAmB;QAA3C,OAAE,GAAF,EAAE,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QALtD,gBAAW,GAAG,IAAI,CAAC;QAG5B,WAAM,GAAG,CAAC,CAAC;KAEwD;IACnE,QAAQ,MAAK;IACe,YAAY;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAC0B,WAAW;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAE2B,YAAY;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACyB,UAAU;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACsB,OAAO;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACD,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACtC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE;gBAC3F,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;aACzD;SACF;KACF;IAED,IAAI;QACF,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;aAC9E;SACF;KACF;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SACnE;KACF;IAED,WAAW;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAC3G,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC5B,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACpD,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;SAC9D;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC/B,IAAI,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;gBACtC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC7D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;gBAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;aACxD;iBAAM;gBACL,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACnC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;aAC9D;SACF;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;YAC7B,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7D,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;SACtD;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;YAC9B,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7D,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,EAAE;YACrC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACnC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,EAAE;YACpC,IAAI,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE;gBAC5C,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;aAC7D;iBAAM;gBACL,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;aACrB;SACF;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;KAC3D;;;YA3HF,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;aACxB;;;YAJ0B,UAAU;YAAgB,SAAS;;;2BAM3D,KAAK,SAAC,WAAW;wBACjB,KAAK;mBACL,KAAK;+BACL,KAAK;0BACL,KAAK;sBACL,KAAK;2BAML,YAAY,SAAC,YAAY;0BAIzB,YAAY,SAAC,WAAW;2BAKxB,YAAY,SAAC,YAAY;yBAGzB,YAAY,SAAC,UAAU;sBAGvB,YAAY,SAAC,OAAO;;;MCvBV,aAAa;;;YALzB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;gBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,gBAAgB,CAAC;aAC5B;;;MCHY,UAAU;IACrB,SAAS,CAAC,KAAa,EAAE,GAAG,IAAe;QACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACvD;;;YATF,IAAI,SAAC;gBACJ,IAAI,EAAE,QAAQ;aACf;;;MCCY,qBAAqB;IAChC,SAAS,CAAC,KAAY,EAAE,GAAW,EAAE,SAAiB;QACpD,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI;gBACvB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC;iBACb;aACF,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC;KACd;;;YAdF,IAAI,SAAC;gBACJ,IAAI,EAAE,mBAAmB;aAC1B;;;MCCY,qBAAqB;IAChC,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAClB,iBAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;KAD/B;IAGK,YAAY,CAAC,aAAkB;QAChF,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B;KACF;;;YAZF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B;;;YAJmB,UAAU;;;2BAO3B,MAAM,SAAC,cAAc;2BAErB,YAAY,SAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC;;;MCyBtC,eAAe;;;YArB3B,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,mBAAmB;oBACnB,gBAAgB;oBAChB,iBAAiB;oBACjB,qBAAqB;oBACrB,iBAAiB;oBACjB,UAAU;oBACV,qBAAqB;oBACrB,qBAAqB;iBACtB;gBACD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,CAAC;gBACnD,OAAO,EAAE;oBACP,mBAAmB;oBACnB,gBAAgB;oBAChB,iBAAiB;oBACjB,qBAAqB;oBACrB,iBAAiB;oBACjB,qBAAqB;iBACtB;aACF;;;MCzBY,wBAAwB;IAiBnC;QAhBU,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,kBAAa,GAAuB;YACzC,YAAY,EAAG,EAAE;YACjB,gBAAgB,EAAC,EAAE;YACnB,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,UAAU,EAAC,EAAE;YACb,aAAa,EAAC,KAAK;YACnB,aAAa,EAAC,EAAE;YAChB,UAAU,EAAE,KAAK;SAEpB,CAAC;KAEe;IAEjB,QAAQ;KACP;IACD,iBAAiB;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IACD,iBAAiB;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KACxD;IAED,cAAc,CAAC,OAAY;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;;;YAnCF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,s8GAAgD;;aAEjD;;;;0BAEE,MAAM;0BACN,MAAM;0BACN,MAAM;4BACN,KAAK;;;MCJK,gBAAgB;IAM3B,YAAmB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QALxC,qBAAgB,GAAG,KAAK,CAAC;QAClC,qBAAgB,GAAG,KAAK,CAAC;QAGf,oBAAe,GAAG,IAAI,YAAY,EAAE,CAAC;QAE/C,gBAAW,GAAG,KAAK,CAAC;KADiC;IAQrD,QAAQ,MAAW;IACnB,OAAO;QACL,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,UAAU,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC;;SAEvC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,KAAK,CAAC;KACd;IACD,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,UAAU,CAAC;;YAET,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC;SAEvC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,KAAK,CAAC;KACd;IACD,YAAY,CAAC,GAAY;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,GAAG,KAAK,KAAK,EAAE;YAC3C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;;SAExC;KACF;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;KACxC;IAED,cAAc;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACD,WAAW;;QAET,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC;QAChE,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,MAAM,EAAE;YACnD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACvC,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;gBAClG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;aAChE;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,OAAO,EAAE;YACpD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YACpF,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;gBAClG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;aAChE;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,KAAK,EAAE;YAClD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;YAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;gBAClG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,QAAQ,EAAE;YACrD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;YAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;gBAClG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;aAChE;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,eAAe,EAAE;YAC5D,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;SAC3C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,YAAY,EAAE;YACzD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;;YAE5F,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE;gBAC5F,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;aAChE;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3D;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,QAAQ,EAAE;YACrD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;SAChE;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;;KAEhC;;;YAvHF,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;gBACvB,6bAAuC;;aAExC;;;YANQ,cAAc;;;+BAQpB,KAAK;2BAEL,SAAS,SAAC,cAAc;6BACxB,SAAS,SAAC,gBAAgB;8BAC1B,MAAM;;;MCPI,gBAAgB;IAM3B,YAAoB,KAAiB,EAAU,cAA8B;QAAzD,UAAK,GAAL,KAAK,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;KAAI;IAC1D,KAAK;QAC1B,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACvF,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;;KAEvD;IAED,WAAW;QACT,UAAU,CAAC;;YAET,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC1E,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAC7B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC;gBACvC,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;oBACjH,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;iBAChE;aACF;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;gBAC9B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;gBACnG,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;oBACjH,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;iBAChE;aACF;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;gBAC5B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;oBACjH,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;iBAC1E;aACF;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,EAAE;oBACjH,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;iBAC1E;qBAAM;oBACL,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC;iBAChE;aACF;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,EAAE;gBACtC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC;aAC3C;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;gBACnC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;aAC1E;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,EAAE;gBACtC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;aAC1E;YACD,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/C,EAAE,EAAE,CAAC,CAAC;KACR;;;YAnEF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;aACzB;;;YALmB,UAAU;YACrB,cAAc;;;uBAOpB,KAAK;wBACL,KAAK;oBAIL,YAAY,SAAC,OAAO;;;MCDV,aAAa;;;YANzB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAClD,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAC7C,SAAS,EAAE,CAAC,cAAc,CAAC;aAC5B;;;MCQY,qBAAqB;;;YAZjC,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,wBAAwB;iBACzB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;iBACd;gBACD,OAAO,EAAC;oBACN,wBAAwB;iBACzB;aACF;;;MCbY,kBAAkB;IAC7B,YAAmB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;KAAI;;;YAJ1D,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B;;;YAJmB,gBAAgB;;;MCEvB,SAAS;IAGpB;QAFiB,sBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;QACxD,gBAAW,GAAoB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACrD;IAEhB,KAAK,CAAC,MAAY;QAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;KACvC;;;MCVU,YAAY;;;MCYZ,eAAe;IAc1B,YACU,wBAAkD,EAClD,EAAqB,EACrB,SAAoB,EACrB,MAAoB,EACnB,MAAc;QAJd,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,OAAE,GAAF,EAAE,CAAmB;QACrB,cAAS,GAAT,SAAS,CAAW;QACrB,WAAM,GAAN,MAAM,CAAc;QACnB,WAAM,GAAN,MAAM,CAAQ;QAZxB,cAAS,GAAG,IAAI,CAAC;QAEA,kBAAa,GAAG,IAAI,OAAO,EAAO,CAAC;QAC7C,YAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;;;;;KAelD;IACD,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW;QACT,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAU;YACtC,IAAI,KAAK,YAAY,eAAe,EAAE;;aAErC;YACD,IAAI,KAAK,YAAY,aAAa,EAAE;;gBAElC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;aACxB;YACD,IAAI,KAAK,YAAY,eAAe,EAAE;;;aAGrC;SACF,CAAC,CAAC;KACJ;IACD,eAAe;QACb,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,gBAAgB,CAAC,GAAe;;KAE/B;IAED,eAAe,CAAC,GAAe;QAC7B,GAAG,CAAC,eAAe,EAAE,CAAC;KACvB;IAED,kBAAkB,CAAC,aAAwB;QACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE9F,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAC9D,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;KACxE;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC7B;KACF;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;KACvC;;;YAvFF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,mxBAAsC;;aAEvC;;;YAXyB,wBAAwB;YAAqD,iBAAiB;YAG/G,SAAS;YACT,YAAY;YACqC,MAAM;;;6BAY7D,SAAS,SAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCNpC,YAAY;;;YANxB,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,YAAY,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;gBACnD,eAAe,EAAE,CAAC,eAAe,CAAC;gBAClC,SAAS,EAAE,CAAC,SAAS,CAAC;aACvB;;;MCRY,cAAc;IACzB,YAAoB,oBAA8B,EAAU,sBAAyC;QAAjF,yBAAoB,GAApB,oBAAoB,CAAU;QAAU,2BAAsB,GAAtB,sBAAsB,CAAmB;KAAI;;IAIzG,GAAG,CAAC,KAAU,EAAE,aAAmB,EAAE,KAAW;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAM,KAAK,EAAE,aAAa,CAAC,CAAC;KACjE;;;MCHU,aAAa;IAGxB,YAAoB,wBAAkD,EAAU,MAAsB,EAAU,QAAkB;QAA9G,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,WAAM,GAAN,MAAM,CAAgB;QAAU,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAE/H,IAAI,CAAC,aAAwB,EAAE,MAAoB;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,kBAAkB,GAAG,aAAa,CAAC;QAEpE,OAAO,SAAS,CAAC;KAClB;IAEO,2BAA2B,CAAC,MAAoB;QACtD,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE9B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAErF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;QAC5F,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QAEvC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;YACjD,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAEO,6BAA6B;QACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;KACnC;;;;YAhDF,UAAU,SAAC;gBACV,UAAU,EAAE,YAAY;aACzB;;;YAToB,wBAAwB;YAAE,cAAc;YAAE,QAAQ;;;ACIvE;MAOa,kBAAkB;IAsB7B,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QArB/B,qBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;QAC9C,iCAA4B,GAAG,IAAI,YAAY,EAAU,CAAC;QAC1D,uBAAkB,GAAG,IAAI,YAAY,EAAU,CAAC;QAChD,yBAAoB,GAAG,IAAI,YAAY,EAAU,CAAC;QAClD,kBAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAKrD,sBAAiB,GAAG,KAAK,CAAC;QAK1B,2BAAsB,GAAW,mCAAmC,CAAC;QACrE,mCAA8B,GAAW,kEAAkE,CAAC;QAC5G,uCAAkC,GAAW,wFAAwF,CAAC;QAOtI,yBAAoB,GAAiB;YACnC,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,aAAa;SAClB,CAAA;QAED,yBAAoB,GAAwB;YAC1C,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE;SAC3B,CAAA;QAED,uBAAkB,GAAuB,EACxC,CAAA;KAb6C;IAe9C,QAAQ;KACP;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IAED,gBAAgB;QACd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IAED,mBAAmB;QACjB,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,GAAG,EAAC,GAAG,EAAG,SAAS,EAAE,OAAO,EAAG,SAAS,EAAC,CAAC;QAEjE,IAAG,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;SACjC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IAED,YAAY;QACV,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAC5D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC1B;IAED,oBAAoB;QAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;IAED,0BAA0B;QACxB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC;KAC1C;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAC9B;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,kBAAkB;QAChB,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;;;;;;;;KASxC;IAED,YAAY;QACV,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QAEpC,IAAG,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE;YAC/F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC;YACtD,cAAc,GAAG,KAAK,CAAC;SACxB;aAAM,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACnF,cAAc,GAAG,KAAK,CAAC;SACxB;aAAM,IAAG,IAAI,CAAC,wBAAwB,KAAK,IAAI,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,IAAI,IAAI,CAAC,wBAAwB,KAAK,EAAE,EAAE;YACvI,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,CAAC;YAC7D,cAAc,GAAG,KAAK,CAAC;SACxB;aAAM,IAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,GAAG,EAAE;YACpD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3F,cAAc,GAAG,KAAK,CAAC;SACxB;QACD,OAAO,cAAc,CAAC;KACvB;IAED,cAAc;QACZ,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;KACjF;IAED,uBAAuB,CAAC,KAAc,EAAE,SAAiB;QACvD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;KAClC;;;YArIF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,s+UAA0C;;aAE3C;;;YARQ,aAAa;;;+BAUnB,MAAM;2CACN,MAAM;iCACN,MAAM;mCACN,MAAM;4BACN,MAAM;uBACN,KAAK;6BAEL,SAAS,SAAC,gBAAgB;2BAC1B,SAAS,SAAC,cAAc;;;MCZd,oBAAoB;IAS/B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QARnC,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QACzC,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QACzC,gBAAW,GAAyB,IAAI,YAAY,EAAE,CAAC;QAQ/D,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;IAED,QAAQ;KACP;IACD,iBAAiB;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IACD,iBAAiB;QACf,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,OAAM;SACP;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC1C;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;;YAlCF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,wyGAA4C;;aAE7C;;;YANQ,eAAe;;;0BAQrB,MAAM;0BACN,MAAM;0BACN,MAAM;mBACN,KAAK;+BACL,KAAK;6BACL,KAAK;2BACL,KAAK;;;MCIK,iBAAiB;;;YAZ7B,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,oBAAoB;iBACrB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;iBACd;gBACD,OAAO,EAAE;oBACP,oBAAoB;iBACrB;aACF;;;MCbY,UAAU;IAErB,SAAS,CAAC,KAAY,EAAE,UAAkB;QACxC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACtC,IAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAC;YACjB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAO;gBAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC9D,CAAC,CAAC;SACJ;aAAI;YACF,OAAO,EAAE,CAAC;SACZ;KACA;;;YApBF,IAAI,SAAC;gBACJ,IAAI,EAAE,QAAQ;aACf;;;MCKY,uBAAuB;IAgDlC;QA7CS,iBAAY,GAAyB;YAC5C,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE;gBACR,YAAY,EAAE,EAAE;aACjB;SACF,CAAA;QACQ,kBAAa,GAAU,EAAE,CAAC;QAG1B,uBAAkB,GAAU,EAAE,CAAC;QAExC,WAAM,GAAG,EAAE,CAAC;QACZ,cAAS,GAAwD,WAAW,CAAC;QAC7E,gBAAW,GAAU,EAAE,CAAC;QACxB,cAAS,GAAG,KAAK,CAAC;QAElB,kBAAa,GAA0B;YACrC,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAC,EAAE;YACnB,iBAAiB,EAAE,eAAe;YAClC,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,wBAAwB;YACtC,UAAU,EAAE,0BAA0B;YACtC,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,KAAK;SAElB,CAAC;QAEQ,yBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,wBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;KAElC;IAEjB,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO;gBACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;aACpD,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;KAEf;IAED,cAAc,CAAC,IAAS,EAAE,SAAc,EAAE,QAAa;QACrD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACrD;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAEhB;IAED,WAAW,CAAC,KAAU;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAY,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,SAAS,CAAC,IAAS,EAAE,SAAiB;QAEpC,IAAI,IAAI,EAAE;YACR,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACpH,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,OAAO;oBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;wBAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;qBACpD;iBACF,CAAC,CAAC;aACJ;SAEF;aAAM;YACL,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACpH,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,OAAO;oBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;wBAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAO,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;wBACzF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;qBACrC;iBACF,CAAC,CAAC;aACJ;SAEF;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,OAAO;QACL,MAAM,IAAI,GAAQ,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;;QAExD,MAAM,WAAW,GAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;;QAEjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QAE3C,YAAY,CAAC,OAAO,CAAC,CAAC,OAAY;YAChC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACpB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;QAEvC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YACrD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACxD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YACvD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC1D;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACzD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa;YAClD,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACrD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;IACD,YAAY;QACV,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAA;SAC7B;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAChE,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;SAC/B;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,IAAI,CAAC,SAAS,GAAG,YAAY,CAAA;SAC9B;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;SAC1B;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,WAAW,CAAA;SAC7B;KACF;IAGD,cAAc,CAAC,SAAiB;QAC9B,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,QAAQ,EAAE;YACpH,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACzH,OAAO,IAAI,CAAC;SACb;KACF;IAED,IAAI;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACzD;IAED,KAAK;QACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;;;YAzLF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,24KAA+C;;aAEhD;;;;2BAIE,KAAK;4BAkBL,KAAK;4BAEL,KAAK;iCACL,KAAK;mCAoBL,MAAM;wBACN,MAAM;kCACN,MAAM;;;MClDI,UAAU;IAErB,SAAS,CAAC,KAAU,EAAE,IAAU;QAC9B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE1B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1D,CAAC,CAAC;KACJ;;;YAlBF,IAAI,SAAC;gBACJ,IAAI,EAAE,QAAQ;aACf;;;MCSY,yBAAyB;IAyBpC,YACU,MAAiB,EAClB,uBAAgD,EAC/C,QAAyB;QAFzB,WAAM,GAAN,MAAM,CAAW;QAClB,4BAAuB,GAAvB,uBAAuB,CAAyB;QAC/C,aAAQ,GAAR,QAAQ,CAAiB;QA1BzB,wBAAmB,GAAsB,IAAI,YAAY,EAAE,CAAC;QAC5D,0BAAqB,GAAsB,IAAI,YAAY,EAAE,CAAC;QAExE,WAAM,GAAW,EAAE,CAAC;QACpB,iBAAY,GAA6C,EAAE,CAAC;QAC5D,oBAAe,GAA2B,EAAE,CAAC;QAE7C,WAAM,GAA0B,YAAY,CAAC;QACpC,wBAAmB,GAAQ,EAAE,CAAC;QAC9B,qBAAgB,GAAQ,EAAE,CAAC;QAC3B,aAAQ,GAAG,KAAK,CAAC;QACjB,mBAAc,GAAG,KAAK,CAAC;QACvB,SAAI,GAAG,QAAQ,CAAA;QACxB,eAAU,GAAG,uGAAuG,CAAC;QAErH,sBAAiB,GAAQ,EAAE,CAAC;QAC5B,gCAA2B,GAAY,KAAK,CAAA;QAC5C,mCAA8B,GAAY,KAAK,CAAA;QAC/C,gBAAW,GAAG,IAAI,CAAC;QACnB,kCAA6B,GAAG,CAAC,CAAC;QAClC,4BAAuB,GAAG,EAAE,CAAC;QAqH7B,gBAAW,GAAG;YACZ,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE,UAAU;oBACjB,EAAE,EAAE,UAAU;oBACd,WAAW,EAAE,mFAAmF;oBAChG,WAAW,EAAE,gFAAgF;oBAC7F,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,yBAAyB;oBAChC,EAAE,EAAE,0BAA0B;oBAC9B,WAAW,EAAE,+KAA+K;oBAC5L,WAAW,EAAE,+FAA+F;oBAC5G,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,gCAAgC;oBACvC,EAAE,EAAE,qCAAqC;oBACzC,WAAW,EAAE,0GAA0G;oBACvH,WAAW,EAAE,sGAAsG;oBACnH,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,kBAAkB;oBACzB,EAAE,EAAE,qBAAqB;oBACzB,WAAW,EAAE,4LAA4L;oBACzM,WAAW,EAAE,2FAA2F;oBACxG,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE;wBACV;4BACE,KAAK,EAAE,qBAAqB;4BAC5B,EAAE,EAAE,wBAAwB;4BAC5B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,eAAe;4BACtB,EAAE,EAAE,8BAA8B;4BAClC,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,gBAAgB;4BACvB,EAAE,EAAE,wBAAwB;4BAC5B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,sBAAsB;oBAC7B,EAAE,EAAE,sBAAsB;oBAC1B,WAAW,EAAE,4LAA4L;oBACzM,WAAW,EAAE,4FAA4F;oBACzG,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE;wBACV;4BACE,KAAK,EAAE,UAAU;4BACjB,EAAE,EAAE,oCAAoC;4BACxC,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,qBAAqB;4BAC5B,EAAE,EAAE,8BAA8B;4BAClC,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,eAAe;4BACtB,EAAE,EAAE,yBAAyB;4BAC7B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,gBAAgB;4BACvB,EAAE,EAAE,0BAA0B;4BAC9B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,gBAAgB;oBACvB,EAAE,EAAE,qBAAqB;oBACzB,WAAW,EAAE,wGAAwG;oBACrH,WAAW,EAAE,sFAAsF;oBACnG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,kBAAkB;oBACzB,EAAE,EAAE,qBAAqB;oBACzB,WAAW,EAAE,yIAAyI;oBACtJ,WAAW,EAAE,wFAAwF;oBACrG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,EAAE,EAAE,sBAAsB;oBAC1B,WAAW,EAAE,yEAAyE;oBACtF,WAAW,EAAE,yFAAyF;oBACtG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,EAAE,EAAE,wBAAwB;oBAC5B,WAAW,EAAE,gHAAgH;oBAC7H,WAAW,EAAE,yFAAyF;oBACtG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,EAAE;iBACf;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,KAAK,EAAE,eAAe;oBACtB,EAAE,EAAE,eAAe;oBACnB,WAAW,EAAE,0FAA0F;oBACvG,WAAW,EAAE,qFAAqF;oBAClG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,cAAc;oBACrB,EAAE,EAAE,cAAc;oBAClB,WAAW,EAAE,oRAAoR;oBACjS,WAAW,EAAE,0FAA0F;oBACvG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE;wBACV;4BACE,KAAK,EAAE,2BAA2B;4BAClC,EAAE,EAAE,yBAAyB;4BAC7B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,cAAc;4BACrB,EAAE,EAAE,cAAc;4BAClB,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,wBAAwB;4BAC/B,EAAE,EAAE,wBAAwB;4BAC5B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;wBACD;4BACE,KAAK,EAAE,wBAAwB;4BAC/B,EAAE,EAAE,wBAAwB;4BAC5B,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAC,IAAI;yBAChB;qBACF;iBACF;gBAED;oBACE,KAAK,EAAE,iDAAiD;oBACxD,EAAE,EAAE,gDAAgD;oBACpD,WAAW,EAAE,6IAA6I;oBAC1J,WAAW,EAAE,mFAAmF;oBAChG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,iDAAiD;oBACxD,EAAE,EAAE,gDAAgD;oBACpD,WAAW,EAAE,6IAA6I;oBAC1J,WAAW,EAAE,mFAAmF;oBAChG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,wBAAwB;oBAC/B,EAAE,EAAE,wBAAwB;oBAC5B,WAAW,EAAE,4HAA4H;oBACzI,WAAW,EAAE,8FAA8F;oBAC3G,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,cAAc;oBACrB,EAAE,EAAE,cAAc;oBAClB,WAAW,EAAE,qEAAqE;oBAClF,WAAW,EAAE,oFAAoF;oBACjG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,oCAAoC;oBAC3C,EAAE,EAAE,oCAAoC;oBACxC,WAAW,EAAE,8IAA8I;oBAC3J,WAAW,EAAE,2FAA2F;oBACxG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBAED;oBACE,KAAK,EAAE,oCAAoC;oBAC3C,EAAE,EAAE,oCAAoC;oBACxC,WAAW,EAAE,8IAA8I;oBAC3J,WAAW,EAAE,2FAA2F;oBACxG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,sDAAsD;oBAC7D,EAAE,EAAE,sDAAsD;oBAC1D,WAAW,EAAE,wKAAwK;oBACrL,WAAW,EAAE,sFAAsF;oBACnG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,sDAAsD;oBAC7D,EAAE,EAAE,sDAAsD;oBAC1D,WAAW,EAAE,wKAAwK;oBACrL,WAAW,EAAE,sFAAsF;oBACnG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,iCAAiC;oBACxC,EAAE,EAAE,iCAAiC;oBACrC,WAAW,EAAE,4HAA4H;oBACzI,WAAW,EAAE,kFAAkF;oBAC/F,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,EAAE,EAAE,6BAA6B;oBACjC,WAAW,EAAE,qEAAqE;oBAClF,WAAW,EAAE,sFAAsF;oBACnG,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAC,IAAI;oBACf,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;SACF,CAAA;KA7YA;IAED,WAAW;QACT,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE;YACvB,IAAI,CAAC,2BAA2B,EAAE,CAAA;YAClC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtD,SAAS,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU;gBACzC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ;oBAC3C,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE;wBACjC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;wBACtB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC7B,MAAM,UAAU,GAAQ,EAAE,CAAA;4BAC1B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAc;gCACtC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;6BAC1C,CAAC,CAAC;4BACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,QAAgB;gCACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;oCACtC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;iCAC5C;qCAAM;oCACL,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;iCAC7C;6BACF,CAAC,CAAC;yBACJ;wBACD,IAAI,CAAC,6BAA6B,EAAE,CAAA;qBACrC;iBACF,CAAC,CAAA;gBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ;oBACrC,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE;wBACjC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;wBACtB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC7B,MAAM,UAAU,GAAQ,EAAE,CAAA;4BAC1B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAc;gCACtC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;6BAC1C,CAAC,CAAC;4BACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,QAAgB;gCACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;oCACtC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;iCAC5C;qCAAM;oCACL,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;iCAC7C;6BACF,CAAC,CAAC;yBAEJ;wBACD,IAAI,CAAC,uBAAuB,EAAE,CAAA;qBAC/B;iBACF,CAAC,CAAA;aACH,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU;YACpC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ;gBAC3C,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE;oBAC9D,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;oBACjB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7B,MAAM,UAAU,GAAQ,EAAE,CAAA;wBAC1B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAc;4BACxC,IAAI,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE;gCAC/B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;6BACxC;yBACF,CAAC,CAAC;wBACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,QAAgB;4BACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;gCACtC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;6BACvC;iCAAM;gCACL,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;6BACxC;yBACF,CAAC,CAAC;qBAEJ;oBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAEhC;aACF,CAAC,CAAA;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ;gBACrC,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE;oBAC9D,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;oBACjB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7B,MAAM,UAAU,GAAQ,EAAE,CAAA;wBAC1B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAc;4BACxC,IAAI,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE;gCAC/B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;6BACxC;yBACF,CAAC,CAAC;wBACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe,EAAE,QAAgB;4BACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;gCACtC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;6BACvC;iCAAM;gCACL,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;6BACxC;yBACF,CAAC,CAAC;qBAEJ;oBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAEhC;aACF,CAAC,CAAA;SAEH,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,QAAQ;KAEP;IAqSD,YAAY,CAAC,KAAU,EAAE,MAA6B,EAAE,QAAgB,EAAE,WAAoB;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE;YACT,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,EAAE,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBAC3D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,UAAU,CAAC;oBACT,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;oBACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBACzB,EAAE,EAAE,CAAC,CAAC;gBACP,OAAM;aACP;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;YACnD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;iBACnF;qBAAM;oBACL,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC;oBACvH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;iBAC/E;aACF;SACF;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;oBACpD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;iBAC3F;qBAAM;oBACL,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC;oBACvH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;oBAE/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;oBACrH,IAAI,mBAAmB,EAAE;wBACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;qBACrD;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;aACrD;SACF;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAE3B;IACD,kBAAkB;QAChB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ;YAC3C,IAAI,GAAG,CAAC,KAAK,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC/B;SACF,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ;YACrC,IAAI,GAAG,CAAC,KAAK,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC/B;SACF,CAAC,CAAA;KACH;IAED,YAAY,CAAC,MAAoB;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACtE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;SAClG;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAA;KAC1B;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACrD;IAED,uBAAuB;QACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IAED,2BAA2B;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAQ;YACzC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe;oBACrC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;iBAC/B,CAAC,CAAC;aACJ;SACJ,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ;YACnC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAe;oBACrC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;iBAC/B,CAAC,CAAC;aACJ;SACJ,CAAC,CAAA;KACH;;;YA9gBF,SAAS,SAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,y3IAAiD;;aAElD;;;YARQ,SAAS;YAJT,uBAAuB;YAMvB,eAAe;;;kCASrB,MAAM;oCACN,MAAM;kCAON,KAAK;+BACL,KAAK;uBACL,KAAK;6BACL,KAAK;mBACL,KAAK;;;MCtBK,qBAAqB;IAEhC,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAD3B,oBAAe,GAAG,KAAK,CAAC;KAE9B;IACH,WAAW,CAAC,MAAoB;;QAC9B,IAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,0CAAE,YAAY,MAAK,IAAI,EAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;SAClB;KACF;IACC,eAAe;;QAEf,IAAI,CAAC,MAAM,EAAE,CAAC;KACb;IAED,MAAM;QACJ,IAAG,IAAI,CAAC,eAAe,EAAC;YACtB,MAAM,CAAC,UAAU,CAAC;gBAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;aAC/E,CAAC,CAAC;SACF;KACF;;;YAvBF,SAAS,SAAC;gBACT,QAAQ,EAAE,mBAAmB;aAC9B;;;YAJkC,UAAU;;;8BAM5C,KAAK;;;MCWO,gBAAgB;;;YAX5B,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,qBAAqB;iBACtB;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAC;oBACN,qBAAqB;iBACtB;aACF;;;MCTY,eAAe;IAW1B;QARS,eAAU,GAAG,EAAE,CAAC;QAIf,iBAAY,GAAG,IAAI,YAAY,EAAU,CAAC;KAInC;IAEjB,QAAQ,MAAY;IAEpB,aAAa,CAAC,MAAc;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChC;;;YAtBF,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;gBACvB,k1BAAuC;;aAExC;;;;qBAEE,KAAK;0BACL,KAAK;yBACL,KAAK;2BACL,KAAK;8BACL,KAAK;sBACL,KAAK;2BACL,MAAM;0BACN,KAAK;yBACL,KAAK;wBACL,KAAK;;;MCRK,YAAY;;;YALxB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;aAC3B;;;MCoBY,sBAAsB;;;YAhBlC,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,yBAAyB,EAAE,UAAU;iBACtC;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,iBAAiB;oBACjB,eAAe;oBACf,WAAW;oBACX,gBAAgB;oBAChB,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,yBAAyB;iBAC1B;aACF;;;MCpBY,eAAe;IAC1B,iBAAgB;IAEhB,QAAQ,MAAW;;;YARpB,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,0zDAAsC;;aAEvC;;;;MCCY,qBAAqB;IAChC,iBAAgB;IAEhB,QAAQ,MAAW;;;YARpB,SAAS,SAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,m0DAA6C;;aAE9C;;;;MCIY,aAAa;;;YALzB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;gBACtD,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;aAClD;;;MCAY,iBAAiB;IAI5B,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAHpD,SAAI,GAAG,KAAK,CAAC;QACb,YAAO,GAAW,IAAI,CAAC;QACvB,SAAI,GAAW,UAAU,CAAC;KAC8B;IAExD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK;YACnD,IAAI,KAAK,CAAC,IAAI,EAAE;gBACd,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;aACxB;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,UAAU,CAAC;gBACT,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACnB,EAAE,IAAI,CAAC,CAAC;SACV,CAAC,CAAC;KACJ;IACD,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;IACD,WAAW;KACV;;;YA7BF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,uWAAyC;;aAE1C;;;YANQ,eAAe;;;MCOX,cAAc;;;YAL1B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;gBACjC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,iBAAiB,CAAC;aAC7B;;;MCDY,qBAAqB;IAYhC;QARU,WAAM,GAAyB,IAAI,YAAY,EAAE,CAAC;QAClD,gBAAW,GAAsB,IAAI,YAAY,EAAE,CAAC;KAO9C;IAL0B,mBAAmB,CAAC,KAAoB;QAChF,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;SAC7B;KACF;IAGD,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC;gBACT,IAAI,CAAC,KAAK,EAAE,CAAC;aACd,EAAE,IAAI,CAAC,CAAC;SACV;KACF;IACD,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAC,CAAC;KAC7B;IAED,kBAAkB,CAAC,KAAU;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;;YApCF,SAAS,SAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,ojCAA6C;;aAE9C;;;;sBAEE,KAAK;wBACL,KAAK;4BACL,KAAK;qBACL,MAAM;0BACN,MAAM;kCAEN,YAAY,SAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;;MCJ7B,kBAAkB;;;YAN9B,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;gBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;gBAEvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;aACjC;;;MC2DY,qBAAqB;IACzB,OAAO,OAAO,CAAC,iBAAiC;QAErD,OAAO;YACL,QAAQ,EAAE,qBAAqB;YAC/B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE;aACzD;SACF,CAAC;KACH;;;YA9CF,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,wBAAwB;oBACxB,iBAAiB;oBACjB,kBAAkB;oBAClB,6BAA6B;oBAC7B,mBAAmB;oBACnB,uBAAuB;oBACvB,kBAAkB;oBAClB,UAAU;iBACX;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,gBAAgB;oBAChB,eAAe;oBACf,kBAAkB;oBAClB,WAAW;oBACX,aAAa;oBACb,YAAY;oBACZ,qBAAqB;oBACrB,gBAAgB;oBAChB,iBAAiB;oBACjB,YAAY;oBACZ,sBAAsB;oBACtB,aAAa;oBACb,aAAa;oBACb,cAAc;oBACd,YAAY;oBACZ,gBAAgB;oBAChB,kBAAkB;iBAEnB;gBACD,OAAO,EAAE;oBACP,wBAAwB;iBACzB;aAEF;;;ACnED;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"create-dashboard.js","sources":["../../../projects/create-dashboard/src/lib/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/configurations.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/auth.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/create-dashboard.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/pagination.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/services/configure-widgets.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/services/cs-select.service.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/cs-option/cs-option.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/safe-html.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/select/select.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/user-list/user-list.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/responsibility-center/responsibility-center.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/categories/categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/frequency/frequency.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/pagination/pagination.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio/cs-radio.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-switch/cs-switch.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/cs-select/cs-select.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/tooltip/tooltip.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/pascal.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/click-outside.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/formgroup/formgroup.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/popover/popover.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dashboard-footer/dashboard-footer.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/create-dashboard/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/form-group/form-group.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/floating-bar/floating-bar.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/filter.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/risk-categories/risk-categories.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/pipes/search.pipe.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/scroll-in-view.directive.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/directives/directives.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/no-data/no-data.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/configure-widgets/configure-widgets.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader/loader.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/loader-inline/loader-inline.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/v-loader/v-loader.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.component.ts","../../../projects/create-dashboard/src/lib/ui-kit/smiley-dialog/smiley-dialog.module.ts","../../../projects/create-dashboard/src/lib/create-dashboard-container/create-dashboard.module.ts","../../../projects/create-dashboard/src/public-api.ts","../../../projects/create-dashboard/src/create-dashboard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CreateDashboardService {\r\n constructor() {}\r\n}","export class Configurations {\r\n public envConfig: any;\r\n\r\n constructor() {\r\n this.envConfig = {};\r\n }\r\n\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { of, BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map, shareReplay, catchError, delay} from 'rxjs/operators';\r\nimport { Configurations } from '../../configurations';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n public env !: any;\r\n\r\n constructor(private http: HttpClient, @Optional() config?: Configurations) { \r\n if (config) {\r\n this.env = config.envConfig;\r\n }\r\n }\r\n getAuthorizationToken() {\r\n if (localStorage.getItem('currentUser')) {\r\n const currentUser = JSON.parse(localStorage.getItem('currentUser') || '{}');\r\n return currentUser.token;\r\n }\r\n }\r\n\r\n \r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { of } from 'rxjs';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\nimport { Configurations } from '../../configurations';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CreateDashboardService {\r\n public env !: any;\r\n\r\n httpOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json', token: this.authService.getAuthorizationToken() })\r\n };\r\n constructor(private http: HttpClient,\r\n private authService: AuthService, @Optional() config?: Configurations) {\r\n if (config) {\r\n this.env = config.envConfig;\r\n }\r\n }\r\n\r\n /*\r\n * Fetches the Organization Users List by making an API call\r\n */\r\n getOrganizationUsers(url?: any) {\r\n return this.http.get(this.env.organizationGet + 'organisationUsersList&paginationType=small' +\r\n (url.p ? '&p=' + url.p : '') + (url.type ? '&type=' + url.type : '') +\r\n (url.q ? '&q=' + url.q : ''), this.httpOptions).pipe(map((res: any) => {\r\n return res;\r\n }), retry(2), catchError(err => of(err)));\r\n }\r\n\r\n /**\r\n * Fetches the OrganizationUsers details of users List to set pagination details including number of\r\n * pages and records limit per page,\r\n * @param url contains info about type & search query\r\n */\r\n getOrganizationUsersCount(url?: any) {\r\n return this.http.get(this.env.organizationGet + 'organisationUsersCount&paginationType=small' +\r\n (url.type ? '&type=' + url.type : '') + (url.q ? '&q=' + url.q : ''), this.httpOptions).pipe(map(res => {\r\n return res;\r\n }), catchError(err => of(err)));\r\n }\r\n\r\n getCategoryList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http\r\n .get<any[]>(this.env.riskGet + 'category/list', { headers })\r\n .pipe(retry(2));\r\n }\r\n\r\n /**\r\n * Fetches all users by making an API call\r\n */\r\n getAllUsers() {\r\n return this.http.get(this.env.organizationGet + 'selectAllUsers&type=all', this.httpOptions).pipe(retry(2));\r\n }\r\n\r\n /**\r\n * Fetches responsibilityCentersList by making an API call\r\n */\r\n getResponsibilityCenterList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.get<any[]>(this.env.complianceGet + 'responsibilityCenterTree', {\r\n headers,\r\n }).pipe(retry(2));\r\n }\r\n\r\n getComplianceCategoriesList() {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.get<any[]>(this.env.complianceGet + 'complianceCategory/CategoryListTree', {\r\n headers,\r\n }).pipe(retry(2));\r\n }\r\n\r\n submitDashboard(payload: any) {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.post(this.env.dashboard+'CreateDashboard', payload, { headers }).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n /**\r\n * Fetches the Dashboard details for data population to Edit the dashboard\r\n * @param id \r\n */\r\n fetchDashboard(id: any) {\r\n return this.http.get(this.env.dashboard + id + '?mode=edit', this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n updateDashboard(id: any, payload: any) {\r\n return this.http.put(this.env.dashboard + 'UpdateDashboard/' + id, payload, this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n\r\n getUserInformation() {\r\n return this.http.get(this.env.organizationGet + 'users&id=' + this._ID(), this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n }\r\n _ID() {\r\n const helper = new JwtHelperService();\r\n const myRawToken = localStorage.getItem('currentUser') || '{}';\r\n const isExpired = helper?.isTokenExpired(myRawToken);\r\n if (isExpired === false) {\r\n const tokenInfo = helper?.decodeToken(myRawToken);\r\n return tokenInfo._id;\r\n }\r\n return '';\r\n }\r\n\r\n checkDuplicateDashboardName(payload: any) {\r\n return this.http.post(this.env.dashboard + 'DuplicateDashboard', payload, this.httpOptions).pipe(\r\n retry(2)\r\n );\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n/**\r\n * Service to implement pagination for users while creating an app\r\n */\r\nexport class PaginationService {\r\n currentPage = 1;\r\n searchValue = '';\r\n currentValues = new BehaviorSubject({});\r\n\r\n constructor() { }\r\n\r\n setCurrentState() {\r\n this.currentValues.next(true);\r\n }\r\n reset(){\r\n this.currentPage = 1;\r\n this.searchValue = '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n snackbarSubject = new Subject<any>();\r\n constructor() {}\r\n\r\n show(message: string, icon?: string) {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon,\r\n });\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { widgetDataModel} from '../interfaces/widget-data-model'\r\nimport { HttpClient, HttpHeaders, JsonpClientBackend } from '@angular/common/http';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { of } from 'rxjs';\r\nimport { AuthService } from './auth.service';\r\nimport { identifierModuleUrl } from '@angular/compiler';\r\nimport { Configurations } from '../../configurations';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigureWidgetsService {\r\n public env !: any;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n @Optional() config?: Configurations) { \r\n if (config) {\r\n this.env = config.envConfig;\r\n }}\r\n\r\n complianceWidgetsData = [\r\n {\r\n title: 'Overview',\r\n id: 'overview_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Responsibility Calendar',\r\n id: 'compliance_calendar_flag',\r\n description: 'Displays all responsibilities that are due on a particular day.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-calender.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Responsibility Center Overview',\r\n id: 'responsibility_center_overview_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'My Responsibilities',\r\n id: 'my_responsibilities',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/my-responsibilities.png',\r\n tabOption: true,\r\n value: 0,\r\n },\r\n {\r\n title: 'Key Responsibilities',\r\n id: 'key_responsibilities',\r\n description: 'Displays all responsibilities that are due on a particular day.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/key-responsibilities.png',\r\n tabOption: true,\r\n value: 0,\r\n },\r\n {\r\n title: 'Trend Analysis',\r\n id: 'trend_analysis_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/trend-analysis.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Workroom Updates',\r\n id: 'workroom_alert_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/workroom-updates.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Recent Activities',\r\n id: 'recent_activity_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/recent-activities.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Exception Summary',\r\n id: 'exception_summary_flag',\r\n description: 'Displays all responsibilities that have been assigned to you.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/exception-summary.png',\r\n value: 0,\r\n }\r\n ];\r\n\r\n\r\n\r\n riskWidgetsData = [\r\n {\r\n title: 'Risk Overview',\r\n id: 'risk_overview',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Appetite & Tolerance',\r\n id: 'risk_appetite_tolerance',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Ratings',\r\n id: 'risk_ratings',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risks Without Controls',\r\n id: 'risks_without_controls',\r\n description: 'Description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n }, \r\n {\r\n title: 'Risks Exceeding Risk Tolerance',\r\n id: 'exceeds_risk_tolerance',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Responsibility Centers ',\r\n id: 'inherent_risk_rating_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Residual Risk Rating by Responsibility Centers ',\r\n id: 'residual_risk_rating_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Category Overview',\r\n id: 'risk_category_overview',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Risk Heatmap',\r\n id: 'risk_heatmap',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-heatmap.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Categories',\r\n id: 'inherent_risk_rating_by_categories',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\r\n value: 0,\r\n },\r\n \r\n {\r\n title: 'Residual Risk Rating by Categories',\r\n id: 'residual_risk_rating_by_categories',\r\n description: 'description',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\r\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Residual Risk Rating Trend by Responsibility Centers',\r\n id: 'residual_risk_rating_trend_by_responsibility_centers',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',\r\n value: 0,\r\n }, \r\n {\r\n title: 'Risk Rating Trend by Categories',\r\n id: 'risk_rating_trend_by_categories',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',\r\n value: 0,\r\n },\r\n {\r\n title: 'Top 5 Risk Ratings',\r\n id: 'top_5_residual_risk_ratings',\r\n description: 'Description.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\r\n value: 0,\r\n },\r\n ];\r\n auditWidgetsData = [];\r\n policyWidgetsData = [];\r\n\r\n\r\n // For dashboard view\r\n dashBoardWidgetUpdate(widGetJson: any) {\r\n const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());\r\n return this.http.put(this.env.OrganizationPut + 'dashboardWidgets', widGetJson).pipe(retry(2));\r\n }\r\n\r\n moduleType(identifier:string){\r\n if(JSON.stringify(this.complianceWidgetsData).includes(identifier)){\r\n return 'COMPLIANCE'\r\n }else if(JSON.stringify(this.riskWidgetsData).includes(identifier)){\r\n return 'RISK'\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PopoverService {\r\n stopScroll = false;\r\n positionX!: number;\r\n positionY!: number;\r\n popoverHeight: any;\r\n popoverWidth: any;\r\n elementPosition: any;\r\n elementDirection: any;\r\n constructor() {\r\n console.log(this.popoverHeight);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { EditorConfig } from 'vcomply-editor';\r\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\r\nimport { CreateDashboardService } from './services/create-dashboard.service';\r\nimport { PaginationService } from './services/pagination.service';\r\nimport { UserListConfiguration } from './user-list/user-list.config';\r\nimport { CreateDashboardForm } from './create-dashboard-config';\r\nimport { SnackBarService } from '../ui-kit/snack-bar/snack-bar.service';\r\nimport { ConfigureWidgetsService } from './services/configure-widgets.service';\r\nimport { findIndex } from 'rxjs/operators';\r\n\r\n\r\nimport * as dayjs from 'dayjs';\r\nimport * as customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport { PopoverService } from '../ui-kit/popover/popover.service';\r\ndayjs.extend(customParseFormat);\r\n\r\n@Component({\r\n selector: 'app-create-dashboard',\r\n templateUrl: './create-dashboard.component.html',\r\n styleUrls: ['./create-dashboard.component.less']\r\n})\r\nexport class CreateDashboardComponent implements OnInit, OnChanges {\r\n\r\n activeSelector = '';\r\n disabled = false;\r\n @Input() mode = 'CREATE';\r\n @Input() dashboardId = '';\r\n @Output() close = new EventEmitter();\r\n @Input() createdBy = 0;\r\n\r\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\r\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\r\n animation = true;\r\n @Input() configureWidget = false\r\n\r\n totalPages = 1;\r\n totalList = 1;\r\n usersList: any[] = [];\r\n vLoader = true;\r\n userListLoaded = false;\r\n rcListLoaded = false;\r\n complianceCategoriesListLoaded = false;\r\n riskCategoryListLoaded = false;\r\n hideToDate = false;\r\n listDetails: UserListConfiguration = {\r\n selectedUsersList: [],\r\n nonRemovableUsersList: [],\r\n displayElementKey: 'member_name',\r\n elementIdKey: 'member_id',\r\n tooltipKey: 'member_email',\r\n };\r\n dashboardDescription: EditorConfig = {\r\n placeholder: 'Description (Max limit: 250 characters)',\r\n mode: 'prime',\r\n id: 'description'\r\n }\r\n responsibilityCategoriesTree: any = {\r\n regulations: {\r\n list: [],\r\n selectedList: []\r\n },\r\n standards: {\r\n list: [],\r\n selectedList: []\r\n },\r\n internalControls: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n }\r\n };\r\n allComplianceCategories: any[] = [];\r\n allRiskCategories: any[] = [];\r\n showRiskCategory = false;\r\n showCriteria = true;\r\n\r\n dashboardForm: CreateDashboardForm = {\r\n dashboardName: '',\r\n dashboardDescriptionText: '',\r\n selectedViewers: [],\r\n selectedFromDate: undefined,\r\n selectedToDate: undefined,\r\n selectedResponsibilityCenters: [],\r\n selectedResponsibilityCategories: [],\r\n selectedRiskCategories: [],\r\n displayCriteria: 'or',\r\n configureWidget: [],\r\n frequencyDetails: '',\r\n selectedFrequencyType: '',\r\n selectedFrequencies: [0],\r\n frequencyMessage: '',\r\n frequencyDate: 1\r\n }\r\n\r\n\r\n openConfigureWidgets = false;\r\n selectedWidgets: any = [];\r\n displayedWidgets: any = []\r\n\r\n\r\n responsibilityCentersList = [];\r\n datePickerOverlay = false;\r\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\r\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\r\n\r\n categoryListLoaded = false;\r\n showRiskWidgets = false;\r\n showComplianceWidgets = false;\r\n\r\n riskCategoryList = {\r\n strategic: {\r\n list: [],\r\n selectedList: []\r\n },\r\n operational: {\r\n list: [],\r\n selectedList: []\r\n },\r\n compliance: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n },\r\n };\r\n\r\n fromDatePickerConfig: IDatePickerConfig = {\r\n min: this.getCurrentDate()\r\n }\r\n\r\n toDatePickerConfig: IDatePickerConfig = {\r\n }\r\n\r\n isSmiley!: boolean;\r\n smileyMessage: string = '';\r\n\r\n constructor(\r\n private createDashboardService: CreateDashboardService,\r\n private paginationService: PaginationService,\r\n private cdr: ChangeDetectorRef,\r\n private snackBar: SnackBarService,\r\n public popoverService: PopoverService,\r\n private configureWidgetsService: ConfigureWidgetsService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n if (this.createdBy) {\r\n this.listDetails.nonRemovableUsersList.push(this.createdBy);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\r\n this.close.emit({ mode: 'discard' });\r\n this.isSmiley = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.getOrganizationUsersCount('');\r\n this.getCategoryList();\r\n this.getRCList();\r\n this.getComplianceCategoryList();\r\n this.setFrequency(\"2~1~0~0\", 'import');\r\n this.checkWhetherAllListsLoaded();\r\n this.getUsersList('');\r\n this.createDashboardService.getUserInformation().subscribe((res: any) => {\r\n const quickLink = res.quick_link;\r\n if (quickLink.risk) {\r\n this.showRiskCategory = true;\r\n } else {\r\n this.showRiskCategory = false;\r\n }\r\n }, error => { console.log(error) });\r\n\r\n }\r\n\r\n /**\r\n * Displays the listing pages the left side of policy form to set and edit the dropdown fields values\r\n * @param type holds name of particular list is to be displayed\r\n * @param event contains boolean value to display the list or not\r\n */\r\n activateSelector(type: any, event: boolean) {\r\n if (type == 'frequency' || this.activeSelector == 'frequency') {\r\n this.showCriteria = false;\r\n setTimeout(() => {\r\n this.showCriteria = true;\r\n }, 1);\r\n }\r\n this.activeSelector = event ? type : '';\r\n }\r\n\r\n openFromDatePicker() {\r\n this.fromDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n openToDatePicker() {\r\n this.toDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n closeFromDatePicker() {\r\n if (!this.dashboardForm.selectedFromDate) {\r\n this.dashboardForm.selectedToDate = undefined;\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n return\r\n }\r\n let minToDate = this.setToDate(this.dashboardForm.selectedFromDate)\r\n this.toDatePickerConfig = { min: minToDate };\r\n\r\n const fromDate = new Date(minToDate.split('-').reverse().join('-'));\r\n const toDate = new Date(this.dashboardForm.selectedToDate)\r\n const inValidDate = (fromDate >= toDate) ? true : false;\r\n if (inValidDate) {\r\n this.dashboardForm.selectedToDate = undefined;\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n }\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n closeToDatePicker() {\r\n this.toDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n animateImage() {\r\n const circleImage = document.getElementsByClassName('image')\r\n }\r\n\r\n saveFrequency(eventValues: any) {\r\n this.dashboardForm.selectedFrequencyType = eventValues.frequencyType;\r\n this.dashboardForm.selectedFrequencies = eventValues.frequencies;\r\n this.dashboardForm.frequencyMessage = eventValues.frequencyString;\r\n this.dashboardForm.frequencyDate = eventValues.selectedDate;\r\n this.activateSelector('', false)\r\n }\r\n\r\n getCurrentDate() {\r\n let today = new Date();\r\n return today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n setToDate(data: string) {\r\n let today = new Date(data);\r\n return today.getDate() + 1 + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n getFromDate(data: string) {\r\n let today = new Date(data);\r\n return today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear();\r\n }\r\n configureDashboard() {\r\n let fieldsStatus = this.validateDashboard();\r\n if (fieldsStatus) {\r\n if (this.mode == 'CREATE') {\r\n this.vLoader = true;\r\n const payload = {\r\n dashboard_name: this.dashboardForm.dashboardName,\r\n dashboard_id: ''\r\n }\r\n this.createDashboardService.checkDuplicateDashboardName(payload).subscribe(res => {\r\n if (!res) {\r\n this.vLoader = false;\r\n this.showRiskWidgets = (this.showRiskCategory && (this.dashboardForm.selectedRiskCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0)) ? true : false;\r\n this.showComplianceWidgets = (this.dashboardForm.selectedResponsibilityCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0) ? true : false;\r\n this.openConfigureWidgets = true;\r\n } else {\r\n this.vLoader = false;\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n return;\r\n }\r\n }, error => {\r\n console.error(error)\r\n this.vLoader = false;\r\n });\r\n } else if (this.mode == 'EDIT') {\r\n this.vLoader = true;\r\n const payload = {\r\n dashboard_name: this.dashboardForm.dashboardName,\r\n dashboard_id: this.dashboardId\r\n }\r\n this.createDashboardService.checkDuplicateDashboardName(payload).subscribe(res => {\r\n if (!res) {\r\n this.vLoader = false;\r\n this.showRiskWidgets = (this.showRiskCategory && (this.dashboardForm.selectedRiskCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0)) ? true : false;\r\n this.showComplianceWidgets = (this.dashboardForm.selectedResponsibilityCategories.length > 0 || this.dashboardForm.selectedResponsibilityCenters.length > 0) ? true : false;\r\n this.openConfigureWidgets = true;\r\n } else {\r\n this.vLoader = false;\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n return;\r\n }\r\n }, error => {\r\n this.vLoader = false;\r\n console.error(error)\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Fetches organization users count api to get total number of pages\r\n * @param Url contains prams\r\n */\r\n getOrganizationUsersCount(Url: any) {\r\n this.createDashboardService.getOrganizationUsersCount(Url).subscribe(res => {\r\n this.totalList = res.total_members;\r\n if (res.total_members && res.limit_per_page > 1) {\r\n this.totalPages = res.create_page;\r\n } else {\r\n this.totalPages = 1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get users list by making api call and pre selects all admins by adding to viewers\r\n * @param url contains query params for organization users api\r\n */\r\n getUsersList(url: any) {\r\n this.createDashboardService.getAllUsers().subscribe((res: any) => {\r\n\r\n this.usersList = res;\r\n this.userListLoaded = true;\r\n\r\n if (this.mode === 'EDIT') {\r\n this.vLoader = true;\r\n } else {\r\n this.dashboardForm.selectedViewers = this.setList(this.usersList, [this.createdBy], 'member_id');\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n this.vLoader = false;\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n getComplianceCategoryList() {\r\n this.createDashboardService.getComplianceCategoriesList().subscribe((res: any) => {\r\n const data = res;\r\n this.allComplianceCategories = Object.assign(res)\r\n // cloneDeep(res);\r\n data.forEach((element: any) => {\r\n if (element && element.compliance_type == 0) {\r\n this.responsibilityCategoriesTree.others.list.push(element);\r\n }\r\n if (element && element.compliance_type == 1) {\r\n this.responsibilityCategoriesTree.regulations.list.push(element);\r\n }\r\n if (element && element.compliance_type == 2) {\r\n this.responsibilityCategoriesTree.standards.list.push(element);\r\n }\r\n if (element && element.compliance_type == 3) {\r\n this.responsibilityCategoriesTree.internalControls.list.push(element);\r\n }\r\n });\r\n this.complianceCategoriesListLoaded = true;\r\n }, (err: any) => {\r\n console.error(err);\r\n this.complianceCategoriesListLoaded = true;\r\n });\r\n }\r\n\r\n\r\n saveSelectedCategory(event: any) {\r\n console.log(\"event==>>>\", event);\r\n }\r\n\r\n getCategoryList() {\r\n this.createDashboardService.getCategoryList().subscribe((res: any) => {\r\n this.riskCategoryList.strategic.list = res.strategic_arr;\r\n this.riskCategoryList.operational.list = res.operational_arr;\r\n this.riskCategoryList.compliance.list = res.compliance_arr;\r\n this.riskCategoryList.others.list = res.others_arr;\r\n this.riskCategoryListLoaded = true;\r\n this.allRiskCategories = [...new Set(this.allRiskCategories.concat(res.strategic_arr, res.operational_arr, res.compliance_arr, res.others_arr))]\r\n\r\n }, err => {\r\n console.error(err);\r\n this.riskCategoryListLoaded = true;\r\n\r\n });\r\n }\r\n\r\n /**\r\n * It is to ensure whether all required lists on Policy from is loaded from the api call or not\r\n */\r\n checkWhetherAllListsLoaded() {\r\n if (this.rcListLoaded && this.complianceCategoriesListLoaded && this.riskCategoryListLoaded && this.userListLoaded) {\r\n if (this.mode === 'EDIT') {\r\n this.editDashboard();\r\n } else {\r\n this.vLoader = false;\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.checkWhetherAllListsLoaded();\r\n }, 300);\r\n }\r\n }\r\n\r\n setSelectedWidgets(data: any) {\r\n if (this.mode === 'CREATE') {\r\n const widgetsArray: any = []\r\n data.forEach((element: any) => {\r\n let obj: any = {}\r\n obj.module_name = element.module;\r\n obj._id = '';\r\n obj.widget_name = element.title\r\n obj.widget_code = element.id;\r\n obj.sub_widgets = [];\r\n obj.state = 'ACTIVE'\r\n if (element.subWidgets.length > 0) {\r\n element.subWidgets.forEach((subWidget: any) => {\r\n let subWidgetObject: any = {}\r\n subWidgetObject._id = '';\r\n subWidgetObject.widget_name = subWidget.title\r\n subWidgetObject.widget_code = subWidget.id;\r\n subWidgetObject.state = (subWidget.value) ? 'ACTIVE' : 'INACTIVE'\r\n obj.sub_widgets.push(Object.assign(subWidgetObject))\r\n });\r\n }\r\n widgetsArray.push(obj)\r\n });\r\n\r\n this.dashboardForm.configureWidget = widgetsArray;\r\n } else if (this.mode === 'EDIT') {\r\n const widgetsArray: any = []\r\n\r\n data.forEach((element: any) => {\r\n if (!JSON.stringify(this.dashboardForm.configureWidget).includes(element.id)) {\r\n let obj: any = {}\r\n obj.module_name = element.module;\r\n obj._id = '';\r\n obj.widget_name = element.title\r\n obj.widget_code = element.id;\r\n obj.sub_widgets = [];\r\n obj.state = 'ACTIVE'\r\n if (element.subWidgets.length > 0) {\r\n element.subWidgets.forEach((subWidget: any) => {\r\n let subWidgetObject: any = {}\r\n subWidgetObject._id = '';\r\n subWidgetObject.widget_name = subWidget.title\r\n subWidgetObject.widget_code = subWidget.id;\r\n subWidgetObject.state = (subWidget.value) ? 'ACTIVE' : 'INACTIVE'\r\n obj.sub_widgets.push(subWidgetObject)\r\n });\r\n }\r\n this.dashboardForm.configureWidget.push(obj)\r\n } else {\r\n const index = this.selectedWidgets.findIndex((ele: any) => ele.widget_code == element.id)\r\n if (index != -1) {\r\n this.selectedWidgets[index].state = 'ACTIVE'\r\n if (this.selectedWidgets[index].sub_widgets.length > 0) {\r\n this.selectedWidgets[index].sub_widgets.forEach((subWidgetData: any) => {\r\n const elementIndex = element.subWidgets.findIndex((ele: any) => ele.id == subWidgetData.widget_code)\r\n if (elementIndex != -1) {\r\n subWidgetData.state = (element.subWidgets[elementIndex].value) ? 'ACTIVE' : 'INACTIVE'\r\n }\r\n });\r\n }\r\n }\r\n\r\n }\r\n });\r\n this.dashboardForm.configureWidget.forEach((savedWidget: any) => {\r\n const index = data.findIndex((dataElement: any) => dataElement.id == savedWidget.widget_code)\r\n if (index == -1) {\r\n savedWidget.state = 'INACTIVE';\r\n if (savedWidget.sub_widgets.length > 0) {\r\n savedWidget.sub_widgets.forEach((saveSubWidget: any) => {\r\n saveSubWidget.state = 'INACTIVE'\r\n });\r\n }\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets = data\r\n this.openConfigureWidgets = false;\r\n this.submitDashboard();\r\n\r\n }\r\n\r\n closeConfigureWidgets(event: boolean) {\r\n this.openConfigureWidgets = event;\r\n }\r\n\r\n /**\r\n * Filter list user's list based on pagination by making api call\r\n * @param event specifies a boolean value to call api\r\n */\r\n paginationFilter(event: any) {\r\n if (event) {\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: 'all_except_executive',\r\n q: (!this.paginationService.searchValue) ? '' : this.paginationService.searchValue,\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n getRCList() {\r\n this.createDashboardService.getResponsibilityCenterList().subscribe((res: any) => {\r\n this.responsibilityCentersList = res;\r\n this.rcListLoaded = true;\r\n\r\n }, (err: any) => {\r\n console.error(err);\r\n this.rcListLoaded = true;\r\n });\r\n }\r\n\r\n saveSelectedList(type: string, selectedItems: any) {\r\n switch (type) {\r\n case 'rc':\r\n this.dashboardForm.selectedResponsibilityCenters = this.setList(this.responsibilityCentersList, selectedItems, 'item_id');\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n case 'whoCanView':\r\n this.dashboardForm.selectedViewers = selectedItems\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n break;\r\n case 'responsibilityCategories':\r\n this.dashboardForm.selectedResponsibilityCategories = selectedItems;\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n case 'riskCategory':\r\n this.dashboardForm.selectedRiskCategories = selectedItems;\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n }\r\n this.activateSelector('', false);\r\n }\r\n\r\n remove(type: any, event: any, removeIndex?: any) {\r\n switch (type) {\r\n case 'rc':\r\n const rcIndex = this.dashboardForm.selectedResponsibilityCenters.findIndex((rc: any) => rc.rc_id == event.rc_id);\r\n if (rcIndex !== -1) {\r\n const parentRc: any = this.dashboardForm.selectedResponsibilityCenters[rcIndex];\r\n this.dashboardForm.selectedResponsibilityCenters.splice(rcIndex, 1);\r\n\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n const removeIndex = this.dashboardForm.selectedResponsibilityCenters.findIndex((removeElement: any) => removeElement.rc_id == childElement);\r\n this.dashboardForm.selectedResponsibilityCenters.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n case 'whoCanView':\r\n const reviewerIndex = this.dashboardForm.selectedViewers.findIndex((viewer: any) => viewer.member_id == event.member_id);\r\n this.dashboardForm.selectedViewers.splice(reviewerIndex, 1);\r\n break;\r\n\r\n case 'responsibilityCategories':\r\n const CCcategoryIndex = this.dashboardForm.selectedResponsibilityCategories.findIndex((CCcategory: any) => CCcategory.category_id == event.category_id);\r\n this.dashboardForm.selectedResponsibilityCategories.splice(CCcategoryIndex, 1);\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n case 'riskCategory':\r\n const riskCategoryIndex = this.dashboardForm.selectedRiskCategories.findIndex((riskCategory: any) => riskCategory.category_id == event.category_id);\r\n if (riskCategoryIndex !== -1) {\r\n const parent: any = this.dashboardForm.selectedRiskCategories[riskCategoryIndex];\r\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\r\n if (parent?.child_cat_ids?.length > 0) {\r\n parent.child_cat_ids.forEach((childElement: any) => {\r\n const removeIndex = this.dashboardForm.selectedRiskCategories.findIndex((removeElement: any) => removeElement.category_id == childElement);\r\n this.dashboardForm.selectedRiskCategories.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n this.dashboardForm.selectedRiskCategories.splice(riskCategoryIndex, 1);\r\n if(this.dashboardForm.selectedResponsibilityCenters.length==0){\r\n if (this.dashboardForm.selectedResponsibilityCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='COMPLIANCE')\r\n } else if (this.dashboardForm.selectedRiskCategories.length==0){\r\n this.selectedWidgets = this.selectedWidgets.filter((element:any)=>element.module_name!='RISK')\r\n }\r\n }\r\n break;\r\n\r\n }\r\n }\r\n\r\n setList(list: any[], ids: any[], key: string) {\r\n const data: any = [];\r\n\r\n ids.forEach((element: any) => {\r\n const index = list.findIndex((listElement: any) => listElement[key] == element);\r\n if (index !== -1) {\r\n data.push(list[index]);\r\n }\r\n });\r\n return data;\r\n }\r\n submitted = false\r\n\r\n /**\r\n * Returns id's from a particular list elements\r\n * @param list actual selected list\r\n * @param key contains key to extract id from the list\r\n */\r\n returnIds(list: any[], key: string) {\r\n return list?.map(ele => { if (ele[key]) { return ele[key]; } });\r\n }\r\n\r\n /**\r\n * Validates the data submitted on create dashboard form\r\n */\r\n validateDashboard() {\r\n setTimeout(() => {\r\n this.submitted = true;\r\n\r\n }, 100);\r\n const event = this.dashboardForm.dashboardName;\r\n const re = /&nbsp;|<br>/g;\r\n this.dashboardForm.dashboardName = event.replace(re, '').trim();\r\n const description = this.dashboardForm.dashboardDescriptionText;\r\n this.dashboardForm.dashboardDescriptionText = description.replace(re, '').trim();\r\n if (!this.dashboardForm.dashboardName || this.dashboardForm.dashboardName.trim() == ''\r\n || (this.dashboardForm.dashboardName.length > 30)\r\n || (this.dashboardForm.dashboardDescriptionText.length > 250)\r\n || (this.dashboardForm.selectedFromDate && (!this.dashboardForm.selectedToDate))\r\n || (this.dashboardForm.selectedResponsibilityCenters.length == 0 &&\r\n this.dashboardForm.selectedResponsibilityCategories.length == 0 &&\r\n this.dashboardForm.selectedRiskCategories.length == 0)) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Makes an api call to create a policy\r\n * @param dashboard contains dashboardForm data\r\n */\r\n submitDashboard() {\r\n\r\n this.submitted = false;\r\n const valid = this.validateDashboard();\r\n if (!valid) {\r\n return false;\r\n }\r\n this.vLoader = true;\r\n const dashboard = this.dashboardForm;\r\n const payload: any = {\r\n dashboard_name: dashboard.dashboardName,\r\n description: [\r\n {\r\n content: dashboard.dashboardDescriptionText,\r\n attachments: []\r\n }\r\n ],\r\n visible_to_users: this.returnIds(dashboard.selectedViewers, 'member_id'),\r\n responsibility_center: this.returnIds(dashboard.selectedResponsibilityCenters, 'item_id'),\r\n responsibility_category: this.returnIds(dashboard.selectedResponsibilityCategories, 'category_id'),\r\n risk_category: this.returnIds(dashboard.selectedRiskCategories, 'category_id'),\r\n display_criteria: (dashboard.displayCriteria === 'and') ? 'BOTH_RC_AND_CATEGORY' : 'RC_OR_CATEGORY',\r\n timeframe: {\r\n start_date: (dashboard.selectedFromDate) ? dayjs(dashboard.selectedFromDate).format('YYYY-MM-DD') : '',\r\n end_date: (dashboard.selectedToDate) ? dayjs(dashboard.selectedToDate).format('YYYY-MM-DD') : '',\r\n\r\n },\r\n email_summary: this.setFrequency('', 'export'), //setFormat\r\n widget_details: dashboard.configureWidget\r\n\r\n }\r\n if (this.mode == 'CREATE') {\r\n this.createDashboardService.submitDashboard(payload).subscribe((res: any) => {\r\n this.vLoader = false;\r\n // this.snackBar.show('The dashboard has been created.');\r\n this.isSmiley = true;\r\n this.smileyMessage = 'The dashboard has been created.'\r\n setTimeout(() => {\r\n this.isSmiley = false;\r\n this.close.emit({ mode: 'created', id: res._id });\r\n }, 3000);\r\n\r\n },\r\n err => {\r\n if (err.status === 409) {\r\n this.snackBar.show('A dashboard with this name already exists. Specify a different name for the dashboard.');\r\n this.vLoader = false;\r\n } else {\r\n console.error(err);\r\n this.vLoader = false;\r\n this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');\r\n }\r\n\r\n\r\n }\r\n );\r\n }\r\n if (this.mode === 'EDIT') {\r\n payload.widget_update_flag = true\r\n this.createDashboardService.updateDashboard(this.dashboardId, payload).subscribe({\r\n next: (res: any) => {\r\n this.vLoader = false;\r\n // this.snackBar.show('The dashboard has been updated');\r\n this.isSmiley = true;\r\n this.smileyMessage = 'The dashboard has been updated';\r\n setTimeout(() => {\r\n this.isSmiley = false;\r\n this.close.emit({ mode: 'updated' });\r\n }, 3000);\r\n\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.vLoader = false;\r\n this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');\r\n }\r\n });\r\n\r\n\r\n }\r\n }\r\n\r\n editDashboard() {\r\n if (this.dashboardId) {\r\n this.createDashboardService.fetchDashboard(this.dashboardId).subscribe((res: any) => {\r\n const data = res;\r\n this.listDetails.nonRemovableUsersList = [res.created_by]\r\n this.populateDashboardForm(data);\r\n }, error => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n\r\n populateDashboardForm(data: any) {\r\n this.dashboardForm.dashboardName = data.dashboard_name,\r\n this.dashboardForm.dashboardDescriptionText = data.description[0].content,\r\n this.dashboardForm.selectedViewers = this.setList(this.usersList, data.visible_to_users, 'member_id');\r\n this.listDetails.selectedUsersList = this.dashboardForm.selectedViewers;\r\n this.dashboardForm.selectedResponsibilityCenters = this.setList(this.responsibilityCentersList, data.responsibility_center, 'item_id');\r\n this.dashboardForm.selectedResponsibilityCategories = this.setList(this.allComplianceCategories, data.responsibility_category, 'category_id');\r\n this.dashboardForm.selectedRiskCategories = this.setList(this.allRiskCategories, data.risk_category, 'category_id');\r\n this.dashboardForm.displayCriteria = (data.display_criteria === \"BOTH_RC_AND_CATEGORY\") ? 'and' : 'or';\r\n this.dashboardForm.selectedFromDate = (data?.timeframe?.start_date) ? dayjs(data?.timeframe?.start_date)?.toDate() : undefined;\r\n this.dashboardForm.selectedToDate = (data?.timeframe?.end_date) ? dayjs(data?.timeframe?.end_date)?.toDate() : undefined;\r\n this.vLoader = false;\r\n this.dashboardForm.configureWidget = data.widget_details\r\n this.selectedWidgets = data.widget_details.length > 0 ? [...new Set(data.widget_details)] : [];\r\n this.displayedWidgets = data.all_widgets.length > 0 ? [...new Set(data.all_widgets)] : [];\r\n this.setFrequency(data?.email_summary, 'import');\r\n let minToDate = this.setToDate(data?.timeframe?.start_date);\r\n this.toDatePickerConfig = { min: minToDate };\r\n this.hideToDate = true;\r\n setTimeout(() => {\r\n this.hideToDate = false;\r\n }, 20);\r\n\r\n }\r\n\r\n setFrequency(event: any, mode: any) {\r\n if (mode === 'export') {\r\n switch (this.dashboardForm.selectedFrequencyType) {\r\n case 'weekly':\r\n const weeklyValueData = this.dashboardForm?.selectedFrequencies?.map((ele: any) => Number(ele) + 1);\r\n const weeklyValue = weeklyValueData?.join();\r\n return '2~' + weeklyValue + '~0~0'\r\n case 'monthly':\r\n const monthlyValueData = this.dashboardForm?.selectedFrequencies?.map((ele: any) => Number(ele) + 1);\r\n const monthlyValue = monthlyValueData?.join();\r\n return '3~' + this.dashboardForm?.frequencyDate + '~' + monthlyValue + '~0'\r\n case 'quarterly':\r\n const quarterlyValueData = Number(this.dashboardForm.selectedFrequencies) + 1;\r\n return '7~' + this.dashboardForm.frequencyDate + '~' + quarterlyValueData + '~0'\r\n\r\n }\r\n }\r\n if (mode === 'import') {\r\n const val = event.split('~')\r\n switch (val[0]) {\r\n case '2': {\r\n let stringVal = \"Every \";\r\n this.dashboardForm.selectedFrequencyType = 'weekly'\r\n this.dashboardForm.selectedFrequencies = val[1]?.split(',')?.map((element: any) => Number(element) - 1);\r\n this.dashboardForm.selectedFrequencies?.forEach((dayIndex: any, index: any) => {\r\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\r\n })\r\n this.dashboardForm.frequencyMessage = stringVal;\r\n }\r\n\r\n break\r\n case '3': {\r\n let stringVal = \"every \";\r\n this.dashboardForm.selectedFrequencyType = 'monthly'\r\n this.dashboardForm.frequencyDate = val[1]\r\n this.dashboardForm.selectedFrequencies = val[2]?.split(',')?.map((element: any) => Number(element) - 1);\r\n this.dashboardForm.selectedFrequencies.forEach((monthIndex: any, index: any) => {\r\n stringVal += index === 0 ? this.monthNames[monthIndex] : ', ' + this.monthNames[monthIndex];\r\n })\r\n let monthDateName;\r\n if (this.dashboardForm.frequencyDate == \"1\") {\r\n monthDateName = '1st'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"2\") {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"3\") {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.dashboardForm.frequencyDate + 'th'\r\n }\r\n this.dashboardForm.frequencyMessage = monthDateName + ' of ' + stringVal;\r\n }\r\n break\r\n case '7': {\r\n let stringVal = \"every \";\r\n this.dashboardForm.selectedFrequencyType = 'quarterly'\r\n this.dashboardForm.frequencyDate = val[1];\r\n this.dashboardForm.selectedFrequencies = Number(val[2].split(',')[0]) - 1;\r\n stringVal += this.quarters[this.dashboardForm.selectedFrequencies];\r\n let monthDateName;\r\n if (this.dashboardForm.frequencyDate == \"1\") {\r\n monthDateName = '1st'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"2\") {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.dashboardForm.frequencyDate == \"3\") {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.dashboardForm.frequencyDate + 'th'\r\n }\r\n this.dashboardForm.frequencyMessage = monthDateName + ' of ' + stringVal;\r\n }\r\n break\r\n\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n //your code to update the model\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, QueryList, ContentChildren } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { nanoid } from 'nanoid';\r\n// import { CsOptionComponent } from '../cs-option/cs-option.component';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'cs-select',\r\n templateUrl: './cs-select.component.html',\r\n styleUrls: ['./cs-select.component.less'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CsSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CsSelectComponent implements OnInit {\r\n @Input() dropdownLabel!: string;\r\n @Input() dropdownSubLabel!: string;\r\n @Input() isRequired!: string;\r\n @Input() placeholder!: string;\r\n\r\n // @ContentChildren(CsOptionComponent) op !: QueryList<CsOptionComponent>;\r\n\r\n dropdownToggle!: boolean;\r\n positionReset!: boolean;\r\n getLeft!: number;\r\n getTop!: number;\r\n getWidth!: number;\r\n maxWidth!: number;\r\n\r\n valuePlaceholder!: string;\r\n private optionList!: ElementRef;\r\n\r\n @ViewChild('optionList') set content(content: ElementRef) {\r\n if (content) {\r\n // initially setter gets called with undefined\r\n this.optionList = content;\r\n }\r\n }\r\n name!: string;\r\n val!: string;\r\n showOptions!: boolean;\r\n constructor() {\r\n this.name = nanoid();\r\n this.valuePlaceholder = '';\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n onChange: any = () => {};\r\n onTouch: any = () => {};\r\n\r\n set RadioVal(val: any) {\r\n if (val !== undefined && val !== null && this.val !== val) {\r\n this.val = val;\r\n console.log('VALUE', this.val);\r\n this.onChange(val);\r\n this.onTouch(val);\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.RadioVal = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n openDropdown(event: any): void {\r\n this.dropdownToggle = true;\r\n setTimeout(() => {\r\n const dropdown = event.target.getBoundingClientRect();\r\n const selectOption = this.optionList.nativeElement.offsetHeight;\r\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\r\n this.getTop = dropdown.top - selectOption;\r\n } else {\r\n this.getTop = dropdown.top + dropdown.height;\r\n }\r\n this.getLeft = dropdown.left;\r\n this.getWidth = dropdown.width;\r\n this.maxWidth = dropdown.width * 1.25;\r\n this.showOptions = true;\r\n }, 10);\r\n }\r\n closeDropdown(): void {\r\n this.dropdownToggle = false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsSelectService {\r\n color: any;\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CsSelectService } from '../../services/cs-select.service';\r\nimport { CsSelectComponent } from '../cs-select/cs-select.component';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'cs-option',\r\n templateUrl: './cs-option.component.html',\r\n styleUrls: ['./cs-option.component.less'],\r\n})\r\nexport class CsOptionComponent implements OnInit {\r\n @Input() value!: string;\r\n @ViewChild('options') option!: ElementRef;\r\n @Input() color!: any;\r\n constructor(public csSelect: CsSelectComponent, public colorSelector: CsSelectService) {\r\n this.value = '';\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n change(event: any): void {\r\n if (this.option) {\r\n setTimeout(() => {\r\n this.csSelect.valuePlaceholder = this.option.nativeElement.innerHTML;\r\n this.colorSelector.color = this.color;\r\n console.log(this.color);\r\n }, 1);\r\n }\r\n this.csSelect.writeValue(this.value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer:DomSanitizer){}\r\n transform(html: any) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CsSelectComponent } from './cs-select/cs-select.component';\r\nimport { CsOptionComponent } from './cs-option/cs-option.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\n\r\n@NgModule({\r\n declarations: [CsSelectComponent, CsOptionComponent, SafeHtmlPipe],\r\n imports: [FormsModule, CommonModule],\r\n exports: [CsSelectComponent, CsOptionComponent],\r\n})\r\nexport class SelectModule {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { CreateDashboardService } from '../services/create-dashboard.service';\r\nimport { PaginationService } from '../services/pagination.service';\r\nimport { UserListConfiguration } from './user-list.config';\r\n\r\n@Component({\r\n selector: 'app-user-list',\r\n templateUrl: './user-list.component.html',\r\n styleUrls: ['./user-list.component.less']\r\n})\r\nexport class UserListComponent implements OnInit {\r\n @Output() closeUserList = new EventEmitter();\r\n @Output() saveSelectedUsers = new EventEmitter();\r\n @Input() selectionType = '';\r\n @Input() listDetails: UserListConfiguration = {\r\n displayElementKey: '',\r\n elementIdKey: '',\r\n tooltipKey: '',\r\n selectedUsersList: [],\r\n nonRemovableUsersList: []\r\n };\r\n\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList: [],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: 'User selected',\r\n pluralText: 'Users selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n vLoader = false;\r\n\r\n @Input() totalPages = 1;\r\n @Input() limit = 1;\r\n @Input() totalList = 1;\r\n\r\n searchList = [];\r\n searchValue = '';\r\n searchFilter = '';\r\n selectedIds: any[] = [];\r\n selectedList: any[] = [];\r\n\r\n\r\n animation = true;\r\n constructor(\r\n private paginationService: PaginationService,\r\n private dashboardService: CreateDashboardService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n if (this.listDetails.selectedUsersList.length > 0) {\r\n this.selectedList = [...new Set(this.listDetails.selectedUsersList)];\r\n const selectedData = [...new Set(this.listDetails.selectedUsersList)];\r\n this.footerDetails.selectedData = selectedData;\r\n this.footerDetails.nonRemovableList = this.listDetails.nonRemovableUsersList;\r\n this.selectedIds = selectedData.map((ele: any) => {\r\n if (ele[this.listDetails.elementIdKey]) { return ele[this.listDetails.elementIdKey]; }\r\n });\r\n\r\n }\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: '',\r\n });\r\n this.footerDetails.displayElementKey = this.listDetails.displayElementKey;\r\n this.footerDetails.elementId = this.listDetails.elementIdKey;\r\n\r\n\r\n }\r\n\r\n cancelChanges() {\r\n\r\n }\r\n removeElement(event: any) {\r\n\r\n }\r\n submitChanges() {\r\n\r\n }\r\n selectAll(event: any) {\r\n if (event) {\r\n this.searchList.forEach(searchElement => {\r\n\r\n if (!this.selectedIds.includes(searchElement[this.listDetails.elementIdKey])) {\r\n this.selectedList.push(searchElement);\r\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n }\r\n });\r\n\r\n } else {\r\n this.searchList.forEach(searchElement => {\r\n if (!this.listDetails.nonRemovableUsersList.includes(searchElement[this.listDetails.elementIdKey])) {\r\n const index = this.selectedList.findIndex(ele => ele[this.listDetails.elementIdKey] ===\r\n searchElement[this.listDetails.elementIdKey]);\r\n this.selectedList.splice(index, 1);\r\n const filteredList = [...this.selectedList];\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n const idIndex = this.selectedIds.findIndex(ele => ele === searchElement[this.listDetails.elementIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Selects all admins and managers at once by making api call.\r\n * @param event consists boolean value to select of unselect.\r\n */\r\n selectAllUsers(event: any) {\r\n if (event) {\r\n this.vLoader = true;\r\n this.dashboardService.getAllUsers().subscribe((res: any) => {\r\n\r\n if(res.length>1){\r\n res.forEach((searchElement:any) => {\r\n \r\n if (!this.selectedIds.includes(searchElement[this.listDetails.elementIdKey])) {\r\n this.selectedList.push(searchElement);\r\n this.selectedIds.push(searchElement[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n }\r\n });\r\n }\r\n this.vLoader = false;\r\n });\r\n\r\n } else {\r\n\r\n\r\n\r\n const selectedData = [...new Set(this.selectedList)];\r\n const index = selectedData.findIndex(ele => ele[this.listDetails.elementIdKey] === this.listDetails.nonRemovableUsersList[0]);\r\n if (index != -1) {\r\n const owner = Object.assign(selectedData[index]);\r\n\r\n this.selectedList = [];\r\n this.selectedIds = [];\r\n this.footerDetails.selectedData = [];\r\n\r\n this.selectedList.push(owner);\r\n this.selectedIds.push(owner.member_id);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n } else {\r\n this.selectedList = [];\r\n this.selectedIds = [];\r\n this.footerDetails.selectedData = [];\r\n }\r\n }\r\n }\r\n\r\n/**\r\n * Selects checked item from the list.\r\n * In case of user's list calculates number of admins/manages to set visibility(either to all admins/ admins and managers)\r\n * @param data is the selected element\r\n */\r\nselectElement(data: any) {\r\n if (this.selectedIds.includes(data[this.listDetails.elementIdKey])) {\r\n if (!this.listDetails.nonRemovableUsersList.includes(data[this.listDetails.elementIdKey])) {\r\n const index = this.selectedList.findIndex(ele => ele[this.listDetails.elementIdKey] === data[this.listDetails.elementIdKey]);\r\n this.selectedList.splice(index, 1);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n const idIndex = this.selectedIds.findIndex(ele => ele === data[this.listDetails.elementIdKey]);\r\n\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n\r\n } else {\r\n this.selectedList.push(data);\r\n this.selectedIds.push(data[this.listDetails.elementIdKey]);\r\n this.footerDetails.selectedData = this.selectedList;\r\n\r\n }\r\n}\r\n\r\n/**\r\n * It is used to set and search value incase of backend driven list to differentiate search list and original list\r\n */\r\nsetSearchValue() {\r\n this.paginationService.searchValue = this.searchValue;\r\n this.paginationFilter(true);\r\n\r\n}\r\n\r\n/**\r\n* it is used check select all condition incase of backend driven search\r\n*/\r\ncheckSelectAll() {\r\n if (this.searchList.length > 0) {\r\n const data: boolean = this.searchList.every(ele => this.selectedIds.includes(ele[this.listDetails.elementIdKey]));\r\n return data;\r\n } else {\r\n return false;\r\n\r\n }\r\n\r\n}\r\n/**\r\n * Filter list user's list based on pagination by making api call\r\n * @param event specifies a boolean value to call api\r\n */\r\npaginationFilter(event: any) {\r\n // this.paginationFilterEvent.emit(event);\r\n if (event) {\r\n this.vLoader = true;\r\n this.getUsersList({\r\n p: this.paginationService.currentPage === 1 ? '' : this.paginationService.currentPage,\r\n type: '',\r\n q: (!this.paginationService.searchValue) ? '' : this.paginationService.searchValue,\r\n });\r\n\r\n }\r\n}\r\n/**\r\n * Gets user's list by making api call\r\n * @param url contains userlist filter details\r\n */\r\ngetUsersList(url: any) {\r\n this.vLoader = true;\r\n\r\n this.dashboardService.getOrganizationUsers(url ? url : '').subscribe(res => {\r\n\r\n this.searchList = res;\r\n this.vLoader = false;\r\n\r\n\r\n });\r\n\r\n}\r\n/**\r\n * on click on next button from the list, it emits the selected list of elements to parent component.\r\n */\r\nonSubmit() {\r\n const data = [...new Set(this.selectedList)];\r\n this.saveSelectedUsers.emit(data);\r\n this.paginationService.reset();\r\n}\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\n\r\n@Component({\r\n selector: 'app-responsibility-center',\r\n templateUrl: './responsibility-center.component.html',\r\n styleUrls: ['./responsibility-center.component.less']\r\n})\r\nexport class ResponsibilityCenterComponent implements OnInit, OnChanges {\r\n @Output() saveSelectedList = new EventEmitter();\r\n @Output() closeRcList = new EventEmitter();\r\n @Input() responsibilityCentersList = [];\r\n @Input() selectedResponsibilityCenters = [];\r\n @Input() rcIdKey = '';\r\n @Input() radioSelection = false;\r\n\r\n\r\n selectedIds: any[] = [];\r\n animation = false;\r\n search = '';\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'item_name',\r\n elementId: 'item_id',\r\n singularText: 'Responsibility Center selected',\r\n pluralText: 'Responsibility Centers selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n constructor() { }\r\n\r\n ngOnChanges(): void {\r\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\r\n this.selectedIds = this.selectedResponsibilityCenters.map((ele: any) => { if (ele[this.rcIdKey]) { return ele[this.rcIdKey]; } });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n }\r\n\r\n selectRc(rc: any, mode: any) {\r\n if (this.radioSelection) {\r\n if (mode) {\r\n this.selectedIds = [];\r\n this.selectedIds.push(rc);\r\n }\r\n this.setList();\r\n } else {\r\n if (mode) {\r\n this.selectedIds.push(rc);\r\n const rcElement = this.responsibilityCentersList.findIndex((ele: any) => ele.item_id == rc);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.responsibilityCentersList[rcElement];\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n if(!this.selectedIds.includes(childElement)){\r\n this.selectedIds.push(childElement);\r\n }\r\n });\r\n }\r\n }\r\n\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == rc);\r\n this.selectedIds.splice(index, 1);\r\n const rcElement = this.responsibilityCentersList.findIndex((ele: any) => ele.item_id == rc);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.responsibilityCentersList[rcElement];\r\n if (parentRc?.item_child_ids?.length > 0) {\r\n parentRc.item_child_ids.forEach((childElement: any) => {\r\n const removeIndex = this.selectedIds.findIndex((removeElement: any) => removeElement == childElement);\r\n this.selectedIds.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n\r\n }\r\n this.setList();\r\n }\r\n\r\n\r\n }\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.rcIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any) {\r\n if (mode) {\r\n const list = [...this.responsibilityCentersList];\r\n this.selectedIds = [];\r\n list.forEach(element => {\r\n this.selectedIds.push(element[this.rcIdKey]);\r\n });\r\n } else {\r\n this.selectedIds = [];\r\n }\r\n this.setList();\r\n }\r\n\r\n\r\n setList() {\r\n const data: any = [];\r\n const rcList = [...new Set(this.responsibilityCentersList)]\r\n // cloneDeep(this.responsibilityCentersList);\r\n const selectedIds = [...new Set(this.selectedIds)]\r\n // cloneDeep(this.selectedIds);\r\n rcList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.rcIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedResponsibilityCenters = data;\r\n this.footerDetails.selectedData = this.selectedResponsibilityCenters;\r\n }\r\n\r\n checkSelectAll() {\r\n const data = this.responsibilityCentersList.every((rc: any) => this.selectedIds.includes(rc[this.rcIdKey]));\r\n return data;\r\n }\r\n\r\n save() {\r\n this.saveSelectedList.emit(this.selectedIds);\r\n }\r\n\r\n closeResponsibilityCenterList() {\r\n this.closeRcList.emit();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { CategoriesConfig } from './categories-config';\r\n\r\n@Component({\r\n selector: 'app-categories',\r\n templateUrl: './categories.component.html',\r\n styleUrls: ['./categories.component.less']\r\n})\r\nexport class CategoriesComponent implements OnInit {\r\n\r\n\r\n @Input() categoryList: CategoriesConfig = {\r\n regulations: {\r\n list: [],\r\n selectedList: []\r\n },\r\n standards: {\r\n list: [],\r\n selectedList: []\r\n },\r\n internalControls: {\r\n list: [],\r\n selectedList: []\r\n },\r\n others: {\r\n list: [],\r\n selectedList: []\r\n }\r\n };\r\n @Input() allCategories: any[] = [];\r\n\r\n @Input() categoryIdKey: any;\r\n @Input() selectedCategories: any[] = [];\r\n\r\n search = '';\r\n activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\"=\"regulations\";\r\n selectedIds: any[] = [];\r\n animation = false;\r\n blockWidth: any;\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'item_name',\r\n elementId: 'item_id',\r\n singularText: 'Responsibility Category selected',\r\n pluralText: 'Responsibility Categories selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n\r\n @Output() saveSelectedCategory = new EventEmitter();\r\n @Output() closeList = new EventEmitter();\r\n @Output() closeCategoriesList = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.selectedIds = [];\r\n if (this.selectedCategories) {\r\n this.selectedCategories.forEach(element => {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n });\r\n }\r\n this.setList()\r\n\r\n\r\n }\r\n\r\n selectCategory(mode: any, activeTab: any, category: any) {\r\n if (mode) {\r\n this.selectedIds.push(category[this.categoryIdKey]);\r\n const rcElement = this.allCategories.findIndex((ele: any) => ele.category_id == category[this.categoryIdKey]);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.allCategories[rcElement];\r\n if (parentRc?.child_cat_ids?.length > 0) {\r\n parentRc.child_cat_ids.forEach((childElement: any) => {\r\n if(!this.selectedIds.includes(childElement)){\r\n this.selectedIds.push(childElement);\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == category[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n const rcElement = this.allCategories.findIndex((ele: any) => ele.category_id == category[this.categoryIdKey]);\r\n if (rcElement !== -1) {\r\n const parentRc: any = this.allCategories[rcElement];\r\n if (parentRc?.child_cat_ids?.length > 0) {\r\n parentRc.child_cat_ids.forEach((childElement: any) => {\r\n const removeIndex = this.selectedIds.findIndex((removeElement: any) => removeElement == childElement);\r\n this.selectedIds.splice(removeIndex, 1);\r\n });\r\n }\r\n }\r\n }\r\n this.setList();\r\n\r\n }\r\n\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any, activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\") {\r\n\r\n if (mode) {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n }\r\n }); \r\n } else {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\r\n let idIndex = this.selectedIds.findIndex((id: any) => id == element[this.categoryIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n }\r\n this.setList();\r\n }\r\n\r\n setList() {\r\n const data: any = [];\r\n const categoryList = [...new Set(this.allCategories)] \r\n // cloneDeep(this.allCategories)\r\n const selectedIds =[...new Set(this.selectedIds)] \r\n // cloneDeep(this.selectedIds);\r\n this.categoryList.regulations.selectedList = [];\r\n this.categoryList.standards.selectedList = [];\r\n this.categoryList.internalControls.selectedList = [];\r\n this.categoryList.others.selectedList = [];\r\n\r\n categoryList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.categoryIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedCategories = data;\r\n this.footerDetails.selectedData = data;\r\n\r\n this.categoryList.regulations.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.regulations.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.standards.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.standards.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.internalControls.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.internalControls.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.others.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.others.selectedList.push(category)\r\n }\r\n });\r\n if (!this.activeTab) {\r\n this.setActiveTab();\r\n }\r\n }\r\n setActiveTab() {\r\n if (this.categoryList.regulations.selectedList.length > 0) {\r\n this.activeTab = 'regulations'\r\n } else if (this.categoryList.standards.selectedList.length > 0) {\r\n this.activeTab = 'standards'\r\n } else if (this.categoryList.internalControls.selectedList.length > 0) {\r\n this.activeTab = 'internalControls'\r\n } else if (this.categoryList.others.selectedList.length > 0) {\r\n this.activeTab = 'others'\r\n } else {\r\n this.activeTab = 'regulations'\r\n }\r\n }\r\n\r\n\r\n checkSelectAll(activeTab: \"standards\" | \"regulations\" | \"internalControls\" | \"others\") {\r\n const data = this.categoryList[activeTab].list.every((user: any) => this.selectedIds.includes(user[this.categoryIdKey]));\r\n return data;\r\n }\r\n\r\n save() {\r\n this.saveSelectedCategory.emit(this.selectedCategories);\r\n }\r\n\r\n close() {\r\n this.closeCategoriesList.emit();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-frequency',\r\n templateUrl: './frequency.component.html',\r\n styleUrls: ['./frequency.component.less']\r\n})\r\nexport class FrequencyComponent implements OnInit,OnChanges {\r\n @Input() savedFrequencyTab: string | undefined;\r\n monthlyDate = 1;\r\n quarterlyDate = 1;\r\n @Input() savedFrequencies: any;\r\n @Input() selectedDate: any;\r\n frequencyTab = 'weekly';\r\n showFrequency = true;\r\n dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\r\n monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n quarters = ['January, April, July, October', 'February, May, August, November', 'March, June, September, December'];\r\n selectedDays: any[] = [0];\r\n selectedMonths: any[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n selectedQuarter = 0;\r\n @Output() closeFrequencyPopup = new EventEmitter<string>();\r\n @Output() saveFrequency = new EventEmitter<any>();\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: '',\r\n pluralText: '',\r\n showFrequency: true,\r\n frequencyText: 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.',\r\n isDisabled: false\r\n\r\n };\r\n showRadio = true;\r\n constructor(private snackBar:SnackBarService) { }\r\n ngOnChanges(){\r\n this.savedFrequencies = [...new Set(this.savedFrequencies)]\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.savedFrequencyTab) {\r\n this.changeTab(this.savedFrequencyTab);\r\n }\r\n if (this.selectedDate) {\r\n switch (this.savedFrequencyTab) {\r\n case 'weekly':\r\n this.selectedDays = [...new Set(this.savedFrequencies)]\r\n break;\r\n case 'monthly':\r\n this.monthlyDate = this.selectedDate;\r\n this.selectedMonths = [...new Set(this.savedFrequencies)]\r\n\r\n break;\r\n case 'quarterly':\r\n this.showRadio = false;\r\n setTimeout(() => {\r\n this.showRadio = true\r\n }, 100);\r\n this.quarterlyDate = this.selectedDate\r\n this.selectedQuarter = this.savedFrequencies;\r\n\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n closeFrequency() {\r\n this.closeFrequencyPopup.emit();\r\n }\r\n daySelectionChange(event: any, index: any) {\r\n if (event) { //checkbox was selected\r\n this.selectedDays.push(index);\r\n } else {\r\n let unselectedElementIndex = this.selectedDays.indexOf(index);\r\n this.selectedDays.splice(unselectedElementIndex, 1);\r\n }\r\n this.checkFrequencyValidity();\r\n }\r\n monthSelectionChange(event: any, index: any) {\r\n if (event) {\r\n this.selectedMonths.push(index);\r\n } else {\r\n let unselectedElementIndex = this.selectedMonths.indexOf(index);\r\n this.selectedMonths.splice(unselectedElementIndex, 1);\r\n }\r\n this.checkDateValidity(this.monthlyDate,'monthly')\r\n this.checkFrequencyValidity();\r\n }\r\n\r\n quarterSelectionChange(event: any, index: any) {\r\n this.selectedQuarter = index;\r\n this.checkDateValidity(this.quarterlyDate,'quarterly');\r\n this.checkFrequencyValidity();\r\n }\r\n\r\n changeTab(tabValue: string) {\r\n this.frequencyTab = tabValue;\r\n this.footerDetails.frequencyText = 'You have selected a <strong>' + this.frequencyTab + '</strong> frequency.';\r\n this.footerDetails.isDisabled = false;\r\n this.setToDefaultValues()\r\n if (this.frequencyTab === this.savedFrequencyTab) {\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n this.selectedDays = [...this.savedFrequencies];\r\n this.monthlyDate = 1;\r\n this.quarterlyDate = 1;\r\n break;\r\n }\r\n case 'monthly': {\r\n this.selectedMonths = [...this.savedFrequencies];\r\n this.monthlyDate = this.selectedDate;\r\n this.quarterlyDate = 1;\r\n this.checkDateValidity(this.monthlyDate,'monthly')\r\n break;\r\n }\r\n case 'quarterly': {\r\n this.selectedQuarter = this.savedFrequencies;\r\n this.quarterlyDate = this.selectedDate;\r\n this.monthlyDate = 1;\r\n this.checkDateValidity(this.quarterlyDate,'quarterly')\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setToDefaultValues() {\r\n this.selectedDays = [0];\r\n this.selectedMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\n this.selectedQuarter = 0;\r\n }\r\n\r\n submitFrequency() {\r\n let stringVal = \"Every \";\r\n let frequencies;\r\n let selectedDate = 1;\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n if (this.selectedDays.length > 0) {\r\n this.selectedDays.sort();\r\n frequencies = this.selectedDays;\r\n this.selectedDays.forEach((dayIndex, index) => {\r\n stringVal += index === 0 ? this.dayNames[dayIndex] : ', ' + this.dayNames[dayIndex];\r\n })\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n case 'monthly': {\r\n stringVal = \" of every \";\r\n if (this.selectedMonths.length > 0) {\r\n frequencies = this.selectedMonths;\r\n this.monthNames.forEach((monthNames: string, monthIndex: number) => {\r\n if (this.selectedMonths.includes(monthIndex)) {\r\n stringVal += monthIndex === 0 ? monthNames : ', ' + monthNames;\r\n\r\n }\r\n })\r\n let monthDateName;\r\n if (this.monthlyDate == 1) {\r\n monthDateName = '1st'\r\n }\r\n else if (this.monthlyDate == 2) {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.monthlyDate == 3) {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.monthlyDate + 'th'\r\n }\r\n stringVal = monthDateName + stringVal;\r\n selectedDate = this.monthlyDate;\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n case 'quarterly': {\r\n stringVal = \" of every \";\r\n\r\n if (this.selectedQuarter >= 0) {\r\n frequencies = this.selectedQuarter;\r\n stringVal += this.quarters[this.selectedQuarter];\r\n selectedDate = this.quarterlyDate;\r\n let monthDateName;\r\n if (this.quarterlyDate == 1) {\r\n monthDateName = '1st'\r\n }\r\n else if (this.quarterlyDate == 2) {\r\n monthDateName = '2nd'\r\n }\r\n else if (this.quarterlyDate == 3) {\r\n monthDateName = '3rd'\r\n }\r\n else {\r\n monthDateName = this.quarterlyDate + 'th'\r\n }\r\n stringVal = monthDateName + stringVal;\r\n selectedDate = this.quarterlyDate;\r\n } else {\r\n // nothing was selected\r\n this.closeFrequency();\r\n }\r\n break;\r\n }\r\n }\r\n this.saveFrequency.emit({\r\n frequencyString: stringVal,\r\n frequencyType: this.frequencyTab,\r\n frequencies: frequencies,\r\n selectedDate\r\n })\r\n }\r\n \r\n checkDateValidity(date:number, type:string){\r\n if(date>31 || date<1){\r\n this.snackBar.show('Select valid date.');\r\n this.footerDetails.isDisabled = true;\r\n return\r\n }else{\r\n this.footerDetails.isDisabled = false;\r\n }\r\n const monthList=[{name:'January',maxDays:31,value:0},{name:'February',maxDays:28,value:1},{name:'March',maxDays:31,value:2},\r\n {name:'April',maxDays:30,value:3},{name:'May',maxDays:31,value:4},{name:'June',maxDays:30,value:5},\r\n {name:'July',maxDays:31,value:6},{name:'August',maxDays:31,value:7},{name:'September',maxDays:30,value:8},\r\n {name:'October',maxDays:31,value:9},{name:'November',maxDays:30,value:10},{name:'December',maxDays:31,value:11}]\r\n switch (type) {\r\n case 'monthly':\r\n if(this.selectedMonths.length==1){\r\n const index = monthList.findIndex((ele:any)=>ele.value==this.selectedMonths[0]);\r\n if(date<=monthList[index].maxDays){\r\n this.footerDetails.isDisabled = false;\r\n \r\n }else{\r\n this.snackBar.show('Select valid date.');\r\n this.footerDetails.isDisabled = true; \r\n }\r\n }else if(this.selectedMonths.length==0){\r\n this.footerDetails.isDisabled = true; \r\n }else{\r\n this.footerDetails.isDisabled = false;\r\n }\r\n\r\n break;\r\n default:\r\n this.footerDetails.isDisabled = false;\r\n return true;\r\n break;\r\n\r\n }\r\n\r\n}\r\n\r\ncheckFrequencyValidity(){\r\n switch (this.frequencyTab) {\r\n case 'weekly': {\r\n if (this.selectedDays.length > 0) {\r\n this.footerDetails.isDisabled = false;\r\n\r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n case 'monthly': {\r\n \r\n if (this.selectedMonths.length > 0) {\r\n this.footerDetails.isDisabled = false;\r\n \r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n case 'quarterly': {\r\n\r\n if (this.selectedQuarter >= 0){\r\n this.footerDetails.isDisabled = false;\r\n \r\n } else {\r\n this.footerDetails.isDisabled = true;\r\n }\r\n break;\r\n }\r\n } \r\n}\r\n\r\n}\r\n","import { Component, OnInit, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { PaginationService } from '../../create-dashboard-container/services/pagination.service';\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.less']\r\n})\r\n/**\r\n * Adds place holder for Pagination on the lists\r\n */\r\nexport class PaginationComponent implements OnInit, OnChanges {\r\n start = 1;\r\n totalCount!: number;\r\n paginationArray: any[] = [];\r\n currentPage!: number;\r\n @Input() totalPages = 1;\r\n @Input() limit = 1;\r\n @Input() totalList = 1;\r\n @Output() paginationFilter = new EventEmitter();\r\n\r\n constructor(private paginationService: PaginationService) {\r\n }\r\n ngOnChanges() {\r\n this.currentPage = Number(this.paginationService.currentPage);\r\n this.start = Number(this.paginationService.currentPage);\r\n this.rebuildPagination(this.currentPage, this.totalPages);\r\n }\r\n\r\n ngOnInit() {\r\n this.currentPage = Number(this.paginationService.currentPage);\r\n this.start = Number(this.paginationService.currentPage);\r\n this.rebuildPagination(this.currentPage, this.totalPages);\r\n this.paginationService.currentValues.subscribe(event => {\r\n if (event && (this.paginationService.currentPage !== this.currentPage)) {\r\n this.currentPage = this.paginationService.currentPage;\r\n }\r\n });\r\n }\r\n\r\n /* In this function we will recreate the pagination structure as per current page and\r\n total number of pages */\r\n\r\n rebuildPagination(currentPage: number, totalCount: number) {\r\n this.paginationArray = [];\r\n this.totalCount = totalCount;\r\n this.currentPage = currentPage;\r\n if (this.paginationService.currentPage !== this.currentPage) {\r\n this.paginationService.currentPage = this.currentPage;\r\n this.paginationFilter.emit(true);\r\n }\r\n\r\n // If there are only 6 pages or less in total, just display all pages without \"...\"\r\n if (totalCount <= 6) {\r\n for (let i = 1; i <= totalCount; i++) {\r\n this.paginationArray.push(i);\r\n }\r\n }\r\n // ELSE display with ...\r\n else {\r\n\r\n // Always print first page button\r\n this.paginationArray.push(1);\r\n\r\n // Print \"...\" if currentPage is > 3\r\n if (currentPage > 3) {\r\n // this.paginationArray.push(2);\r\n this.paginationArray.push('...');\r\n\r\n }\r\n // special case where last page is selected...\r\n // Without this special case, only 2 buttons would be shown after ... if you were on last page\r\n if (currentPage === totalCount) {\r\n this.paginationArray.push(currentPage - 2);\r\n }\r\n\r\n // Print previous number button if currentPage > 2\r\n if (currentPage > 2) {\r\n this.paginationArray.push(currentPage - 1);\r\n }\r\n\r\n // Print current page number button as long as it not the first or last page\r\n if (currentPage !== 1 && currentPage !== totalCount) {\r\n this.paginationArray.push(currentPage);\r\n\r\n }\r\n\r\n // print next page number button if currentPage < lastPage - 1\r\n if (currentPage < totalCount - 1) {\r\n this.paginationArray.push(currentPage + 1);\r\n\r\n }\r\n\r\n // special case where first page is selected...\r\n // Without this special case, only 2 buttons would be shown before ... if you were on first page\r\n if (currentPage === 1) {\r\n this.paginationArray.push(currentPage + 2);\r\n\r\n }\r\n\r\n // print \"...\" if currentPage is < lastPage -2\r\n if (currentPage < totalCount - 2) {\r\n this.paginationArray.push('...');\r\n\r\n // HTML += \"...\";\r\n }\r\n\r\n // Always print last page button if there is more than 1 page\r\n if (totalCount > 1) {\r\n this.paginationArray.push(totalCount);\r\n\r\n }\r\n }\r\n\r\n }\r\n/* In this function we will set current page according to the action performed on browser\r\n ex: prev next buttons clicks or selecting a particular page */\r\n\r\n changePage(prev: string, page: number, next: string) {\r\n if (prev) {\r\n if (this.start > 1) {\r\n this.start--;\r\n // We have changed the start page, total rebuild the pagination\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n if (next) {\r\n if (this.start < this.totalCount) {\r\n this.start++;\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n if (page) {\r\n this.start = page;\r\n this.rebuildPagination(this.start, this.totalCount);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n declarations: [PaginationComponent],\r\n imports: [CommonModule],\r\n exports: [PaginationComponent],\r\n})\r\nexport class PaginationModule {}","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-checkbox',\r\n templateUrl: './cs-checkbox.component.html',\r\n styleUrls: ['./cs-checkbox.component.less'],\r\n})\r\nexport class CsCheckboxComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() ngValue: any;\r\n @Input() value: any;\r\n @Output() ngValueChange = new EventEmitter<any>();\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n valueChanged() {\r\n this.ngValueChange.emit(this.ngValue);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-radio',\r\n templateUrl: './cs-radio.component.html',\r\n styleUrls: ['./cs-radio.component.less'],\r\n})\r\nexport class CsRadioComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() readonly!: boolean;\r\n @Input() name!: string;\r\n @Input() checked!: boolean;\r\n @Input() value: any;\r\n @Output() checkedEvent = new EventEmitter();\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n changeState(evt: any) {\r\n this.checkedEvent.emit(evt);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-switch',\r\n templateUrl: './cs-switch.component.html',\r\n styleUrls: ['./cs-switch.component.less'],\r\n})\r\nexport class CsSwitchComponent implements OnInit {\r\n @Input() disabled!: boolean;\r\n @Input() ngValue: any;\r\n @Input() value: any;\r\n @Output() ngValueChange = new EventEmitter<any>();\r\n @Input() tooltipMessage: any;\r\n @Input() position: any;\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // console.log(this.value);\r\n }\r\n valueChanged() {\r\n this.ngValueChange.emit(this.ngValue);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-radio-group',\r\n templateUrl: './cs-radio-group.component.html',\r\n styleUrls: ['./cs-radio-group.component.less'],\r\n})\r\nexport class CsRadioGroupComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cs-select',\r\n templateUrl: './cs-select.component.html',\r\n styleUrls: ['./cs-select.component.less'],\r\n})\r\nexport class CsSelectComponent implements OnChanges {\r\n @Input() dataList!: any[];\r\n @Input() dropdownLabel!: string;\r\n @Input() displayProperty!: string;\r\n @Input() selectedValue!: string;\r\n @Input() isRequired!: boolean;\r\n @Input() dropdownSubLabel!: string;\r\n @Input() disabled!: boolean;\r\n @ViewChild('option') option!: ElementRef;\r\n\r\n @Output() selectedData = new EventEmitter();\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Input() placeholder: any;\r\n @Input() stylex: any;\r\n @Input() valueKey: any;\r\n @Input() multipleSelect: any;\r\n @Input() colorProperty!: string;\r\n\r\n @Input() colorSelected!: string;\r\n colorCode!: string;\r\n\r\n dropdownOption = false;\r\n positionReset!: boolean;\r\n getLeft!: number;\r\n getTop!: number;\r\n getWidth!: number;\r\n maxWidth!: number;\r\n activeDoropdown = false;\r\n\r\n private optionList!: ElementRef;\r\n\r\n @ViewChild('optionList') set content(content: ElementRef) {\r\n if (content) {\r\n // initially setter gets called with undefined\r\n this.optionList = content;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedValue) {\r\n this.selectedValue = this.selectedValue || '--';\r\n }\r\n }\r\n\r\n openDropdown(event: any): void {\r\n this.dropdownOption = true;\r\n setTimeout(() => {\r\n const dropdown = event.target.getBoundingClientRect();\r\n const selectOption = this.optionList.nativeElement.offsetHeight;\r\n if (dropdown.top + selectOption * 2 > window.innerHeight) {\r\n this.getTop = dropdown.top - selectOption;\r\n } else {\r\n this.getTop = dropdown.top + dropdown.height;\r\n }\r\n this.getLeft = dropdown.left;\r\n this.getWidth = dropdown.width;\r\n this.maxWidth = dropdown.width * 1.25;\r\n }, 10);\r\n setTimeout(() => {\r\n this.activeDoropdown = true;\r\n }, 100);\r\n }\r\n selectOption(selectedData: any) {\r\n if (typeof selectedData === 'object') {\r\n this.selectedValue = selectedData[this.displayProperty];\r\n this.colorSelected = selectedData[this.colorProperty];\r\n } else {\r\n this.selectedValue = selectedData;\r\n }\r\n this.selectedData.emit(selectedData);\r\n this.dropdownOption = false;\r\n }\r\n closeDropdown() {\r\n this.dropdownOption = false;\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[arTooltip]',\r\n})\r\nexport class ToolTipDirective implements OnInit {\r\n @Input('arTooltip') tooltipTitle!: string;\r\n @Input() placement!: string;\r\n @Input() type: any;\r\n @Input() tooltipMandatory!: boolean;\r\n @Input() showTooltip = true;\r\n @Input() animate!: boolean;\r\n tooltip!: HTMLElement;\r\n offset = 8;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n ngOnInit() {}\r\n @HostListener('mouseenter') onMouseEnter() {\r\n this.hide();\r\n this.show();\r\n }\r\n @HostListener('mouseover') onMouseOver() {\r\n this.hide();\r\n this.show();\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n this.hide();\r\n }\r\n @HostListener('mouseout') onMouseOut() {\r\n this.hide();\r\n }\r\n @HostListener('click') onClick() {\r\n this.hide();\r\n }\r\n show() {\r\n if (!this.showTooltip) {\r\n return;\r\n }\r\n this.create();\r\n const element = this.el.nativeElement;\r\n if (this.tooltipMandatory === true) {\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n } else {\r\n if (element.scrollWidth * element.scrollHeight > element.offsetWidth * element.offsetHeight) {\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n }\r\n }\r\n }\r\n\r\n hide() {\r\n if (document.body.contains(this.tooltip)) {\r\n if (this.renderer) {\r\n this.renderer.removeChild(document.body, document.getElementById('tooltip'));\r\n }\r\n }\r\n }\r\n\r\n create() {\r\n this.tooltip = this.renderer.createElement('span');\r\n this.tooltip.setAttribute('id', 'tooltip');\r\n this.tooltip.innerHTML = this.tooltipTitle;\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\r\n this.renderer.addClass(this.tooltip, `${this.type}`);\r\n if (this.animate) {\r\n this.renderer.addClass(this.tooltip, `animate-${this.placement}`);\r\n }\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n let top;\r\n let left;\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n if (hostPos.top + tooltipPos.height > h) {\r\n top = hostPos.top - tooltipPos.height;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom`);\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-top`);\r\n } else {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n if (this.placement === 'bottom-right') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left - (tooltipPos.width - 28);\r\n }\r\n if (this.placement === 'bottom-left') {\r\n if (hostPos.top + tooltipPos.height > h - 30) {\r\n top = hostPos.top - tooltipPos.height;\r\n console.log('bottom left', hostPos.top - tooltipPos.height);\r\n left = hostPos.left;\r\n this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom-left`);\r\n this.renderer.addClass(this.tooltip, `ng-tooltip-top-left`);\r\n } else {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left;\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolTipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [ToolTipDirective],\r\n imports: [CommonModule],\r\n exports: [ToolTipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pascal',\r\n})\r\nexport class PascalPipe implements PipeTransform {\r\n transform(value: string, ...args: unknown[]): unknown {\r\n if (typeof value !== 'string') {\r\n return value;\r\n }\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'searchMultiSelect',\r\n})\r\nexport class SearchMultiSelectPipe implements PipeTransform {\r\n transform(value: any[], key: string, searchKey: string): any[] {\r\n if (searchKey && searchKey.length > 0) {\r\n searchKey = searchKey.toLowerCase();\r\n return value.filter((item) => {\r\n if (item[key].toLowerCase().includes(searchKey)) {\r\n return item;\r\n }\r\n });\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\r\n\r\n @HostListener('document:click', ['$event.target']) onMouseEnter(targetElement: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit(null);\r\n }\r\n }\r\n}\r\n","import { FormsModule } from '@angular/forms';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CsCheckboxComponent } from './cs-checkbox/cs-checkbox.component';\r\nimport { CsRadioComponent } from './cs-radio/cs-radio.component';\r\nimport { CsSwitchComponent } from './cs-switch/cs-switch.component';\r\nimport { CsRadioGroupComponent } from './cs-radio-group/cs-radio-group.component';\r\nimport { CsSelectComponent } from './cs-select/cs-select.component';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { PascalPipe } from './pipes/pascal.pipe';\r\nimport { SearchMultiSelectPipe } from './pipes/searchMultiSelect.pipe';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n CsCheckboxComponent,\r\n CsRadioComponent,\r\n CsSwitchComponent,\r\n CsRadioGroupComponent,\r\n CsSelectComponent,\r\n PascalPipe,\r\n SearchMultiSelectPipe,\r\n ClickOutsideDirective,\r\n ],\r\n imports: [CommonModule, FormsModule, TooltipModule],\r\n exports: [\r\n CsCheckboxComponent,\r\n CsRadioComponent,\r\n CsSwitchComponent,\r\n CsRadioGroupComponent,\r\n CsSelectComponent,\r\n SearchMultiSelectPipe,\r\n ],\r\n})\r\nexport class FormgroupModule {}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../dashboard-footer-config';\r\n\r\n@Component({\r\n selector: 'app-dashboard-footer',\r\n templateUrl: './dashboard-footer.component.html',\r\n styleUrls: ['./dashboard-footer.component.less']\r\n})\r\nexport class DashboardFooterComponent implements OnInit {\r\n @Output() cancelEvent = new EventEmitter();\r\n @Output() submitEvent = new EventEmitter();\r\n @Output() deleteEvent = new EventEmitter();\r\n @Input() footerDetails:DashboardFooterConfig={\r\n selectedData : [],\r\n nonRemovableList:[],\r\n displayElementKey: '',\r\n elementId: '',\r\n singularText: '',\r\n pluralText:'',\r\n showFrequency:false,\r\n frequencyText:'',\r\n isDisabled :false\r\n\r\n };\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n cancelFloatingBar() {\r\n this.cancelEvent.emit();\r\n }\r\n submitFloatingBar() {\r\n this.submitEvent.emit(this.footerDetails.selectedData);\r\n }\r\n\r\n deleteSelected(element: any) {\r\n this.deleteEvent.emit(element);\r\n }\r\n\r\n\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@Component({\r\n selector: 'app-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.less'],\r\n})\r\nexport class PopoverComponent implements OnInit {\r\n @Input() dontCloseonClick = false;\r\n popoverContainer = false;\r\n @ViewChild('popoverRatio') popoverRatio!: ElementRef;\r\n @ViewChild('popoverContent') popoverContent!: ElementRef;\r\n @Output() closedOnOverlay = new EventEmitter();\r\n constructor(public popoverService: PopoverService) {}\r\n showPopover = false;\r\n leftValue: any;\r\n topValue: any;\r\n popoverHeight: any;\r\n popoverWidth: any;\r\n positionX!: number;\r\n positionY!: number;\r\n ngOnInit(): void {}\r\n popover() {\r\n this.popoverContainer = false;\r\n this.popoverContainer = true;\r\n setTimeout(() => {\r\n this.getPosition();\r\n this.showPopover = true;\r\n this.popoverService.stopScroll = true;\r\n // document.body.style.overflow = 'hidden';\r\n }, 10);\r\n return false;\r\n }\r\n popoverEvent() {\r\n this.popoverContainer = false;\r\n this.popoverContainer = true;\r\n setTimeout(() => {\r\n // this.getPosition();\r\n this.positionX = this.popoverService.positionX;\r\n this.positionY = this.popoverService.positionY;\r\n this.showPopover = true;\r\n this.popoverService.stopScroll = true;\r\n\r\n }, 10);\r\n return false;\r\n }\r\n closePopover(top?: string) {\r\n if (!this.dontCloseonClick || top === 'top') {\r\n this.popoverContainer = false;\r\n this.showPopover = false;\r\n this.popoverService.stopScroll = false;\r\n // document.body.style.overflow = 'auto';\r\n }\r\n }\r\n\r\n close(){\r\n this.popoverContainer = false;\r\n this.showPopover = false;\r\n this.popoverService.stopScroll = false;\r\n }\r\n\r\n clickedPopover() {\r\n this.getPosition();\r\n }\r\n getPosition() {\r\n // setTimeout(() => {\r\n const elementPositionn = this.popoverService.elementPosition;\r\n this.popoverHeight = this.popoverRatio.nativeElement.offsetHeight;\r\n this.popoverWidth = this.popoverRatio.nativeElement.offsetWidth;\r\n if (this.popoverService.elementDirection === 'left') {\r\n this.leftValue = elementPositionn.left;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'right') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverWidth;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'top') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'bottom') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'self-position') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - 15;\r\n }\r\n if (this.popoverService.elementDirection === 'top-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n // this.topValue = elementPositionn.top - this.popoverHeight;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverHeight > window.outerHeight) {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverHeight;\r\n }\r\n }\r\n if (this.popoverService.elementDirection === 'center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverWidth / 2;\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n this.positionX = this.leftValue;\r\n this.positionY = this.topValue;\r\n // }, 10);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@Directive({\r\n selector: '[appPopover]',\r\n})\r\nexport class PopoverDirective {\r\n dynamicComponent: any;\r\n @Input() refrence: any;\r\n @Input() placement!: string;\r\n leftValue: any;\r\n topValue: any;\r\n constructor(private elRef: ElementRef, private popoverService: PopoverService) {}\r\n @HostListener('click') click() {\r\n this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n this.popoverService.elementDirection = this.placement;\r\n // this.getPosition();\r\n }\r\n\r\n getPosition() {\r\n setTimeout(() => {\r\n // this.popoverService.elementPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n const elementPositionn = this.elRef.nativeElement.getBoundingClientRect();\r\n if (this.placement === 'left') {\r\n this.leftValue = elementPositionn.left;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'right') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width - this.popoverService.popoverWidth;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'top') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n }\r\n }\r\n if (this.placement === 'bottom') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width;\r\n if (elementPositionn.top + elementPositionn.height + this.popoverService.popoverHeight > window.outerHeight - 200) {\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n } else {\r\n this.topValue = elementPositionn.top + elementPositionn.height;\r\n }\r\n }\r\n if (this.placement === 'self-position') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - 15;\r\n }\r\n if (this.placement === 'top-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top - this.popoverService.popoverHeight;\r\n }\r\n if (this.placement === 'bottom-center') {\r\n this.leftValue = elementPositionn.left + elementPositionn.width / 2 - this.popoverService.popoverWidth / 2;\r\n this.topValue = elementPositionn.top + this.popoverService.popoverHeight;\r\n }\r\n this.popoverService.positionX = this.leftValue;\r\n this.popoverService.positionY = this.topValue;\r\n }, 10);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PopoverComponent } from './popover.component';\r\nimport { PopoverDirective } from './popover.directive';\r\nimport { PopoverService } from './popover.service';\r\n\r\n@NgModule({\r\n declarations: [PopoverComponent, PopoverDirective],\r\n imports: [CommonModule],\r\n exports: [PopoverComponent, PopoverDirective],\r\n providers: [PopoverService],\r\n})\r\nexport class PopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DashboardFooterComponent } from './dashboard-footer/dashboard-footer.component';\r\nimport { PopoverModule } from '../popover/popover.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DashboardFooterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n PopoverModule\r\n ],\r\n exports:[\r\n DashboardFooterComponent\r\n ]\r\n})\r\nexport class DashboardFooterModule { }\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close() {\r\n this.onDialogClose.next();\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n entryComponents: [DialogComponent],\r\n providers: [DialogRef],\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { DatePickerComponent, IDatePickerConfig } from 'ng2-date-picker';\r\nimport { DialogService } from '../../ui-kit/dialog/dialog.service';\r\nimport { EditorConfig } from 'vcomply-editor';\r\n// import { ConfigureWidgetsComponent } from '../../configure-widgets/configure-widgets/configure-widgets.component';\r\n\r\n@Component({\r\n selector: 'app-form-group',\r\n templateUrl: './form-group.component.html',\r\n styleUrls: ['./form-group.component.less']\r\n})\r\nexport class FormGroupComponent implements OnInit {\r\n @Output() openCategoryList = new EventEmitter<string>();\r\n @Output() openResponsibilityCenterList = new EventEmitter<string>();\r\n @Output() openWhoCanViewThis = new EventEmitter<string>();\r\n @Output() closeCreateDashboard = new EventEmitter<string>();\r\n @Output() openFrequency = new EventEmitter<string>();\r\n @Input() disabled!: boolean;\r\n\r\n @ViewChild('fromDatePicker') fromDatePicker!: DatePickerComponent;\r\n @ViewChild('toDatePicker') toDatePicker!: DatePickerComponent;\r\n datePickerOverlay = false;\r\n selectedFromDate!: any;\r\n selectedToDate!: any;\r\n dashboardName!: any;\r\n dashboardDescriptionText!: any;\r\n fieldEmptyErrorMessage: string = 'Enter a value for this input box.';\r\n fieldLimitExceededErrorMessage: string = 'You have exceeded the maximum character limit of XYZ characters.';\r\n dashboardNameNotUniqueErrorMessage: string = 'A dashboard with this name already exists. Specify a different name for the dashboard.';\r\n dashboardNameError! : string;\r\n dashboardDescriptionError! : string;\r\n displayCriteria! : string;\r\n\r\n constructor(private dialog: DialogService) { }\r\n \r\n dashboardDescription: EditorConfig = {\r\n placeholder: 'Description (Max limit: 250 characters)',\r\n mode: 'prime',\r\n id: 'description'\r\n }\r\n\r\n fromDatePickerConfig : IDatePickerConfig = {\r\n min: this.getCurrentDate()\r\n }\r\n\r\n toDatePickerConfig : IDatePickerConfig = {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n openFromDatePicker() {\r\n this.fromDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n openToDatePicker() {\r\n this.toDatePicker.api.open();\r\n this.datePickerOverlay = true;\r\n }\r\n\r\n closeFromDatePicker() {\r\n let minToDate = this.selectedFromDate.clone().add(1, 'days');\r\n this.toDatePickerConfig = {min : minToDate, minTime : minToDate};\r\n\r\n if(this.selectedToDate && minToDate.diff(this.selectedToDate) > 0) {\r\n this.selectedToDate = undefined;\r\n }\r\n\r\n this.fromDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n closeToDatePicker() {\r\n this.toDatePicker.api.close();\r\n this.datePickerOverlay = false;\r\n }\r\n\r\n animateImage() {\r\n const circleImage = document.getElementsByClassName('image')\r\n console.log(circleImage);\r\n }\r\n\r\n selectWhoCanViewThis() {\r\n this.openWhoCanViewThis.emit();\r\n }\r\n\r\n selectResponsibilityCenter() {\r\n this.openResponsibilityCenterList.emit();\r\n }\r\n\r\n selectCategories() {\r\n this.openCategoryList.emit();\r\n }\r\n\r\n selectFrequency() {\r\n this.openFrequency.emit();\r\n }\r\n\r\n configureDashboard() {\r\n let fieldsStatus = this.verifyFields();\r\n // if(fieldsStatus) {\r\n // this.closeCreateDashboard.emit();\r\n // const ref = this.dialog.open(ConfigureWidgetsComponent, {\r\n // data: {},\r\n // position: 'CENTER',\r\n // pointer: 'none'\r\n // });\r\n // }\r\n }\r\n\r\n verifyFields() {\r\n let allFieldsValid = true;\r\n this.dashboardNameError = '';\r\n this.dashboardDescriptionError = '';\r\n \r\n if(this.dashboardName === null || this.dashboardName === undefined || this.dashboardName === '') {\r\n this.dashboardNameError = this.fieldEmptyErrorMessage;\r\n allFieldsValid = false;\r\n } else if(this.dashboardName.length > 30) {\r\n this.dashboardNameError = this.fieldLimitExceededErrorMessage.replace('XYZ', '30');\r\n allFieldsValid = false;\r\n } else if(this.dashboardDescriptionText === null || this.dashboardDescriptionText === undefined || this.dashboardDescriptionText === '') {\r\n this.dashboardDescriptionError = this.fieldEmptyErrorMessage;\r\n allFieldsValid = false;\r\n } else if(this.dashboardDescriptionText.length > 250) {\r\n this.dashboardDescriptionError = this.fieldLimitExceededErrorMessage.replace('XYZ', '250');\r\n allFieldsValid = false;\r\n }\r\n return allFieldsValid;\r\n }\r\n\r\n getCurrentDate(){\r\n let today = new Date();\r\n return today.getDate() + '-' + (today.getMonth()+1) + '-' + today.getFullYear();\r\n }\r\n\r\n displayCriteriaSelected(event: boolean, selection: string) {\r\n this.displayCriteria = selection;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { SnackBarService } from '../snack-bar/snack-bar.service';\r\n\r\n@Component({\r\n selector: 'floating-bar',\r\n templateUrl: './floating-bar.component.html',\r\n styleUrls: ['./floating-bar.component.less']\r\n})\r\nexport class FloatingBarComponent implements OnInit {\r\n @Output() cancelEvent = new EventEmitter<string>();\r\n @Output() submitEvent = new EventEmitter<string>();\r\n @Output() deleteEvent: EventEmitter<number> = new EventEmitter();\r\n @Input() text!: boolean;\r\n @Input() frequencyMessage: any;\r\n @Input() singleCategory: any;\r\n @Input() selectedData: any;\r\n\r\n constructor(private snackBar: SnackBarService\r\n ) {\r\n this.selectedData = [];\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n cancelFloatingBar() {\r\n this.cancelEvent.emit();\r\n }\r\n submitFloatingBar() {\r\n if (this.selectedData.length < 1) {\r\n this.snackBar.show('Select a widget.');\r\n return\r\n }\r\n this.submitEvent.emit(this.selectedData);\r\n }\r\n\r\n deleteSelected(index: number) {\r\n this.deleteEvent.emit(index);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FloatingBarComponent } from './floating-bar.component';\r\nimport { PopoverModule } from '../popover/popover.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FloatingBarComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n PopoverModule,\r\n ],\r\n exports: [\r\n FloatingBarComponent\r\n ]\r\n})\r\nexport class FloatingBarModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\r\n transform(items: any[], searchText: string): any[] {\r\n if (!items) {\r\n return [];\r\n }\r\n if (!searchText) {\r\n return items;\r\n }\r\n searchText = searchText.toLowerCase();\r\n if(items?.length){\r\n return items.filter((it: any) => {\r\n return JSON.stringify(it).toLowerCase().includes(searchText);\r\n });\r\n }else{\r\n return [];\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DashboardFooterConfig } from '../../ui-kit/dashboard-footer/dashboard-footer-config';\r\nimport { RiskCategoriesConfig } from './risk-categories-config';\r\n\r\n@Component({\r\n selector: 'app-risk-categories',\r\n templateUrl: './risk-categories.component.html',\r\n styleUrls: ['./risk-categories.component.less']\r\n})\r\nexport class RiskCategoriesComponent implements OnInit {\r\n\r\n\r\n @Input() categoryList: RiskCategoriesConfig = {\r\n strategic: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n operational: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n compliance: {\r\n list: [],\r\n selectedList: [],\r\n },\r\n others: {\r\n list: [],\r\n selectedList: [],\r\n }\r\n }\r\n @Input() allCategories: any[] = [];\r\n\r\n @Input() categoryIdKey: any;\r\n @Input() selectedCategories: any[] = [];\r\n\r\n search = '';\r\n activeTab: \"strategic\" | \"operational\" | \"compliance\" | \"others\"=\"strategic\";\r\n selectedIds: any[] = [];\r\n animation = false;\r\n blockWidth: any;\r\n footerDetails: DashboardFooterConfig = {\r\n selectedData: [],\r\n nonRemovableList:[],\r\n displayElementKey: 'category_name',\r\n elementId: 'category_id',\r\n singularText: 'Risk Category selected',\r\n pluralText: 'Risk Categories selected',\r\n showFrequency: false,\r\n frequencyText: '',\r\n isDisabled: false\r\n\r\n };\r\n\r\n @Output() saveSelectedCategory = new EventEmitter();\r\n @Output() closeList = new EventEmitter();\r\n @Output() closeCategoriesList = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.animation = true;\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 300);\r\n this.selectedIds = [];\r\n if (this.selectedCategories) {\r\n this.selectedCategories.forEach(element => {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n });\r\n }\r\n this.setList()\r\n \r\n }\r\n\r\n selectCategory(mode: any, activeTab: any, category: any) {\r\n if (mode) {\r\n this.selectedIds.push(category[this.categoryIdKey]);\r\n } else {\r\n const index = this.selectedIds.findIndex((element: any) => element == category[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n }\r\n this.setList();\r\n\r\n }\r\n\r\n deleteEvent(event: any) {\r\n const index = this.selectedIds.findIndex((element: any) => element == event[this.categoryIdKey]);\r\n this.selectedIds.splice(index, 1);\r\n this.setList();\r\n }\r\n\r\n selectAll(mode: any, activeTab: string) {\r\n\r\n if (mode) {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const list = this.categoryList[activeTab].list;\r\n list.forEach(element => {\r\n if (!this.selectedIds.includes(element[this.categoryIdKey])) {\r\n this.selectedIds.push(element[this.categoryIdKey]);\r\n }\r\n });\r\n }\r\n\r\n } else {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const list = [...this.categoryList[activeTab].list];\r\n list.forEach(element => {\r\n if (this.selectedIds.includes(element[this.categoryIdKey])) {\r\n let idIndex = this.selectedIds.findIndex((id: any) => id == element[this.categoryIdKey]);\r\n this.selectedIds.splice(idIndex, 1);\r\n }\r\n });\r\n }\r\n\r\n }\r\n this.setList();\r\n }\r\n\r\n setList() {\r\n const data: any = [];\r\n const categoryList = [...new Set(this.allCategories)] \r\n // cloneDeep(this.allCategories)\r\n const selectedIds =[...new Set(this.selectedIds)] \r\n // cloneDeep(this.selectedIds);\r\n this.categoryList.strategic.selectedList = [];\r\n this.categoryList.operational.selectedList = [];\r\n this.categoryList.compliance.selectedList = [];\r\n this.categoryList.others.selectedList = [];\r\n\r\n categoryList.forEach((element: any) => {\r\n if (selectedIds.includes(element[this.categoryIdKey])) {\r\n data.push(element);\r\n }\r\n });\r\n this.selectedCategories = data;\r\n this.footerDetails.selectedData = data;\r\n\r\n this.categoryList.strategic.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.strategic.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.operational.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.operational.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.compliance.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.compliance.selectedList.push(category)\r\n }\r\n });\r\n this.categoryList.others.list.forEach((category: any) => {\r\n if (selectedIds.includes(category[this.categoryIdKey])) {\r\n this.categoryList.others.selectedList.push(category)\r\n }\r\n });\r\n if (!this.activeTab) {\r\n this.setActiveTab();\r\n }\r\n }\r\n setActiveTab() {\r\n if (this.categoryList.strategic.selectedList.length > 0) {\r\n this.activeTab = 'strategic'\r\n } else if (this.categoryList.operational.selectedList.length > 0) {\r\n this.activeTab = 'operational'\r\n } else if (this.categoryList.compliance.selectedList.length > 0) {\r\n this.activeTab = 'compliance'\r\n } else if (this.categoryList.others.selectedList.length > 0) {\r\n this.activeTab = 'others'\r\n } else {\r\n this.activeTab = 'strategic'\r\n }\r\n }\r\n\r\n\r\n checkSelectAll(activeTab: string) {\r\n if (activeTab === \"strategic\" || activeTab === \"operational\" || activeTab === \"compliance\" || activeTab === \"others\") {\r\n const data = this.categoryList[activeTab].list.every((user: any) => this.selectedIds.includes(user[this.categoryIdKey]));\r\n return data;\r\n }\r\n }\r\n\r\n save() {\r\n this.saveSelectedCategory.emit(this.selectedCategories);\r\n }\r\n\r\n close() {\r\n this.closeCategoriesList.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'search'\r\n})\r\nexport class SearchPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return null;\r\n }\r\n if (!args) {\r\n return value;\r\n }\r\n\r\n args = args.toLowerCase();\r\n\r\n return value.filter((item: any) => {\r\n return JSON.stringify(item).toLowerCase().includes(args);\r\n });\r\n }\r\n\r\n}\r\n","import { ConfigureWidgetsService } from '../../services/configure-widgets.service';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { retry } from 'rxjs/operators';\r\nimport { widgetDataModel } from '../../interfaces/widget-data-model';\r\nimport { DialogRef } from '../../../ui-kit/dialog/dialog-ref';\r\nimport { widgetConfig } from './widget.interface';\r\nimport { SnackBarService } from '../../../ui-kit/snack-bar/snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-configure-widgets',\r\n templateUrl: './configure-widgets.component.html',\r\n styleUrls: ['./configure-widgets.component.less']\r\n})\r\nexport class ConfigureWidgetsComponent implements OnInit, OnChanges {\r\n\r\n @Output() widgetsDataModified: EventEmitter<any> = new EventEmitter();\r\n @Output() closeConfigureWidgets: EventEmitter<any> = new EventEmitter();\r\n checkboxStatus!: any;\r\n search: string = '';\r\n checkedArray: Array<{ index: number, status: number }> = [];\r\n selectedWidgets: Array<widgetDataModel> = [];\r\n\r\n module: \"COMPLIANCE\" | \"RISK\" = 'COMPLIANCE';\r\n @Input() selectedWidgetsData: any = [];\r\n @Input() displayedWidgets: any = [];\r\n @Input() showRisk = false;\r\n @Input() showCompliance = false;\r\n @Input() mode = 'CREATE'\r\n noDataText = 'You have not configured any widgets. Click on the <strong>Configure Widgets</strong> button to begin.';\r\n\r\n selectedWidgetIds: any = [];\r\n subResponsibilitiesSelected: boolean = false\r\n subKeyResponsibilitiesSelected: boolean = false\r\n showWidgets = true;\r\n complianceWidgetsDisplayCount = 9;\r\n riskWidgetsDisplayCount = 12;\r\n\r\n\r\n constructor(\r\n private dialog: DialogRef,\r\n public configureWidgetsService: ConfigureWidgetsService,\r\n private snackBar: SnackBarService) {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.mode == 'EDIT') {\r\n this.setWidgetsVisibilityToFalse()\r\n this.riskWidgetsDisplayCount = 0;\r\n this.complianceWidgetsDisplayCount = 0;\r\n const finalData = [...new Set(this.displayedWidgets)];\r\n finalData.forEach((element: any, index: any) => {\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.id == element.widget_code) {\r\n ele.visibility = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n filterData.push(subwidget.widget_code);\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].visibility = true;\r\n } else {\r\n ele.subWidgets[subIndex].visibility = false;\r\n }\r\n });\r\n }\r\n this.complianceWidgetsDisplayCount++\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.id == element.widget_code) {\r\n ele.visibility = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n filterData.push(subwidget.widget_code);\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].visibility = true;\r\n } else {\r\n ele.subWidgets[subIndex].visibility = false;\r\n }\r\n });\r\n\r\n }\r\n this.riskWidgetsDisplayCount++\r\n }\r\n })\r\n });\r\n }\r\n const data = [...new Set(this.selectedWidgetsData)];\r\n data.forEach((element: any, index: any) => {\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.id == element.widget_code && element.state == 'ACTIVE') {\r\n ele.value = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n if (subwidget.state == 'ACTIVE') {\r\n filterData.push(subwidget.widget_code);\r\n }\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].value = true;\r\n } else {\r\n ele.subWidgets[subIndex].value = false;\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets.push(ele);\r\n\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.id == element.widget_code && element.state == 'ACTIVE') {\r\n ele.value = true;\r\n if (ele.subWidgets.length > 0) {\r\n const filterData: any = []\r\n element.sub_widgets.filter((subwidget: any) => {\r\n if (subwidget.state == 'ACTIVE') {\r\n filterData.push(subwidget.widget_code);\r\n }\r\n });\r\n ele.subWidgets.forEach((subElement: any, subIndex: number) => {\r\n if (filterData.includes(subElement.id)) {\r\n ele.subWidgets[subIndex].value = true;\r\n } else {\r\n ele.subWidgets[subIndex].value = false;\r\n }\r\n });\r\n\r\n }\r\n this.selectedWidgets.push(ele);\r\n\r\n }\r\n })\r\n\r\n });\r\n this.module = (this.showCompliance) ? 'COMPLIANCE' : 'RISK';\r\n this.setSelectedWidgets();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n widgetsList = {\r\n COMPLIANCE: [\r\n {\r\n title: 'Overview',\r\n id: 'overview',\r\n description: 'Overview shows the performance of responsibilities and Responsibility Categories.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibility Calendar',\r\n id: 'compliance_calendar_flag',\r\n description: 'The Responsibility Calendar shows the due dates of responsibilities in a calendar format. The responsibilities are color coded to reflect the status of the responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-calender.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibility Center Overview',\r\n id: 'responsibility_center_overview_flag',\r\n description: 'The Responsibility Center Overview shows the performance of responsibilities and Responsibility Centers.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-center-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Responsibilities',\r\n id: 'my_responsibilities',\r\n description: 'This widget shows the performance of the responsibilities that you are required to complete, the responsibilities that you are reviewing and the responsibilities that you are overseeing.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/my-responsibilities.png',\r\n tabOption: true,\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: [\r\n {\r\n title: 'My Responsibilities',\r\n id: 'my_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Reviewing',\r\n id: 'reviewer_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Overseeing',\r\n id: 'cc_responsibility_flag',\r\n value: false,\r\n visibility:true,\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Key Responsibilities',\r\n id: 'key_responsibilities',\r\n description: 'This widget shows the performance of key responsibilities that you are required to complete, that you are reviewing, that you are overseeing and that you have assigned to another person.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/key-responsibilities.png',\r\n tabOption: true,\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: [\r\n {\r\n title: 'Overview',\r\n id: 'key_responsibilities_overview_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'My Responsibilities',\r\n id: 'key_my_responsibilities_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Reviewing',\r\n id: 'key_i_am_reviewing_flag',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'I’m Overseeing',\r\n id: 'key_i_am_overseeing_flag',\r\n value: false,\r\n visibility:true,\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Trend Analysis',\r\n id: 'trend_analysis_flag',\r\n description: 'The Trend Analysis is a graphical representation of the performance of responsibilities over a period.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/trend-analysis.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Workroom Updates',\r\n id: 'workroom_alert_flag',\r\n description: 'The Responsibility Workroom shows updates from the Responsibility Workrooms. A Responsibility Workroom exists for all responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/workroom-updates.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Recent Activities',\r\n id: 'recent_activity_flag',\r\n description: 'This is a chronological view of the recent updates of responsibilities.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/recent-activities.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Exception Summary',\r\n id: 'exception_summary_flag',\r\n description: 'Exceptions Summary show the number of responsibilities that are either not accepted, not completed or deleted.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/exception-summary.png',\r\n value: false,\r\n visibility:true,\r\n module: 'COMPLIANCE',\r\n subWidgets: []\r\n }\r\n ],\r\n RISK: [\r\n {\r\n title: 'Risk Overview',\r\n id: 'risk_overview',\r\n description: 'This widget shows the number and percentage of risks within each risk response strategy.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Metrics',\r\n id: 'risk_metrics',\r\n description: 'This widget shows the number of risks within each risk appetite, the number of risks that exceed the risk appetite, the number of risks that exceed the risk tolerance, the number of risks within each risk rating, and the number of risks that do not have any linked controls.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: [\r\n {\r\n title: 'Risk Appetite & Tolerance',\r\n id: 'risk_appetite_tolerance',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Risk Ratings',\r\n id: 'risk_ratings',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Risks Without Controls',\r\n id: 'risks_without_controls',\r\n value: false,\r\n visibility:true,\r\n },\r\n {\r\n title: 'Exceeds Risk Tolerance',\r\n id: 'exceeds_risk_tolerance',\r\n value: false,\r\n visibility:true,\r\n },\r\n ]\r\n },\r\n\r\n {\r\n title: 'Inherent Risk Rating by Responsibility Centers ',\r\n id: 'inherent_risk_rating_by_responsibility_centers',\r\n description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Residual Risk Rating by Responsibility Centers ',\r\n id: 'residual_risk_rating_by_responsibility_centers',\r\n description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Category Overview',\r\n id: 'risk_category_overview',\r\n description: 'This widgets shows the number of risks within each status, grouped according to the Risk Category the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Heatmap',\r\n id: 'risk_heatmap',\r\n description: 'The Risk Heatmap displays the risk matrix for any two risk factors.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-heatmap.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Inherent Risk Rating by Categories',\r\n id: 'inherent_risk_rating_by_categories',\r\n description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Risk Category that the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n\r\n {\r\n title: 'Residual Risk Rating by Categories',\r\n id: 'residual_risk_rating_by_categories',\r\n description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Risk Category that the risk is assigned to.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Inherent Risk Rating Trend by Responsibility Centers',\r\n id: 'inherent_risk_rating_trend_by_responsibility_centers',\r\n description: 'This widget is a graphical representation of the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Residual Risk Rating Trend by Responsibility Centers',\r\n id: 'residual_risk_rating_trend_by_responsibility_centers',\r\n description: 'This widget is a graphical representation of the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Risk Rating Trend by Categories',\r\n id: 'risk_rating_trend_by_categories',\r\n description: 'This widgets is a trend chart that shows the inherent and residual risk rating trend across the different Risk Categories.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n },\r\n {\r\n title: 'Top 5 Risk Ratings',\r\n id: 'top_5_residual_risk_ratings',\r\n description: 'This widgets shows ths top five risks with the highest risk rating.',\r\n widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',\r\n value: false,\r\n visibility:true,\r\n module: 'RISK',\r\n subWidgets: []\r\n }\r\n ]\r\n }\r\n\r\n selectWidget(event: any, module: 'COMPLIANCE' | 'RISK', widgetId: string, subWidgetId?: string) {\r\n const widgetIndex = this.widgetsList[module].findIndex((ele: any) => ele.id == widgetId);\r\n const isSubWidgetAddable = this.selectedWidgets.findIndex(( widget: any) => widget.id === widgetId )\r\n if (event) {\r\n if (this.selectedWidgets.length >= 10 && !(subWidgetId && isSubWidgetAddable >= 0)) {\r\n this.snackBar.show('You cannot add more than 10 widgets.');\r\n this.showWidgets = false;\r\n setTimeout(() => {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n this.showWidgets = true;\r\n }, 10);\r\n return\r\n }\r\n this.widgetsList[module][widgetIndex].value = true;\r\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\r\n if (!subWidgetId) {\r\n this.widgetsList[module][widgetIndex].subWidgets.forEach(ele => ele.value = true);\r\n } else {\r\n const subWidgetIndex = this.widgetsList[module][widgetIndex].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\r\n this.widgetsList[module][widgetIndex].subWidgets[subWidgetIndex].value = true;\r\n }\r\n }\r\n } else {\r\n if (this.widgetsList[module][widgetIndex].subWidgets.length > 0) {\r\n if (!subWidgetId) {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n this.widgetsList[module][widgetIndex].subWidgets.forEach((ele: any) => ele.value = false);\r\n } else {\r\n const subWidgetIndex = this.widgetsList[module][widgetIndex].subWidgets.findIndex((ele: any) => ele.id == subWidgetId);\r\n this.widgetsList[module][widgetIndex].subWidgets[subWidgetIndex].value = false;\r\n\r\n const isAllWidgetsRemoved = this.widgetsList[module][widgetIndex].subWidgets.every((ele: any) => ele.value == false);\r\n if (isAllWidgetsRemoved) {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n }\r\n }\r\n } else {\r\n this.widgetsList[module][widgetIndex].value = false;\r\n }\r\n }\r\n this.setSelectedWidgets();\r\n\r\n }\r\n setSelectedWidgets() {\r\n this.selectedWidgets = []\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n if (ele.value) {\r\n this.selectedWidgets.push(ele)\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n if (ele.value) {\r\n this.selectedWidgets.push(ele)\r\n }\r\n })\r\n }\r\n\r\n removeWidget(widget: widgetConfig) {\r\n const widgetIndex = this.widgetsList[widget.module].findIndex((ele: any) => ele.id == widget.id);\r\n this.widgetsList[widget.module][widgetIndex].value = false;\r\n if (this.widgetsList[widget.module][widgetIndex].subWidgets.length > 0) {\r\n this.widgetsList[widget.module][widgetIndex].subWidgets.forEach((ele: any) => ele.value = false);\r\n }\r\n this.setSelectedWidgets()\r\n }\r\n\r\n onNextClick() {\r\n this.widgetsDataModified.emit(this.selectedWidgets);\r\n }\r\n\r\n closeConfigureDashboard() {\r\n this.selectedWidgets = [];\r\n this.dialog.close();\r\n this.closeConfigureWidgets.emit(false);\r\n }\r\n\r\n setWidgetsVisibilityToFalse(){\r\n this.widgetsList.COMPLIANCE.forEach((ele: any) => {\r\n ele.visibility = false;\r\n if (ele.subWidgets.length > 0) { \r\n ele.subWidgets.forEach((subElement: any) => { \r\n subElement.visibility = false;\r\n });\r\n }\r\n })\r\n this.widgetsList.RISK.forEach((ele: any) => {\r\n ele.visibility = false;\r\n if (ele.subWidgets.length > 0) {\r\n ele.subWidgets.forEach((subElement: any) => {\r\n subElement.visibility = false;\r\n });\r\n }\r\n })\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appScrollInView]'\r\n})\r\nexport class ScrollInViewDirective implements OnChanges {\r\n@Input() appScrollInView = false;\r\n constructor(private el: ElementRef) {\r\n }\r\nngOnChanges(change:SimpleChanges){\r\n if(change?.appScrollInView && change?.appScrollInView?.currentValue === true){\r\n this.scroll();\r\n }\r\n}\r\n ngAfterViewInit() {\r\n // Otherwise Angular throws error: Expression has changed after it was checked.\r\n this.scroll();\r\n }\r\n\r\n scroll(){\r\n if(this.appScrollInView){\r\n window.setTimeout(() => {\r\n this.el.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollInViewDirective } from './scroll-in-view.directive';\n\n\n\n@NgModule({\n declarations: [\n ScrollInViewDirective\n ],\n imports: [\n CommonModule\n ],\n exports:[\n ScrollInViewDirective\n ]\n})\nexport class DirectivesModule { }\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-no-data',\r\n templateUrl: './no-data.component.html',\r\n styleUrls: ['./no-data.component.less'],\r\n})\r\nexport class NoDataComponent implements OnInit {\r\n @Input() action!: any;\r\n @Input() noDataImage!: string;\r\n @Input() noDataText = '';\r\n @Input() noDataButton!: string | boolean;\r\n @Input() noDataSecButton!: string | boolean;\r\n @Input() altText!: string;\r\n @Output() buttonAction = new EventEmitter<object>();\r\n @Input() smallButton!: boolean;\r\n @Input() buttonIcon!: any;\r\n @Input() iconClass!: any;\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n actionEmitter(button: object) {\r\n this.buttonAction.emit(button);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NoDataComponent } from './no-data.component';\r\n\r\n@NgModule({\r\n declarations: [NoDataComponent],\r\n imports: [CommonModule],\r\n exports: [NoDataComponent],\r\n})\r\nexport class NoDataModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FloatingBarModule } from '../../ui-kit//floating-bar/floating-bar.module';\r\nimport { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SearchPipe } from '../pipes/search.pipe';\r\nimport { ConfigureWidgetsComponent } from './configure-widgets/configure-widgets.component';\r\nimport { DirectivesModule } from '../directives/directives.module';\r\nimport { NoDataModule } from '../../ui-kit/no-data/no-data.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ConfigureWidgetsComponent, SearchPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n FloatingBarModule,\r\n FormgroupModule,\r\n FormsModule,\r\n DirectivesModule,\r\n NoDataModule\r\n ],\r\n exports: [\r\n ConfigureWidgetsComponent\r\n ]\r\n})\r\nexport class ConfigureWidgetsModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.less'],\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader-inline',\r\n templateUrl: './loader-inline.component.html',\r\n styleUrls: ['./loader-inline.component.less'],\r\n})\r\nexport class LoaderInlineComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { LoaderInlineComponent } from './loader-inline/loader-inline.component';\r\n\r\n@NgModule({\r\n declarations: [LoaderComponent, LoaderInlineComponent],\r\n imports: [CommonModule],\r\n exports: [LoaderComponent, LoaderInlineComponent],\r\n})\r\nexport class VLoaderModule {}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit {\r\n show = false;\r\n message: string = '--';\r\n icon: string = '&#xe914;';\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarService.snackbarSubject.subscribe((state) => {\r\n if (state.icon) {\r\n this.icon = state.icon;\r\n } else {\r\n this.icon = '&#xe914;';\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n setTimeout(() => {\r\n this.show = false;\r\n }, 3000);\r\n });\r\n }\r\n close() {\r\n this.show = false;\r\n }\r\n ngOnDestroy() {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","import { Component, Input, OnInit, EventEmitter, Output, HostListener } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-smiley-dialog',\r\n templateUrl: './smiley-dialog.component.html',\r\n styleUrls: ['./smiley-dialog.component.less'],\r\n})\r\nexport class SmileyDialogComponent implements OnInit {\r\n @Input() message!: string;\r\n @Input() autoClose!: boolean;\r\n @Input() actionButtons!: any[];\r\n @Output() action: EventEmitter<string> = new EventEmitter();\r\n @Output() closeSmiley: EventEmitter<any> = new EventEmitter();\r\n\r\n @HostListener('window:keyup', ['$event']) handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.smileyCloseEmitter({});\r\n }\r\n }\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (this.autoClose) {\r\n setTimeout(() => {\r\n this.close();\r\n }, 8000);\r\n }\r\n }\r\n close() {\r\n this.closeSmiley.emit();\r\n }\r\n\r\n actionEmitter(event: any) {\r\n this.action.emit(event?.id);\r\n }\r\n\r\n smileyCloseEmitter(event: any) {\r\n this.closeSmiley.emit();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SmileyDialogComponent } from './smiley-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [SmileyDialogComponent],\r\n imports: [CommonModule],\r\n\r\n exports: [SmileyDialogComponent],\r\n})\r\nexport class SmileyDialogModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MarxEditorModule } from 'vcomply-editor';\r\nimport { DpDatePickerModule } from 'ng2-date-picker';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CreateDashboardComponent } from './create-dashboard.component';\r\nimport { SelectModule } from '../ui-kit/select/select.module';\r\nimport { UserListComponent } from './user-list/user-list.component';\r\nimport { ResponsibilityCenterComponent } from './responsibility-center/responsibility-center.component';\r\nimport { CategoriesComponent } from './categories/categories.component';\r\nimport { FrequencyComponent } from './frequency/frequency.component';\r\nimport { PaginationModule } from '../ui-kit/pagination/pagination.module';\r\nimport { FormgroupModule } from '../ui-kit/formgroup/formgroup.module';\r\nimport { DashboardFooterModule } from '../ui-kit/dashboard-footer/dashboard-footer.module';\r\nimport { FormGroupComponent } from './form-group/form-group.component';\r\nimport { TooltipModule } from '../ui-kit/tooltip/tooltip.module';\r\nimport { FloatingBarModule } from '../ui-kit/floating-bar/floating-bar.module';\r\nimport { DialogModule } from '../ui-kit/dialog/dialog.module';\r\nimport { Configurations } from '../configurations';\r\nimport { FilterPipe } from './pipes/filter.pipe';\r\nimport { RiskCategoriesComponent } from './risk-categories/risk-categories.component';\r\nimport { ConfigureWidgetsModule } from './configure-widgets/configure-widgets.module';\r\nimport { PopoverModule } from '../ui-kit/popover/popover.module';\r\nimport { VLoaderModule } from '../ui-kit/v-loader/v-loader.module';\r\nimport { SnackBarModule } from '../ui-kit/snack-bar/snack-bar.module';\r\nimport { NoDataModule } from '../ui-kit/no-data/no-data.module';\r\nimport { DirectivesModule } from './directives/directives.module';\r\nimport { SmileyDialogModule } from '../ui-kit/smiley-dialog/smiley-dialog.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CreateDashboardComponent,\r\n UserListComponent,\r\n FormGroupComponent,\r\n ResponsibilityCenterComponent,\r\n CategoriesComponent,\r\n RiskCategoriesComponent,\r\n FrequencyComponent,\r\n FilterPipe,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MarxEditorModule,\r\n FormgroupModule,\r\n DpDatePickerModule,\r\n FormsModule,\r\n TooltipModule,\r\n SelectModule,\r\n DashboardFooterModule,\r\n PaginationModule,\r\n FloatingBarModule,\r\n DialogModule,\r\n ConfigureWidgetsModule, \r\n PopoverModule,\r\n VLoaderModule,\r\n SnackBarModule,\r\n NoDataModule,\r\n DirectivesModule,\r\n SmileyDialogModule\r\n \r\n ],\r\n exports: [\r\n CreateDashboardComponent\r\n ]\r\n \r\n})\r\nexport class CreateDashboardModule { \r\n public static forRoot(environmentConfig: Configurations): ModuleWithProviders<CreateDashboardModule> {\r\n\r\n return {\r\n ngModule: CreateDashboardModule,\r\n providers: [\r\n { provide: Configurations, useValue: environmentConfig }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of create-dashboard\r\n */\r\n\r\n// export * from './lib/create-dashboard.service';\r\n// export * from './lib/create-dashboard.component';\r\n// export * from './lib/create-dashboard.module';\r\n\r\nexport * from './lib/create-dashboard.service';\r\nexport * from './lib/create-dashboard-container/create-dashboard.component';\r\nexport * from './lib/create-dashboard-container/create-dashboard.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {Configurations as ɵc} from './lib/configurations';\nexport {CategoriesComponent as ɵq} from './lib/create-dashboard-container/categories/categories.component';\nexport {ConfigureWidgetsModule as ɵbt} from './lib/create-dashboard-container/configure-widgets/configure-widgets.module';\nexport {ConfigureWidgetsComponent as ɵbu} from './lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component';\nexport {DirectivesModule as ɵbw} from './lib/create-dashboard-container/directives/directives.module';\nexport {ScrollInViewDirective as ɵbx} from './lib/create-dashboard-container/directives/scroll-in-view.directive';\nexport {FormGroupComponent as ɵi} from './lib/create-dashboard-container/form-group/form-group.component';\nexport {FrequencyComponent as ɵs} from './lib/create-dashboard-container/frequency/frequency.component';\nexport {FilterPipe as ɵt} from './lib/create-dashboard-container/pipes/filter.pipe';\nexport {SearchPipe as ɵbv} from './lib/create-dashboard-container/pipes/search.pipe';\nexport {ResponsibilityCenterComponent as ɵp} from './lib/create-dashboard-container/responsibility-center/responsibility-center.component';\nexport {RiskCategoriesComponent as ɵr} from './lib/create-dashboard-container/risk-categories/risk-categories.component';\nexport {AuthService as ɵb} from './lib/create-dashboard-container/services/auth.service';\nexport {ConfigureWidgetsService as ɵg} from './lib/create-dashboard-container/services/configure-widgets.service';\nexport {CreateDashboardService as ɵa} from './lib/create-dashboard-container/services/create-dashboard.service';\nexport {PaginationService as ɵd} from './lib/create-dashboard-container/services/pagination.service';\nexport {UserListComponent as ɵh} from './lib/create-dashboard-container/user-list/user-list.component';\nexport {DashboardFooterModule as ɵbk} from './lib/ui-kit/dashboard-footer/dashboard-footer.module';\nexport {DashboardFooterComponent as ɵbl} from './lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component';\nexport {DialogConfig as ɵo} from './lib/ui-kit/dialog/dialog-config';\nexport {DialogRef as ɵn} from './lib/ui-kit/dialog/dialog-ref';\nexport {DialogComponent as ɵl} from './lib/ui-kit/dialog/dialog.component';\nexport {DialogModule as ɵk} from './lib/ui-kit/dialog/dialog.module';\nexport {DialogService as ɵj} from './lib/ui-kit/dialog/dialog.service';\nexport {InsertionDirective as ɵm} from './lib/ui-kit/dialog/insertion.directive';\nexport {FloatingBarComponent as ɵbs} from './lib/ui-kit/floating-bar/floating-bar.component';\nexport {FloatingBarModule as ɵbr} from './lib/ui-kit/floating-bar/floating-bar.module';\nexport {ClickOutsideDirective as ɵbc} from './lib/ui-kit/formgroup/click-outside.directive';\nexport {CsCheckboxComponent as ɵv} from './lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component';\nexport {CsRadioGroupComponent as ɵy} from './lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component';\nexport {CsRadioComponent as ɵw} from './lib/ui-kit/formgroup/cs-radio/cs-radio.component';\nexport {CsSelectComponent as ɵz} from './lib/ui-kit/formgroup/cs-select/cs-select.component';\nexport {CsSwitchComponent as ɵx} from './lib/ui-kit/formgroup/cs-switch/cs-switch.component';\nexport {FormgroupModule as ɵu} from './lib/ui-kit/formgroup/formgroup.module';\nexport {PascalPipe as ɵba} from './lib/ui-kit/formgroup/pipes/pascal.pipe';\nexport {SearchMultiSelectPipe as ɵbb} from './lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe';\nexport {NoDataComponent as ɵbz} from './lib/ui-kit/no-data/no-data.component';\nexport {NoDataModule as ɵby} from './lib/ui-kit/no-data/no-data.module';\nexport {PaginationComponent as ɵbq} from './lib/ui-kit/pagination/pagination.component';\nexport {PaginationModule as ɵbp} from './lib/ui-kit/pagination/pagination.module';\nexport {PopoverComponent as ɵbn} from './lib/ui-kit/popover/popover.component';\nexport {PopoverDirective as ɵbo} from './lib/ui-kit/popover/popover.directive';\nexport {PopoverModule as ɵbm} from './lib/ui-kit/popover/popover.module';\nexport {PopoverService as ɵf} from './lib/ui-kit/popover/popover.service';\nexport {CsOptionComponent as ɵbh} from './lib/ui-kit/select/cs-option/cs-option.component';\nexport {CsSelectComponent as ɵbg} from './lib/ui-kit/select/cs-select/cs-select.component';\nexport {SafeHtmlPipe as ɵbj} from './lib/ui-kit/select/safe-html.pipe';\nexport {SelectModule as ɵbf} from './lib/ui-kit/select/select.module';\nexport {CsSelectService as ɵbi} from './lib/ui-kit/services/cs-select.service';\nexport {SmileyDialogComponent as ɵcg} from './lib/ui-kit/smiley-dialog/smiley-dialog.component';\nexport {SmileyDialogModule as ɵcf} from './lib/ui-kit/smiley-dialog/smiley-dialog.module';\nexport {SnackBarModule as ɵcd} from './lib/ui-kit/snack-bar/snack-bar.module';\nexport {SnackBarService as ɵe} from './lib/ui-kit/snack-bar/snack-bar.service';\nexport {SnackBarComponent as ɵce} from './lib/ui-kit/snack-bar/snack-bar/snack-bar.component';\nexport {ToolTipDirective as ɵbe} from './lib/ui-kit/tooltip/tooltip.directive';\nexport {TooltipModule as ɵbd} from './lib/ui-kit/tooltip/tooltip.module';\nexport {LoaderInlineComponent as ɵcc} from './lib/ui-kit/v-loader/loader-inline/loader-inline.component';\nexport {LoaderComponent as ɵcb} from './lib/ui-kit/v-loader/loader/loader.component';\nexport {VLoaderModule as ɵca} from './lib/ui-kit/v-loader/v-loader.module';"],"names":["CreateDashboardService","CsSelectComponent"],"mappings":"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"}