@igo2/integration 17.0.0-next.0 → 17.0.0-next.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.
Files changed (94) hide show
  1. package/esm2022/lib/about/about-tool/about-tool.component.mjs +14 -12
  2. package/esm2022/lib/about/about.module.mjs +4 -4
  3. package/esm2022/lib/analytics/analytics-listener.service.mjs +6 -6
  4. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +3 -3
  5. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +4 -4
  6. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +6 -6
  7. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.state.mjs +3 -3
  10. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +3 -3
  11. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +3 -3
  12. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +3 -3
  13. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +3 -3
  14. package/esm2022/lib/context/context.module.mjs +4 -4
  15. package/esm2022/lib/context/context.state.mjs +6 -6
  16. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +14 -10
  17. package/esm2022/lib/directions/directions.module.mjs +4 -4
  18. package/esm2022/lib/directions/directions.state.mjs +3 -3
  19. package/esm2022/lib/draw/draw.module.mjs +4 -4
  20. package/esm2022/lib/draw/draw.state.mjs +3 -3
  21. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +3 -3
  22. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +4 -4
  23. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  24. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +3 -3
  25. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +3 -3
  26. package/esm2022/lib/filter/filter.module.mjs +4 -4
  27. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +3 -3
  28. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +12 -10
  29. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +3 -3
  30. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +13 -11
  31. package/esm2022/lib/geometry-form/geometry-form.module.mjs +7 -6
  32. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +3 -3
  33. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  34. package/esm2022/lib/import-export/import-export.state.mjs +3 -3
  35. package/esm2022/lib/integration.module.mjs +4 -4
  36. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +22 -16
  37. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +3 -3
  38. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +3 -3
  39. package/esm2022/lib/map/layer-list-tool.state.mjs +3 -3
  40. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +3 -3
  41. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +3 -3
  42. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +16 -14
  43. package/esm2022/lib/map/map-proximity.state.mjs +6 -6
  44. package/esm2022/lib/map/map-tool/map-tool.component.mjs +3 -3
  45. package/esm2022/lib/map/map-tools/map-tools.component.mjs +3 -3
  46. package/esm2022/lib/map/map.module.mjs +4 -4
  47. package/esm2022/lib/map/map.state.mjs +9 -7
  48. package/esm2022/lib/measure/measure.module.mjs +4 -4
  49. package/esm2022/lib/measure/measure.state.mjs +3 -3
  50. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +3 -3
  51. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +4 -4
  52. package/esm2022/lib/print/print-tool/print-tool.component.mjs +3 -3
  53. package/esm2022/lib/print/print.module.mjs +4 -4
  54. package/esm2022/lib/search/query.state.mjs +6 -6
  55. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +3 -3
  56. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  57. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +6 -6
  58. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +4 -4
  59. package/esm2022/lib/search/search.module.mjs +4 -4
  60. package/esm2022/lib/search/search.state.mjs +10 -8
  61. package/esm2022/lib/storage/storage.state.mjs +6 -6
  62. package/esm2022/lib/tool/tool.state.mjs +3 -3
  63. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +13 -10
  64. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +10 -7
  65. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +13 -10
  66. package/esm2022/lib/workspace/shared/workspace.utils.mjs +1 -1
  67. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +3 -3
  68. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  69. package/esm2022/lib/workspace/workspace.state.mjs +6 -6
  70. package/fesm2022/igo2-integration.mjs +276 -268
  71. package/fesm2022/igo2-integration.mjs.map +1 -1
  72. package/lib/about/about-tool/about-tool.component.d.ts +2 -1
  73. package/lib/analytics/analytics-listener.service.d.ts +1 -1
  74. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +1 -1
  75. package/lib/context/context.state.d.ts +1 -1
  76. package/lib/directions/directions-tool/directions-tool.component.d.ts +3 -1
  77. package/lib/environment/environment.interface.d.ts +1 -1
  78. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +2 -1
  79. package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +2 -1
  80. package/lib/geometry-form/geometry-form.module.d.ts +3 -2
  81. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +4 -1
  82. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +2 -1
  83. package/lib/map/map-proximity.state.d.ts +1 -1
  84. package/lib/map/map.state.d.ts +2 -1
  85. package/lib/search/query.state.d.ts +1 -1
  86. package/lib/search/search-results-tool/search-results-tool.component.d.ts +1 -1
  87. package/lib/search/search.state.d.ts +2 -1
  88. package/lib/storage/storage.state.d.ts +1 -1
  89. package/lib/workspace/shared/edition-actions.service.d.ts +3 -1
  90. package/lib/workspace/shared/feature-actions.service.d.ts +3 -1
  91. package/lib/workspace/shared/wfs-actions.service.d.ts +3 -1
  92. package/lib/workspace/shared/workspace.utils.d.ts +3 -1
  93. package/lib/workspace/workspace.state.d.ts +1 -1
  94. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-integration.mjs","sources":["../../../packages/integration/src/lib/about/about-tool/about-tool.component.ts","../../../packages/integration/src/lib/about/about-tool/about-tool.component.html","../../../packages/integration/src/lib/about/about.module.ts","../../../packages/integration/src/lib/map/map.state.ts","../../../packages/integration/src/lib/catalog/catalog.state.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.ts","../../../packages/integration/src/lib/import-export/import-export.state.ts","../../../packages/integration/src/lib/tool/tool.state.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.module.ts","../../../packages/integration/src/lib/catalog/catalog.module.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.html","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.html","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.html","../../../packages/integration/src/lib/map/layer-list-tool.state.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.html","../../../packages/integration/src/lib/context/context.state.ts","../../../packages/integration/src/lib/context/index.ts","../../../packages/integration/src/lib/context/context.module.ts","../../../packages/integration/src/lib/directions/directions.state.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.html","../../../packages/integration/src/lib/directions/directions.module.ts","../../../packages/integration/src/lib/draw/draw.state.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.html","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.module.ts","../../../packages/integration/src/lib/draw/draw.module.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.html","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.html","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.html","../../../packages/integration/src/lib/storage/storage.state.ts","../../../packages/integration/src/lib/workspace/shared/workspace.utils.ts","../../../packages/integration/src/lib/workspace/shared/edition-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/feature-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/wfs-actions.service.ts","../../../packages/integration/src/lib/workspace/workspace.state.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.html","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.html","../../../packages/integration/src/lib/filter/filter.module.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.html","../../../packages/integration/src/lib/geometry-form/geometry-form.module.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.html","../../../packages/integration/src/lib/import-export/import-export.module.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.html","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.ts","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.html","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.ts","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.html","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.ts","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.html","../../../packages/integration/src/lib/map/map-proximity.state.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.html","../../../packages/integration/src/lib/map/map-tool/map-tool.component.ts","../../../packages/integration/src/lib/map/map-tool/map-tool.component.html","../../../packages/integration/src/lib/map/map-tools/map-tools.component.ts","../../../packages/integration/src/lib/map/map-tools/map-tools.component.html","../../../packages/integration/src/lib/map/map.module.ts","../../../packages/integration/src/lib/measure/measure.state.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.html","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.module.ts","../../../packages/integration/src/lib/measure/measure.module.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.html","../../../packages/integration/src/lib/print/print.module.ts","../../../packages/integration/src/lib/map/index.ts","../../../packages/integration/src/lib/search/search.state.ts","../../../packages/integration/src/lib/search/search-bar/search-bar-binding.directive.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.html","../../../packages/integration/src/lib/search/search.module.ts","../../../packages/integration/src/lib/workspace/workspace.module.ts","../../../packages/integration/src/lib/integration.module.ts","../../../packages/integration/src/lib/analytics/analytics-listener.service.ts","../../../packages/integration/src/lib/filter/index.ts","../../../packages/integration/src/lib/search/query.state.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.module.ts","../../../packages/integration/src/lib/search/search-bar/search-bar.module.ts","../../../packages/integration/src/lib/search/index.ts","../../../packages/integration/src/public_api.ts","../../../packages/integration/src/igo2-integration.ts"],"sourcesContent":["import { NgFor, NgIf } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport {\r\n CustomHtmlComponent,\r\n InteractiveTourComponent,\r\n ToolComponent\r\n} from '@igo2/common';\r\nimport { ConfigService, LanguageService, version } from '@igo2/core';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { of } from 'rxjs';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport { AllEnvironmentOptions } from '../../environment';\r\n\r\n@ToolComponent({\r\n name: 'about',\r\n title: 'igo.integration.tools.about',\r\n icon: 'help-circle'\r\n})\r\n@Component({\r\n selector: 'igo-about-tool',\r\n templateUrl: './about-tool.component.html',\r\n styleUrls: ['./about-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n InteractiveTourComponent,\r\n NgIf,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n NgFor,\r\n CustomHtmlComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AboutToolComponent implements OnInit {\r\n private configOptions: AllEnvironmentOptions;\r\n @Input()\r\n get headerHtml() {\r\n return this._headerHtml;\r\n }\r\n set headerHtml(value: string) {\r\n this._headerHtml = Array.isArray(value) ? value.join('\\n') : value;\r\n }\r\n\r\n @Input()\r\n get html() {\r\n return this._html;\r\n }\r\n set html(value: string) {\r\n this._html = Array.isArray(value) ? value.join('\\n') : value;\r\n }\r\n private _discoverTitleInLocale: string = 'IGO';\r\n public discoverTitleInLocale$: Observable<string> = of(\r\n this._discoverTitleInLocale\r\n );\r\n\r\n @Input()\r\n get discoverTitleInLocale() {\r\n return this._discoverTitleInLocale;\r\n }\r\n set discoverTitleInLocale(value: string) {\r\n this._discoverTitleInLocale = value;\r\n this.discoverTitleInLocale$ = of(value);\r\n }\r\n\r\n @Input() trainingGuideURLs;\r\n\r\n public effectiveVersion: string;\r\n private _html: string = 'igo.integration.aboutTool.html';\r\n private _headerHtml: string;\r\n\r\n private baseUrlProfil;\r\n private baseUrlGuide;\r\n\r\n public loading = false;\r\n\r\n constructor(\r\n public configService: ConfigService,\r\n public auth: AuthService,\r\n private http: HttpClient,\r\n private cdRef: ChangeDetectorRef,\r\n private languageService: LanguageService\r\n ) {\r\n this.headerHtml = this.languageService.translate.instant(\r\n 'igo.integration.aboutTool.headerHtml'\r\n );\r\n this.configOptions = this.configService.getConfigs();\r\n const configVersion = this.configOptions.version;\r\n this.effectiveVersion =\r\n configVersion?.app || configVersion?.lib || version.lib;\r\n this.baseUrlProfil = this.configOptions.storage?.url;\r\n this.baseUrlGuide =\r\n this.configOptions.depot?.url +\r\n // todo validate this property\r\n (this.configOptions.depot as any)?.guideUrl;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.auth.authenticated && this.configOptions.context?.url) {\r\n this.http.get(this.baseUrlProfil).subscribe((profil) => {\r\n const recast = profil as any;\r\n this.trainingGuideURLs = recast.guides;\r\n this.cdRef.detectChanges();\r\n });\r\n } else if (\r\n this.auth.authenticated &&\r\n !this.configOptions.context?.url &&\r\n this.configOptions.depot?.trainingGuides\r\n ) {\r\n this.trainingGuideURLs = this.configOptions.depot?.trainingGuides;\r\n }\r\n }\r\n\r\n openGuide(guide?) {\r\n this.loading = true;\r\n const url = guide\r\n ? this.baseUrlGuide + guide + '?'\r\n : this.baseUrlGuide + this.trainingGuideURLs[0] + '?';\r\n this.http\r\n .get(url, {\r\n responseType: 'blob'\r\n })\r\n .subscribe(() => {\r\n this.loading = false;\r\n window.open(url, '_blank');\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n formatFileName(name: string) {\r\n name = name.split('_').join(' ');\r\n const index = name.indexOf('.');\r\n name = name.slice(0, index);\r\n return name;\r\n }\r\n}\r\n","<p></p>\n<igo-interactive-tour\n mat-raised-button\n tourToStart=\"global\"\n menuIsOpen=\"true\"\n styleButton=\"raised\"\n [discoverTitleInLocale$]=\"discoverTitleInLocale$\"\n>\n</igo-interactive-tour>\n\n<button\n *ngIf=\"\n auth.authenticated && trainingGuideURLs && trainingGuideURLs.length === 1\n \"\n class=\"training-guide-button\"\n mat-raised-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n>\n <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon svgIcon=\"file-document\"></mat-icon>\n</button>\n\n<button\n *ngIf=\"\n auth.authenticated && trainingGuideURLs && trainingGuideURLs.length > 1\n \"\n class=\"training-guide-button\"\n mat-raised-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n>\n <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon svgIcon=\"file-document\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let guide of trainingGuideURLs\"\n mat-menu-item\n (click)=\"openGuide(guide)\"\n >\n {{ formatFileName(guide) }}\n </button>\n</mat-menu>\n\n<igo-custom-html\n *ngIf=\"headerHtml !== ''\"\n class=\"mat-typography\"\n [html]=\"headerHtml | translate\"\n>\n</igo-custom-html>\n\n<igo-custom-html\n class=\"mat-typography\"\n [html]=\"html | translate: { version: effectiveVersion }\"\n>\n</igo-custom-html>\n","import {\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n ModuleWithProviders,\r\n NgModule\r\n} from '@angular/core';\r\n\r\nimport { AboutToolComponent } from './about-tool/about-tool.component';\r\n\r\n/**\r\n * @deprecated import the AboutToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [AboutToolComponent],\r\n exports: [AboutToolComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class IgoAppAboutModule {\r\n static forRoot(): ModuleWithProviders<IgoAppAboutModule> {\r\n return {\r\n ngModule: IgoAppAboutModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ConfigService, StorageService } from '@igo2/core';\r\nimport { IgoMap, MapService, ProjectionService } from '@igo2/geo';\r\n\r\n// import { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Service that holds the state of the map module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapState {\r\n // public mapCenter$ = new BehaviorSubject<boolean>(false);\r\n get showAllLegendsValue(): boolean {\r\n return this._legendToolShowAll;\r\n }\r\n\r\n set showAllLegendsValue(value) {\r\n this._legendToolShowAll = value;\r\n }\r\n private _legendToolShowAll: boolean;\r\n\r\n /**\r\n * Active map\r\n */\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n private _map: IgoMap;\r\n\r\n constructor(\r\n private mapService: MapService,\r\n private projectionService: ProjectionService, // Don't remove this or it'll never be injected,\r\n private storageService: StorageService,\r\n private configService: ConfigService\r\n ) {\r\n this._map = new IgoMap(\r\n {\r\n controls: {\r\n scaleLine: true,\r\n attribution: {\r\n collapsed: true\r\n }\r\n }\r\n },\r\n this.storageService,\r\n this.configService\r\n );\r\n\r\n this.mapService.setMap(this.map);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { EntityStore } from '@igo2/common';\r\nimport { Catalog, CatalogItem } from '@igo2/geo';\r\n\r\n/**\r\n * Service that holds the state of the catalog module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CatalogState {\r\n /**\r\n * Store that contains all the catalogs\r\n */\r\n get catalogStore(): EntityStore<Catalog> {\r\n return this._catalogStore;\r\n }\r\n private _catalogStore: EntityStore<Catalog>;\r\n\r\n /**\r\n * Catalog -> Catalog items store mapping\r\n */\r\n private catalogItemsStores = new Map<string, EntityStore<CatalogItem>>();\r\n\r\n constructor(authService: AuthService) {\r\n this._catalogStore = new EntityStore([]);\r\n\r\n authService.authenticate$.subscribe(() => {\r\n this.clearCatalogItemsStores();\r\n });\r\n }\r\n\r\n /**\r\n * Get a catalog's items store\r\n * @param catalog Catalog\r\n * @returns Store that contains the catalog items\r\n */\r\n getCatalogItemsStore(catalog: Catalog): EntityStore<CatalogItem> {\r\n return this.catalogItemsStores.get(catalog.id as string);\r\n }\r\n\r\n /**\r\n * Bind a catalog items store to a catalog\r\n * @param catalog Catalog\r\n * @param store Catalog items store\r\n */\r\n setCatalogItemsStore(catalog: Catalog, store: EntityStore<CatalogItem>) {\r\n this.catalogItemsStores.set(catalog.id as string, store);\r\n }\r\n\r\n /**\r\n * Clear all catalog items stores\r\n */\r\n clearCatalogItemsStores() {\r\n this.catalogItemsStores.clear();\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { EntityRecord, EntityStore, ToolComponent } from '@igo2/common';\r\nimport {\r\n Catalog,\r\n CatalogBrowserComponent,\r\n CatalogItem,\r\n CatalogItemState,\r\n CatalogService,\r\n IgoMap\r\n} from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { CatalogState } from '../catalog.state';\r\n\r\n/**\r\n * Tool to browse a catalog's groups and layers and display them to a map.\r\n */\r\n@ToolComponent({\r\n name: 'catalogBrowser',\r\n title: 'igo.integration.tools.catalog',\r\n icon: 'photo-browser',\r\n parent: 'catalog'\r\n})\r\n@Component({\r\n selector: 'igo-catalog-browser-tool',\r\n templateUrl: './catalog-browser-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgIf, CatalogBrowserComponent, AsyncPipe]\r\n})\r\nexport class CatalogBrowserToolComponent implements OnInit, OnDestroy {\r\n catalog: Catalog;\r\n\r\n /**\r\n * Store that contains the catalog items\r\n * @internal\r\n */\r\n store$ = new BehaviorSubject<EntityStore<CatalogItem, CatalogItemState>>(\r\n undefined\r\n );\r\n\r\n /**\r\n * Subscription to the selected catalog\r\n */\r\n private catalog$$: Subscription;\r\n\r\n /**\r\n * Whether a group can be toggled when it's collapsed\r\n */\r\n @Input() toggleCollapsedGroup: boolean = true;\r\n\r\n /**\r\n * Map to add layers to\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private catalogService: CatalogService,\r\n private catalogState: CatalogState,\r\n private mapState: MapState,\r\n private authService: AuthService\r\n ) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnInit() {\r\n const catalogStore = this.catalogState.catalogStore;\r\n\r\n const catalog$ = catalogStore.stateView.firstBy$(\r\n (record: EntityRecord<Catalog>) => record.state.selected === true\r\n );\r\n const authenticate$ = this.authService.authenticate$;\r\n this.catalog$$ = combineLatest([catalog$, authenticate$]).subscribe(\r\n ([record, authenticate]) => {\r\n const catalog = record.entity;\r\n this.catalog = catalog;\r\n this.loadCatalogItems(this.catalog);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.catalog$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * Get the selected catalog's items from the CatalogService and\r\n * load them into the store.\r\n * @param catalog Selected catalog\r\n */\r\n private loadCatalogItems(catalog: Catalog) {\r\n let store = this.catalogState.getCatalogItemsStore(catalog);\r\n if (store !== undefined) {\r\n this.store$.next(store);\r\n return;\r\n }\r\n\r\n store = new EntityStore<CatalogItem>([]);\r\n this.catalogState.setCatalogItemsStore(catalog, store);\r\n this.catalogService\r\n .loadCatalogItems(catalog)\r\n .pipe(take(1))\r\n .subscribe((items: CatalogItem[]) => {\r\n store.load(items);\r\n this.store$.next(store);\r\n });\r\n }\r\n}\r\n","<igo-catalog-browser\n *ngIf=\"store$ | async as store\"\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup\"\n>\n</igo-catalog-browser>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CatalogBrowserToolComponent } from './catalog-browser-tool.component';\r\n\r\n/**\r\n * @deprecated import the CatalogBrowserToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [CatalogBrowserToolComponent],\r\n exports: [CatalogBrowserToolComponent]\r\n})\r\nexport class IgoAppCatalogBrowserToolModule {}\r\n","import { Injectable } from '@angular/core';\n\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nexport enum ImportExportType {\n layer = 'layer',\n context = 'context'\n}\n\nexport enum ImportExportMode {\n import = 'import',\n export = 'export'\n}\n\n/**\n * Service that holds the state of the importExport module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportExportState {\n readonly importExportType$: BehaviorSubject<ImportExportType> =\n new BehaviorSubject(ImportExportType.layer);\n readonly selectedMode$: BehaviorSubject<ImportExportMode> =\n new BehaviorSubject(ImportExportMode.import);\n readonly exportOptions$: BehaviorSubject<ExportOptions> = new BehaviorSubject(\n undefined\n );\n\n setImportExportType(type: ImportExportType) {\n this.importExportType$.next(type);\n }\n\n setMode(mode: ImportExportMode) {\n this.selectedMode$.next(mode);\n }\n\n setsExportOptions(exportOptions: ExportOptions) {\n this.exportOptions$.next(exportOptions);\n }\n}\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ToolService, Toolbox } from '@igo2/common';\r\nimport { ExportOptions } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../import-export/import-export.state';\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToolState {\r\n get toolbox(): Toolbox {\r\n return this.toolService.toolbox;\r\n }\r\n\r\n public openSidenav$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n constructor(\r\n private toolService: ToolService,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n toolToActivateFromOptions(toolToActivate: {\r\n tool: string;\r\n options: { [key: string]: any };\r\n }) {\r\n if (!toolToActivate) {\r\n return;\r\n }\r\n if (toolToActivate.tool === 'importExport') {\r\n let exportOptions: ExportOptions =\r\n this.importExportState.exportOptions$.value;\r\n if (!exportOptions) {\r\n exportOptions = {\r\n layers: toolToActivate.options.layers,\r\n featureInMapExtent: toolToActivate.options.featureInMapExtent\r\n };\r\n } else {\r\n exportOptions.layers = toolToActivate.options.layers;\r\n exportOptions.featureInMapExtent =\r\n toolToActivate.options.featureInMapExtent;\r\n }\r\n this.importExportState.setsExportOptions(exportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n }\r\n\r\n if (this.toolbox.getTool(toolToActivate.tool)) {\r\n this.toolbox.activateTool(toolToActivate.tool);\r\n this.openSidenav$.next(true);\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { EntityStore } from '@igo2/common';\r\nimport { StorageService } from '@igo2/core';\r\nimport { Catalog, CatalogLibaryComponent, CatalogService } from '@igo2/geo';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { CatalogState } from '../catalog.state';\r\n\r\n/**\r\n * Tool to browse the list of available catalogs.\r\n */\r\n@ToolComponent({\r\n name: 'catalog',\r\n title: 'igo.integration.tools.catalog',\r\n icon: 'layers-plus'\r\n})\r\n@Component({\r\n selector: 'igo-catalog-library-tool',\r\n templateUrl: './catalog-library-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CatalogLibaryComponent]\r\n})\r\nexport class CatalogLibraryToolComponent implements OnInit {\r\n /**\r\n * Store that contains the catalogs\r\n * @internal\r\n */\r\n get store(): EntityStore<Catalog> {\r\n return this.catalogState.catalogStore;\r\n }\r\n\r\n /**\r\n * Determine if the form to add a catalog is allowed\r\n */\r\n @Input() addCatalogAllowed: boolean = false;\r\n\r\n /**\r\n * List of predefined catalogs\r\n */\r\n @Input() predefinedCatalogs: Catalog[] = [];\r\n\r\n constructor(\r\n private catalogService: CatalogService,\r\n private catalogState: CatalogState,\r\n private toolState: ToolState,\r\n private storageService: StorageService\r\n ) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnInit() {\r\n if (this.store.count === 0) {\r\n this.loadCatalogs();\r\n }\r\n }\r\n\r\n /**\r\n * When the selected catalog changes, toggle the the CatalogBrowser tool.\r\n * @internal\r\n * @param event Select event\r\n */\r\n onCatalogSelectChange(event: { selected: boolean; catalog: Catalog }) {\r\n if (event.selected === false) {\r\n return;\r\n }\r\n this.toolState.toolbox.activateTool('catalogBrowser');\r\n }\r\n\r\n /**\r\n * Get all the available catalogs from the CatalogService and\r\n * load them into the store.\r\n */\r\n private loadCatalogs() {\r\n this.catalogService\r\n .loadCatalogs()\r\n .pipe(take(1))\r\n .subscribe((catalogs: Catalog[]) => {\r\n this.store.clear();\r\n this.store.load(\r\n catalogs.concat(\r\n (this.storageService.get('addedCatalogs') || []) as Catalog[]\r\n )\r\n );\r\n });\r\n }\r\n}\r\n","<igo-catalog-library\r\n [predefinedCatalogs]=\"predefinedCatalogs\"\r\n [addCatalogAllowed]=\"addCatalogAllowed\"\r\n [store]=\"store\"\r\n (catalogSelectChange)=\"onCatalogSelectChange($event)\"\r\n>\r\n</igo-catalog-library>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CatalogLibraryToolComponent } from './catalog-library-tool.component';\r\n\r\n/**\r\n * @deprecated import the CatalogLibraryToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [CatalogLibraryToolComponent],\r\n exports: [CatalogLibraryToolComponent]\r\n})\r\nexport class IgoAppCatalogLibraryToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppCatalogBrowserToolModule } from './catalog-browser-tool/catalog-browser-tool.module';\r\nimport { IgoAppCatalogLibraryToolModule } from './catalog-library-tool/catalog-library-tool.module';\r\n\r\n/**\r\n * @deprecated import the components directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule]\r\n})\r\nexport class IgoAppCatalogModule {}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextEditBindingDirective,\r\n ContextEditComponent\r\n} from '@igo2/context';\r\n\r\nimport { ToolState } from '../../tool/tool.state';\r\n\r\n@ToolComponent({\r\n name: 'contextEditor',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star',\r\n parent: 'contextManager'\r\n})\r\n@Component({\r\n selector: 'igo-context-editor-tool',\r\n templateUrl: './context-editor-tool.component.html',\r\n standalone: true,\r\n imports: [ContextEditComponent, ContextEditBindingDirective]\r\n})\r\nexport class ContextEditorToolComponent {\r\n constructor(private toolState: ToolState) {}\r\n\r\n submitSuccessed() {\r\n this.toolState.toolbox.activatePreviousTool();\r\n }\r\n}\r\n","<igo-context-edit\n igoContextEditBinding\n (submitSuccessed)=\"submitSuccessed()\"\n></igo-context-edit>\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextListBindingDirective,\r\n ContextListComponent\r\n} from '@igo2/context';\r\nimport { IgoMap } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\n\r\n@ToolComponent({\r\n name: 'contextManager',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star'\r\n})\r\n@Component({\r\n selector: 'igo-context-manager-tool',\r\n templateUrl: './context-manager-tool.component.html',\r\n standalone: true,\r\n imports: [ContextListComponent, ContextListBindingDirective]\r\n})\r\nexport class ContextManagerToolComponent {\r\n @Input() toolToOpenOnContextChange: string = 'mapTools';\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private toolState: ToolState,\r\n private mapState: MapState\r\n ) {}\r\n\r\n editContext() {\r\n this.toolState.toolbox.activateTool('contextEditor');\r\n }\r\n\r\n managePermissions() {\r\n this.toolState.toolbox.activateTool('contextPermissionManager');\r\n }\r\n}\r\n","<igo-context-list\n igoContextListBinding\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n>\n</igo-context-list>\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextPermissionsBindingDirective,\r\n ContextPermissionsComponent\r\n} from '@igo2/context';\r\n\r\n@ToolComponent({\r\n name: 'contextPermissionManager',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star',\r\n parent: 'contextManager'\r\n})\r\n@Component({\r\n selector: 'igo-context-permission-manager-tool',\r\n templateUrl: './context-permission-manager-tool.component.html',\r\n standalone: true,\r\n imports: [ContextPermissionsComponent, ContextPermissionsBindingDirective]\r\n})\r\nexport class ContextPermissionManagerToolComponent {}\r\n","<igo-context-permissions igoContextPermissionsBinding></igo-context-permissions>\n","import { Injectable } from '@angular/core';\n\nimport { LayerListControlsOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service that holds the state of layer list tool values\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LayerListToolState {\n readonly keyword$: BehaviorSubject<string> = new BehaviorSubject('');\n readonly sortAlpha$: BehaviorSubject<boolean> = new BehaviorSubject(\n undefined\n );\n readonly onlyVisible$: BehaviorSubject<boolean> = new BehaviorSubject(\n undefined\n );\n readonly selectedTab$: BehaviorSubject<number> = new BehaviorSubject(\n undefined\n );\n\n setKeyword(keyword: string) {\n this.keyword$.next(keyword);\n }\n\n setSortAlpha(sort: boolean) {\n this.sortAlpha$.next(sort);\n }\n\n setOnlyVisible(onlyVisible: boolean) {\n this.onlyVisible$.next(onlyVisible);\n }\n\n setSelectedTab(tab: number) {\n this.selectedTab$.next(tab);\n }\n\n getLayerListControls(): LayerListControlsOptions {\n return {\n keyword: this.keyword$.value,\n onlyVisible: this.onlyVisible$.value,\n sortAlpha: this.sortAlpha$.value\n };\n }\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { ShareMapComponent } from '@igo2/context';\r\nimport { IgoMap, LayerListControlsOptions } from '@igo2/geo';\r\n\r\nimport { LayerListToolState } from '../../map/layer-list-tool.state';\r\nimport { MapState } from '../../map/map.state';\r\n\r\n@ToolComponent({\r\n name: 'shareMap',\r\n title: 'igo.integration.tools.shareMap',\r\n icon: 'share-variant'\r\n})\r\n@Component({\r\n selector: 'igo-context-share-tool',\r\n templateUrl: './context-share-tool.component.html',\r\n standalone: true,\r\n imports: [ShareMapComponent]\r\n})\r\nexport class ContextShareToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layerListControls(): LayerListControlsOptions {\r\n return this.layerListToolState.getLayerListControls();\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private layerListToolState: LayerListToolState\r\n ) {}\r\n}\r\n","<igo-share-map [map]=\"map\"></igo-share-map>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Tool, ToolService } from '@igo2/common';\r\nimport { ContextService, DetailedContext } from '@igo2/context';\r\nimport { LanguageService } from '@igo2/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ToolState } from '../tool/tool.state';\r\n\r\n/**\r\n * Service that holds the state of the context module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContextState {\r\n /**\r\n * Observable of the active context\r\n */\r\n context$: BehaviorSubject<DetailedContext> = new BehaviorSubject(undefined);\r\n\r\n constructor(\r\n private contextService: ContextService,\r\n private toolService: ToolService,\r\n private toolState: ToolState,\r\n private languageService: LanguageService\r\n ) {\r\n this.contextService.context$.subscribe((context: DetailedContext) => {\r\n this.onContextChange(context);\r\n });\r\n this.contextService.toolsChanged$.subscribe((context: DetailedContext) => {\r\n this.updateTools(context);\r\n });\r\n }\r\n\r\n /**\r\n * Set the active context\r\n * @param context Detailed context\r\n */\r\n private setContext(context: DetailedContext) {\r\n this.updateTools(context);\r\n this.context$.next(context);\r\n }\r\n\r\n /**\r\n * Update the tool state with the context's tools\r\n * @param context Detailed context\r\n */\r\n private updateTools(context: DetailedContext) {\r\n const toolbox = this.toolState.toolbox;\r\n\r\n const tools = [];\r\n const contextTools = context.tools || [];\r\n contextTools.forEach((contextTool: Tool) => {\r\n const baseTool = this.toolService.getTool(contextTool.name);\r\n if (baseTool === undefined) {\r\n return;\r\n }\r\n\r\n const options = Object.assign(\r\n {},\r\n baseTool.options || {},\r\n contextTool.options || {}\r\n );\r\n const tool = Object.assign({}, baseTool, contextTool, { options });\r\n tools.push(tool);\r\n });\r\n\r\n tools.forEach((tool) => {\r\n if (tool.parent) {\r\n const parentIndex = tools.findIndex((el) => el.name === tool.parent);\r\n if (parentIndex !== -1) {\r\n tools[parentIndex].children = [];\r\n tools[parentIndex].children.push(tool.name);\r\n }\r\n }\r\n });\r\n\r\n toolbox.setTools(tools);\r\n toolbox.setToolbar(context.toolbar || []);\r\n\r\n // TODO: This is a patch so the context service can work without\r\n // injecting the ToolState or without being completely refactored\r\n this.contextService.setTools([].concat(tools));\r\n this.contextService.setToolbar(context.toolbar || []);\r\n }\r\n\r\n /**\r\n * Set a new context and update the tool state\r\n * @param context Detailed context\r\n */\r\n private onContextChange(context: DetailedContext) {\r\n if (context === undefined) {\r\n return;\r\n }\r\n this.setContext(context);\r\n }\r\n}\r\n","import { ContextEditorToolComponent } from './context-editor-tool/context-editor-tool.component';\r\nimport { ContextManagerToolComponent } from './context-manager-tool/context-manager-tool.component';\r\nimport { ContextPermissionManagerToolComponent } from './context-permission-manager-tool/context-permission-manager-tool.component';\r\nimport { ContextShareToolComponent } from './context-share-tool/context-share-tool.component';\r\n\r\nexport * from './context-manager-tool/context-manager-tool.component';\r\nexport * from './context-editor-tool/context-editor-tool.component';\r\nexport * from './context-permission-manager-tool/context-permission-manager-tool.component';\r\nexport * from './context-share-tool/context-share-tool.component';\r\nexport * from './context.state';\r\n\r\nexport const INTEGRATION_CONTEXT_DIRECTIVES = [\r\n ContextEditorToolComponent,\r\n ContextManagerToolComponent,\r\n ContextPermissionManagerToolComponent,\r\n ContextShareToolComponent\r\n] as const;\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { INTEGRATION_CONTEXT_DIRECTIVES } from '.';\r\n\r\n/**\r\n * @deprecated import the components/directive directly or INTEGRATION_CONTEXT_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [...INTEGRATION_CONTEXT_DIRECTIVES],\r\n exports: [...INTEGRATION_CONTEXT_DIRECTIVES]\r\n})\r\nexport class IgoAppContextModule {}\r\n","import { Injectable } from '@angular/core';\n\nimport {\n AnyLayerOptions,\n RoutesFeatureStore,\n StepFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { Subject } from 'rxjs';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DirectionState {\n public zoomToActiveRoute$: Subject<void> = new Subject();\n\n /**\n * Store that holds the stop\n */\n public stopsStore: StopsStore = new StopsStore([]);\n\n /**\n * Store that holds the driving stops as feature\n */\n public stopsFeatureStore: StopsFeatureStore;\n\n /**\n * Store that holds the driving route as feature\n */\n public routesFeatureStore: RoutesFeatureStore;\n\n public stepFeatureStore: StepFeatureStore;\n\n public debounceTime: number = 200;\n\n constructor(private mapState: MapState) {\n this.stopsFeatureStore = new StopsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.routesFeatureStore = new RoutesFeatureStore([], {\n map: this.mapState.map\n });\n\n this.stepFeatureStore = new StepFeatureStore([], {\n map: this.mapState.map\n });\n\n this.mapState.map.ol.once('rendercomplete', () => {\n this.stopsFeatureStore.empty$.subscribe((empty) => {\n if (this.stopsFeatureStore.layer?.options) {\n (\n this.stopsFeatureStore.layer.options as AnyLayerOptions\n ).showInLayerList = !empty;\n }\n });\n this.routesFeatureStore.empty$.subscribe((empty) => {\n if (this.routesFeatureStore.layer?.options) {\n (\n this.routesFeatureStore.layer.options as AnyLayerOptions\n ).showInLayerList = !empty;\n }\n });\n });\n\n this.mapState.map.layers$.subscribe(() => {\n if (!this.mapState.map.getLayerById('igo-direction-stops-layer')) {\n this.stopsStore.deleteMany(this.stopsStore.all());\n this.stopsFeatureStore.deleteMany(this.stopsFeatureStore.all()); // not necessary\n }\n if (!this.mapState.map.getLayerById('igo-direction-route-layer')) {\n this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());\n }\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n LanguageService,\r\n MessageService,\r\n StorageScope,\r\n StorageService\r\n} from '@igo2/core';\r\nimport {\r\n IgoDirectionsModule,\r\n IgoMap,\r\n RoutesFeatureStore,\r\n StepFeatureStore,\r\n StopsFeatureStore,\r\n StopsStore\r\n} from '@igo2/geo';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { ContextState } from '../../context/context.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { DirectionState } from '../directions.state';\r\n\r\n@ToolComponent({\r\n name: 'directions',\r\n title: 'igo.integration.tools.directions',\r\n icon: 'directions'\r\n})\r\n@Component({\r\n selector: 'igo-directions-tool',\r\n templateUrl: './directions-tool.component.html',\r\n standalone: true,\r\n imports: [IgoDirectionsModule]\r\n})\r\nexport class DirectionsToolComponent implements OnInit {\r\n public currentContextUri: string;\r\n /**\r\n * stops\r\n * @internal\r\n */\r\n get stopsStore(): StopsStore {\r\n return this.directionState.stopsStore;\r\n }\r\n\r\n get debounceTime(): number {\r\n return this.directionState.debounceTime;\r\n }\r\n\r\n /**\r\n * stops\r\n * @internal\r\n */\r\n get stopsFeatureStore(): StopsFeatureStore {\r\n return this.directionState.stopsFeatureStore;\r\n }\r\n\r\n /**\r\n * routes\r\n * @internal\r\n */\r\n get routesFeatureStore(): RoutesFeatureStore {\r\n return this.directionState.routesFeatureStore;\r\n }\r\n\r\n /**\r\n * step store\r\n * @internal\r\n */\r\n get stepFeatureStore(): StepFeatureStore {\r\n return this.directionState.stepFeatureStore;\r\n }\r\n\r\n /**\r\n * step store\r\n * @internal\r\n */\r\n get zoomToActiveRoute$(): Subject<void> {\r\n return this.directionState.zoomToActiveRoute$;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private directionState: DirectionState,\r\n private mapState: MapState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private storageService: StorageService,\r\n public contextState: ContextState,\r\n private authService: AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const warningShown = this.storageService.get(\r\n 'direction.warning.shown'\r\n ) as boolean;\r\n if (!warningShown) {\r\n this.messageService.info(\r\n 'igo.integration.directions.warning.message',\r\n 'igo.integration.directions.warning.title',\r\n { timeOut: 20000 }\r\n );\r\n this.storageService.set(\r\n 'direction.warning.shown',\r\n true,\r\n StorageScope.SESSION\r\n );\r\n }\r\n this.contextState.context$.subscribe((c) => {\r\n if (!this.authService.authenticated) {\r\n this.currentContextUri = c.uri;\r\n }\r\n });\r\n }\r\n}\r\n","<igo-directions\r\n [contextUri]=\"currentContextUri\"\r\n [debounce]=\"debounceTime\"\r\n [stopsStore]=\"stopsStore\"\r\n [stopsFeatureStore]=\"stopsFeatureStore\"\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\r\n>\r\n</igo-directions>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { DirectionsToolComponent } from './directions-tool/directions-tool.component';\r\n\r\n/**\r\n * @deprecated import the DirectionsToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [DirectionsToolComponent],\r\n exports: [DirectionsToolComponent]\r\n})\r\nexport class IgoAppDirectionsModule {\r\n static forRoot(): ModuleWithProviders<IgoAppDirectionsModule> {\r\n return {\r\n ngModule: IgoAppDirectionsModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\n\nimport {\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DrawState {\n public stores: FeatureStore<FeatureWithDraw>[] = [];\n public layersID: string[] = [];\n public drawControls: [string, DrawControl][] = [];\n public activeDrawingLayer: VectorLayer;\n\n constructor(private mapState: MapState) {\n this.mapState.map.layers$.subscribe(() => {\n this.layersID.forEach((layerId) => {\n if (!this.mapState.map.getLayerById(layerId)) {\n let deletedStore = this.stores.find(\n (store) => store.layer.id === layerId\n );\n deletedStore.deleteMany(deletedStore.all());\n this.stores.splice(this.stores.indexOf(deletedStore, 0), 1);\n this.layersID.splice(this.layersID.indexOf(layerId, 0), 1);\n let drawControlIndex = this.drawControls.findIndex(\n (dc) => dc[0] === layerId\n );\n this.drawControls.splice(drawControlIndex, 1);\n }\n });\n });\n for (let store of this.stores) {\n store = new FeatureStore<FeatureWithDraw>([], { map: this.mapState.map });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n DrawComponent,\r\n DrawControl,\r\n FeatureStore,\r\n FeatureWithDraw,\r\n IgoMap,\r\n VectorLayer\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { DrawState } from '../draw.state';\r\n\r\n/**\r\n * Tool to measure lengths and areas\r\n */\r\n@ToolComponent({\r\n name: 'draw',\r\n title: 'igo.integration.tools.draw',\r\n icon: 'draw'\r\n})\r\n@Component({\r\n selector: 'igo-drawing-tool',\r\n templateUrl: './drawing-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [DrawComponent]\r\n})\r\nexport class DrawingToolComponent {\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get stores(): FeatureStore<FeatureWithDraw>[] {\r\n return this.drawState.stores;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layersID(): string[] {\r\n return this.drawState.layersID;\r\n }\r\n\r\n get drawControls(): [string, DrawControl][] {\r\n return this.drawState.drawControls;\r\n }\r\n set drawControls(dc: [string, DrawControl][]) {\r\n this.drawState.drawControls = dc;\r\n }\r\n\r\n get activeDrawingLayer(): VectorLayer {\r\n return this.drawState.activeDrawingLayer;\r\n }\r\n set activeDrawingLayer(value: VectorLayer) {\r\n this.drawState.activeDrawingLayer = value;\r\n }\r\n\r\n public addLayersID(layerID: string) {\r\n this.layersID.push(layerID);\r\n }\r\n\r\n public addDrawControls(dc: [string, DrawControl][]) {\r\n this.drawControls = dc;\r\n }\r\n\r\n constructor(\r\n private drawState: DrawState,\r\n private mapState: MapState\r\n ) {}\r\n}\r\n","<igo-draw\n [stores]=\"stores\"\n [map]=\"map\"\n (layersIDEvent)=\"addLayersID($event)\"\n [activeDrawingLayer]=\"activeDrawingLayer\"\n [drawControls]=\"drawControls\"\n (drawControlsEvent)=\"addDrawControls($event)\"\n (activeLayerChange)=\"activeDrawingLayer = $event\"\n>\n</igo-draw>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { DrawingToolComponent } from './drawing-tool.component';\r\n\r\n/**\r\n * @deprecated import the DrawingToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [DrawingToolComponent],\r\n exports: [DrawingToolComponent]\r\n})\r\nexport class IgoAppDrawingToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppDrawingToolModule } from './drawing-tool/drawing-tool.module';\r\n\r\n/**\r\n * @deprecated import the DrawingToolComponent directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppDrawingToolModule]\r\n})\r\nexport class IgoAppDrawModule {}\r\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, Layer, OgcFilterableItemComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { toolSlideInOut } from './active-ogc-filter-tool.animation';\r\n\r\n@ToolComponent({\r\n name: 'activeOgcFilter',\r\n title: 'igo.integration.tools.ogcFilter',\r\n icon: 'filter',\r\n parent: 'mapTools'\r\n})\r\n@Component({\r\n selector: 'igo-active-ogc-filter-tool',\r\n templateUrl: './active-ogc-filter-tool.component.html',\r\n animations: [toolSlideInOut()],\r\n standalone: true,\r\n imports: [OgcFilterableItemComponent]\r\n})\r\nexport class ActiveOgcFilterToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layer(): Layer {\r\n for (const lay of this.map.layers) {\r\n if (lay.options.active === true) {\r\n return lay;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public animate = 'enter';\r\n\r\n constructor(public mapState: MapState) {}\r\n}\r\n","<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n>\n</igo-ogc-filterable-item>\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, Layer, TimeFilterItemComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { toolSlideInOut } from './active-time-filter-tool.animation';\r\n\r\n@ToolComponent({\r\n name: 'activeTimeFilter',\r\n title: 'igo.integration.tools.timeFilter',\r\n icon: 'history',\r\n parent: 'mapTools'\r\n})\r\n@Component({\r\n selector: 'igo-active-time-filter-tool',\r\n templateUrl: './active-time-filter-tool.component.html',\r\n animations: [toolSlideInOut()],\r\n standalone: true,\r\n imports: [TimeFilterItemComponent]\r\n})\r\nexport class ActiveTimeFilterToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layer(): Layer {\r\n for (const lay of this.map.layers) {\r\n if (lay.options.active === true) {\r\n return lay;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public animate = 'enter';\r\n\r\n constructor(public mapState: MapState) {}\r\n}\r\n","<igo-time-filter-item\r\n [layer]=\"layer\"\r\n [header]=\"false\"\r\n [@toolSlideInOut]=\"animate\"\r\n>\r\n</igo-time-filter-item>\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n OgcFilterableListBindingDirective,\r\n OgcFilterableListComponent\r\n} from '@igo2/geo';\r\n\r\n@ToolComponent({\r\n name: 'ogcFilter',\r\n title: 'igo.integration.tools.ogcFilter',\r\n icon: 'filter'\r\n})\r\n@Component({\r\n selector: 'igo-ogc-filter-tool',\r\n templateUrl: './ogc-filter-tool.component.html',\r\n standalone: true,\r\n imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective]\r\n})\r\nexport class OgcFilterToolComponent {\r\n constructor() {}\r\n}\r\n","<igo-ogc-filterable-list igoOgcFilterableListBinding></igo-ogc-filterable-list>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { StorageService } from '@igo2/core';\r\n\r\n/**\r\n * Service that holds the state of storage service\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageState {\r\n get storageService(): StorageService {\r\n return this.igoStorageService;\r\n }\r\n\r\n constructor(private igoStorageService: StorageService) {}\r\n}\r\n","import {\r\n Action,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreFilterSelectionStrategy,\r\n Widget\r\n} from '@igo2/common';\r\nimport { LanguageService, MediaService, StorageService } from '@igo2/core';\r\nimport {\r\n EditionWorkspace,\r\n ExportOptions,\r\n FeatureMotion,\r\n FeatureStoreSelectionStrategy,\r\n FeatureWorkspace,\r\n OgcFilterableDataSource,\r\n WfsWorkspace,\r\n mapExtentStrategyActiveToolTip,\r\n noElementSelected\r\n} from '@igo2/geo';\r\nimport { dateTransform } from '@igo2/utils';\r\n\r\nimport * as jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport { BehaviorSubject, map } from 'rxjs';\r\n\r\nimport { ToolState } from '../../tool';\r\n\r\nexport function handleZoomAuto(\r\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\r\n storageService\r\n) {\r\n const zoomStrategy = workspace.entityStore.getStrategyOfType(\r\n FeatureStoreSelectionStrategy\r\n ) as FeatureStoreSelectionStrategy;\r\n zoomStrategy.setMotion(\r\n (storageService.get('zoomAuto') as boolean)\r\n ? FeatureMotion.Default\r\n : FeatureMotion.None\r\n );\r\n}\r\n\r\nexport function getWorkspaceActions(\r\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>,\r\n ogcFilterWidget: Widget,\r\n zoomAuto$: BehaviorSubject<boolean>,\r\n maximize$: BehaviorSubject<boolean>,\r\n storageService: StorageService,\r\n languageService: LanguageService,\r\n mediaService: MediaService,\r\n toolState: ToolState\r\n): Action[] {\r\n const actions = [\r\n {\r\n id: 'zoomAuto',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.zoomAuto.title',\r\n tooltip: 'igo.integration.workspace.zoomAuto.tooltip',\r\n checkCondition: zoomAuto$,\r\n handler: () => {\r\n handleZoomAuto(workspace, storageService);\r\n storageService.set(\r\n 'zoomAuto',\r\n !storageService.get('zoomAuto') as boolean\r\n );\r\n }\r\n },\r\n {\r\n id: 'filterInMapExtent',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.inMapExtent.title',\r\n tooltip: mapExtentStrategyActiveToolTip(workspace),\r\n checkCondition: rowsInMapExtentCheckCondition$,\r\n handler: () =>\r\n rowsInMapExtentCheckCondition$.next(\r\n !rowsInMapExtentCheckCondition$.value\r\n )\r\n },\r\n {\r\n id: 'selectedOnly',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.selected.title',\r\n tooltip: 'igo.integration.workspace.selected.tooltip',\r\n checkCondition: selectOnlyCheckCondition$,\r\n handler: () =>\r\n selectOnlyCheckCondition$.next(!selectOnlyCheckCondition$.value)\r\n },\r\n {\r\n id: 'clearselection',\r\n icon: 'select-off',\r\n title: 'igo.integration.workspace.clearSelection.title',\r\n tooltip: 'igo.integration.workspace.clearSelection.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n ws.entityStore.state.updateMany(ws.entityStore.view.all(), {\r\n selected: false\r\n });\r\n },\r\n args: [workspace],\r\n availability: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) =>\r\n noElementSelected(ws)\r\n },\r\n {\r\n id: 'featureDownload',\r\n icon: 'file-export',\r\n title: 'igo.integration.workspace.download.title',\r\n tooltip: 'igo.integration.workspace.download.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n const filterStrategy = ws.entityStore.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n const filterSelectionStrategy = ws.entityStore.getStrategyOfType(\r\n EntityStoreFilterSelectionStrategy\r\n );\r\n const layersWithSelection = filterSelectionStrategy.active\r\n ? [ws.layer.id]\r\n : [];\r\n toolState.toolToActivateFromOptions({\r\n tool: 'importExport',\r\n options: {\r\n layers: [ws.layer.id],\r\n featureInMapExtent: filterStrategy.active,\r\n layersWithSelection\r\n } as ExportOptions\r\n });\r\n },\r\n args: [workspace]\r\n },\r\n {\r\n id: 'ogcFilter',\r\n icon: 'filter',\r\n title: 'igo.integration.workspace.ogcFilter.title',\r\n tooltip: 'igo.integration.workspace.ogcFilter.tooltip',\r\n handler: (\r\n widget: Widget,\r\n ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace\r\n ) => {\r\n ws.activateWidget(widget, {\r\n map: ws.map,\r\n layer: ws.layer\r\n });\r\n },\r\n args: [ogcFilterWidget, workspace]\r\n },\r\n {\r\n id: 'maximize',\r\n title: languageService.translate.instant(\r\n 'igo.integration.workspace.maximize'\r\n ),\r\n tooltip: languageService.translate.instant(\r\n 'igo.integration.workspace.maximizeTooltip'\r\n ),\r\n icon: 'resize',\r\n display: () => {\r\n return maximize$.pipe(map((v) => !v && !mediaService.isMobile()));\r\n },\r\n handler: () => {\r\n if (!mediaService.isMobile()) {\r\n maximize$.next(true);\r\n }\r\n }\r\n },\r\n {\r\n id: 'standardExtent',\r\n title: languageService.translate.instant(\r\n 'igo.integration.workspace.standardExtent'\r\n ),\r\n tooltip: languageService.translate.instant(\r\n 'igo.integration.workspace.standardExtentTooltip'\r\n ),\r\n icon: 'resize',\r\n display: () => {\r\n return maximize$.pipe(map((v) => v && !mediaService.isMobile()));\r\n },\r\n handler: () => {\r\n maximize$.next(false);\r\n }\r\n },\r\n {\r\n id: 'print',\r\n icon: 'printer',\r\n title: 'igo.integration.workspace.print.title',\r\n tooltip: 'igo.integration.workspace.print.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n const title = `${ws.layer.title} (${dateTransform(\r\n new Date(),\r\n 'YYYY-MM-DD-HH_mm'\r\n )})`;\r\n const doc: any = new jsPDF.default('landscape');\r\n const totalPagesExp = '{total_pages_count_string}';\r\n doc.text(title, 14, 20);\r\n doc.autoTable({\r\n startY: 25,\r\n tableWidth: 'wrap',\r\n html: '#currentWorkspaceTable',\r\n horizontalPageBreak: true,\r\n styles: { cellPadding: 0.5, minCellWidth: 20, fontSize: 6 },\r\n didDrawPage: (data) => {\r\n let str = 'Page ' + doc.internal.getNumberOfPages();\r\n if (typeof doc.putTotalPages === 'function') {\r\n str = str + ' / ' + totalPagesExp;\r\n }\r\n doc.setFontSize(6);\r\n const pageSize = doc.internal.pageSize;\r\n const pageHeight = pageSize.height\r\n ? pageSize.height\r\n : pageSize.getHeight();\r\n doc.text(str, data.settings.margin.left, pageHeight - 10);\r\n }\r\n });\r\n if (typeof doc.putTotalPages === 'function') {\r\n doc.putTotalPages(totalPagesExp);\r\n }\r\n doc.save(`${title}.pdf`);\r\n },\r\n args: [workspace]\r\n }\r\n ];\r\n let returnActions = (workspace.layer.dataSource as OgcFilterableDataSource)\r\n .options.ogcFilters?.enabled\r\n ? actions\r\n : actions.filter((action) => action.id !== 'ogcFilter');\r\n returnActions =\r\n workspace.layer.options.workspace.printable !== false\r\n ? actions\r\n : actions.filter((action) => action.id !== 'print');\r\n return returnActions;\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action, Widget } from '@igo2/common';\r\nimport {\r\n LanguageService,\r\n MediaService,\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core';\r\nimport { EditionWorkspace, OgcFilterWidget } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EditionActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n @Inject(OgcFilterWidget) private ogcFilterWidget: Widget,\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private mediaService: MediaService,\r\n private toolState: ToolState\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n this.ogcFilterWidget,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action } from '@igo2/common';\r\nimport {\r\n LanguageService,\r\n MediaService,\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core';\r\nimport { FeatureWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeatureActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private toolState: ToolState,\r\n private mediaService: MediaService\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: FeatureWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: FeatureWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n undefined,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action, Widget } from '@igo2/common';\r\nimport {\r\n LanguageService,\r\n MediaService,\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core';\r\nimport { OgcFilterWidget, WfsWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WfsActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n false\r\n );\r\n // rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(true);\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n @Inject(OgcFilterWidget) private ogcFilterWidget: Widget,\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private mediaService: MediaService,\r\n private toolState: ToolState\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: WfsWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: WfsWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n this.ogcFilterWidget,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport {\r\n EntityRecord,\r\n EntityState,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreFilterSelectionStrategy,\r\n Widget,\r\n Workspace,\r\n WorkspaceStore\r\n} from '@igo2/common';\r\nimport { StorageService } from '@igo2/core';\r\nimport { EditionWorkspace, FeatureWorkspace, WfsWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Observable, Subscription, of } from 'rxjs';\r\n\r\nimport { EditionActionsService } from './shared/edition-actions.service';\r\nimport { FeatureActionsService } from './shared/feature-actions.service';\r\nimport { WfsActionsService } from './shared/wfs-actions.service';\r\n\r\n/**\r\n * Service that holds the state of the workspace module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WorkspaceState implements OnDestroy {\r\n public workspacePanelExpanded: boolean = false;\r\n\r\n readonly workspaceEnabled$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(false);\r\n readonly rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(true);\r\n readonly selectOnlyCheckCondition$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(false);\r\n\r\n readonly workspaceMaximize$: BehaviorSubject<boolean>;\r\n private actionMaximize$$: Subscription[] = [];\r\n\r\n private rowsInMapExtentCheckCondition$$: Subscription;\r\n private selectOnlyCheckCondition$$: Subscription;\r\n\r\n /** Subscription to the active workspace */\r\n private activeWorkspace$$: Subscription;\r\n\r\n /** Subscription to the active workspace widget */\r\n private activeWorkspaceWidget$$: Subscription;\r\n\r\n /** Active widget observable. Only one may be active for all available workspaces */\r\n readonly activeWorkspaceWidget$: BehaviorSubject<Widget> =\r\n new BehaviorSubject<Widget>(undefined);\r\n\r\n /**\r\n * Observable of the active workspace\r\n */\r\n public workspace$ = new BehaviorSubject<Workspace>(undefined);\r\n\r\n /**\r\n * Store that holds all the available workspaces\r\n */\r\n get store(): WorkspaceStore {\r\n return this._store;\r\n }\r\n private _store: WorkspaceStore;\r\n\r\n get workspaceSelection() {\r\n if (this.workspace$.value) {\r\n return this.workspace$.value?.entityStore.stateView.manyBy(\r\n (r) => r.state.selected === true\r\n );\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n get workspaceSelection$(): Observable<EntityRecord<object, EntityState>[]> {\r\n if (this.workspace$.value) {\r\n return this.workspace$.value?.entityStore?.stateView.manyBy$(\r\n (r) => r.state.selected === true\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n constructor(\r\n private featureActionsService: FeatureActionsService,\r\n private wfsActionsService: WfsActionsService,\r\n private editionActionsService: EditionActionsService,\r\n private storageService: StorageService\r\n ) {\r\n this.workspaceMaximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n this.initWorkspaces();\r\n }\r\n\r\n /**\r\n * Initialize the workspace store. Each time a workspace is activated,\r\n * subscribe to it's active widget. Tracking the active widget is useful\r\n * to make sure only one widget is active at a time.\r\n */\r\n private initWorkspaces() {\r\n this._store = new WorkspaceStore([]);\r\n this._store.stateView\r\n .firstBy$(\r\n (record: EntityRecord<Workspace>) => record.state.active === true\r\n )\r\n .subscribe((record: EntityRecord<Workspace>) => {\r\n const workspace = record ? record.entity : undefined;\r\n this.workspace$.next(workspace);\r\n });\r\n\r\n this._store.stateView\r\n .all$()\r\n .subscribe((workspaces: EntityRecord<Workspace>[]) => {\r\n workspaces.map((wks: EntityRecord<Workspace>) => {\r\n if (wks.entity.actionStore.empty) {\r\n if (wks.entity instanceof WfsWorkspace) {\r\n this.wfsActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n } else if (wks.entity instanceof FeatureWorkspace) {\r\n this.featureActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n } else if (wks.entity instanceof EditionWorkspace) {\r\n this.editionActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.actionMaximize$$.push(\r\n this.featureActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.actionMaximize$$.push(\r\n this.wfsActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.actionMaximize$$.push(\r\n this.editionActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.activeWorkspace$$ = this.workspace$.subscribe(\r\n (workspace: Workspace) => {\r\n if (this.activeWorkspaceWidget$$ !== undefined) {\r\n this.activeWorkspaceWidget$$.unsubscribe();\r\n this.activeWorkspaceWidget$$ = undefined;\r\n }\r\n\r\n if (workspace !== undefined) {\r\n this.activeWorkspaceWidget$$ = workspace.widget$.subscribe(\r\n (widget: Widget) => this.activeWorkspaceWidget$.next(widget)\r\n );\r\n }\r\n }\r\n );\r\n\r\n this.rowsInMapExtentCheckCondition$$ =\r\n this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {\r\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\r\n if (!wks.entity.actionStore.empty) {\r\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (filterStrategy) {\r\n if (rowsInMapExtent) {\r\n filterStrategy.activate();\r\n } else {\r\n filterStrategy.deactivate();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe(\r\n (selectOnly) => {\r\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\r\n if (!wks.entity.actionStore.empty) {\r\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\r\n EntityStoreFilterSelectionStrategy\r\n );\r\n if (filterStrategy) {\r\n if (selectOnly) {\r\n filterStrategy.activate();\r\n } else {\r\n filterStrategy.deactivate();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n private setWorkspaceIsMaximized(maximized: boolean) {\r\n this.storageService.set('workspaceMaximize', maximized);\r\n this.workspaceMaximize$.next(maximized);\r\n }\r\n\r\n public setActiveWorkspaceById(id: string) {\r\n const wksFromId = this.store.all().find((workspace) => workspace.id === id);\r\n if (wksFromId) {\r\n this.store.activateWorkspace(wksFromId);\r\n }\r\n }\r\n\r\n public setActiveWorkspaceByTitle(title: string) {\r\n const wksFromTitle = this.store\r\n .all()\r\n .find((workspace) => workspace.title === title);\r\n if (wksFromTitle) {\r\n this.store.activateWorkspace(wksFromTitle);\r\n }\r\n }\r\n\r\n /**\r\n * Teardown all the workspaces\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.teardownWorkspaces();\r\n this.actionMaximize$$.map((a) => a.unsubscribe());\r\n if (this.rowsInMapExtentCheckCondition$$) {\r\n this.selectOnlyCheckCondition$$.unsubscribe();\r\n }\r\n if (this.selectOnlyCheckCondition$$) {\r\n this.selectOnlyCheckCondition$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Teardown the workspace store and any subscribers\r\n */\r\n private teardownWorkspaces() {\r\n this.store.clear();\r\n if (this.activeWorkspaceWidget$$ !== undefined) {\r\n this.activeWorkspaceWidget$$.unsubscribe();\r\n }\r\n if (this.activeWorkspace$$ !== undefined) {\r\n this.activeWorkspace$$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\n\r\nimport { EntityStore, PanelComponent, ToolComponent } from '@igo2/common';\r\nimport { LanguageService, MessageService } from '@igo2/core';\r\nimport {\r\n ClusterDataSource,\r\n DataSource,\r\n DataSourceService,\r\n ExportOptions,\r\n Feature,\r\n FeatureDetailsComponent,\r\n FeatureMotion,\r\n IgoMap,\r\n Layer,\r\n LayerService,\r\n MeasureLengthUnit,\r\n QueryableDataSourceOptions,\r\n SpatialFilterItemComponent,\r\n SpatialFilterItemType,\r\n SpatialFilterQueryType,\r\n SpatialFilterService,\r\n SpatialFilterThematic,\r\n SpatialFilterType,\r\n SpatialFilterTypeComponent,\r\n VectorLayer,\r\n createOverlayMarkerStyle,\r\n featureToOl,\r\n moveToOlFeatures\r\n} from '@igo2/geo';\r\n\r\nimport { EventsKey } from 'ol/events';\r\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\r\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\r\nimport olSourceCluster from 'ol/source/Cluster';\r\nimport olSourceVector from 'ol/source/Vector';\r\nimport * as olstyle from 'ol/style';\r\n\r\nimport { Observable, Subject, forkJoin } from 'rxjs';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { take, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceState } from '../../workspace/workspace.state';\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from './../../import-export/import-export.state';\r\n\r\n/**\r\n * Tool to apply spatial filter\r\n */\r\n@ToolComponent({\r\n name: 'spatialFilter',\r\n title: 'igo.integration.tools.spatialFilter',\r\n icon: 'selection-marker'\r\n})\r\n/**\r\n * Spatial Filter Type\r\n */\r\n@Component({\r\n selector: 'igo-spatial-filter-tool',\r\n templateUrl: './spatial-filter-tool.component.html',\r\n styleUrls: ['./spatial-filter-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n SpatialFilterTypeComponent,\r\n SpatialFilterItemComponent,\r\n PanelComponent,\r\n FeatureDetailsComponent,\r\n NgIf,\r\n AsyncPipe\r\n ]\r\n})\r\nexport class SpatialFilterToolComponent implements OnInit, OnDestroy {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n @Input() type: SpatialFilterType;\r\n @Input() itemType: SpatialFilterItemType = SpatialFilterItemType.Address;\r\n @Input() freehandDrawIsActive: boolean;\r\n\r\n public layers: Layer[] = [];\r\n public activeLayers: Layer[] = [];\r\n\r\n public queryType: SpatialFilterQueryType;\r\n public thematics: SpatialFilterThematic[];\r\n public zone: Feature;\r\n public zoneWithBuffer: Feature;\r\n public buffer = 0;\r\n\r\n public iterator = 1;\r\n\r\n public selectedFeature$: BehaviorSubject<Feature> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n private format = new olFormatGeoJSON();\r\n\r\n public store: EntityStore<Feature> = new EntityStore<Feature>([]); // Store to print results at the end\r\n\r\n public spatialListStore: EntityStore<Feature> = new EntityStore<Feature>([]);\r\n\r\n public loading = false;\r\n\r\n public thematicLength = 0;\r\n\r\n public measureUnit: MeasureLengthUnit = MeasureLengthUnit.Meters;\r\n private unsubscribe$ = new Subject<void>();\r\n\r\n private moveendKey: EventsKey;\r\n\r\n public defaultStyle: olstyle.Style | ((feature, resolution) => olstyle.Style);\r\n\r\n constructor(\r\n private matIconRegistry: MatIconRegistry,\r\n private spatialFilterService: SpatialFilterService,\r\n private dataSourceService: DataSourceService,\r\n private layerService: LayerService,\r\n private mapState: MapState,\r\n private messageService: MessageService,\r\n private languageService: LanguageService,\r\n private importExportState: ImportExportState,\r\n private toolState: ToolState,\r\n private workspaceState: WorkspaceState,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n for (const layer of this.map.layers) {\r\n if (\r\n layer.title &&\r\n layer.title.includes(\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )\r\n )\r\n ) {\r\n this.layers.push(layer);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n getOutputType(event: SpatialFilterType) {\r\n this.type = event;\r\n this.queryType = undefined;\r\n }\r\n\r\n getOutputQueryType(event: SpatialFilterQueryType) {\r\n this.queryType = event;\r\n if (this.queryType) {\r\n this.loadFilterList();\r\n }\r\n }\r\n\r\n activateExportTool() {\r\n const ids = [];\r\n const re = new RegExp('^Zone \\\\d+');\r\n for (const layer of this.layers) {\r\n if (!layer.title.match(re)) {\r\n ids.push(layer.id);\r\n }\r\n }\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.importExportState.setsExportOptions({ layers: ids } as ExportOptions);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n\r\n activateWorkspace(record?) {\r\n let layerToOpenWks;\r\n this.workspaceState.store.entities$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => {\r\n if (\r\n !record &&\r\n this.activeLayers.length &&\r\n this.workspaceState.store.all().length > 1\r\n ) {\r\n if (this.itemType === SpatialFilterItemType.Thematics) {\r\n for (const thematic of this.thematics) {\r\n if (!thematic.zeroResults) {\r\n layerToOpenWks = this.activeLayers.find((layer) =>\r\n layer.title.includes(\r\n thematic.name + ' ' + this.iterator.toString()\r\n )\r\n );\r\n break;\r\n }\r\n }\r\n } else {\r\n const title = 'Adresses ' + this.iterator.toString();\r\n this.activeLayers.forEach((layer) => {\r\n if (layer.title.includes(title)) {\r\n layerToOpenWks = layer;\r\n }\r\n });\r\n }\r\n\r\n if (layerToOpenWks) {\r\n this.workspaceState.workspacePanelExpanded = true;\r\n this.workspaceState.setActiveWorkspaceById(layerToOpenWks.id);\r\n }\r\n } else if (\r\n record &&\r\n this.activeLayers.length &&\r\n this.workspaceState.store.all().length > 1\r\n ) {\r\n this.selectWorkspaceEntity(record);\r\n this.moveendKey = this.map.ol.on('moveend', () => {\r\n this.selectWorkspaceEntity(record);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private selectWorkspaceEntity(record) {\r\n this.workspaceState.store.all().forEach((workspace) => {\r\n workspace.entityStore.state.updateAll({ selected: false });\r\n if (workspace.title.includes(record.added[0].meta.title)) {\r\n this.workspaceState.setActiveWorkspaceById(workspace.id);\r\n workspace.entityStore.state.updateMany(record.added, {\r\n selected: true\r\n });\r\n }\r\n });\r\n }\r\n\r\n private loadFilterList() {\r\n this.spatialFilterService\r\n .loadFilterList(this.queryType)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((features: Feature[]) => {\r\n features.sort((a, b) => {\r\n if (a.properties.nom < b.properties.nom) {\r\n return -1;\r\n }\r\n if (a.properties.nom > b.properties.nom) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n this.spatialListStore.clear();\r\n this.spatialListStore.load(features);\r\n });\r\n }\r\n\r\n getOutputToggleSearch() {\r\n this.loadThematics();\r\n }\r\n\r\n getOutputClearSearch() {\r\n this.zone = undefined;\r\n this.queryType = undefined;\r\n }\r\n\r\n clearMap() {\r\n this.map.removeLayers(this.layers);\r\n this.layers = [];\r\n this.activeLayers = [];\r\n this.thematicLength = 0;\r\n this.iterator = 1;\r\n if (this.type === SpatialFilterType.Predefined) {\r\n this.zone = undefined;\r\n this.queryType = undefined;\r\n }\r\n }\r\n\r\n private loadThematics() {\r\n this.loading = true;\r\n let zeroResults = true;\r\n let thematics;\r\n if (this.buffer === 0 || this.type === SpatialFilterType.Point) {\r\n this.tryAddFeaturesToMap([this.zone]);\r\n }\r\n if (this.itemType !== SpatialFilterItemType.Thematics) {\r\n const theme: SpatialFilterThematic = {\r\n name: ''\r\n };\r\n thematics = [theme];\r\n } else {\r\n thematics = this.thematics;\r\n }\r\n if (\r\n this.measureUnit === MeasureLengthUnit.Kilometers &&\r\n this.type !== SpatialFilterType.Point\r\n ) {\r\n this.buffer = this.buffer * 1000;\r\n }\r\n if (this.type === SpatialFilterType.Polygon) {\r\n this.buffer = 0; // to avoid buffer enter a second time in terrAPI\r\n }\r\n\r\n const observables$: Observable<Feature[]>[] = [];\r\n thematics.forEach((thematic) => {\r\n observables$.push(\r\n this.spatialFilterService\r\n .loadFilterItem(\r\n this.zone,\r\n this.itemType,\r\n this.queryType,\r\n thematic,\r\n this.buffer\r\n )\r\n .pipe(\r\n tap((features: Feature[]) => {\r\n this.store.insertMany(features);\r\n const featuresPoint: Feature[] = [];\r\n const featuresLinePoly: Feature[] = [];\r\n let idPoint;\r\n let idLinePoly;\r\n features.forEach((feature) => {\r\n if (feature.geometry.type === 'Point') {\r\n feature.properties.longitude =\r\n feature.geometry.coordinates[0];\r\n feature.properties.latitude = feature.geometry.coordinates[1];\r\n featuresPoint.push(feature);\r\n idPoint = feature.meta.id;\r\n } else {\r\n featuresLinePoly.push(feature);\r\n idLinePoly = feature.meta.id;\r\n }\r\n });\r\n\r\n this.tryAddPointToMap(featuresPoint, idPoint);\r\n this.tryAddLayerToMap(featuresLinePoly, idLinePoly);\r\n if (features.length) {\r\n zeroResults = false;\r\n this.thematicLength += 1;\r\n thematic.zeroResults = false;\r\n this.cdRef.detectChanges();\r\n } else {\r\n thematic.zeroResults = true;\r\n }\r\n\r\n if (features.length >= 10000) {\r\n this.messageService.alert(\r\n 'igo.geo.spatialFilter.maxSizeAlert',\r\n 'igo.geo.spatialFilter.warning',\r\n { timeOut: 10000 }\r\n );\r\n }\r\n })\r\n )\r\n );\r\n });\r\n\r\n forkJoin(observables$)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => {\r\n this.loading = false;\r\n if (zeroResults) {\r\n this.messageService.alert(\r\n 'igo.geo.spatialFilter.zeroResults',\r\n 'igo.geo.spatialFilter.warning',\r\n { timeOut: 10000 }\r\n );\r\n }\r\n });\r\n }\r\n\r\n onZoneChange(feature: Feature, buffer?: boolean) {\r\n this.zone = feature;\r\n if (feature) {\r\n buffer\r\n ? this.tryAddFeaturesToMap([feature], true)\r\n : this.tryAddFeaturesToMap([feature]);\r\n this.zoomToFeatureExtent(feature);\r\n }\r\n }\r\n\r\n /**\r\n * Try to add zone feature to the map overlay\r\n */\r\n public tryAddFeaturesToMap(features: Feature[], buffer?: boolean) {\r\n let i = 1;\r\n for (const feature of features) {\r\n if (this.type === SpatialFilterType.Predefined) {\r\n for (const layer of this.layers) {\r\n if (\r\n layer.options._internal &&\r\n layer.options._internal.code === feature.properties.code &&\r\n !buffer\r\n ) {\r\n if (!layer.title?.startsWith('Zone')) {\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n }\r\n return;\r\n }\r\n if (layer.title?.startsWith('Zone')) {\r\n this.activeLayers = [];\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n } else {\r\n if (buffer) {\r\n for (const layer of this.activeLayers) {\r\n if (\r\n this.activeLayers.length === 1 &&\r\n layer.title?.startsWith('Zone')\r\n ) {\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n }\r\n this.activeLayers = [];\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith('Zone')) {\r\n i++;\r\n }\r\n }\r\n this.defaultStyle = (_feature, resolution) => {\r\n const coordinates = (features[0] as any).coordinates;\r\n return new olstyle.Style({\r\n image: new olstyle.Circle({\r\n radius: coordinates\r\n ? this.buffer /\r\n Math.cos((Math.PI / 180) * coordinates[1]) /\r\n resolution\r\n : undefined,\r\n fill: new olstyle.Fill({\r\n color: 'rgba(200, 200, 20, 0.2)'\r\n }),\r\n stroke: new olstyle.Stroke({\r\n width: 1,\r\n color: 'orange'\r\n })\r\n }),\r\n stroke: new olstyle.Stroke({\r\n width: 1,\r\n color: 'orange'\r\n }),\r\n fill: new olstyle.Fill({\r\n color: 'rgba(200, 200, 20, 0.2)'\r\n })\r\n });\r\n };\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'vector',\r\n queryable: true\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: DataSource) => {\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: ('Zone ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n workspace: { enabled: true },\r\n _internal: {\r\n code:\r\n this.type === SpatialFilterType.Predefined\r\n ? feature.properties.code\r\n : undefined\r\n },\r\n source: dataSource,\r\n visible: true\r\n }) as VectorLayer;\r\n const featuresOl = features.map((f) => {\r\n return featureToOl(f, this.map.projection);\r\n });\r\n if (this.type !== SpatialFilterType.Predefined) {\r\n const type =\r\n this.type === SpatialFilterType.Point ? 'Cercle' : 'Polygone';\r\n featuresOl[0].set('nom', 'Zone', true);\r\n featuresOl[0].set('type', type, true);\r\n }\r\n const ol = dataSource.ol as\r\n | olSourceVector<OlGeometry>\r\n | olSourceCluster;\r\n ol.addFeatures(featuresOl);\r\n olLayer.ol.setStyle(this.defaultStyle);\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.activeLayers.push(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Try to add point features to the map\r\n * Necessary to create clusters\r\n */\r\n private tryAddPointToMap(features: Feature[], id) {\r\n let i = 1;\r\n if (features.length) {\r\n if (this.map === undefined) {\r\n return;\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith(features[0].meta.title)) {\r\n i++;\r\n }\r\n }\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'cluster',\r\n id,\r\n queryable: true,\r\n distance: 120,\r\n meta: {\r\n title: 'Cluster'\r\n }\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: ClusterDataSource) => {\r\n const icon = features[0].meta.icon;\r\n let style: olstyle.Style;\r\n if (!icon) {\r\n style = createOverlayMarkerStyle();\r\n } else {\r\n style = this.createSvgIcon(icon) || createOverlayMarkerStyle();\r\n }\r\n\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n source: dataSource,\r\n visible: true,\r\n style\r\n });\r\n\r\n const featuresOl = features.map((feature) => {\r\n return featureToOl(feature, this.map.projection);\r\n });\r\n const ol = dataSource.ol as olSourceCluster;\r\n ol.getSource().addFeatures(featuresOl);\r\n if (this.layers.find((layer) => layer.id === olLayer.id)) {\r\n this.map.removeLayer(\r\n this.layers.find((layer) => layer.id === olLayer.id)\r\n );\r\n i = i - 1;\r\n olLayer.title = (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string;\r\n olLayer.options.title = olLayer.title;\r\n }\r\n this.iterator = i;\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.pushLayer(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n private createSvgIcon(icon): olstyle.Style {\r\n let style: olstyle.Style;\r\n this.matIconRegistry.getNamedSvgIcon(icon).subscribe((svgObj) => {\r\n const xmlSerializer = new XMLSerializer();\r\n svgObj.setAttribute('width', '30');\r\n svgObj.setAttribute('height', '30');\r\n svgObj.setAttribute('fill', 'rgba(0, 128, 255)');\r\n svgObj.setAttribute('stroke', 'white');\r\n const svg = xmlSerializer.serializeToString(svgObj);\r\n style = new olstyle.Style({\r\n image: new olstyle.Icon({\r\n src: 'data:image/svg+xml;utf8,' + svg\r\n })\r\n });\r\n });\r\n return style;\r\n }\r\n /**\r\n * Try to add line or polygon features to the map\r\n */\r\n private tryAddLayerToMap(features: Feature[], id) {\r\n let i = 1;\r\n if (features.length) {\r\n if (this.map === undefined) {\r\n return;\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith(features[0].meta.title)) {\r\n i++;\r\n }\r\n }\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'vector',\r\n id,\r\n queryable: true\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: DataSource) => {\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n source: dataSource,\r\n visible: true\r\n });\r\n const featuresOl = features.map((feature) => {\r\n return featureToOl(feature, this.map.projection);\r\n });\r\n const ol = dataSource.ol as olSourceVector<OlGeometry>;\r\n ol.addFeatures(featuresOl);\r\n if (this.layers.find((layer) => layer.id === olLayer.id)) {\r\n this.map.removeLayer(\r\n this.layers.find((layer) => layer.id === olLayer.id)\r\n );\r\n i = i - 1;\r\n olLayer.title = (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string;\r\n olLayer.options.title = olLayer.title;\r\n }\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.pushLayer(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n zoomToFeatureExtent(feature) {\r\n if (feature) {\r\n const olFeature = this.format.readFeature(feature, {\r\n dataProjection: feature.projection,\r\n featureProjection: this.map.projection\r\n });\r\n moveToOlFeatures(\r\n this.map.viewController,\r\n [olFeature],\r\n FeatureMotion.Zoom\r\n );\r\n }\r\n }\r\n\r\n pushLayer(layer) {\r\n for (const lay of this.activeLayers) {\r\n if (lay.id === layer.id) {\r\n return;\r\n }\r\n }\r\n\r\n this.activeLayers.push(layer);\r\n }\r\n}\r\n","<igo-spatial-filter-type\r\n [store]=\"spatialListStore\"\r\n [selectedQueryType]=\"queryType\"\r\n [zone]=\"zone\"\r\n [layers]=\"activeLayers\"\r\n (eventType)=\"getOutputType($event)\"\r\n (eventQueryType)=\"getOutputQueryType($event)\"\r\n (zoneChange)=\"onZoneChange($event)\"\r\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\r\n (bufferChange)=\"buffer = $event\"\r\n (measureUnitChange)=\"measureUnit = $event\"\r\n>\r\n</igo-spatial-filter-type>\r\n\r\n<igo-spatial-filter-item\r\n [type]=\"type\"\r\n [queryType]=\"queryType\"\r\n [map]=\"map\"\r\n [zone]=\"zone\"\r\n [loading]=\"loading\"\r\n [store]=\"store\"\r\n [layers]=\"activeLayers\"\r\n [allLayers]=\"layers\"\r\n [thematicLength]=\"thematicLength\"\r\n (radiusEvent)=\"buffer = $event\"\r\n (bufferEvent)=\"buffer = $event\"\r\n (measureUnitChange)=\"measureUnit = $event\"\r\n (freehandControl)=\"freehandDrawIsActive = $event\"\r\n (drawZoneEvent)=\"zone = $event\"\r\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\r\n (itemTypeChange)=\"itemType = $event\"\r\n (thematicChange)=\"thematics = $event\"\r\n (toggleSearch)=\"getOutputToggleSearch()\"\r\n (clearButtonEvent)=\"clearMap()\"\r\n (clearSearchEvent)=\"getOutputClearSearch()\"\r\n (export)=\"activateExportTool()\"\r\n (openWorkspace)=\"activateWorkspace()\"\r\n (entityChange)=\"activateWorkspace($event)\"\r\n>\r\n</igo-spatial-filter-item>\r\n<ng-container *ngIf=\"selectedFeature$ | async as feature\">\r\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\r\n</ng-container>\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n TimeFilterListBindingDirective,\r\n TimeFilterListComponent\r\n} from '@igo2/geo';\r\n\r\n@ToolComponent({\r\n name: 'timeFilter',\r\n title: 'igo.integration.tools.timeFilter',\r\n icon: 'history'\r\n})\r\n@Component({\r\n selector: 'igo-time-filter-tool',\r\n templateUrl: './time-filter-tool.component.html',\r\n standalone: true,\r\n imports: [TimeFilterListComponent, TimeFilterListBindingDirective]\r\n})\r\nexport class TimeFilterToolComponent {\r\n constructor() {}\r\n}\r\n","<igo-time-filter-list igoTimeFilterListBinding></igo-time-filter-list>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool/active-ogc-filter-tool.component';\r\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool/active-time-filter-tool.component';\r\nimport { OgcFilterToolComponent } from './ogc-filter-tool/ogc-filter-tool.component';\r\nimport { SpatialFilterToolComponent } from './spatial-filter-tool/spatial-filter-tool.component';\r\nimport { TimeFilterToolComponent } from './time-filter-tool/time-filter-tool.component';\r\n\r\n/**\r\n * @deprecated import the components directly or INTEGRATION_FILTER_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n ],\r\n exports: [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n ]\r\n})\r\nexport class IgoAppFilterModule {\r\n static forRoot(): ModuleWithProviders<IgoAppFilterModule> {\r\n return {\r\n ngModule: IgoAppFilterModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Validators } from '@angular/forms';\r\n\r\nimport { Form, FormService, ToolComponent } from '@igo2/common';\r\nimport { LanguageService, MessageService } from '@igo2/core';\r\nimport { IgoMap } from '@igo2/geo';\r\n\r\nimport * as olstyle from 'ol/style';\r\n\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport type { Subscription } from 'rxjs';\r\n\r\nimport { MapState } from '../../map/map.state';\r\n\r\ninterface DataIssueReporterData {\r\n geometry: object;\r\n layer: string;\r\n desc: string;\r\n email: string;\r\n}\r\n\r\n@ToolComponent({\r\n name: 'dataIssueReporter',\r\n title: 'igo.integration.tools.dataIssueReporter',\r\n icon: 'message-alert'\r\n})\r\n@Component({\r\n selector: 'igo-issue-reporter-tool',\r\n templateUrl: './data-issue-reporter-tool.component.html',\r\n styleUrls: ['./data-issue-reporter-tool.component.scss']\r\n})\r\nexport class DataIssueReporterToolComponent implements OnInit, OnDestroy {\r\n /**\r\n * Url to report the data issue. Use the Post protocol to send the form.\r\n */\r\n @Input() url: string;\r\n\r\n /**\r\n * Map to link to the form\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n form$ = new BehaviorSubject<Form>(undefined);\r\n\r\n data$ = new BehaviorSubject<{ [key: string]: any }>(undefined);\r\n\r\n submitDisabled = true;\r\n\r\n private valueChanges$$: Subscription;\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private formService: FormService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n ngOnInit() {\r\n combineLatest([this.languageService.language$, this.map.layers$]).subscribe(\r\n ([language, layers]) => {\r\n const baseLayerOrShownInLayerList = layers\r\n .filter((l) => l.baseLayer || l.showInLayerList)\r\n .map((l) => {\r\n return { value: `${l.title}-${l.id}`, title: l.title };\r\n });\r\n const fieldConfigs = [\r\n {\r\n name: 'geometry',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.geometry'\r\n ),\r\n type: 'geometry',\r\n inputs: {\r\n map: this.map,\r\n geometryTypeField: true,\r\n geometryType: 'Polygon',\r\n drawGuideField: false,\r\n drawGuide: 0,\r\n drawGuidePlaceholder: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.drawGuidePlaceholder'\r\n ),\r\n drawStyle: new olstyle.Style({\r\n stroke: new olstyle.Stroke({\r\n color: [255, 0, 0, 1],\r\n width: 2\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [255, 0, 0, 0.2]\r\n }),\r\n image: new olstyle.Circle({\r\n radius: 8,\r\n stroke: new olstyle.Stroke({\r\n color: [255, 0, 0, 1]\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [255, 0, 0, 0.2]\r\n })\r\n })\r\n }),\r\n overlayStyle: new olstyle.Style({\r\n stroke: new olstyle.Stroke({\r\n color: [0, 255, 0, 1],\r\n width: 2\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [0, 255, 0, 0.2]\r\n }),\r\n image: new olstyle.Circle({\r\n radius: 8,\r\n stroke: new olstyle.Stroke({\r\n color: [0, 255, 0, 1]\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [0, 255, 0, 0.2]\r\n })\r\n })\r\n })\r\n }\r\n },\r\n {\r\n name: 'layer',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.layer'\r\n ),\r\n type: 'select',\r\n options: {\r\n cols: 2\r\n },\r\n inputs: {\r\n choices: baseLayerOrShownInLayerList\r\n }\r\n },\r\n {\r\n name: 'desc',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.description'\r\n ),\r\n type: 'textarea',\r\n options: {\r\n validator: Validators.required\r\n }\r\n },\r\n {\r\n name: 'email',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.email'\r\n ),\r\n options: {\r\n validator: Validators.email\r\n }\r\n }\r\n ];\r\n\r\n const fields = fieldConfigs.map((config) =>\r\n this.formService.field(config)\r\n );\r\n const form = this.formService.form(fields, []);\r\n\r\n this.valueChanges$$ = form.control.valueChanges.subscribe(() => {\r\n this.submitDisabled = !form.control.valid;\r\n });\r\n\r\n this.form$.next(form);\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.valueChanges$$.unsubscribe();\r\n }\r\n\r\n clearForm() {\r\n this.form$.value.control.reset();\r\n }\r\n\r\n onSubmit(data: DataIssueReporterData) {\r\n const submitTitle = 'igo.integration.dataIssueReporterTool.submit.title';\r\n if (!this.url) {\r\n this.messageService.alert(\r\n 'igo.integration.dataIssueReporterTool.submit.setupMessage',\r\n submitTitle\r\n );\r\n alert(JSON.stringify(data));\r\n } else {\r\n this.httpClient\r\n .post<DataIssueReporterData>(this.url, data)\r\n .subscribe(() => {\r\n this.messageService.success(\r\n 'igo.integration.dataIssueReporterTool.submit.message',\r\n submitTitle\r\n );\r\n });\r\n this.clearForm();\r\n }\r\n }\r\n}\r\n","<igo-form\r\n *ngIf=\"form$ | async as form\"\r\n [form]=\"form\"\r\n [formData]=\"data$ | async\"\r\n (submitForm)=\"onSubmit($any($event))\"\r\n>\r\n <div *ngIf=\"form.fields.length\" class=\"form-container\">\r\n <igo-form-field\r\n *ngFor=\"let field of form.fields\"\r\n [field]=\"field\"\r\n ></igo-form-field>\r\n </div>\r\n\r\n <div formButtons class=\"actions-container\">\r\n <button\r\n mat-stroked-button\r\n type=\"button\"\r\n color=\"primary\"\r\n (click)=\"clearForm()\"\r\n >\r\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\r\n </button>\r\n <button\r\n mat-flat-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"submitDisabled\"\r\n >\r\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\r\n </button>\r\n </div>\r\n</igo-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { IgoFormModule } from '@igo2/common';\r\nimport { IgoLanguageModule, IgoMessageModule } from '@igo2/core';\r\n\r\nimport { DataIssueReporterToolComponent } from './data-issue-reporter-tool/data-issue-reporter-tool.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n IgoLanguageModule,\r\n IgoFormModule,\r\n IgoMessageModule\r\n ],\r\n declarations: [DataIssueReporterToolComponent],\r\n exports: [DataIssueReporterToolComponent],\r\n schemas: []\r\n})\r\nexport class IgoAppGeometryFormModule {}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport type { WorkspaceStore } from '@igo2/common';\r\nimport { ContextImportExportComponent } from '@igo2/context';\r\nimport {\r\n ExportOptions,\r\n IgoMap,\r\n ImportExportComponent,\r\n ProjectionsLimitationsOptions\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ContextState } from '../../context/context.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { WorkspaceState } from '../../workspace/workspace.state';\r\nimport {\r\n ImportExportMode,\r\n ImportExportState,\r\n ImportExportType\r\n} from '../import-export.state';\r\n\r\n@ToolComponent({\r\n name: 'importExport',\r\n title: 'igo.integration.tools.importExport',\r\n icon: 'file-move'\r\n})\r\n@Component({\r\n selector: 'igo-import-export-tool',\r\n templateUrl: './import-export-tool.component.html',\r\n styleUrls: ['./import-export-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatTabsModule,\r\n ImportExportComponent,\r\n ContextImportExportComponent,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class ImportExportToolComponent implements OnInit {\r\n @Input() projectionsLimitations: ProjectionsLimitationsOptions;\r\n\r\n @Input() selectFirstProj: boolean = false;\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get workspaceStore(): WorkspaceStore {\r\n return this.workspaceState.store;\r\n }\r\n\r\n @Input() importExportType: ImportExportType = ImportExportType.layer;\r\n @Input() importExportShowBothType: boolean = true;\r\n\r\n constructor(\r\n private mapState: MapState,\r\n public importExportState: ImportExportState,\r\n private workspaceState: WorkspaceState,\r\n public contextState: ContextState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.selectType();\r\n this.selectMode();\r\n }\r\n\r\n private selectType() {\r\n if (this.importExportType) {\r\n this.importExportState.importExportType$.next(this.importExportType);\r\n }\r\n const userSelectedType = this.importExportState.importExportType$.value;\r\n if (userSelectedType !== undefined) {\r\n this.importExportState.setImportExportType(userSelectedType);\r\n } else {\r\n this.importExportState.setImportExportType(ImportExportType.layer);\r\n }\r\n }\r\n\r\n private selectMode() {\r\n const userSelectedMode = this.importExportState.selectedMode$.value;\r\n if (userSelectedMode !== undefined) {\r\n this.importExportState.setMode(userSelectedMode);\r\n } else {\r\n this.importExportState.setMode(ImportExportMode.import);\r\n }\r\n }\r\n\r\n public modeChanged(mode: ImportExportMode) {\r\n this.importExportState.setMode(mode);\r\n }\r\n\r\n public exportOptionsChange(exportOptions: ExportOptions) {\r\n this.importExportState.setsExportOptions(exportOptions);\r\n }\r\n\r\n importExportTypeChange(event) {\r\n this.importExportType = event.value;\r\n }\r\n}\r\n","<mat-tab-group *ngIf=\"importExportShowBothType\">\r\n <mat-tab\r\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\r\n >\r\n <igo-import-export\r\n [contextUri]=\"(contextState.context$ | async).uri\"\r\n [map]=\"map\"\r\n [selectFirstProj]=\"selectFirstProj\"\r\n [projectionsLimitations]=\"projectionsLimitations\"\r\n [store]=\"workspaceStore\"\r\n [selectedMode]=\"importExportState.selectedMode$ | async\"\r\n (selectMode)=\"modeChanged($any($event))\"\r\n [exportOptions$]=\"importExportState.exportOptions$\"\r\n (exportOptionsChange)=\"exportOptionsChange($event)\"\r\n >\r\n </igo-import-export>\r\n </mat-tab>\r\n <mat-tab\r\n [label]=\"'igo.integration.importExportTool.importExportContext' | translate\"\r\n >\r\n <igo-context-import-export [map]=\"map\"></igo-context-import-export>\r\n </mat-tab>\r\n</mat-tab-group>\r\n\r\n<igo-import-export\r\n *ngIf=\"!importExportShowBothType && importExportType === 'layer'\"\r\n [contextUri]=\"(contextState.context$ | async).uri\"\r\n [map]=\"map\"\r\n [store]=\"workspaceStore\"\r\n [selectedMode]=\"importExportState.selectedMode$ | async\"\r\n (selectMode)=\"modeChanged($any($event))\"\r\n [exportOptions$]=\"importExportState.exportOptions$\"\r\n (exportOptionsChange)=\"exportOptionsChange($event)\"\r\n>\r\n</igo-import-export>\r\n\r\n<igo-context-import-export\r\n *ngIf=\"!importExportShowBothType && importExportType === 'context'\"\r\n [map]=\"map\"\r\n>\r\n</igo-context-import-export>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ImportExportToolComponent } from './import-export-tool/import-export-tool.component';\r\n\r\n/**\r\n * @deprecated import the ImportExportToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [ImportExportToolComponent],\r\n exports: [ImportExportToolComponent]\r\n})\r\nexport class IgoAppImportExportModule {\r\n static forRoot(): ModuleWithProviders<IgoAppImportExportModule> {\r\n return {\r\n ngModule: IgoAppImportExportModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AsyncPipe, DecimalPipe, NgFor, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport {\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport {\r\n ConfigService,\r\n LanguageService,\r\n MessageService,\r\n StorageScope,\r\n StorageService\r\n} from '@igo2/core';\r\nimport {\r\n IgoMap,\r\n InputProjections,\r\n ProjectionsLimitationsOptions,\r\n formatScale\r\n} from '@igo2/geo';\r\nimport { computeProjectionsConstraints, zoneMtm, zoneUtm } from '@igo2/geo';\r\nimport { Clipboard } from '@igo2/utils';\r\n\r\nimport * as olproj from 'ol/proj';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map.state';\r\n\r\n/**\r\n * Tool to display the coordinates and a cursor of the center of the map\r\n */\r\n@Component({\r\n selector: 'igo-advanced-coordinates',\r\n templateUrl: './advanced-coordinates.component.html',\r\n styleUrls: ['./advanced-coordinates.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n NgFor,\r\n MatOptionModule,\r\n MatSlideToggleModule,\r\n AsyncPipe,\r\n DecimalPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedCoordinatesComponent implements OnInit, OnDestroy {\r\n public formattedScale$: BehaviorSubject<string> = new BehaviorSubject('');\r\n public projections$: BehaviorSubject<InputProjections[]> =\r\n new BehaviorSubject([]);\r\n public form: UntypedFormGroup;\r\n public coordinates: string[];\r\n private currentCenterDefaultProj: [number, number];\r\n public center: boolean;\r\n private inMtmZone: boolean = true;\r\n private inLambert2 = { 32198: true, 3798: true };\r\n private mapState$$: Subscription;\r\n private _projectionsLimitations: ProjectionsLimitationsOptions = {};\r\n private projectionsConstraints: ProjectionsLimitationsOptions;\r\n private defaultProj: InputProjections;\r\n private currentZones = { utm: undefined, mtm: undefined };\r\n public units: boolean = true;\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get inputProj(): InputProjections {\r\n return this.form.get('inputProj').value;\r\n }\r\n set inputProj(value: InputProjections) {\r\n this.form.patchValue({ inputProj: value });\r\n }\r\n get projectionsLimitations(): ProjectionsLimitationsOptions {\r\n return this._projectionsLimitations || {};\r\n }\r\n\r\n @Input()\r\n set projectionsLimitations(value: ProjectionsLimitationsOptions) {\r\n this._projectionsLimitations = value;\r\n }\r\n\r\n constructor(\r\n public mapState: MapState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private cdRef: ChangeDetectorRef,\r\n private storageService: StorageService,\r\n private config: ConfigService,\r\n private formBuilder: UntypedFormBuilder\r\n ) {\r\n this.defaultProj = {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.wgs84',\r\n { code: 'EPSG:4326' }\r\n ),\r\n translateKey: 'wgs84',\r\n alias: 'WGS84',\r\n code: 'EPSG:4326',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n };\r\n this.center = this.storageService.get('centerToggle') as boolean;\r\n this.computeProjections();\r\n this.buildForm();\r\n }\r\n\r\n /**\r\n * Listen a state of the map, a state of a form, update the coordinates\r\n */\r\n ngOnInit(): void {\r\n this.mapState$$ = this.map.viewController.state$\r\n .pipe(debounceTime(50))\r\n .subscribe(() => {\r\n this.setScaleValue(this.map);\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n const currentMtmZone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n const currentUtmZone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n if (!this.inMtmZone && currentMtmZone !== this.currentZones.mtm) {\r\n this.back2quebec();\r\n }\r\n let zoneChange = false;\r\n if (currentMtmZone !== this.currentZones.mtm) {\r\n this.currentZones.mtm = currentMtmZone;\r\n zoneChange = true;\r\n }\r\n if (currentUtmZone !== this.currentZones.utm) {\r\n this.currentZones.utm = currentUtmZone;\r\n zoneChange = true;\r\n }\r\n if (zoneChange) {\r\n this.updateProjectionsZoneChange();\r\n }\r\n this.checkLambert(this.currentCenterDefaultProj);\r\n this.coordinates = this.getCoordinates();\r\n this.cdRef.detectChanges();\r\n this.storageService.set(\r\n 'currentProjection',\r\n this.inputProj,\r\n StorageScope.SESSION\r\n );\r\n });\r\n\r\n const tempInputProj = this.storageService.get(\r\n 'currentProjection'\r\n ) as InputProjections;\r\n this.inputProj = this.projections$.value[0];\r\n if (tempInputProj !== null) {\r\n const pos = this.positionInList(tempInputProj);\r\n this.inputProj = this.projections$.value[pos];\r\n this.updateZoneMtmUtm();\r\n }\r\n this.map.mapCenter$.next(this.center);\r\n this.coordinates = this.getCoordinates();\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.map.mapCenter$.next(false);\r\n this.mapState$$.unsubscribe();\r\n }\r\n\r\n setScaleValue(map: IgoMap) {\r\n this.formattedScale$.next(\r\n ': ~ 1 / ' + formatScale(map.viewController.getScale())\r\n );\r\n }\r\n /**\r\n * Coordinates of the center of the map on the appropriate systeme of coordinates\r\n * @returns Array of two numbers\r\n */\r\n getCoordinates(): string[] {\r\n this.currentZones.mtm = zoneMtm(this.currentCenterDefaultProj[0]);\r\n this.currentZones.utm = zoneUtm(this.currentCenterDefaultProj[0]);\r\n let coord;\r\n const code = this.inputProj.code;\r\n let decimal = 2;\r\n if (code.includes('EPSG:4326') || code.includes('EPSG:4269')) {\r\n decimal = 5;\r\n }\r\n this.units = code === 'EPSG:4326' || code === 'EPSG:4269';\r\n coord = this.map.viewController\r\n .getCenter(code)\r\n .map((c) => c.toFixed(decimal));\r\n return coord;\r\n }\r\n\r\n /**\r\n * Copy the coordinates to a clipboard\r\n */\r\n copyTextToClipboard(): void {\r\n const successful = Clipboard.copy(this.coordinates.toString());\r\n if (successful) {\r\n this.messageService.success(\r\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyMsg',\r\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyTitle'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Display a cursor on the center of the map\r\n */\r\n displayCenter(toggle: boolean): void {\r\n this.center = toggle;\r\n this.map.mapCenter$.next(toggle);\r\n this.storageService.set('centerToggle', toggle, StorageScope.SESSION);\r\n }\r\n\r\n /**\r\n * Builder of the form\r\n */\r\n private buildForm(): void {\r\n this.form = this.formBuilder.group({\r\n inputProj: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n /**\r\n * Update list of projections after changing of the state of the map\r\n */\r\n private updateProjectionsZoneChange(): void {\r\n let modifiedProj = this.projections$.value;\r\n const translate = this.languageService.translate;\r\n modifiedProj.map((p) => {\r\n if (p.translateKey === 'mtm') {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n if (zone) {\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n p.alias = `MTM ${zone}`;\r\n p.code = code;\r\n p.zone = `${zone}`;\r\n p.translatedValue = translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n p\r\n );\r\n } else {\r\n p.alias = '';\r\n this.inMtmZone = false;\r\n if (this.inputProj.translateKey === 'mtm') {\r\n this.inputProj = this.projections$.value[0];\r\n }\r\n }\r\n }\r\n if (p.translateKey === 'utm') {\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n const code = `EPSG:326${zone}`;\r\n p.alias = `UTM ${zone}`;\r\n p.code = code;\r\n p.zone = `${zone}`;\r\n p.translatedValue = translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n p\r\n );\r\n }\r\n });\r\n modifiedProj = modifiedProj.filter((p) => p.alias !== '');\r\n this.projections$.next(modifiedProj);\r\n }\r\n\r\n /**\r\n * Create a list of currents projections\r\n */\r\n private computeProjections(): void {\r\n this.projectionsConstraints = computeProjectionsConstraints(\r\n this.projectionsLimitations\r\n );\r\n const projections: InputProjections[] = [];\r\n\r\n if (!this.currentCenterDefaultProj) {\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n }\r\n\r\n const translate = this.languageService.translate;\r\n if (this.projectionsConstraints.wgs84) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.wgs84',\r\n { code: 'EPSG:4326' }\r\n ),\r\n translateKey: 'wgs84',\r\n alias: 'WGS84',\r\n code: 'EPSG:4326',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n\r\n if (this.projectionsConstraints.nad83) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.nad83',\r\n { code: 'EPSG:4269' }\r\n ),\r\n translateKey: 'nad83',\r\n alias: 'NAD83',\r\n code: 'EPSG:4269',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n\r\n if (this.projectionsConstraints.webMercator) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.webMercator',\r\n { code: 'EPSG:3857' }\r\n ),\r\n translateKey: 'webMercator',\r\n alias: 'Web Mercator',\r\n code: 'EPSG:3857',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n if (this.projectionsConstraints.mtm) {\r\n // Quebec\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n if (zone) {\r\n this.inMtmZone = true;\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n projections.splice(3, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n ),\r\n translateKey: 'mtm',\r\n alias: `MTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n } else {\r\n this.inMtmZone = false;\r\n }\r\n }\r\n if (this.projectionsConstraints.utm) {\r\n const order = this.inMtmZone ? 4 : 3;\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\r\n projections.splice(order, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n { code, zone }\r\n ),\r\n translateKey: 'utm',\r\n alias: `UTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n let configProjection: InputProjections[] = [];\r\n if (this.projectionsConstraints.projFromConfig) {\r\n configProjection = (this.config.getConfig('projections') ||\r\n []) as InputProjections[];\r\n }\r\n\r\n this.projections$.next(configProjection.concat(projections));\r\n }\r\n\r\n /**\r\n * Push the MTM in the array of systeme of coordinates\r\n * @param projections Array of the InputProjections\r\n */\r\n private pushMtm(projections: Array<InputProjections>): void {\r\n if (this.projectionsConstraints.mtm) {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n projections.splice(3, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n ),\r\n translateKey: 'mtm',\r\n alias: `MTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Updates the list of systems of coordinates for territory of Quebec\r\n * push MTM and UTM in the Array\r\n */\r\n private back2quebec(): void {\r\n const projections = this.projections$.value;\r\n this.pushMtm(projections);\r\n this.inMtmZone = true;\r\n }\r\n\r\n /**\r\n * Update the numbers of the zones when application is restarted\r\n */\r\n private updateZoneMtmUtm() {\r\n if (this.inputProj.translateKey === 'mtm') {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n this.inputProj.alias = `MTM ${zone}`;\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n this.inputProj.code = code;\r\n this.inputProj.zone = `${zone}`;\r\n this.inputProj.translatedValue = this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n );\r\n }\r\n if (this.inputProj.translateKey === 'utm') {\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n this.inputProj.alias = `UTM ${zone}`;\r\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\r\n this.inputProj.code = code;\r\n this.inputProj.zone = `${zone}`;\r\n this.inputProj.translatedValue = this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n { code, zone }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Compute the position of a current projection in a list. 0 if the projection is not in the list\r\n * @param translateKey string, translate key of a projection\r\n * @returns numeric, position of an element in the array\r\n */\r\n positionInList(tempInputProj: InputProjections): number {\r\n const tk = tempInputProj.translateKey;\r\n const alias = tempInputProj.alias;\r\n let position; // = undefined;\r\n let iter = 0;\r\n this.projections$.value.map((projection) => {\r\n if (tk) {\r\n if (tk === projection.translateKey) {\r\n position = iter;\r\n }\r\n } else if (alias === projection.alias) {\r\n position = iter;\r\n }\r\n iter++;\r\n });\r\n position = position ? position : 0;\r\n return position;\r\n }\r\n\r\n /**\r\n * Change the list of projections depending on the projections of Lambert\r\n * @param coordinates An array of numbers, longitude and latitude\r\n */\r\n checkLambert(coordinates: [number, number]) {\r\n const lambertProjections = this.config.getConfig('projections') || [];\r\n lambertProjections.forEach((projection) => {\r\n let modifiedProj = this.projections$.value;\r\n const extent = projection.extent;\r\n const code = projection.code.match(/\\d+/);\r\n const currentExtentWGS = olproj.transformExtent(\r\n extent,\r\n projection.code,\r\n this.defaultProj.code\r\n );\r\n if (\r\n coordinates[0] < currentExtentWGS[0] ||\r\n coordinates[0] > currentExtentWGS[2] ||\r\n coordinates[1] < currentExtentWGS[1] ||\r\n coordinates[1] > currentExtentWGS[3]\r\n ) {\r\n this.inLambert2[code] = false;\r\n if (this.inputProj.alias === projection.alias) {\r\n this.inputProj = this.projections$.value[0];\r\n }\r\n modifiedProj = modifiedProj.filter((p) => p.alias !== projection.alias);\r\n this.projections$.next(modifiedProj);\r\n } else {\r\n if (!this.inLambert2[code]) {\r\n this.projections$.next(modifiedProj.concat(projection));\r\n this.inLambert2[code] = true;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"advanced-coordinates__coordinates-container\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field *ngIf=\"units; else elseBlock\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon' | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n <ng-template #elseBlock>\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.est'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n </ng-template>\n\n <mat-form-field *ngIf=\"units; else elseBlock2\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat' | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n <ng-template #elseBlock2>\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.nord'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n </ng-template>\n <button\n mat-icon-button\n [attr.aria-label]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.copy'\n | translate\n \"\n class=\"igo-form-button-group advanced-coordinates__copy-coordinates\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </div>\n\n <form class=\"igo-form advanced-coordinates__form\" [formGroup]=\"form\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field class=\"igo-input-container\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordSystem'\n | translate\n }}</mat-label>\n <mat-select [(value)]=\"inputProj\">\n <mat-option\n matTooltipShowDelay=\"500\"\n *ngFor=\"let projection of projections$ | async\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ projection.translatedValue || projection.alias }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-slide-toggle\n class=\"center-toggle mat-typography\"\n [checked]=\"center\"\n [labelPosition]=\"'before'\"\n (change)=\"displayCenter($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.center'\n | translate\n }}\n </mat-slide-toggle>\n </div>\n </form>\n\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.zoom' | translate\n }}\n {{ map.viewController.getZoom() }}\n </p>\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.scale' | translate\n }}\n {{ formattedScale$ | async }}\n </p>\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.resolution'\n | translate\n }}\n {{ map.viewController.getResolution() | number: '1.0-0' }}\n </p>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ContextService, DetailedContext } from '@igo2/context';\r\nimport { IgoMap, Layer, VectorLayer } from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ToolState } from '../../../tool/tool.state';\r\nimport { MapState } from '../../map.state';\r\n\r\n@Component({\r\n selector: 'igo-advanced-swipe',\r\n templateUrl: './advanced-swipe.component.html',\r\n styleUrls: ['./advanced-swipe.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatDividerModule,\r\n NgFor,\r\n MatSlideToggleModule,\r\n MatListModule,\r\n MatIconModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedSwipeComponent implements OnInit, OnDestroy {\r\n public swipe: boolean = false;\r\n public layerList: Layer[];\r\n public userControlledLayerList: Layer[];\r\n public form: UntypedFormGroup;\r\n public layers: VectorLayer[];\r\n public res: DetailedContext;\r\n public listForSwipe: Layer[];\r\n\r\n /**\r\n * Get an active map state\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n public mapState: MapState,\r\n private contextService: ContextService,\r\n private formBuilder: UntypedFormBuilder,\r\n private toolState: ToolState\r\n ) {\r\n this.buildForm();\r\n }\r\n\r\n /**\r\n * Get the list of layers for swipe\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.map.layers$.subscribe(\r\n (ll) =>\r\n (this.userControlledLayerList = ll.filter(\r\n (layer) =>\r\n !layer.baseLayer && layer.showInLayerList && layer.displayed\r\n ))\r\n );\r\n }\r\n\r\n /**\r\n * Desactivate the swipe\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.swipe = false;\r\n this.map.swipeEnabled$.next(this.swipe);\r\n }\r\n\r\n /**\r\n * Build a form for choise of the layers\r\n */\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n layers: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n /**\r\n * Activate the swipe, send a list of layers for a swipe-tool\r\n */\r\n startSwipe(toggle: boolean) {\r\n this.swipe = toggle;\r\n this.map.swipeEnabled$.next(toggle);\r\n this.listForSwipe = [];\r\n for (const layer of this.form.value.layers) {\r\n this.listForSwipe.push(layer);\r\n }\r\n this.map.selectedFeatures$.next(this.listForSwipe);\r\n }\r\n\r\n /**\r\n * Restart a swipe for a new layers-list\r\n */\r\n applyNewLayers(e) {\r\n this.startSwipe(false); // l'approche KISS\r\n this.startSwipe(true);\r\n if (e._selected) {\r\n e._selected = false;\r\n }\r\n const allLayers = this.userControlledLayerList.length;\r\n const selectedLayers = this.form.controls.layers.value.length;\r\n if (selectedLayers === allLayers) {\r\n e._selected = true;\r\n }\r\n }\r\n\r\n /**\r\n * Select all list of layers and restart a tool\r\n */\r\n selectAll(e) {\r\n if (e._selected) {\r\n this.form.controls.layers.setValue(this.userControlledLayerList);\r\n e._selected = true;\r\n } else {\r\n this.form.controls.layers.setValue([]);\r\n }\r\n this.startSwipe(false);\r\n this.startSwipe(true);\r\n }\r\n\r\n /**\r\n * Open search tool\r\n */\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n /**\r\n * Open catalog\r\n */\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n /**\r\n * Open context manager\r\n */\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n}\r\n","<div\n *ngIf=\"userControlledLayerList.length; else noLayersBlock\"\n class=\"igo-swipe-select-container\"\n>\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option\n *ngFor=\"let layer of userControlledLayerList\"\n [value]=\"layer\"\n (click)=\"applyNewLayers(e)\"\n >{{ layer.title }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle mat-typography\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate }}\n </mat-slide-toggle>\n </form>\n</div>\n\n<ng-template #noLayersBlock>\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"magnify\"></mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"layers-plus\"></mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"star\"></mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MapState } from '../map.state';\r\nimport { AdvancedCoordinatesComponent } from './advanced-coordinates/advanced-coordinates.component';\r\nimport { AdvancedSwipeComponent } from './advanced-swipe/advanced-swipe.component';\r\n\r\n@ToolComponent({\r\n name: 'advancedMap',\r\n title: 'igo.integration.tools.advancedMap',\r\n icon: 'toolbox'\r\n})\r\n/**\r\n * Tool to handle the advanced map tools\r\n */\r\n@Component({\r\n selector: 'igo-advanced-map-tool',\r\n templateUrl: './advanced-map-tool.component.html',\r\n styleUrls: ['./advanced-map-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n AdvancedSwipeComponent,\r\n MatDividerModule,\r\n AdvancedCoordinatesComponent,\r\n MatSlideToggleModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedMapToolComponent {\r\n get tracking$() {\r\n return this.mapState.map.geolocationController.tracking$;\r\n }\r\n get followPosition$() {\r\n return this.mapState.map.geolocationController.followPosition$;\r\n }\r\n\r\n constructor(public mapState: MapState) {}\r\n\r\n toggleTracking(value) {\r\n this.mapState.map.geolocationController.tracking = value;\r\n }\r\n\r\n toggleFollow(value) {\r\n this.mapState.map.geolocationController.followPosition = value;\r\n }\r\n}\r\n","<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-tool' | translate\n }}\n</h4>\n<igo-advanced-swipe></igo-advanced-swipe>\n<mat-divider class=\"advanced-tool-line\"></mat-divider>\n<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordinates'\n | translate\n }}\n</h4>\n<igo-advanced-coordinates></igo-advanced-coordinates>\n<mat-divider class=\"advanced-tool-line\"></mat-divider>\n\n<h4 class=\"nameOfTool\">\n {{ 'igo.integration.advanced-map-tool.geolocation.title' | translate }}\n</h4>\n\n<div class=\"igo-input-container\">\n <div class=\"geolocation-slide-toggle-container\">\n <mat-slide-toggle\n class=\"geolocation-option\"\n [checked]=\"tracking$ | async\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleTracking($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.tracking' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"geolocation-option\"\n [disabled]=\"(tracking$ | async) !== true\"\n [labelPosition]=\"'before'\"\n [checked]=\"followPosition$ | async\"\n (change)=\"toggleFollow($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.follow' | translate }}\n </mat-slide-toggle>\n </div>\n</div>\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport type { Layer } from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\r\n\r\nimport { WorkspaceState } from '../workspace.state';\r\n\r\n@Component({\r\n selector: 'igo-workspace-button',\r\n templateUrl: './workspace-button.component.html',\r\n styleUrls: ['./workspace-button.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class WorkspaceButtonComponent implements OnInit, OnDestroy {\r\n public hasWorkspace$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private hasWorkspace$$: Subscription;\r\n\r\n private _layer: Layer;\r\n private layer$: BehaviorSubject<Layer> = new BehaviorSubject(undefined);\r\n @Input()\r\n set layer(value: Layer) {\r\n this._layer = value;\r\n this.layer$.next(this._layer);\r\n }\r\n\r\n get layer(): Layer {\r\n return this._layer;\r\n }\r\n\r\n @Input() color: string = 'primary';\r\n\r\n constructor(private workspaceState: WorkspaceState) {}\r\n\r\n ngOnInit(): void {\r\n this.hasWorkspace$$ = combineLatest([\r\n this.workspaceState.workspaceEnabled$,\r\n this.layer$\r\n ]).subscribe((bunch) =>\r\n this.hasWorkspace$.next(bunch[0] && bunch[1]?.options.workspace?.enabled)\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hasWorkspace$$.unsubscribe();\r\n }\r\n\r\n activateWorkspace() {\r\n if (\r\n this.workspaceState.workspace$.value &&\r\n (this.workspaceState.workspace$.value as any).layer.id ===\r\n this.layer.id &&\r\n this.workspaceState.workspacePanelExpanded\r\n ) {\r\n this.workspaceState.workspacePanelExpanded = false;\r\n } else {\r\n this.workspaceState.workspacePanelExpanded = true;\r\n this.workspaceState.setActiveWorkspaceById(this.layer.id);\r\n }\r\n }\r\n}\r\n","<button\n *ngIf=\"hasWorkspace$ | async\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color\"\n (click)=\"activateWorkspace()\"\n>\n <mat-icon svgIcon=\"table\"></mat-icon>\n</button>\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n SearchSourceService,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace';\r\nimport { ToolState } from './../../tool/tool.state';\r\nimport { MapState } from './../map.state';\r\n\r\n@ToolComponent({\r\n name: 'mapDetails',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-details-tool',\r\n templateUrl: './map-details-tool.component.html',\r\n styleUrls: ['./map-details-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n WorkspaceButtonComponent,\r\n ExportButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n MetadataButtonComponent,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapDetailsToolComponent implements OnInit {\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layers$(): Observable<Layer[]> {\r\n return this.map.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n )\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): any {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private searchSourceService: SearchSourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => {\r\n this.delayedShowEmptyMapContent = true;\r\n this.cdRef.detectChanges();\r\n }, 250);\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n}\r\n","<igo-layer-list\r\n class=\"mapDetailsList\"\r\n *ngIf=\"(layers$ | async).length; else empty\"\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n>\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n</igo-layer-list>\r\n\r\n<ng-template #empty>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n</ng-template>\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n IgoMap,\r\n Layer,\r\n LayerLegendListBindingDirective,\r\n LayerLegendListComponent,\r\n LayerListControlsOptions,\r\n SearchSourceService,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n BehaviorSubject,\r\n Observable,\r\n ReplaySubject,\r\n Subscription,\r\n combineLatest\r\n} from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport { ToolState } from './../../tool/tool.state';\r\nimport { MapState } from './../map.state';\r\n\r\n@ToolComponent({\r\n name: 'mapLegend',\r\n title: 'igo.integration.tools.legend',\r\n icon: 'format-list-bulleted-type'\r\n})\r\n@Component({\r\n selector: 'igo-map-legend-tool',\r\n templateUrl: './map-legend-tool.component.html',\r\n styleUrls: ['./map-legend-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n LayerLegendListComponent,\r\n LayerLegendListBindingDirective,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapLegendToolComponent implements OnInit, OnDestroy {\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n layers$: BehaviorSubject<Layer[]> = new BehaviorSubject([]);\r\n showAllLegendsValue$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n change$ = new ReplaySubject<void>(1);\r\n\r\n private resolution$$: Subscription;\r\n private visibleOrInRangeLayers$$: Subscription;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n @Input() allowShowAllLegends: boolean = false;\r\n\r\n @Input() showAllLegendsValue: boolean = false;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get visibleOrInRangeLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) => layer.visible$.value && layer.isInResolutionsRange$.value\r\n )\r\n )\r\n );\r\n }\r\n\r\n get visibleLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) => layers.filter((layer) => layer.visible$.value))\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private searchSourceService: SearchSourceService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.resolution$$ = combineLatest([\r\n this.map.layers$,\r\n this.map.viewController.resolution$\r\n ])\r\n .pipe(debounceTime(10))\r\n .subscribe((bunch: [Layer[], number]) => {\r\n this.layers$.next(\r\n bunch[0].filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n });\r\n\r\n if (this.allowShowAllLegends) {\r\n this.mapState.showAllLegendsValue =\r\n this.mapState.showAllLegendsValue !== undefined\r\n ? this.mapState.showAllLegendsValue\r\n : this.showAllLegendsValue || false;\r\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\r\n } else {\r\n this.showAllLegendsValue$.next(false);\r\n }\r\n\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => {\r\n this.delayedShowEmptyMapContent = true;\r\n this.cdRef.detectChanges();\r\n }, 250);\r\n }\r\n\r\n onShowAllLegends(event) {\r\n this.mapState.showAllLegendsValue = event;\r\n this.showAllLegendsValue$.next(event);\r\n }\r\n\r\n showAllLegend() {\r\n if (this.layers$.getValue().length === 0) {\r\n return false;\r\n } else if (\r\n this.layers$.getValue().length !== 0 &&\r\n this.allowShowAllLegends === false\r\n ) {\r\n let visibleOrInRangeLayers;\r\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\r\n (value) => {\r\n value.length === 0\r\n ? (visibleOrInRangeLayers = false)\r\n : (visibleOrInRangeLayers = true);\r\n }\r\n );\r\n\r\n if (visibleOrInRangeLayers === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resolution$$.unsubscribe();\r\n if (this.visibleOrInRangeLayers$$) {\r\n this.visibleOrInRangeLayers$$.unsubscribe();\r\n }\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n}\r\n","<igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n>\n</igo-layer-legend-list>\n<ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n></ng-template>\n\n<p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n>\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n</p>\n\n<ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { StorageService } from '@igo2/core';\r\nimport {\r\n FEATURE,\r\n Feature,\r\n FeatureStore,\r\n IgoMap,\r\n Layer,\r\n MapGeolocationState,\r\n QueryableDataSource,\r\n QueryableDataSourceOptions,\r\n featureFromOl,\r\n measureOlGeometryLength,\r\n roundCoordTo\r\n} from '@igo2/geo';\r\nimport { uuid } from '@igo2/utils';\r\n\r\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport Geometry from 'ol/geom/Geometry';\r\nimport olLineString from 'ol/geom/LineString';\r\nimport olLayerVector from 'ol/layer/Vector';\r\nimport * as olProj from 'ol/proj';\r\nimport olVectorSource from 'ol/source/Vector';\r\n\r\nimport { BehaviorSubject, Subscription, combineLatest, interval } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../map/map.state';\r\n\r\n/**\r\n * Service that holds the state of the direction module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapProximityState {\r\n private defaultProximityRadiusValue: number = 30;\r\n\r\n public enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\r\n false\r\n );\r\n public proximityRadiusValue$: BehaviorSubject<number>;\r\n public proximitylocationType$: BehaviorSubject<string> =\r\n new BehaviorSubject<string>('geolocation');\r\n public proximityFeatureStore: FeatureStore<Feature>;\r\n private subs$$: Subscription[] = [];\r\n public currentPositionCoordinate$: BehaviorSubject<[number, number]> =\r\n new BehaviorSubject(undefined);\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private storageService: StorageService\r\n ) {\r\n this.proximityFeatureStore = new FeatureStore<Feature>([], {\r\n map: this.mapState.map\r\n });\r\n\r\n this.proximityRadiusValue$ = new BehaviorSubject<number>(\r\n (this.storageService.get('mapProximityRadius') as number) ||\r\n this.defaultProximityRadiusValue\r\n );\r\n\r\n this.mapState.map.ol.once('rendercomplete', () => {\r\n this.subscribeProximityMonitor();\r\n });\r\n }\r\n\r\n subscribeProximityMonitor() {\r\n this.subs$$.push(\r\n combineLatest([\r\n this.enabled$,\r\n this.proximitylocationType$,\r\n this.proximityRadiusValue$,\r\n interval(5000),\r\n this.map.geolocationController.position$\r\n ])\r\n .pipe(debounceTime(750))\r\n .subscribe(\r\n (bunch: [boolean, string, number, number, MapGeolocationState]) => {\r\n this.proximityFeatureStore.clear();\r\n const enabled = bunch[0];\r\n const layers = this.map.layers;\r\n const currentPos = this.map.geolocationController.position$.value;\r\n const locationType = bunch[1];\r\n const proximityRadiusValue = bunch[2];\r\n this.storageService.set(\r\n 'mapProximityRadius',\r\n proximityRadiusValue || this.defaultProximityRadiusValue\r\n );\r\n\r\n if (!enabled) {\r\n return;\r\n }\r\n\r\n let coord: number[];\r\n if (locationType === 'geolocation') {\r\n if (!currentPos || !currentPos.position) {\r\n return;\r\n }\r\n\r\n coord = olProj.transform(\r\n currentPos.position,\r\n currentPos.projection,\r\n this.map.projection\r\n );\r\n this.map.mapCenter$.next(false);\r\n } else {\r\n coord = this.map.viewController.getCenter();\r\n this.map.mapCenter$.next(true);\r\n }\r\n\r\n const coordLonLat = olProj.transform(\r\n coord,\r\n this.map.projection,\r\n 'EPSG:4269'\r\n );\r\n const roundedCoordLonLat = roundCoordTo(\r\n coordLonLat as [number, number],\r\n 6\r\n );\r\n this.currentPositionCoordinate$.next(roundedCoordLonLat);\r\n\r\n const layersToMonitor = layers.filter(\r\n (layer) =>\r\n layer.ol instanceof olLayerVector &&\r\n (layer.dataSource as QueryableDataSource).options.queryable &&\r\n layer.visible &&\r\n layer.isInResolutionsRange\r\n );\r\n\r\n layersToMonitor.map((layerToMonitor) => {\r\n const layerSource =\r\n layerToMonitor.ol.getSource() as olVectorSource<Geometry>;\r\n\r\n // Mostly for polygon features.\r\n const olFeaturesAtCoordinate =\r\n layerSource.getFeaturesAtCoordinate(coord);\r\n if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {\r\n olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {\r\n const featureAtThisPosition = featureFromOl(\r\n olFeatureAtCoordinate,\r\n this.map.projection\r\n );\r\n let title = this.getQueryTitle(\r\n featureAtThisPosition,\r\n layerToMonitor\r\n );\r\n // todo handle imported layers without querytitle? prompt title or detect first column?\r\n this.addFeatureToStore(\r\n layerToMonitor,\r\n coord,\r\n featureAtThisPosition,\r\n title,\r\n 0\r\n );\r\n });\r\n } else {\r\n // compute proximity for remaining sources\r\n const closestOlFeature =\r\n layerSource.getClosestFeatureToCoordinate(coord);\r\n if (closestOlFeature) {\r\n const closestOlGeom = closestOlFeature.getGeometry();\r\n const closestFeature = featureFromOl(\r\n closestOlFeature,\r\n this.map.projection\r\n );\r\n const geometryClosestPoint =\r\n closestOlGeom.getClosestPoint(coord);\r\n const linebetween = new olLineString([\r\n coord,\r\n geometryClosestPoint\r\n ]);\r\n const lineLength = measureOlGeometryLength(\r\n linebetween,\r\n 'EPSG:3857'\r\n );\r\n if (lineLength <= proximityRadiusValue) {\r\n let title = this.getQueryTitle(\r\n closestFeature,\r\n layerToMonitor\r\n );\r\n // todo handle imported layers without querytitle? prompt title or detect first column?\r\n this.addFeatureToStore(\r\n layerToMonitor,\r\n coord,\r\n closestFeature,\r\n title,\r\n lineLength\r\n );\r\n }\r\n }\r\n }\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Add a feature with proximity properties to the store\r\n * @internal\r\n */\r\n private addFeatureToStore(\r\n layer: Layer,\r\n coordFromCalculatedDistance,\r\n feature: Feature,\r\n title,\r\n distance\r\n ) {\r\n const featureId = uuid();\r\n const projection = this.map.ol.getView().getProjection();\r\n const olGeometry = feature.ol.getGeometry() as Geometry;\r\n const geometry = new GeoJSON().writeGeometryObject(olGeometry, {\r\n featureProjection: projection,\r\n dataProjection: projection\r\n }) as any;\r\n this.proximityFeatureStore.update({\r\n type: FEATURE,\r\n geometry,\r\n projection: projection.getCode(),\r\n properties: {\r\n ...feature.properties,\r\n ...{\r\n id: featureId,\r\n element: title,\r\n distance,\r\n coordFromCalculatedDistance,\r\n layerSrcId: layer.id,\r\n layerSrcTitle: layer.title\r\n }\r\n },\r\n meta: {\r\n id: featureId\r\n }\r\n });\r\n }\r\n\r\n getQueryTitle(feature: Feature, layer: Layer): string {\r\n let title;\r\n if (layer.options?.source?.options) {\r\n const dataSourceOptions = layer.options.source\r\n .options as QueryableDataSourceOptions;\r\n if (dataSourceOptions.queryTitle) {\r\n title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);\r\n }\r\n }\r\n return title;\r\n }\r\n\r\n getLabelMatch(feature: Feature, labelMatch): string {\r\n let label = labelMatch;\r\n const labelToGet = Array.from(labelMatch.matchAll(/\\$\\{([^\\{\\}]+)\\}/g));\r\n\r\n labelToGet.forEach((v) => {\r\n label = label.replace(v[0], feature.properties[v[1]]);\r\n });\r\n\r\n // Nothing done? check feature's attribute\r\n if (labelToGet.length === 0 && label === labelMatch) {\r\n label = feature.properties[labelMatch] || labelMatch;\r\n }\r\n return label;\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatRadioChange, MatRadioModule } from '@angular/material/radio';\r\n\r\nimport {\r\n EntityTableComponent,\r\n EntityTableTemplate,\r\n ToolComponent\r\n} from '@igo2/common';\r\nimport { LanguageService, MessageService } from '@igo2/core';\r\nimport { Feature, IgoMap } from '@igo2/geo';\r\nimport { Clipboard, NumberUtils } from '@igo2/utils';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MapProximityState } from '../map-proximity.state';\r\nimport { MapState } from '../map.state';\r\n\r\n@ToolComponent({\r\n name: 'map-proximity',\r\n title: 'igo.integration.tools.closestFeature',\r\n icon: 'radius'\r\n})\r\n/**\r\n * Tool to handle the advanced map tools\r\n */\r\n@Component({\r\n selector: 'igo-map-proximity-tool',\r\n templateUrl: './map-proximity-tool.component.html',\r\n styleUrls: ['./map-proximity-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n EntityTableComponent,\r\n NgIf,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatRadioModule,\r\n FormsModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapProximityToolComponent implements OnInit, OnDestroy {\r\n private subs$$: Subscription[] = [];\r\n @ViewChild('table', { static: true }) table: EntityTableComponent;\r\n\r\n get maxDistance() {\r\n return this.mapProximityState.proximityRadiusValue$.value;\r\n }\r\n set maxDistance(value: number) {\r\n this.mapProximityState.proximityRadiusValue$.next(value);\r\n }\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n public userDefinedMapCenter: boolean;\r\n public userDefinedFollowPosition: boolean;\r\n /**\r\n * Table template\r\n * @internal\r\n */\r\n public tableTemplate: EntityTableTemplate;\r\n\r\n constructor(\r\n public mapState: MapState,\r\n public mapProximityState: MapProximityState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService\r\n ) {\r\n this.tableTemplate = {\r\n selection: true,\r\n selectMany: false,\r\n selectionCheckbox: false,\r\n sort: true,\r\n columns: [\r\n {\r\n name: 'element',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.map-proximity-tool.feature'\r\n ),\r\n valueAccessor: (localFeature: Feature) => {\r\n return localFeature.properties.element;\r\n }\r\n },\r\n {\r\n name: 'distance',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.map-proximity-tool.distance'\r\n ),\r\n valueAccessor: (localFeature: Feature) => {\r\n return `${NumberUtils.roundToNDecimal(\r\n localFeature.properties.distance,\r\n 1\r\n )}m`;\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapProximityState.enabled$.next(true);\r\n this.userDefinedFollowPosition =\r\n this.map.geolocationController.followPosition === true;\r\n this.userDefinedMapCenter = this.map.mapCenter$.value === true;\r\n\r\n this.subs$$.push(\r\n this.mapProximityState.proximitylocationType$.subscribe((v) => {\r\n this.map.mapCenter$.next(v !== 'geolocation');\r\n if (v === 'geolocation') {\r\n this.map.geolocationController.followPosition = true;\r\n } else {\r\n this.map.geolocationController.followPosition = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.mapProximityState.enabled$.next(false);\r\n this.map.mapCenter$.next(this.userDefinedMapCenter);\r\n this.subs$$.map((s) => s.unsubscribe());\r\n this.map.geolocationController.followPosition =\r\n this.userDefinedFollowPosition;\r\n }\r\n\r\n onLocationTypeChange(e: MatRadioChange) {\r\n this.mapProximityState.proximitylocationType$.next(e.value);\r\n }\r\n\r\n /**\r\n * Copy the coordinates to a clipboard\r\n */\r\n copyTextToClipboard(): void {\r\n const successful = Clipboard.copy(\r\n this.mapProximityState.currentPositionCoordinate$?.value.toString()\r\n );\r\n if (successful) {\r\n this.messageService.success(\r\n 'igo.integration.map-proximity-tool.copyMsg',\r\n 'igo.integration.map-proximity-tool.copyTitle'\r\n );\r\n }\r\n }\r\n}\r\n","<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextListBindingDirective,\r\n ContextListComponent\r\n} from '@igo2/context';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\r\nimport { MapState } from './../map.state';\r\n\r\n/**\r\n * Tool to browse a map's layers or to choose a different map\r\n */\r\n@ToolComponent({\r\n name: 'map',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-tool',\r\n templateUrl: './map-tool.component.html',\r\n styleUrls: ['./map-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTabsModule,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n WorkspaceButtonComponent,\r\n ExportButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n MetadataButtonComponent,\r\n ContextListComponent,\r\n ContextListBindingDirective,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapToolComponent {\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): any {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n}\r\n","<mat-tab-group>\r\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\r\n <igo-layer-list\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\r\n <igo-context-list igoContextListBinding></igo-context-list>\r\n </mat-tab>\r\n</mat-tab-group>\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerLegendListBindingDirective,\r\n LayerLegendListComponent,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n SearchSourceService,\r\n StyleModalLayerButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n VectorLayer,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\r\nimport { LayerListToolState } from '../layer-list-tool.state';\r\nimport { MapState } from '../map.state';\r\n\r\n/**\r\n * Tool to browse a map's layers or to choose a different map\r\n */\r\n@ToolComponent({\r\n name: 'mapTools',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-tools',\r\n templateUrl: './map-tools.component.html',\r\n styleUrls: ['./map-tools.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTabsModule,\r\n NgIf,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n StyleModalLayerButtonComponent,\r\n MetadataButtonComponent,\r\n TrackFeatureButtonComponent,\r\n TimeFilterButtonComponent,\r\n OgcFilterButtonComponent,\r\n ExportButtonComponent,\r\n WorkspaceButtonComponent,\r\n LayerLegendListComponent,\r\n LayerLegendListBindingDirective,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapToolsComponent implements OnInit, OnDestroy {\r\n layers$: BehaviorSubject<Layer[]> = new BehaviorSubject([]);\r\n showAllLegendsValue$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private resolution$$: Subscription;\r\n private visibleOrInRangeLayers$$: Subscription;\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n @Input() allowShowAllLegends: boolean = false;\r\n\r\n @Input() showAllLegendsValue: boolean = false;\r\n\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() selectedTabAtOpening: string;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n @Input()\r\n get layerListControls(): LayerListControlsOptions {\r\n return this._layerListControls;\r\n }\r\n set layerListControls(value: LayerListControlsOptions) {\r\n const stateOptions = this.layerListToolState.getLayerListControls();\r\n const stateKeyword = stateOptions.keyword;\r\n const stateOnlyVisible = stateOptions.onlyVisible;\r\n const stateSortAlpha = stateOptions.sortAlpha;\r\n\r\n value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;\r\n value.onlyVisible =\r\n stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;\r\n value.sortAlpha =\r\n stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;\r\n\r\n value.onlyVisible =\r\n value.onlyVisible === undefined ? false : value.onlyVisible;\r\n value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;\r\n\r\n this._layerListControls = value;\r\n }\r\n private _layerListControls = {};\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n get visibleOrInRangeLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) => layer.visible$.value && layer.isInResolutionsRange$.value\r\n )\r\n )\r\n );\r\n }\r\n\r\n get visibleLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) => layers.filter((layer) => layer.visible$.value))\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): LayerListControlsOptions {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n @ViewChild('tabGroup', { static: true }) tabGroup;\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n\r\n constructor(\r\n public layerListToolState: LayerListToolState,\r\n private toolState: ToolState,\r\n public mapState: MapState,\r\n private searchSourceService: SearchSourceService,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.selectedTab();\r\n this.resolution$$ = combineLatest([\r\n this.map.layers$,\r\n this.map.viewController.resolution$\r\n ])\r\n .pipe(debounceTime(10))\r\n .subscribe((bunch: [Layer[], number]) => {\r\n this.layers$.next(\r\n bunch[0].filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n });\r\n\r\n if (this.allowShowAllLegends) {\r\n this.mapState.showAllLegendsValue =\r\n this.mapState.showAllLegendsValue !== undefined\r\n ? this.mapState.showAllLegendsValue\r\n : this.showAllLegendsValue || false;\r\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\r\n } else {\r\n this.showAllLegendsValue$.next(false);\r\n }\r\n\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resolution$$.unsubscribe();\r\n if (this.visibleOrInRangeLayers$$) {\r\n this.visibleOrInRangeLayers$$.unsubscribe();\r\n }\r\n }\r\n\r\n onShowAllLegends(event) {\r\n this.mapState.showAllLegendsValue = event;\r\n this.showAllLegendsValue$.next(event);\r\n }\r\n\r\n private selectedTab() {\r\n const userSelectedTab = this.layerListToolState.selectedTab$.value;\r\n if (userSelectedTab !== undefined) {\r\n this.layerListToolState.setSelectedTab(userSelectedTab);\r\n } else {\r\n if (this.selectedTabAtOpening === 'legend') {\r\n this.layerListToolState.setSelectedTab(1);\r\n } else {\r\n this.layerListToolState.setSelectedTab(0);\r\n }\r\n }\r\n }\r\n\r\n public tabChanged(tab: MatTabChangeEvent) {\r\n this.layerListToolState.setSelectedTab(tab.index);\r\n this.layers$.next(\r\n this.map.layers.filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n }\r\n\r\n onLayerListChange(appliedFilters: LayerListControlsOptions) {\r\n this.layerListToolState.setKeyword(appliedFilters.keyword);\r\n this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);\r\n this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);\r\n }\r\n\r\n showAllLegend() {\r\n if (this.layers$.getValue().length === 0) {\r\n return false;\r\n } else if (\r\n this.layers$.getValue().length !== 0 &&\r\n this.allowShowAllLegends === false\r\n ) {\r\n let visibleOrInRangeLayers;\r\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\r\n (value) => {\r\n value.length === 0\r\n ? (visibleOrInRangeLayers = false)\r\n : (visibleOrInRangeLayers = true);\r\n }\r\n );\r\n\r\n if (visibleOrInRangeLayers === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n\r\n activateTimeFilter() {\r\n this.toolState.toolbox.activateTool('activeTimeFilter');\r\n }\r\n\r\n activateOgcFilter() {\r\n this.toolState.toolbox.activateTool('activeOgcFilter');\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n\r\n isTimeFilterButton(layer): boolean {\r\n const options = layer.dataSource.options;\r\n return this.timeButton && options.timeFilterable && options.timeFilter;\r\n }\r\n\r\n isOGCFilterButton(layer): boolean {\r\n const options = layer.dataSource.options;\r\n return (\r\n this.ogcButton &&\r\n options.ogcFilters &&\r\n options.ogcFilters.enabled &&\r\n (options.ogcFilters.pushButtons ||\r\n options.ogcFilters.checkboxes ||\r\n options.ogcFilters.radioButtons ||\r\n options.ogcFilters.select ||\r\n options.ogcFilters.autocomplete ||\r\n options.ogcFilters.editable)\r\n );\r\n }\r\n\r\n isExportButton(layer: Layer): boolean {\r\n if (\r\n (layer instanceof VectorLayer && layer.exportable === true) ||\r\n (layer.dataSource.options.download &&\r\n layer.dataSource.options.download.url) ||\r\n (layer.options.workspace?.enabled &&\r\n layer.options.workspace?.workspaceId !== layer.id)\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isStyleEditButton(layer: Layer): boolean {\r\n if (layer instanceof VectorLayer) {\r\n if ((layer as VectorLayer).options?.igoStyle?.editable) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","<mat-tab-group\r\n #tabGroup\r\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\r\n (selectedTabChange)=\"tabChanged($event)\"\r\n>\r\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\r\n <igo-layer-list\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n [map]=\"map\"\r\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <igo-style-modal-layer-button\r\n *ngIf=\"isStyleEditButton(layer)\"\r\n [layer]=\"layer\"\r\n ></igo-style-modal-layer-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-time-filter-button\r\n *ngIf=\"isTimeFilterButton(layer)\"\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n (click)=\"activateTimeFilter()\"\r\n ></igo-time-filter-button>\r\n <igo-ogc-filter-button\r\n *ngIf=\"isOGCFilterButton(layer)\"\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n (click)=\"activateOgcFilter()\"\r\n ></igo-ogc-filter-button>\r\n <igo-export-button\r\n *ngIf=\"isExportButton(layer)\"\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\r\n <igo-layer-legend-list\r\n *ngIf=\"showAllLegend()\"\r\n igoLayerLegendListBinding\r\n [allowShowAllLegends]=\"allowShowAllLegends\"\r\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\r\n (allLegendsShown)=\"onShowAllLegends($event)\"\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend-list>\r\n <ng-template\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n ></ng-template>\r\n\r\n <p\r\n class=\"map-empty mat-typography\"\r\n *ngIf=\"\r\n !allowShowAllLegends &&\r\n (layers$ | async).length !== 0 &&\r\n (visibleOrInRangeLayers$ | async).length === 0\r\n \"\r\n >\r\n {{\r\n (visibleLayers$ | async).length\r\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\r\n : ('igo.integration.mapTool.noLayersVisible' | translate)\r\n }}\r\n </p>\r\n </mat-tab>\r\n\r\n <ng-template #emptyLayers>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n </ng-template>\r\n</mat-tab-group>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { AdvancedMapToolComponent } from './advanced-map-tool/advanced-map-tool.component';\r\nimport { MapDetailsToolComponent } from './map-details-tool/map-details-tool.component';\r\nimport { MapLegendToolComponent } from './map-legend/map-legend-tool.component';\r\nimport { MapProximityToolComponent } from './map-proximity-tool/map-proximity-tool.component';\r\nimport { MapToolComponent } from './map-tool/map-tool.component';\r\nimport { MapToolsComponent } from './map-tools/map-tools.component';\r\n\r\n/**\r\n * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n ],\r\n exports: [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n ]\r\n})\r\nexport class IgoAppMapModule {\r\n static forRoot(): ModuleWithProviders<IgoAppMapModule> {\r\n return {\r\n ngModule: IgoAppMapModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\n\nimport { FeatureStore, FeatureWithMeasure } from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MeasureState {\n /**\n * Store that holds the measures\n */\n public store: FeatureStore<FeatureWithMeasure>;\n\n constructor(private mapState: MapState) {\n this.store = new FeatureStore<FeatureWithMeasure>([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layers$.subscribe((layers) => {\n if (\n layers.filter((l) => l.id?.startsWith('igo-measures-')).length === 0\n ) {\n this.store.deleteMany(this.store.all());\n this.mapState.map.ol\n .getOverlays()\n .getArray()\n .filter((overlay) =>\n (overlay as any).options.className.includes('igo-map-tooltip')\n )\n .map((overlay) => this.mapState.map.ol.removeOverlay(overlay));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n FeatureStore,\r\n FeatureWithMeasure,\r\n IgoMap,\r\n MeasurerComponent\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { MeasureState } from '../measure.state';\r\n\r\n/**\r\n * Tool to measure lengths and areas\r\n */\r\n@ToolComponent({\r\n name: 'measurer',\r\n title: 'igo.integration.tools.measurer',\r\n icon: 'ruler'\r\n})\r\n@Component({\r\n selector: 'igo-measurer-tool',\r\n templateUrl: './measurer-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [MeasurerComponent]\r\n})\r\nexport class MeasurerToolComponent {\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get store(): FeatureStore<FeatureWithMeasure> {\r\n return this.measureState.store;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private measureState: MeasureState,\r\n private mapState: MapState\r\n ) {}\r\n}\r\n","<igo-measurer [store]=\"store\" [map]=\"map\"></igo-measurer>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MeasurerToolComponent } from './measurer-tool.component';\r\n\r\n/**\r\n * @deprecated import the MeasurerToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [MeasurerToolComponent],\r\n exports: [MeasurerToolComponent]\r\n})\r\nexport class IgoAppMeasurerToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppMeasurerToolModule } from './measurer-tool/measurer-tool.module';\r\n\r\n/**\r\n * @deprecated import the MeasurerToolComponent directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppMeasurerToolModule]\r\n})\r\nexport class IgoAppMeasureModule {}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, PrintComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\n\r\n@ToolComponent({\r\n name: 'print',\r\n title: 'igo.integration.tools.print',\r\n icon: 'printer'\r\n})\r\n@Component({\r\n selector: 'igo-print-tool',\r\n templateUrl: './print-tool.component.html',\r\n standalone: true,\r\n imports: [PrintComponent]\r\n})\r\nexport class PrintToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(private mapState: MapState) {}\r\n}\r\n","<igo-print [map]=\"map\"></igo-print>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { PrintToolComponent } from './print-tool/print-tool.component';\r\n\r\n/**\r\n * @deprecated import the PrintToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [PrintToolComponent],\r\n exports: [PrintToolComponent]\r\n})\r\nexport class IgoAppPrintModule {\r\n static forRoot(): ModuleWithProviders<IgoAppPrintModule> {\r\n return {\r\n ngModule: IgoAppPrintModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AdvancedMapToolComponent } from './advanced-map-tool';\r\nimport { MapDetailsToolComponent } from './map-details-tool';\r\nimport { MapLegendToolComponent } from './map-legend';\r\nimport { MapProximityToolComponent } from './map-proximity-tool';\r\nimport { MapToolComponent } from './map-tool';\r\nimport { MapToolsComponent } from './map-tools';\r\n\r\nexport * from './advanced-map-tool';\r\nexport * from './map-proximity-tool';\r\nexport * from './map-details-tool';\r\nexport * from './map-legend';\r\nexport * from './map-tool';\r\nexport * from './map-tools';\r\nexport * from './map.state';\r\nexport * from './map-proximity.state';\r\n\r\nexport const INTEGRATION_MAP_DIRECTIVES = [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n] as const;\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport {\r\n EntityRecord,\r\n EntityStore,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreStrategyFuncOptions\r\n} from '@igo2/common';\r\nimport { ConfigService, StorageService } from '@igo2/core';\r\nimport {\r\n CommonVectorStyleOptions,\r\n Feature,\r\n FeatureMotion,\r\n FeatureStore,\r\n FeatureWorkspace,\r\n OverlayStyleOptions,\r\n SearchResult,\r\n SearchSource,\r\n SearchSourceService\r\n} from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport { MapState } from '../map';\r\nimport { WorkspaceState } from '../workspace/workspace.state';\r\n\r\n/**\r\n * Define the FeatureMotion to apply when adding the SearchResult to the map as an overlay.\r\n */\r\nexport interface SearchFeatureMotion {\r\n selected?: FeatureMotion;\r\n focus?: FeatureMotion;\r\n}\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SearchState {\r\n public searchLayerStores: FeatureStore<Feature>[] = [];\r\n public searchOverlayStyle: CommonVectorStyleOptions = {};\r\n public searchOverlayStyleSelection: CommonVectorStyleOptions = {};\r\n public searchOverlayStyleFocus: CommonVectorStyleOptions = {};\r\n\r\n public focusedOrResolution$$: Subscription;\r\n public selectedOrResolution$$: Subscription;\r\n\r\n /**\r\n * Default feature motion are:\r\n * on selection = FeatureMotion.Default and\r\n * on focus = FeatureMotion.None\r\n */\r\n public featureMotion: SearchFeatureMotion = {\r\n selected: FeatureMotion.Default,\r\n focus: FeatureMotion.None\r\n };\r\n\r\n readonly searchTermSplitter$: BehaviorSubject<string> = new BehaviorSubject(\r\n '|'\r\n );\r\n\r\n readonly searchTerm$: BehaviorSubject<string> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n readonly searchType$: BehaviorSubject<string> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n readonly searchDisabled$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n false\r\n );\r\n\r\n readonly searchResultsGeometryEnabled$: BehaviorSubject<boolean> =\r\n new BehaviorSubject(false);\r\n\r\n readonly searchSettingsChange$: BehaviorSubject<boolean> =\r\n new BehaviorSubject(undefined);\r\n\r\n readonly selectedResult$: BehaviorSubject<SearchResult> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n /**\r\n * Store that holds the search results\r\n */\r\n readonly store = new EntityStore<SearchResult>([]);\r\n\r\n /**\r\n * Search types currently enabled in the search source service\r\n */\r\n get searchTypes(): string[] {\r\n return this.searchSourceService\r\n .getEnabledSources()\r\n .map((source: SearchSource) => (source.constructor as any).type);\r\n }\r\n\r\n constructor(\r\n private searchSourceService: SearchSourceService,\r\n private storageService: StorageService,\r\n private workspaceState: WorkspaceState,\r\n private configService: ConfigService,\r\n private mapState: MapState\r\n ) {\r\n const searchOverlayStyle: OverlayStyleOptions =\r\n this.configService.getConfig('searchOverlayStyle');\r\n if (searchOverlayStyle) {\r\n this.searchOverlayStyle = searchOverlayStyle.base;\r\n this.searchOverlayStyleSelection = searchOverlayStyle.selection;\r\n this.searchOverlayStyleFocus = searchOverlayStyle.focus;\r\n }\r\n\r\n const searchResultsGeometryEnabled = this.storageService.get(\r\n 'searchResultsGeometryEnabled'\r\n ) as boolean;\r\n if (searchResultsGeometryEnabled) {\r\n this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);\r\n }\r\n this.store.addStrategy(this.createCustomFilterTermStrategy(), false);\r\n\r\n const wksSource = this.searchSourceService\r\n .getSources()\r\n .find((source) => source.getId() === 'workspace');\r\n this.workspaceState.store.entities$.subscribe((e) => {\r\n const searchableWks = e.filter(\r\n (fw) =>\r\n fw instanceof FeatureWorkspace &&\r\n fw.layer.options.workspace.searchIndexEnabled\r\n );\r\n this.searchSourceService.setWorkspaces(wksSource, searchableWks);\r\n });\r\n this.monitorLayerDeletion();\r\n }\r\n\r\n private monitorLayerDeletion() {\r\n this.mapState.map.layers$.subscribe((layers) => {\r\n this.searchLayerStores.forEach((store) => {\r\n let layer = layers.find((l) => l.id === store.layer.id);\r\n if (!layer) {\r\n const index = this.searchLayerStores.indexOf(store);\r\n this.searchLayerStores.splice(index, 1);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private createCustomFilterTermStrategy(): EntityStoreFilterCustomFuncStrategy {\r\n const filterClauseFunc = (record: EntityRecord<SearchResult>) => {\r\n return record.entity.meta.score === 100;\r\n };\r\n return new EntityStoreFilterCustomFuncStrategy({\r\n filterClauseFunc\r\n } as EntityStoreStrategyFuncOptions);\r\n }\r\n\r\n /**\r\n * Activate custom strategy\r\n *\r\n */\r\n activateCustomFilterTermStrategy() {\r\n const strategy = this.store.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (strategy !== undefined) {\r\n strategy.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate custom strategy\r\n *\r\n */\r\n deactivateCustomFilterTermStrategy() {\r\n const strategy = this.store.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (strategy !== undefined) {\r\n strategy.deactivate();\r\n }\r\n }\r\n\r\n enableSearch() {\r\n this.searchDisabled$.next(false);\r\n }\r\n\r\n disableSearch() {\r\n this.searchDisabled$.next(true);\r\n }\r\n\r\n setSearchTerm(searchTerm: string) {\r\n this.searchTerm$.next(searchTerm);\r\n }\r\n\r\n setSearchType(searchType: string) {\r\n this.searchSourceService.enableSourcesByType(searchType);\r\n this.searchType$.next(searchType);\r\n }\r\n\r\n setSearchSettingsChange() {\r\n this.searchSettingsChange$.next(true);\r\n }\r\n\r\n setSelectedResult(result: SearchResult) {\r\n this.selectedResult$.next(result);\r\n }\r\n\r\n setSearchResultsGeometryStatus(value) {\r\n this.storageService.set('searchResultsGeometryEnabled', value);\r\n this.searchResultsGeometryEnabled$.next(value);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n HostListener,\r\n OnDestroy,\r\n OnInit,\r\n Self\r\n} from '@angular/core';\r\n\r\nimport { SearchBarComponent } from '@igo2/geo';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { SearchState } from '../search.state';\r\n\r\n@Directive({\r\n selector: '[igoSearchBarBinding]',\r\n standalone: true\r\n})\r\nexport class SearchBarBindingDirective implements OnInit, OnDestroy {\r\n get searchTerm(): string {\r\n return this.searchState.searchTerm$.value;\r\n }\r\n get searchType(): string {\r\n return this.searchState.searchType$.value;\r\n }\r\n\r\n private searchTerm$$: Subscription;\r\n private searchType$$: Subscription;\r\n private searchDisabled$$: Subscription;\r\n\r\n constructor(\r\n @Self() private component: SearchBarComponent,\r\n private searchState: SearchState\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\r\n (searchTerm: string) => {\r\n if (searchTerm !== undefined && searchTerm !== null) {\r\n this.component.setTerm(searchTerm);\r\n }\r\n }\r\n );\r\n\r\n this.searchType$$ = this.searchState.searchType$.subscribe(\r\n (searchType: string) => {\r\n if (searchType !== undefined && searchType !== null) {\r\n this.component.setSearchType(searchType);\r\n }\r\n }\r\n );\r\n\r\n this.searchDisabled$$ = this.searchState.searchDisabled$.subscribe(\r\n (searchDisabled: boolean) => {\r\n this.component.disabled = searchDisabled;\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.searchTerm$$.unsubscribe();\r\n this.searchType$$.unsubscribe();\r\n this.searchDisabled$$.unsubscribe();\r\n }\r\n\r\n @HostListener('searchTermChange', ['$event'])\r\n onSearchTermChange(searchTerm?: string) {\r\n if (searchTerm !== this.searchTerm) {\r\n this.searchState.setSearchTerm(searchTerm);\r\n }\r\n }\r\n\r\n @HostListener('searchTypeChange', ['$event'])\r\n onSearchTypeChange(searchType?: string) {\r\n if (searchType !== this.searchType) {\r\n this.searchState.setSearchType(searchType);\r\n }\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport {\r\n EntityState,\r\n EntityStore,\r\n FlexibleComponent,\r\n FlexibleState,\r\n PanelComponent,\r\n SanitizeHtmlPipe,\r\n ToolComponent,\r\n getEntityTitle\r\n} from '@igo2/common';\r\nimport { ConfigService } from '@igo2/core';\r\nimport {\r\n FEATURE,\r\n Feature,\r\n FeatureDetailsComponent,\r\n FeatureMotion,\r\n FeatureStore,\r\n IgoMap,\r\n Research,\r\n SearchResult,\r\n SearchResultAddButtonComponent,\r\n SearchResultsComponent,\r\n computeOlFeaturesExtent,\r\n featureFromOl,\r\n featureToOl,\r\n featuresAreOutOfView,\r\n featuresAreTooDeepInView,\r\n getCommonVectorSelectedStyle,\r\n getCommonVectorStyle,\r\n moveToOlFeatures,\r\n roundCoordTo\r\n} from '@igo2/geo';\r\n\r\nimport olFeature from 'ol/Feature';\r\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\r\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\r\nimport olPoint from 'ol/geom/Point';\r\nimport * as olProj from 'ol/proj';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport pointOnFeature from '@turf/point-on-feature';\r\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport { DirectionState } from '../../directions/directions.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { SearchState } from '../search.state';\r\n\r\n/**\r\n * Tool to browse the search results\r\n */\r\n@ToolComponent({\r\n name: 'searchResults',\r\n title: 'igo.integration.tools.searchResults',\r\n icon: 'magnify'\r\n})\r\n@Component({\r\n selector: 'igo-search-results-tool',\r\n templateUrl: './search-results-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n FlexibleComponent,\r\n SearchResultsComponent,\r\n SearchResultAddButtonComponent,\r\n PanelComponent,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatBadgeModule,\r\n FeatureDetailsComponent,\r\n AsyncPipe,\r\n TranslateModule,\r\n SanitizeHtmlPipe\r\n ]\r\n})\r\nexport class SearchResultsToolComponent implements OnInit, OnDestroy {\r\n /**\r\n * to show hide results icons\r\n */\r\n @Input() showIcons: boolean = true;\r\n\r\n /**\r\n * Determine the top panel default state\r\n */\r\n @Input() topPanelStateDefault: string = 'expanded';\r\n\r\n private hasFeatureEmphasisOnSelection: boolean = false;\r\n public saveSearchResultInLayer: boolean = false;\r\n\r\n private showResultsGeometries$$: Subscription;\r\n private getRoute$$: Subscription;\r\n private shownResultsGeometries: Feature[] = [];\r\n private shownResultsEmphasisGeometries: Feature[] = [];\r\n private focusedResult$: BehaviorSubject<SearchResult> = new BehaviorSubject(\r\n undefined\r\n );\r\n public isSelectedResultOutOfView$ = new BehaviorSubject(false);\r\n private isSelectedResultOutOfView$$: Subscription;\r\n private abstractFocusedResult: Feature;\r\n private abstractSelectedResult: Feature;\r\n\r\n public debouncedEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\r\n private debouncedEmpty$$: Subscription;\r\n\r\n /**\r\n * Store holding the search results\r\n * @internal\r\n */\r\n get store(): EntityStore<SearchResult> {\r\n return this.searchState.store;\r\n }\r\n\r\n /**\r\n * Map to display the results on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get featureTitle(): string {\r\n return this.feature ? getEntityTitle(this.feature) : undefined;\r\n }\r\n\r\n get feature$(): Observable<Feature> {\r\n return this.store.stateView\r\n .firstBy$((e) => e.state.focused)\r\n .pipe(\r\n map(\r\n (element) =>\r\n (this.feature = element\r\n ? (element.entity.data as Feature)\r\n : undefined)\r\n )\r\n );\r\n }\r\n\r\n public feature: Feature;\r\n\r\n public term = '';\r\n private searchTerm$$: Subscription;\r\n\r\n public settingsChange$ = new BehaviorSubject<boolean>(undefined);\r\n\r\n public topPanelState$ = new BehaviorSubject<FlexibleState>('initial');\r\n private topPanelState$$: Subscription;\r\n\r\n @Input()\r\n set topPanelState(value: FlexibleState) {\r\n this.topPanelState$.next(value);\r\n }\r\n get topPanelState(): FlexibleState {\r\n return this.topPanelState$.value;\r\n }\r\n\r\n get termSplitter(): string {\r\n return this.searchState.searchTermSplitter$.value;\r\n }\r\n\r\n private format = new olFormatGeoJSON();\r\n\r\n get stores(): FeatureStore<Feature>[] {\r\n return this.searchState.searchLayerStores;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private searchState: SearchState,\r\n private elRef: ElementRef,\r\n public toolState: ToolState,\r\n private directionState: DirectionState,\r\n configService: ConfigService\r\n ) {\r\n this.hasFeatureEmphasisOnSelection = configService.getConfig(\r\n 'hasFeatureEmphasisOnSelection'\r\n );\r\n this.saveSearchResultInLayer = configService.getConfig(\r\n 'saveSearchResultInLayer'\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\r\n (searchTerm: string) => {\r\n if (\r\n searchTerm !== undefined &&\r\n searchTerm !== null &&\r\n searchTerm !== ''\r\n ) {\r\n this.term = searchTerm;\r\n this.debouncedEmpty$.next(false);\r\n } else if (searchTerm === '') {\r\n this.debouncedEmpty$.next(true);\r\n }\r\n }\r\n );\r\n\r\n for (const res of this.store.stateView.all$().value) {\r\n if (this.store.state.get(res.entity).selected === true) {\r\n this.topPanelState = 'expanded';\r\n }\r\n }\r\n\r\n this.searchState.searchSettingsChange$.subscribe(() => {\r\n this.settingsChange$.next(true);\r\n });\r\n\r\n this.topPanelState$$ = this.topPanelState$.subscribe(() => {\r\n const igoList = this.computeElementRef()[0];\r\n const selected = this.computeElementRef()[1];\r\n if (selected) {\r\n setTimeout(() => {\r\n // To be sure the flexible component has been displayed yet\r\n if (!this.isScrolledIntoView(igoList, selected)) {\r\n this.adjustTopPanel(igoList, selected);\r\n }\r\n }, FlexibleComponent.transitionTime + 50);\r\n }\r\n });\r\n\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n if (!this.searchState.focusedOrResolution$$) {\r\n this.searchState.focusedOrResolution$$ = combineLatest([\r\n this.focusedResult$,\r\n this.map.viewController.resolution$\r\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\r\n this.buildResultEmphasis(bunch[0], 'focused')\r\n );\r\n }\r\n\r\n if (!this.searchState.selectedOrResolution$$) {\r\n this.searchState.selectedOrResolution$$ = combineLatest([\r\n this.searchState.selectedResult$,\r\n this.map.viewController.resolution$\r\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\r\n this.buildResultEmphasis(bunch[0], 'selected')\r\n );\r\n }\r\n }\r\n this.monitorResultOutOfView();\r\n\r\n this.showResultsGeometries$$ = combineLatest([\r\n this.searchState.searchResultsGeometryEnabled$,\r\n this.store.stateView.all$(),\r\n this.focusedResult$,\r\n this.searchState.selectedResult$,\r\n this.searchState.searchTerm$,\r\n this.map.viewController.resolution$\r\n ]).subscribe(\r\n (\r\n bunch: [\r\n boolean,\r\n { entity: SearchResult; state: EntityState }[],\r\n SearchResult,\r\n SearchResult,\r\n string,\r\n number\r\n ]\r\n ) => {\r\n const searchResultsGeometryEnabled = bunch[0];\r\n const searchResults = bunch[1];\r\n\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n this.clearFeatureEmphasis('shown');\r\n }\r\n this.shownResultsGeometries.map((result) =>\r\n this.map.queryResultsOverlay.removeFeature(result)\r\n );\r\n const featureToHandleGeom = searchResults.filter(\r\n (result) =>\r\n result.entity.meta.dataType === FEATURE &&\r\n result.entity.data.geometry &&\r\n !result.state.selected &&\r\n !result.state.focused\r\n );\r\n\r\n featureToHandleGeom.map((result) => {\r\n if (searchResultsGeometryEnabled) {\r\n result.entity.data.meta.style = getCommonVectorStyle(\r\n Object.assign(\r\n {},\r\n {\r\n feature: result.entity.data as Feature | olFeature<OlGeometry>\r\n },\r\n this.searchState.searchOverlayStyle,\r\n result.entity.style?.base ? result.entity.style.base : {}\r\n )\r\n );\r\n this.shownResultsGeometries.push(result.entity.data as Feature);\r\n this.map.queryResultsOverlay.addFeature(\r\n result.entity.data as Feature,\r\n FeatureMotion.None\r\n );\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n this.buildResultEmphasis(\r\n result.entity as SearchResult<Feature>,\r\n 'shown'\r\n );\r\n }\r\n }\r\n });\r\n }\r\n );\r\n\r\n this.debouncedEmpty$$ = this.store.stateView.empty$\r\n .pipe(debounceTime(1500))\r\n .subscribe((empty) => this.debouncedEmpty$.next(empty));\r\n }\r\n\r\n private monitorResultOutOfView() {\r\n this.isSelectedResultOutOfView$$ = combineLatest([\r\n this.map.viewController.state$,\r\n this.searchState.selectedResult$\r\n ])\r\n .pipe(debounceTime(100))\r\n .subscribe((bunch) => {\r\n const selectedResult = bunch[1] as SearchResult<Feature>;\r\n if (!selectedResult) {\r\n this.isSelectedResultOutOfView$.next(false);\r\n return;\r\n }\r\n if (selectedResult.data.geometry) {\r\n const selectedOlFeature = featureToOl(\r\n selectedResult.data,\r\n this.map.projection\r\n );\r\n const selectedOlFeatureExtent = computeOlFeaturesExtent(\r\n [selectedOlFeature],\r\n this.map.viewController.getOlProjection()\r\n );\r\n this.isSelectedResultOutOfView$.next(\r\n featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent)\r\n );\r\n }\r\n });\r\n }\r\n\r\n private buildResultEmphasis(\r\n result: SearchResult<Feature>,\r\n trigger: 'selected' | 'focused' | 'shown' | undefined\r\n ) {\r\n if (trigger !== 'shown') {\r\n this.clearFeatureEmphasis(trigger);\r\n }\r\n if (!result || !result.data.geometry) {\r\n return;\r\n }\r\n const myOlFeature = featureToOl(result.data, this.map.projection);\r\n const olGeometry = myOlFeature.getGeometry();\r\n if (\r\n featuresAreTooDeepInView(\r\n this.map.viewController,\r\n olGeometry.getExtent() as [number, number, number, number],\r\n 0.0025\r\n )\r\n ) {\r\n const extent = olGeometry.getExtent();\r\n const x = extent[0] + (extent[2] - extent[0]) / 2;\r\n const y = extent[1] + (extent[3] - extent[1]) / 2;\r\n const feature1 = new olFeature({\r\n name: `${trigger}AbstractResult'`,\r\n geometry: new olPoint([x, y])\r\n });\r\n const abstractResult = featureFromOl(feature1, this.map.projection);\r\n\r\n let computedStyle;\r\n let zIndexOffset = 0;\r\n\r\n switch (trigger) {\r\n case 'focused':\r\n computedStyle = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n zIndexOffset = 2;\r\n break;\r\n case 'shown':\r\n computedStyle = getCommonVectorStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyle,\r\n result.style?.base ? result.style.base : {}\r\n )\r\n );\r\n break;\r\n case 'selected':\r\n computedStyle = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyleSelection,\r\n result.style?.selection ? result.style.selection : {}\r\n )\r\n );\r\n zIndexOffset = 1;\r\n break;\r\n }\r\n abstractResult.meta.style = computedStyle;\r\n abstractResult.meta.style.setZIndex(2000 + zIndexOffset);\r\n this.map.searchResultsOverlay.addFeature(\r\n abstractResult,\r\n this.searchState.featureMotion.focus\r\n );\r\n if (trigger === 'focused') {\r\n this.abstractFocusedResult = abstractResult;\r\n }\r\n if (trigger === 'selected') {\r\n this.abstractSelectedResult = abstractResult;\r\n }\r\n if (trigger === 'shown') {\r\n this.shownResultsEmphasisGeometries.push(abstractResult);\r\n }\r\n } else {\r\n this.clearFeatureEmphasis(trigger);\r\n }\r\n }\r\n\r\n private clearFeatureEmphasis(trigger: 'selected' | 'focused' | 'shown') {\r\n if (trigger === 'focused' && this.abstractFocusedResult) {\r\n this.map.searchResultsOverlay.removeFeature(this.abstractFocusedResult);\r\n this.abstractFocusedResult = undefined;\r\n }\r\n if (trigger === 'selected' && this.abstractSelectedResult) {\r\n this.map.searchResultsOverlay.removeFeature(this.abstractSelectedResult);\r\n this.abstractSelectedResult = undefined;\r\n }\r\n if (trigger === 'shown') {\r\n this.shownResultsEmphasisGeometries.map((shownResult) =>\r\n this.map.searchResultsOverlay.removeFeature(shownResult)\r\n );\r\n this.shownResultsEmphasisGeometries = [];\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.topPanelState$$.unsubscribe();\r\n this.searchTerm$$.unsubscribe();\r\n if (this.isSelectedResultOutOfView$$) {\r\n this.isSelectedResultOutOfView$$.unsubscribe();\r\n }\r\n if (this.showResultsGeometries$$) {\r\n this.showResultsGeometries$$.unsubscribe();\r\n }\r\n if (this.getRoute$$) {\r\n this.getRoute$$.unsubscribe();\r\n }\r\n if (this.debouncedEmpty$$) {\r\n this.debouncedEmpty$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map when it's being focused\r\n * @internal\r\n * @param result A search result that could be a feature\r\n */\r\n onResultFocus(result: SearchResult) {\r\n this.focusedResult$.next(result);\r\n if (result.meta.dataType === FEATURE && result.data.geometry) {\r\n result.data.meta.style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: result.data as Feature | olFeature<OlGeometry> },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n\r\n const feature =\r\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\r\n result.meta.id\r\n );\r\n if (feature) {\r\n feature.setStyle(result.data.meta.style);\r\n return;\r\n }\r\n this.map.searchResultsOverlay.addFeature(\r\n result.data as Feature,\r\n this.searchState.featureMotion.focus\r\n );\r\n }\r\n }\r\n\r\n onResultUnfocus(result: SearchResult) {\r\n this.focusedResult$.next(undefined);\r\n if (result.meta.dataType !== FEATURE) {\r\n return;\r\n }\r\n\r\n if (this.store.state.get(result).selected === true) {\r\n const feature =\r\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\r\n result.meta.id\r\n );\r\n if (feature) {\r\n const style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: result.data as Feature | olFeature<OlGeometry> },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n feature.setStyle(style);\r\n }\r\n return;\r\n }\r\n this.map.searchResultsOverlay.removeFeature(result.data as Feature);\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map when it's being selected\r\n * @internal\r\n * @param result A search result that could be a feature or some layer options\r\n */\r\n onResultSelect(result: SearchResult) {\r\n this.map.searchResultsOverlay.dataSource.ol.clear();\r\n this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);\r\n this.searchState.setSelectedResult(result);\r\n\r\n if (this.topPanelState === 'initial') {\r\n if (this.topPanelStateDefault !== 'collapsed') {\r\n this.topPanelState = 'expanded';\r\n } else {\r\n this.topPanelState = 'collapsed';\r\n }\r\n }\r\n\r\n if (this.topPanelState === 'expanded') {\r\n const igoList = this.computeElementRef()[0];\r\n const selected = this.computeElementRef()[1];\r\n if (!this.isScrolledIntoView(igoList, selected)) {\r\n this.adjustTopPanel(igoList, selected);\r\n }\r\n }\r\n }\r\n\r\n onSearch(event: { research: Research; results: SearchResult[] }) {\r\n const results = event.results;\r\n const newResults = this.store.entities$.value\r\n .filter((result: SearchResult) => result.source !== event.research.source)\r\n .concat(results);\r\n\r\n this.store.load(newResults);\r\n\r\n for (const res of this.store.all()) {\r\n if (\r\n this.store.state.get(res).focused === true &&\r\n this.store.state.get(res).selected !== true\r\n ) {\r\n this.store.state.update(res, { focused: false }, true);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const igoList = this.elRef.nativeElement.querySelector('igo-list');\r\n let moreResults;\r\n event.research.request.subscribe((source) => {\r\n if (!source[0] || !source[0].source) {\r\n moreResults = null;\r\n } else if (source[0].source.getId() === 'icherche') {\r\n moreResults = igoList.querySelector('.icherche .moreResults');\r\n } else if (source[0].source.getId() === 'ilayer') {\r\n moreResults = igoList.querySelector('.ilayer .moreResults');\r\n } else if (source[0].source.getId() === 'nominatim') {\r\n moreResults = igoList.querySelector('.nominatim .moreResults');\r\n } else {\r\n moreResults = igoList.querySelector(\r\n '.' + source[0].source.getId() + ' .moreResults'\r\n );\r\n }\r\n\r\n if (\r\n moreResults !== null &&\r\n !this.isScrolledIntoView(igoList, moreResults)\r\n ) {\r\n igoList.scrollTop =\r\n moreResults.offsetTop +\r\n moreResults.offsetHeight -\r\n igoList.clientHeight;\r\n }\r\n });\r\n }, 250);\r\n }\r\n\r\n computeElementRef() {\r\n const items = document.getElementsByTagName('igo-search-results-item');\r\n const igoList =\r\n this.elRef.nativeElement.getElementsByTagName('igo-list')[0];\r\n let selectedItem;\r\n // eslint-disable-next-line\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].className.includes('igo-list-item-selected')) {\r\n selectedItem = items[i];\r\n }\r\n }\r\n return [igoList, selectedItem];\r\n }\r\n\r\n adjustTopPanel(elemSource, elem) {\r\n if (!this.isScrolledIntoView(elemSource, elem)) {\r\n elemSource.scrollTop =\r\n elem.offsetTop +\r\n elem.children[0].offsetHeight -\r\n elemSource.clientHeight;\r\n }\r\n }\r\n\r\n toggleTopPanel(event?: MouseEvent) {\r\n if (event && (event.target as any)?.className !== 'igo-panel-title') {\r\n return;\r\n } else {\r\n if (this.topPanelState === 'expanded') {\r\n this.topPanelState = 'collapsed';\r\n } else {\r\n this.topPanelState = 'expanded';\r\n }\r\n }\r\n }\r\n\r\n zoomToFeatureExtent() {\r\n if (this.feature.geometry) {\r\n const localOlFeature = this.format.readFeature(this.feature, {\r\n dataProjection: this.feature.projection,\r\n featureProjection: this.map.projectionCode\r\n });\r\n moveToOlFeatures(\r\n this.map.viewController,\r\n [localOlFeature],\r\n FeatureMotion.Zoom\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map overlay\r\n * @param result A search result that could be a feature\r\n * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay\r\n */\r\n private tryAddFeatureToMap(\r\n result: SearchResult,\r\n motion: FeatureMotion = FeatureMotion.Default\r\n ) {\r\n if (result.meta.dataType !== FEATURE) {\r\n return undefined;\r\n }\r\n const feature = (result as SearchResult<Feature>).data;\r\n\r\n // Somethimes features have no geometry. It happens with some GetFeatureInfo\r\n if (!feature.geometry) {\r\n return;\r\n }\r\n\r\n feature.meta.style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature },\r\n this.searchState.searchOverlayStyleSelection,\r\n result.style?.selection ? result.style.selection : {}\r\n )\r\n );\r\n\r\n this.map.searchResultsOverlay.addFeature(feature, motion);\r\n }\r\n\r\n isScrolledIntoView(elemSource, elem) {\r\n const padding = 6;\r\n const docViewTop = elemSource.scrollTop;\r\n const docViewBottom = docViewTop + elemSource.clientHeight;\r\n\r\n const elemTop = elem.offsetTop;\r\n const elemBottom = elemTop + elem.clientHeight + padding;\r\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\r\n }\r\n\r\n getRoute() {\r\n this.toolState.toolbox.activateTool('directions');\r\n this.directionState.stopsStore.clearStops();\r\n setTimeout(() => {\r\n let routingCoordLoaded = false;\r\n if (this.getRoute$$) {\r\n this.getRoute$$.unsubscribe();\r\n }\r\n this.getRoute$$ =\r\n this.directionState.stopsStore.storeInitialized$.subscribe(\r\n (init: boolean) => {\r\n if (\r\n this.directionState.stopsStore.storeInitialized$.value &&\r\n !routingCoordLoaded\r\n ) {\r\n routingCoordLoaded = true;\r\n const stop = this.directionState.stopsStore\r\n .all()\r\n .find((e) => e.position === 1);\r\n let coord;\r\n if (this.feature.geometry) {\r\n if (this.feature.geometry.type === 'Point') {\r\n coord = [\r\n this.feature.geometry.coordinates[0],\r\n this.feature.geometry.coordinates[1]\r\n ];\r\n } else {\r\n const point = pointOnFeature(this.feature.geometry);\r\n coord = [\r\n point.geometry.coordinates[0],\r\n point.geometry.coordinates[1]\r\n ];\r\n }\r\n }\r\n stop.text = this.featureTitle;\r\n stop.coordinates = coord;\r\n this.directionState.stopsStore.update(stop);\r\n if (this.map.geolocationController.position$.value) {\r\n const currentPos =\r\n this.map.geolocationController.position$.value;\r\n const stop = this.directionState.stopsStore\r\n .all()\r\n .find((e) => e.position === 0);\r\n const currentCoord = olProj.transform(\r\n currentPos.position,\r\n currentPos.projection,\r\n 'EPSG:4326'\r\n );\r\n const coord: [number, number] = roundCoordTo(\r\n [currentCoord[0], currentCoord[1]],\r\n 6\r\n );\r\n stop.text = coord.join(',');\r\n stop.coordinates = coord;\r\n this.directionState.stopsStore.update(stop);\r\n }\r\n }\r\n }\r\n );\r\n }, 250);\r\n }\r\n}\r\n","<div\n *ngIf=\"(!store || store.stateView.empty) && (debouncedEmpty$ | async)\"\n style=\"margin: 10px\"\n>\n <section class=\"mat-typography\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples' | translate | sanitizeHtml\n \"\n ></div>\n </section>\n</div>\n\n<igo-flexible\n *ngIf=\"(debouncedEmpty$ | async) === false\"\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 58px)\"\n collapsedMobile=\"calc(100% - 58px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"(feature$ | async) ? topPanelState : 'initial'\"\n>\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n >\n </igo-search-add-button>\n </ng-template>\n </igo-search-results>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n <igo-panel\n [title]=\"featureTitle\"\n *ngIf=\"feature$ | async\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon\n [svgIcon]=\"\n (topPanelState$ | async) === 'collapsed' ? 'arrow-up' : 'arrow-down'\n \"\n ></mat-icon>\n </button>\n\n <button\n *ngIf=\"feature.geometry\"\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"(isSelectedResultOutOfView$ | async) === false\"\n svgIcon=\"magnify-plus-outline\"\n ></mat-icon>\n </button>\n\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature$ | async\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n >\n </igo-feature-details>\n </igo-panel>\n </div>\n</igo-flexible>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\r\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\r\n\r\n/**\r\n * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [SearchBarBindingDirective, SearchResultsToolComponent],\r\n exports: [SearchBarBindingDirective, SearchResultsToolComponent]\r\n})\r\nexport class IgoAppSearchModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { WorkspaceButtonComponent } from './workspace-button/workspace-button.component';\r\n\r\n/**\r\n * @deprecated import the WorkspaceButtonComponent directly\r\n */\r\n@NgModule({\r\n imports: [WorkspaceButtonComponent],\r\n exports: [WorkspaceButtonComponent]\r\n})\r\nexport class IgoAppWorkspaceModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppAboutModule } from './about/about.module';\r\nimport { IgoAppCatalogModule } from './catalog/catalog.module';\r\nimport { IgoAppContextModule } from './context/context.module';\r\nimport { IgoAppDirectionsModule } from './directions/directions.module';\r\nimport { IgoAppDrawModule } from './draw/draw.module';\r\nimport { IgoAppFilterModule } from './filter/filter.module';\r\nimport { IgoAppGeometryFormModule } from './geometry-form/geometry-form.module';\r\nimport { IgoAppImportExportModule } from './import-export/import-export.module';\r\nimport { IgoAppMapModule } from './map/map.module';\r\nimport { IgoAppMeasureModule } from './measure/measure.module';\r\nimport { IgoAppPrintModule } from './print/print.module';\r\nimport { IgoAppSearchModule } from './search/search.module';\r\nimport { IgoAppWorkspaceModule } from './workspace/workspace.module';\r\n\r\n/**\r\n * @deprecated import the components directly\r\n */\r\n@NgModule({\r\n imports: [],\r\n declarations: [],\r\n exports: [\r\n IgoAppContextModule,\r\n IgoAppCatalogModule,\r\n IgoAppDirectionsModule,\r\n IgoAppDrawModule,\r\n IgoAppWorkspaceModule,\r\n IgoAppImportExportModule,\r\n IgoAppMapModule,\r\n IgoAppMeasureModule,\r\n IgoAppPrintModule,\r\n IgoAppSearchModule,\r\n IgoAppFilterModule,\r\n IgoAppAboutModule,\r\n IgoAppGeometryFormModule\r\n ]\r\n})\r\nexport class IgoIntegrationModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { AnalyticsService } from '@igo2/core';\r\nimport {\r\n ArcGISRestDataSourceOptions,\r\n ArcGISRestImageDataSourceOptions,\r\n Layer,\r\n TileArcGISRestDataSourceOptions,\r\n WMSDataSourceOptions,\r\n WMTSDataSourceOptions\r\n} from '@igo2/geo';\r\n\r\nimport { skip } from 'rxjs/operators';\r\n\r\nimport { ContextState } from '../context/context.state';\r\nimport { MapState } from '../map/map.state';\r\nimport { SearchState } from '../search/search.state';\r\nimport { ToolState } from '../tool/tool.state';\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnalyticsListenerService {\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n\r\n constructor(\r\n private analyticsService: AnalyticsService,\r\n private authService: AuthService,\r\n private contextState: ContextState,\r\n private searchState: SearchState,\r\n private toolState: ToolState,\r\n private mapState: MapState\r\n ) {}\r\n\r\n listen() {\r\n this.listenUser();\r\n this.listenContext();\r\n this.listenTool();\r\n this.listenSearch();\r\n this.listenLayer();\r\n }\r\n\r\n listenUser() {\r\n this.authService.authenticate$.subscribe(() => {\r\n const tokenDecoded = this.authService.decodeToken();\r\n if (tokenDecoded?.user) {\r\n this.authService\r\n .getProfils()\r\n .subscribe((profils) =>\r\n this.analyticsService.setUser(tokenDecoded.user, profils.profils)\r\n );\r\n } else {\r\n this.analyticsService.setUser(null);\r\n }\r\n });\r\n }\r\n\r\n listenContext() {\r\n this.contextState.context$.subscribe((context) => {\r\n if (context) {\r\n this.analyticsService.trackEvent(\r\n 'context',\r\n 'activateContext',\r\n context.id || context.uri\r\n );\r\n }\r\n });\r\n }\r\n\r\n listenTool() {\r\n this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe((tool) => {\r\n if (tool) {\r\n this.analyticsService.trackEvent('tool', 'activateTool', tool.name);\r\n }\r\n });\r\n }\r\n\r\n listenSearch() {\r\n this.searchState.searchTerm$\r\n .pipe(skip(1))\r\n .subscribe((searchTerm: string) => {\r\n if (searchTerm !== undefined && searchTerm !== null) {\r\n this.analyticsService.trackSearch(\r\n searchTerm,\r\n this.searchState.store.count\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Listener for adding layers to the map\r\n */\r\n listenLayer() {\r\n this.mapState.map.layersAddedByClick$.subscribe((layers: Layer[]) => {\r\n if (!layers) {\r\n return;\r\n }\r\n\r\n layers.map((layer) => {\r\n let wmsParams: string;\r\n let wmtsParams: string;\r\n let xyzParams: string;\r\n let restParams: string;\r\n\r\n switch (layer.dataSource.options.type) {\r\n case 'wms':\r\n const wmsDataSource = layer.dataSource\r\n .options as WMSDataSourceOptions;\r\n const wmsLayerName: string = wmsDataSource.params.LAYERS;\r\n const wmsUrl: string = wmsDataSource.url;\r\n const wmsType: string = wmsDataSource.type;\r\n wmsParams = JSON.stringify({\r\n layer: wmsLayerName,\r\n type: wmsType,\r\n url: wmsUrl\r\n });\r\n break;\r\n case 'wmts':\r\n const wmtsDataSource = layer.dataSource\r\n .options as WMTSDataSourceOptions;\r\n const wmtsLayerName: string = wmtsDataSource.layer;\r\n const wmtsUrl: string = wmtsDataSource.url;\r\n const matrixSet: string = wmtsDataSource.matrixSet;\r\n const wmtsType: string = wmtsDataSource.type;\r\n wmtsParams = JSON.stringify({\r\n layer: wmtsLayerName,\r\n type: wmtsType,\r\n url: wmtsUrl,\r\n matrixSet\r\n });\r\n break;\r\n case 'arcgisrest':\r\n case 'tilearcgisrest':\r\n case 'imagearcgisrest':\r\n const restDataSource = layer.options.sourceOptions as\r\n | ArcGISRestDataSourceOptions\r\n | TileArcGISRestDataSourceOptions\r\n | ArcGISRestImageDataSourceOptions;\r\n const restName: string = restDataSource.layer;\r\n const restUrl: string = restDataSource.url;\r\n const restType: string = restDataSource.type;\r\n restParams = JSON.stringify({\r\n layer: restName,\r\n type: restType,\r\n url: restUrl\r\n });\r\n break;\r\n case 'xyz':\r\n /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;\r\n const xyzName: string = layer.title;\r\n const xyzUrl: string = xyzDataSource.url;\r\n const xyzType: string = layer.dataSource.options.type;\r\n xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});\r\n */\r\n // todo\r\n break;\r\n }\r\n this.analyticsService.trackLayer(\r\n 'layer',\r\n 'addLayer',\r\n wmsParams || wmtsParams || xyzParams || restParams\r\n );\r\n });\r\n });\r\n }\r\n}\r\n","import { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool';\r\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool';\r\nimport { OgcFilterToolComponent } from './ogc-filter-tool';\r\nimport { SpatialFilterToolComponent } from './spatial-filter-tool';\r\nimport { TimeFilterToolComponent } from './time-filter-tool';\r\n\r\nexport * from './ogc-filter-tool';\r\nexport * from './active-ogc-filter-tool';\r\nexport * from './spatial-filter-tool';\r\nexport * from './time-filter-tool';\r\nexport * from './active-time-filter-tool';\r\n\r\nexport const INTEGRATION_FILTER_DIRECTIVES = [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n];\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { EntityStore } from '@igo2/common';\r\nimport { ConfigService } from '@igo2/core';\r\nimport {\r\n CapabilitiesService,\r\n CommonVectorStyleOptions,\r\n GeoPropertiesStrategy,\r\n OverlayStyleOptions,\r\n PropertyTypeDetectorService,\r\n SearchResult\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../map/map.state';\r\n\r\n/**\r\n * Service that holds the state of the query module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueryState {\r\n /**\r\n * Store that holds the query results\r\n */\r\n public store = new EntityStore<SearchResult>([]);\r\n public queryOverlayStyle: CommonVectorStyleOptions = {};\r\n public queryOverlayStyleSelection: CommonVectorStyleOptions = {};\r\n public queryOverlayStyleFocus: CommonVectorStyleOptions = {};\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n private propertyTypeDetectorService: PropertyTypeDetectorService,\r\n private capabilitiesService: CapabilitiesService,\r\n private mapState: MapState\r\n ) {\r\n const queryOverlayStyle: OverlayStyleOptions =\r\n this.configService.getConfig('queryOverlayStyle');\r\n if (queryOverlayStyle) {\r\n this.queryOverlayStyle = queryOverlayStyle.base;\r\n this.queryOverlayStyleSelection = queryOverlayStyle.selection;\r\n this.queryOverlayStyleFocus = queryOverlayStyle.focus;\r\n }\r\n const geoPropertiesStrategy = new GeoPropertiesStrategy(\r\n { map: this.mapState.map },\r\n this.propertyTypeDetectorService,\r\n this.capabilitiesService\r\n );\r\n this.store.addStrategy(geoPropertiesStrategy, true);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchResultsToolComponent } from './search-results-tool.component';\r\n\r\n/**\r\n * @deprecated import the SearchResultsToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [SearchResultsToolComponent],\r\n exports: [SearchResultsToolComponent]\r\n})\r\nexport class IgoAppSearchResultsToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchBarBindingDirective } from './search-bar-binding.directive';\r\n\r\n/**\r\n * @deprecated import the SearchBarBindingDirective directly\r\n */\r\n@NgModule({\r\n imports: [SearchBarBindingDirective],\r\n exports: [SearchBarBindingDirective]\r\n})\r\nexport class IgoAppSearchBarModule {}\r\n","import { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\r\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\r\n\r\nexport * from './query.state';\r\nexport * from './search.state';\r\nexport * from './search-results-tool/search-results-tool.module';\r\nexport * from './search-results-tool/search-results-tool.component';\r\nexport * from './search-bar/search-bar.module';\r\nexport * from './search-bar/search-bar-binding.directive';\r\n\r\nexport const INTEGRATION_SEARCH_DIRECTIVES = [\r\n SearchBarBindingDirective,\r\n SearchResultsToolComponent\r\n] as const;\r\n","/*\r\n * Public API Surface of tools\r\n */\r\n\r\nexport * from './lib/integration.module';\r\nexport * from './lib/about/about.module';\r\nexport * from './lib/geometry-form/geometry-form.module';\r\nexport * from './lib/context/context.module';\r\nexport * from './lib/catalog/catalog.module';\r\n\r\nexport * from './lib/directions/directions.module';\r\nexport * from './lib/draw/draw.module';\r\nexport * from './lib/workspace/workspace.module';\r\nexport * from './lib/filter/filter.module';\r\nexport * from './lib/import-export/import-export.module';\r\nexport * from './lib/map/map.module';\r\nexport * from './lib/measure/measure.module';\r\nexport * from './lib/print/print.module';\r\nexport * from './lib/search/search.module';\r\n\r\nexport * from './lib/about';\r\nexport * from './lib/geometry-form';\r\nexport * from './lib/analytics';\r\nexport * from './lib/context';\r\nexport * from './lib/catalog';\r\nexport * from './lib/directions';\r\nexport * from './lib/draw';\r\nexport * from './lib/environment';\r\nexport * from './lib/workspace';\r\nexport * from './lib/filter';\r\nexport * from './lib/import-export';\r\nexport * from './lib/map';\r\nexport * from './lib/measure';\r\nexport * from './lib/print';\r\nexport * from './lib/search';\r\nexport * from './lib/tool';\r\nexport * from './lib/storage';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i4","i7","i8","i2.CatalogState","i3.MapState","i2.ImportExportState","i3.ToolState","i1.ToolState","i2.MapState","i1.MapState","i2.LayerListToolState","i1.ContextEditorToolComponent","i2.ContextManagerToolComponent","i3.ContextPermissionManagerToolComponent","i4.ContextShareToolComponent","i1.DirectionState","i3","i4.ContextState","i5","i6","i1.DrawState","toolSlideInOut","i1.StorageState","i1.FeatureActionsService","i2.WfsActionsService","i3.EditionActionsService","i5.ImportExportState","i6.ToolState","i7.WorkspaceState","i3.WorkspaceState","olproj","i11","i4.ToolState","i9","i10","i12","i1.WorkspaceState","map","i2.ToolState","i4.ImportExportState","GeoJSON","i2.MapProximityState","i3.ImportExportState","i1.LayerListToolState","i1.MeasureState","i4.MapState","i2.SearchState","i4.DirectionState","i3.ContextState","i4.SearchState","i5.ToolState","i6.MapState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4Ca,IAAA,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AA2CpB,IAAA,aAAA,CAAA;AACA,IAAA,IAAA,CAAA;AACC,IAAA,IAAA,CAAA;AACA,IAAA,KAAA,CAAA;AACA,IAAA,eAAA,CAAA;AA9CF,IAAA,aAAa,CAAwB;AAC7C,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KACpE;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KAC9D;IACO,sBAAsB,GAAW,KAAK,CAAC;AACxC,IAAA,sBAAsB,GAAuB,EAAE,CACpD,IAAI,CAAC,sBAAsB,CAC5B,CAAC;AAEF,IAAA,IACI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IACD,IAAI,qBAAqB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;KACzC;AAEQ,IAAA,iBAAiB,CAAC;AAEpB,IAAA,gBAAgB,CAAS;IACxB,KAAK,GAAW,gCAAgC,CAAC;AACjD,IAAA,WAAW,CAAS;AAEpB,IAAA,aAAa,CAAC;AACd,IAAA,YAAY,CAAC;IAEd,OAAO,GAAG,KAAK,CAAC;IAEvB,WACS,CAAA,aAA4B,EAC5B,IAAiB,EAChB,IAAgB,EAChB,KAAwB,EACxB,eAAgC,EAAA;QAJjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAChB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QACxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAExC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACtD,sCAAsC,CACvC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AACrD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB;YACnB,aAAa,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG;;AAE5B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAa,EAAE,QAAQ,CAAC;KAC/C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE;AAC9D,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;gBACrD,MAAM,MAAM,GAAG,MAAa,CAAC;AAC7B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AACvC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACJ;AAAM,aAAA,IACL,IAAI,CAAC,IAAI,CAAC,aAAa;AACvB,YAAA,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG;AAChC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EACxC;YACA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC;SACnE;KACF;AAED,IAAA,SAAS,CAAC,KAAM,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK;AACf,cAAE,IAAI,CAAC,YAAY,GAAG,KAAK,GAAG,GAAG;AACjC,cAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI;aACN,GAAG,CAAC,GAAG,EAAE;AACR,YAAA,YAAY,EAAE,MAAM;SACrB,CAAC;aACD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;AAED,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;uGApGU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sNC5C/B,+pDAgEA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BI,wBAAwB,EACxB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,4FACJ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,mLACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,6EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAGN,kBAAkB,GAAA,UAAA,CAAA;AAtB9B,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,6BAA6B;AACpC,QAAA,IAAI,EAAE,aAAa;KACpB,CAAC;qCA6DwB,aAAa;QACtB,WAAW;QACV,UAAU;QACT,iBAAiB;QACP,eAAe,CAAA,CAAA;AA/C/B,CAAA,EAAA,kBAAkB,CAqG9B,CAAA;2FArGY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EAGd,IAAI,EACP,OAAA,EAAA;wBACP,wBAAwB;wBACxB,IAAI;wBACJ,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,KAAK;wBACL,mBAAmB;wBACnB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,+pDAAA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA,CAAA;qMAKG,UAAU,EAAA,CAAA;sBADb,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAaF,qBAAqB,EAAA,CAAA;sBADxB,KAAK;gBASG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;AEnER;;AAEG;MAMU,iBAAiB,CAAA;AAC5B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAJlB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAJlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAIjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;ACVD;AAEA;;AAEG;MAIU,QAAQ,CAAA;AAoBT,IAAA,UAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,aAAA,CAAA;;AArBV,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAED,IAAI,mBAAmB,CAAC,KAAK,EAAA;AAC3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;AACO,IAAA,kBAAkB,CAAU;AAEpC;;AAEG;AACH,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AACO,IAAA,IAAI,CAAS;AAErB,IAAA,WAAA,CACU,UAAsB,EACtB,iBAAoC;AACpC,IAAA,cAA8B,EAC9B,aAA4B,EAAA;QAH5B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAEpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CACpB;AACE,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,WAAW,EAAE;AACX,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA;AACF,aAAA;SACF,EACD,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClC;uGAvCU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cAFP,MAAM,EAAA,CAAA,CAAA;;2FAEP,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACND;;AAEG;MAIU,YAAY,CAAA;AACvB;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AACO,IAAA,aAAa,CAAuB;AAE5C;;AAEG;AACK,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAAoC,CAAC;AAEzE,IAAA,WAAA,CAAY,WAAwB,EAAA;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AAEzC,QAAA,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;YACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,OAAgB,EAAA;QACnC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAY,CAAC,CAAC;KAC1D;AAED;;;;AAIG;IACH,oBAAoB,CAAC,OAAgB,EAAE,KAA+B,EAAA;QACpE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAY,EAAE,KAAK,CAAC,CAAC;KAC1D;AAED;;AAEG;IACH,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;KACjC;uGA7CU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACeD;;AAEG;AAcU,IAAA,2BAA2B,GAAjC,MAAM,2BAA2B,CAAA;AA8B5B,IAAA,cAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,WAAA,CAAA;AAhCV,IAAA,OAAO,CAAU;AAEjB;;;AAGG;AACH,IAAA,MAAM,GAAG,IAAI,eAAe,CAC1B,SAAS,CACV,CAAC;AAEF;;AAEG;AACK,IAAA,SAAS,CAAe;AAEhC;;AAEG;IACM,oBAAoB,GAAY,IAAI,CAAC;AAE9C;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,WAAA,CACU,cAA8B,EAC9B,YAA0B,EAC1B,QAAkB,EAClB,WAAwB,EAAA;QAHxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC9B;AAEJ;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QAEpD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAC9C,CAAC,MAA6B,KAAK,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAClE,CAAC;AACF,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,KAAI;AACzB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,SAAC,CACF,CAAC;KACH;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KAC9B;AAED;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5D,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO;SACR;AAED,QAAA,KAAK,GAAG,IAAI,WAAW,CAAc,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,cAAc;aAChB,gBAAgB,CAAC,OAAO,CAAC;AACzB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;uGAnFU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,8IC1CxC,0MAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDgCY,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,8IAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAEvC,2BAA2B,GAAA,UAAA,CAAA;AAbvC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,KAAK,EAAE,+BAA+B;AACtC,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,MAAM,EAAE,SAAS;KAClB,CAAC;qCAsC0B,cAAc;QAChB,YAAY;QAChB,QAAQ;QACL,WAAW,CAAA,CAAA;AAjCvB,CAAA,EAAA,2BAA2B,CAoFvC,CAAA;2FApFY,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAEnB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,0MAAA,EAAA,CAAA;2JAqB1C,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;;;AEzDR;;AAEG;MAKU,8BAA8B,CAAA;uGAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAA9B,8BAA8B,EAAA,OAAA,EAAA,CAH/B,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAC3B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,YAH/B,2BAA2B,CAAA,EAAA,CAAA,CAAA;;2FAG1B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,2BAA2B,CAAC;oBACtC,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;ICJW,iBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAG3B,EAAA,CAAA,CAAA,CAAA;IAEW,iBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAG3B,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;MAIU,iBAAiB,CAAA;IACnB,iBAAiB,GACxB,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,aAAa,GACpB,IAAI,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtC,IAAA,cAAc,GAAmC,IAAI,eAAe,CAC3E,SAAS,CACV,CAAC;AAEF,IAAA,mBAAmB,CAAC,IAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;AAED,IAAA,OAAO,CAAC,IAAsB,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;AAED,IAAA,iBAAiB,CAAC,aAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzC;uGAnBU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACTD;;AAEG;MAIU,SAAS,CAAA;AAUV,IAAA,WAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AAVV,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACjC;AAEM,IAAA,YAAY,GAA6B,IAAI,eAAe,CACjE,SAAS,CACV,CAAC;IAEF,WACU,CAAA,WAAwB,EACxB,iBAAoC,EAAA;QADpC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAC1C;AAEJ,IAAA,yBAAyB,CAAC,cAGzB,EAAA;QACC,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;AACD,QAAA,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc,EAAE;YAC1C,IAAI,aAAa,GACf,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC;YAC9C,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,aAAa,GAAG;AACd,oBAAA,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;AACrC,oBAAA,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,kBAAkB;iBAC9D,CAAC;aACH;iBAAM;gBACL,aAAa,CAAC,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,gBAAA,aAAa,CAAC,kBAAkB;AAC9B,oBAAA,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC;aAC7C;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACxD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B;KACF;uGA1CU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACAD;;AAEG;AAaU,IAAA,2BAA2B,GAAjC,MAAM,2BAA2B,CAAA;AAoB5B,IAAA,cAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,cAAA,CAAA;AAtBV;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;KACvC;AAED;;AAEG;IACM,iBAAiB,GAAY,KAAK,CAAC;AAE5C;;AAEG;IACM,kBAAkB,GAAc,EAAE,CAAC;AAE5C,IAAA,WAAA,CACU,cAA8B,EAC9B,YAA0B,EAC1B,SAAoB,EACpB,cAA8B,EAAA;QAH9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KACpC;AAEJ;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;AAED;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,KAA8C,EAAA;AAClE,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC5B,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACvD;AAED;;;AAGG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,QAAmB,KAAI;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,QAAQ,CAAC,MAAM,EACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAChD,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;uGA/DU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCxC,6OAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDuBY,sBAAsB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAErB,2BAA2B,GAAA,UAAA,CAAA;AAZvC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,+BAA+B;AACtC,QAAA,IAAI,EAAE,aAAa;KACpB,CAAC;qCA4B0B,cAAc;QAChB,YAAY;QACf,SAAS;QACJ,cAAc,CAAA,CAAA;AAvB7B,CAAA,EAAA,2BAA2B,CAgEvC,CAAA;2FAhEY,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACE,0BAA0B,EAAA,eAAA,EAEnB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,6OAAA,EAAA,CAAA;6JAcxB,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAKG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;;;AE7CR;;AAEG;MAKU,8BAA8B,CAAA;uGAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAA9B,8BAA8B,EAAA,OAAA,EAAA,CAH/B,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAC3B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,YAH/B,2BAA2B,CAAA,EAAA,CAAA,CAAA;;2FAG1B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,2BAA2B,CAAC;oBACtC,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;ACLD;;AAEG;MAIU,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAnB,mBAAmB,EAAA,OAAA,EAAA,CAFpB,8BAA8B,EAAE,8BAA8B,CAAA,EAAA,CAAA,CAAA;wGAE7D,mBAAmB,EAAA,OAAA,EAAA,CAFpB,8BAA8B,EAAE,8BAA8B,CAAA,EAAA,CAAA,CAAA;;2FAE7D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,8BAA8B,CAAC;AAC1E,iBAAA,CAAA;;;ACYY,IAAA,0BAA0B,GAAhC,MAAM,0BAA0B,CAAA;AACjB,IAAA,SAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KAAI;IAE5C,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;KAC/C;uGALU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,ECtBvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+GAIA,EDgBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,2GAAE,2BAA2B,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEhD,0BAA0B,GAAA,UAAA,CAAA;AAZtC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,gBAAgB;KACzB,CAAC;qCAQ+B,SAAS,CAAA,CAAA;AAD7B,CAAA,EAAA,0BAA0B,CAMtC,CAAA;2FANY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAEvB,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,+GAAA,EAAA,CAAA;;;AEGjD,IAAA,2BAA2B,GAAjC,MAAM,2BAA2B,CAAA;AAQ5B,IAAA,SAAA,CAAA;AACA,IAAA,QAAA,CAAA;IARD,yBAAyB,GAAW,UAAU,CAAC;AAExD,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;IAED,WACU,CAAA,SAAoB,EACpB,QAAkB,EAAA;QADlB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACxB;IAEJ,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACtD;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;KACjE;uGAlBU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,ECvBxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,kKAOA,EDcY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,yUAAE,2BAA2B,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEhD,2BAA2B,GAAA,UAAA,CAAA;AAXvC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,IAAI,EAAE,MAAM;KACb,CAAC;qCAeqB,SAAS;QACV,QAAQ,CAAA,CAAA;AATjB,CAAA,EAAA,2BAA2B,CAmBvC,CAAA;2FAnBY,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAExB,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAA,QAAA,EAAA,kKAAA,EAAA,CAAA;+FAGnD,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;;;AEJK,IAAA,qCAAqC,GAA3C,MAAM,qCAAqC,CAAA;uGAArC,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,ECpBlD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oFACA,EDiBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,wKAAE,kCAAkC,EAAA,QAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE9D,qCAAqC,GAAA,UAAA,CAAA;AAZjD,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,gBAAgB;KACzB,CAAC;AAOW,CAAA,EAAA,qCAAqC,CAAG,CAAA;2FAAxC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,cAEnC,IAAI,EAAA,OAAA,EACP,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,EAAA,QAAA,EAAA,oFAAA,EAAA,CAAA;;;AEZ5E;;AAEG;MAIU,kBAAkB,CAAA;AACpB,IAAA,QAAQ,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAA,UAAU,GAA6B,IAAI,eAAe,CACjE,SAAS,CACV,CAAC;AACO,IAAA,YAAY,GAA6B,IAAI,eAAe,CACnE,SAAS,CACV,CAAC;AACO,IAAA,YAAY,GAA4B,IAAI,eAAe,CAClE,SAAS,CACV,CAAC;AAEF,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;AAED,IAAA,YAAY,CAAC,IAAa,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AAED,IAAA,cAAc,CAAC,WAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,oBAAoB,GAAA;QAClB,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC5B,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AACpC,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SACjC,CAAC;KACH;uGAlCU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACSY,IAAA,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAU1B,IAAA,QAAA,CAAA;AACA,IAAA,kBAAA,CAAA;AAVV,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;KACvD;IAED,WACU,CAAA,QAAkB,EAClB,kBAAsC,EAAA;QADtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;KAC5C;uGAZO,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBtC,iDACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiBY,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEhB,yBAAyB,GAAA,UAAA,CAAA;AAXrC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,IAAI,EAAE,eAAe;KACtB,CAAC;qCAiBoB,QAAQ;QACE,kBAAkB,CAAA,CAAA;AAXrC,CAAA,EAAA,yBAAyB,CAarC,CAAA;2FAbY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAEtB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,iDAAA,EAAA,CAAA;;;AER9B;;AAEG;MAIU,YAAY,CAAA;AAOb,IAAA,cAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,eAAA,CAAA;AATV;;AAEG;AACH,IAAA,QAAQ,GAAqC,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AAE5E,IAAA,WAAA,CACU,cAA8B,EAC9B,WAAwB,EACxB,SAAoB,EACpB,eAAgC,EAAA;QAHhC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAExC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAwB,KAAI;AAClE,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAwB,KAAI;AACvE,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AACK,IAAA,UAAU,CAAC,OAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;AAED;;;AAGG;AACK,IAAA,WAAW,CAAC,OAAwB,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAEvC,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACzC,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,WAAiB,KAAI;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5D,YAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,OAAO;aACR;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,EAAE,EACF,QAAQ,CAAC,OAAO,IAAI,EAAE,EACtB,WAAW,CAAC,OAAO,IAAI,EAAE,CAC1B,CAAC;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACnE,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AACrE,gBAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AACtB,oBAAA,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;AACjC,oBAAA,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7C;aACF;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;;;AAI1C,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KACvD;AAED;;;AAGG;AACK,IAAA,eAAe,CAAC,OAAwB,EAAA;AAC9C,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC1B;uGAjFU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJY,MAAA,8BAA8B,GAAG;IAC5C,0BAA0B;IAC1B,2BAA2B;IAC3B,qCAAqC;IACrC,yBAAyB;;;ACX3B;;AAEG;MAKU,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAnB,mBAAmB,EAAA,OAAA,EAAA,CAAAW,0BAAA,EAAAC,2BAAA,EAAAC,qCAAA,EAAAC,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAAH,0BAAA,EAAAC,2BAAA,EAAAC,qCAAA,EAAAC,yBAAA,CAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHjB,8BAA8B,CAAA,EAAA,CAAA,CAAA;;2FAGhC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,8BAA8B,CAAC;AAC5C,oBAAA,OAAO,EAAE,CAAC,GAAG,8BAA8B,CAAC;AAC7C,iBAAA,CAAA;;;ACID;;AAEG;MAIU,cAAc,CAAA;AAsBL,IAAA,QAAA,CAAA;AArBb,IAAA,kBAAkB,GAAkB,IAAI,OAAO,EAAE,CAAC;AAEzD;;AAEG;AACI,IAAA,UAAU,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAEnD;;AAEG;AACI,IAAA,iBAAiB,CAAoB;AAE5C;;AAEG;AACI,IAAA,kBAAkB,CAAqB;AAEvC,IAAA,gBAAgB,CAAmB;IAEnC,YAAY,GAAW,GAAG,CAAC;AAElC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,EAAE,EAAE;AACjD,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,EAAE;AACnD,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE;AAC/C,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAK;YAC/C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBAChD,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE;oBAEvC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAC9B,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC;iBAC5B;AACH,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBACjD,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE;oBAExC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAC/B,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC;iBAC5B;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,2BAA2B,CAAC,EAAE;AAChE,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;aACjE;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,2BAA2B,CAAC,EAAE;AAChE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;aACnE;AACH,SAAC,CAAC,CAAC;KACJ;uGA7DU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACiBY,IAAA,uBAAuB,GAA7B,MAAM,uBAAuB,CAAA;AAuDxB,IAAA,cAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,eAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACD,IAAA,YAAA,CAAA;AACC,IAAA,WAAA,CAAA;AA5DH,IAAA,iBAAiB,CAAS;AACjC;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;KACvC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;KACzC;AAED;;;AAGG;AACH,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;KAC9C;AAED;;;AAGG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;KAC/C;AAED;;;AAGG;AACH,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;KAC7C;AAED;;;AAGG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;KAC/C;AAED;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,WAAA,CACU,cAA8B,EAC9B,QAAkB,EAClB,eAAgC,EAChC,cAA8B,EAC9B,cAA8B,EAC/B,YAA0B,EACzB,WAAwB,EAAA;QANxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACzB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC9B;IAEJ,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAC1C,yBAAyB,CACf,CAAC;QACb,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,4CAA4C,EAC5C,0CAA0C,EAC1C,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,yBAAyB,EACzB,IAAI,EACJ,YAAY,CAAC,OAAO,CACrB,CAAC;SACH;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,CAAC;aAChC;AACH,SAAC,CAAC,CAAC;KACJ;uGArFU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCpC,uVAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwBY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAElB,uBAAuB,GAAA,UAAA,CAAA;AAXnC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,IAAI,EAAE,YAAY;KACnB,CAAC;qCA8D0B,cAAc;QACpB,QAAQ;QACD,eAAe;QAChB,cAAc;QACd,cAAc;QACjB,YAAY;QACZ,WAAW,CAAA,CAAA;AA7DvB,CAAA,EAAA,uBAAuB,CAsFnC,CAAA;2FAtFY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAEnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,uVAAA,EAAA,CAAA;;;AE9BhC;;AAEG;MAKU,sBAAsB,CAAA;AACjC,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAtB,sBAAsB,EAAA,OAAA,EAAA,CAHvB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAGtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACCD;;AAEG;MAIU,SAAS,CAAA;AAMA,IAAA,QAAA,CAAA;IALb,MAAM,GAAoC,EAAE,CAAC;IAC7C,QAAQ,GAAa,EAAE,CAAC;IACxB,YAAY,GAA4B,EAAE,CAAC;AAC3C,IAAA,kBAAkB,CAAc;AAEvC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAChC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CACtC,CAAC;oBACF,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3D,IAAI,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAChD,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAC1B,CAAC;oBACF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;iBAC/C;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,YAAA,KAAK,GAAG,IAAI,YAAY,CAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;SAC3E;KACF;uGA1BU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA,CAAA;;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACDD;;AAEG;AAaU,IAAA,oBAAoB,GAA1B,MAAM,oBAAoB,CAAA;AA4CrB,IAAA,SAAA,CAAA;AACA,IAAA,QAAA,CAAA;AA5CV;;;AAGG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC9B;AAED;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAChC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;KACpC;IACD,IAAI,YAAY,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;KAClC;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;KAC1C;IACD,IAAI,kBAAkB,CAAC,KAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,KAAK,CAAC;KAC3C;AAEM,IAAA,WAAW,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7B;AAEM,IAAA,eAAe,CAAC,EAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;IAED,WACU,CAAA,SAAoB,EACpB,QAAkB,EAAA;QADlB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACxB;uGA9CO,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BjC,4SAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBY,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAEZ,oBAAoB,GAAA,UAAA,CAAA;AAZhC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,4BAA4B;AACnC,QAAA,IAAI,EAAE,MAAM;KACb,CAAC;qCAoDqB,SAAS;QACV,QAAQ,CAAA,CAAA;AA7CjB,CAAA,EAAA,oBAAoB,CA+ChC,CAAA;2FA/CY,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,4SAAA,EAAA,CAAA;;;AExB1B;;AAEG;MAKU,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAGnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACND;;AAEG;MAIU,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAFjB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAFjB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAEtB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACAK,SAAUa,gBAAc,CAC5B,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,aAAa,EAAA;IAEpB,OAAO,OAAO,CAAC,gBAAgB,EAAE;AAC/B,QAAA,KAAK,CACH,OAAO,EACP,KAAK,CAAC;AACJ,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA,CAAC,CACH;QACD,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACzD,KAAA,CAAC,CAAC;AACL;;ACDa,IAAA,4BAA4B,GAAlC,MAAM,4BAA4B,CAAA;AAgBpB,IAAA,QAAA,CAAA;AAfnB,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACjC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AAC/B,gBAAA,OAAO,GAAG,CAAC;aACZ;SACF;QACD,OAAO;KACR;IAEM,OAAO,GAAG,OAAO,CAAC;AAEzB,IAAA,WAAA,CAAmB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;uGAhB9B,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBzC,wJAOA,EDYY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,0FAFxB,CAACY,gBAAc,EAAE,CAAC,EAAA,CAAA,CAAA;;AAInB,4BAA4B,GAAA,UAAA,CAAA;AAbxC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,KAAK,EAAE,iCAAiC;AACxC,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,MAAM,EAAE,UAAU;KACnB,CAAC;qCAwB6B,QAAQ,CAAA,CAAA;AAhB1B,CAAA,EAAA,4BAA4B,CAiBxC,CAAA;2FAjBY,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAE1B,CAACA,gBAAc,EAAE,CAAC,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,0BAA0B,CAAC,EAAA,QAAA,EAAA,wJAAA,EAAA,CAAA;;;AEVjC,SAAU,cAAc,CAC5B,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,aAAa,EAAA;IAEpB,OAAO,OAAO,CAAC,gBAAgB,EAAE;AAC/B,QAAA,KAAK,CACH,OAAO,EACP,KAAK,CAAC;AACJ,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA,CAAC,CACH;QACD,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACzD,KAAA,CAAC,CAAC;AACL;;ACDa,IAAA,6BAA6B,GAAnC,MAAM,6BAA6B,CAAA;AAgBrB,IAAA,QAAA,CAAA;AAfnB,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACjC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AAC/B,gBAAA,OAAO,GAAG,CAAC;aACZ;SACF;QACD,OAAO;KACR;IAEM,OAAO,GAAG,OAAO,CAAC;AAEzB,IAAA,WAAA,CAAmB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;uGAhB9B,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB1C,6IAMA,EDaY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,gFAFrB,CAAC,cAAc,EAAE,CAAC,EAAA,CAAA,CAAA;;AAInB,6BAA6B,GAAA,UAAA,CAAA;AAbzC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,UAAU;KACnB,CAAC;qCAwB6B,QAAQ,CAAA,CAAA;AAhB1B,CAAA,EAAA,6BAA6B,CAiBzC,CAAA;2FAjBY,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAE3B,CAAC,cAAc,EAAE,CAAC,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,6IAAA,EAAA,CAAA;;;AEAvB,IAAA,sBAAsB,GAA5B,MAAM,sBAAsB,CAAA;AACjC,IAAA,WAAA,GAAA,GAAgB;uGADL,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,ECnBnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mFACA,EDgBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,+FAAE,iCAAiC,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE5D,sBAAsB,GAAA,UAAA,CAAA;AAXlC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,iCAAiC;AACxC,QAAA,IAAI,EAAE,QAAQ;KACf,CAAC;;AAOW,CAAA,EAAA,sBAAsB,CAElC,CAAA;2FAFY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAEnB,IAAI,EAAA,OAAA,EACP,CAAC,0BAA0B,EAAE,iCAAiC,CAAC,EAAA,QAAA,EAAA,mFAAA,EAAA,CAAA;;;AEb1E;;AAEG;MAIU,YAAY,CAAA;AAKH,IAAA,iBAAA,CAAA;AAJpB,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED,IAAA,WAAA,CAAoB,iBAAiC,EAAA;QAAjC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAgB;KAAI;uGAL9C,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACiBe,SAAA,cAAc,CAC5B,SAA6D,EAC7D,cAAc,EAAA;IAEd,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,iBAAiB,CAC1D,6BAA6B,CACG,CAAC;IACnC,YAAY,CAAC,SAAS,CACnB,cAAc,CAAC,GAAG,CAAC,UAAU,CAAa;UACvC,aAAa,CAAC,OAAO;AACvB,UAAE,aAAa,CAAC,IAAI,CACvB,CAAC;AACJ,CAAC;AAEK,SAAU,mBAAmB,CACjC,SAA6D,EAC7D,8BAAwD,EACxD,yBAAmD,EACnD,eAAuB,EACvB,SAAmC,EACnC,SAAmC,EACnC,cAA8B,EAC9B,eAAgC,EAChC,YAA0B,EAC1B,SAAoB,EAAA;AAEpB,IAAA,MAAM,OAAO,GAAG;AACd,QAAA;AACE,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,0CAA0C;AACjD,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,cAAc,EAAE,SAAS;YACzB,OAAO,EAAE,MAAK;AACZ,gBAAA,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1C,gBAAA,cAAc,CAAC,GAAG,CAChB,UAAU,EACV,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAY,CAC3C,CAAC;aACH;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,6CAA6C;AACpD,YAAA,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC;AAClD,YAAA,cAAc,EAAE,8BAA8B;AAC9C,YAAA,OAAO,EAAE,MACP,8BAA8B,CAAC,IAAI,CACjC,CAAC,8BAA8B,CAAC,KAAK,CACtC;AACJ,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,0CAA0C;AACjD,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,OAAO,EAAE,MACP,yBAAyB,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACnE,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,gDAAgD;AACvD,YAAA,OAAO,EAAE,kDAAkD;AAC3D,YAAA,OAAO,EAAE,CAAC,EAAsD,KAAI;AAClE,gBAAA,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AACzD,oBAAA,QAAQ,EAAE,KAAK;AAChB,iBAAA,CAAC,CAAC;aACJ;YACD,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,YAAY,EAAE,CAAC,EAAsD,KACnE,iBAAiB,CAAC,EAAE,CAAC;AACxB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,0CAA0C;AACjD,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,OAAO,EAAE,CAAC,EAAsD,KAAI;gBAClE,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CACrD,mCAAmC,CACpC,CAAC;gBACF,MAAM,uBAAuB,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAC9D,kCAAkC,CACnC,CAAC;AACF,gBAAA,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,MAAM;AACxD,sBAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;sBACb,EAAE,CAAC;gBACP,SAAS,CAAC,yBAAyB,CAAC;AAClC,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrB,kBAAkB,EAAE,cAAc,CAAC,MAAM;wBACzC,mBAAmB;AACH,qBAAA;AACnB,iBAAA,CAAC,CAAC;aACJ;YACD,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,2CAA2C;AAClD,YAAA,OAAO,EAAE,6CAA6C;AACtD,YAAA,OAAO,EAAE,CACP,MAAc,EACd,EAAsD,KACpD;AACF,gBAAA,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE;oBACxB,GAAG,EAAE,EAAE,CAAC,GAAG;oBACX,KAAK,EAAE,EAAE,CAAC,KAAK;AAChB,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,IAAI,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;AACnC,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,CACtC,oCAAoC,CACrC;YACD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,CACxC,2CAA2C,CAC5C;AACD,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAK;gBACZ,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACnE;YACD,OAAO,EAAE,MAAK;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE;AAC5B,oBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACtB;aACF;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,CACtC,0CAA0C,CAC3C;YACD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,CACxC,iDAAiD,CAClD;AACD,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAK;gBACZ,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aAClE;YACD,OAAO,EAAE,MAAK;AACZ,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACvB;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,uCAAuC;AAC9C,YAAA,OAAO,EAAE,yCAAyC;AAClD,YAAA,OAAO,EAAE,CAAC,EAAsD,KAAI;AAClE,gBAAA,MAAM,KAAK,GAAG,CAAA,EAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAA,EAAA,EAAK,aAAa,CAC/C,IAAI,IAAI,EAAE,EACV,kBAAkB,CACnB,GAAG,CAAC;gBACL,MAAM,GAAG,GAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAChD,MAAM,aAAa,GAAG,4BAA4B,CAAC;gBACnD,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,GAAG,CAAC,SAAS,CAAC;AACZ,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,mBAAmB,EAAE,IAAI;AACzB,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;AAC3D,oBAAA,WAAW,EAAE,CAAC,IAAI,KAAI;wBACpB,IAAI,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AACpD,wBAAA,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE;AAC3C,4BAAA,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,aAAa,CAAC;yBACnC;AACD,wBAAA,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnB,wBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvC,wBAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;8BAC9B,QAAQ,CAAC,MAAM;AACjB,8BAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AACzB,wBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;qBAC3D;AACF,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE;AAC3C,oBAAA,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;iBAClC;AACD,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA,IAAA,CAAM,CAAC,CAAC;aAC1B;YACD,IAAI,EAAE,CAAC,SAAS,CAAC;AAClB,SAAA;KACF,CAAC;AACF,IAAA,IAAI,aAAa,GAAI,SAAS,CAAC,KAAK,CAAC,UAAsC;SACxE,OAAO,CAAC,UAAU,EAAE,OAAO;AAC5B,UAAE,OAAO;AACT,UAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;IAC1D,aAAa;QACX,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK;AACnD,cAAE,OAAO;AACT,cAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AACxD,IAAA,OAAO,aAAa,CAAC;AACvB;;MC5Ma,qBAAqB,CAAA;AAeG,IAAA,eAAA,CAAA;AACzB,IAAA,YAAA,CAAA;AACD,IAAA,eAAA,CAAA;AACC,IAAA,YAAA,CAAA;AACA,IAAA,SAAA,CAAA;AAlBH,IAAA,SAAS,CAA2B;AAE3C,IAAA,SAAS,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACzD,IAAA,eAAe,CAAe;AAEtC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;KACzC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAY,CAAC;KACvD;IAED,WACmC,CAAA,eAAuB,EAChD,YAA0B,EAC3B,eAAgC,EAC/B,YAA0B,EAC1B,SAAoB,EAAA;QAJK,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QAChD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAC/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAE5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAY,CACxD,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;SACpC;KACF;AAED,IAAA,WAAW,CACT,SAA2B,EAC3B,8BAAwD,EACxD,yBAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAC/B,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,CAC1B,CAAC;AACF,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED,IAAA,YAAY,CACV,SAA2B,EAC3B,8BAAwD,EACxD,yBAAmD,EAAA;QAEnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACtD,aAAA,IAAI,CACH,SAAS,CACP,CAAC,aAAkC,KACjC,aAAa,EAAE,GAAG,KAAK,UAAU;AACjC,YAAA,aAAa,EAAE,KAAK,KAAK,uBAAuB,CAAC,OAAO,CAC3D,CACF;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AACL,QAAA,OAAO,mBAAmB,CACxB,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,EACzB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;KACH;AA3EU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAetB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAwB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAfd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAgBI,MAAM;2BAAC,eAAe,CAAA;;;MCfd,qBAAqB,CAAA;AAetB,IAAA,YAAA,CAAA;AACD,IAAA,eAAA,CAAA;AACC,IAAA,SAAA,CAAA;AACA,IAAA,YAAA,CAAA;AAjBH,IAAA,SAAS,CAA2B;AAE3C,IAAA,SAAS,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACzD,IAAA,eAAe,CAAe;AAEtC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;KACzC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAY,CAAC;KACvD;AAED,IAAA,WAAA,CACU,YAA0B,EAC3B,eAAgC,EAC/B,SAAoB,EACpB,YAA0B,EAAA;QAH1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAElC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAY,CACxD,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;SACpC;KACF;AAED,IAAA,WAAW,CACT,SAA2B,EAC3B,8BAAwD,EACxD,yBAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAC/B,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,CAC1B,CAAC;AACF,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED,IAAA,YAAY,CACV,SAA2B,EAC3B,8BAAwD,EACxD,yBAAmD,EAAA;QAEnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACtD,aAAA,IAAI,CACH,SAAS,CACP,CAAC,aAAkC,KACjC,aAAa,EAAE,GAAG,KAAK,UAAU;AACjC,YAAA,aAAa,EAAE,KAAK,KAAK,uBAAuB,CAAC,OAAO,CAC3D,CACF;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AACL,QAAA,OAAO,mBAAmB,CACxB,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,EACzB,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;KACH;uGA1EU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAgB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,iBAAiB,CAAA;AAmBO,IAAA,eAAA,CAAA;AACzB,IAAA,YAAA,CAAA;AACD,IAAA,eAAA,CAAA;AACC,IAAA,YAAA,CAAA;AACA,IAAA,SAAA,CAAA;AAtBH,IAAA,SAAS,CAA2B;AAE3C,IAAA,yBAAyB,GAA6B,IAAI,eAAe,CACvE,KAAK,CACN,CAAC;;AAEF,IAAA,SAAS,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACzD,IAAA,eAAe,CAAe;AAEtC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;KACzC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAY,CAAC;KACvD;IAED,WACmC,CAAA,eAAuB,EAChD,YAA0B,EAC3B,eAAgC,EAC/B,YAA0B,EAC1B,SAAoB,EAAA;QAJK,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QAChD,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAC/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAE5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAY,CACxD,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;SACpC;KACF;AAED,IAAA,WAAW,CACT,SAAuB,EACvB,8BAAwD,EACxD,yBAAmD,EAAA;AAEnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAC/B,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,CAC1B,CAAC;AACF,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED,IAAA,YAAY,CACV,SAAuB,EACvB,8BAAwD,EACxD,yBAAmD,EAAA;QAEnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc;AACtD,aAAA,IAAI,CACH,SAAS,CACP,CAAC,aAAkC,KACjC,aAAa,EAAE,GAAG,KAAK,UAAU;AACjC,YAAA,aAAa,EAAE,KAAK,KAAK,uBAAuB,CAAC,OAAO,CAC3D,CACF;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,YAAA,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;AACL,QAAA,OAAO,mBAAmB,CACxB,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,EACzB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;KACH;AA/EU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAmBlB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAgB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAnBd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAoBI,MAAM;2BAAC,eAAe,CAAA;;;ACrB3B;;AAEG;MAIU,cAAc,CAAA;AA4Df,IAAA,qBAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACA,IAAA,qBAAA,CAAA;AACA,IAAA,cAAA,CAAA;IA9DH,sBAAsB,GAAY,KAAK,CAAC;AAEtC,IAAA,iBAAiB,GACxB,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC7B,IAAA,8BAA8B,GACrC,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAC5B,IAAA,yBAAyB,GAChC,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE7B,IAAA,kBAAkB,CAA2B;IAC9C,gBAAgB,GAAmB,EAAE,CAAC;AAEtC,IAAA,+BAA+B,CAAe;AAC9C,IAAA,0BAA0B,CAAe;;AAGzC,IAAA,iBAAiB,CAAe;;AAGhC,IAAA,uBAAuB,CAAe;;AAGrC,IAAA,sBAAsB,GAC7B,IAAI,eAAe,CAAS,SAAS,CAAC,CAAC;AAEzC;;AAEG;AACI,IAAA,UAAU,GAAG,IAAI,eAAe,CAAY,SAAS,CAAC,CAAC;AAE9D;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AACO,IAAA,MAAM,CAAiB;AAE/B,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CACxD,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CACjC,CAAC;SACH;aAAM;AACL,YAAA,OAAO,EAAE,CAAC;SACX;KACF;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,OAAO,CAC1D,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CACjC,CAAC;SACH;aAAM;AACL,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf;KACF;AAED,IAAA,WAAA,CACU,qBAA4C,EAC5C,iBAAoC,EACpC,qBAA4C,EAC5C,cAA8B,EAAA;QAH9B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAEtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,CAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAY,CACxD,CAAC;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED;;;;AAIG;IACK,cAAc,GAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS;AAClB,aAAA,QAAQ,CACP,CAAC,MAA+B,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAClE;AACA,aAAA,SAAS,CAAC,CAAC,MAA+B,KAAI;AAC7C,YAAA,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,SAAS;AAClB,aAAA,IAAI,EAAE;AACN,aAAA,SAAS,CAAC,CAAC,UAAqC,KAAI;AACnD,YAAA,UAAU,CAAC,GAAG,CAAC,CAAC,GAA4B,KAAI;gBAC9C,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AAChC,oBAAA,IAAI,GAAG,CAAC,MAAM,YAAY,YAAY,EAAE;AACtC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChC,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,yBAAyB,CAC/B,CAAC;qBACH;AAAM,yBAAA,IAAI,GAAG,CAAC,MAAM,YAAY,gBAAgB,EAAE;AACjD,wBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CACpC,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,yBAAyB,CAC/B,CAAC;qBACH;AAAM,yBAAA,IAAI,GAAG,CAAC,MAAM,YAAY,gBAAgB,EAAE;AACjD,wBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CACpC,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,8BAA8B,EACnC,IAAI,CAAC,yBAAyB,CAC/B,CAAC;qBACH;iBACF;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AAC3D,YAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;SACzC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACvD,YAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;SACzC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AAC3D,YAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;SACzC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAChD,CAAC,SAAoB,KAAI;AACvB,YAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE;AAC9C,gBAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;aAC1C;AAED,YAAA,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CACxD,CAAC,MAAc,KAAK,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7D,CAAC;aACH;AACH,SAAC,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,+BAA+B;YAClC,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,eAAe,KAAI;AAChE,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAA4B,KAAI;oBAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AACjC,wBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAC7D,mCAAmC,CACpC,CAAC;wBACF,IAAI,cAAc,EAAE;4BAClB,IAAI,eAAe,EAAE;gCACnB,cAAc,CAAC,QAAQ,EAAE,CAAC;6BAC3B;iCAAM;gCACL,cAAc,CAAC,UAAU,EAAE,CAAC;6BAC7B;yBACF;qBACF;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CACxE,CAAC,UAAU,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAA4B,KAAI;gBAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;AACjC,oBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAC7D,kCAAkC,CACnC,CAAC;oBACF,IAAI,cAAc,EAAE;wBAClB,IAAI,UAAU,EAAE;4BACd,cAAc,CAAC,QAAQ,EAAE,CAAC;yBAC3B;6BAAM;4BACL,cAAc,CAAC,UAAU,EAAE,CAAC;yBAC7B;qBACF;iBACF;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CACF,CAAC;KACH;AAEO,IAAA,uBAAuB,CAAC,SAAkB,EAAA;QAChD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzC;AAEM,IAAA,sBAAsB,CAAC,EAAU,EAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;SACzC;KACF;AAEM,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC5C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK;AAC5B,aAAA,GAAG,EAAE;AACL,aAAA,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAClD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SAC5C;KACF;AAED;;;AAGG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;AACD,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;KACF;AAED;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC5C;AACD,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACtC;KACF;uGAzOU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAiB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAzB,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACiCD;;AAEG;AAwBU,IAAA,0BAA0B,GAAhC,MAAM,0BAA0B,CAAA;AA0C3B,IAAA,eAAA,CAAA;AACA,IAAA,oBAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,eAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,KAAA,CAAA;AAnDV,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAEQ,IAAA,IAAI,CAAoB;AACxB,IAAA,QAAQ,GAA0B,qBAAqB,CAAC,OAAO,CAAC;AAChE,IAAA,oBAAoB,CAAU;IAEhC,MAAM,GAAY,EAAE,CAAC;IACrB,YAAY,GAAY,EAAE,CAAC;AAE3B,IAAA,SAAS,CAAyB;AAClC,IAAA,SAAS,CAA0B;AACnC,IAAA,IAAI,CAAU;AACd,IAAA,cAAc,CAAU;IACxB,MAAM,GAAG,CAAC,CAAC;IAEX,QAAQ,GAAG,CAAC,CAAC;AAEb,IAAA,gBAAgB,GAA6B,IAAI,eAAe,CACrE,SAAS,CACV,CAAC;AAEM,IAAA,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAEhC,KAAK,GAAyB,IAAI,WAAW,CAAU,EAAE,CAAC,CAAC;AAE3D,IAAA,gBAAgB,GAAyB,IAAI,WAAW,CAAU,EAAE,CAAC,CAAC;IAEtE,OAAO,GAAG,KAAK,CAAC;IAEhB,cAAc,GAAG,CAAC,CAAC;AAEnB,IAAA,WAAW,GAAsB,iBAAiB,CAAC,MAAM,CAAC;AACzD,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEnC,IAAA,UAAU,CAAY;AAEvB,IAAA,YAAY,CAA2D;IAE9E,WACU,CAAA,eAAgC,EAChC,oBAA0C,EAC1C,iBAAoC,EACpC,YAA0B,EAC1B,QAAkB,EAClB,cAA8B,EAC9B,eAAgC,EAChC,iBAAoC,EACpC,SAAoB,EACpB,cAA8B,EAC9B,KAAwB,EAAA;QAVxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;KAC9B;IAEJ,QAAQ,GAAA;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACnC,IACE,KAAK,CAAC,KAAK;AACX,gBAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,CAClB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CACF,EACD;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzB;SACF;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAED,IAAA,aAAa,CAAC,KAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAED,IAAA,kBAAkB,CAAC,KAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;IAED,kBAAkB,GAAA;QAChB,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,QAAA,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC1B,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACpB;SACF;QACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAmB,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KACrD;AAED,IAAA,iBAAiB,CAAC,MAAO,EAAA;AACvB,QAAA,IAAI,cAAc,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS;AAChC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAClC,SAAS,CAAC,MAAK;AACd,YAAA,IACE,CAAC,MAAM;gBACP,IAAI,CAAC,YAAY,CAAC,MAAM;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAC1C;gBACA,IAAI,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,SAAS,EAAE;AACrD,oBAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AACrC,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACzB,4BAAA,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAC5C,KAAK,CAAC,KAAK,CAAC,QAAQ,CAClB,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAC/C,CACF,CAAC;4BACF,MAAM;yBACP;qBACF;iBACF;qBAAM;oBACL,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACrD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;wBAClC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;4BAC/B,cAAc,GAAG,KAAK,CAAC;yBACxB;AACH,qBAAC,CAAC,CAAC;iBACJ;gBAED,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,GAAG,IAAI,CAAC;oBAClD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBAC/D;aACF;AAAM,iBAAA,IACL,MAAM;gBACN,IAAI,CAAC,YAAY,CAAC,MAAM;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAC1C;AACA,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;AAC/C,oBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACrC,iBAAC,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,qBAAqB,CAAC,MAAM,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AACpD,YAAA,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACxD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACzD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE;AACnD,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,oBAAoB;AACtB,aAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,aAAA,SAAS,CAAC,CAAC,QAAmB,KAAI;YACjC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrB,gBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;oBACvC,OAAO,CAAC,CAAC,CAAC;iBACX;AACD,gBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;AACvC,oBAAA,OAAO,CAAC,CAAC;iBACV;AACD,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;IAED,qBAAqB,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU,EAAE;AAC9C,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,SAAS,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK,EAAE;YAC9D,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,SAAS,EAAE;AACrD,YAAA,MAAM,KAAK,GAA0B;AACnC,gBAAA,IAAI,EAAE,EAAE;aACT,CAAC;AACF,YAAA,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;AACL,YAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SAC5B;AACD,QAAA,IACE,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,UAAU;AACjD,YAAA,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK,EACrC;YACA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE;AAC3C,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;QAED,MAAM,YAAY,GAA4B,EAAE,CAAC;AACjD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,YAAA,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,oBAAoB;AACtB,iBAAA,cAAc,CACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,QAAQ,EACR,IAAI,CAAC,MAAM,CACZ;AACA,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAmB,KAAI;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,aAAa,GAAc,EAAE,CAAC;gBACpC,MAAM,gBAAgB,GAAc,EAAE,CAAC;AACvC,gBAAA,IAAI,OAAO,CAAC;AACZ,gBAAA,IAAI,UAAU,CAAC;AACf,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;oBAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;wBACrC,OAAO,CAAC,UAAU,CAAC,SAAS;AAC1B,4BAAA,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClC,wBAAA,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC9D,wBAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,wBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC3B;yBAAM;AACL,wBAAA,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,wBAAA,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC9B;AACH,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACpD,gBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;oBACnB,WAAW,GAAG,KAAK,CAAC;AACpB,oBAAA,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;AACzB,oBAAA,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;iBAC5B;qBAAM;AACL,oBAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC7B;AAED,gBAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CACvB,oCAAoC,EACpC,+BAA+B,EAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;iBACH;aACF,CAAC,CACH,CACJ,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,CAAC;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAClC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CACvB,mCAAmC,EACnC,+BAA+B,EAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,CACnB,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACN;IAED,YAAY,CAAC,OAAgB,EAAE,MAAgB,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,OAAO,EAAE;YACX,MAAM;kBACF,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;kBACzC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACnC;KACF;AAED;;AAEG;IACI,mBAAmB,CAAC,QAAmB,EAAE,MAAgB,EAAA;QAC9D,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU,EAAE;AAC9C,gBAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,oBAAA,IACE,KAAK,CAAC,OAAO,CAAC,SAAS;wBACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,IAAI;wBACxD,CAAC,MAAM,EACP;wBACA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;4BACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBAC9B;wBACD,OAAO;qBACR;oBACD,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AACnC,wBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC7B;iBACF;aACF;iBAAM;gBACL,IAAI,MAAM,EAAE;AACV,oBAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACrC,wBAAA,IACE,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;4BAC9B,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAC/B;4BACA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,4BAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;yBAC7B;qBACF;iBACF;AACD,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;aACxB;AACD,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC/B,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,CAAC,EAAE,CAAC;iBACL;aACF;YACD,IAAI,CAAC,YAAY,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAI;gBAC3C,MAAM,WAAW,GAAI,QAAQ,CAAC,CAAC,CAAS,CAAC,WAAW,CAAC;AACrD,gBAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACvB,oBAAA,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;AACxB,wBAAA,MAAM,EAAE,WAAW;8BACf,IAAI,CAAC,MAAM;AACX,gCAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gCAC1C,UAAU;AACZ,8BAAE,SAAS;AACb,wBAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;AACrB,4BAAA,KAAK,EAAE,yBAAyB;yBACjC,CAAC;AACF,wBAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;AACzB,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,KAAK,EAAE,QAAQ;yBAChB,CAAC;qBACH,CAAC;AACF,oBAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;AACzB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,KAAK,EAAE,QAAQ;qBAChB,CAAC;AACF,oBAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;AACrB,wBAAA,KAAK,EAAE,yBAAyB;qBACjC,CAAC;AACH,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB;AACnB,iBAAA,qBAAqB,CAAC;AACrB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,SAAS,EAAE,IAAI;aACc,CAAC;AAC/B,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AACpC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AAC5C,oBAAA,kBAAkB,EAAE,IAAI;oBACxB,KAAK,GAAG,OAAO;wBACb,CAAC;wBACD,KAAK;wBACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAW;AACd,oBAAA,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5B,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EACF,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU;AACxC,8BAAE,OAAO,CAAC,UAAU,CAAC,IAAI;AACzB,8BAAE,SAAS;AAChB,qBAAA;AACD,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAgB,CAAC;gBAClB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACpC,OAAO,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7C,iBAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU,EAAE;AAC9C,oBAAA,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAChE,oBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACvC,oBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBACvC;AACD,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAEH,CAAC;AACpB,gBAAA,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACN;KACF;AAED;;;AAGG;IACK,gBAAgB,CAAC,QAAmB,EAAE,EAAE,EAAA;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,OAAO;aACR;AACD,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,gBAAA,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,oBAAA,CAAC,EAAE,CAAC;iBACL;aACF;AACD,YAAA,IAAI,CAAC,iBAAiB;AACnB,iBAAA,qBAAqB,CAAC;AACrB,gBAAA,IAAI,EAAE,SAAS;gBACf,EAAE;AACF,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,SAAS;AACjB,iBAAA;aAC4B,CAAC;AAC/B,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,UAA6B,KAAI;gBAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI,KAAoB,CAAC;gBACzB,IAAI,CAAC,IAAI,EAAE;oBACT,KAAK,GAAG,wBAAwB,EAAE,CAAC;iBACpC;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,wBAAwB,EAAE,CAAC;iBAChE;AAED,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AAC5C,oBAAA,kBAAkB,EAAE,IAAI;oBACxB,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;wBAC5B,GAAG;wBACH,CAAC;wBACD,KAAK;wBACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAW;AACd,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,IAAI;oBACb,KAAK;AACN,iBAAA,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;oBAC1C,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnD,iBAAC,CAAC,CAAC;AACH,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAqB,CAAC;gBAC5C,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;oBACxD,IAAI,CAAC,GAAG,CAAC,WAAW,CAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CACrD,CAAC;AACF,oBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACV,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;wBACrC,GAAG;wBACH,CAAC;wBACD,KAAK;wBACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAW,CAAC;oBACf,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;iBACvC;AACD,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACN;KACF;AAEO,IAAA,aAAa,CAAC,IAAI,EAAA;AACxB,QAAA,IAAI,KAAoB,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC9D,YAAA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,YAAA,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,YAAA,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACjD,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACpD,YAAA,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;AACxB,gBAAA,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;oBACtB,GAAG,EAAE,0BAA0B,GAAG,GAAG;iBACtC,CAAC;AACH,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KACd;AACD;;AAEG;IACK,gBAAgB,CAAC,QAAmB,EAAE,EAAE,EAAA;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,OAAO;aACR;AACD,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,gBAAA,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnD,oBAAA,CAAC,EAAE,CAAC;iBACL;aACF;AACD,YAAA,IAAI,CAAC,iBAAiB;AACnB,iBAAA,qBAAqB,CAAC;AACrB,gBAAA,IAAI,EAAE,QAAQ;gBACd,EAAE;AACF,gBAAA,SAAS,EAAE,IAAI;aACc,CAAC;AAC/B,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AACpC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AAC5C,oBAAA,kBAAkB,EAAE,IAAI;oBACxB,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;wBAC5B,GAAG;wBACH,CAAC;wBACD,KAAK;wBACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAW;AACd,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;oBAC1C,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACnD,iBAAC,CAAC,CAAC;AACH,gBAAA,MAAM,EAAE,GAAG,UAAU,CAAC,EAAgC,CAAC;AACvD,gBAAA,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;oBACxD,IAAI,CAAC,GAAG,CAAC,WAAW,CAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CACrD,CAAC;AACF,oBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACV,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;wBACrC,GAAG;wBACH,CAAC;wBACD,KAAK;wBACL,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACpC,qCAAqC,CACtC,CAAW,CAAC;oBACf,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;iBACvC;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACN;KACF;AAED,IAAA,mBAAmB,CAAC,OAAO,EAAA;QACzB,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;gBACjD,cAAc,EAAE,OAAO,CAAC,UAAU;AAClC,gBAAA,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;AACvC,aAAA,CAAC,CAAC;AACH,YAAA,gBAAgB,CACd,IAAI,CAAC,GAAG,CAAC,cAAc,EACvB,CAAC,SAAS,CAAC,EACX,aAAa,CAAC,IAAI,CACnB,CAAC;SACH;KACF;AAED,IAAA,SAAS,CAAC,KAAK,EAAA;AACb,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;gBACvB,OAAO;aACR;SACF;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;uGAtlBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA0B,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpFvC,ijDA2CA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiCI,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAE1B,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,KAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACJ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAGA,0BAA0B,GAAA,UAAA,CAAA;AAvBtC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,qCAAqC;AAC5C,QAAA,IAAI,EAAE,kBAAkB;KACzB,CAAC;AACF;;AAEG;;qCA0D0B,eAAe;QACV,oBAAoB;QACvB,iBAAiB;QACtB,YAAY;QAChB,QAAQ;QACF,cAAc;QACb,eAAe;QACb,iBAAiB;QACzB,SAAS;QACJ,cAAc;QACvB,iBAAiB,CAAA,CAAA;AApDvB,CAAA,EAAA,0BAA0B,CAulBtC,CAAA;2FAvlBY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAftC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,mBAGlB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,0BAA0B;wBAC1B,0BAA0B;wBAC1B,cAAc;wBACd,uBAAuB;wBACvB,IAAI;wBACJ,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,ijDAAA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,CAAA;6WAOQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;;;AExEK,IAAA,uBAAuB,GAA7B,MAAM,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA,GAAgB;uGADL,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ECnBpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0EACA,EDgBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,qFAAE,8BAA8B,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEtD,uBAAuB,GAAA,UAAA,CAAA;AAXnC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,IAAI,EAAE,SAAS;KAChB,CAAC;;AAOW,CAAA,EAAA,uBAAuB,CAEnC,CAAA;2FAFY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAEpB,IAAI,EAAA,OAAA,EACP,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAA,QAAA,EAAA,0EAAA,EAAA,CAAA;;;AETpE;;AAEG;MAiBU,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAd3B,sBAAsB;YACtB,4BAA4B;YAC5B,uBAAuB;YACvB,6BAA6B;AAC7B,YAAA,0BAA0B,aAG1B,sBAAsB;YACtB,4BAA4B;YAC5B,uBAAuB;YACvB,6BAA6B;YAC7B,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAd3B,sBAAsB;YACtB,4BAA4B;YAC5B,uBAAuB;YACvB,6BAA6B;YAC7B,0BAA0B,CAAA,EAAA,CAAA,CAAA;;2FAUjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,4BAA4B;wBAC5B,uBAAuB;wBACvB,6BAA6B;wBAC7B,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,4BAA4B;wBAC5B,uBAAuB;wBACvB,6BAA6B;wBAC7B,0BAA0B;AAC3B,qBAAA;AACF,iBAAA,CAAA;;;ACMY,IAAA,8BAA8B,GAApC,MAAM,8BAA8B,CAAA;AAuB/B,IAAA,QAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,eAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,UAAA,CAAA;AA1BV;;AAEG;AACM,IAAA,GAAG,CAAS;AAErB;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,KAAK,GAAG,IAAI,eAAe,CAAO,SAAS,CAAC,CAAC;AAE7C,IAAA,KAAK,GAAG,IAAI,eAAe,CAAyB,SAAS,CAAC,CAAC;IAE/D,cAAc,GAAG,IAAI,CAAC;AAEd,IAAA,cAAc,CAAe;IAErC,WACU,CAAA,QAAkB,EAClB,WAAwB,EACxB,eAAgC,EAChC,cAA8B,EAC9B,UAAsB,EAAA;QAJtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAC5B;IAEJ,QAAQ,GAAA;QACN,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACzE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAI;YACrB,MAAM,2BAA2B,GAAG,MAAM;AACvC,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,eAAe,CAAC;AAC/C,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAI,CAAA,EAAA,CAAC,CAAC,EAAE,CAAA,CAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACzD,aAAC,CAAC,CAAC;AACL,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,gDAAgD,CACjD;AACD,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,wBAAA,iBAAiB,EAAE,IAAI;AACvB,wBAAA,YAAY,EAAE,SAAS;AACvB,wBAAA,cAAc,EAAE,KAAK;AACrB,wBAAA,SAAS,EAAE,CAAC;wBACZ,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC1D,4DAA4D,CAC7D;AACD,wBAAA,SAAS,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC;AAC3B,4BAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;gCACzB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,gCAAA,KAAK,EAAE,CAAC;6BACT,CAAC;AACF,4BAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;gCACrB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;6BACxB,CAAC;AACF,4BAAA,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;AACxB,gCAAA,MAAM,EAAE,CAAC;AACT,gCAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;oCACzB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iCACtB,CAAC;AACF,gCAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;oCACrB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;iCACxB,CAAC;6BACH,CAAC;yBACH,CAAC;AACF,wBAAA,YAAY,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC;AAC9B,4BAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;gCACzB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,gCAAA,KAAK,EAAE,CAAC;6BACT,CAAC;AACF,4BAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;gCACrB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;6BACxB,CAAC;AACF,4BAAA,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;AACxB,gCAAA,MAAM,EAAE,CAAC;AACT,gCAAA,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;oCACzB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;iCACtB,CAAC;AACF,gCAAA,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;oCACrB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;iCACxB,CAAC;6BACH,CAAC;yBACH,CAAC;AACH,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,6CAA6C,CAC9C;AACD,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,CAAC;AACR,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,2BAA2B;AACrC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,mDAAmD,CACpD;AACD,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE;wBACP,SAAS,EAAE,UAAU,CAAC,QAAQ;AAC/B,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,6CAA6C,CAC9C;AACD,oBAAA,OAAO,EAAE;wBACP,SAAS,EAAE,UAAU,CAAC,KAAK;AAC5B,qBAAA;AACF,iBAAA;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,KACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAC/B,CAAC;AACF,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE/C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;gBAC7D,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,SAAC,CACF,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,SAAS,GAAA;QACP,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAClC;AAED,IAAA,QAAQ,CAAC,IAA2B,EAAA;QAClC,MAAM,WAAW,GAAG,oDAAoD,CAAC;AACzE,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,KAAK,CACvB,2DAA2D,EAC3D,WAAW,CACZ,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7B;aAAM;AACL,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,IAAI,CAAwB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;iBAC3C,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,sDAAsD,EACtD,WAAW,CACZ,CAAC;AACJ,aAAC,CAAC,CAAC;YACL,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;uGAvKU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnB,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,uFChC3C,64BAgCA,EAAA,MAAA,EAAA,CAAA,mLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAmB,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;ADAa,8BAA8B,GAAA,UAAA,CAAA;AAV1C,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,KAAK,EAAE,yCAAyC;AAChD,QAAA,IAAI,EAAE,eAAe;KACtB,CAAC;qCA6BoB,QAAQ;QACL,WAAW;QACP,eAAe;QAChB,cAAc;QAClB,UAAU,CAAA,CAAA;AA3BrB,CAAA,EAAA,8BAA8B,CAwK1C,CAAA;2FAxKY,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,64BAAA,EAAA,MAAA,EAAA,CAAA,mLAAA,CAAA,EAAA,CAAA;0LAQ1B,GAAG,EAAA,CAAA;sBAAX,KAAK;;;MEfK,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAxB,wBAAwB,EAAA,YAAA,EAAA,CAJpB,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAN3C,YAAY;YACZ,eAAe;YACf,iBAAiB;YACjB,aAAa;AACb,YAAA,gBAAgB,aAGR,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAG7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAVjC,YAAY;YACZ,eAAe;YACf,iBAAiB;YACjB,aAAa;YACb,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAMP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;AACjB,qBAAA;oBACD,YAAY,EAAE,CAAC,8BAA8B,CAAC;oBAC9C,OAAO,EAAE,CAAC,8BAA8B,CAAC;AACzC,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAA;;;AC8BY,IAAA,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAqB1B,IAAA,QAAA,CAAA;AACD,IAAA,iBAAA,CAAA;AACC,IAAA,cAAA,CAAA;AACD,IAAA,YAAA,CAAA;AAvBA,IAAA,sBAAsB,CAAgC;IAEtD,eAAe,GAAY,KAAK,CAAC;AAE1C;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KAClC;AAEQ,IAAA,gBAAgB,GAAqB,gBAAgB,CAAC,KAAK,CAAC;IAC5D,wBAAwB,GAAY,IAAI,CAAC;AAElD,IAAA,WAAA,CACU,QAAkB,EACnB,iBAAoC,EACnC,cAA8B,EAC/B,YAA0B,EAAA;QAHzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACnB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACnC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAC/B;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACtE;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACxE,QAAA,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACpE;KACF;IAEO,UAAU,GAAA;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC;AACpE,QAAA,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACzD;KACF;AAEM,IAAA,WAAW,CAAC,IAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACtC;AAEM,IAAA,mBAAmB,CAAC,aAA4B,EAAA;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACzD;AAED,IAAA,sBAAsB,CAAC,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;KACrC;uGA/DU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EClDtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8hDAyCA,EDCI,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,KAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAGN,yBAAyB,GAAA,UAAA,CAAA;AApBrC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,oCAAoC;AAC3C,QAAA,IAAI,EAAE,WAAW;KAClB,CAAC;qCAqCoB,QAAQ;QACA,iBAAiB;QACnB,cAAc;QACjB,YAAY,CAAA,CAAA;AAxBxB,CAAA,EAAA,yBAAyB,CAgErC,CAAA;2FAhEY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAfrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,aAAa;wBACb,qBAAqB;wBACrB,4BAA4B;wBAC5B,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,8hDAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA;yJAGQ,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAcG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;;;AEhER;;AAEG;MAKU,wBAAwB,CAAA;AACnC,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAxB,wBAAwB,EAAA,OAAA,EAAA,CAHzB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAHzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;;2FAGxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;ACqCD;;AAEG;MAuBU,4BAA4B,CAAA;AAoC9B,IAAA,QAAA,CAAA;AACC,IAAA,eAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,KAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,WAAA,CAAA;AAzCH,IAAA,eAAe,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACnE,IAAA,YAAY,GACjB,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACnB,IAAA,IAAI,CAAmB;AACvB,IAAA,WAAW,CAAW;AACrB,IAAA,wBAAwB,CAAmB;AAC5C,IAAA,MAAM,CAAU;IACf,SAAS,GAAY,IAAI,CAAC;IAC1B,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzC,IAAA,UAAU,CAAe;IACzB,uBAAuB,GAAkC,EAAE,CAAC;AAC5D,IAAA,sBAAsB,CAAgC;AACtD,IAAA,WAAW,CAAmB;IAC9B,YAAY,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACnD,KAAK,GAAY,IAAI,CAAC;AAC7B,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;KACzC;IACD,IAAI,SAAS,CAAC,KAAuB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KAC5C;AACD,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC;KAC3C;IAED,IACI,sBAAsB,CAAC,KAAoC,EAAA;AAC7D,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACtC;AAED,IAAA,WAAA,CACS,QAAkB,EACjB,eAAgC,EAChC,cAA8B,EAC9B,KAAwB,EACxB,cAA8B,EAC9B,MAAqB,EACrB,WAA+B,EAAA;QANhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACjB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAEvC,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrD,4CAA4C,EAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB;AACD,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,MAAM,EAAE,SAAS;SAClB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAY,CAAC;QACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;AAEG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM;AAC7C,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aACtB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC;YACF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,cAAc,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;gBAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;YACD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,cAAc,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,cAAc,CAAC;gBACvC,UAAU,GAAG,IAAI,CAAC;aACnB;YACD,IAAI,cAAc,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,cAAc,CAAC;gBACvC,UAAU,GAAG,IAAI,CAAC;aACnB;YACD,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;aACpC;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,mBAAmB,EACnB,IAAI,CAAC,SAAS,EACd,YAAY,CAAC,OAAO,CACrB,CAAC;AACJ,SAAC,CAAC,CAAC;QAEL,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAC3C,mBAAmB,CACA,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CACxD,CAAC;KACH;AACD;;;AAGG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,KAAK,CAAC;AACV,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACjC,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC5D,OAAO,GAAG,CAAC,CAAC;SACb;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,CAAC;AAC1D,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc;aAC5B,SAAS,CAAC,IAAI,CAAC;AACf,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,gEAAgE,EAChE,kEAAkE,CACnE,CAAC;SACH;KACF;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,MAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;KACvE;AAED;;AAEG;IACK,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,2BAA2B,GAAA;AACjC,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjD,QAAA,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACrB,YAAA,IAAI,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;gBAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,IAAI,IAAI,EAAE;AACR,oBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,SAAA,EAAY,IAAI,CAAE,CAAA,GAAG,CAAA,QAAA,EAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AACrE,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAO,IAAA,EAAA,IAAI,EAAE,CAAC;AACxB,oBAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,oBAAA,CAAC,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,OAAO,CACnC,0CAA0C,EAC1C,CAAC,CACF,CAAC;iBACH;qBAAM;AACL,oBAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACb,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,KAAK,EAAE;wBACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBAC7C;iBACF;aACF;AACD,YAAA,IAAI,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;gBAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAA,MAAM,IAAI,GAAG,CAAW,QAAA,EAAA,IAAI,EAAE,CAAC;AAC/B,gBAAA,CAAC,CAAC,KAAK,GAAG,CAAO,IAAA,EAAA,IAAI,EAAE,CAAC;AACxB,gBAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACd,gBAAA,CAAC,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,OAAO,CACnC,0CAA0C,EAC1C,CAAC,CACF,CAAC;aACH;AACH,SAAC,CAAC,CAAC;AACH,QAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;AAED;;AAEG;IACK,kBAAkB,GAAA;QACxB,IAAI,CAAC,sBAAsB,GAAG,6BAA6B,CACzD,IAAI,CAAC,sBAAsB,CAC5B,CAAC;QACF,MAAM,WAAW,GAAuB,EAAE,CAAC;AAE3C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC;SACH;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACjD,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;YACrC,WAAW,CAAC,IAAI,CAAC;AACf,gBAAA,eAAe,EAAE,SAAS,CAAC,OAAO,CAChC,4CAA4C,EAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB;AACD,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;YACrC,WAAW,CAAC,IAAI,CAAC;AACf,gBAAA,eAAe,EAAE,SAAS,CAAC,OAAO,CAChC,4CAA4C,EAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB;AACD,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;YAC3C,WAAW,CAAC,IAAI,CAAC;AACf,gBAAA,eAAe,EAAE,SAAS,CAAC,OAAO,CAChC,kDAAkD,EAClD,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB;AACD,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE;;YAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,gBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,SAAA,EAAY,IAAI,CAAE,CAAA,GAAG,CAAA,QAAA,EAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AACrE,gBAAA,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,oBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrD,0CAA0C,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,oBAAA,YAAY,EAAE,KAAK;oBACnB,KAAK,EAAE,CAAO,IAAA,EAAA,IAAI,CAAE,CAAA;oBACpB,IAAI;oBACJ,IAAI,EAAE,CAAG,EAAA,IAAI,CAAE,CAAA;AACf,oBAAA,GAAG,EAAE,SAAS;AACd,oBAAA,MAAM,EAAE,SAAS;AAClB,iBAAA,CAAC,CAAC;aACJ;iBAAM;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;SACF;AACD,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAY,SAAA,EAAA,IAAI,EAAE,GAAG,CAAW,QAAA,EAAA,IAAI,EAAE,CAAC;AAChE,YAAA,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;AAC3B,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrD,0CAA0C,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,gBAAA,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,CAAO,IAAA,EAAA,IAAI,CAAE,CAAA;gBACpB,IAAI;gBACJ,IAAI,EAAE,CAAG,EAAA,IAAI,CAAE,CAAA;AACf,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;SACJ;QACD,IAAI,gBAAgB,GAAuB,EAAE,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;YAC9C,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AACtD,gBAAA,EAAE,CAAuB,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KAC9D;AAED;;;AAGG;AACK,IAAA,OAAO,CAAC,WAAoC,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,SAAA,EAAY,IAAI,CAAE,CAAA,GAAG,CAAA,QAAA,EAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AACrE,YAAA,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrD,0CAA0C,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AACD,gBAAA,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,CAAO,IAAA,EAAA,IAAI,CAAE,CAAA;gBACpB,IAAI;gBACJ,IAAI,EAAE,CAAG,EAAA,IAAI,CAAE,CAAA;AACf,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;;AAGG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAED;;AAEG;IACK,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,KAAK,EAAE;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAO,IAAA,EAAA,IAAI,EAAE,CAAC;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,SAAA,EAAY,IAAI,CAAE,CAAA,GAAG,CAAA,QAAA,EAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrE,0CAA0C,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;SACH;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,KAAK,EAAE;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAO,IAAA,EAAA,IAAI,EAAE,CAAC;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,CAAY,SAAA,EAAA,IAAI,EAAE,GAAG,CAAW,QAAA,EAAA,IAAI,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CACrE,0CAA0C,EAC1C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;SACH;KACF;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,aAA+B,EAAA;AAC5C,QAAA,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC;AACtC,QAAA,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QAClC,IAAI,QAAQ,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;YACzC,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK,UAAU,CAAC,YAAY,EAAE;oBAClC,QAAQ,GAAG,IAAI,CAAC;iBACjB;aACF;AAAM,iBAAA,IAAI,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;gBACrC,QAAQ,GAAG,IAAI,CAAC;aACjB;AACD,YAAA,IAAI,EAAE,CAAC;AACT,SAAC,CAAC,CAAC;QACH,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;AACnC,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,WAA6B,EAAA;AACxC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AACtE,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACxC,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3C,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,gBAAgB,GAAGW,MAAM,CAAC,eAAe,CAC7C,MAAM,EACN,UAAU,CAAC,IAAI,EACf,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC;YACF,IACE,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACpC,gBAAA,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACpC,gBAAA,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;gBACpC,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACpC;AACA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;oBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC7C;AACD,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;iBAC9B;aACF;AACH,SAAC,CAAC,CAAC;KACJ;uGA7bU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,ECxEzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oqIAoIA,ED5EI,MAAA,EAAA,CAAA,yyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,EACT,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,WAAW,8CACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAe,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGN,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAtBxC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EAGxB,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,KAAK;wBACL,eAAe;wBACf,oBAAoB;wBACpB,SAAS;wBACT,WAAW;wBACX,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,oqIAAA,EAAA,MAAA,EAAA,CAAA,yyBAAA,CAAA,EAAA,CAAA;iQAiCG,sBAAsB,EAAA,CAAA;sBADzB,KAAK;;;MEzDK,sBAAsB,CAAA;AAiBxB,IAAA,QAAA,CAAA;AACC,IAAA,cAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,SAAA,CAAA;IAnBH,KAAK,GAAY,KAAK,CAAC;AACvB,IAAA,SAAS,CAAU;AACnB,IAAA,uBAAuB,CAAU;AACjC,IAAA,IAAI,CAAmB;AACvB,IAAA,MAAM,CAAgB;AACtB,IAAA,GAAG,CAAkB;AACrB,IAAA,YAAY,CAAU;AAE7B;;AAEG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,WAAA,CACS,QAAkB,EACjB,cAA8B,EAC9B,WAA+B,EAC/B,SAAoB,EAAA;QAHrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACjB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CACxB,CAAC,EAAE,MACA,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,MAAM,CACvC,CAAC,KAAK,KACJ,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,CAC/D,CAAC,CACL,CAAC;KACH;AAED;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;AAED;;AAEG;IACK,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,MAAe,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,cAAc,CAAC,CAAC,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,YAAA,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;SACrB;AACD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACtD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9D,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,YAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;SACpB;KACF;AAED;;AAEG;AACH,IAAA,SAAS,CAAC,CAAC,EAAA;AACT,QAAA,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACjE,YAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;AAED;;AAEG;IACH,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACtD;AAED;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAChD;AAED;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACvD;uGAvHU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CnC,moFAwFA,EAAA,MAAA,EAAA,CAAA,6vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzDI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,mrBACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACL,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAGlB,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,KAAK;wBACL,oBAAoB;wBACpB,aAAa;wBACb,aAAa;wBACb,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,moFAAA,EAAA,MAAA,EAAA,CAAA,6vBAAA,CAAA,EAAA,CAAA;;;AERU,IAAA,wBAAwB,GAA9B,MAAM,wBAAwB,CAAA;AAQhB,IAAA,QAAA,CAAA;AAPnB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC;KAC1D;AACD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,eAAe,CAAC;KAChE;AAED,IAAA,WAAA,CAAmB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAEzC,IAAA,cAAc,CAAC,KAAK,EAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,QAAQ,GAAG,KAAK,CAAC;KAC1D;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,cAAc,GAAG,KAAK,CAAC;KAChE;uGAhBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA1B,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ECnCrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,20CA0CA,EDfI,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAGN,wBAAwB,GAAA,UAAA,CAAA;AAtBpC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,mCAAmC;AAC1C,QAAA,IAAI,EAAE,SAAS;KAChB,CAAC;AACF;;AAEG;;qCAuB4B,QAAQ,CAAA,CAAA;AAR1B,CAAA,EAAA,wBAAwB,CAiBpC,CAAA;2FAjBY,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EAGrB,IAAI,EACP,OAAA,EAAA;wBACP,sBAAsB;wBACtB,gBAAgB;wBAChB,4BAA4B;wBAC5B,oBAAoB;wBACpB,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,20CAAA,EAAA,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA,CAAA;;;MECU,wBAAwB,CAAA;AAkBf,IAAA,cAAA,CAAA;AAjBb,IAAA,aAAa,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpE,IAAA,cAAc,CAAe;AAE7B,IAAA,MAAM,CAAQ;AACd,IAAA,MAAM,GAA2B,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IACxE,IACI,KAAK,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAEQ,KAAK,GAAW,SAAS,CAAC;AAEnC,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAAI;IAEtD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,iBAAiB;AACrC,YAAA,IAAI,CAAC,MAAM;AACZ,SAAA,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAC1E,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,iBAAiB,GAAA;AACf,QAAA,IACE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK;YACnC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAa,CAAC,KAAK,CAAC,EAAE;gBACpD,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAC1C;AACA,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACpD;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,GAAG,IAAI,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SAC3D;KACF;uGA7CU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EClCrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2TAWA,EDeI,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGN,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,2TAAA,EAAA,CAAA;gFASG,KAAK,EAAA,CAAA;sBADR,KAAK;gBAUG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEWK,IAAA,uBAAuB,GAA7B,MAAM,uBAAuB,CAAA;AA+ExB,IAAA,QAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,mBAAA,CAAA;AACA,IAAA,KAAA,CAAA;AACA,IAAA,iBAAA,CAAA;IAlFH,0BAA0B,GAAY,KAAK,CAAC;IAE1C,8BAA8B,GAAY,KAAK,CAAC;IAEhD,2BAA2B,GAAY,KAAK,CAAC;IAE7C,8BAA8B,GAAY,KAAK,CAAC;IAEhD,SAAS,GAAY,IAAI,CAAC;IAE1B,UAAU,GAAY,IAAI,CAAC;IAE3B,iBAAiB,GAA6B,EAAE,CAAC;IAEjD,UAAU,GAAY,KAAK,CAAC;IAE5B,oBAAoB,GAAY,IAAI,CAAC;AAE9C,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAC1BmB,KAAG,CAAC,CAAC,MAAM,KACT,MAAM,CAAC,MAAM,CACX,CAAC,KAAK,KACJ,KAAK,CAAC,eAAe,KAAK,KAAK;AAC/B,aAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAChD,CACF,CACF,CAAC;KACH;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC1D;AAED,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC;YACE,WAAW,EAAE,qBAAqB,CAAC,OAAO;AAC3C,SAAA,EACD,IAAI,CAAC,iBAAiB,CACvB,CAAC;AAEF,QAAA,QAAQ,IAAI,CAAC,iBAAiB,CAAC,WAAW;YACxC,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;gBAC7D,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;AAC9B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;gBAC5D,MAAM;AACR,YAAA;gBACE,MAAM;SACT;AACD,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,QACE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,mBAAmB;AACrB,iBAAA,UAAU,EAAE;iBACZ,MAAM,CAAC,eAAe,CAAC;iBACvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EACnE;KACH;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7E;IAED,WACU,CAAA,QAAkB,EAClB,SAAoB,EACpB,mBAAwC,EACxC,KAAwB,EACxB,iBAAoC,EAAA;QAJpC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAC1C;IAEJ,QAAQ,GAAA;;QAEN,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SAC5B,EAAE,GAAG,CAAC,CAAC;KACT;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAChD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACvD;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE;YACxC,EAAE;gBACA,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;AAC9C,sBAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW;AACrC,sBAAE,KAAK,CAAC,EAAE,CAAC;SAChB;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KACrD;uGArHU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5B,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DpC,+0IAwHA,EAAA,MAAA,EAAA,CAAA,ogBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1EI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAGN,uBAAuB,GAAA,UAAA,CAAA;AA1BnC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,KAAK,EAAE,2BAA2B;AAClC,QAAA,IAAI,EAAE,KAAK;KACZ,CAAC;qCAqGoB,QAAQ;QACP,SAAS;QACC,mBAAmB;QACjC,iBAAiB;QACL,iBAAiB,CAAA,CAAA;AAnFnC,CAAA,EAAA,uBAAuB,CAsHnC,CAAA;2FAtHY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAGpB,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,kBAAkB;wBAClB,yBAAyB;wBACzB,wBAAwB;wBACxB,qBAAqB;wBACrB,wBAAwB;wBACxB,yBAAyB;wBACzB,2BAA2B;wBAC3B,uBAAuB;wBACvB,aAAa;wBACb,aAAa;wBACb,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,+0IAAA,EAAA,MAAA,EAAA,CAAA,ogBAAA,CAAA,EAAA,CAAA;8LAKQ,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,2BAA2B,EAAA,CAAA;sBAAnC,KAAK;gBAEG,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;;;AEvBK,IAAA,sBAAsB,GAA5B,MAAM,sBAAsB,CAAA;AA8DvB,IAAA,QAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,mBAAA,CAAA;AACA,IAAA,KAAA,CAAA;IAhEH,0BAA0B,GAAY,KAAK,CAAC;AAEnD,IAAA,OAAO,GAA6B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAA,oBAAoB,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5E,IAAA,OAAO,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC,CAAC;AAE7B,IAAA,YAAY,CAAe;AAC3B,IAAA,wBAAwB,CAAe;IAEtC,8BAA8B,GAAY,KAAK,CAAC;IAEhD,oBAAoB,GAAY,IAAI,CAAC;IAErC,mBAAmB,GAAY,KAAK,CAAC;IAErC,mBAAmB,GAAY,KAAK,CAAC;IAErC,iBAAiB,GAA6B,EAAE,CAAC;AAE1D,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtBoC,KAAG,CAAC,CAAC,MAAM,KACT,MAAM,CAAC,MAAM,CACX,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CACrE,CACF,CACF,CAAC;KACH;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtBA,KAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;KACH;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC1D;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,QACE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,mBAAmB;AACrB,iBAAA,UAAU,EAAE;iBACZ,MAAM,CAAC,eAAe,CAAC;iBACvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EACnE;KACH;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7E;AACD,IAAA,WAAA,CACU,QAAkB,EAClB,SAAoB,EACpB,mBAAwC,EACxC,KAAwB,EAAA;QAHxB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;KAC9B;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW;SACpC,CAAC;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAwB,KAAI;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CACb,CAAC,KAAK,KACJ,KAAK,CAAC,eAAe,KAAK,KAAK;AAC/B,iBAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAChD,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;AAC7C,sBAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACnC,sBAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;YACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;SACnE;aAAM;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;;QAGD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;SAC5B,EAAE,GAAG,CAAC,CAAC;KACT;AAED,IAAA,gBAAgB,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK,CAAC;SACd;aAAM,IACL,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAClC;AACA,YAAA,IAAI,sBAAsB,CAAC;AAC3B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CACpE,CAAC,KAAK,KAAI;gBACR,KAAK,CAAC,MAAM,KAAK,CAAC;AAChB,uBAAG,sBAAsB,GAAG,KAAK;AACjC,uBAAG,sBAAsB,GAAG,IAAI,CAAC,CAAC;AACtC,aAAC,CACF,CAAC;AAEF,YAAA,IAAI,sBAAsB,KAAK,KAAK,EAAE;AACpC,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;SAC7C;KACF;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAChD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACvD;uGAlJU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5B,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,ECvDnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8qHAgHA,EDlEI,MAAA,EAAA,CAAA,8dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FACJ,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,+BAA+B,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC/B,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAGN,sBAAsB,GAAA,UAAA,CAAA;AApBlC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,8BAA8B;AACrC,QAAA,IAAI,EAAE,2BAA2B;KAClC,CAAC;qCA8EoB,QAAQ;QACP,SAAS;QACC,mBAAmB;QACjC,iBAAiB,CAAA,CAAA;AAjEvB,CAAA,EAAA,sBAAsB,CAmJlC,CAAA;2FAnJY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EAGnB,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,wBAAwB;wBACxB,+BAA+B;wBAC/B,aAAa;wBACb,aAAa;wBACb,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,8qHAAA,EAAA,MAAA,EAAA,CAAA,8dAAA,CAAA,EAAA,CAAA;iKAYQ,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAEG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;AE3CR;;AAEG;MAIU,iBAAiB,CAAA;AAmBlB,IAAA,QAAA,CAAA;AACA,IAAA,cAAA,CAAA;IAnBF,2BAA2B,GAAW,EAAE,CAAC;AAE1C,IAAA,QAAQ,GAA6B,IAAI,eAAe,CAC7D,KAAK,CACN,CAAC;AACK,IAAA,qBAAqB,CAA0B;AAC/C,IAAA,sBAAsB,GAC3B,IAAI,eAAe,CAAS,aAAa,CAAC,CAAC;AACtC,IAAA,qBAAqB,CAAwB;IAC5C,MAAM,GAAmB,EAAE,CAAC;AAC7B,IAAA,0BAA0B,GAC/B,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AAEjC,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;IAED,WACU,CAAA,QAAkB,EAClB,cAA8B,EAAA;QAD9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAEtC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,YAAY,CAAU,EAAE,EAAE;AACzD,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,eAAe,CAC7C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAY;YACvD,IAAI,CAAC,2BAA2B,CACnC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAK;YAC/C,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;IAED,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,qBAAqB;YAC1B,QAAQ,CAAC,IAAI,CAAC;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS;SACzC,CAAC;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CACR,CAAC,KAA6D,KAAI;AAChE,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;AACnC,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC;AAClE,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,oBAAoB,EACpB,oBAAoB,IAAI,IAAI,CAAC,2BAA2B,CACzD,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO;aACR;AAED,YAAA,IAAI,KAAe,CAAC;AACpB,YAAA,IAAI,YAAY,KAAK,aAAa,EAAE;gBAClC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;oBACvC,OAAO;iBACR;AAED,gBAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CACtB,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,UAAU,EACrB,IAAI,CAAC,GAAG,CAAC,UAAU,CACpB,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;AAED,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAClC,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,UAAU,EACnB,WAAW,CACZ,CAAC;YACF,MAAM,kBAAkB,GAAG,YAAY,CACrC,WAA+B,EAC/B,CAAC,CACF,CAAC;AACF,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEzD,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,KAAK,KACJ,KAAK,CAAC,EAAE,YAAY,aAAa;AAChC,gBAAA,KAAK,CAAC,UAAkC,CAAC,OAAO,CAAC,SAAS;AAC3D,gBAAA,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,oBAAoB,CAC7B,CAAC;AAEF,YAAA,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,KAAI;gBACrC,MAAM,WAAW,GACf,cAAc,CAAC,EAAE,CAAC,SAAS,EAA8B,CAAC;;gBAG5D,MAAM,sBAAsB,GAC1B,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC7C,gBAAA,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,EAAE;AAC3D,oBAAA,sBAAsB,CAAC,GAAG,CAAC,CAAC,qBAAqB,KAAI;AACnD,wBAAA,MAAM,qBAAqB,GAAG,aAAa,CACzC,qBAAqB,EACrB,IAAI,CAAC,GAAG,CAAC,UAAU,CACpB,CAAC;wBACF,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAC5B,qBAAqB,EACrB,cAAc,CACf,CAAC;;AAEF,wBAAA,IAAI,CAAC,iBAAiB,CACpB,cAAc,EACd,KAAK,EACL,qBAAqB,EACrB,KAAK,EACL,CAAC,CACF,CAAC;AACJ,qBAAC,CAAC,CAAC;iBACJ;qBAAM;;oBAEL,MAAM,gBAAgB,GACpB,WAAW,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;oBACnD,IAAI,gBAAgB,EAAE;AACpB,wBAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACrD,wBAAA,MAAM,cAAc,GAAG,aAAa,CAClC,gBAAgB,EAChB,IAAI,CAAC,GAAG,CAAC,UAAU,CACpB,CAAC;wBACF,MAAM,oBAAoB,GACxB,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,wBAAA,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC;4BACnC,KAAK;4BACL,oBAAoB;AACrB,yBAAA,CAAC,CAAC;wBACH,MAAM,UAAU,GAAG,uBAAuB,CACxC,WAAW,EACX,WAAW,CACZ,CAAC;AACF,wBAAA,IAAI,UAAU,IAAI,oBAAoB,EAAE;4BACtC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAC5B,cAAc,EACd,cAAc,CACf,CAAC;;AAEF,4BAAA,IAAI,CAAC,iBAAiB,CACpB,cAAc,EACd,KAAK,EACL,cAAc,EACd,KAAK,EACL,UAAU,CACX,CAAC;yBACH;qBACF;iBACF;AACH,aAAC,CAAC,CAAC;SACJ,CACF,CACJ,CAAC;KACH;AAED;;;AAGG;IACK,iBAAiB,CACvB,KAAY,EACZ,2BAA2B,EAC3B,OAAgB,EAChB,KAAK,EACL,QAAQ,EAAA;AAER,QAAA,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;AACzB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,WAAW,EAAc,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAIqB,eAAO,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE;AAC7D,YAAA,iBAAiB,EAAE,UAAU;AAC7B,YAAA,cAAc,EAAE,UAAU;AAC3B,SAAA,CAAQ,CAAC;AACV,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,EAAE,OAAO;YACb,QAAQ;AACR,YAAA,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE;AAChC,YAAA,UAAU,EAAE;gBACV,GAAG,OAAO,CAAC,UAAU;gBACrB,GAAG;AACD,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,OAAO,EAAE,KAAK;oBACd,QAAQ;oBACR,2BAA2B;oBAC3B,UAAU,EAAE,KAAK,CAAC,EAAE;oBACpB,aAAa,EAAE,KAAK,CAAC,KAAK;AAC3B,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,EAAE,SAAS;AACd,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;IAED,aAAa,CAAC,OAAgB,EAAE,KAAY,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC;QACV,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AAClC,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;AAC3C,iBAAA,OAAqC,CAAC;AACzC,YAAA,IAAI,iBAAiB,CAAC,UAAU,EAAE;gBAChC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;aACnE;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,aAAa,CAAC,OAAgB,EAAE,UAAU,EAAA;QACxC,IAAI,KAAK,GAAG,UAAU,CAAC;AACvB,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAExE,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACvB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;;QAGH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,UAAU,EAAE;YACnD,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;SACtD;AACD,QAAA,OAAO,KAAK,CAAC;KACd;uGAvOU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/B,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACeY,IAAA,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAuB3B,IAAA,QAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACC,IAAA,eAAA,CAAA;AACA,IAAA,cAAA,CAAA;IAzBF,MAAM,GAAmB,EAAE,CAAC;AACE,IAAA,KAAK,CAAuB;AAElE,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,CAAC;KAC3D;IACD,IAAI,WAAW,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1D;AAED,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AACM,IAAA,oBAAoB,CAAU;AAC9B,IAAA,yBAAyB,CAAU;AAC1C;;;AAGG;AACI,IAAA,aAAa,CAAsB;AAE1C,IAAA,WAAA,CACS,QAAkB,EAClB,iBAAoC,EACnC,eAAgC,EAChC,cAA8B,EAAA;QAH/B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAEtC,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,4CAA4C,CAC7C;AACD,oBAAA,aAAa,EAAE,CAAC,YAAqB,KAAI;AACvC,wBAAA,OAAO,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;qBACxC;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAC3C,6CAA6C,CAC9C;AACD,oBAAA,aAAa,EAAE,CAAC,YAAqB,KAAI;AACvC,wBAAA,OAAO,CAAG,EAAA,WAAW,CAAC,eAAe,CACnC,YAAY,CAAC,UAAU,CAAC,QAAQ,EAChC,CAAC,CACF,GAAG,CAAC;qBACN;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,yBAAyB;YAC5B,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,cAAc,KAAK,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC;AAE/D,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YAC5D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,KAAK,aAAa,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,cAAc,GAAG,IAAI,CAAC;aACtD;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,cAAc,GAAG,KAAK,CAAC;aACvD;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,cAAc;YAC3C,IAAI,CAAC,yBAAyB,CAAC;KAClC;AAED,IAAA,oBAAoB,CAAC,CAAiB,EAAA;QACpC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC7D;AAED;;AAEG;IACH,mBAAmB,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAC/B,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,CAAC,QAAQ,EAAE,CACpE,CAAC;QACF,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,OAAO,CACzB,4CAA4C,EAC5C,8CAA8C,CAC/C,CAAC;SACH;KACF;uGAtGU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAgC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAzB,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDtC,w3EAwFA,EDlDI,MAAA,EAAA,CAAA,8vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,sPACpB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,4WACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,0iBACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAGN,yBAAyB,GAAA,UAAA,CAAA;AA1BrC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,sCAAsC;AAC7C,QAAA,IAAI,EAAE,QAAQ;KACf,CAAC;AACF;;AAEG;;qCA0CkB,QAAQ;QACC,iBAAiB;QAClB,eAAe;QAChB,cAAc,CAAA,CAAA;AA1B7B,CAAA,EAAA,yBAAyB,CAuGrC,CAAA;2FAvGY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EAGtB,IAAI,EACP,OAAA,EAAA;wBACP,oBAAoB;wBACpB,IAAI;wBACJ,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,WAAW;wBACX,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,w3EAAA,EAAA,MAAA,EAAA,CAAA,8vBAAA,CAAA,EAAA,CAAA;kKAIqC,KAAK,EAAA,CAAA;sBAA1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEnBtC;;AAEG;AA2BU,IAAA,gBAAgB,GAAtB,MAAM,gBAAgB,CAAA;AA6CjB,IAAA,QAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,iBAAA,CAAA;IA9CD,8BAA8B,GAAY,KAAK,CAAC;IAEhD,2BAA2B,GAAY,KAAK,CAAC;IAE7C,8BAA8B,GAAY,KAAK,CAAC;IAEhD,SAAS,GAAY,IAAI,CAAC;IAE1B,UAAU,GAAY,IAAI,CAAC;IAE3B,iBAAiB,GAA6B,EAAE,CAAC;IAEjD,UAAU,GAAY,KAAK,CAAC;AAErC,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC1D;AAED,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC;YACE,WAAW,EAAE,qBAAqB,CAAC,OAAO;AAC3C,SAAA,EACD,IAAI,CAAC,iBAAiB,CACvB,CAAC;AAEF,QAAA,QAAQ,IAAI,CAAC,iBAAiB,CAAC,WAAW;YACxC,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;gBAC7D,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;AAC9B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;gBAC5D,MAAM;AACR,YAAA;gBACE,MAAM;SACT;AACD,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAED,IAAA,WAAA,CACU,QAAkB,EAClB,SAAoB,EACpB,iBAAoC,EAAA;QAFpC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAC1C;AAEJ,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE;YACxC,EAAE;gBACA,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;AAC9C,sBAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW;AACrC,sBAAE,KAAK,CAAC,EAAE,CAAC;SAChB;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KACrD;uGA7DU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzB,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9D7B,unDAwCA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQI,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1C,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,EAClB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,EACxB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,0FACrB,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,2BAA2B,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAGN,gBAAgB,GAAA,UAAA,CAAA;AA1B5B,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,2BAA2B;AAClC,QAAA,IAAI,EAAE,KAAK;KACZ,CAAC;qCAmEoB,QAAQ;QACP,SAAS;QACD,iBAAiB,CAAA,CAAA;AA/CnC,CAAA,EAAA,gBAAgB,CA8D5B,CAAA;2FA9DY,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,mBAGP,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,kBAAkB;wBAClB,yBAAyB;wBACzB,wBAAwB;wBACxB,qBAAqB;wBACrB,wBAAwB;wBACxB,yBAAyB;wBACzB,2BAA2B;wBAC3B,uBAAuB;wBACvB,oBAAoB;wBACpB,2BAA2B;wBAC3B,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,unDAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,CAAA;4HAGQ,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,2BAA2B,EAAA,CAAA;sBAAnC,KAAK;gBAEG,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;AE3BR;;AAEG;AAgCU,IAAA,iBAAiB,GAAvB,MAAM,iBAAiB,CAAA;AAsHnB,IAAA,kBAAA,CAAA;AACC,IAAA,SAAA,CAAA;AACD,IAAA,QAAA,CAAA;AACC,IAAA,mBAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AAzHV,IAAA,OAAO,GAA6B,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAA,oBAAoB,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAEpE,IAAA,YAAY,CAAe;AAC3B,IAAA,wBAAwB,CAAe;IACxC,0BAA0B,GAAY,KAAK,CAAC;IAE1C,mBAAmB,GAAY,KAAK,CAAC;IAErC,mBAAmB,GAAY,KAAK,CAAC;IAErC,8BAA8B,GAAY,KAAK,CAAC;IAEhD,2BAA2B,GAAY,KAAK,CAAC;IAE7C,8BAA8B,GAAY,KAAK,CAAC;AAEhD,IAAA,oBAAoB,CAAS;IAE7B,SAAS,GAAY,IAAI,CAAC;IAE1B,UAAU,GAAY,IAAI,CAAC;IAE3B,oBAAoB,GAAY,IAAI,CAAC;AAE9C,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IACD,IAAI,iBAAiB,CAAC,KAA+B,EAAA;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;AACpE,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;AAC1C,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC;AAClD,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;AAE9C,QAAA,KAAK,CAAC,OAAO,GAAG,YAAY,KAAK,EAAE,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;AACnE,QAAA,KAAK,CAAC,WAAW;AACf,YAAA,gBAAgB,KAAK,SAAS,GAAG,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC;AACxE,QAAA,KAAK,CAAC,SAAS;AACb,YAAA,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;AAElE,QAAA,KAAK,CAAC,WAAW;AACf,YAAA,KAAK,CAAC,WAAW,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9D,QAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;AAE1E,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;IACO,kBAAkB,GAAG,EAAE,CAAC;AAEhC,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;IAEQ,UAAU,GAAY,KAAK,CAAC;AAErC,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtBmB,KAAG,CAAC,CAAC,MAAM,KACT,MAAM,CAAC,MAAM,CACX,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CACrE,CACF,CACF,CAAC;KACH;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtBA,KAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;KACH;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,KAAK,CAAC;KAC1D;AAED,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC;YACE,WAAW,EAAE,qBAAqB,CAAC,OAAO;AAC3C,SAAA,EACD,IAAI,CAAC,iBAAiB,CACvB,CAAC;AAEF,QAAA,QAAQ,IAAI,CAAC,iBAAiB,CAAC,WAAW;YACxC,KAAK,qBAAqB,CAAC,MAAM;AAC/B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC;gBAC7D,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;AAC9B,gBAAA,iBAAiB,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;gBAC5D,MAAM;AACR,YAAA;gBACE,MAAM;SACT;AACD,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAEwC,IAAA,QAAQ,CAAC;AAElD,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,QACE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,mBAAmB;AACrB,iBAAA,UAAU,EAAE;iBACZ,MAAM,CAAC,eAAe,CAAC;iBACvB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EACnE;KACH;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7E;IAED,WACS,CAAA,kBAAsC,EACrC,SAAoB,EACrB,QAAkB,EACjB,mBAAwC,EACxC,iBAAoC,EAAA;QAJrC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QACrC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACjB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAC1C;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW;SACpC,CAAC;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAwB,KAAI;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CACb,CAAC,KAAK,KACJ,KAAK,CAAC,eAAe,KAAK,KAAK;AAC/B,iBAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAChD,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;AAC7C,sBAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACnC,sBAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;YACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;SACnE;aAAM;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;;AAGD,QAAA,UAAU,CAAC,OAAO,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACjE;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;SAC7C;KACF;AAED,IAAA,gBAAgB,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAEO,WAAW,GAAA;QACjB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC;AACnE,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SACzD;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,QAAQ,EAAE;AAC1C,gBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aAC3C;iBAAM;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aAC3C;SACF;KACF;AAEM,IAAA,UAAU,CAAC,GAAsB,EAAA;QACtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CACpB,CAAC,KAAK,KACJ,KAAK,CAAC,eAAe,KAAK,KAAK;AAC/B,aAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAChD,CACF,CAAC;KACH;AAED,IAAA,iBAAiB,CAAC,cAAwC,EAAA;QACxD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;KACpE;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,KAAK,CAAC;SACd;aAAM,IACL,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAClC;AACA,YAAA,IAAI,sBAAsB,CAAC;AAC3B,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CACpE,CAAC,KAAK,KAAI;gBACR,KAAK,CAAC,MAAM,KAAK,CAAC;AAChB,uBAAG,sBAAsB,GAAG,KAAK;AACjC,uBAAG,sBAAsB,GAAG,IAAI,CAAC,CAAC;AACtC,aAAC,CACF,CAAC;AAEF,YAAA,IAAI,sBAAsB,KAAK,KAAK,EAAE;AACpC,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE;YACxC,EAAE;gBACA,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;AAC9C,sBAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW;AACrC,sBAAE,KAAK,CAAC,EAAE,CAAC;SAChB;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KACrD;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;KACzD;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;KACxD;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAChD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;KACvD;AAED,IAAA,kBAAkB,CAAC,KAAK,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,OAAO,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC;KACxE;AAED,IAAA,iBAAiB,CAAC,KAAK,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,QACE,IAAI,CAAC,SAAS;AACd,YAAA,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,UAAU,CAAC,OAAO;AAC1B,aAAC,OAAO,CAAC,UAAU,CAAC,WAAW;gBAC7B,OAAO,CAAC,UAAU,CAAC,UAAU;gBAC7B,OAAO,CAAC,UAAU,CAAC,YAAY;gBAC/B,OAAO,CAAC,UAAU,CAAC,MAAM;gBACzB,OAAO,CAAC,UAAU,CAAC,YAAY;AAC/B,gBAAA,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC9B;KACH;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;QACzB,IACE,CAAC,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;AAC1D,aAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ;gBAChC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxC,aAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,KAAK,KAAK,CAAC,EAAE,CAAC,EACpD;AACA,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;YAChC,IAAK,KAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtD,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;uGAtSU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAlC,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0B,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EClF9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4zMAwKA,EDzGI,MAAA,EAAA,CAAA,spBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,gnBACb,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EACzB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,8BAA8B,EAC9B,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,4FACvB,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,wBAAwB,EACxB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,6FACxB,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,+BAA+B,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC/B,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzB,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA+B,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAGN,iBAAiB,GAAA,UAAA,CAAA;AA/B7B,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,2BAA2B;AAClC,QAAA,IAAI,EAAE,KAAK;KACZ,CAAC;qCAiJ6B,kBAAkB;QAC1B,SAAS;QACX,QAAQ;QACI,mBAAmB;QACrB,iBAAiB,CAAA,CAAA;AA1HnC,CAAA,EAAA,iBAAiB,CAuS7B,CAAA;2FAvSY,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,mBAGR,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,IAAI;wBACJ,kBAAkB;wBAClB,yBAAyB;wBACzB,8BAA8B;wBAC9B,uBAAuB;wBACvB,2BAA2B;wBAC3B,yBAAyB;wBACzB,wBAAwB;wBACxB,qBAAqB;wBACrB,wBAAwB;wBACxB,wBAAwB;wBACxB,+BAA+B;wBAC/B,aAAa;wBACb,aAAa;wBACb,SAAS;wBACT,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,4zMAAA,EAAA,MAAA,EAAA,CAAA,spBAAA,CAAA,EAAA,CAAA;4LAUQ,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,2BAA2B,EAAA,CAAA;sBAAnC,KAAK;gBAEG,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBAEG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAGF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBA4BG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBA2CmC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AE1KzC;;AAEG;MAmBU,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhBxB,wBAAwB;YACxB,yBAAyB;YACzB,gBAAgB;YAChB,iBAAiB;YACjB,uBAAuB;AACvB,YAAA,sBAAsB,aAGtB,wBAAwB;YACxB,yBAAyB;YACzB,gBAAgB;YAChB,iBAAiB;YACjB,uBAAuB;YACvB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhBxB,wBAAwB;YACxB,yBAAyB;YACzB,gBAAgB;YAChB,iBAAiB;YACjB,uBAAuB;YACvB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAWb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,yBAAyB;wBACzB,gBAAgB;wBAChB,iBAAiB;wBACjB,uBAAuB;wBACvB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,yBAAyB;wBACzB,gBAAgB;wBAChB,iBAAiB;wBACjB,uBAAuB;wBACvB,sBAAsB;AACvB,qBAAA;AACF,iBAAA,CAAA;;;ACvBD;;AAEG;MAIU,YAAY,CAAA;AAMH,IAAA,QAAA,CAAA;AALpB;;AAEG;AACI,IAAA,KAAK,CAAmC;AAE/C,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAqB,EAAE,EAAE;AACpD,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC7C,IACE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EACpE;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,qBAAA,WAAW,EAAE;AACb,qBAAA,QAAQ,EAAE;AACV,qBAAA,MAAM,CAAC,CAAC,OAAO,KACb,OAAe,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAC/D;AACA,qBAAA,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;aAClE;AACH,SAAC,CAAC,CAAC;KACJ;uGAzBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxB,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACED;;AAEG;AAaU,IAAA,qBAAqB,GAA3B,MAAM,qBAAqB,CAAA;AAkBtB,IAAA,YAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAlBV;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAChC;AAED;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;IAED,WACU,CAAA,YAA0B,EAC1B,QAAkB,EAAA;QADlB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACxB;uGApBO,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApC,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlC,iEACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDyBY,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAEhB,qBAAqB,GAAA,UAAA,CAAA;AAZjC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,IAAI,EAAE,OAAO;KACd,CAAC;qCA0BwB,YAAY;QAChB,QAAQ,CAAA,CAAA;AAnBjB,CAAA,EAAA,qBAAqB,CAqBjC,CAAA;2FArBY,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAEZ,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,iEAAA,EAAA,CAAA;;;AEtB9B;;AAEG;MAKU,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAxB,wBAAwB,EAAA,OAAA,EAAA,CAHzB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAHzB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAGpB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;ACND;;AAEG;MAIU,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAFpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAFpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAEvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACSY,IAAA,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AAKT,IAAA,QAAA,CAAA;AAJpB,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;uGAL/B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB/B,yCACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDeY,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEb,kBAAkB,GAAA,UAAA,CAAA;AAX9B,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,6BAA6B;AACpC,QAAA,IAAI,EAAE,SAAS;KAChB,CAAC;qCAY8B,QAAQ,CAAA,CAAA;AAL3B,CAAA,EAAA,kBAAkB,CAM9B,CAAA;2FANY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,yCAAA,EAAA,CAAA;;;AEZ3B;;AAEG;MAKU,iBAAiB,CAAA;AAC5B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;uGANU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACMY,MAAA,0BAA0B,GAAG;IACxC,wBAAwB;IACxB,yBAAyB;IACzB,gBAAgB;IAChB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;;;ACYxB;;AAEG;MAIU,WAAW,CAAA;AA4DZ,IAAA,mBAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,cAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,QAAA,CAAA;IA/DH,iBAAiB,GAA4B,EAAE,CAAC;IAChD,kBAAkB,GAA6B,EAAE,CAAC;IAClD,2BAA2B,GAA6B,EAAE,CAAC;IAC3D,uBAAuB,GAA6B,EAAE,CAAC;AAEvD,IAAA,qBAAqB,CAAe;AACpC,IAAA,sBAAsB,CAAe;AAE5C;;;;AAIG;AACI,IAAA,aAAa,GAAwB;QAC1C,QAAQ,EAAE,aAAa,CAAC,OAAO;QAC/B,KAAK,EAAE,aAAa,CAAC,IAAI;KAC1B,CAAC;AAEO,IAAA,mBAAmB,GAA4B,IAAI,eAAe,CACzE,GAAG,CACJ,CAAC;AAEO,IAAA,WAAW,GAA4B,IAAI,eAAe,CACjE,SAAS,CACV,CAAC;AAEO,IAAA,WAAW,GAA4B,IAAI,eAAe,CACjE,SAAS,CACV,CAAC;AAEO,IAAA,eAAe,GAA6B,IAAI,eAAe,CACtE,KAAK,CACN,CAAC;AAEO,IAAA,6BAA6B,GACpC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAEpB,IAAA,qBAAqB,GAC5B,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AAExB,IAAA,eAAe,GAAkC,IAAI,eAAe,CAC3E,SAAS,CACV,CAAC;AAEF;;AAEG;AACM,IAAA,KAAK,GAAG,IAAI,WAAW,CAAe,EAAE,CAAC,CAAC;AAEnD;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,mBAAmB;AAC5B,aAAA,iBAAiB,EAAE;AACnB,aAAA,GAAG,CAAC,CAAC,MAAoB,KAAM,MAAM,CAAC,WAAmB,CAAC,IAAI,CAAC,CAAC;KACpE;IAED,WACU,CAAA,mBAAwC,EACxC,cAA8B,EAC9B,cAA8B,EAC9B,aAA4B,EAC5B,QAAkB,EAAA;QAJlB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAE1B,MAAM,kBAAkB,GACtB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAClD,YAAA,IAAI,CAAC,2BAA2B,GAAG,kBAAkB,CAAC,SAAS,CAAC;AAChE,YAAA,IAAI,CAAC,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC;SACzD;QAED,MAAM,4BAA4B,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAC1D,8BAA8B,CACpB,CAAC;QACb,IAAI,4BAA4B,EAAE;AAChC,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SACvE;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,KAAK,CAAC,CAAC;AAErE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB;AACvC,aAAA,UAAU,EAAE;AACZ,aAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAClD,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAC5B,CAAC,EAAE,KACD,EAAE,YAAY,gBAAgB;gBAC9B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAChD,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC7C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACvC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,KAAK,EAAE;oBACV,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACpD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBACzC;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAEO,8BAA8B,GAAA;AACpC,QAAA,MAAM,gBAAgB,GAAG,CAAC,MAAkC,KAAI;YAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AAC1C,SAAC,CAAC;QACF,OAAO,IAAI,mCAAmC,CAAC;YAC7C,gBAAgB;AACiB,SAAA,CAAC,CAAC;KACtC;AAED;;;AAGG;IACH,gCAAgC,GAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC3C,mCAAmC,CACpC,CAAC;AACF,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACrB;KACF;AAED;;;AAGG;IACH,kCAAkC,GAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC3C,mCAAmC,CACpC,CAAC;AACF,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,QAAQ,CAAC,UAAU,EAAE,CAAC;SACvB;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;AAED,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,iBAAiB,CAAC,MAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;AAED,IAAA,8BAA8B,CAAC,KAAK,EAAA;QAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChD;uGA3KU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCrBY,yBAAyB,CAAA;AAalB,IAAA,SAAA,CAAA;AACR,IAAA,WAAA,CAAA;AAbV,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;KAC3C;AACD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;KAC3C;AAEO,IAAA,YAAY,CAAe;AAC3B,IAAA,YAAY,CAAe;AAC3B,IAAA,gBAAgB,CAAe;IAEvC,WACkB,CAAA,SAA6B,EACrC,WAAwB,EAAA;QADhB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QACrC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC9B;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CACxD,CAAC,UAAkB,KAAI;YACrB,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;AACnD,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aACpC;AACH,SAAC,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CACxD,CAAC,UAAkB,KAAI;YACrB,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;AACnD,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aAC1C;AACH,SAAC,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAChE,CAAC,cAAuB,KAAI;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC3C,SAAC,CACF,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KACrC;AAGD,IAAA,kBAAkB,CAAC,UAAmB,EAAA;AACpC,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC5C;KACF;AAGD,IAAA,kBAAkB,CAAC,UAAmB,EAAA;AACpC,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC5C;KACF;uGA3DU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAcI,IAAI;gEAmCP,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQ5C,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACT9C;;AAEG;AA2BU,IAAA,0BAA0B,GAAhC,MAAM,0BAA0B,CAAA;AA2F3B,IAAA,QAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,KAAA,CAAA;AACD,IAAA,SAAA,CAAA;AACC,IAAA,cAAA,CAAA;AA9FV;;AAEG;IACM,SAAS,GAAY,IAAI,CAAC;AAEnC;;AAEG;IACM,oBAAoB,GAAW,UAAU,CAAC;IAE3C,6BAA6B,GAAY,KAAK,CAAC;IAChD,uBAAuB,GAAY,KAAK,CAAC;AAExC,IAAA,uBAAuB,CAAe;AACtC,IAAA,UAAU,CAAe;IACzB,sBAAsB,GAAc,EAAE,CAAC;IACvC,8BAA8B,GAAc,EAAE,CAAC;AAC/C,IAAA,cAAc,GAAkC,IAAI,eAAe,CACzE,SAAS,CACV,CAAC;AACK,IAAA,0BAA0B,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACvD,IAAA,2BAA2B,CAAe;AAC1C,IAAA,qBAAqB,CAAU;AAC/B,IAAA,sBAAsB,CAAU;AAEjC,IAAA,eAAe,GAA6B,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACrE,IAAA,gBAAgB,CAAe;AAEvC;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED;;;AAGG;AACH,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;KAChE;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;aACxB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,aAAA,IAAI,CACHT,KAAG,CACD,CAAC,OAAO,MACL,IAAI,CAAC,OAAO,GAAG,OAAO;AACrB,cAAG,OAAO,CAAC,MAAM,CAAC,IAAgB;AAClC,cAAE,SAAS,CAAC,CACjB,CACF,CAAC;KACL;AAEM,IAAA,OAAO,CAAU;IAEjB,IAAI,GAAG,EAAE,CAAC;AACT,IAAA,YAAY,CAAe;AAE5B,IAAA,eAAe,GAAG,IAAI,eAAe,CAAU,SAAS,CAAC,CAAC;AAE1D,IAAA,cAAc,GAAG,IAAI,eAAe,CAAgB,SAAS,CAAC,CAAC;AAC9D,IAAA,eAAe,CAAe;IAEtC,IACI,aAAa,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AACD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KAClC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC;KACnD;AAEO,IAAA,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AAEvC,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;KAC3C;IAED,WACU,CAAA,QAAkB,EAClB,WAAwB,EACxB,KAAiB,EAClB,SAAoB,EACnB,cAA8B,EACtC,aAA4B,EAAA;QALpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACnB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAGtC,IAAI,CAAC,6BAA6B,GAAG,aAAa,CAAC,SAAS,CAC1D,+BAA+B,CAChC,CAAC;QACF,IAAI,CAAC,uBAAuB,GAAG,aAAa,CAAC,SAAS,CACpD,yBAAyB,CAC1B,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CACxD,CAAC,UAAkB,KAAI;YACrB,IACE,UAAU,KAAK,SAAS;AACxB,gBAAA,UAAU,KAAK,IAAI;gBACnB,UAAU,KAAK,EAAE,EACjB;AACA,gBAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;AAAM,iBAAA,IAAI,UAAU,KAAK,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC;AACH,SAAC,CACF,CAAC;AAEF,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,gBAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;aACjC;SACF;QAED,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAK;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,QAAQ,EAAE;gBACZ,UAAU,CAAC,MAAK;;oBAEd,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC/C,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;qBACxC;AACH,iBAAC,EAAE,iBAAiB,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;aAC3C;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAAG,aAAa,CAAC;AACrD,oBAAA,IAAI,CAAC,cAAc;AACnB,oBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW;iBACpC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAsC,KAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAC9C,CAAC;aACH;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE;AAC5C,gBAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,aAAa,CAAC;oBACtD,IAAI,CAAC,WAAW,CAAC,eAAe;AAChC,oBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW;iBACpC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAsC,KAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAC/C,CAAC;aACH;SACF;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,uBAAuB,GAAG,aAAa,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,6BAA6B;AAC9C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,WAAW,CAAC,eAAe;YAChC,IAAI,CAAC,WAAW,CAAC,WAAW;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW;AACpC,SAAA,CAAC,CAAC,SAAS,CACV,CACE,KAOC,KACC;AACF,YAAA,MAAM,4BAA4B,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAE/B,YAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,MAAM,KACrC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,CACnD,CAAC;AACF,YAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAC9C,CAAC,MAAM,KACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO;AACvC,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;AAC3B,gBAAA,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;AACtB,gBAAA,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CACxB,CAAC;AAEF,YAAA,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;gBACjC,IAAI,4BAA4B,EAAE;AAChC,oBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAClD,MAAM,CAAC,MAAM,CACX,EAAE,EACF;AACE,wBAAA,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAuC;AAC/D,qBAAA,EACD,IAAI,CAAC,WAAW,CAAC,kBAAkB,EACnC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAC1D,CACF,CAAC;oBACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAe,CAAC,CAAC;AAChE,oBAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,UAAU,CACrC,MAAM,CAAC,MAAM,CAAC,IAAe,EAC7B,aAAa,CAAC,IAAI,CACnB,CAAC;AACF,oBAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE;wBACtC,IAAI,CAAC,mBAAmB,CACtB,MAAM,CAAC,MAA+B,EACtC,OAAO,CACR,CAAC;qBACH;iBACF;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CACF,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;AAChD,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3D;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,2BAA2B,GAAG,aAAa,CAAC;AAC/C,YAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM;YAC9B,IAAI,CAAC,WAAW,CAAC,eAAe;SACjC,CAAC;AACC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAA0B,CAAC;YACzD,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO;aACR;AACD,YAAA,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChC,gBAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,cAAc,CAAC,IAAI,EACnB,IAAI,CAAC,GAAG,CAAC,UAAU,CACpB,CAAC;AACF,gBAAA,MAAM,uBAAuB,GAAG,uBAAuB,CACrD,CAAC,iBAAiB,CAAC,EACnB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,EAAE,CAC1C,CAAC;AACF,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAClC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,uBAAuB,CAAC,CACpE,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACN;IAEO,mBAAmB,CACzB,MAA6B,EAC7B,OAAqD,EAAA;AAErD,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC,OAAO;SACR;AACD,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClE,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAA,IACE,wBAAwB,CACtB,IAAI,CAAC,GAAG,CAAC,cAAc,EACvB,UAAU,CAAC,SAAS,EAAsC,EAC1D,MAAM,CACP,EACD;AACA,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,YAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC;gBAC7B,IAAI,EAAE,CAAG,EAAA,OAAO,CAAiB,eAAA,CAAA;gBACjC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEpE,YAAA,IAAI,aAAa,CAAC;YAClB,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,QAAQ,OAAO;AACb,gBAAA,KAAK,SAAS;AACZ,oBAAA,aAAa,GAAG,4BAA4B,CAC1C,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,cAAc,EAAE,EAC3B,IAAI,CAAC,WAAW,CAAC,uBAAuB,EACxC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAC9C,CACF,CAAC;oBACF,YAAY,GAAG,CAAC,CAAC;oBACjB,MAAM;AACR,gBAAA,KAAK,OAAO;AACV,oBAAA,aAAa,GAAG,oBAAoB,CAClC,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,cAAc,EAAE,EAC3B,IAAI,CAAC,WAAW,CAAC,kBAAkB,EACnC,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAC5C,CACF,CAAC;oBACF,MAAM;AACR,gBAAA,KAAK,UAAU;AACb,oBAAA,aAAa,GAAG,4BAA4B,CAC1C,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,cAAc,EAAE,EAC3B,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAC5C,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CACtD,CACF,CAAC;oBACF,YAAY,GAAG,CAAC,CAAC;oBACjB,MAAM;aACT;AACD,YAAA,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CACtC,cAAc,EACd,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CACrC,CAAC;AACF,YAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;aAC7C;AACD,YAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AAC1B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,cAAc,CAAC;aAC9C;AACD,YAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1D;SACF;aAAM;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;SACpC;KACF;AAEO,IAAA,oBAAoB,CAAC,OAAyC,EAAA;QACpE,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACvD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;SACxC;QACD,IAAI,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACzD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;SACzC;AACD,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,WAAW,KAClD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,WAAW,CAAC,CACzD,CAAC;AACF,YAAA,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC;SAC1C;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;SAChD;AACD,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC5C;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAC/B;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;SACrC;KACF;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,MAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,4BAA4B,CACnD,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,MAAM,CAAC,IAAuC,EAAE,EAC3D,IAAI,CAAC,WAAW,CAAC,uBAAuB,EACxC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAC9C,CACF,CAAC;YAEF,MAAM,OAAO,GACX,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,CACxD,MAAM,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;YACJ,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,OAAO;aACR;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CACtC,MAAM,CAAC,IAAe,EACtB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CACrC,CAAC;SACH;KACF;AAED,IAAA,eAAe,CAAC,MAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YACpC,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GACX,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,CACxD,MAAM,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;YACJ,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,KAAK,GAAG,4BAA4B,CACxC,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,MAAM,CAAC,IAAuC,EAAE,EAC3D,IAAI,CAAC,WAAW,CAAC,uBAAuB,EACxC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAC9C,CACF,CAAC;AACF,gBAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACzB;YACD,OAAO;SACR;QACD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,IAAe,CAAC,CAAC;KACrE;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,MAAoB,EAAA;QACjC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE3C,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,WAAW,EAAE;AAC7C,gBAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;aACjC;iBAAM;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aAClC;SACF;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACxC;SACF;KACF;AAED,IAAA,QAAQ,CAAC,KAAsD,EAAA;AAC7D,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;AAC1C,aAAA,MAAM,CAAC,CAAC,MAAoB,KAAK,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;aACzE,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE;AAClC,YAAA,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,EAC3C;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;aACxD;SACF;QAED,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACnE,YAAA,IAAI,WAAW,CAAC;YAChB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC1C,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oBACnC,WAAW,GAAG,IAAI,CAAC;iBACpB;AAAM,qBAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;AAClD,oBAAA,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;iBAC/D;AAAM,qBAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;AAChD,oBAAA,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;iBAC7D;AAAM,qBAAA,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,WAAW,EAAE;AACnD,oBAAA,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;iBAChE;qBAAM;AACL,oBAAA,WAAW,GAAG,OAAO,CAAC,aAAa,CACjC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,eAAe,CACjD,CAAC;iBACH;gBAED,IACE,WAAW,KAAK,IAAI;oBACpB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,EAC9C;AACA,oBAAA,OAAO,CAAC,SAAS;AACf,wBAAA,WAAW,CAAC,SAAS;AACrB,4BAAA,WAAW,CAAC,YAAY;4BACxB,OAAO,CAAC,YAAY,CAAC;iBACxB;AACH,aAAC,CAAC,CAAC;SACJ,EAAE,GAAG,CAAC,CAAC;KACT;IAED,iBAAiB,GAAA;QACf,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AACvE,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,YAAY,CAAC;;AAEjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;AACzD,gBAAA,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;AACD,QAAA,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KAChC;IAED,cAAc,CAAC,UAAU,EAAE,IAAI,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;AAC9C,YAAA,UAAU,CAAC,SAAS;AAClB,gBAAA,IAAI,CAAC,SAAS;AACd,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;oBAC7B,UAAU,CAAC,YAAY,CAAC;SAC3B;KACF;AAED,IAAA,cAAc,CAAC,KAAkB,EAAA;QAC/B,IAAI,KAAK,IAAK,KAAK,CAAC,MAAc,EAAE,SAAS,KAAK,iBAAiB,EAAE;YACnE,OAAO;SACR;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;AACrC,gBAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aAClC;iBAAM;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;aACjC;SACF;KACF;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3D,gBAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;AACvC,gBAAA,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;AAC3C,aAAA,CAAC,CAAC;AACH,YAAA,gBAAgB,CACd,IAAI,CAAC,GAAG,CAAC,cAAc,EACvB,CAAC,cAAc,CAAC,EAChB,aAAa,CAAC,IAAI,CACnB,CAAC;SACH;KACF;AAED;;;;AAIG;AACK,IAAA,kBAAkB,CACxB,MAAoB,EACpB,MAAwB,GAAA,aAAa,CAAC,OAAO,EAAA;QAE7C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,YAAA,OAAO,SAAS,CAAC;SAClB;AACD,QAAA,MAAM,OAAO,GAAI,MAAgC,CAAC,IAAI,CAAC;;AAGvD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACrB,OAAO;SACR;AAED,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAC/C,MAAM,CAAC,MAAM,CACX,EAAE,EACF,EAAE,OAAO,EAAE,EACX,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAC5C,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CACtD,CACF,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;IAED,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAA;QACjC,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC;AAE3D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AACzD,QAAA,OAAO,UAAU,IAAI,aAAa,IAAI,OAAO,IAAI,UAAU,CAAC;KAC7D;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC5C,UAAU,CAAC,MAAK;YACd,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;aAC/B;AACD,YAAA,IAAI,CAAC,UAAU;AACb,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CACxD,CAAC,IAAa,KAAI;oBAChB,IACE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK;wBACtD,CAAC,kBAAkB,EACnB;wBACA,kBAAkB,GAAG,IAAI,CAAC;AAC1B,wBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AACxC,6BAAA,GAAG,EAAE;AACL,6BAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AACjC,wBAAA,IAAI,KAAK,CAAC;AACV,wBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;4BACzB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1C,gCAAA,KAAK,GAAG;oCACN,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;oCACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;iCACrC,CAAC;6BACH;iCAAM;gCACL,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,gCAAA,KAAK,GAAG;AACN,oCAAA,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7B,oCAAA,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;iCAC9B,CAAC;6BACH;yBACF;AACD,wBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,wBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;wBACzB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAE;4BAClD,MAAM,UAAU,GACd,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC;AACjD,4BAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;AACxC,iCAAA,GAAG,EAAE;AACL,iCAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AACjC,4BAAA,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CACnC,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,UAAU,EACrB,WAAW,CACZ,CAAC;AACF,4BAAA,MAAM,KAAK,GAAqB,YAAY,CAC1C,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAClC,CAAC,CACF,CAAC;4BACF,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,4BAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;4BACzB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;yBAC7C;qBACF;AACH,iBAAC,CACF,CAAC;SACL,EAAE,GAAG,CAAC,CAAC;KACT;uGAzpBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5B,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAqC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAxC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAyC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA7B,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5FvC,86GAsHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,8BAA8B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,KAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACvB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAGP,0BAA0B,GAAA,UAAA,CAAA;AA1BtC,IAAA,aAAa,CAAC;AACb,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,qCAAqC;AAC5C,QAAA,IAAI,EAAE,SAAS;KAChB,CAAC;qCAiHoB,QAAQ;QACL,WAAW;QACjB,UAAU;QACP,SAAS;QACH,cAAc;QACvB,aAAa,CAAA,CAAA;AAhGnB,CAAA,EAAA,0BAA0B,CA0pBtC,CAAA;2FA1pBY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,mBAElB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,iBAAiB;wBACjB,sBAAsB;wBACtB,8BAA8B;wBAC9B,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,uBAAuB;wBACvB,SAAS;wBACT,eAAe;wBACf,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,86GAAA,EAAA,CAAA;qMAMQ,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAgEF,aAAa,EAAA,CAAA;sBADhB,KAAK;;;AE/JR;;AAEG;MAKU,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,yBAAyB,EAAE,0BAA0B,CACrD,EAAA,OAAA,EAAA,CAAA,yBAAyB,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAEpD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHQ,0BAA0B,CAAA,EAAA,CAAA,CAAA;;2FAGpD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;AAChE,oBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;AACjE,iBAAA,CAAA;;;ACPD;;AAEG;MAKU,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAArB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAGvB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACMD;;AAEG;MAoBU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAf7B,mBAAmB;YACnB,mBAAmB;YACnB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,wBAAwB;YACxB,eAAe;YACf,mBAAmB;YACnB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAf7B,mBAAmB;YACnB,mBAAmB;YACnB,sBAAsB;YACtB,gBAAgB;YAChB,qBAAqB;YACrB,wBAAwB;YACxB,eAAe;YACf,mBAAmB;YACnB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,wBAAwB,CAAA,EAAA,CAAA,CAAA;;2FAGf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,mBAAmB;wBACnB,sBAAsB;wBACtB,gBAAgB;wBAChB,qBAAqB;wBACrB,wBAAwB;wBACxB,eAAe;wBACf,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,iBAAiB;wBACjB,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;ACjBD;;AAEG;MAIU,wBAAwB,CAAA;AAMzB,IAAA,gBAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAVV;;AAEG;IAEH,WACU,CAAA,gBAAkC,EAClC,WAAwB,EACxB,YAA0B,EAC1B,WAAwB,EACxB,SAAoB,EACpB,QAAkB,EAAA;QALlB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KACxB;IAEJ,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,UAAU,GAAA;QACR,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AACpD,YAAA,IAAI,YAAY,EAAE,IAAI,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW;AACb,qBAAA,UAAU,EAAE;qBACZ,SAAS,CAAC,CAAC,OAAO,KACjB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAClE,CAAC;aACL;iBAAM;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACrC;AACH,SAAC,CAAC,CAAC;KACJ;IAED,aAAa,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YAC/C,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAC9B,SAAS,EACT,iBAAiB,EACjB,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAC1B,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACJ;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAClE,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aACrE;AACH,SAAC,CAAC,CAAC;KACJ;IAED,YAAY,GAAA;QACV,IAAI,CAAC,WAAW,CAAC,WAAW;AACzB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,UAAkB,KAAI;YAChC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;AACnD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAC/B,UAAU,EACV,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAC7B,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;YAClE,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;AAED,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,SAAiB,CAAC;AACtB,gBAAA,IAAI,UAAkB,CAAC;AACvB,gBAAA,IAAI,SAAiB,CAAC;AACtB,gBAAA,IAAI,UAAkB,CAAC;gBAEvB,QAAQ,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI;AACnC,oBAAA,KAAK,KAAK;AACR,wBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU;AACnC,6BAAA,OAA+B,CAAC;AACnC,wBAAA,MAAM,YAAY,GAAW,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;AACzD,wBAAA,MAAM,MAAM,GAAW,aAAa,CAAC,GAAG,CAAC;AACzC,wBAAA,MAAM,OAAO,GAAW,aAAa,CAAC,IAAI,CAAC;AAC3C,wBAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzB,4BAAA,KAAK,EAAE,YAAY;AACnB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,GAAG,EAAE,MAAM;AACZ,yBAAA,CAAC,CAAC;wBACH,MAAM;AACR,oBAAA,KAAK,MAAM;AACT,wBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU;AACpC,6BAAA,OAAgC,CAAC;AACpC,wBAAA,MAAM,aAAa,GAAW,cAAc,CAAC,KAAK,CAAC;AACnD,wBAAA,MAAM,OAAO,GAAW,cAAc,CAAC,GAAG,CAAC;AAC3C,wBAAA,MAAM,SAAS,GAAW,cAAc,CAAC,SAAS,CAAC;AACnD,wBAAA,MAAM,QAAQ,GAAW,cAAc,CAAC,IAAI,CAAC;AAC7C,wBAAA,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,4BAAA,KAAK,EAAE,aAAa;AACpB,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,GAAG,EAAE,OAAO;4BACZ,SAAS;AACV,yBAAA,CAAC,CAAC;wBACH,MAAM;AACR,oBAAA,KAAK,YAAY,CAAC;AAClB,oBAAA,KAAK,gBAAgB,CAAC;AACtB,oBAAA,KAAK,iBAAiB;AACpB,wBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,aAGD,CAAC;AACrC,wBAAA,MAAM,QAAQ,GAAW,cAAc,CAAC,KAAK,CAAC;AAC9C,wBAAA,MAAM,OAAO,GAAW,cAAc,CAAC,GAAG,CAAC;AAC3C,wBAAA,MAAM,QAAQ,GAAW,cAAc,CAAC,IAAI,CAAC;AAC7C,wBAAA,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,GAAG,EAAE,OAAO;AACb,yBAAA,CAAC,CAAC;wBACH,MAAM;AACR,oBAAA,KAAK,KAAK;AACR;;;;;AAKE;;wBAEF,MAAM;iBACT;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAC9B,OAAO,EACP,UAAU,EACV,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,CACnD,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;uGAjJU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAiD,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACbY,MAAA,6BAA6B,GAAG;IAC3C,sBAAsB;IACtB,4BAA4B;IAC5B,uBAAuB;IACvB,6BAA6B;IAC7B,0BAA0B;;;ACF5B;;AAEG;MAIU,UAAU,CAAA;AAUX,IAAA,aAAA,CAAA;AACA,IAAA,2BAAA,CAAA;AACA,IAAA,mBAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAZV;;AAEG;AACI,IAAA,KAAK,GAAG,IAAI,WAAW,CAAe,EAAE,CAAC,CAAC;IAC1C,iBAAiB,GAA6B,EAAE,CAAC;IACjD,0BAA0B,GAA6B,EAAE,CAAC;IAC1D,sBAAsB,GAA6B,EAAE,CAAC;AAE7D,IAAA,WAAA,CACU,aAA4B,EAC5B,2BAAwD,EACxD,mBAAwC,EACxC,QAAkB,EAAA;QAHlB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAA2B,CAAA,2BAAA,GAA3B,2BAA2B,CAA6B;QACxD,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAE1B,MAAM,iBAAiB,GACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACpD,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,YAAA,IAAI,CAAC,0BAA0B,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAC9D,YAAA,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,KAAK,CAAC;SACvD;QACD,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAC1B,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,mBAAmB,CACzB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;KACrD;uGA5BU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArD,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;AChBD;;AAEG;MAKU,6BAA6B,CAAA;uGAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAA7B,6BAA6B,EAAA,OAAA,EAAA,CAH9B,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC1B,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAEzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,YAH9B,0BAA0B,CAAA,EAAA,CAAA,CAAA;;2FAGzB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;ACND;;AAEG;MAKU,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAArB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;wGAExB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;ACAY,MAAA,6BAA6B,GAAG;IAC3C,yBAAyB;IACzB,0BAA0B;;;ACZ5B;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"igo2-integration.mjs","sources":["../../../packages/integration/src/lib/about/about-tool/about-tool.component.ts","../../../packages/integration/src/lib/about/about-tool/about-tool.component.html","../../../packages/integration/src/lib/about/about.module.ts","../../../packages/integration/src/lib/map/map.state.ts","../../../packages/integration/src/lib/catalog/catalog.state.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.ts","../../../packages/integration/src/lib/import-export/import-export.state.ts","../../../packages/integration/src/lib/tool/tool.state.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.module.ts","../../../packages/integration/src/lib/catalog/catalog.module.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.html","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.html","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.html","../../../packages/integration/src/lib/map/layer-list-tool.state.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.html","../../../packages/integration/src/lib/context/context.state.ts","../../../packages/integration/src/lib/context/index.ts","../../../packages/integration/src/lib/context/context.module.ts","../../../packages/integration/src/lib/directions/directions.state.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.html","../../../packages/integration/src/lib/directions/directions.module.ts","../../../packages/integration/src/lib/draw/draw.state.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.html","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.module.ts","../../../packages/integration/src/lib/draw/draw.module.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.html","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.html","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.html","../../../packages/integration/src/lib/storage/storage.state.ts","../../../packages/integration/src/lib/workspace/shared/workspace.utils.ts","../../../packages/integration/src/lib/workspace/shared/edition-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/feature-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/wfs-actions.service.ts","../../../packages/integration/src/lib/workspace/workspace.state.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.html","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.html","../../../packages/integration/src/lib/filter/filter.module.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.html","../../../packages/integration/src/lib/geometry-form/geometry-form.module.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.html","../../../packages/integration/src/lib/import-export/import-export.module.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.html","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.ts","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.html","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.ts","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.html","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.ts","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.html","../../../packages/integration/src/lib/map/map-proximity.state.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.html","../../../packages/integration/src/lib/map/map-tool/map-tool.component.ts","../../../packages/integration/src/lib/map/map-tool/map-tool.component.html","../../../packages/integration/src/lib/map/map-tools/map-tools.component.ts","../../../packages/integration/src/lib/map/map-tools/map-tools.component.html","../../../packages/integration/src/lib/map/map.module.ts","../../../packages/integration/src/lib/measure/measure.state.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.html","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.module.ts","../../../packages/integration/src/lib/measure/measure.module.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.html","../../../packages/integration/src/lib/print/print.module.ts","../../../packages/integration/src/lib/map/index.ts","../../../packages/integration/src/lib/search/search.state.ts","../../../packages/integration/src/lib/search/search-bar/search-bar-binding.directive.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.html","../../../packages/integration/src/lib/search/search.module.ts","../../../packages/integration/src/lib/workspace/workspace.module.ts","../../../packages/integration/src/lib/integration.module.ts","../../../packages/integration/src/lib/analytics/analytics-listener.service.ts","../../../packages/integration/src/lib/filter/index.ts","../../../packages/integration/src/lib/search/query.state.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.module.ts","../../../packages/integration/src/lib/search/search-bar/search-bar.module.ts","../../../packages/integration/src/lib/search/index.ts","../../../packages/integration/src/public_api.ts","../../../packages/integration/src/igo2-integration.ts"],"sourcesContent":["import { NgFor, NgIf } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport {\r\n CustomHtmlComponent,\r\n InteractiveTourComponent,\r\n ToolComponent\r\n} from '@igo2/common';\r\nimport { ConfigService, version } from '@igo2/core/config';\r\nimport { LanguageService } from '@igo2/core/language';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { of } from 'rxjs';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport { AllEnvironmentOptions } from '../../environment';\r\n\r\n@ToolComponent({\r\n name: 'about',\r\n title: 'igo.integration.tools.about',\r\n icon: 'help-circle'\r\n})\r\n@Component({\r\n selector: 'igo-about-tool',\r\n templateUrl: './about-tool.component.html',\r\n styleUrls: ['./about-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n InteractiveTourComponent,\r\n NgIf,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n NgFor,\r\n CustomHtmlComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AboutToolComponent implements OnInit {\r\n private configOptions: AllEnvironmentOptions;\r\n @Input()\r\n get headerHtml() {\r\n return this._headerHtml;\r\n }\r\n set headerHtml(value: string) {\r\n this._headerHtml = Array.isArray(value) ? value.join('\\n') : value;\r\n }\r\n\r\n @Input()\r\n get html() {\r\n return this._html;\r\n }\r\n set html(value: string) {\r\n this._html = Array.isArray(value) ? value.join('\\n') : value;\r\n }\r\n private _discoverTitleInLocale: string = 'IGO';\r\n public discoverTitleInLocale$: Observable<string> = of(\r\n this._discoverTitleInLocale\r\n );\r\n\r\n @Input()\r\n get discoverTitleInLocale() {\r\n return this._discoverTitleInLocale;\r\n }\r\n set discoverTitleInLocale(value: string) {\r\n this._discoverTitleInLocale = value;\r\n this.discoverTitleInLocale$ = of(value);\r\n }\r\n\r\n @Input() trainingGuideURLs;\r\n\r\n public effectiveVersion: string;\r\n private _html: string = 'igo.integration.aboutTool.html';\r\n private _headerHtml: string;\r\n\r\n private baseUrlProfil;\r\n private baseUrlGuide;\r\n\r\n public loading = false;\r\n\r\n constructor(\r\n public configService: ConfigService,\r\n public auth: AuthService,\r\n private http: HttpClient,\r\n private cdRef: ChangeDetectorRef,\r\n private languageService: LanguageService\r\n ) {\r\n this.headerHtml = this.languageService.translate.instant(\r\n 'igo.integration.aboutTool.headerHtml'\r\n );\r\n this.configOptions = this.configService.getConfigs();\r\n const configVersion = this.configOptions.version;\r\n this.effectiveVersion =\r\n configVersion?.app || configVersion?.lib || version.lib;\r\n this.baseUrlProfil = this.configOptions.storage?.url;\r\n this.baseUrlGuide =\r\n this.configOptions.depot?.url +\r\n // todo validate this property\r\n (this.configOptions.depot as any)?.guideUrl;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.auth.authenticated && this.configOptions.context?.url) {\r\n this.http.get(this.baseUrlProfil).subscribe((profil) => {\r\n const recast = profil as any;\r\n this.trainingGuideURLs = recast.guides;\r\n this.cdRef.detectChanges();\r\n });\r\n } else if (\r\n this.auth.authenticated &&\r\n !this.configOptions.context?.url &&\r\n this.configOptions.depot?.trainingGuides\r\n ) {\r\n this.trainingGuideURLs = this.configOptions.depot?.trainingGuides;\r\n }\r\n }\r\n\r\n openGuide(guide?) {\r\n this.loading = true;\r\n const url = guide\r\n ? this.baseUrlGuide + guide + '?'\r\n : this.baseUrlGuide + this.trainingGuideURLs[0] + '?';\r\n this.http\r\n .get(url, {\r\n responseType: 'blob'\r\n })\r\n .subscribe(() => {\r\n this.loading = false;\r\n window.open(url, '_blank');\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n formatFileName(name: string) {\r\n name = name.split('_').join(' ');\r\n const index = name.indexOf('.');\r\n name = name.slice(0, index);\r\n return name;\r\n }\r\n}\r\n","<p></p>\n<igo-interactive-tour\n mat-raised-button\n tourToStart=\"global\"\n menuIsOpen=\"true\"\n styleButton=\"raised\"\n [discoverTitleInLocale$]=\"discoverTitleInLocale$\"\n>\n</igo-interactive-tour>\n\n<button\n *ngIf=\"\n auth.authenticated && trainingGuideURLs && trainingGuideURLs.length === 1\n \"\n class=\"training-guide-button\"\n mat-raised-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n>\n <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon svgIcon=\"file-document\"></mat-icon>\n</button>\n\n<button\n *ngIf=\"\n auth.authenticated && trainingGuideURLs && trainingGuideURLs.length > 1\n \"\n class=\"training-guide-button\"\n mat-raised-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n>\n <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon svgIcon=\"file-document\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let guide of trainingGuideURLs\"\n mat-menu-item\n (click)=\"openGuide(guide)\"\n >\n {{ formatFileName(guide) }}\n </button>\n</mat-menu>\n\n<igo-custom-html\n *ngIf=\"headerHtml !== ''\"\n class=\"mat-typography\"\n [html]=\"headerHtml | translate\"\n>\n</igo-custom-html>\n\n<igo-custom-html\n class=\"mat-typography\"\n [html]=\"html | translate: { version: effectiveVersion }\"\n>\n</igo-custom-html>\n","import {\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n ModuleWithProviders,\r\n NgModule\r\n} from '@angular/core';\r\n\r\nimport { AboutToolComponent } from './about-tool/about-tool.component';\r\n\r\n/**\r\n * @deprecated import the AboutToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [AboutToolComponent],\r\n exports: [AboutToolComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class IgoAppAboutModule {\r\n static forRoot(): ModuleWithProviders<IgoAppAboutModule> {\r\n return {\r\n ngModule: IgoAppAboutModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core/config';\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport { IgoMap, MapService, ProjectionService } from '@igo2/geo';\r\n\r\n// import { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Service that holds the state of the map module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapState {\r\n // public mapCenter$ = new BehaviorSubject<boolean>(false);\r\n get showAllLegendsValue(): boolean {\r\n return this._legendToolShowAll;\r\n }\r\n\r\n set showAllLegendsValue(value) {\r\n this._legendToolShowAll = value;\r\n }\r\n private _legendToolShowAll: boolean;\r\n\r\n /**\r\n * Active map\r\n */\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n private _map: IgoMap;\r\n\r\n constructor(\r\n private mapService: MapService,\r\n private projectionService: ProjectionService, // Don't remove this or it'll never be injected,\r\n private storageService: StorageService,\r\n private configService: ConfigService\r\n ) {\r\n this._map = new IgoMap(\r\n {\r\n controls: {\r\n scaleLine: true,\r\n attribution: {\r\n collapsed: true\r\n }\r\n }\r\n },\r\n this.storageService,\r\n this.configService\r\n );\r\n\r\n this.mapService.setMap(this.map);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { EntityStore } from '@igo2/common';\r\nimport { Catalog, CatalogItem } from '@igo2/geo';\r\n\r\n/**\r\n * Service that holds the state of the catalog module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CatalogState {\r\n /**\r\n * Store that contains all the catalogs\r\n */\r\n get catalogStore(): EntityStore<Catalog> {\r\n return this._catalogStore;\r\n }\r\n private _catalogStore: EntityStore<Catalog>;\r\n\r\n /**\r\n * Catalog -> Catalog items store mapping\r\n */\r\n private catalogItemsStores = new Map<string, EntityStore<CatalogItem>>();\r\n\r\n constructor(authService: AuthService) {\r\n this._catalogStore = new EntityStore([]);\r\n\r\n authService.authenticate$.subscribe(() => {\r\n this.clearCatalogItemsStores();\r\n });\r\n }\r\n\r\n /**\r\n * Get a catalog's items store\r\n * @param catalog Catalog\r\n * @returns Store that contains the catalog items\r\n */\r\n getCatalogItemsStore(catalog: Catalog): EntityStore<CatalogItem> {\r\n return this.catalogItemsStores.get(catalog.id as string);\r\n }\r\n\r\n /**\r\n * Bind a catalog items store to a catalog\r\n * @param catalog Catalog\r\n * @param store Catalog items store\r\n */\r\n setCatalogItemsStore(catalog: Catalog, store: EntityStore<CatalogItem>) {\r\n this.catalogItemsStores.set(catalog.id as string, store);\r\n }\r\n\r\n /**\r\n * Clear all catalog items stores\r\n */\r\n clearCatalogItemsStores() {\r\n this.catalogItemsStores.clear();\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { EntityRecord, EntityStore, ToolComponent } from '@igo2/common';\r\nimport {\r\n Catalog,\r\n CatalogBrowserComponent,\r\n CatalogItem,\r\n CatalogItemState,\r\n CatalogService,\r\n IgoMap\r\n} from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { CatalogState } from '../catalog.state';\r\n\r\n/**\r\n * Tool to browse a catalog's groups and layers and display them to a map.\r\n */\r\n@ToolComponent({\r\n name: 'catalogBrowser',\r\n title: 'igo.integration.tools.catalog',\r\n icon: 'photo-browser',\r\n parent: 'catalog'\r\n})\r\n@Component({\r\n selector: 'igo-catalog-browser-tool',\r\n templateUrl: './catalog-browser-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgIf, CatalogBrowserComponent, AsyncPipe]\r\n})\r\nexport class CatalogBrowserToolComponent implements OnInit, OnDestroy {\r\n catalog: Catalog;\r\n\r\n /**\r\n * Store that contains the catalog items\r\n * @internal\r\n */\r\n store$ = new BehaviorSubject<EntityStore<CatalogItem, CatalogItemState>>(\r\n undefined\r\n );\r\n\r\n /**\r\n * Subscription to the selected catalog\r\n */\r\n private catalog$$: Subscription;\r\n\r\n /**\r\n * Whether a group can be toggled when it's collapsed\r\n */\r\n @Input() toggleCollapsedGroup: boolean = true;\r\n\r\n /**\r\n * Map to add layers to\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private catalogService: CatalogService,\r\n private catalogState: CatalogState,\r\n private mapState: MapState,\r\n private authService: AuthService\r\n ) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnInit() {\r\n const catalogStore = this.catalogState.catalogStore;\r\n\r\n const catalog$ = catalogStore.stateView.firstBy$(\r\n (record: EntityRecord<Catalog>) => record.state.selected === true\r\n );\r\n const authenticate$ = this.authService.authenticate$;\r\n this.catalog$$ = combineLatest([catalog$, authenticate$]).subscribe(\r\n ([record, authenticate]) => {\r\n const catalog = record.entity;\r\n this.catalog = catalog;\r\n this.loadCatalogItems(this.catalog);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.catalog$$.unsubscribe();\r\n }\r\n\r\n /**\r\n * Get the selected catalog's items from the CatalogService and\r\n * load them into the store.\r\n * @param catalog Selected catalog\r\n */\r\n private loadCatalogItems(catalog: Catalog) {\r\n let store = this.catalogState.getCatalogItemsStore(catalog);\r\n if (store !== undefined) {\r\n this.store$.next(store);\r\n return;\r\n }\r\n\r\n store = new EntityStore<CatalogItem>([]);\r\n this.catalogState.setCatalogItemsStore(catalog, store);\r\n this.catalogService\r\n .loadCatalogItems(catalog)\r\n .pipe(take(1))\r\n .subscribe((items: CatalogItem[]) => {\r\n store.load(items);\r\n this.store$.next(store);\r\n });\r\n }\r\n}\r\n","<igo-catalog-browser\n *ngIf=\"store$ | async as store\"\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup\"\n>\n</igo-catalog-browser>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CatalogBrowserToolComponent } from './catalog-browser-tool.component';\r\n\r\n/**\r\n * @deprecated import the CatalogBrowserToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [CatalogBrowserToolComponent],\r\n exports: [CatalogBrowserToolComponent]\r\n})\r\nexport class IgoAppCatalogBrowserToolModule {}\r\n","import { Injectable } from '@angular/core';\n\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nexport enum ImportExportType {\n layer = 'layer',\n context = 'context'\n}\n\nexport enum ImportExportMode {\n import = 'import',\n export = 'export'\n}\n\n/**\n * Service that holds the state of the importExport module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportExportState {\n readonly importExportType$: BehaviorSubject<ImportExportType> =\n new BehaviorSubject(ImportExportType.layer);\n readonly selectedMode$: BehaviorSubject<ImportExportMode> =\n new BehaviorSubject(ImportExportMode.import);\n readonly exportOptions$: BehaviorSubject<ExportOptions> = new BehaviorSubject(\n undefined\n );\n\n setImportExportType(type: ImportExportType) {\n this.importExportType$.next(type);\n }\n\n setMode(mode: ImportExportMode) {\n this.selectedMode$.next(mode);\n }\n\n setsExportOptions(exportOptions: ExportOptions) {\n this.exportOptions$.next(exportOptions);\n }\n}\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ToolService, Toolbox } from '@igo2/common';\r\nimport { ExportOptions } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../import-export/import-export.state';\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToolState {\r\n get toolbox(): Toolbox {\r\n return this.toolService.toolbox;\r\n }\r\n\r\n public openSidenav$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n constructor(\r\n private toolService: ToolService,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n toolToActivateFromOptions(toolToActivate: {\r\n tool: string;\r\n options: { [key: string]: any };\r\n }) {\r\n if (!toolToActivate) {\r\n return;\r\n }\r\n if (toolToActivate.tool === 'importExport') {\r\n let exportOptions: ExportOptions =\r\n this.importExportState.exportOptions$.value;\r\n if (!exportOptions) {\r\n exportOptions = {\r\n layers: toolToActivate.options.layers,\r\n featureInMapExtent: toolToActivate.options.featureInMapExtent\r\n };\r\n } else {\r\n exportOptions.layers = toolToActivate.options.layers;\r\n exportOptions.featureInMapExtent =\r\n toolToActivate.options.featureInMapExtent;\r\n }\r\n this.importExportState.setsExportOptions(exportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n }\r\n\r\n if (this.toolbox.getTool(toolToActivate.tool)) {\r\n this.toolbox.activateTool(toolToActivate.tool);\r\n this.openSidenav$.next(true);\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { EntityStore } from '@igo2/common';\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport { Catalog, CatalogLibaryComponent, CatalogService } from '@igo2/geo';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { CatalogState } from '../catalog.state';\r\n\r\n/**\r\n * Tool to browse the list of available catalogs.\r\n */\r\n@ToolComponent({\r\n name: 'catalog',\r\n title: 'igo.integration.tools.catalog',\r\n icon: 'layers-plus'\r\n})\r\n@Component({\r\n selector: 'igo-catalog-library-tool',\r\n templateUrl: './catalog-library-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CatalogLibaryComponent]\r\n})\r\nexport class CatalogLibraryToolComponent implements OnInit {\r\n /**\r\n * Store that contains the catalogs\r\n * @internal\r\n */\r\n get store(): EntityStore<Catalog> {\r\n return this.catalogState.catalogStore;\r\n }\r\n\r\n /**\r\n * Determine if the form to add a catalog is allowed\r\n */\r\n @Input() addCatalogAllowed: boolean = false;\r\n\r\n /**\r\n * List of predefined catalogs\r\n */\r\n @Input() predefinedCatalogs: Catalog[] = [];\r\n\r\n constructor(\r\n private catalogService: CatalogService,\r\n private catalogState: CatalogState,\r\n private toolState: ToolState,\r\n private storageService: StorageService\r\n ) {}\r\n\r\n /**\r\n * @internal\r\n */\r\n ngOnInit() {\r\n if (this.store.count === 0) {\r\n this.loadCatalogs();\r\n }\r\n }\r\n\r\n /**\r\n * When the selected catalog changes, toggle the the CatalogBrowser tool.\r\n * @internal\r\n * @param event Select event\r\n */\r\n onCatalogSelectChange(event: { selected: boolean; catalog: Catalog }) {\r\n if (event.selected === false) {\r\n return;\r\n }\r\n this.toolState.toolbox.activateTool('catalogBrowser');\r\n }\r\n\r\n /**\r\n * Get all the available catalogs from the CatalogService and\r\n * load them into the store.\r\n */\r\n private loadCatalogs() {\r\n this.catalogService\r\n .loadCatalogs()\r\n .pipe(take(1))\r\n .subscribe((catalogs: Catalog[]) => {\r\n this.store.clear();\r\n this.store.load(\r\n catalogs.concat(\r\n (this.storageService.get('addedCatalogs') || []) as Catalog[]\r\n )\r\n );\r\n });\r\n }\r\n}\r\n","<igo-catalog-library\r\n [predefinedCatalogs]=\"predefinedCatalogs\"\r\n [addCatalogAllowed]=\"addCatalogAllowed\"\r\n [store]=\"store\"\r\n (catalogSelectChange)=\"onCatalogSelectChange($event)\"\r\n>\r\n</igo-catalog-library>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CatalogLibraryToolComponent } from './catalog-library-tool.component';\r\n\r\n/**\r\n * @deprecated import the CatalogLibraryToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [CatalogLibraryToolComponent],\r\n exports: [CatalogLibraryToolComponent]\r\n})\r\nexport class IgoAppCatalogLibraryToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppCatalogBrowserToolModule } from './catalog-browser-tool/catalog-browser-tool.module';\r\nimport { IgoAppCatalogLibraryToolModule } from './catalog-library-tool/catalog-library-tool.module';\r\n\r\n/**\r\n * @deprecated import the components directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule]\r\n})\r\nexport class IgoAppCatalogModule {}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextEditBindingDirective,\r\n ContextEditComponent\r\n} from '@igo2/context';\r\n\r\nimport { ToolState } from '../../tool/tool.state';\r\n\r\n@ToolComponent({\r\n name: 'contextEditor',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star',\r\n parent: 'contextManager'\r\n})\r\n@Component({\r\n selector: 'igo-context-editor-tool',\r\n templateUrl: './context-editor-tool.component.html',\r\n standalone: true,\r\n imports: [ContextEditComponent, ContextEditBindingDirective]\r\n})\r\nexport class ContextEditorToolComponent {\r\n constructor(private toolState: ToolState) {}\r\n\r\n submitSuccessed() {\r\n this.toolState.toolbox.activatePreviousTool();\r\n }\r\n}\r\n","<igo-context-edit\n igoContextEditBinding\n (submitSuccessed)=\"submitSuccessed()\"\n></igo-context-edit>\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextListBindingDirective,\r\n ContextListComponent\r\n} from '@igo2/context';\r\nimport { IgoMap } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\n\r\n@ToolComponent({\r\n name: 'contextManager',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star'\r\n})\r\n@Component({\r\n selector: 'igo-context-manager-tool',\r\n templateUrl: './context-manager-tool.component.html',\r\n standalone: true,\r\n imports: [ContextListComponent, ContextListBindingDirective]\r\n})\r\nexport class ContextManagerToolComponent {\r\n @Input() toolToOpenOnContextChange: string = 'mapTools';\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private toolState: ToolState,\r\n private mapState: MapState\r\n ) {}\r\n\r\n editContext() {\r\n this.toolState.toolbox.activateTool('contextEditor');\r\n }\r\n\r\n managePermissions() {\r\n this.toolState.toolbox.activateTool('contextPermissionManager');\r\n }\r\n}\r\n","<igo-context-list\n igoContextListBinding\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n>\n</igo-context-list>\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextPermissionsBindingDirective,\r\n ContextPermissionsComponent\r\n} from '@igo2/context';\r\n\r\n@ToolComponent({\r\n name: 'contextPermissionManager',\r\n title: 'igo.integration.tools.contexts',\r\n icon: 'star',\r\n parent: 'contextManager'\r\n})\r\n@Component({\r\n selector: 'igo-context-permission-manager-tool',\r\n templateUrl: './context-permission-manager-tool.component.html',\r\n standalone: true,\r\n imports: [ContextPermissionsComponent, ContextPermissionsBindingDirective]\r\n})\r\nexport class ContextPermissionManagerToolComponent {}\r\n","<igo-context-permissions igoContextPermissionsBinding></igo-context-permissions>\n","import { Injectable } from '@angular/core';\n\nimport { LayerListControlsOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service that holds the state of layer list tool values\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LayerListToolState {\n readonly keyword$: BehaviorSubject<string> = new BehaviorSubject('');\n readonly sortAlpha$: BehaviorSubject<boolean> = new BehaviorSubject(\n undefined\n );\n readonly onlyVisible$: BehaviorSubject<boolean> = new BehaviorSubject(\n undefined\n );\n readonly selectedTab$: BehaviorSubject<number> = new BehaviorSubject(\n undefined\n );\n\n setKeyword(keyword: string) {\n this.keyword$.next(keyword);\n }\n\n setSortAlpha(sort: boolean) {\n this.sortAlpha$.next(sort);\n }\n\n setOnlyVisible(onlyVisible: boolean) {\n this.onlyVisible$.next(onlyVisible);\n }\n\n setSelectedTab(tab: number) {\n this.selectedTab$.next(tab);\n }\n\n getLayerListControls(): LayerListControlsOptions {\n return {\n keyword: this.keyword$.value,\n onlyVisible: this.onlyVisible$.value,\n sortAlpha: this.sortAlpha$.value\n };\n }\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { ShareMapComponent } from '@igo2/context';\r\nimport { IgoMap, LayerListControlsOptions } from '@igo2/geo';\r\n\r\nimport { LayerListToolState } from '../../map/layer-list-tool.state';\r\nimport { MapState } from '../../map/map.state';\r\n\r\n@ToolComponent({\r\n name: 'shareMap',\r\n title: 'igo.integration.tools.shareMap',\r\n icon: 'share-variant'\r\n})\r\n@Component({\r\n selector: 'igo-context-share-tool',\r\n templateUrl: './context-share-tool.component.html',\r\n standalone: true,\r\n imports: [ShareMapComponent]\r\n})\r\nexport class ContextShareToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layerListControls(): LayerListControlsOptions {\r\n return this.layerListToolState.getLayerListControls();\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private layerListToolState: LayerListToolState\r\n ) {}\r\n}\r\n","<igo-share-map [map]=\"map\"></igo-share-map>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Tool, ToolService } from '@igo2/common';\r\nimport { ContextService, DetailedContext } from '@igo2/context';\r\nimport { LanguageService } from '@igo2/core/language';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ToolState } from '../tool/tool.state';\r\n\r\n/**\r\n * Service that holds the state of the context module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContextState {\r\n /**\r\n * Observable of the active context\r\n */\r\n context$: BehaviorSubject<DetailedContext> = new BehaviorSubject(undefined);\r\n\r\n constructor(\r\n private contextService: ContextService,\r\n private toolService: ToolService,\r\n private toolState: ToolState,\r\n private languageService: LanguageService\r\n ) {\r\n this.contextService.context$.subscribe((context: DetailedContext) => {\r\n this.onContextChange(context);\r\n });\r\n this.contextService.toolsChanged$.subscribe((context: DetailedContext) => {\r\n this.updateTools(context);\r\n });\r\n }\r\n\r\n /**\r\n * Set the active context\r\n * @param context Detailed context\r\n */\r\n private setContext(context: DetailedContext) {\r\n this.updateTools(context);\r\n this.context$.next(context);\r\n }\r\n\r\n /**\r\n * Update the tool state with the context's tools\r\n * @param context Detailed context\r\n */\r\n private updateTools(context: DetailedContext) {\r\n const toolbox = this.toolState.toolbox;\r\n\r\n const tools = [];\r\n const contextTools = context.tools || [];\r\n contextTools.forEach((contextTool: Tool) => {\r\n const baseTool = this.toolService.getTool(contextTool.name);\r\n if (baseTool === undefined) {\r\n return;\r\n }\r\n\r\n const options = Object.assign(\r\n {},\r\n baseTool.options || {},\r\n contextTool.options || {}\r\n );\r\n const tool = Object.assign({}, baseTool, contextTool, { options });\r\n tools.push(tool);\r\n });\r\n\r\n tools.forEach((tool) => {\r\n if (tool.parent) {\r\n const parentIndex = tools.findIndex((el) => el.name === tool.parent);\r\n if (parentIndex !== -1) {\r\n tools[parentIndex].children = [];\r\n tools[parentIndex].children.push(tool.name);\r\n }\r\n }\r\n });\r\n\r\n toolbox.setTools(tools);\r\n toolbox.setToolbar(context.toolbar || []);\r\n\r\n // TODO: This is a patch so the context service can work without\r\n // injecting the ToolState or without being completely refactored\r\n this.contextService.setTools([].concat(tools));\r\n this.contextService.setToolbar(context.toolbar || []);\r\n }\r\n\r\n /**\r\n * Set a new context and update the tool state\r\n * @param context Detailed context\r\n */\r\n private onContextChange(context: DetailedContext) {\r\n if (context === undefined) {\r\n return;\r\n }\r\n this.setContext(context);\r\n }\r\n}\r\n","import { ContextEditorToolComponent } from './context-editor-tool/context-editor-tool.component';\r\nimport { ContextManagerToolComponent } from './context-manager-tool/context-manager-tool.component';\r\nimport { ContextPermissionManagerToolComponent } from './context-permission-manager-tool/context-permission-manager-tool.component';\r\nimport { ContextShareToolComponent } from './context-share-tool/context-share-tool.component';\r\n\r\nexport * from './context-manager-tool/context-manager-tool.component';\r\nexport * from './context-editor-tool/context-editor-tool.component';\r\nexport * from './context-permission-manager-tool/context-permission-manager-tool.component';\r\nexport * from './context-share-tool/context-share-tool.component';\r\nexport * from './context.state';\r\n\r\nexport const INTEGRATION_CONTEXT_DIRECTIVES = [\r\n ContextEditorToolComponent,\r\n ContextManagerToolComponent,\r\n ContextPermissionManagerToolComponent,\r\n ContextShareToolComponent\r\n] as const;\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { INTEGRATION_CONTEXT_DIRECTIVES } from '.';\r\n\r\n/**\r\n * @deprecated import the components/directive directly or INTEGRATION_CONTEXT_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [...INTEGRATION_CONTEXT_DIRECTIVES],\r\n exports: [...INTEGRATION_CONTEXT_DIRECTIVES]\r\n})\r\nexport class IgoAppContextModule {}\r\n","import { Injectable } from '@angular/core';\n\nimport {\n AnyLayerOptions,\n RoutesFeatureStore,\n StepFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { Subject } from 'rxjs';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DirectionState {\n public zoomToActiveRoute$: Subject<void> = new Subject();\n\n /**\n * Store that holds the stop\n */\n public stopsStore: StopsStore = new StopsStore([]);\n\n /**\n * Store that holds the driving stops as feature\n */\n public stopsFeatureStore: StopsFeatureStore;\n\n /**\n * Store that holds the driving route as feature\n */\n public routesFeatureStore: RoutesFeatureStore;\n\n public stepFeatureStore: StepFeatureStore;\n\n public debounceTime: number = 200;\n\n constructor(private mapState: MapState) {\n this.stopsFeatureStore = new StopsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.routesFeatureStore = new RoutesFeatureStore([], {\n map: this.mapState.map\n });\n\n this.stepFeatureStore = new StepFeatureStore([], {\n map: this.mapState.map\n });\n\n this.mapState.map.ol.once('rendercomplete', () => {\n this.stopsFeatureStore.empty$.subscribe((empty) => {\n if (this.stopsFeatureStore.layer?.options) {\n (\n this.stopsFeatureStore.layer.options as AnyLayerOptions\n ).showInLayerList = !empty;\n }\n });\n this.routesFeatureStore.empty$.subscribe((empty) => {\n if (this.routesFeatureStore.layer?.options) {\n (\n this.routesFeatureStore.layer.options as AnyLayerOptions\n ).showInLayerList = !empty;\n }\n });\n });\n\n this.mapState.map.layers$.subscribe(() => {\n if (!this.mapState.map.getLayerById('igo-direction-stops-layer')) {\n this.stopsStore.deleteMany(this.stopsStore.all());\n this.stopsFeatureStore.deleteMany(this.stopsFeatureStore.all()); // not necessary\n }\n if (!this.mapState.map.getLayerById('igo-direction-route-layer')) {\n this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());\n }\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\r\nimport { StorageScope, StorageService } from '@igo2/core/storage';\r\nimport {\r\n IgoDirectionsModule,\r\n IgoMap,\r\n RoutesFeatureStore,\r\n StepFeatureStore,\r\n StopsFeatureStore,\r\n StopsStore\r\n} from '@igo2/geo';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { ContextState } from '../../context/context.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { DirectionState } from '../directions.state';\r\n\r\n@ToolComponent({\r\n name: 'directions',\r\n title: 'igo.integration.tools.directions',\r\n icon: 'directions'\r\n})\r\n@Component({\r\n selector: 'igo-directions-tool',\r\n templateUrl: './directions-tool.component.html',\r\n standalone: true,\r\n imports: [IgoDirectionsModule]\r\n})\r\nexport class DirectionsToolComponent implements OnInit {\r\n public currentContextUri: string;\r\n /**\r\n * stops\r\n * @internal\r\n */\r\n get stopsStore(): StopsStore {\r\n return this.directionState.stopsStore;\r\n }\r\n\r\n get debounceTime(): number {\r\n return this.directionState.debounceTime;\r\n }\r\n\r\n /**\r\n * stops\r\n * @internal\r\n */\r\n get stopsFeatureStore(): StopsFeatureStore {\r\n return this.directionState.stopsFeatureStore;\r\n }\r\n\r\n /**\r\n * routes\r\n * @internal\r\n */\r\n get routesFeatureStore(): RoutesFeatureStore {\r\n return this.directionState.routesFeatureStore;\r\n }\r\n\r\n /**\r\n * step store\r\n * @internal\r\n */\r\n get stepFeatureStore(): StepFeatureStore {\r\n return this.directionState.stepFeatureStore;\r\n }\r\n\r\n /**\r\n * step store\r\n * @internal\r\n */\r\n get zoomToActiveRoute$(): Subject<void> {\r\n return this.directionState.zoomToActiveRoute$;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private directionState: DirectionState,\r\n private mapState: MapState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private storageService: StorageService,\r\n public contextState: ContextState,\r\n private authService: AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const warningShown = this.storageService.get(\r\n 'direction.warning.shown'\r\n ) as boolean;\r\n if (!warningShown) {\r\n this.messageService.info(\r\n 'igo.integration.directions.warning.message',\r\n 'igo.integration.directions.warning.title',\r\n { timeOut: 20000 }\r\n );\r\n this.storageService.set(\r\n 'direction.warning.shown',\r\n true,\r\n StorageScope.SESSION\r\n );\r\n }\r\n this.contextState.context$.subscribe((c) => {\r\n if (!this.authService.authenticated) {\r\n this.currentContextUri = c.uri;\r\n }\r\n });\r\n }\r\n}\r\n","<igo-directions\r\n [contextUri]=\"currentContextUri\"\r\n [debounce]=\"debounceTime\"\r\n [stopsStore]=\"stopsStore\"\r\n [stopsFeatureStore]=\"stopsFeatureStore\"\r\n [stepFeatureStore]=\"stepFeatureStore\"\r\n [routesFeatureStore]=\"routesFeatureStore\"\r\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\r\n>\r\n</igo-directions>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { DirectionsToolComponent } from './directions-tool/directions-tool.component';\r\n\r\n/**\r\n * @deprecated import the DirectionsToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [DirectionsToolComponent],\r\n exports: [DirectionsToolComponent]\r\n})\r\nexport class IgoAppDirectionsModule {\r\n static forRoot(): ModuleWithProviders<IgoAppDirectionsModule> {\r\n return {\r\n ngModule: IgoAppDirectionsModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\n\nimport {\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DrawState {\n public stores: FeatureStore<FeatureWithDraw>[] = [];\n public layersID: string[] = [];\n public drawControls: [string, DrawControl][] = [];\n public activeDrawingLayer: VectorLayer;\n\n constructor(private mapState: MapState) {\n this.mapState.map.layers$.subscribe(() => {\n this.layersID.forEach((layerId) => {\n if (!this.mapState.map.getLayerById(layerId)) {\n let deletedStore = this.stores.find(\n (store) => store.layer.id === layerId\n );\n deletedStore.deleteMany(deletedStore.all());\n this.stores.splice(this.stores.indexOf(deletedStore, 0), 1);\n this.layersID.splice(this.layersID.indexOf(layerId, 0), 1);\n let drawControlIndex = this.drawControls.findIndex(\n (dc) => dc[0] === layerId\n );\n this.drawControls.splice(drawControlIndex, 1);\n }\n });\n });\n for (let store of this.stores) {\n store = new FeatureStore<FeatureWithDraw>([], { map: this.mapState.map });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n DrawComponent,\r\n DrawControl,\r\n FeatureStore,\r\n FeatureWithDraw,\r\n IgoMap,\r\n VectorLayer\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { DrawState } from '../draw.state';\r\n\r\n/**\r\n * Tool to measure lengths and areas\r\n */\r\n@ToolComponent({\r\n name: 'draw',\r\n title: 'igo.integration.tools.draw',\r\n icon: 'draw'\r\n})\r\n@Component({\r\n selector: 'igo-drawing-tool',\r\n templateUrl: './drawing-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [DrawComponent]\r\n})\r\nexport class DrawingToolComponent {\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get stores(): FeatureStore<FeatureWithDraw>[] {\r\n return this.drawState.stores;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layersID(): string[] {\r\n return this.drawState.layersID;\r\n }\r\n\r\n get drawControls(): [string, DrawControl][] {\r\n return this.drawState.drawControls;\r\n }\r\n set drawControls(dc: [string, DrawControl][]) {\r\n this.drawState.drawControls = dc;\r\n }\r\n\r\n get activeDrawingLayer(): VectorLayer {\r\n return this.drawState.activeDrawingLayer;\r\n }\r\n set activeDrawingLayer(value: VectorLayer) {\r\n this.drawState.activeDrawingLayer = value;\r\n }\r\n\r\n public addLayersID(layerID: string) {\r\n this.layersID.push(layerID);\r\n }\r\n\r\n public addDrawControls(dc: [string, DrawControl][]) {\r\n this.drawControls = dc;\r\n }\r\n\r\n constructor(\r\n private drawState: DrawState,\r\n private mapState: MapState\r\n ) {}\r\n}\r\n","<igo-draw\n [stores]=\"stores\"\n [map]=\"map\"\n (layersIDEvent)=\"addLayersID($event)\"\n [activeDrawingLayer]=\"activeDrawingLayer\"\n [drawControls]=\"drawControls\"\n (drawControlsEvent)=\"addDrawControls($event)\"\n (activeLayerChange)=\"activeDrawingLayer = $event\"\n>\n</igo-draw>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { DrawingToolComponent } from './drawing-tool.component';\r\n\r\n/**\r\n * @deprecated import the DrawingToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [DrawingToolComponent],\r\n exports: [DrawingToolComponent]\r\n})\r\nexport class IgoAppDrawingToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppDrawingToolModule } from './drawing-tool/drawing-tool.module';\r\n\r\n/**\r\n * @deprecated import the DrawingToolComponent directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppDrawingToolModule]\r\n})\r\nexport class IgoAppDrawModule {}\r\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, Layer, OgcFilterableItemComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { toolSlideInOut } from './active-ogc-filter-tool.animation';\r\n\r\n@ToolComponent({\r\n name: 'activeOgcFilter',\r\n title: 'igo.integration.tools.ogcFilter',\r\n icon: 'filter',\r\n parent: 'mapTools'\r\n})\r\n@Component({\r\n selector: 'igo-active-ogc-filter-tool',\r\n templateUrl: './active-ogc-filter-tool.component.html',\r\n animations: [toolSlideInOut()],\r\n standalone: true,\r\n imports: [OgcFilterableItemComponent]\r\n})\r\nexport class ActiveOgcFilterToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layer(): Layer {\r\n for (const lay of this.map.layers) {\r\n if (lay.options.active === true) {\r\n return lay;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public animate = 'enter';\r\n\r\n constructor(public mapState: MapState) {}\r\n}\r\n","<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n>\n</igo-ogc-filterable-item>\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, Layer, TimeFilterItemComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { toolSlideInOut } from './active-time-filter-tool.animation';\r\n\r\n@ToolComponent({\r\n name: 'activeTimeFilter',\r\n title: 'igo.integration.tools.timeFilter',\r\n icon: 'history',\r\n parent: 'mapTools'\r\n})\r\n@Component({\r\n selector: 'igo-active-time-filter-tool',\r\n templateUrl: './active-time-filter-tool.component.html',\r\n animations: [toolSlideInOut()],\r\n standalone: true,\r\n imports: [TimeFilterItemComponent]\r\n})\r\nexport class ActiveTimeFilterToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layer(): Layer {\r\n for (const lay of this.map.layers) {\r\n if (lay.options.active === true) {\r\n return lay;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public animate = 'enter';\r\n\r\n constructor(public mapState: MapState) {}\r\n}\r\n","<igo-time-filter-item\r\n [layer]=\"layer\"\r\n [header]=\"false\"\r\n [@toolSlideInOut]=\"animate\"\r\n>\r\n</igo-time-filter-item>\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n OgcFilterableListBindingDirective,\r\n OgcFilterableListComponent\r\n} from '@igo2/geo';\r\n\r\n@ToolComponent({\r\n name: 'ogcFilter',\r\n title: 'igo.integration.tools.ogcFilter',\r\n icon: 'filter'\r\n})\r\n@Component({\r\n selector: 'igo-ogc-filter-tool',\r\n templateUrl: './ogc-filter-tool.component.html',\r\n standalone: true,\r\n imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective]\r\n})\r\nexport class OgcFilterToolComponent {\r\n constructor() {}\r\n}\r\n","<igo-ogc-filterable-list igoOgcFilterableListBinding></igo-ogc-filterable-list>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { StorageService } from '@igo2/core/storage';\r\n\r\n/**\r\n * Service that holds the state of storage service\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageState {\r\n get storageService(): StorageService {\r\n return this.igoStorageService;\r\n }\r\n\r\n constructor(private igoStorageService: StorageService) {}\r\n}\r\n","import {\r\n Action,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreFilterSelectionStrategy,\r\n Widget\r\n} from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MediaService } from '@igo2/core/media';\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport {\r\n EditionWorkspace,\r\n ExportOptions,\r\n FeatureMotion,\r\n FeatureStoreSelectionStrategy,\r\n FeatureWorkspace,\r\n OgcFilterableDataSource,\r\n WfsWorkspace,\r\n mapExtentStrategyActiveToolTip,\r\n noElementSelected\r\n} from '@igo2/geo';\r\nimport { dateTransform } from '@igo2/utils';\r\n\r\nimport * as jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport { BehaviorSubject, map } from 'rxjs';\r\n\r\nimport { ToolState } from '../../tool';\r\n\r\nexport function handleZoomAuto(\r\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\r\n storageService\r\n) {\r\n const zoomStrategy = workspace.entityStore.getStrategyOfType(\r\n FeatureStoreSelectionStrategy\r\n ) as FeatureStoreSelectionStrategy;\r\n zoomStrategy.setMotion(\r\n (storageService.get('zoomAuto') as boolean)\r\n ? FeatureMotion.Default\r\n : FeatureMotion.None\r\n );\r\n}\r\n\r\nexport function getWorkspaceActions(\r\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>,\r\n ogcFilterWidget: Widget,\r\n zoomAuto$: BehaviorSubject<boolean>,\r\n maximize$: BehaviorSubject<boolean>,\r\n storageService: StorageService,\r\n languageService: LanguageService,\r\n mediaService: MediaService,\r\n toolState: ToolState\r\n): Action[] {\r\n const actions = [\r\n {\r\n id: 'zoomAuto',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.zoomAuto.title',\r\n tooltip: 'igo.integration.workspace.zoomAuto.tooltip',\r\n checkCondition: zoomAuto$,\r\n handler: () => {\r\n handleZoomAuto(workspace, storageService);\r\n storageService.set(\r\n 'zoomAuto',\r\n !storageService.get('zoomAuto') as boolean\r\n );\r\n }\r\n },\r\n {\r\n id: 'filterInMapExtent',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.inMapExtent.title',\r\n tooltip: mapExtentStrategyActiveToolTip(workspace),\r\n checkCondition: rowsInMapExtentCheckCondition$,\r\n handler: () =>\r\n rowsInMapExtentCheckCondition$.next(\r\n !rowsInMapExtentCheckCondition$.value\r\n )\r\n },\r\n {\r\n id: 'selectedOnly',\r\n checkbox: true,\r\n title: 'igo.integration.workspace.selected.title',\r\n tooltip: 'igo.integration.workspace.selected.tooltip',\r\n checkCondition: selectOnlyCheckCondition$,\r\n handler: () =>\r\n selectOnlyCheckCondition$.next(!selectOnlyCheckCondition$.value)\r\n },\r\n {\r\n id: 'clearselection',\r\n icon: 'select-off',\r\n title: 'igo.integration.workspace.clearSelection.title',\r\n tooltip: 'igo.integration.workspace.clearSelection.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n ws.entityStore.state.updateMany(ws.entityStore.view.all(), {\r\n selected: false\r\n });\r\n },\r\n args: [workspace],\r\n availability: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) =>\r\n noElementSelected(ws)\r\n },\r\n {\r\n id: 'featureDownload',\r\n icon: 'file-export',\r\n title: 'igo.integration.workspace.download.title',\r\n tooltip: 'igo.integration.workspace.download.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n const filterStrategy = ws.entityStore.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n const filterSelectionStrategy = ws.entityStore.getStrategyOfType(\r\n EntityStoreFilterSelectionStrategy\r\n );\r\n const layersWithSelection = filterSelectionStrategy.active\r\n ? [ws.layer.id]\r\n : [];\r\n toolState.toolToActivateFromOptions({\r\n tool: 'importExport',\r\n options: {\r\n layers: [ws.layer.id],\r\n featureInMapExtent: filterStrategy.active,\r\n layersWithSelection\r\n } as ExportOptions\r\n });\r\n },\r\n args: [workspace]\r\n },\r\n {\r\n id: 'ogcFilter',\r\n icon: 'filter',\r\n title: 'igo.integration.workspace.ogcFilter.title',\r\n tooltip: 'igo.integration.workspace.ogcFilter.tooltip',\r\n handler: (\r\n widget: Widget,\r\n ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace\r\n ) => {\r\n ws.activateWidget(widget, {\r\n map: ws.map,\r\n layer: ws.layer\r\n });\r\n },\r\n args: [ogcFilterWidget, workspace]\r\n },\r\n {\r\n id: 'maximize',\r\n title: languageService.translate.instant(\r\n 'igo.integration.workspace.maximize'\r\n ),\r\n tooltip: languageService.translate.instant(\r\n 'igo.integration.workspace.maximizeTooltip'\r\n ),\r\n icon: 'resize',\r\n display: () => {\r\n return maximize$.pipe(map((v) => !v && !mediaService.isMobile()));\r\n },\r\n handler: () => {\r\n if (!mediaService.isMobile()) {\r\n maximize$.next(true);\r\n }\r\n }\r\n },\r\n {\r\n id: 'standardExtent',\r\n title: languageService.translate.instant(\r\n 'igo.integration.workspace.standardExtent'\r\n ),\r\n tooltip: languageService.translate.instant(\r\n 'igo.integration.workspace.standardExtentTooltip'\r\n ),\r\n icon: 'resize',\r\n display: () => {\r\n return maximize$.pipe(map((v) => v && !mediaService.isMobile()));\r\n },\r\n handler: () => {\r\n maximize$.next(false);\r\n }\r\n },\r\n {\r\n id: 'print',\r\n icon: 'printer',\r\n title: 'igo.integration.workspace.print.title',\r\n tooltip: 'igo.integration.workspace.print.tooltip',\r\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\r\n const title = `${ws.layer.title} (${dateTransform(\r\n new Date(),\r\n 'YYYY-MM-DD-HH_mm'\r\n )})`;\r\n const doc: any = new jsPDF.default('landscape');\r\n const totalPagesExp = '{total_pages_count_string}';\r\n doc.text(title, 14, 20);\r\n doc.autoTable({\r\n startY: 25,\r\n tableWidth: 'wrap',\r\n html: '#currentWorkspaceTable',\r\n horizontalPageBreak: true,\r\n styles: { cellPadding: 0.5, minCellWidth: 20, fontSize: 6 },\r\n didDrawPage: (data) => {\r\n let str = 'Page ' + doc.internal.getNumberOfPages();\r\n if (typeof doc.putTotalPages === 'function') {\r\n str = str + ' / ' + totalPagesExp;\r\n }\r\n doc.setFontSize(6);\r\n const pageSize = doc.internal.pageSize;\r\n const pageHeight = pageSize.height\r\n ? pageSize.height\r\n : pageSize.getHeight();\r\n doc.text(str, data.settings.margin.left, pageHeight - 10);\r\n }\r\n });\r\n if (typeof doc.putTotalPages === 'function') {\r\n doc.putTotalPages(totalPagesExp);\r\n }\r\n doc.save(`${title}.pdf`);\r\n },\r\n args: [workspace]\r\n }\r\n ];\r\n let returnActions = (workspace.layer.dataSource as OgcFilterableDataSource)\r\n .options.ogcFilters?.enabled\r\n ? actions\r\n : actions.filter((action) => action.id !== 'ogcFilter');\r\n returnActions =\r\n workspace.layer.options.workspace.printable !== false\r\n ? actions\r\n : actions.filter((action) => action.id !== 'print');\r\n return returnActions;\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action, Widget } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MediaService } from '@igo2/core/media';\r\nimport {\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core/storage';\r\nimport { EditionWorkspace, OgcFilterWidget } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EditionActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n @Inject(OgcFilterWidget) private ogcFilterWidget: Widget,\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private mediaService: MediaService,\r\n private toolState: ToolState\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: EditionWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n this.ogcFilterWidget,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MediaService } from '@igo2/core/media';\r\nimport {\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core/storage';\r\nimport { FeatureWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeatureActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private toolState: ToolState,\r\n private mediaService: MediaService\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: FeatureWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: FeatureWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n undefined,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport { Action, Widget } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MediaService } from '@igo2/core/media';\r\nimport {\r\n StorageService,\r\n StorageServiceEvent,\r\n StorageServiceEventEnum\r\n} from '@igo2/core/storage';\r\nimport { OgcFilterWidget, WfsWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { skipWhile } from 'rxjs/operators';\r\n\r\nimport { StorageState } from '../../storage/storage.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WfsActionsService implements OnDestroy {\r\n public maximize$: BehaviorSubject<boolean>;\r\n\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n false\r\n );\r\n // rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(true);\r\n zoomAuto$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private storageChange$$: Subscription;\r\n\r\n get storageService(): StorageService {\r\n return this.storageState.storageService;\r\n }\r\n\r\n get zoomAuto(): boolean {\r\n return this.storageService.get('zoomAuto') as boolean;\r\n }\r\n\r\n constructor(\r\n @Inject(OgcFilterWidget) private ogcFilterWidget: Widget,\r\n private storageState: StorageState,\r\n public languageService: LanguageService,\r\n private mediaService: MediaService,\r\n private toolState: ToolState\r\n ) {\r\n this.maximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.storageChange$$) {\r\n this.storageChange$$.unsubscribe();\r\n }\r\n }\r\n\r\n loadActions(\r\n workspace: WfsWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ) {\r\n const actions = this.buildActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$\r\n );\r\n workspace.actionStore.load(actions);\r\n }\r\n\r\n buildActions(\r\n workspace: WfsWorkspace,\r\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\r\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\r\n ): Action[] {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n this.storageChange$$ = this.storageService.storageChange$\r\n .pipe(\r\n skipWhile(\r\n (storageChange: StorageServiceEvent) =>\r\n storageChange?.key !== 'zoomAuto' ||\r\n storageChange?.event === StorageServiceEventEnum.CLEARED\r\n )\r\n )\r\n .subscribe(() => {\r\n this.zoomAuto$.next(this.zoomAuto);\r\n handleZoomAuto(workspace, this.storageService);\r\n });\r\n return getWorkspaceActions(\r\n workspace,\r\n rowsInMapExtentCheckCondition$,\r\n selectOnlyCheckCondition$,\r\n this.ogcFilterWidget,\r\n this.zoomAuto$,\r\n this.maximize$,\r\n this.storageService,\r\n this.languageService,\r\n this.mediaService,\r\n this.toolState\r\n );\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nimport {\r\n EntityRecord,\r\n EntityState,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreFilterSelectionStrategy,\r\n Widget,\r\n Workspace,\r\n WorkspaceStore\r\n} from '@igo2/common';\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport { EditionWorkspace, FeatureWorkspace, WfsWorkspace } from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Observable, Subscription, of } from 'rxjs';\r\n\r\nimport { EditionActionsService } from './shared/edition-actions.service';\r\nimport { FeatureActionsService } from './shared/feature-actions.service';\r\nimport { WfsActionsService } from './shared/wfs-actions.service';\r\n\r\n/**\r\n * Service that holds the state of the workspace module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WorkspaceState implements OnDestroy {\r\n public workspacePanelExpanded: boolean = false;\r\n\r\n readonly workspaceEnabled$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(false);\r\n readonly rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(true);\r\n readonly selectOnlyCheckCondition$: BehaviorSubject<boolean> =\r\n new BehaviorSubject<boolean>(false);\r\n\r\n readonly workspaceMaximize$: BehaviorSubject<boolean>;\r\n private actionMaximize$$: Subscription[] = [];\r\n\r\n private rowsInMapExtentCheckCondition$$: Subscription;\r\n private selectOnlyCheckCondition$$: Subscription;\r\n\r\n /** Subscription to the active workspace */\r\n private activeWorkspace$$: Subscription;\r\n\r\n /** Subscription to the active workspace widget */\r\n private activeWorkspaceWidget$$: Subscription;\r\n\r\n /** Active widget observable. Only one may be active for all available workspaces */\r\n readonly activeWorkspaceWidget$: BehaviorSubject<Widget> =\r\n new BehaviorSubject<Widget>(undefined);\r\n\r\n /**\r\n * Observable of the active workspace\r\n */\r\n public workspace$ = new BehaviorSubject<Workspace>(undefined);\r\n\r\n /**\r\n * Store that holds all the available workspaces\r\n */\r\n get store(): WorkspaceStore {\r\n return this._store;\r\n }\r\n private _store: WorkspaceStore;\r\n\r\n get workspaceSelection() {\r\n if (this.workspace$.value) {\r\n return this.workspace$.value?.entityStore.stateView.manyBy(\r\n (r) => r.state.selected === true\r\n );\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n get workspaceSelection$(): Observable<EntityRecord<object, EntityState>[]> {\r\n if (this.workspace$.value) {\r\n return this.workspace$.value?.entityStore?.stateView.manyBy$(\r\n (r) => r.state.selected === true\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n constructor(\r\n private featureActionsService: FeatureActionsService,\r\n private wfsActionsService: WfsActionsService,\r\n private editionActionsService: EditionActionsService,\r\n private storageService: StorageService\r\n ) {\r\n this.workspaceMaximize$ = new BehaviorSubject(\r\n this.storageService.get('workspaceMaximize') as boolean\r\n );\r\n this.initWorkspaces();\r\n }\r\n\r\n /**\r\n * Initialize the workspace store. Each time a workspace is activated,\r\n * subscribe to it's active widget. Tracking the active widget is useful\r\n * to make sure only one widget is active at a time.\r\n */\r\n private initWorkspaces() {\r\n this._store = new WorkspaceStore([]);\r\n this._store.stateView\r\n .firstBy$(\r\n (record: EntityRecord<Workspace>) => record.state.active === true\r\n )\r\n .subscribe((record: EntityRecord<Workspace>) => {\r\n const workspace = record ? record.entity : undefined;\r\n this.workspace$.next(workspace);\r\n });\r\n\r\n this._store.stateView\r\n .all$()\r\n .subscribe((workspaces: EntityRecord<Workspace>[]) => {\r\n workspaces.map((wks: EntityRecord<Workspace>) => {\r\n if (wks.entity.actionStore.empty) {\r\n if (wks.entity instanceof WfsWorkspace) {\r\n this.wfsActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n } else if (wks.entity instanceof FeatureWorkspace) {\r\n this.featureActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n } else if (wks.entity instanceof EditionWorkspace) {\r\n this.editionActionsService.loadActions(\r\n wks.entity,\r\n this.rowsInMapExtentCheckCondition$,\r\n this.selectOnlyCheckCondition$\r\n );\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.actionMaximize$$.push(\r\n this.featureActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.actionMaximize$$.push(\r\n this.wfsActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.actionMaximize$$.push(\r\n this.editionActionsService.maximize$.subscribe((maximized) => {\r\n this.setWorkspaceIsMaximized(maximized);\r\n })\r\n );\r\n\r\n this.activeWorkspace$$ = this.workspace$.subscribe(\r\n (workspace: Workspace) => {\r\n if (this.activeWorkspaceWidget$$ !== undefined) {\r\n this.activeWorkspaceWidget$$.unsubscribe();\r\n this.activeWorkspaceWidget$$ = undefined;\r\n }\r\n\r\n if (workspace !== undefined) {\r\n this.activeWorkspaceWidget$$ = workspace.widget$.subscribe(\r\n (widget: Widget) => this.activeWorkspaceWidget$.next(widget)\r\n );\r\n }\r\n }\r\n );\r\n\r\n this.rowsInMapExtentCheckCondition$$ =\r\n this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {\r\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\r\n if (!wks.entity.actionStore.empty) {\r\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (filterStrategy) {\r\n if (rowsInMapExtent) {\r\n filterStrategy.activate();\r\n } else {\r\n filterStrategy.deactivate();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe(\r\n (selectOnly) => {\r\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\r\n if (!wks.entity.actionStore.empty) {\r\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\r\n EntityStoreFilterSelectionStrategy\r\n );\r\n if (filterStrategy) {\r\n if (selectOnly) {\r\n filterStrategy.activate();\r\n } else {\r\n filterStrategy.deactivate();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n private setWorkspaceIsMaximized(maximized: boolean) {\r\n this.storageService.set('workspaceMaximize', maximized);\r\n this.workspaceMaximize$.next(maximized);\r\n }\r\n\r\n public setActiveWorkspaceById(id: string) {\r\n const wksFromId = this.store.all().find((workspace) => workspace.id === id);\r\n if (wksFromId) {\r\n this.store.activateWorkspace(wksFromId);\r\n }\r\n }\r\n\r\n public setActiveWorkspaceByTitle(title: string) {\r\n const wksFromTitle = this.store\r\n .all()\r\n .find((workspace) => workspace.title === title);\r\n if (wksFromTitle) {\r\n this.store.activateWorkspace(wksFromTitle);\r\n }\r\n }\r\n\r\n /**\r\n * Teardown all the workspaces\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.teardownWorkspaces();\r\n this.actionMaximize$$.map((a) => a.unsubscribe());\r\n if (this.rowsInMapExtentCheckCondition$$) {\r\n this.selectOnlyCheckCondition$$.unsubscribe();\r\n }\r\n if (this.selectOnlyCheckCondition$$) {\r\n this.selectOnlyCheckCondition$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Teardown the workspace store and any subscribers\r\n */\r\n private teardownWorkspaces() {\r\n this.store.clear();\r\n if (this.activeWorkspaceWidget$$ !== undefined) {\r\n this.activeWorkspaceWidget$$.unsubscribe();\r\n }\r\n if (this.activeWorkspace$$ !== undefined) {\r\n this.activeWorkspace$$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\n\r\nimport { EntityStore, PanelComponent, ToolComponent } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\r\nimport {\r\n ClusterDataSource,\r\n DataSource,\r\n DataSourceService,\r\n ExportOptions,\r\n Feature,\r\n FeatureDetailsComponent,\r\n FeatureMotion,\r\n IgoMap,\r\n Layer,\r\n LayerService,\r\n MeasureLengthUnit,\r\n QueryableDataSourceOptions,\r\n SpatialFilterItemComponent,\r\n SpatialFilterItemType,\r\n SpatialFilterQueryType,\r\n SpatialFilterService,\r\n SpatialFilterThematic,\r\n SpatialFilterType,\r\n SpatialFilterTypeComponent,\r\n VectorLayer,\r\n createOverlayMarkerStyle,\r\n featureToOl,\r\n moveToOlFeatures\r\n} from '@igo2/geo';\r\n\r\nimport { EventsKey } from 'ol/events';\r\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\r\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\r\nimport olSourceCluster from 'ol/source/Cluster';\r\nimport olSourceVector from 'ol/source/Vector';\r\nimport * as olstyle from 'ol/style';\r\n\r\nimport { Observable, Subject, forkJoin } from 'rxjs';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { take, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceState } from '../../workspace/workspace.state';\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from './../../import-export/import-export.state';\r\n\r\n/**\r\n * Tool to apply spatial filter\r\n */\r\n@ToolComponent({\r\n name: 'spatialFilter',\r\n title: 'igo.integration.tools.spatialFilter',\r\n icon: 'selection-marker'\r\n})\r\n/**\r\n * Spatial Filter Type\r\n */\r\n@Component({\r\n selector: 'igo-spatial-filter-tool',\r\n templateUrl: './spatial-filter-tool.component.html',\r\n styleUrls: ['./spatial-filter-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n SpatialFilterTypeComponent,\r\n SpatialFilterItemComponent,\r\n PanelComponent,\r\n FeatureDetailsComponent,\r\n NgIf,\r\n AsyncPipe\r\n ]\r\n})\r\nexport class SpatialFilterToolComponent implements OnInit, OnDestroy {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n @Input() type: SpatialFilterType;\r\n @Input() itemType: SpatialFilterItemType = SpatialFilterItemType.Address;\r\n @Input() freehandDrawIsActive: boolean;\r\n\r\n public layers: Layer[] = [];\r\n public activeLayers: Layer[] = [];\r\n\r\n public queryType: SpatialFilterQueryType;\r\n public thematics: SpatialFilterThematic[];\r\n public zone: Feature;\r\n public zoneWithBuffer: Feature;\r\n public buffer = 0;\r\n\r\n public iterator = 1;\r\n\r\n public selectedFeature$: BehaviorSubject<Feature> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n private format = new olFormatGeoJSON();\r\n\r\n public store: EntityStore<Feature> = new EntityStore<Feature>([]); // Store to print results at the end\r\n\r\n public spatialListStore: EntityStore<Feature> = new EntityStore<Feature>([]);\r\n\r\n public loading = false;\r\n\r\n public thematicLength = 0;\r\n\r\n public measureUnit: MeasureLengthUnit = MeasureLengthUnit.Meters;\r\n private unsubscribe$ = new Subject<void>();\r\n\r\n private moveendKey: EventsKey;\r\n\r\n public defaultStyle: olstyle.Style | ((feature, resolution) => olstyle.Style);\r\n\r\n constructor(\r\n private matIconRegistry: MatIconRegistry,\r\n private spatialFilterService: SpatialFilterService,\r\n private dataSourceService: DataSourceService,\r\n private layerService: LayerService,\r\n private mapState: MapState,\r\n private messageService: MessageService,\r\n private languageService: LanguageService,\r\n private importExportState: ImportExportState,\r\n private toolState: ToolState,\r\n private workspaceState: WorkspaceState,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n for (const layer of this.map.layers) {\r\n if (\r\n layer.title &&\r\n layer.title.includes(\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )\r\n )\r\n ) {\r\n this.layers.push(layer);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n getOutputType(event: SpatialFilterType) {\r\n this.type = event;\r\n this.queryType = undefined;\r\n }\r\n\r\n getOutputQueryType(event: SpatialFilterQueryType) {\r\n this.queryType = event;\r\n if (this.queryType) {\r\n this.loadFilterList();\r\n }\r\n }\r\n\r\n activateExportTool() {\r\n const ids = [];\r\n const re = new RegExp('^Zone \\\\d+');\r\n for (const layer of this.layers) {\r\n if (!layer.title.match(re)) {\r\n ids.push(layer.id);\r\n }\r\n }\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.importExportState.setsExportOptions({ layers: ids } as ExportOptions);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n\r\n activateWorkspace(record?) {\r\n let layerToOpenWks;\r\n this.workspaceState.store.entities$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => {\r\n if (\r\n !record &&\r\n this.activeLayers.length &&\r\n this.workspaceState.store.all().length > 1\r\n ) {\r\n if (this.itemType === SpatialFilterItemType.Thematics) {\r\n for (const thematic of this.thematics) {\r\n if (!thematic.zeroResults) {\r\n layerToOpenWks = this.activeLayers.find((layer) =>\r\n layer.title.includes(\r\n thematic.name + ' ' + this.iterator.toString()\r\n )\r\n );\r\n break;\r\n }\r\n }\r\n } else {\r\n const title = 'Adresses ' + this.iterator.toString();\r\n this.activeLayers.forEach((layer) => {\r\n if (layer.title.includes(title)) {\r\n layerToOpenWks = layer;\r\n }\r\n });\r\n }\r\n\r\n if (layerToOpenWks) {\r\n this.workspaceState.workspacePanelExpanded = true;\r\n this.workspaceState.setActiveWorkspaceById(layerToOpenWks.id);\r\n }\r\n } else if (\r\n record &&\r\n this.activeLayers.length &&\r\n this.workspaceState.store.all().length > 1\r\n ) {\r\n this.selectWorkspaceEntity(record);\r\n this.moveendKey = this.map.ol.on('moveend', () => {\r\n this.selectWorkspaceEntity(record);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private selectWorkspaceEntity(record) {\r\n this.workspaceState.store.all().forEach((workspace) => {\r\n workspace.entityStore.state.updateAll({ selected: false });\r\n if (workspace.title.includes(record.added[0].meta.title)) {\r\n this.workspaceState.setActiveWorkspaceById(workspace.id);\r\n workspace.entityStore.state.updateMany(record.added, {\r\n selected: true\r\n });\r\n }\r\n });\r\n }\r\n\r\n private loadFilterList() {\r\n this.spatialFilterService\r\n .loadFilterList(this.queryType)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((features: Feature[]) => {\r\n features.sort((a, b) => {\r\n if (a.properties.nom < b.properties.nom) {\r\n return -1;\r\n }\r\n if (a.properties.nom > b.properties.nom) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n this.spatialListStore.clear();\r\n this.spatialListStore.load(features);\r\n });\r\n }\r\n\r\n getOutputToggleSearch() {\r\n this.loadThematics();\r\n }\r\n\r\n getOutputClearSearch() {\r\n this.zone = undefined;\r\n this.queryType = undefined;\r\n }\r\n\r\n clearMap() {\r\n this.map.removeLayers(this.layers);\r\n this.layers = [];\r\n this.activeLayers = [];\r\n this.thematicLength = 0;\r\n this.iterator = 1;\r\n if (this.type === SpatialFilterType.Predefined) {\r\n this.zone = undefined;\r\n this.queryType = undefined;\r\n }\r\n }\r\n\r\n private loadThematics() {\r\n this.loading = true;\r\n let zeroResults = true;\r\n let thematics;\r\n if (this.buffer === 0 || this.type === SpatialFilterType.Point) {\r\n this.tryAddFeaturesToMap([this.zone]);\r\n }\r\n if (this.itemType !== SpatialFilterItemType.Thematics) {\r\n const theme: SpatialFilterThematic = {\r\n name: ''\r\n };\r\n thematics = [theme];\r\n } else {\r\n thematics = this.thematics;\r\n }\r\n if (\r\n this.measureUnit === MeasureLengthUnit.Kilometers &&\r\n this.type !== SpatialFilterType.Point\r\n ) {\r\n this.buffer = this.buffer * 1000;\r\n }\r\n if (this.type === SpatialFilterType.Polygon) {\r\n this.buffer = 0; // to avoid buffer enter a second time in terrAPI\r\n }\r\n\r\n const observables$: Observable<Feature[]>[] = [];\r\n thematics.forEach((thematic) => {\r\n observables$.push(\r\n this.spatialFilterService\r\n .loadFilterItem(\r\n this.zone,\r\n this.itemType,\r\n this.queryType,\r\n thematic,\r\n this.buffer\r\n )\r\n .pipe(\r\n tap((features: Feature[]) => {\r\n this.store.insertMany(features);\r\n const featuresPoint: Feature[] = [];\r\n const featuresLinePoly: Feature[] = [];\r\n let idPoint;\r\n let idLinePoly;\r\n features.forEach((feature) => {\r\n if (feature.geometry.type === 'Point') {\r\n feature.properties.longitude =\r\n feature.geometry.coordinates[0];\r\n feature.properties.latitude = feature.geometry.coordinates[1];\r\n featuresPoint.push(feature);\r\n idPoint = feature.meta.id;\r\n } else {\r\n featuresLinePoly.push(feature);\r\n idLinePoly = feature.meta.id;\r\n }\r\n });\r\n\r\n this.tryAddPointToMap(featuresPoint, idPoint);\r\n this.tryAddLayerToMap(featuresLinePoly, idLinePoly);\r\n if (features.length) {\r\n zeroResults = false;\r\n this.thematicLength += 1;\r\n thematic.zeroResults = false;\r\n this.cdRef.detectChanges();\r\n } else {\r\n thematic.zeroResults = true;\r\n }\r\n\r\n if (features.length >= 10000) {\r\n this.messageService.alert(\r\n 'igo.geo.spatialFilter.maxSizeAlert',\r\n 'igo.geo.spatialFilter.warning',\r\n { timeOut: 10000 }\r\n );\r\n }\r\n })\r\n )\r\n );\r\n });\r\n\r\n forkJoin(observables$)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => {\r\n this.loading = false;\r\n if (zeroResults) {\r\n this.messageService.alert(\r\n 'igo.geo.spatialFilter.zeroResults',\r\n 'igo.geo.spatialFilter.warning',\r\n { timeOut: 10000 }\r\n );\r\n }\r\n });\r\n }\r\n\r\n onZoneChange(feature: Feature, buffer?: boolean) {\r\n this.zone = feature;\r\n if (feature) {\r\n buffer\r\n ? this.tryAddFeaturesToMap([feature], true)\r\n : this.tryAddFeaturesToMap([feature]);\r\n this.zoomToFeatureExtent(feature);\r\n }\r\n }\r\n\r\n /**\r\n * Try to add zone feature to the map overlay\r\n */\r\n public tryAddFeaturesToMap(features: Feature[], buffer?: boolean) {\r\n let i = 1;\r\n for (const feature of features) {\r\n if (this.type === SpatialFilterType.Predefined) {\r\n for (const layer of this.layers) {\r\n if (\r\n layer.options._internal &&\r\n layer.options._internal.code === feature.properties.code &&\r\n !buffer\r\n ) {\r\n if (!layer.title?.startsWith('Zone')) {\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n }\r\n return;\r\n }\r\n if (layer.title?.startsWith('Zone')) {\r\n this.activeLayers = [];\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n } else {\r\n if (buffer) {\r\n for (const layer of this.activeLayers) {\r\n if (\r\n this.activeLayers.length === 1 &&\r\n layer.title?.startsWith('Zone')\r\n ) {\r\n const index = this.layers.indexOf(layer);\r\n this.layers.splice(index, 1);\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n }\r\n this.activeLayers = [];\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith('Zone')) {\r\n i++;\r\n }\r\n }\r\n this.defaultStyle = (_feature, resolution) => {\r\n const coordinates = (features[0] as any).coordinates;\r\n return new olstyle.Style({\r\n image: new olstyle.Circle({\r\n radius: coordinates\r\n ? this.buffer /\r\n Math.cos((Math.PI / 180) * coordinates[1]) /\r\n resolution\r\n : undefined,\r\n fill: new olstyle.Fill({\r\n color: 'rgba(200, 200, 20, 0.2)'\r\n }),\r\n stroke: new olstyle.Stroke({\r\n width: 1,\r\n color: 'orange'\r\n })\r\n }),\r\n stroke: new olstyle.Stroke({\r\n width: 1,\r\n color: 'orange'\r\n }),\r\n fill: new olstyle.Fill({\r\n color: 'rgba(200, 200, 20, 0.2)'\r\n })\r\n });\r\n };\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'vector',\r\n queryable: true\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: DataSource) => {\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: ('Zone ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n workspace: { enabled: true },\r\n _internal: {\r\n code:\r\n this.type === SpatialFilterType.Predefined\r\n ? feature.properties.code\r\n : undefined\r\n },\r\n source: dataSource,\r\n visible: true\r\n }) as VectorLayer;\r\n const featuresOl = features.map((f) => {\r\n return featureToOl(f, this.map.projection);\r\n });\r\n if (this.type !== SpatialFilterType.Predefined) {\r\n const type =\r\n this.type === SpatialFilterType.Point ? 'Cercle' : 'Polygone';\r\n featuresOl[0].set('nom', 'Zone', true);\r\n featuresOl[0].set('type', type, true);\r\n }\r\n const ol = dataSource.ol as\r\n | olSourceVector<OlGeometry>\r\n | olSourceCluster;\r\n ol.addFeatures(featuresOl);\r\n olLayer.ol.setStyle(this.defaultStyle);\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.activeLayers.push(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Try to add point features to the map\r\n * Necessary to create clusters\r\n */\r\n private tryAddPointToMap(features: Feature[], id) {\r\n let i = 1;\r\n if (features.length) {\r\n if (this.map === undefined) {\r\n return;\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith(features[0].meta.title)) {\r\n i++;\r\n }\r\n }\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'cluster',\r\n id,\r\n queryable: true,\r\n distance: 120,\r\n meta: {\r\n title: 'Cluster'\r\n }\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: ClusterDataSource) => {\r\n const icon = features[0].meta.icon;\r\n let style: olstyle.Style;\r\n if (!icon) {\r\n style = createOverlayMarkerStyle();\r\n } else {\r\n style = this.createSvgIcon(icon) || createOverlayMarkerStyle();\r\n }\r\n\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n source: dataSource,\r\n visible: true,\r\n style\r\n });\r\n\r\n const featuresOl = features.map((feature) => {\r\n return featureToOl(feature, this.map.projection);\r\n });\r\n const ol = dataSource.ol as olSourceCluster;\r\n ol.getSource().addFeatures(featuresOl);\r\n if (this.layers.find((layer) => layer.id === olLayer.id)) {\r\n this.map.removeLayer(\r\n this.layers.find((layer) => layer.id === olLayer.id)\r\n );\r\n i = i - 1;\r\n olLayer.title = (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string;\r\n olLayer.options.title = olLayer.title;\r\n }\r\n this.iterator = i;\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.pushLayer(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n private createSvgIcon(icon): olstyle.Style {\r\n let style: olstyle.Style;\r\n this.matIconRegistry.getNamedSvgIcon(icon).subscribe((svgObj) => {\r\n const xmlSerializer = new XMLSerializer();\r\n svgObj.setAttribute('width', '30');\r\n svgObj.setAttribute('height', '30');\r\n svgObj.setAttribute('fill', 'rgba(0, 128, 255)');\r\n svgObj.setAttribute('stroke', 'white');\r\n const svg = xmlSerializer.serializeToString(svgObj);\r\n style = new olstyle.Style({\r\n image: new olstyle.Icon({\r\n src: 'data:image/svg+xml;utf8,' + svg\r\n })\r\n });\r\n });\r\n return style;\r\n }\r\n /**\r\n * Try to add line or polygon features to the map\r\n */\r\n private tryAddLayerToMap(features: Feature[], id) {\r\n let i = 1;\r\n if (features.length) {\r\n if (this.map === undefined) {\r\n return;\r\n }\r\n for (const layer of this.layers) {\r\n if (layer.title?.startsWith(features[0].meta.title)) {\r\n i++;\r\n }\r\n }\r\n this.dataSourceService\r\n .createAsyncDataSource({\r\n type: 'vector',\r\n id,\r\n queryable: true\r\n } as QueryableDataSourceOptions)\r\n .pipe(take(1))\r\n .subscribe((dataSource: DataSource) => {\r\n const olLayer = this.layerService.createLayer({\r\n isIgoInternalLayer: true,\r\n title: (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string,\r\n source: dataSource,\r\n visible: true\r\n });\r\n const featuresOl = features.map((feature) => {\r\n return featureToOl(feature, this.map.projection);\r\n });\r\n const ol = dataSource.ol as olSourceVector<OlGeometry>;\r\n ol.addFeatures(featuresOl);\r\n if (this.layers.find((layer) => layer.id === olLayer.id)) {\r\n this.map.removeLayer(\r\n this.layers.find((layer) => layer.id === olLayer.id)\r\n );\r\n i = i - 1;\r\n olLayer.title = (features[0].meta.title +\r\n ' ' +\r\n i +\r\n ' - ' +\r\n this.languageService.translate.instant(\r\n 'igo.geo.spatialFilter.spatialFilter'\r\n )) as string;\r\n olLayer.options.title = olLayer.title;\r\n }\r\n this.map.addLayer(olLayer);\r\n this.layers.push(olLayer);\r\n this.pushLayer(olLayer);\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n zoomToFeatureExtent(feature) {\r\n if (feature) {\r\n const olFeature = this.format.readFeature(feature, {\r\n dataProjection: feature.projection,\r\n featureProjection: this.map.projection\r\n });\r\n moveToOlFeatures(\r\n this.map.viewController,\r\n [olFeature],\r\n FeatureMotion.Zoom\r\n );\r\n }\r\n }\r\n\r\n pushLayer(layer) {\r\n for (const lay of this.activeLayers) {\r\n if (lay.id === layer.id) {\r\n return;\r\n }\r\n }\r\n\r\n this.activeLayers.push(layer);\r\n }\r\n}\r\n","<igo-spatial-filter-type\r\n [store]=\"spatialListStore\"\r\n [selectedQueryType]=\"queryType\"\r\n [zone]=\"zone\"\r\n [layers]=\"activeLayers\"\r\n (eventType)=\"getOutputType($event)\"\r\n (eventQueryType)=\"getOutputQueryType($event)\"\r\n (zoneChange)=\"onZoneChange($event)\"\r\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\r\n (bufferChange)=\"buffer = $event\"\r\n (measureUnitChange)=\"measureUnit = $event\"\r\n>\r\n</igo-spatial-filter-type>\r\n\r\n<igo-spatial-filter-item\r\n [type]=\"type\"\r\n [queryType]=\"queryType\"\r\n [map]=\"map\"\r\n [zone]=\"zone\"\r\n [loading]=\"loading\"\r\n [store]=\"store\"\r\n [layers]=\"activeLayers\"\r\n [allLayers]=\"layers\"\r\n [thematicLength]=\"thematicLength\"\r\n (radiusEvent)=\"buffer = $event\"\r\n (bufferEvent)=\"buffer = $event\"\r\n (measureUnitChange)=\"measureUnit = $event\"\r\n (freehandControl)=\"freehandDrawIsActive = $event\"\r\n (drawZoneEvent)=\"zone = $event\"\r\n (zoneWithBufferChange)=\"onZoneChange($event, true)\"\r\n (itemTypeChange)=\"itemType = $event\"\r\n (thematicChange)=\"thematics = $event\"\r\n (toggleSearch)=\"getOutputToggleSearch()\"\r\n (clearButtonEvent)=\"clearMap()\"\r\n (clearSearchEvent)=\"getOutputClearSearch()\"\r\n (export)=\"activateExportTool()\"\r\n (openWorkspace)=\"activateWorkspace()\"\r\n (entityChange)=\"activateWorkspace($event)\"\r\n>\r\n</igo-spatial-filter-item>\r\n<ng-container *ngIf=\"selectedFeature$ | async as feature\">\r\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\r\n</ng-container>\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n TimeFilterListBindingDirective,\r\n TimeFilterListComponent\r\n} from '@igo2/geo';\r\n\r\n@ToolComponent({\r\n name: 'timeFilter',\r\n title: 'igo.integration.tools.timeFilter',\r\n icon: 'history'\r\n})\r\n@Component({\r\n selector: 'igo-time-filter-tool',\r\n templateUrl: './time-filter-tool.component.html',\r\n standalone: true,\r\n imports: [TimeFilterListComponent, TimeFilterListBindingDirective]\r\n})\r\nexport class TimeFilterToolComponent {\r\n constructor() {}\r\n}\r\n","<igo-time-filter-list igoTimeFilterListBinding></igo-time-filter-list>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool/active-ogc-filter-tool.component';\r\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool/active-time-filter-tool.component';\r\nimport { OgcFilterToolComponent } from './ogc-filter-tool/ogc-filter-tool.component';\r\nimport { SpatialFilterToolComponent } from './spatial-filter-tool/spatial-filter-tool.component';\r\nimport { TimeFilterToolComponent } from './time-filter-tool/time-filter-tool.component';\r\n\r\n/**\r\n * @deprecated import the components directly or INTEGRATION_FILTER_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n ],\r\n exports: [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n ]\r\n})\r\nexport class IgoAppFilterModule {\r\n static forRoot(): ModuleWithProviders<IgoAppFilterModule> {\r\n return {\r\n ngModule: IgoAppFilterModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Validators } from '@angular/forms';\r\n\r\nimport { Form, FormService, ToolComponent } from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\r\nimport { IgoMap } from '@igo2/geo';\r\n\r\nimport * as olstyle from 'ol/style';\r\n\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport type { Subscription } from 'rxjs';\r\n\r\nimport { MapState } from '../../map/map.state';\r\n\r\ninterface DataIssueReporterData {\r\n geometry: object;\r\n layer: string;\r\n desc: string;\r\n email: string;\r\n}\r\n\r\n@ToolComponent({\r\n name: 'dataIssueReporter',\r\n title: 'igo.integration.tools.dataIssueReporter',\r\n icon: 'message-alert'\r\n})\r\n@Component({\r\n selector: 'igo-issue-reporter-tool',\r\n templateUrl: './data-issue-reporter-tool.component.html',\r\n styleUrls: ['./data-issue-reporter-tool.component.scss']\r\n})\r\nexport class DataIssueReporterToolComponent implements OnInit, OnDestroy {\r\n /**\r\n * Url to report the data issue. Use the Post protocol to send the form.\r\n */\r\n @Input() url: string;\r\n\r\n /**\r\n * Map to link to the form\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n form$ = new BehaviorSubject<Form>(undefined);\r\n\r\n data$ = new BehaviorSubject<{ [key: string]: any }>(undefined);\r\n\r\n submitDisabled = true;\r\n\r\n private valueChanges$$: Subscription;\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private formService: FormService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n ngOnInit() {\r\n combineLatest([this.languageService.language$, this.map.layers$]).subscribe(\r\n ([language, layers]) => {\r\n const baseLayerOrShownInLayerList = layers\r\n .filter((l) => l.baseLayer || l.showInLayerList)\r\n .map((l) => {\r\n return { value: `${l.title}-${l.id}`, title: l.title };\r\n });\r\n const fieldConfigs = [\r\n {\r\n name: 'geometry',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.geometry'\r\n ),\r\n type: 'geometry',\r\n inputs: {\r\n map: this.map,\r\n geometryTypeField: true,\r\n geometryType: 'Polygon',\r\n drawGuideField: false,\r\n drawGuide: 0,\r\n drawGuidePlaceholder: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.drawGuidePlaceholder'\r\n ),\r\n drawStyle: new olstyle.Style({\r\n stroke: new olstyle.Stroke({\r\n color: [255, 0, 0, 1],\r\n width: 2\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [255, 0, 0, 0.2]\r\n }),\r\n image: new olstyle.Circle({\r\n radius: 8,\r\n stroke: new olstyle.Stroke({\r\n color: [255, 0, 0, 1]\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [255, 0, 0, 0.2]\r\n })\r\n })\r\n }),\r\n overlayStyle: new olstyle.Style({\r\n stroke: new olstyle.Stroke({\r\n color: [0, 255, 0, 1],\r\n width: 2\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [0, 255, 0, 0.2]\r\n }),\r\n image: new olstyle.Circle({\r\n radius: 8,\r\n stroke: new olstyle.Stroke({\r\n color: [0, 255, 0, 1]\r\n }),\r\n fill: new olstyle.Fill({\r\n color: [0, 255, 0, 0.2]\r\n })\r\n })\r\n })\r\n }\r\n },\r\n {\r\n name: 'layer',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.layer'\r\n ),\r\n type: 'select',\r\n options: {\r\n cols: 2\r\n },\r\n inputs: {\r\n choices: baseLayerOrShownInLayerList\r\n }\r\n },\r\n {\r\n name: 'desc',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.description'\r\n ),\r\n type: 'textarea',\r\n options: {\r\n validator: Validators.required\r\n }\r\n },\r\n {\r\n name: 'email',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.dataIssueReporterTool.email'\r\n ),\r\n options: {\r\n validator: Validators.email\r\n }\r\n }\r\n ];\r\n\r\n const fields = fieldConfigs.map((config) =>\r\n this.formService.field(config)\r\n );\r\n const form = this.formService.form(fields, []);\r\n\r\n this.valueChanges$$ = form.control.valueChanges.subscribe(() => {\r\n this.submitDisabled = !form.control.valid;\r\n });\r\n\r\n this.form$.next(form);\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.valueChanges$$.unsubscribe();\r\n }\r\n\r\n clearForm() {\r\n this.form$.value.control.reset();\r\n }\r\n\r\n onSubmit(data: DataIssueReporterData) {\r\n const submitTitle = 'igo.integration.dataIssueReporterTool.submit.title';\r\n if (!this.url) {\r\n this.messageService.alert(\r\n 'igo.integration.dataIssueReporterTool.submit.setupMessage',\r\n submitTitle\r\n );\r\n alert(JSON.stringify(data));\r\n } else {\r\n this.httpClient\r\n .post<DataIssueReporterData>(this.url, data)\r\n .subscribe(() => {\r\n this.messageService.success(\r\n 'igo.integration.dataIssueReporterTool.submit.message',\r\n submitTitle\r\n );\r\n });\r\n this.clearForm();\r\n }\r\n }\r\n}\r\n","<igo-form\r\n *ngIf=\"form$ | async as form\"\r\n [form]=\"form\"\r\n [formData]=\"data$ | async\"\r\n (submitForm)=\"onSubmit($any($event))\"\r\n>\r\n <div *ngIf=\"form.fields.length\" class=\"form-container\">\r\n <igo-form-field\r\n *ngFor=\"let field of form.fields\"\r\n [field]=\"field\"\r\n ></igo-form-field>\r\n </div>\r\n\r\n <div formButtons class=\"actions-container\">\r\n <button\r\n mat-stroked-button\r\n type=\"button\"\r\n color=\"primary\"\r\n (click)=\"clearForm()\"\r\n >\r\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\r\n </button>\r\n <button\r\n mat-flat-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"submitDisabled\"\r\n >\r\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\r\n </button>\r\n </div>\r\n</igo-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { IgoFormModule } from '@igo2/common';\r\nimport { IgoLanguageModule } from '@igo2/core/language';\r\nimport { IgoMessageModule } from '@igo2/core/message';\r\n\r\nimport { DataIssueReporterToolComponent } from './data-issue-reporter-tool/data-issue-reporter-tool.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n IgoLanguageModule,\r\n IgoFormModule,\r\n IgoMessageModule\r\n ],\r\n declarations: [DataIssueReporterToolComponent],\r\n exports: [DataIssueReporterToolComponent],\r\n schemas: []\r\n})\r\nexport class IgoAppGeometryFormModule {}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport type { WorkspaceStore } from '@igo2/common';\r\nimport { ContextImportExportComponent } from '@igo2/context';\r\nimport {\r\n ExportOptions,\r\n IgoMap,\r\n ImportExportComponent,\r\n ProjectionsLimitationsOptions\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ContextState } from '../../context/context.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { WorkspaceState } from '../../workspace/workspace.state';\r\nimport {\r\n ImportExportMode,\r\n ImportExportState,\r\n ImportExportType\r\n} from '../import-export.state';\r\n\r\n@ToolComponent({\r\n name: 'importExport',\r\n title: 'igo.integration.tools.importExport',\r\n icon: 'file-move'\r\n})\r\n@Component({\r\n selector: 'igo-import-export-tool',\r\n templateUrl: './import-export-tool.component.html',\r\n styleUrls: ['./import-export-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatTabsModule,\r\n ImportExportComponent,\r\n ContextImportExportComponent,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class ImportExportToolComponent implements OnInit {\r\n @Input() projectionsLimitations: ProjectionsLimitationsOptions;\r\n\r\n @Input() selectFirstProj: boolean = false;\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get workspaceStore(): WorkspaceStore {\r\n return this.workspaceState.store;\r\n }\r\n\r\n @Input() importExportType: ImportExportType = ImportExportType.layer;\r\n @Input() importExportShowBothType: boolean = true;\r\n\r\n constructor(\r\n private mapState: MapState,\r\n public importExportState: ImportExportState,\r\n private workspaceState: WorkspaceState,\r\n public contextState: ContextState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.selectType();\r\n this.selectMode();\r\n }\r\n\r\n private selectType() {\r\n if (this.importExportType) {\r\n this.importExportState.importExportType$.next(this.importExportType);\r\n }\r\n const userSelectedType = this.importExportState.importExportType$.value;\r\n if (userSelectedType !== undefined) {\r\n this.importExportState.setImportExportType(userSelectedType);\r\n } else {\r\n this.importExportState.setImportExportType(ImportExportType.layer);\r\n }\r\n }\r\n\r\n private selectMode() {\r\n const userSelectedMode = this.importExportState.selectedMode$.value;\r\n if (userSelectedMode !== undefined) {\r\n this.importExportState.setMode(userSelectedMode);\r\n } else {\r\n this.importExportState.setMode(ImportExportMode.import);\r\n }\r\n }\r\n\r\n public modeChanged(mode: ImportExportMode) {\r\n this.importExportState.setMode(mode);\r\n }\r\n\r\n public exportOptionsChange(exportOptions: ExportOptions) {\r\n this.importExportState.setsExportOptions(exportOptions);\r\n }\r\n\r\n importExportTypeChange(event) {\r\n this.importExportType = event.value;\r\n }\r\n}\r\n","<mat-tab-group *ngIf=\"importExportShowBothType\">\r\n <mat-tab\r\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\r\n >\r\n <igo-import-export\r\n [contextUri]=\"(contextState.context$ | async).uri\"\r\n [map]=\"map\"\r\n [selectFirstProj]=\"selectFirstProj\"\r\n [projectionsLimitations]=\"projectionsLimitations\"\r\n [store]=\"workspaceStore\"\r\n [selectedMode]=\"importExportState.selectedMode$ | async\"\r\n (selectMode)=\"modeChanged($any($event))\"\r\n [exportOptions$]=\"importExportState.exportOptions$\"\r\n (exportOptionsChange)=\"exportOptionsChange($event)\"\r\n >\r\n </igo-import-export>\r\n </mat-tab>\r\n <mat-tab\r\n [label]=\"'igo.integration.importExportTool.importExportContext' | translate\"\r\n >\r\n <igo-context-import-export [map]=\"map\"></igo-context-import-export>\r\n </mat-tab>\r\n</mat-tab-group>\r\n\r\n<igo-import-export\r\n *ngIf=\"!importExportShowBothType && importExportType === 'layer'\"\r\n [contextUri]=\"(contextState.context$ | async).uri\"\r\n [map]=\"map\"\r\n [store]=\"workspaceStore\"\r\n [selectedMode]=\"importExportState.selectedMode$ | async\"\r\n (selectMode)=\"modeChanged($any($event))\"\r\n [exportOptions$]=\"importExportState.exportOptions$\"\r\n (exportOptionsChange)=\"exportOptionsChange($event)\"\r\n>\r\n</igo-import-export>\r\n\r\n<igo-context-import-export\r\n *ngIf=\"!importExportShowBothType && importExportType === 'context'\"\r\n [map]=\"map\"\r\n>\r\n</igo-context-import-export>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ImportExportToolComponent } from './import-export-tool/import-export-tool.component';\r\n\r\n/**\r\n * @deprecated import the ImportExportToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [ImportExportToolComponent],\r\n exports: [ImportExportToolComponent]\r\n})\r\nexport class IgoAppImportExportModule {\r\n static forRoot(): ModuleWithProviders<IgoAppImportExportModule> {\r\n return {\r\n ngModule: IgoAppImportExportModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AsyncPipe, DecimalPipe, NgFor, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport {\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ConfigService } from '@igo2/core/config';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\r\nimport { StorageScope, StorageService } from '@igo2/core/storage';\r\nimport {\r\n IgoMap,\r\n InputProjections,\r\n ProjectionsLimitationsOptions,\r\n formatScale\r\n} from '@igo2/geo';\r\nimport { computeProjectionsConstraints, zoneMtm, zoneUtm } from '@igo2/geo';\r\nimport { Clipboard } from '@igo2/utils';\r\n\r\nimport * as olproj from 'ol/proj';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../../map.state';\r\n\r\n/**\r\n * Tool to display the coordinates and a cursor of the center of the map\r\n */\r\n@Component({\r\n selector: 'igo-advanced-coordinates',\r\n templateUrl: './advanced-coordinates.component.html',\r\n styleUrls: ['./advanced-coordinates.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n NgFor,\r\n MatOptionModule,\r\n MatSlideToggleModule,\r\n AsyncPipe,\r\n DecimalPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedCoordinatesComponent implements OnInit, OnDestroy {\r\n public formattedScale$: BehaviorSubject<string> = new BehaviorSubject('');\r\n public projections$: BehaviorSubject<InputProjections[]> =\r\n new BehaviorSubject([]);\r\n public form: UntypedFormGroup;\r\n public coordinates: string[];\r\n private currentCenterDefaultProj: [number, number];\r\n public center: boolean;\r\n private inMtmZone: boolean = true;\r\n private inLambert2 = { 32198: true, 3798: true };\r\n private mapState$$: Subscription;\r\n private _projectionsLimitations: ProjectionsLimitationsOptions = {};\r\n private projectionsConstraints: ProjectionsLimitationsOptions;\r\n private defaultProj: InputProjections;\r\n private currentZones = { utm: undefined, mtm: undefined };\r\n public units: boolean = true;\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get inputProj(): InputProjections {\r\n return this.form.get('inputProj').value;\r\n }\r\n set inputProj(value: InputProjections) {\r\n this.form.patchValue({ inputProj: value });\r\n }\r\n get projectionsLimitations(): ProjectionsLimitationsOptions {\r\n return this._projectionsLimitations || {};\r\n }\r\n\r\n @Input()\r\n set projectionsLimitations(value: ProjectionsLimitationsOptions) {\r\n this._projectionsLimitations = value;\r\n }\r\n\r\n constructor(\r\n public mapState: MapState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private cdRef: ChangeDetectorRef,\r\n private storageService: StorageService,\r\n private config: ConfigService,\r\n private formBuilder: UntypedFormBuilder\r\n ) {\r\n this.defaultProj = {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.wgs84',\r\n { code: 'EPSG:4326' }\r\n ),\r\n translateKey: 'wgs84',\r\n alias: 'WGS84',\r\n code: 'EPSG:4326',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n };\r\n this.center = this.storageService.get('centerToggle') as boolean;\r\n this.computeProjections();\r\n this.buildForm();\r\n }\r\n\r\n /**\r\n * Listen a state of the map, a state of a form, update the coordinates\r\n */\r\n ngOnInit(): void {\r\n this.mapState$$ = this.map.viewController.state$\r\n .pipe(debounceTime(50))\r\n .subscribe(() => {\r\n this.setScaleValue(this.map);\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n const currentMtmZone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n const currentUtmZone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n if (!this.inMtmZone && currentMtmZone !== this.currentZones.mtm) {\r\n this.back2quebec();\r\n }\r\n let zoneChange = false;\r\n if (currentMtmZone !== this.currentZones.mtm) {\r\n this.currentZones.mtm = currentMtmZone;\r\n zoneChange = true;\r\n }\r\n if (currentUtmZone !== this.currentZones.utm) {\r\n this.currentZones.utm = currentUtmZone;\r\n zoneChange = true;\r\n }\r\n if (zoneChange) {\r\n this.updateProjectionsZoneChange();\r\n }\r\n this.checkLambert(this.currentCenterDefaultProj);\r\n this.coordinates = this.getCoordinates();\r\n this.cdRef.detectChanges();\r\n this.storageService.set(\r\n 'currentProjection',\r\n this.inputProj,\r\n StorageScope.SESSION\r\n );\r\n });\r\n\r\n const tempInputProj = this.storageService.get(\r\n 'currentProjection'\r\n ) as InputProjections;\r\n this.inputProj = this.projections$.value[0];\r\n if (tempInputProj !== null) {\r\n const pos = this.positionInList(tempInputProj);\r\n this.inputProj = this.projections$.value[pos];\r\n this.updateZoneMtmUtm();\r\n }\r\n this.map.mapCenter$.next(this.center);\r\n this.coordinates = this.getCoordinates();\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.map.mapCenter$.next(false);\r\n this.mapState$$.unsubscribe();\r\n }\r\n\r\n setScaleValue(map: IgoMap) {\r\n this.formattedScale$.next(\r\n ': ~ 1 / ' + formatScale(map.viewController.getScale())\r\n );\r\n }\r\n /**\r\n * Coordinates of the center of the map on the appropriate systeme of coordinates\r\n * @returns Array of two numbers\r\n */\r\n getCoordinates(): string[] {\r\n this.currentZones.mtm = zoneMtm(this.currentCenterDefaultProj[0]);\r\n this.currentZones.utm = zoneUtm(this.currentCenterDefaultProj[0]);\r\n let coord;\r\n const code = this.inputProj.code;\r\n let decimal = 2;\r\n if (code.includes('EPSG:4326') || code.includes('EPSG:4269')) {\r\n decimal = 5;\r\n }\r\n this.units = code === 'EPSG:4326' || code === 'EPSG:4269';\r\n coord = this.map.viewController\r\n .getCenter(code)\r\n .map((c) => c.toFixed(decimal));\r\n return coord;\r\n }\r\n\r\n /**\r\n * Copy the coordinates to a clipboard\r\n */\r\n copyTextToClipboard(): void {\r\n const successful = Clipboard.copy(this.coordinates.toString());\r\n if (successful) {\r\n this.messageService.success(\r\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyMsg',\r\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyTitle'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Display a cursor on the center of the map\r\n */\r\n displayCenter(toggle: boolean): void {\r\n this.center = toggle;\r\n this.map.mapCenter$.next(toggle);\r\n this.storageService.set('centerToggle', toggle, StorageScope.SESSION);\r\n }\r\n\r\n /**\r\n * Builder of the form\r\n */\r\n private buildForm(): void {\r\n this.form = this.formBuilder.group({\r\n inputProj: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n /**\r\n * Update list of projections after changing of the state of the map\r\n */\r\n private updateProjectionsZoneChange(): void {\r\n let modifiedProj = this.projections$.value;\r\n const translate = this.languageService.translate;\r\n modifiedProj.map((p) => {\r\n if (p.translateKey === 'mtm') {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n if (zone) {\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n p.alias = `MTM ${zone}`;\r\n p.code = code;\r\n p.zone = `${zone}`;\r\n p.translatedValue = translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n p\r\n );\r\n } else {\r\n p.alias = '';\r\n this.inMtmZone = false;\r\n if (this.inputProj.translateKey === 'mtm') {\r\n this.inputProj = this.projections$.value[0];\r\n }\r\n }\r\n }\r\n if (p.translateKey === 'utm') {\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n const code = `EPSG:326${zone}`;\r\n p.alias = `UTM ${zone}`;\r\n p.code = code;\r\n p.zone = `${zone}`;\r\n p.translatedValue = translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n p\r\n );\r\n }\r\n });\r\n modifiedProj = modifiedProj.filter((p) => p.alias !== '');\r\n this.projections$.next(modifiedProj);\r\n }\r\n\r\n /**\r\n * Create a list of currents projections\r\n */\r\n private computeProjections(): void {\r\n this.projectionsConstraints = computeProjectionsConstraints(\r\n this.projectionsLimitations\r\n );\r\n const projections: InputProjections[] = [];\r\n\r\n if (!this.currentCenterDefaultProj) {\r\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\r\n this.defaultProj.code\r\n );\r\n }\r\n\r\n const translate = this.languageService.translate;\r\n if (this.projectionsConstraints.wgs84) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.wgs84',\r\n { code: 'EPSG:4326' }\r\n ),\r\n translateKey: 'wgs84',\r\n alias: 'WGS84',\r\n code: 'EPSG:4326',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n\r\n if (this.projectionsConstraints.nad83) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.nad83',\r\n { code: 'EPSG:4269' }\r\n ),\r\n translateKey: 'nad83',\r\n alias: 'NAD83',\r\n code: 'EPSG:4269',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n\r\n if (this.projectionsConstraints.webMercator) {\r\n projections.push({\r\n translatedValue: translate.instant(\r\n 'igo.geo.importExportForm.projections.webMercator',\r\n { code: 'EPSG:3857' }\r\n ),\r\n translateKey: 'webMercator',\r\n alias: 'Web Mercator',\r\n code: 'EPSG:3857',\r\n zone: '',\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n if (this.projectionsConstraints.mtm) {\r\n // Quebec\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n if (zone) {\r\n this.inMtmZone = true;\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n projections.splice(3, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n ),\r\n translateKey: 'mtm',\r\n alias: `MTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n } else {\r\n this.inMtmZone = false;\r\n }\r\n }\r\n if (this.projectionsConstraints.utm) {\r\n const order = this.inMtmZone ? 4 : 3;\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\r\n projections.splice(order, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n { code, zone }\r\n ),\r\n translateKey: 'utm',\r\n alias: `UTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n let configProjection: InputProjections[] = [];\r\n if (this.projectionsConstraints.projFromConfig) {\r\n configProjection = (this.config.getConfig('projections') ||\r\n []) as InputProjections[];\r\n }\r\n\r\n this.projections$.next(configProjection.concat(projections));\r\n }\r\n\r\n /**\r\n * Push the MTM in the array of systeme of coordinates\r\n * @param projections Array of the InputProjections\r\n */\r\n private pushMtm(projections: Array<InputProjections>): void {\r\n if (this.projectionsConstraints.mtm) {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n projections.splice(3, 0, {\r\n translatedValue: this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n ),\r\n translateKey: 'mtm',\r\n alias: `MTM ${zone}`,\r\n code,\r\n zone: `${zone}`,\r\n def: undefined,\r\n extent: undefined\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Updates the list of systems of coordinates for territory of Quebec\r\n * push MTM and UTM in the Array\r\n */\r\n private back2quebec(): void {\r\n const projections = this.projections$.value;\r\n this.pushMtm(projections);\r\n this.inMtmZone = true;\r\n }\r\n\r\n /**\r\n * Update the numbers of the zones when application is restarted\r\n */\r\n private updateZoneMtmUtm() {\r\n if (this.inputProj.translateKey === 'mtm') {\r\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\r\n this.inputProj.alias = `MTM ${zone}`;\r\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\r\n this.inputProj.code = code;\r\n this.inputProj.zone = `${zone}`;\r\n this.inputProj.translatedValue = this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.mtm',\r\n { code, zone }\r\n );\r\n }\r\n if (this.inputProj.translateKey === 'utm') {\r\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\r\n this.inputProj.alias = `UTM ${zone}`;\r\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\r\n this.inputProj.code = code;\r\n this.inputProj.zone = `${zone}`;\r\n this.inputProj.translatedValue = this.languageService.translate.instant(\r\n 'igo.geo.importExportForm.projections.utm',\r\n { code, zone }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Compute the position of a current projection in a list. 0 if the projection is not in the list\r\n * @param translateKey string, translate key of a projection\r\n * @returns numeric, position of an element in the array\r\n */\r\n positionInList(tempInputProj: InputProjections): number {\r\n const tk = tempInputProj.translateKey;\r\n const alias = tempInputProj.alias;\r\n let position; // = undefined;\r\n let iter = 0;\r\n this.projections$.value.map((projection) => {\r\n if (tk) {\r\n if (tk === projection.translateKey) {\r\n position = iter;\r\n }\r\n } else if (alias === projection.alias) {\r\n position = iter;\r\n }\r\n iter++;\r\n });\r\n position = position ? position : 0;\r\n return position;\r\n }\r\n\r\n /**\r\n * Change the list of projections depending on the projections of Lambert\r\n * @param coordinates An array of numbers, longitude and latitude\r\n */\r\n checkLambert(coordinates: [number, number]) {\r\n const lambertProjections = this.config.getConfig('projections') || [];\r\n lambertProjections.forEach((projection) => {\r\n let modifiedProj = this.projections$.value;\r\n const extent = projection.extent;\r\n const code = projection.code.match(/\\d+/);\r\n const currentExtentWGS = olproj.transformExtent(\r\n extent,\r\n projection.code,\r\n this.defaultProj.code\r\n );\r\n if (\r\n coordinates[0] < currentExtentWGS[0] ||\r\n coordinates[0] > currentExtentWGS[2] ||\r\n coordinates[1] < currentExtentWGS[1] ||\r\n coordinates[1] > currentExtentWGS[3]\r\n ) {\r\n this.inLambert2[code] = false;\r\n if (this.inputProj.alias === projection.alias) {\r\n this.inputProj = this.projections$.value[0];\r\n }\r\n modifiedProj = modifiedProj.filter((p) => p.alias !== projection.alias);\r\n this.projections$.next(modifiedProj);\r\n } else {\r\n if (!this.inLambert2[code]) {\r\n this.projections$.next(modifiedProj.concat(projection));\r\n this.inLambert2[code] = true;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"advanced-coordinates__coordinates-container\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field *ngIf=\"units; else elseBlock\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon' | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n <ng-template #elseBlock>\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.est'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n </ng-template>\n\n <mat-form-field *ngIf=\"units; else elseBlock2\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat' | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n <ng-template #elseBlock2>\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.nord'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n </ng-template>\n <button\n mat-icon-button\n [attr.aria-label]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.copy'\n | translate\n \"\n class=\"igo-form-button-group advanced-coordinates__copy-coordinates\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </div>\n\n <form class=\"igo-form advanced-coordinates__form\" [formGroup]=\"form\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field class=\"igo-input-container\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordSystem'\n | translate\n }}</mat-label>\n <mat-select [(value)]=\"inputProj\">\n <mat-option\n matTooltipShowDelay=\"500\"\n *ngFor=\"let projection of projections$ | async\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ projection.translatedValue || projection.alias }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-slide-toggle\n class=\"center-toggle mat-typography\"\n [checked]=\"center\"\n [labelPosition]=\"'before'\"\n (change)=\"displayCenter($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.center'\n | translate\n }}\n </mat-slide-toggle>\n </div>\n </form>\n\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.zoom' | translate\n }}\n {{ map.viewController.getZoom() }}\n </p>\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.scale' | translate\n }}\n {{ formattedScale$ | async }}\n </p>\n <p class=\"igo-zoom mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.resolution'\n | translate\n }}\n {{ map.viewController.getResolution() | number: '1.0-0' }}\n </p>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ContextService, DetailedContext } from '@igo2/context';\r\nimport { IgoMap, Layer, VectorLayer } from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ToolState } from '../../../tool/tool.state';\r\nimport { MapState } from '../../map.state';\r\n\r\n@Component({\r\n selector: 'igo-advanced-swipe',\r\n templateUrl: './advanced-swipe.component.html',\r\n styleUrls: ['./advanced-swipe.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatDividerModule,\r\n NgFor,\r\n MatSlideToggleModule,\r\n MatListModule,\r\n MatIconModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedSwipeComponent implements OnInit, OnDestroy {\r\n public swipe: boolean = false;\r\n public layerList: Layer[];\r\n public userControlledLayerList: Layer[];\r\n public form: UntypedFormGroup;\r\n public layers: VectorLayer[];\r\n public res: DetailedContext;\r\n public listForSwipe: Layer[];\r\n\r\n /**\r\n * Get an active map state\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n public mapState: MapState,\r\n private contextService: ContextService,\r\n private formBuilder: UntypedFormBuilder,\r\n private toolState: ToolState\r\n ) {\r\n this.buildForm();\r\n }\r\n\r\n /**\r\n * Get the list of layers for swipe\r\n * @internal\r\n */\r\n ngOnInit() {\r\n this.map.layers$.subscribe(\r\n (ll) =>\r\n (this.userControlledLayerList = ll.filter(\r\n (layer) =>\r\n !layer.baseLayer && layer.showInLayerList && layer.displayed\r\n ))\r\n );\r\n }\r\n\r\n /**\r\n * Desactivate the swipe\r\n * @internal\r\n */\r\n ngOnDestroy() {\r\n this.swipe = false;\r\n this.map.swipeEnabled$.next(this.swipe);\r\n }\r\n\r\n /**\r\n * Build a form for choise of the layers\r\n */\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n layers: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n /**\r\n * Activate the swipe, send a list of layers for a swipe-tool\r\n */\r\n startSwipe(toggle: boolean) {\r\n this.swipe = toggle;\r\n this.map.swipeEnabled$.next(toggle);\r\n this.listForSwipe = [];\r\n for (const layer of this.form.value.layers) {\r\n this.listForSwipe.push(layer);\r\n }\r\n this.map.selectedFeatures$.next(this.listForSwipe);\r\n }\r\n\r\n /**\r\n * Restart a swipe for a new layers-list\r\n */\r\n applyNewLayers(e) {\r\n this.startSwipe(false); // l'approche KISS\r\n this.startSwipe(true);\r\n if (e._selected) {\r\n e._selected = false;\r\n }\r\n const allLayers = this.userControlledLayerList.length;\r\n const selectedLayers = this.form.controls.layers.value.length;\r\n if (selectedLayers === allLayers) {\r\n e._selected = true;\r\n }\r\n }\r\n\r\n /**\r\n * Select all list of layers and restart a tool\r\n */\r\n selectAll(e) {\r\n if (e._selected) {\r\n this.form.controls.layers.setValue(this.userControlledLayerList);\r\n e._selected = true;\r\n } else {\r\n this.form.controls.layers.setValue([]);\r\n }\r\n this.startSwipe(false);\r\n this.startSwipe(true);\r\n }\r\n\r\n /**\r\n * Open search tool\r\n */\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n /**\r\n * Open catalog\r\n */\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n /**\r\n * Open context manager\r\n */\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n}\r\n","<div\n *ngIf=\"userControlledLayerList.length; else noLayersBlock\"\n class=\"igo-swipe-select-container\"\n>\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option\n *ngFor=\"let layer of userControlledLayerList\"\n [value]=\"layer\"\n (click)=\"applyNewLayers(e)\"\n >{{ layer.title }}</mat-option\n >\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle mat-typography\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate }}\n </mat-slide-toggle>\n </form>\n</div>\n\n<ng-template #noLayersBlock>\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty mat-typography\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"magnify\"></mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"layers-plus\"></mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon svgIcon=\"star\"></mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MapState } from '../map.state';\r\nimport { AdvancedCoordinatesComponent } from './advanced-coordinates/advanced-coordinates.component';\r\nimport { AdvancedSwipeComponent } from './advanced-swipe/advanced-swipe.component';\r\n\r\n@ToolComponent({\r\n name: 'advancedMap',\r\n title: 'igo.integration.tools.advancedMap',\r\n icon: 'toolbox'\r\n})\r\n/**\r\n * Tool to handle the advanced map tools\r\n */\r\n@Component({\r\n selector: 'igo-advanced-map-tool',\r\n templateUrl: './advanced-map-tool.component.html',\r\n styleUrls: ['./advanced-map-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n AdvancedSwipeComponent,\r\n MatDividerModule,\r\n AdvancedCoordinatesComponent,\r\n MatSlideToggleModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AdvancedMapToolComponent {\r\n get tracking$() {\r\n return this.mapState.map.geolocationController.tracking$;\r\n }\r\n get followPosition$() {\r\n return this.mapState.map.geolocationController.followPosition$;\r\n }\r\n\r\n constructor(public mapState: MapState) {}\r\n\r\n toggleTracking(value) {\r\n this.mapState.map.geolocationController.tracking = value;\r\n }\r\n\r\n toggleFollow(value) {\r\n this.mapState.map.geolocationController.followPosition = value;\r\n }\r\n}\r\n","<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-tool' | translate\n }}\n</h4>\n<igo-advanced-swipe></igo-advanced-swipe>\n<mat-divider class=\"advanced-tool-line\"></mat-divider>\n<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordinates'\n | translate\n }}\n</h4>\n<igo-advanced-coordinates></igo-advanced-coordinates>\n<mat-divider class=\"advanced-tool-line\"></mat-divider>\n\n<h4 class=\"nameOfTool\">\n {{ 'igo.integration.advanced-map-tool.geolocation.title' | translate }}\n</h4>\n\n<div class=\"igo-input-container\">\n <div class=\"geolocation-slide-toggle-container\">\n <mat-slide-toggle\n class=\"geolocation-option\"\n [checked]=\"tracking$ | async\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleTracking($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.tracking' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"geolocation-option\"\n [disabled]=\"(tracking$ | async) !== true\"\n [labelPosition]=\"'before'\"\n [checked]=\"followPosition$ | async\"\n (change)=\"toggleFollow($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.follow' | translate }}\n </mat-slide-toggle>\n </div>\n</div>\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport type { Layer } from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\r\n\r\nimport { WorkspaceState } from '../workspace.state';\r\n\r\n@Component({\r\n selector: 'igo-workspace-button',\r\n templateUrl: './workspace-button.component.html',\r\n styleUrls: ['./workspace-button.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class WorkspaceButtonComponent implements OnInit, OnDestroy {\r\n public hasWorkspace$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private hasWorkspace$$: Subscription;\r\n\r\n private _layer: Layer;\r\n private layer$: BehaviorSubject<Layer> = new BehaviorSubject(undefined);\r\n @Input()\r\n set layer(value: Layer) {\r\n this._layer = value;\r\n this.layer$.next(this._layer);\r\n }\r\n\r\n get layer(): Layer {\r\n return this._layer;\r\n }\r\n\r\n @Input() color: string = 'primary';\r\n\r\n constructor(private workspaceState: WorkspaceState) {}\r\n\r\n ngOnInit(): void {\r\n this.hasWorkspace$$ = combineLatest([\r\n this.workspaceState.workspaceEnabled$,\r\n this.layer$\r\n ]).subscribe((bunch) =>\r\n this.hasWorkspace$.next(bunch[0] && bunch[1]?.options.workspace?.enabled)\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hasWorkspace$$.unsubscribe();\r\n }\r\n\r\n activateWorkspace() {\r\n if (\r\n this.workspaceState.workspace$.value &&\r\n (this.workspaceState.workspace$.value as any).layer.id ===\r\n this.layer.id &&\r\n this.workspaceState.workspacePanelExpanded\r\n ) {\r\n this.workspaceState.workspacePanelExpanded = false;\r\n } else {\r\n this.workspaceState.workspacePanelExpanded = true;\r\n this.workspaceState.setActiveWorkspaceById(this.layer.id);\r\n }\r\n }\r\n}\r\n","<button\n *ngIf=\"hasWorkspace$ | async\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color\"\n (click)=\"activateWorkspace()\"\n>\n <mat-icon svgIcon=\"table\"></mat-icon>\n</button>\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n SearchSourceService,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace';\r\nimport { ToolState } from './../../tool/tool.state';\r\nimport { MapState } from './../map.state';\r\n\r\n@ToolComponent({\r\n name: 'mapDetails',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-details-tool',\r\n templateUrl: './map-details-tool.component.html',\r\n styleUrls: ['./map-details-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n WorkspaceButtonComponent,\r\n ExportButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n MetadataButtonComponent,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapDetailsToolComponent implements OnInit {\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get layers$(): Observable<Layer[]> {\r\n return this.map.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n )\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): any {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private searchSourceService: SearchSourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => {\r\n this.delayedShowEmptyMapContent = true;\r\n this.cdRef.detectChanges();\r\n }, 250);\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n}\r\n","<igo-layer-list\r\n class=\"mapDetailsList\"\r\n *ngIf=\"(layers$ | async).length; else empty\"\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n>\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n</igo-layer-list>\r\n\r\n<ng-template #empty>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n</ng-template>\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n IgoMap,\r\n Layer,\r\n LayerLegendListBindingDirective,\r\n LayerLegendListComponent,\r\n LayerListControlsOptions,\r\n SearchSourceService,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport {\r\n BehaviorSubject,\r\n Observable,\r\n ReplaySubject,\r\n Subscription,\r\n combineLatest\r\n} from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport { ToolState } from './../../tool/tool.state';\r\nimport { MapState } from './../map.state';\r\n\r\n@ToolComponent({\r\n name: 'mapLegend',\r\n title: 'igo.integration.tools.legend',\r\n icon: 'format-list-bulleted-type'\r\n})\r\n@Component({\r\n selector: 'igo-map-legend-tool',\r\n templateUrl: './map-legend-tool.component.html',\r\n styleUrls: ['./map-legend-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n LayerLegendListComponent,\r\n LayerLegendListBindingDirective,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapLegendToolComponent implements OnInit, OnDestroy {\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n layers$: BehaviorSubject<Layer[]> = new BehaviorSubject([]);\r\n showAllLegendsValue$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n change$ = new ReplaySubject<void>(1);\r\n\r\n private resolution$$: Subscription;\r\n private visibleOrInRangeLayers$$: Subscription;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n @Input() allowShowAllLegends: boolean = false;\r\n\r\n @Input() showAllLegendsValue: boolean = false;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get visibleOrInRangeLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) => layer.visible$.value && layer.isInResolutionsRange$.value\r\n )\r\n )\r\n );\r\n }\r\n\r\n get visibleLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) => layers.filter((layer) => layer.visible$.value))\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private searchSourceService: SearchSourceService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.resolution$$ = combineLatest([\r\n this.map.layers$,\r\n this.map.viewController.resolution$\r\n ])\r\n .pipe(debounceTime(10))\r\n .subscribe((bunch: [Layer[], number]) => {\r\n this.layers$.next(\r\n bunch[0].filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n });\r\n\r\n if (this.allowShowAllLegends) {\r\n this.mapState.showAllLegendsValue =\r\n this.mapState.showAllLegendsValue !== undefined\r\n ? this.mapState.showAllLegendsValue\r\n : this.showAllLegendsValue || false;\r\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\r\n } else {\r\n this.showAllLegendsValue$.next(false);\r\n }\r\n\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => {\r\n this.delayedShowEmptyMapContent = true;\r\n this.cdRef.detectChanges();\r\n }, 250);\r\n }\r\n\r\n onShowAllLegends(event) {\r\n this.mapState.showAllLegendsValue = event;\r\n this.showAllLegendsValue$.next(event);\r\n }\r\n\r\n showAllLegend() {\r\n if (this.layers$.getValue().length === 0) {\r\n return false;\r\n } else if (\r\n this.layers$.getValue().length !== 0 &&\r\n this.allowShowAllLegends === false\r\n ) {\r\n let visibleOrInRangeLayers;\r\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\r\n (value) => {\r\n value.length === 0\r\n ? (visibleOrInRangeLayers = false)\r\n : (visibleOrInRangeLayers = true);\r\n }\r\n );\r\n\r\n if (visibleOrInRangeLayers === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resolution$$.unsubscribe();\r\n if (this.visibleOrInRangeLayers$$) {\r\n this.visibleOrInRangeLayers$$.unsubscribe();\r\n }\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n}\r\n","<igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n>\n</igo-layer-legend-list>\n<ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n></ng-template>\n\n<p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n>\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n</p>\n\n<ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>\n <svg\n viewBox=\"0 0 24 24\"\n fit=\"\"\n height=\"100%\"\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <path\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\n ></path></svg\n ></mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n","import { Injectable } from '@angular/core';\r\n\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport {\r\n FEATURE,\r\n Feature,\r\n FeatureStore,\r\n IgoMap,\r\n Layer,\r\n MapGeolocationState,\r\n QueryableDataSource,\r\n QueryableDataSourceOptions,\r\n featureFromOl,\r\n measureOlGeometryLength,\r\n roundCoordTo\r\n} from '@igo2/geo';\r\nimport { uuid } from '@igo2/utils';\r\n\r\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport Geometry from 'ol/geom/Geometry';\r\nimport olLineString from 'ol/geom/LineString';\r\nimport olLayerVector from 'ol/layer/Vector';\r\nimport * as olProj from 'ol/proj';\r\nimport olVectorSource from 'ol/source/Vector';\r\n\r\nimport { BehaviorSubject, Subscription, combineLatest, interval } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { MapState } from '../map/map.state';\r\n\r\n/**\r\n * Service that holds the state of the direction module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MapProximityState {\r\n private defaultProximityRadiusValue: number = 30;\r\n\r\n public enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\r\n false\r\n );\r\n public proximityRadiusValue$: BehaviorSubject<number>;\r\n public proximitylocationType$: BehaviorSubject<string> =\r\n new BehaviorSubject<string>('geolocation');\r\n public proximityFeatureStore: FeatureStore<Feature>;\r\n private subs$$: Subscription[] = [];\r\n public currentPositionCoordinate$: BehaviorSubject<[number, number]> =\r\n new BehaviorSubject(undefined);\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private storageService: StorageService\r\n ) {\r\n this.proximityFeatureStore = new FeatureStore<Feature>([], {\r\n map: this.mapState.map\r\n });\r\n\r\n this.proximityRadiusValue$ = new BehaviorSubject<number>(\r\n (this.storageService.get('mapProximityRadius') as number) ||\r\n this.defaultProximityRadiusValue\r\n );\r\n\r\n this.mapState.map.ol.once('rendercomplete', () => {\r\n this.subscribeProximityMonitor();\r\n });\r\n }\r\n\r\n subscribeProximityMonitor() {\r\n this.subs$$.push(\r\n combineLatest([\r\n this.enabled$,\r\n this.proximitylocationType$,\r\n this.proximityRadiusValue$,\r\n interval(5000),\r\n this.map.geolocationController.position$\r\n ])\r\n .pipe(debounceTime(750))\r\n .subscribe(\r\n (bunch: [boolean, string, number, number, MapGeolocationState]) => {\r\n this.proximityFeatureStore.clear();\r\n const enabled = bunch[0];\r\n const layers = this.map.layers;\r\n const currentPos = this.map.geolocationController.position$.value;\r\n const locationType = bunch[1];\r\n const proximityRadiusValue = bunch[2];\r\n this.storageService.set(\r\n 'mapProximityRadius',\r\n proximityRadiusValue || this.defaultProximityRadiusValue\r\n );\r\n\r\n if (!enabled) {\r\n return;\r\n }\r\n\r\n let coord: number[];\r\n if (locationType === 'geolocation') {\r\n if (!currentPos || !currentPos.position) {\r\n return;\r\n }\r\n\r\n coord = olProj.transform(\r\n currentPos.position,\r\n currentPos.projection,\r\n this.map.projection\r\n );\r\n this.map.mapCenter$.next(false);\r\n } else {\r\n coord = this.map.viewController.getCenter();\r\n this.map.mapCenter$.next(true);\r\n }\r\n\r\n const coordLonLat = olProj.transform(\r\n coord,\r\n this.map.projection,\r\n 'EPSG:4269'\r\n );\r\n const roundedCoordLonLat = roundCoordTo(\r\n coordLonLat as [number, number],\r\n 6\r\n );\r\n this.currentPositionCoordinate$.next(roundedCoordLonLat);\r\n\r\n const layersToMonitor = layers.filter(\r\n (layer) =>\r\n layer.ol instanceof olLayerVector &&\r\n (layer.dataSource as QueryableDataSource).options.queryable &&\r\n layer.visible &&\r\n layer.isInResolutionsRange\r\n );\r\n\r\n layersToMonitor.map((layerToMonitor) => {\r\n const layerSource =\r\n layerToMonitor.ol.getSource() as olVectorSource<Geometry>;\r\n\r\n // Mostly for polygon features.\r\n const olFeaturesAtCoordinate =\r\n layerSource.getFeaturesAtCoordinate(coord);\r\n if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {\r\n olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {\r\n const featureAtThisPosition = featureFromOl(\r\n olFeatureAtCoordinate,\r\n this.map.projection\r\n );\r\n let title = this.getQueryTitle(\r\n featureAtThisPosition,\r\n layerToMonitor\r\n );\r\n // todo handle imported layers without querytitle? prompt title or detect first column?\r\n this.addFeatureToStore(\r\n layerToMonitor,\r\n coord,\r\n featureAtThisPosition,\r\n title,\r\n 0\r\n );\r\n });\r\n } else {\r\n // compute proximity for remaining sources\r\n const closestOlFeature =\r\n layerSource.getClosestFeatureToCoordinate(coord);\r\n if (closestOlFeature) {\r\n const closestOlGeom = closestOlFeature.getGeometry();\r\n const closestFeature = featureFromOl(\r\n closestOlFeature,\r\n this.map.projection\r\n );\r\n const geometryClosestPoint =\r\n closestOlGeom.getClosestPoint(coord);\r\n const linebetween = new olLineString([\r\n coord,\r\n geometryClosestPoint\r\n ]);\r\n const lineLength = measureOlGeometryLength(\r\n linebetween,\r\n 'EPSG:3857'\r\n );\r\n if (lineLength <= proximityRadiusValue) {\r\n let title = this.getQueryTitle(\r\n closestFeature,\r\n layerToMonitor\r\n );\r\n // todo handle imported layers without querytitle? prompt title or detect first column?\r\n this.addFeatureToStore(\r\n layerToMonitor,\r\n coord,\r\n closestFeature,\r\n title,\r\n lineLength\r\n );\r\n }\r\n }\r\n }\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Add a feature with proximity properties to the store\r\n * @internal\r\n */\r\n private addFeatureToStore(\r\n layer: Layer,\r\n coordFromCalculatedDistance,\r\n feature: Feature,\r\n title,\r\n distance\r\n ) {\r\n const featureId = uuid();\r\n const projection = this.map.ol.getView().getProjection();\r\n const olGeometry = feature.ol.getGeometry() as Geometry;\r\n const geometry = new GeoJSON().writeGeometryObject(olGeometry, {\r\n featureProjection: projection,\r\n dataProjection: projection\r\n }) as any;\r\n this.proximityFeatureStore.update({\r\n type: FEATURE,\r\n geometry,\r\n projection: projection.getCode(),\r\n properties: {\r\n ...feature.properties,\r\n ...{\r\n id: featureId,\r\n element: title,\r\n distance,\r\n coordFromCalculatedDistance,\r\n layerSrcId: layer.id,\r\n layerSrcTitle: layer.title\r\n }\r\n },\r\n meta: {\r\n id: featureId\r\n }\r\n });\r\n }\r\n\r\n getQueryTitle(feature: Feature, layer: Layer): string {\r\n let title;\r\n if (layer.options?.source?.options) {\r\n const dataSourceOptions = layer.options.source\r\n .options as QueryableDataSourceOptions;\r\n if (dataSourceOptions.queryTitle) {\r\n title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);\r\n }\r\n }\r\n return title;\r\n }\r\n\r\n getLabelMatch(feature: Feature, labelMatch): string {\r\n let label = labelMatch;\r\n const labelToGet = Array.from(labelMatch.matchAll(/\\$\\{([^\\{\\}]+)\\}/g));\r\n\r\n labelToGet.forEach((v) => {\r\n label = label.replace(v[0], feature.properties[v[1]]);\r\n });\r\n\r\n // Nothing done? check feature's attribute\r\n if (labelToGet.length === 0 && label === labelMatch) {\r\n label = feature.properties[labelMatch] || labelMatch;\r\n }\r\n return label;\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatRadioChange, MatRadioModule } from '@angular/material/radio';\r\n\r\nimport {\r\n EntityTableComponent,\r\n EntityTableTemplate,\r\n ToolComponent\r\n} from '@igo2/common';\r\nimport { LanguageService } from '@igo2/core/language';\r\nimport { MessageService } from '@igo2/core/message';\r\nimport { Feature, IgoMap } from '@igo2/geo';\r\nimport { Clipboard, NumberUtils } from '@igo2/utils';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MapProximityState } from '../map-proximity.state';\r\nimport { MapState } from '../map.state';\r\n\r\n@ToolComponent({\r\n name: 'map-proximity',\r\n title: 'igo.integration.tools.closestFeature',\r\n icon: 'radius'\r\n})\r\n/**\r\n * Tool to handle the advanced map tools\r\n */\r\n@Component({\r\n selector: 'igo-map-proximity-tool',\r\n templateUrl: './map-proximity-tool.component.html',\r\n styleUrls: ['./map-proximity-tool.component.scss'],\r\n standalone: true,\r\n imports: [\r\n EntityTableComponent,\r\n NgIf,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatRadioModule,\r\n FormsModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapProximityToolComponent implements OnInit, OnDestroy {\r\n private subs$$: Subscription[] = [];\r\n @ViewChild('table', { static: true }) table: EntityTableComponent;\r\n\r\n get maxDistance() {\r\n return this.mapProximityState.proximityRadiusValue$.value;\r\n }\r\n set maxDistance(value: number) {\r\n this.mapProximityState.proximityRadiusValue$.next(value);\r\n }\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n public userDefinedMapCenter: boolean;\r\n public userDefinedFollowPosition: boolean;\r\n /**\r\n * Table template\r\n * @internal\r\n */\r\n public tableTemplate: EntityTableTemplate;\r\n\r\n constructor(\r\n public mapState: MapState,\r\n public mapProximityState: MapProximityState,\r\n private languageService: LanguageService,\r\n private messageService: MessageService\r\n ) {\r\n this.tableTemplate = {\r\n selection: true,\r\n selectMany: false,\r\n selectionCheckbox: false,\r\n sort: true,\r\n columns: [\r\n {\r\n name: 'element',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.map-proximity-tool.feature'\r\n ),\r\n valueAccessor: (localFeature: Feature) => {\r\n return localFeature.properties.element;\r\n }\r\n },\r\n {\r\n name: 'distance',\r\n title: this.languageService.translate.instant(\r\n 'igo.integration.map-proximity-tool.distance'\r\n ),\r\n valueAccessor: (localFeature: Feature) => {\r\n return `${NumberUtils.roundToNDecimal(\r\n localFeature.properties.distance,\r\n 1\r\n )}m`;\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mapProximityState.enabled$.next(true);\r\n this.userDefinedFollowPosition =\r\n this.map.geolocationController.followPosition === true;\r\n this.userDefinedMapCenter = this.map.mapCenter$.value === true;\r\n\r\n this.subs$$.push(\r\n this.mapProximityState.proximitylocationType$.subscribe((v) => {\r\n this.map.mapCenter$.next(v !== 'geolocation');\r\n if (v === 'geolocation') {\r\n this.map.geolocationController.followPosition = true;\r\n } else {\r\n this.map.geolocationController.followPosition = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.mapProximityState.enabled$.next(false);\r\n this.map.mapCenter$.next(this.userDefinedMapCenter);\r\n this.subs$$.map((s) => s.unsubscribe());\r\n this.map.geolocationController.followPosition =\r\n this.userDefinedFollowPosition;\r\n }\r\n\r\n onLocationTypeChange(e: MatRadioChange) {\r\n this.mapProximityState.proximitylocationType$.next(e.value);\r\n }\r\n\r\n /**\r\n * Copy the coordinates to a clipboard\r\n */\r\n copyTextToClipboard(): void {\r\n const successful = Clipboard.copy(\r\n this.mapProximityState.currentPositionCoordinate$?.value.toString()\r\n );\r\n if (successful) {\r\n this.messageService.success(\r\n 'igo.integration.map-proximity-tool.copyMsg',\r\n 'igo.integration.map-proximity-tool.copyTitle'\r\n );\r\n }\r\n }\r\n}\r\n","<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ContextListBindingDirective,\r\n ContextListComponent\r\n} from '@igo2/context';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\r\nimport { MapState } from './../map.state';\r\n\r\n/**\r\n * Tool to browse a map's layers or to choose a different map\r\n */\r\n@ToolComponent({\r\n name: 'map',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-tool',\r\n templateUrl: './map-tool.component.html',\r\n styleUrls: ['./map-tool.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTabsModule,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n WorkspaceButtonComponent,\r\n ExportButtonComponent,\r\n OgcFilterButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n MetadataButtonComponent,\r\n ContextListComponent,\r\n ContextListBindingDirective,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapToolComponent {\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerListControls: LayerListControlsOptions = {};\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): any {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private toolState: ToolState,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n}\r\n","<mat-tab-group>\r\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\r\n <igo-layer-list\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-ogc-filter-button\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n ></igo-ogc-filter-button>\r\n <igo-time-filter-button\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n ></igo-time-filter-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\r\n <igo-context-list igoContextListBinding></igo-context-list>\r\n </mat-tab>\r\n</mat-tab-group>\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n ExportButtonComponent,\r\n ExportOptions,\r\n IgoMap,\r\n Layer,\r\n LayerLegendListBindingDirective,\r\n LayerLegendListComponent,\r\n LayerListBindingDirective,\r\n LayerListComponent,\r\n LayerListControlsEnum,\r\n LayerListControlsOptions,\r\n MetadataButtonComponent,\r\n OgcFilterButtonComponent,\r\n SearchSourceService,\r\n StyleModalLayerButtonComponent,\r\n TimeFilterButtonComponent,\r\n TrackFeatureButtonComponent,\r\n VectorLayer,\r\n sourceCanSearch\r\n} from '@igo2/geo';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport {\r\n ImportExportMode,\r\n ImportExportState\r\n} from '../../import-export/import-export.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\r\nimport { LayerListToolState } from '../layer-list-tool.state';\r\nimport { MapState } from '../map.state';\r\n\r\n/**\r\n * Tool to browse a map's layers or to choose a different map\r\n */\r\n@ToolComponent({\r\n name: 'mapTools',\r\n title: 'igo.integration.tools.map',\r\n icon: 'map'\r\n})\r\n@Component({\r\n selector: 'igo-map-tools',\r\n templateUrl: './map-tools.component.html',\r\n styleUrls: ['./map-tools.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTabsModule,\r\n NgIf,\r\n LayerListComponent,\r\n LayerListBindingDirective,\r\n StyleModalLayerButtonComponent,\r\n MetadataButtonComponent,\r\n TrackFeatureButtonComponent,\r\n TimeFilterButtonComponent,\r\n OgcFilterButtonComponent,\r\n ExportButtonComponent,\r\n WorkspaceButtonComponent,\r\n LayerLegendListComponent,\r\n LayerLegendListBindingDirective,\r\n MatListModule,\r\n MatIconModule,\r\n AsyncPipe,\r\n TranslateModule\r\n ]\r\n})\r\nexport class MapToolsComponent implements OnInit, OnDestroy {\r\n layers$: BehaviorSubject<Layer[]> = new BehaviorSubject([]);\r\n showAllLegendsValue$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n private resolution$$: Subscription;\r\n private visibleOrInRangeLayers$$: Subscription;\r\n public delayedShowEmptyMapContent: boolean = false;\r\n\r\n @Input() allowShowAllLegends: boolean = false;\r\n\r\n @Input() showAllLegendsValue: boolean = false;\r\n\r\n @Input() toggleLegendOnVisibilityChange: boolean = false;\r\n\r\n @Input() expandLegendOfVisibleLayers: boolean = false;\r\n\r\n @Input() updateLegendOnResolutionChange: boolean = false;\r\n\r\n @Input() selectedTabAtOpening: string;\r\n\r\n @Input() ogcButton: boolean = true;\r\n\r\n @Input() timeButton: boolean = true;\r\n\r\n @Input() layerAdditionAllowed: boolean = true;\r\n\r\n @Input()\r\n get layerListControls(): LayerListControlsOptions {\r\n return this._layerListControls;\r\n }\r\n set layerListControls(value: LayerListControlsOptions) {\r\n const stateOptions = this.layerListToolState.getLayerListControls();\r\n const stateKeyword = stateOptions.keyword;\r\n const stateOnlyVisible = stateOptions.onlyVisible;\r\n const stateSortAlpha = stateOptions.sortAlpha;\r\n\r\n value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;\r\n value.onlyVisible =\r\n stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;\r\n value.sortAlpha =\r\n stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;\r\n\r\n value.onlyVisible =\r\n value.onlyVisible === undefined ? false : value.onlyVisible;\r\n value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;\r\n\r\n this._layerListControls = value;\r\n }\r\n private _layerListControls = {};\r\n\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n @Input() queryBadge: boolean = false;\r\n\r\n get visibleOrInRangeLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) =>\r\n layers.filter(\r\n (layer) => layer.visible$.value && layer.isInResolutionsRange$.value\r\n )\r\n )\r\n );\r\n }\r\n\r\n get visibleLayers$(): Observable<Layer[]> {\r\n return this.layers$.pipe(\r\n map((layers) => layers.filter((layer) => layer.visible$.value))\r\n );\r\n }\r\n\r\n get excludeBaseLayers(): boolean {\r\n return this.layerListControls.excludeBaseLayers || false;\r\n }\r\n\r\n get layerFilterAndSortOptions(): LayerListControlsOptions {\r\n const filterSortOptions = Object.assign(\r\n {\r\n showToolbar: LayerListControlsEnum.default\r\n },\r\n this.layerListControls\r\n );\r\n\r\n switch (this.layerListControls.showToolbar) {\r\n case LayerListControlsEnum.always:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\r\n break;\r\n case LayerListControlsEnum.never:\r\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\r\n break;\r\n default:\r\n break;\r\n }\r\n return filterSortOptions;\r\n }\r\n\r\n @ViewChild('tabGroup', { static: true }) tabGroup;\r\n\r\n get searchToolInToolbar(): boolean {\r\n return (\r\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\r\n this.searchSourceService\r\n .getSources()\r\n .filter(sourceCanSearch)\r\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\r\n );\r\n }\r\n\r\n get catalogToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\r\n }\r\n\r\n get contextToolInToolbar(): boolean {\r\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\r\n }\r\n\r\n constructor(\r\n public layerListToolState: LayerListToolState,\r\n private toolState: ToolState,\r\n public mapState: MapState,\r\n private searchSourceService: SearchSourceService,\r\n private importExportState: ImportExportState\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.selectedTab();\r\n this.resolution$$ = combineLatest([\r\n this.map.layers$,\r\n this.map.viewController.resolution$\r\n ])\r\n .pipe(debounceTime(10))\r\n .subscribe((bunch: [Layer[], number]) => {\r\n this.layers$.next(\r\n bunch[0].filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n });\r\n\r\n if (this.allowShowAllLegends) {\r\n this.mapState.showAllLegendsValue =\r\n this.mapState.showAllLegendsValue !== undefined\r\n ? this.mapState.showAllLegendsValue\r\n : this.showAllLegendsValue || false;\r\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\r\n } else {\r\n this.showAllLegendsValue$.next(false);\r\n }\r\n\r\n // prevent message to be shown too quickly. Waiting for layers\r\n setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resolution$$.unsubscribe();\r\n if (this.visibleOrInRangeLayers$$) {\r\n this.visibleOrInRangeLayers$$.unsubscribe();\r\n }\r\n }\r\n\r\n onShowAllLegends(event) {\r\n this.mapState.showAllLegendsValue = event;\r\n this.showAllLegendsValue$.next(event);\r\n }\r\n\r\n private selectedTab() {\r\n const userSelectedTab = this.layerListToolState.selectedTab$.value;\r\n if (userSelectedTab !== undefined) {\r\n this.layerListToolState.setSelectedTab(userSelectedTab);\r\n } else {\r\n if (this.selectedTabAtOpening === 'legend') {\r\n this.layerListToolState.setSelectedTab(1);\r\n } else {\r\n this.layerListToolState.setSelectedTab(0);\r\n }\r\n }\r\n }\r\n\r\n public tabChanged(tab: MatTabChangeEvent) {\r\n this.layerListToolState.setSelectedTab(tab.index);\r\n this.layers$.next(\r\n this.map.layers.filter(\r\n (layer) =>\r\n layer.showInLayerList !== false &&\r\n (!this.excludeBaseLayers || !layer.baseLayer)\r\n )\r\n );\r\n }\r\n\r\n onLayerListChange(appliedFilters: LayerListControlsOptions) {\r\n this.layerListToolState.setKeyword(appliedFilters.keyword);\r\n this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);\r\n this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);\r\n }\r\n\r\n showAllLegend() {\r\n if (this.layers$.getValue().length === 0) {\r\n return false;\r\n } else if (\r\n this.layers$.getValue().length !== 0 &&\r\n this.allowShowAllLegends === false\r\n ) {\r\n let visibleOrInRangeLayers;\r\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\r\n (value) => {\r\n value.length === 0\r\n ? (visibleOrInRangeLayers = false)\r\n : (visibleOrInRangeLayers = true);\r\n }\r\n );\r\n\r\n if (visibleOrInRangeLayers === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n activateExport(layer: Layer) {\r\n let id = layer.id;\r\n if (layer.options.workspace?.workspaceId) {\r\n id =\r\n layer.options.workspace.workspaceId !== layer.id\r\n ? layer.options.workspace.workspaceId\r\n : layer.id;\r\n }\r\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\r\n this.importExportState.setMode(ImportExportMode.export);\r\n this.toolState.toolbox.activateTool('importExport');\r\n }\r\n\r\n activateTimeFilter() {\r\n this.toolState.toolbox.activateTool('activeTimeFilter');\r\n }\r\n\r\n activateOgcFilter() {\r\n this.toolState.toolbox.activateTool('activeOgcFilter');\r\n }\r\n\r\n searchEmit() {\r\n this.toolState.toolbox.activateTool('searchResults');\r\n }\r\n\r\n catalogEmit() {\r\n this.toolState.toolbox.activateTool('catalog');\r\n }\r\n\r\n contextEmit() {\r\n this.toolState.toolbox.activateTool('contextManager');\r\n }\r\n\r\n isTimeFilterButton(layer): boolean {\r\n const options = layer.dataSource.options;\r\n return this.timeButton && options.timeFilterable && options.timeFilter;\r\n }\r\n\r\n isOGCFilterButton(layer): boolean {\r\n const options = layer.dataSource.options;\r\n return (\r\n this.ogcButton &&\r\n options.ogcFilters &&\r\n options.ogcFilters.enabled &&\r\n (options.ogcFilters.pushButtons ||\r\n options.ogcFilters.checkboxes ||\r\n options.ogcFilters.radioButtons ||\r\n options.ogcFilters.select ||\r\n options.ogcFilters.autocomplete ||\r\n options.ogcFilters.editable)\r\n );\r\n }\r\n\r\n isExportButton(layer: Layer): boolean {\r\n if (\r\n (layer instanceof VectorLayer && layer.exportable === true) ||\r\n (layer.dataSource.options.download &&\r\n layer.dataSource.options.download.url) ||\r\n (layer.options.workspace?.enabled &&\r\n layer.options.workspace?.workspaceId !== layer.id)\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isStyleEditButton(layer: Layer): boolean {\r\n if (layer instanceof VectorLayer) {\r\n if ((layer as VectorLayer).options?.igoStyle?.editable) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","<mat-tab-group\r\n #tabGroup\r\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\r\n (selectedTabChange)=\"tabChanged($event)\"\r\n>\r\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\r\n <igo-layer-list\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [queryBadge]=\"queryBadge\"\r\n [map]=\"map\"\r\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\r\n >\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <igo-style-modal-layer-button\r\n *ngIf=\"isStyleEditButton(layer)\"\r\n [layer]=\"layer\"\r\n ></igo-style-modal-layer-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n <igo-track-feature-button\r\n [trackFeature]=\"true\"\r\n [layer]=\"layer\"\r\n ></igo-track-feature-button>\r\n <igo-time-filter-button\r\n *ngIf=\"isTimeFilterButton(layer)\"\r\n [header]=\"timeButton\"\r\n [layer]=\"layer\"\r\n (click)=\"activateTimeFilter()\"\r\n ></igo-time-filter-button>\r\n <igo-ogc-filter-button\r\n *ngIf=\"isOGCFilterButton(layer)\"\r\n [header]=\"ogcButton\"\r\n [layer]=\"layer\"\r\n (click)=\"activateOgcFilter()\"\r\n ></igo-ogc-filter-button>\r\n <igo-export-button\r\n *ngIf=\"isExportButton(layer)\"\r\n [layer]=\"layer\"\r\n (click)=\"activateExport(layer)\"\r\n ></igo-export-button>\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n </ng-template>\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\r\n <igo-layer-legend-list\r\n *ngIf=\"showAllLegend()\"\r\n igoLayerLegendListBinding\r\n [allowShowAllLegends]=\"allowShowAllLegends\"\r\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\r\n (allLegendsShown)=\"onShowAllLegends($event)\"\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n >\r\n </igo-layer-legend-list>\r\n <ng-template\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n ></ng-template>\r\n\r\n <p\r\n class=\"map-empty mat-typography\"\r\n *ngIf=\"\r\n !allowShowAllLegends &&\r\n (layers$ | async).length !== 0 &&\r\n (visibleOrInRangeLayers$ | async).length === 0\r\n \"\r\n >\r\n {{\r\n (visibleLayers$ | async).length\r\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\r\n : ('igo.integration.mapTool.noLayersVisible' | translate)\r\n }}\r\n </p>\r\n </mat-tab>\r\n\r\n <ng-template #emptyLayers>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path>\r\n </svg>\r\n </mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n </ng-template>\r\n</mat-tab-group>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { AdvancedMapToolComponent } from './advanced-map-tool/advanced-map-tool.component';\r\nimport { MapDetailsToolComponent } from './map-details-tool/map-details-tool.component';\r\nimport { MapLegendToolComponent } from './map-legend/map-legend-tool.component';\r\nimport { MapProximityToolComponent } from './map-proximity-tool/map-proximity-tool.component';\r\nimport { MapToolComponent } from './map-tool/map-tool.component';\r\nimport { MapToolsComponent } from './map-tools/map-tools.component';\r\n\r\n/**\r\n * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n ],\r\n exports: [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n ]\r\n})\r\nexport class IgoAppMapModule {\r\n static forRoot(): ModuleWithProviders<IgoAppMapModule> {\r\n return {\r\n ngModule: IgoAppMapModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\n\nimport { FeatureStore, FeatureWithMeasure } from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MeasureState {\n /**\n * Store that holds the measures\n */\n public store: FeatureStore<FeatureWithMeasure>;\n\n constructor(private mapState: MapState) {\n this.store = new FeatureStore<FeatureWithMeasure>([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layers$.subscribe((layers) => {\n if (\n layers.filter((l) => l.id?.startsWith('igo-measures-')).length === 0\n ) {\n this.store.deleteMany(this.store.all());\n this.mapState.map.ol\n .getOverlays()\n .getArray()\n .filter((overlay) =>\n (overlay as any).options.className.includes('igo-map-tooltip')\n )\n .map((overlay) => this.mapState.map.ol.removeOverlay(overlay));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport {\r\n FeatureStore,\r\n FeatureWithMeasure,\r\n IgoMap,\r\n MeasurerComponent\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\nimport { MeasureState } from '../measure.state';\r\n\r\n/**\r\n * Tool to measure lengths and areas\r\n */\r\n@ToolComponent({\r\n name: 'measurer',\r\n title: 'igo.integration.tools.measurer',\r\n icon: 'ruler'\r\n})\r\n@Component({\r\n selector: 'igo-measurer-tool',\r\n templateUrl: './measurer-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [MeasurerComponent]\r\n})\r\nexport class MeasurerToolComponent {\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get store(): FeatureStore<FeatureWithMeasure> {\r\n return this.measureState.store;\r\n }\r\n\r\n /**\r\n * Map to measure on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(\r\n private measureState: MeasureState,\r\n private mapState: MapState\r\n ) {}\r\n}\r\n","<igo-measurer [store]=\"store\" [map]=\"map\"></igo-measurer>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MeasurerToolComponent } from './measurer-tool.component';\r\n\r\n/**\r\n * @deprecated import the MeasurerToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [MeasurerToolComponent],\r\n exports: [MeasurerToolComponent]\r\n})\r\nexport class IgoAppMeasurerToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppMeasurerToolModule } from './measurer-tool/measurer-tool.module';\r\n\r\n/**\r\n * @deprecated import the MeasurerToolComponent directly\r\n */\r\n@NgModule({\r\n exports: [IgoAppMeasurerToolModule]\r\n})\r\nexport class IgoAppMeasureModule {}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { ToolComponent } from '@igo2/common';\r\nimport { IgoMap, PrintComponent } from '@igo2/geo';\r\n\r\nimport { MapState } from '../../map/map.state';\r\n\r\n@ToolComponent({\r\n name: 'print',\r\n title: 'igo.integration.tools.print',\r\n icon: 'printer'\r\n})\r\n@Component({\r\n selector: 'igo-print-tool',\r\n templateUrl: './print-tool.component.html',\r\n standalone: true,\r\n imports: [PrintComponent]\r\n})\r\nexport class PrintToolComponent {\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n constructor(private mapState: MapState) {}\r\n}\r\n","<igo-print [map]=\"map\"></igo-print>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { PrintToolComponent } from './print-tool/print-tool.component';\r\n\r\n/**\r\n * @deprecated import the PrintToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [PrintToolComponent],\r\n exports: [PrintToolComponent]\r\n})\r\nexport class IgoAppPrintModule {\r\n static forRoot(): ModuleWithProviders<IgoAppPrintModule> {\r\n return {\r\n ngModule: IgoAppPrintModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","import { AdvancedMapToolComponent } from './advanced-map-tool';\r\nimport { MapDetailsToolComponent } from './map-details-tool';\r\nimport { MapLegendToolComponent } from './map-legend';\r\nimport { MapProximityToolComponent } from './map-proximity-tool';\r\nimport { MapToolComponent } from './map-tool';\r\nimport { MapToolsComponent } from './map-tools';\r\n\r\nexport * from './advanced-map-tool';\r\nexport * from './map-proximity-tool';\r\nexport * from './map-details-tool';\r\nexport * from './map-legend';\r\nexport * from './map-tool';\r\nexport * from './map-tools';\r\nexport * from './map.state';\r\nexport * from './map-proximity.state';\r\n\r\nexport const INTEGRATION_MAP_DIRECTIVES = [\r\n AdvancedMapToolComponent,\r\n MapProximityToolComponent,\r\n MapToolComponent,\r\n MapToolsComponent,\r\n MapDetailsToolComponent,\r\n MapLegendToolComponent\r\n] as const;\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport {\r\n EntityRecord,\r\n EntityStore,\r\n EntityStoreFilterCustomFuncStrategy,\r\n EntityStoreStrategyFuncOptions\r\n} from '@igo2/common';\r\nimport { ConfigService } from '@igo2/core/config';\r\nimport { StorageService } from '@igo2/core/storage';\r\nimport {\r\n CommonVectorStyleOptions,\r\n Feature,\r\n FeatureMotion,\r\n FeatureStore,\r\n FeatureWorkspace,\r\n OverlayStyleOptions,\r\n SearchResult,\r\n SearchSource,\r\n SearchSourceService\r\n} from '@igo2/geo';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport { MapState } from '../map';\r\nimport { WorkspaceState } from '../workspace/workspace.state';\r\n\r\n/**\r\n * Define the FeatureMotion to apply when adding the SearchResult to the map as an overlay.\r\n */\r\nexport interface SearchFeatureMotion {\r\n selected?: FeatureMotion;\r\n focus?: FeatureMotion;\r\n}\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SearchState {\r\n public searchLayerStores: FeatureStore<Feature>[] = [];\r\n public searchOverlayStyle: CommonVectorStyleOptions = {};\r\n public searchOverlayStyleSelection: CommonVectorStyleOptions = {};\r\n public searchOverlayStyleFocus: CommonVectorStyleOptions = {};\r\n\r\n public focusedOrResolution$$: Subscription;\r\n public selectedOrResolution$$: Subscription;\r\n\r\n /**\r\n * Default feature motion are:\r\n * on selection = FeatureMotion.Default and\r\n * on focus = FeatureMotion.None\r\n */\r\n public featureMotion: SearchFeatureMotion = {\r\n selected: FeatureMotion.Default,\r\n focus: FeatureMotion.None\r\n };\r\n\r\n readonly searchTermSplitter$: BehaviorSubject<string> = new BehaviorSubject(\r\n '|'\r\n );\r\n\r\n readonly searchTerm$: BehaviorSubject<string> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n readonly searchType$: BehaviorSubject<string> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n readonly searchDisabled$: BehaviorSubject<boolean> = new BehaviorSubject(\r\n false\r\n );\r\n\r\n readonly searchResultsGeometryEnabled$: BehaviorSubject<boolean> =\r\n new BehaviorSubject(false);\r\n\r\n readonly searchSettingsChange$: BehaviorSubject<boolean> =\r\n new BehaviorSubject(undefined);\r\n\r\n readonly selectedResult$: BehaviorSubject<SearchResult> = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n /**\r\n * Store that holds the search results\r\n */\r\n readonly store = new EntityStore<SearchResult>([]);\r\n\r\n /**\r\n * Search types currently enabled in the search source service\r\n */\r\n get searchTypes(): string[] {\r\n return this.searchSourceService\r\n .getEnabledSources()\r\n .map((source: SearchSource) => (source.constructor as any).type);\r\n }\r\n\r\n constructor(\r\n private searchSourceService: SearchSourceService,\r\n private storageService: StorageService,\r\n private workspaceState: WorkspaceState,\r\n private configService: ConfigService,\r\n private mapState: MapState\r\n ) {\r\n const searchOverlayStyle: OverlayStyleOptions =\r\n this.configService.getConfig('searchOverlayStyle');\r\n if (searchOverlayStyle) {\r\n this.searchOverlayStyle = searchOverlayStyle.base;\r\n this.searchOverlayStyleSelection = searchOverlayStyle.selection;\r\n this.searchOverlayStyleFocus = searchOverlayStyle.focus;\r\n }\r\n\r\n const searchResultsGeometryEnabled = this.storageService.get(\r\n 'searchResultsGeometryEnabled'\r\n ) as boolean;\r\n if (searchResultsGeometryEnabled) {\r\n this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);\r\n }\r\n this.store.addStrategy(this.createCustomFilterTermStrategy(), false);\r\n\r\n const wksSource = this.searchSourceService\r\n .getSources()\r\n .find((source) => source.getId() === 'workspace');\r\n this.workspaceState.store.entities$.subscribe((e) => {\r\n const searchableWks = e.filter(\r\n (fw) =>\r\n fw instanceof FeatureWorkspace &&\r\n fw.layer.options.workspace.searchIndexEnabled\r\n );\r\n this.searchSourceService.setWorkspaces(wksSource, searchableWks);\r\n });\r\n this.monitorLayerDeletion();\r\n }\r\n\r\n private monitorLayerDeletion() {\r\n this.mapState.map.layers$.subscribe((layers) => {\r\n this.searchLayerStores.forEach((store) => {\r\n let layer = layers.find((l) => l.id === store.layer.id);\r\n if (!layer) {\r\n const index = this.searchLayerStores.indexOf(store);\r\n this.searchLayerStores.splice(index, 1);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private createCustomFilterTermStrategy(): EntityStoreFilterCustomFuncStrategy {\r\n const filterClauseFunc = (record: EntityRecord<SearchResult>) => {\r\n return record.entity.meta.score === 100;\r\n };\r\n return new EntityStoreFilterCustomFuncStrategy({\r\n filterClauseFunc\r\n } as EntityStoreStrategyFuncOptions);\r\n }\r\n\r\n /**\r\n * Activate custom strategy\r\n *\r\n */\r\n activateCustomFilterTermStrategy() {\r\n const strategy = this.store.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (strategy !== undefined) {\r\n strategy.activate();\r\n }\r\n }\r\n\r\n /**\r\n * Deactivate custom strategy\r\n *\r\n */\r\n deactivateCustomFilterTermStrategy() {\r\n const strategy = this.store.getStrategyOfType(\r\n EntityStoreFilterCustomFuncStrategy\r\n );\r\n if (strategy !== undefined) {\r\n strategy.deactivate();\r\n }\r\n }\r\n\r\n enableSearch() {\r\n this.searchDisabled$.next(false);\r\n }\r\n\r\n disableSearch() {\r\n this.searchDisabled$.next(true);\r\n }\r\n\r\n setSearchTerm(searchTerm: string) {\r\n this.searchTerm$.next(searchTerm);\r\n }\r\n\r\n setSearchType(searchType: string) {\r\n this.searchSourceService.enableSourcesByType(searchType);\r\n this.searchType$.next(searchType);\r\n }\r\n\r\n setSearchSettingsChange() {\r\n this.searchSettingsChange$.next(true);\r\n }\r\n\r\n setSelectedResult(result: SearchResult) {\r\n this.selectedResult$.next(result);\r\n }\r\n\r\n setSearchResultsGeometryStatus(value) {\r\n this.storageService.set('searchResultsGeometryEnabled', value);\r\n this.searchResultsGeometryEnabled$.next(value);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n HostListener,\r\n OnDestroy,\r\n OnInit,\r\n Self\r\n} from '@angular/core';\r\n\r\nimport { SearchBarComponent } from '@igo2/geo';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { SearchState } from '../search.state';\r\n\r\n@Directive({\r\n selector: '[igoSearchBarBinding]',\r\n standalone: true\r\n})\r\nexport class SearchBarBindingDirective implements OnInit, OnDestroy {\r\n get searchTerm(): string {\r\n return this.searchState.searchTerm$.value;\r\n }\r\n get searchType(): string {\r\n return this.searchState.searchType$.value;\r\n }\r\n\r\n private searchTerm$$: Subscription;\r\n private searchType$$: Subscription;\r\n private searchDisabled$$: Subscription;\r\n\r\n constructor(\r\n @Self() private component: SearchBarComponent,\r\n private searchState: SearchState\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\r\n (searchTerm: string) => {\r\n if (searchTerm !== undefined && searchTerm !== null) {\r\n this.component.setTerm(searchTerm);\r\n }\r\n }\r\n );\r\n\r\n this.searchType$$ = this.searchState.searchType$.subscribe(\r\n (searchType: string) => {\r\n if (searchType !== undefined && searchType !== null) {\r\n this.component.setSearchType(searchType);\r\n }\r\n }\r\n );\r\n\r\n this.searchDisabled$$ = this.searchState.searchDisabled$.subscribe(\r\n (searchDisabled: boolean) => {\r\n this.component.disabled = searchDisabled;\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.searchTerm$$.unsubscribe();\r\n this.searchType$$.unsubscribe();\r\n this.searchDisabled$$.unsubscribe();\r\n }\r\n\r\n @HostListener('searchTermChange', ['$event'])\r\n onSearchTermChange(searchTerm?: string) {\r\n if (searchTerm !== this.searchTerm) {\r\n this.searchState.setSearchTerm(searchTerm);\r\n }\r\n }\r\n\r\n @HostListener('searchTypeChange', ['$event'])\r\n onSearchTypeChange(searchType?: string) {\r\n if (searchType !== this.searchType) {\r\n this.searchState.setSearchType(searchType);\r\n }\r\n }\r\n}\r\n","import { AsyncPipe, NgIf } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit\r\n} from '@angular/core';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport {\r\n EntityState,\r\n EntityStore,\r\n FlexibleComponent,\r\n FlexibleState,\r\n PanelComponent,\r\n SanitizeHtmlPipe,\r\n ToolComponent,\r\n getEntityTitle\r\n} from '@igo2/common';\r\nimport { ConfigService } from '@igo2/core/config';\r\nimport {\r\n FEATURE,\r\n Feature,\r\n FeatureDetailsComponent,\r\n FeatureMotion,\r\n FeatureStore,\r\n IgoMap,\r\n Research,\r\n SearchResult,\r\n SearchResultAddButtonComponent,\r\n SearchResultsComponent,\r\n computeOlFeaturesExtent,\r\n featureFromOl,\r\n featureToOl,\r\n featuresAreOutOfView,\r\n featuresAreTooDeepInView,\r\n getCommonVectorSelectedStyle,\r\n getCommonVectorStyle,\r\n moveToOlFeatures,\r\n roundCoordTo\r\n} from '@igo2/geo';\r\n\r\nimport olFeature from 'ol/Feature';\r\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\r\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\r\nimport olPoint from 'ol/geom/Point';\r\nimport * as olProj from 'ol/proj';\r\n\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport pointOnFeature from '@turf/point-on-feature';\r\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\nimport { DirectionState } from '../../directions/directions.state';\r\nimport { MapState } from '../../map/map.state';\r\nimport { ToolState } from '../../tool/tool.state';\r\nimport { SearchState } from '../search.state';\r\n\r\n/**\r\n * Tool to browse the search results\r\n */\r\n@ToolComponent({\r\n name: 'searchResults',\r\n title: 'igo.integration.tools.searchResults',\r\n icon: 'magnify'\r\n})\r\n@Component({\r\n selector: 'igo-search-results-tool',\r\n templateUrl: './search-results-tool.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n FlexibleComponent,\r\n SearchResultsComponent,\r\n SearchResultAddButtonComponent,\r\n PanelComponent,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatBadgeModule,\r\n FeatureDetailsComponent,\r\n AsyncPipe,\r\n TranslateModule,\r\n SanitizeHtmlPipe\r\n ]\r\n})\r\nexport class SearchResultsToolComponent implements OnInit, OnDestroy {\r\n /**\r\n * to show hide results icons\r\n */\r\n @Input() showIcons: boolean = true;\r\n\r\n /**\r\n * Determine the top panel default state\r\n */\r\n @Input() topPanelStateDefault: string = 'expanded';\r\n\r\n private hasFeatureEmphasisOnSelection: boolean = false;\r\n public saveSearchResultInLayer: boolean = false;\r\n\r\n private showResultsGeometries$$: Subscription;\r\n private getRoute$$: Subscription;\r\n private shownResultsGeometries: Feature[] = [];\r\n private shownResultsEmphasisGeometries: Feature[] = [];\r\n private focusedResult$: BehaviorSubject<SearchResult> = new BehaviorSubject(\r\n undefined\r\n );\r\n public isSelectedResultOutOfView$ = new BehaviorSubject(false);\r\n private isSelectedResultOutOfView$$: Subscription;\r\n private abstractFocusedResult: Feature;\r\n private abstractSelectedResult: Feature;\r\n\r\n public debouncedEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\r\n private debouncedEmpty$$: Subscription;\r\n\r\n /**\r\n * Store holding the search results\r\n * @internal\r\n */\r\n get store(): EntityStore<SearchResult> {\r\n return this.searchState.store;\r\n }\r\n\r\n /**\r\n * Map to display the results on\r\n * @internal\r\n */\r\n get map(): IgoMap {\r\n return this.mapState.map;\r\n }\r\n\r\n get featureTitle(): string {\r\n return this.feature ? getEntityTitle(this.feature) : undefined;\r\n }\r\n\r\n get feature$(): Observable<Feature> {\r\n return this.store.stateView\r\n .firstBy$((e) => e.state.focused)\r\n .pipe(\r\n map(\r\n (element) =>\r\n (this.feature = element\r\n ? (element.entity.data as Feature)\r\n : undefined)\r\n )\r\n );\r\n }\r\n\r\n public feature: Feature;\r\n\r\n public term = '';\r\n private searchTerm$$: Subscription;\r\n\r\n public settingsChange$ = new BehaviorSubject<boolean>(undefined);\r\n\r\n public topPanelState$ = new BehaviorSubject<FlexibleState>('initial');\r\n private topPanelState$$: Subscription;\r\n\r\n @Input()\r\n set topPanelState(value: FlexibleState) {\r\n this.topPanelState$.next(value);\r\n }\r\n get topPanelState(): FlexibleState {\r\n return this.topPanelState$.value;\r\n }\r\n\r\n get termSplitter(): string {\r\n return this.searchState.searchTermSplitter$.value;\r\n }\r\n\r\n private format = new olFormatGeoJSON();\r\n\r\n get stores(): FeatureStore<Feature>[] {\r\n return this.searchState.searchLayerStores;\r\n }\r\n\r\n constructor(\r\n private mapState: MapState,\r\n private searchState: SearchState,\r\n private elRef: ElementRef,\r\n public toolState: ToolState,\r\n private directionState: DirectionState,\r\n configService: ConfigService\r\n ) {\r\n this.hasFeatureEmphasisOnSelection = configService.getConfig(\r\n 'hasFeatureEmphasisOnSelection'\r\n );\r\n this.saveSearchResultInLayer = configService.getConfig(\r\n 'saveSearchResultInLayer'\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\r\n (searchTerm: string) => {\r\n if (\r\n searchTerm !== undefined &&\r\n searchTerm !== null &&\r\n searchTerm !== ''\r\n ) {\r\n this.term = searchTerm;\r\n this.debouncedEmpty$.next(false);\r\n } else if (searchTerm === '') {\r\n this.debouncedEmpty$.next(true);\r\n }\r\n }\r\n );\r\n\r\n for (const res of this.store.stateView.all$().value) {\r\n if (this.store.state.get(res.entity).selected === true) {\r\n this.topPanelState = 'expanded';\r\n }\r\n }\r\n\r\n this.searchState.searchSettingsChange$.subscribe(() => {\r\n this.settingsChange$.next(true);\r\n });\r\n\r\n this.topPanelState$$ = this.topPanelState$.subscribe(() => {\r\n const igoList = this.computeElementRef()[0];\r\n const selected = this.computeElementRef()[1];\r\n if (selected) {\r\n setTimeout(() => {\r\n // To be sure the flexible component has been displayed yet\r\n if (!this.isScrolledIntoView(igoList, selected)) {\r\n this.adjustTopPanel(igoList, selected);\r\n }\r\n }, FlexibleComponent.transitionTime + 50);\r\n }\r\n });\r\n\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n if (!this.searchState.focusedOrResolution$$) {\r\n this.searchState.focusedOrResolution$$ = combineLatest([\r\n this.focusedResult$,\r\n this.map.viewController.resolution$\r\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\r\n this.buildResultEmphasis(bunch[0], 'focused')\r\n );\r\n }\r\n\r\n if (!this.searchState.selectedOrResolution$$) {\r\n this.searchState.selectedOrResolution$$ = combineLatest([\r\n this.searchState.selectedResult$,\r\n this.map.viewController.resolution$\r\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\r\n this.buildResultEmphasis(bunch[0], 'selected')\r\n );\r\n }\r\n }\r\n this.monitorResultOutOfView();\r\n\r\n this.showResultsGeometries$$ = combineLatest([\r\n this.searchState.searchResultsGeometryEnabled$,\r\n this.store.stateView.all$(),\r\n this.focusedResult$,\r\n this.searchState.selectedResult$,\r\n this.searchState.searchTerm$,\r\n this.map.viewController.resolution$\r\n ]).subscribe(\r\n (\r\n bunch: [\r\n boolean,\r\n { entity: SearchResult; state: EntityState }[],\r\n SearchResult,\r\n SearchResult,\r\n string,\r\n number\r\n ]\r\n ) => {\r\n const searchResultsGeometryEnabled = bunch[0];\r\n const searchResults = bunch[1];\r\n\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n this.clearFeatureEmphasis('shown');\r\n }\r\n this.shownResultsGeometries.map((result) =>\r\n this.map.queryResultsOverlay.removeFeature(result)\r\n );\r\n const featureToHandleGeom = searchResults.filter(\r\n (result) =>\r\n result.entity.meta.dataType === FEATURE &&\r\n result.entity.data.geometry &&\r\n !result.state.selected &&\r\n !result.state.focused\r\n );\r\n\r\n featureToHandleGeom.map((result) => {\r\n if (searchResultsGeometryEnabled) {\r\n result.entity.data.meta.style = getCommonVectorStyle(\r\n Object.assign(\r\n {},\r\n {\r\n feature: result.entity.data as Feature | olFeature<OlGeometry>\r\n },\r\n this.searchState.searchOverlayStyle,\r\n result.entity.style?.base ? result.entity.style.base : {}\r\n )\r\n );\r\n this.shownResultsGeometries.push(result.entity.data as Feature);\r\n this.map.queryResultsOverlay.addFeature(\r\n result.entity.data as Feature,\r\n FeatureMotion.None\r\n );\r\n if (this.hasFeatureEmphasisOnSelection) {\r\n this.buildResultEmphasis(\r\n result.entity as SearchResult<Feature>,\r\n 'shown'\r\n );\r\n }\r\n }\r\n });\r\n }\r\n );\r\n\r\n this.debouncedEmpty$$ = this.store.stateView.empty$\r\n .pipe(debounceTime(1500))\r\n .subscribe((empty) => this.debouncedEmpty$.next(empty));\r\n }\r\n\r\n private monitorResultOutOfView() {\r\n this.isSelectedResultOutOfView$$ = combineLatest([\r\n this.map.viewController.state$,\r\n this.searchState.selectedResult$\r\n ])\r\n .pipe(debounceTime(100))\r\n .subscribe((bunch) => {\r\n const selectedResult = bunch[1] as SearchResult<Feature>;\r\n if (!selectedResult) {\r\n this.isSelectedResultOutOfView$.next(false);\r\n return;\r\n }\r\n if (selectedResult.data.geometry) {\r\n const selectedOlFeature = featureToOl(\r\n selectedResult.data,\r\n this.map.projection\r\n );\r\n const selectedOlFeatureExtent = computeOlFeaturesExtent(\r\n [selectedOlFeature],\r\n this.map.viewController.getOlProjection()\r\n );\r\n this.isSelectedResultOutOfView$.next(\r\n featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent)\r\n );\r\n }\r\n });\r\n }\r\n\r\n private buildResultEmphasis(\r\n result: SearchResult<Feature>,\r\n trigger: 'selected' | 'focused' | 'shown' | undefined\r\n ) {\r\n if (trigger !== 'shown') {\r\n this.clearFeatureEmphasis(trigger);\r\n }\r\n if (!result || !result.data.geometry) {\r\n return;\r\n }\r\n const myOlFeature = featureToOl(result.data, this.map.projection);\r\n const olGeometry = myOlFeature.getGeometry();\r\n if (\r\n featuresAreTooDeepInView(\r\n this.map.viewController,\r\n olGeometry.getExtent() as [number, number, number, number],\r\n 0.0025\r\n )\r\n ) {\r\n const extent = olGeometry.getExtent();\r\n const x = extent[0] + (extent[2] - extent[0]) / 2;\r\n const y = extent[1] + (extent[3] - extent[1]) / 2;\r\n const feature1 = new olFeature({\r\n name: `${trigger}AbstractResult'`,\r\n geometry: new olPoint([x, y])\r\n });\r\n const abstractResult = featureFromOl(feature1, this.map.projection);\r\n\r\n let computedStyle;\r\n let zIndexOffset = 0;\r\n\r\n switch (trigger) {\r\n case 'focused':\r\n computedStyle = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n zIndexOffset = 2;\r\n break;\r\n case 'shown':\r\n computedStyle = getCommonVectorStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyle,\r\n result.style?.base ? result.style.base : {}\r\n )\r\n );\r\n break;\r\n case 'selected':\r\n computedStyle = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: abstractResult },\r\n this.searchState.searchOverlayStyleSelection,\r\n result.style?.selection ? result.style.selection : {}\r\n )\r\n );\r\n zIndexOffset = 1;\r\n break;\r\n }\r\n abstractResult.meta.style = computedStyle;\r\n abstractResult.meta.style.setZIndex(2000 + zIndexOffset);\r\n this.map.searchResultsOverlay.addFeature(\r\n abstractResult,\r\n this.searchState.featureMotion.focus\r\n );\r\n if (trigger === 'focused') {\r\n this.abstractFocusedResult = abstractResult;\r\n }\r\n if (trigger === 'selected') {\r\n this.abstractSelectedResult = abstractResult;\r\n }\r\n if (trigger === 'shown') {\r\n this.shownResultsEmphasisGeometries.push(abstractResult);\r\n }\r\n } else {\r\n this.clearFeatureEmphasis(trigger);\r\n }\r\n }\r\n\r\n private clearFeatureEmphasis(trigger: 'selected' | 'focused' | 'shown') {\r\n if (trigger === 'focused' && this.abstractFocusedResult) {\r\n this.map.searchResultsOverlay.removeFeature(this.abstractFocusedResult);\r\n this.abstractFocusedResult = undefined;\r\n }\r\n if (trigger === 'selected' && this.abstractSelectedResult) {\r\n this.map.searchResultsOverlay.removeFeature(this.abstractSelectedResult);\r\n this.abstractSelectedResult = undefined;\r\n }\r\n if (trigger === 'shown') {\r\n this.shownResultsEmphasisGeometries.map((shownResult) =>\r\n this.map.searchResultsOverlay.removeFeature(shownResult)\r\n );\r\n this.shownResultsEmphasisGeometries = [];\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.topPanelState$$.unsubscribe();\r\n this.searchTerm$$.unsubscribe();\r\n if (this.isSelectedResultOutOfView$$) {\r\n this.isSelectedResultOutOfView$$.unsubscribe();\r\n }\r\n if (this.showResultsGeometries$$) {\r\n this.showResultsGeometries$$.unsubscribe();\r\n }\r\n if (this.getRoute$$) {\r\n this.getRoute$$.unsubscribe();\r\n }\r\n if (this.debouncedEmpty$$) {\r\n this.debouncedEmpty$$.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map when it's being focused\r\n * @internal\r\n * @param result A search result that could be a feature\r\n */\r\n onResultFocus(result: SearchResult) {\r\n this.focusedResult$.next(result);\r\n if (result.meta.dataType === FEATURE && result.data.geometry) {\r\n result.data.meta.style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: result.data as Feature | olFeature<OlGeometry> },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n\r\n const feature =\r\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\r\n result.meta.id\r\n );\r\n if (feature) {\r\n feature.setStyle(result.data.meta.style);\r\n return;\r\n }\r\n this.map.searchResultsOverlay.addFeature(\r\n result.data as Feature,\r\n this.searchState.featureMotion.focus\r\n );\r\n }\r\n }\r\n\r\n onResultUnfocus(result: SearchResult) {\r\n this.focusedResult$.next(undefined);\r\n if (result.meta.dataType !== FEATURE) {\r\n return;\r\n }\r\n\r\n if (this.store.state.get(result).selected === true) {\r\n const feature =\r\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\r\n result.meta.id\r\n );\r\n if (feature) {\r\n const style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature: result.data as Feature | olFeature<OlGeometry> },\r\n this.searchState.searchOverlayStyleFocus,\r\n result.style?.focus ? result.style.focus : {}\r\n )\r\n );\r\n feature.setStyle(style);\r\n }\r\n return;\r\n }\r\n this.map.searchResultsOverlay.removeFeature(result.data as Feature);\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map when it's being selected\r\n * @internal\r\n * @param result A search result that could be a feature or some layer options\r\n */\r\n onResultSelect(result: SearchResult) {\r\n this.map.searchResultsOverlay.dataSource.ol.clear();\r\n this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);\r\n this.searchState.setSelectedResult(result);\r\n\r\n if (this.topPanelState === 'initial') {\r\n if (this.topPanelStateDefault !== 'collapsed') {\r\n this.topPanelState = 'expanded';\r\n } else {\r\n this.topPanelState = 'collapsed';\r\n }\r\n }\r\n\r\n if (this.topPanelState === 'expanded') {\r\n const igoList = this.computeElementRef()[0];\r\n const selected = this.computeElementRef()[1];\r\n if (!this.isScrolledIntoView(igoList, selected)) {\r\n this.adjustTopPanel(igoList, selected);\r\n }\r\n }\r\n }\r\n\r\n onSearch(event: { research: Research; results: SearchResult[] }) {\r\n const results = event.results;\r\n const newResults = this.store.entities$.value\r\n .filter((result: SearchResult) => result.source !== event.research.source)\r\n .concat(results);\r\n\r\n this.store.load(newResults);\r\n\r\n for (const res of this.store.all()) {\r\n if (\r\n this.store.state.get(res).focused === true &&\r\n this.store.state.get(res).selected !== true\r\n ) {\r\n this.store.state.update(res, { focused: false }, true);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const igoList = this.elRef.nativeElement.querySelector('igo-list');\r\n let moreResults;\r\n event.research.request.subscribe((source) => {\r\n if (!source[0] || !source[0].source) {\r\n moreResults = null;\r\n } else if (source[0].source.getId() === 'icherche') {\r\n moreResults = igoList.querySelector('.icherche .moreResults');\r\n } else if (source[0].source.getId() === 'ilayer') {\r\n moreResults = igoList.querySelector('.ilayer .moreResults');\r\n } else if (source[0].source.getId() === 'nominatim') {\r\n moreResults = igoList.querySelector('.nominatim .moreResults');\r\n } else {\r\n moreResults = igoList.querySelector(\r\n '.' + source[0].source.getId() + ' .moreResults'\r\n );\r\n }\r\n\r\n if (\r\n moreResults !== null &&\r\n !this.isScrolledIntoView(igoList, moreResults)\r\n ) {\r\n igoList.scrollTop =\r\n moreResults.offsetTop +\r\n moreResults.offsetHeight -\r\n igoList.clientHeight;\r\n }\r\n });\r\n }, 250);\r\n }\r\n\r\n computeElementRef() {\r\n const items = document.getElementsByTagName('igo-search-results-item');\r\n const igoList =\r\n this.elRef.nativeElement.getElementsByTagName('igo-list')[0];\r\n let selectedItem;\r\n // eslint-disable-next-line\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].className.includes('igo-list-item-selected')) {\r\n selectedItem = items[i];\r\n }\r\n }\r\n return [igoList, selectedItem];\r\n }\r\n\r\n adjustTopPanel(elemSource, elem) {\r\n if (!this.isScrolledIntoView(elemSource, elem)) {\r\n elemSource.scrollTop =\r\n elem.offsetTop +\r\n elem.children[0].offsetHeight -\r\n elemSource.clientHeight;\r\n }\r\n }\r\n\r\n toggleTopPanel(event?: MouseEvent) {\r\n if (event && (event.target as any)?.className !== 'igo-panel-title') {\r\n return;\r\n } else {\r\n if (this.topPanelState === 'expanded') {\r\n this.topPanelState = 'collapsed';\r\n } else {\r\n this.topPanelState = 'expanded';\r\n }\r\n }\r\n }\r\n\r\n zoomToFeatureExtent() {\r\n if (this.feature.geometry) {\r\n const localOlFeature = this.format.readFeature(this.feature, {\r\n dataProjection: this.feature.projection,\r\n featureProjection: this.map.projectionCode\r\n });\r\n moveToOlFeatures(\r\n this.map.viewController,\r\n [localOlFeature],\r\n FeatureMotion.Zoom\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Try to add a feature to the map overlay\r\n * @param result A search result that could be a feature\r\n * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay\r\n */\r\n private tryAddFeatureToMap(\r\n result: SearchResult,\r\n motion: FeatureMotion = FeatureMotion.Default\r\n ) {\r\n if (result.meta.dataType !== FEATURE) {\r\n return undefined;\r\n }\r\n const feature = (result as SearchResult<Feature>).data;\r\n\r\n // Somethimes features have no geometry. It happens with some GetFeatureInfo\r\n if (!feature.geometry) {\r\n return;\r\n }\r\n\r\n feature.meta.style = getCommonVectorSelectedStyle(\r\n Object.assign(\r\n {},\r\n { feature },\r\n this.searchState.searchOverlayStyleSelection,\r\n result.style?.selection ? result.style.selection : {}\r\n )\r\n );\r\n\r\n this.map.searchResultsOverlay.addFeature(feature, motion);\r\n }\r\n\r\n isScrolledIntoView(elemSource, elem) {\r\n const padding = 6;\r\n const docViewTop = elemSource.scrollTop;\r\n const docViewBottom = docViewTop + elemSource.clientHeight;\r\n\r\n const elemTop = elem.offsetTop;\r\n const elemBottom = elemTop + elem.clientHeight + padding;\r\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\r\n }\r\n\r\n getRoute() {\r\n this.toolState.toolbox.activateTool('directions');\r\n this.directionState.stopsStore.clearStops();\r\n setTimeout(() => {\r\n let routingCoordLoaded = false;\r\n if (this.getRoute$$) {\r\n this.getRoute$$.unsubscribe();\r\n }\r\n this.getRoute$$ =\r\n this.directionState.stopsStore.storeInitialized$.subscribe(\r\n (init: boolean) => {\r\n if (\r\n this.directionState.stopsStore.storeInitialized$.value &&\r\n !routingCoordLoaded\r\n ) {\r\n routingCoordLoaded = true;\r\n const stop = this.directionState.stopsStore\r\n .all()\r\n .find((e) => e.position === 1);\r\n let coord;\r\n if (this.feature.geometry) {\r\n if (this.feature.geometry.type === 'Point') {\r\n coord = [\r\n this.feature.geometry.coordinates[0],\r\n this.feature.geometry.coordinates[1]\r\n ];\r\n } else {\r\n const point = pointOnFeature(this.feature.geometry);\r\n coord = [\r\n point.geometry.coordinates[0],\r\n point.geometry.coordinates[1]\r\n ];\r\n }\r\n }\r\n stop.text = this.featureTitle;\r\n stop.coordinates = coord;\r\n this.directionState.stopsStore.update(stop);\r\n if (this.map.geolocationController.position$.value) {\r\n const currentPos =\r\n this.map.geolocationController.position$.value;\r\n const stop = this.directionState.stopsStore\r\n .all()\r\n .find((e) => e.position === 0);\r\n const currentCoord = olProj.transform(\r\n currentPos.position,\r\n currentPos.projection,\r\n 'EPSG:4326'\r\n );\r\n const coord: [number, number] = roundCoordTo(\r\n [currentCoord[0], currentCoord[1]],\r\n 6\r\n );\r\n stop.text = coord.join(',');\r\n stop.coordinates = coord;\r\n this.directionState.stopsStore.update(stop);\r\n }\r\n }\r\n }\r\n );\r\n }, 250);\r\n }\r\n}\r\n","<div\n *ngIf=\"(!store || store.stateView.empty) && (debouncedEmpty$ | async)\"\n style=\"margin: 10px\"\n>\n <section class=\"mat-typography\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples' | translate | sanitizeHtml\n \"\n ></div>\n </section>\n</div>\n\n<igo-flexible\n *ngIf=\"(debouncedEmpty$ | async) === false\"\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 58px)\"\n collapsedMobile=\"calc(100% - 58px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"(feature$ | async) ? topPanelState : 'initial'\"\n>\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n >\n </igo-search-add-button>\n </ng-template>\n </igo-search-results>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n <igo-panel\n [title]=\"featureTitle\"\n *ngIf=\"feature$ | async\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon\n [svgIcon]=\"\n (topPanelState$ | async) === 'collapsed' ? 'arrow-up' : 'arrow-down'\n \"\n ></mat-icon>\n </button>\n\n <button\n *ngIf=\"feature.geometry\"\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"(isSelectedResultOutOfView$ | async) === false\"\n svgIcon=\"magnify-plus-outline\"\n ></mat-icon>\n </button>\n\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature$ | async\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n >\n </igo-feature-details>\n </igo-panel>\n </div>\n</igo-flexible>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\r\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\r\n\r\n/**\r\n * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set\r\n */\r\n@NgModule({\r\n imports: [SearchBarBindingDirective, SearchResultsToolComponent],\r\n exports: [SearchBarBindingDirective, SearchResultsToolComponent]\r\n})\r\nexport class IgoAppSearchModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { WorkspaceButtonComponent } from './workspace-button/workspace-button.component';\r\n\r\n/**\r\n * @deprecated import the WorkspaceButtonComponent directly\r\n */\r\n@NgModule({\r\n imports: [WorkspaceButtonComponent],\r\n exports: [WorkspaceButtonComponent]\r\n})\r\nexport class IgoAppWorkspaceModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { IgoAppAboutModule } from './about/about.module';\r\nimport { IgoAppCatalogModule } from './catalog/catalog.module';\r\nimport { IgoAppContextModule } from './context/context.module';\r\nimport { IgoAppDirectionsModule } from './directions/directions.module';\r\nimport { IgoAppDrawModule } from './draw/draw.module';\r\nimport { IgoAppFilterModule } from './filter/filter.module';\r\nimport { IgoAppGeometryFormModule } from './geometry-form/geometry-form.module';\r\nimport { IgoAppImportExportModule } from './import-export/import-export.module';\r\nimport { IgoAppMapModule } from './map/map.module';\r\nimport { IgoAppMeasureModule } from './measure/measure.module';\r\nimport { IgoAppPrintModule } from './print/print.module';\r\nimport { IgoAppSearchModule } from './search/search.module';\r\nimport { IgoAppWorkspaceModule } from './workspace/workspace.module';\r\n\r\n/**\r\n * @deprecated import the components directly\r\n */\r\n@NgModule({\r\n imports: [],\r\n declarations: [],\r\n exports: [\r\n IgoAppContextModule,\r\n IgoAppCatalogModule,\r\n IgoAppDirectionsModule,\r\n IgoAppDrawModule,\r\n IgoAppWorkspaceModule,\r\n IgoAppImportExportModule,\r\n IgoAppMapModule,\r\n IgoAppMeasureModule,\r\n IgoAppPrintModule,\r\n IgoAppSearchModule,\r\n IgoAppFilterModule,\r\n IgoAppAboutModule,\r\n IgoAppGeometryFormModule\r\n ]\r\n})\r\nexport class IgoIntegrationModule {}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { AnalyticsService } from '@igo2/core/analytics';\r\nimport {\r\n ArcGISRestDataSourceOptions,\r\n ArcGISRestImageDataSourceOptions,\r\n Layer,\r\n TileArcGISRestDataSourceOptions,\r\n WMSDataSourceOptions,\r\n WMTSDataSourceOptions\r\n} from '@igo2/geo';\r\n\r\nimport { skip } from 'rxjs/operators';\r\n\r\nimport { ContextState } from '../context/context.state';\r\nimport { MapState } from '../map/map.state';\r\nimport { SearchState } from '../search/search.state';\r\nimport { ToolState } from '../tool/tool.state';\r\n\r\n/**\r\n * Service that holds the state of the search module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnalyticsListenerService {\r\n /**\r\n * Toolbox that holds main tools\r\n */\r\n\r\n constructor(\r\n private analyticsService: AnalyticsService,\r\n private authService: AuthService,\r\n private contextState: ContextState,\r\n private searchState: SearchState,\r\n private toolState: ToolState,\r\n private mapState: MapState\r\n ) {}\r\n\r\n listen() {\r\n this.listenUser();\r\n this.listenContext();\r\n this.listenTool();\r\n this.listenSearch();\r\n this.listenLayer();\r\n }\r\n\r\n listenUser() {\r\n this.authService.authenticate$.subscribe(() => {\r\n const tokenDecoded = this.authService.decodeToken();\r\n if (tokenDecoded?.user) {\r\n this.authService\r\n .getProfils()\r\n .subscribe((profils) =>\r\n this.analyticsService.setUser(tokenDecoded.user, profils.profils)\r\n );\r\n } else {\r\n this.analyticsService.setUser(null);\r\n }\r\n });\r\n }\r\n\r\n listenContext() {\r\n this.contextState.context$.subscribe((context) => {\r\n if (context) {\r\n this.analyticsService.trackEvent(\r\n 'context',\r\n 'activateContext',\r\n context.id || context.uri\r\n );\r\n }\r\n });\r\n }\r\n\r\n listenTool() {\r\n this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe((tool) => {\r\n if (tool) {\r\n this.analyticsService.trackEvent('tool', 'activateTool', tool.name);\r\n }\r\n });\r\n }\r\n\r\n listenSearch() {\r\n this.searchState.searchTerm$\r\n .pipe(skip(1))\r\n .subscribe((searchTerm: string) => {\r\n if (searchTerm !== undefined && searchTerm !== null) {\r\n this.analyticsService.trackSearch(\r\n searchTerm,\r\n this.searchState.store.count\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Listener for adding layers to the map\r\n */\r\n listenLayer() {\r\n this.mapState.map.layersAddedByClick$.subscribe((layers: Layer[]) => {\r\n if (!layers) {\r\n return;\r\n }\r\n\r\n layers.map((layer) => {\r\n let wmsParams: string;\r\n let wmtsParams: string;\r\n let xyzParams: string;\r\n let restParams: string;\r\n\r\n switch (layer.dataSource.options.type) {\r\n case 'wms':\r\n const wmsDataSource = layer.dataSource\r\n .options as WMSDataSourceOptions;\r\n const wmsLayerName: string = wmsDataSource.params.LAYERS;\r\n const wmsUrl: string = wmsDataSource.url;\r\n const wmsType: string = wmsDataSource.type;\r\n wmsParams = JSON.stringify({\r\n layer: wmsLayerName,\r\n type: wmsType,\r\n url: wmsUrl\r\n });\r\n break;\r\n case 'wmts':\r\n const wmtsDataSource = layer.dataSource\r\n .options as WMTSDataSourceOptions;\r\n const wmtsLayerName: string = wmtsDataSource.layer;\r\n const wmtsUrl: string = wmtsDataSource.url;\r\n const matrixSet: string = wmtsDataSource.matrixSet;\r\n const wmtsType: string = wmtsDataSource.type;\r\n wmtsParams = JSON.stringify({\r\n layer: wmtsLayerName,\r\n type: wmtsType,\r\n url: wmtsUrl,\r\n matrixSet\r\n });\r\n break;\r\n case 'arcgisrest':\r\n case 'tilearcgisrest':\r\n case 'imagearcgisrest':\r\n const restDataSource = layer.options.sourceOptions as\r\n | ArcGISRestDataSourceOptions\r\n | TileArcGISRestDataSourceOptions\r\n | ArcGISRestImageDataSourceOptions;\r\n const restName: string = restDataSource.layer;\r\n const restUrl: string = restDataSource.url;\r\n const restType: string = restDataSource.type;\r\n restParams = JSON.stringify({\r\n layer: restName,\r\n type: restType,\r\n url: restUrl\r\n });\r\n break;\r\n case 'xyz':\r\n /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;\r\n const xyzName: string = layer.title;\r\n const xyzUrl: string = xyzDataSource.url;\r\n const xyzType: string = layer.dataSource.options.type;\r\n xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});\r\n */\r\n // todo\r\n break;\r\n }\r\n this.analyticsService.trackLayer(\r\n 'layer',\r\n 'addLayer',\r\n wmsParams || wmtsParams || xyzParams || restParams\r\n );\r\n });\r\n });\r\n }\r\n}\r\n","import { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool';\r\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool';\r\nimport { OgcFilterToolComponent } from './ogc-filter-tool';\r\nimport { SpatialFilterToolComponent } from './spatial-filter-tool';\r\nimport { TimeFilterToolComponent } from './time-filter-tool';\r\n\r\nexport * from './ogc-filter-tool';\r\nexport * from './active-ogc-filter-tool';\r\nexport * from './spatial-filter-tool';\r\nexport * from './time-filter-tool';\r\nexport * from './active-time-filter-tool';\r\n\r\nexport const INTEGRATION_FILTER_DIRECTIVES = [\r\n OgcFilterToolComponent,\r\n ActiveOgcFilterToolComponent,\r\n TimeFilterToolComponent,\r\n ActiveTimeFilterToolComponent,\r\n SpatialFilterToolComponent\r\n];\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { EntityStore } from '@igo2/common';\r\nimport { ConfigService } from '@igo2/core/config';\r\nimport {\r\n CapabilitiesService,\r\n CommonVectorStyleOptions,\r\n GeoPropertiesStrategy,\r\n OverlayStyleOptions,\r\n PropertyTypeDetectorService,\r\n SearchResult\r\n} from '@igo2/geo';\r\n\r\nimport { MapState } from '../map/map.state';\r\n\r\n/**\r\n * Service that holds the state of the query module\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueryState {\r\n /**\r\n * Store that holds the query results\r\n */\r\n public store = new EntityStore<SearchResult>([]);\r\n public queryOverlayStyle: CommonVectorStyleOptions = {};\r\n public queryOverlayStyleSelection: CommonVectorStyleOptions = {};\r\n public queryOverlayStyleFocus: CommonVectorStyleOptions = {};\r\n\r\n constructor(\r\n private configService: ConfigService,\r\n private propertyTypeDetectorService: PropertyTypeDetectorService,\r\n private capabilitiesService: CapabilitiesService,\r\n private mapState: MapState\r\n ) {\r\n const queryOverlayStyle: OverlayStyleOptions =\r\n this.configService.getConfig('queryOverlayStyle');\r\n if (queryOverlayStyle) {\r\n this.queryOverlayStyle = queryOverlayStyle.base;\r\n this.queryOverlayStyleSelection = queryOverlayStyle.selection;\r\n this.queryOverlayStyleFocus = queryOverlayStyle.focus;\r\n }\r\n const geoPropertiesStrategy = new GeoPropertiesStrategy(\r\n { map: this.mapState.map },\r\n this.propertyTypeDetectorService,\r\n this.capabilitiesService\r\n );\r\n this.store.addStrategy(geoPropertiesStrategy, true);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchResultsToolComponent } from './search-results-tool.component';\r\n\r\n/**\r\n * @deprecated import the SearchResultsToolComponent directly\r\n */\r\n@NgModule({\r\n imports: [SearchResultsToolComponent],\r\n exports: [SearchResultsToolComponent]\r\n})\r\nexport class IgoAppSearchResultsToolModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SearchBarBindingDirective } from './search-bar-binding.directive';\r\n\r\n/**\r\n * @deprecated import the SearchBarBindingDirective directly\r\n */\r\n@NgModule({\r\n imports: [SearchBarBindingDirective],\r\n exports: [SearchBarBindingDirective]\r\n})\r\nexport class IgoAppSearchBarModule {}\r\n","import { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\r\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\r\n\r\nexport * from './query.state';\r\nexport * from './search.state';\r\nexport * from './search-results-tool/search-results-tool.module';\r\nexport * from './search-results-tool/search-results-tool.component';\r\nexport * from './search-bar/search-bar.module';\r\nexport * from './search-bar/search-bar-binding.directive';\r\n\r\nexport const INTEGRATION_SEARCH_DIRECTIVES = [\r\n SearchBarBindingDirective,\r\n SearchResultsToolComponent\r\n] as const;\r\n","/*\r\n * Public API Surface of tools\r\n */\r\n\r\nexport * from './lib/integration.module';\r\nexport * from './lib/about/about.module';\r\nexport * from './lib/geometry-form/geometry-form.module';\r\nexport * from './lib/context/context.module';\r\nexport * from './lib/catalog/catalog.module';\r\n\r\nexport * from './lib/directions/directions.module';\r\nexport * from './lib/draw/draw.module';\r\nexport * from './lib/workspace/workspace.module';\r\nexport * from './lib/filter/filter.module';\r\nexport * from './lib/import-export/import-export.module';\r\nexport * from './lib/map/map.module';\r\nexport * from './lib/measure/measure.module';\r\nexport * from './lib/print/print.module';\r\nexport * from './lib/search/search.module';\r\n\r\nexport * from './lib/about';\r\nexport * from './lib/geometry-form';\r\nexport * from './lib/analytics';\r\nexport * from './lib/context';\r\nexport * from './lib/catalog';\r\nexport * from './lib/directions';\r\nexport * from './lib/draw';\r\nexport * from './lib/environment';\r\nexport * from './lib/workspace';\r\nexport * from './lib/filter';\r\nexport * from './lib/import-export';\r\nexport * from './lib/map';\r\nexport * from './lib/measure';\r\nexport * from './lib/print';\r\nexport * from './lib/search';\r\nexport * from './lib/tool';\r\nexport * from './lib/storage';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i4","i5","i9","i2","i3","i2.CatalogState","i3.MapState","i2.ImportExportState","i3.ToolState","i1.ToolState","i2.MapState","i1.MapState","i2.LayerListToolState","i1.ContextEditorToolComponent","i2.ContextManagerToolComponent","i3.ContextPermissionManagerToolComponent","i4.ContextShareToolComponent","i1.DirectionState","i6.ContextState","i7","i8","i1.DrawState","toolSlideInOut","i1.StorageState","i4.ToolState","i1.FeatureActionsService","i2.WfsActionsService","i3.EditionActionsService","i6.ImportExportState","i7.ToolState","i8.WorkspaceState","i6","i3.WorkspaceState","i4.ContextState","olproj","i10","i14","i11","i12","i1.WorkspaceState","map","i2.ToolState","i4.ImportExportState","GeoJSON","i2.MapProximityState","i3.ImportExportState","i1.LayerListToolState","i5.ImportExportState","i1.MeasureState","i5.MapState","i2.SearchState","i4.DirectionState","i3.ContextState","i4.SearchState","i5.ToolState","i6.MapState"],"mappings":"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"}