geonetwork-ui 2.6.0-dev.d8333ac5d → 2.6.0-dev.e052ad8ba

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 (32) hide show
  1. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +23 -1
  2. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +2 -1
  3. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +55 -3
  4. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +4 -12
  5. package/esm2022/translations/de.json +5 -2
  6. package/esm2022/translations/en.json +7 -2
  7. package/esm2022/translations/es.json +5 -2
  8. package/esm2022/translations/fr.json +7 -2
  9. package/esm2022/translations/it.json +41 -38
  10. package/esm2022/translations/nl.json +5 -2
  11. package/esm2022/translations/pt.json +5 -2
  12. package/fesm2022/geonetwork-ui.mjs +156 -63
  13. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  14. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  15. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  16. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  17. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +0 -1
  18. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  19. package/package.json +1 -1
  20. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +23 -0
  21. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +1 -0
  22. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +53 -0
  23. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +1 -15
  24. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +1 -9
  25. package/translations/de.json +5 -2
  26. package/translations/en.json +7 -2
  27. package/translations/es.json +5 -2
  28. package/translations/fr.json +7 -2
  29. package/translations/it.json +41 -38
  30. package/translations/nl.json +5 -2
  31. package/translations/pt.json +5 -2
  32. package/translations/sk.json +5 -2
@@ -8,7 +8,6 @@ import { iconoirSearch } from '@ng-icons/iconoir';
8
8
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
9
9
  import { matInfoOutline } from '@ng-icons/material-icons/outline';
10
10
  import { PopoverComponent, SpinningLoaderComponent, } from '../../../../../../libs/ui/widgets/src';
11
- import { matClose } from '@ng-icons/material-icons/baseline';
12
11
  import * as i0 from "@angular/core";
13
12
  import * as i1 from "@ngx-translate/core";
14
13
  import * as i2 from "@angular/common";
@@ -70,11 +69,6 @@ export class ServiceCapabilitiesComponent {
70
69
  this.searchLayers();
71
70
  }
72
71
  }
73
- clearSearch() {
74
- this.searchActive = false;
75
- this.searchQuery = '';
76
- this.filteredLayers = this.availableLayers;
77
- }
78
72
  async loadLayers() {
79
73
  if (this.apiLinks.length > 0 &&
80
74
  this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
@@ -133,16 +127,15 @@ export class ServiceCapabilitiesComponent {
133
127
  }
134
128
  }
135
129
  getExtraClass(layerItem) {
136
- return layerItem === this.selectedLayer
130
+ return layerItem.title === this.selectedLayer?.title
137
131
  ? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
138
132
  : `h-8 rounded-lg`;
139
133
  }
140
134
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
141
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [(value)]=\"searchQuery\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div\n class=\"absolute right-14 h-14 w-14 flex items-center justify-center\"\n >\n <button\n #inputBtn\n *ngIf=\"searchQuery\"\n [aria-label]=\"'service.metadata.search.clear' | translate\"\n (click)=\"clearSearch()\"\n class=\"h-12 w-12 border-0 flex items-center justify-center\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </button>\n </div>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1 bg-white\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
142
136
  provideIcons({
143
137
  iconoirSearch,
144
138
  matInfoOutline,
145
- matClose,
146
139
  }),
147
140
  ] }); }
148
141
  }
@@ -160,10 +153,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
160
153
  provideIcons({
161
154
  iconoirSearch,
162
155
  matInfoOutline,
163
- matClose,
164
156
  }),
165
- ], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [(value)]=\"searchQuery\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div\n class=\"absolute right-14 h-14 w-14 flex items-center justify-center\"\n >\n <button\n #inputBtn\n *ngIf=\"searchQuery\"\n [aria-label]=\"'service.metadata.search.clear' | translate\"\n (click)=\"clearSearch()\"\n class=\"h-12 w-12 border-0 flex items-center justify-center\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </button>\n </div>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1 bg-white\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
157
+ ], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
166
158
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }], propDecorators: { apiLinks: [{
167
159
  type: Input
168
160
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXBhYmlsaXRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL3NlcnZpY2UtY2FwYWJpbGl0aWVzL3NlcnZpY2UtY2FwYWJpbGl0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9zZXJ2aWNlLWNhcGFiaWxpdGllcy9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLHVDQUF1QyxDQUFBO0FBTTlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTs7OztBQUU1RCxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtB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QyxhQUFhO1lBQ3JDLENBQUMsQ0FBQyxzRkFBc0Y7WUFDeEYsQ0FBQyxDQUFDLGdCQUFnQixDQUFBO0lBQ3RCLENBQUM7K0dBcElVLDRCQUE0QjttR0FBNUIsNEJBQTRCLHdIQ3pEekMsbTVJQThHQSx5RER2RUksWUFBWSwrUEFDWixlQUFlLG1PQUNmLGVBQWUsK0hBQ2Ysa0JBQWtCLCtKQUNsQixNQUFNLDZHQUNOLGdCQUFnQix3RkFDaEIsdUJBQXVCLHVEQUVWO1lBQ2IsWUFBWSxDQUFDO2dCQUNYLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxRQUFRO2FBQ1QsQ0FBQztTQUNIOzs0RkFJVSw0QkFBNEI7a0JBdEJ4QyxTQUFTOytCQUNFLDRCQUE0QixjQUMxQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixNQUFNO3dCQUNOLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3FCQUN4QixpQkFDYzt3QkFDYixZQUFZLENBQUM7NEJBQ1gsYUFBYTs0QkFDYixjQUFjOzRCQUNkLFFBQVE7eUJBQ1QsQ0FBQztxQkFDSDtxSEFLUSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGF5ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQsIFRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBpY29ub2lyU2VhcmNoIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBtYXRJbmZvT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHtcbiAgUG9wb3ZlckNvbXBvbmVudCxcbiAgU3Bpbm5pbmdMb2FkZXJDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQge1xuICBXZnNGZWF0dXJlVHlwZUZ1bGwsXG4gIFdtc0xheWVyRnVsbCxcbiAgV210c0xheWVyLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgbWF0Q2xvc2UgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5zZWFyY2hgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy50aXRsZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmFic3RyYWN0YClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMubmFtZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmRlZmF1bHRDcnNgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5hdmFpbGFibGVDcnNgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5vdGhlckNyc2ApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLm9iamVjdENvdW50YClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuZ2VvbWV0cnlOYW1lYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuZ2VvbWV0cnlUeXBlYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMua2V5d29yZHNgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5vdXRwdXRGb3JtYXRzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMucmVzb3VyY2VMaW5rc2ApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmF0dHJpYnV0aW9uYClcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktc2VydmljZS1jYXBhYmlsaXRpZXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVGV4dElucHV0Q29tcG9uZW50LFxuICAgIE5nSWNvbixcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFNwaW5uaW5nTG9hZGVyQ29tcG9uZW50LFxuICBdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIGljb25vaXJTZWFyY2gsXG4gICAgICBtYXRJbmZvT3V0bGluZSxcbiAgICAgIG1hdENsb3NlLFxuICAgIH0pLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1jYXBhYmlsaXRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc2VydmljZS1jYXBhYmlsaXRpZXMuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VDYXBhYmlsaXRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhcGlMaW5rcyA9IFtdXG4gIGF2YWlsYWJsZUxheWVycyA9IFtdXG4gIGZpbHRlcmVkTGF5ZXJzID0gW11cbiAgc2VsZWN0ZWRMYXllciA9IG51bGxcbiAgbGF5ZXJJbmZvcm1hdGlvbiA9IFtdXG4gIHNlYXJjaFF1ZXJ5ID0gJydcbiAgbG9hZGluZyA9IGZhbHNlXG4gIHNlYXJjaEFjdGl2ZVxuXG4gIGNhcGFiaWxpdGllc0tleXMgPSBbXG4gICAgJ3RpdGxlJyxcbiAgICAnYWJzdHJhY3QnLFxuICAgICduYW1lJyxcbiAgICAnZGVmYXVsdENycycsXG4gICAgJ2F2YWlsYWJsZUNycycsXG4gICAgJ290aGVyQ3JzJyxcbiAgICAnb2JqZWN0Q291bnQnLFxuICAgICdnZW9tZXRyeU5hbWUnLFxuICAgICdnZW9tZXRyeVR5cGUnLFxuICAgICdrZXl3b3JkcycsXG4gICAgJ291dHB1dEZvcm1hdHMnLFxuICAgICdyZXNvdXJjZUxpbmtzJyxcbiAgICAnYXR0cmlidXRpb24nLFxuICBdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkTGF5ZXJzKClcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnRcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5ID0gaW5wdXQudmFsdWVcbiAgICBpZiAoIWlucHV0LnZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9IGZhbHNlXG4gICAgICB0aGlzLmZpbHRlcmVkTGF5ZXJzID0gdGhpcy5hdmFpbGFibGVMYXllcnNcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaEVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZWFyY2hBY3RpdmUgPSB0cnVlXG4gICAgICB0aGlzLnNlYXJjaExheWVycygpXG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSAnJ1xuICAgIHRoaXMuZmlsdGVyZWRMYXllcnMgPSB0aGlzLmF2YWlsYWJsZUxheWVyc1xuICB9XG5cbiAgYXN5bmMgbG9hZExheWVycygpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaUxpbmtzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuYXBpTGlua3NbMF0uYWNjZXNzU2VydmljZVByb3RvY29sICE9PSAnb2djRmVhdHVyZXMnXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICB0aGlzLmF2YWlsYWJsZUxheWVycyA9IGF3YWl0IGdldExheWVycyhcbiAgICAgICAgdGhpcy5hcGlMaW5rc1swXS51cmwuaHJlZixcbiAgICAgICAgdGhpcy5hcGlMaW5rc1swXS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2xcbiAgICAgIClcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICAgIHRoaXMuZmlsdGVyZWRMYXllcnMgPSB0aGlzLmF2YWlsYWJsZUxheWVyc1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxheWVycyA9IFtdXG4gICAgfVxuICB9XG5cbiAgc2VsZWN0TGF5ZXIobGF5ZXI6IFdmc0ZlYXR1cmVUeXBlRnVsbCB8IFdtc0xheWVyRnVsbCB8IFdtdHNMYXllcikge1xuICAgIGlmIChsYXllciA9PT0gdGhpcy5zZWxlY3RlZExheWVyKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTGF5ZXIgPSBudWxsXG4gICAgICB0aGlzLmxheWVySW5mb3JtYXRpb24gPSBbXVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZExheWVyID0gbGF5ZXJcbiAgICBjb25zdCBmaWx0ZXJlZEluZm8gPSBbXVxuICAgIE9iamVjdC5rZXlzKGxheWVyKS5tYXAoKGtleSkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLiR7a2V5fWBcbiAgICAgICAgKVxuICAgICAgICBpZiAoa2V5IGluIGxheWVyICYmIGxheWVyW2tleV0/Lmxlbmd0aCkge1xuICAgICAgICAgIGZpbHRlcmVkSW5mby5wdXNoKHsgZGlzcGxheU5hbWUsIHZhbHVlOiBsYXllcltrZXldIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5sYXllckluZm9ybWF0aW9uID0gZmlsdGVyZWRJbmZvXG4gIH1cblxuICBpc0xpc3QodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gIH1cblxuICBnZXRFeHRyYUlucHV0Q2xhc3MoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoQWN0aXZlKSB7XG4gICAgICByZXR1cm4gJ2gtMTQgYm9yZGVyIHJvdW5kZWQtbGcgYm9yZGVyLXByaW1hcnkgdGV4dC1wcmltYXJ5IGZvY3VzOmJvcmRlci1wcmltYXJ5IGhvdmVyOmJvcmRlci1wcmltYXJ5J1xuICAgIH1cbiAgICByZXR1cm4gJ2gtMTQgYm9yZGVyIHJvdW5kZWQtbGcnXG4gIH1cblxuICBzZWFyY2hMYXllcnMoKSB7XG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSB0cnVlXG4gICAgdGhpcy5maWx0ZXJlZExheWVycyA9IHRoaXMuYXZhaWxhYmxlTGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5zZWFyY2hRdWVyeS50b0xvd2VyQ2FzZSgpXG4gICAgICBpZiAobGF5ZXIudGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBsYXllci50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fFxuICAgICAgICAgIGxheWVyLmFic3RyYWN0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbGF5ZXIubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKCF0aGlzLmZpbHRlcmVkTGF5ZXJzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRMYXllcikpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYXllciA9IG51bGxcbiAgICAgIHRoaXMubGF5ZXJJbmZvcm1hdGlvbiA9IFtdXG4gICAgfVxuICB9XG5cbiAgZ2V0RXh0cmFDbGFzcyhsYXllckl0ZW0pIHtcbiAgICByZXR1cm4gbGF5ZXJJdGVtID09PSB0aGlzLnNlbGVjdGVkTGF5ZXJcbiAgICAgID8gYGgtOCByb3VuZGVkLWxnIGJnLXByaW1hcnktZGFya2VyIHRleHQtd2hpdGUgaG92ZXI6dGV4dC1wcmltYXJ5LWRhcmtlciBob3ZlcjpiZy13aGl0ZWBcbiAgICAgIDogYGgtOCByb3VuZGVkLWxnYFxuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA2NTJweFwiIGlkPVwicHJldmlld1wiICpuZ0lmPVwiYXBpTGlua3MubGVuZ3RoID4gMFwiPlxuICA8ZGl2IGNsYXNzPVwiYmctcHJpbWFyeS1vcGFjaXR5LTEwIG92ZXJmbG93LXZpc2libGVcIiBzdHlsZT1cImhlaWdodDogNDIwcHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWxnIHB4LTQgbGc6bXgtYXV0b1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImduLXVpLXNlY3Rpb24tdGl0bGUgbWItNlwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHctZnVsbCBoLVsyMDBweF0gaXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxnbi11aS1zcGlubmluZy1sb2FkZXI+PC9nbi11aS1zcGlubmluZy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTQgbWQ6dy0yLzUgdy1mdWxsIG1iLTQgZmxleCBmbGV4LXJvdyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICA8Z24tdWktdGV4dC1pbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWFyY2hRdWVyeVwiXG4gICAgICAgICAgICAgICAgW2V4dHJhQ2xhc3NdPVwiZ2V0RXh0cmFJbnB1dENsYXNzKClcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VydmljZS5tZXRhZGF0YS5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TZWFyY2hFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2duLXVpLXRleHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTE0IGgtMTQgdy0xNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAjaW5wdXRCdG5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VhcmNoUXVlcnlcIlxuICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiJ3NlcnZpY2UubWV0YWRhdGEuc2VhcmNoLmNsZWFyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTIgdy0xMiBib3JkZXItMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdENsb3NlXCI+PC9uZy1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sIGFic29sdXRlIGJvcmRlci1ncmF5LTIwMCByaWdodC0wIGgtMTQgdy0xNFwiPlxuICAgICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAgICNpbnB1dEJ0blxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgZXh0cmFDbGFzcz1cImgtMTIgdy0xMiBib3JkZXItMCBhYnNvbHV0ZSByaWdodC0xIHRvcC0xIGJnLXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZWFyY2hMYXllcnMoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gICAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Z24tdWktcG9wb3ZlclxuICAgICAgICAgICAgICBbY29udGVudF09XCJwb3BvdmVySXRlbXNcIlxuICAgICAgICAgICAgICB0aGVtZT1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTE0IGgtMTQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdEluZm9PdXRsaW5lXCIgY2xhc3M9XCJ3LTYgaC02IHB0LTAuNVwiPjwvbmctaWNvbj5cbiAgICAgICAgICAgIDwvZ24tdWktcG9wb3Zlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTAwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBzaGFkb3cteGwgcm91bmRlZCBwLTAgZmxleCBtZDpmbGV4LXJvdyBmbGV4LWNvbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgYmctZ3JheS0xMDAgbWQ6dy0xLzIgbWQ6aC1mdWxsIHctZnVsbCBoLTEvMiByb3VuZGVkLWwgb3ZlcmZsb3cteS1hdXRvIHB5LTUgcHItMSBwbC0zXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItbGlzdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGF5ZXJJdGVtIG9mIGZpbHRlcmVkTGF5ZXJzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgW2V4dHJhQ2xhc3NdPVwiZ2V0RXh0cmFDbGFzcyhsYXllckl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2VsZWN0TGF5ZXIobGF5ZXJJdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBsYXllckl0ZW0udGl0bGUgfHwgbGF5ZXJJdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyZWRMYXllcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAge3sgJ3NlcnZpY2UubWV0YWRhdGEuZmlsdGVyLm5vTGF5ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItaW5mb3JtYXRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgbWQ6aC1mdWxsIG1kOnctMS8yIHctZnVsbCBoLTEvMiBweS01IHB4LTEwIG92ZXJmbG93LXktYXV0b1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXllckluZm9ybWF0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB3LTI0XCI+e3sgaXRlbS5kaXNwbGF5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMaXN0KGl0ZW0udmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYnJlYWstd29yZHMgbWF4LXctNzJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJJdGVtIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWstd29yZHMgbWF4LXctNzJcIiAqbmdJZj1cIiFpc0xpc3QoaXRlbS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wb3Zlckl0ZW1zPlxuICA8ZGl2IGNsYXNzPVwicC0yIHB5LTRcIj5cbiAgICA8ZGl2IHRyYW5zbGF0ZT5zZXJ2aWNlLm1ldGFkYXRhLmZpbHRlcjwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXBhYmlsaXRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMvbGliL3NlcnZpY2UtY2FwYWJpbGl0aWVzL3NlcnZpY2UtY2FwYWJpbGl0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9zZXJ2aWNlLWNhcGFiaWxpdGllcy9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLHVDQUF1QyxDQUFBOzs7O0FBTzlDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLE1BQU0s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SkFDbEIsTUFBTSw2R0FDTixnQkFBZ0Isd0ZBQ2hCLHVCQUF1Qix1REFFVjtZQUNiLFlBQVksQ0FBQztnQkFDWCxhQUFhO2dCQUNiLGNBQWM7YUFDZixDQUFDO1NBQ0g7OzRGQUlVLDRCQUE0QjtrQkFyQnhDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLE1BQU07d0JBQ04sZ0JBQWdCO3dCQUNoQix1QkFBdUI7cUJBQ3hCLGlCQUNjO3dCQUNiLFlBQVksQ0FBQzs0QkFDWCxhQUFhOzRCQUNiLGNBQWM7eUJBQ2YsQ0FBQztxQkFDSDtxSEFLUSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGF5ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQsIFRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBpY29ub2lyU2VhcmNoIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBtYXRJbmZvT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHtcbiAgUG9wb3ZlckNvbXBvbmVudCxcbiAgU3Bpbm5pbmdMb2FkZXJDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQge1xuICBXZnNGZWF0dXJlVHlwZUZ1bGwsXG4gIFdtc0xheWVyRnVsbCxcbiAgV210c0xheWVyLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuc2VhcmNoYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMudGl0bGVgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5hYnN0cmFjdGApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLm5hbWVgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5kZWZhdWx0Q3JzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuYXZhaWxhYmxlQ3JzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMub3RoZXJDcnNgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5vYmplY3RDb3VudGApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmdlb21ldHJ5TmFtZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmdlb21ldHJ5VHlwZWApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLmtleXdvcmRzYClcbm1hcmtlcihgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMub3V0cHV0Rm9ybWF0c2ApXG5tYXJrZXIoYHNlcnZpY2UubWV0YWRhdGEuY2FwYWJpbGl0aWVzLnJlc291cmNlTGlua3NgKVxubWFya2VyKGBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllcy5hdHRyaWJ1dGlvbmApXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXNlcnZpY2UtY2FwYWJpbGl0aWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBOZ0ljb24sXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBTcGlubmluZ0xvYWRlckNvbXBvbmVudCxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7XG4gICAgICBpY29ub2lyU2VhcmNoLFxuICAgICAgbWF0SW5mb091dGxpbmUsXG4gICAgfSksXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zZXJ2aWNlLWNhcGFiaWxpdGllcy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUNhcGFiaWxpdGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFwaUxpbmtzID0gW11cbiAgYXZhaWxhYmxlTGF5ZXJzID0gW11cbiAgZmlsdGVyZWRMYXllcnMgPSBbXVxuICBzZWxlY3RlZExheWVyID0gbnVsbFxuICBsYXllckluZm9ybWF0aW9uID0gW11cbiAgc2VhcmNoUXVlcnkgPSAnJ1xuICBsb2FkaW5nID0gZmFsc2VcbiAgc2VhcmNoQWN0aXZlXG5cbiAgY2FwYWJpbGl0aWVzS2V5cyA9IFtcbiAgICAndGl0bGUnLFxuICAgICdhYnN0cmFjdCcsXG4gICAgJ25hbWUnLFxuICAgICdkZWZhdWx0Q3JzJyxcbiAgICAnYXZhaWxhYmxlQ3JzJyxcbiAgICAnb3RoZXJDcnMnLFxuICAgICdvYmplY3RDb3VudCcsXG4gICAgJ2dlb21ldHJ5TmFtZScsXG4gICAgJ2dlb21ldHJ5VHlwZScsXG4gICAgJ2tleXdvcmRzJyxcbiAgICAnb3V0cHV0Rm9ybWF0cycsXG4gICAgJ3Jlc291cmNlTGlua3MnLFxuICAgICdhdHRyaWJ1dGlvbicsXG4gIF1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRMYXllcnMoKVxuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudFxuICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBpbnB1dC52YWx1ZVxuICAgIGlmICghaW5wdXQudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICAgIHRoaXMuZmlsdGVyZWRMYXllcnMgPSB0aGlzLmF2YWlsYWJsZUxheWVyc1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuc2VhcmNoTGF5ZXJzKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTGF5ZXJzKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXBpTGlua3MubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5hcGlMaW5rc1swXS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgIT09ICdvZ2NGZWF0dXJlcydcbiAgICApIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGF5ZXJzID0gYXdhaXQgZ2V0TGF5ZXJzKFxuICAgICAgICB0aGlzLmFwaUxpbmtzWzBdLnVybC5ocmVmLFxuICAgICAgICB0aGlzLmFwaUxpbmtzWzBdLmFjY2Vzc1NlcnZpY2VQcm90b2NvbFxuICAgICAgKVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgdGhpcy5maWx0ZXJlZExheWVycyA9IHRoaXMuYXZhaWxhYmxlTGF5ZXJzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlTGF5ZXJzID0gW11cbiAgICB9XG4gIH1cblxuICBzZWxlY3RMYXllcihsYXllcjogV2ZzRmVhdHVyZVR5cGVGdWxsIHwgV21zTGF5ZXJGdWxsIHwgV210c0xheWVyKSB7XG4gICAgaWYgKGxheWVyID09PSB0aGlzLnNlbGVjdGVkTGF5ZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYXllciA9IG51bGxcbiAgICAgIHRoaXMubGF5ZXJJbmZvcm1hdGlvbiA9IFtdXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTGF5ZXIgPSBsYXllclxuICAgIGNvbnN0IGZpbHRlcmVkSW5mbyA9IFtdXG4gICAgT2JqZWN0LmtleXMobGF5ZXIpLm1hcCgoa2V5KSA9PiB7XG4gICAgICBpZiAodGhpcy5jYXBhYmlsaXRpZXNLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBgc2VydmljZS5tZXRhZGF0YS5jYXBhYmlsaXRpZXMuJHtrZXl9YFxuICAgICAgICApXG4gICAgICAgIGlmIChrZXkgaW4gbGF5ZXIgJiYgbGF5ZXJba2V5XT8ubGVuZ3RoKSB7XG4gICAgICAgICAgZmlsdGVyZWRJbmZvLnB1c2goeyBkaXNwbGF5TmFtZSwgdmFsdWU6IGxheWVyW2tleV0gfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmxheWVySW5mb3JtYXRpb24gPSBmaWx0ZXJlZEluZm9cbiAgfVxuXG4gIGlzTGlzdCh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgfVxuXG4gIGdldEV4dHJhSW5wdXRDbGFzcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hBY3RpdmUpIHtcbiAgICAgIHJldHVybiAnaC0xNCBib3JkZXIgcm91bmRlZC1sZyBib3JkZXItcHJpbWFyeSB0ZXh0LXByaW1hcnkgZm9jdXM6Ym9yZGVyLXByaW1hcnkgaG92ZXI6Ym9yZGVyLXByaW1hcnknXG4gICAgfVxuICAgIHJldHVybiAnaC0xNCBib3JkZXIgcm91bmRlZC1sZydcbiAgfVxuXG4gIHNlYXJjaExheWVycygpIHtcbiAgICB0aGlzLnNlYXJjaEFjdGl2ZSA9IHRydWVcbiAgICB0aGlzLmZpbHRlcmVkTGF5ZXJzID0gdGhpcy5hdmFpbGFibGVMYXllcnMuZmlsdGVyKChsYXllcikgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsYXllci50aXRsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGxheWVyLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8XG4gICAgICAgICAgbGF5ZXIuYWJzdHJhY3Q/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXllci5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoIXRoaXMuZmlsdGVyZWRMYXllcnMuaW5jbHVkZXModGhpcy5zZWxlY3RlZExheWVyKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZExheWVyID0gbnVsbFxuICAgICAgdGhpcy5sYXllckluZm9ybWF0aW9uID0gW11cbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYUNsYXNzKGxheWVySXRlbSkge1xuICAgIHJldHVybiBsYXllckl0ZW0udGl0bGUgPT09IHRoaXMuc2VsZWN0ZWRMYXllcj8udGl0bGVcbiAgICAgID8gYGgtOCByb3VuZGVkLWxnIGJnLXByaW1hcnktZGFya2VyIHRleHQtd2hpdGUgaG92ZXI6dGV4dC1wcmltYXJ5LWRhcmtlciBob3ZlcjpiZy13aGl0ZWBcbiAgICAgIDogYGgtOCByb3VuZGVkLWxnYFxuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwiaGVpZ2h0OiA2NTJweFwiIGlkPVwicHJldmlld1wiICpuZ0lmPVwiYXBpTGlua3MubGVuZ3RoID4gMFwiPlxuICA8ZGl2IGNsYXNzPVwiYmctcHJpbWFyeS1vcGFjaXR5LTEwIG92ZXJmbG93LXZpc2libGVcIiBzdHlsZT1cImhlaWdodDogNDIwcHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWxnIHB4LTQgbGc6bXgtYXV0b1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImduLXVpLXNlY3Rpb24tdGl0bGUgbWItNlwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBzZXJ2aWNlLm1ldGFkYXRhLmNhcGFiaWxpdGllc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIHctZnVsbCBoLVsyMDBweF0gaXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxnbi11aS1zcGlubmluZy1sb2FkZXI+PC9nbi11aS1zcGlubmluZy1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTQgbWQ6dy0yLzUgdy1mdWxsIG1iLTQgZmxleCBmbGV4LXJvdyByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICA8Z24tdWktdGV4dC1pbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgICAgICBbZXh0cmFDbGFzc109XCJnZXRFeHRyYUlucHV0Q2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZXJ2aWNlLm1ldGFkYXRhLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaEVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZ24tdWktdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1sIGFic29sdXRlIGJvcmRlci1ncmF5LTIwMCByaWdodC0wIGgtMTQgdy0xNFwiPlxuICAgICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAgICNpbnB1dEJ0blxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgZXh0cmFDbGFzcz1cImgtMTIgdy0xMiBib3JkZXItMCBhYnNvbHV0ZSByaWdodC0xIHRvcC0xXCJcbiAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJzZWFyY2hMYXllcnMoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gICAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Z24tdWktcG9wb3ZlclxuICAgICAgICAgICAgICBbY29udGVudF09XCJwb3BvdmVySXRlbXNcIlxuICAgICAgICAgICAgICB0aGVtZT1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTE0IGgtMTQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdEluZm9PdXRsaW5lXCIgY2xhc3M9XCJ3LTYgaC02IHB0LTAuNVwiPjwvbmctaWNvbj5cbiAgICAgICAgICAgIDwvZ24tdWktcG9wb3Zlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogNTAwcHhcIlxuICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBzaGFkb3cteGwgcm91bmRlZCBwLTAgZmxleCBtZDpmbGV4LXJvdyBmbGV4LWNvbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgYmctZ3JheS0xMDAgbWQ6dy0xLzIgbWQ6aC1mdWxsIHctZnVsbCBoLTEvMiByb3VuZGVkLWwgb3ZlcmZsb3cteS1hdXRvIHB5LTUgcHItMSBwbC0zXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItbGlzdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGF5ZXJJdGVtIG9mIGZpbHRlcmVkTGF5ZXJzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgW2V4dHJhQ2xhc3NdPVwiZ2V0RXh0cmFDbGFzcyhsYXllckl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic2VsZWN0TGF5ZXIobGF5ZXJJdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBsYXllckl0ZW0udGl0bGUgfHwgbGF5ZXJJdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyZWRMYXllcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWdyYXktODAwXCI+XG4gICAgICAgICAgICAgICAge3sgJ3NlcnZpY2UubWV0YWRhdGEuZmlsdGVyLm5vTGF5ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0PVwibGF5ZXItaW5mb3JtYXRpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgbWQ6aC1mdWxsIG1kOnctMS8yIHctZnVsbCBoLTEvMiBweS01IHB4LTEwIG92ZXJmbG93LXktYXV0b1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXllckluZm9ybWF0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB3LTI0XCI+e3sgaXRlbS5kaXNwbGF5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMaXN0KGl0ZW0udmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJJdGVtIG9mIGl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYnJlYWstd29yZHMgbWF4LXctNzJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJJdGVtIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWstd29yZHMgbWF4LXctNzJcIiAqbmdJZj1cIiFpc0xpc3QoaXRlbS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wb3Zlckl0ZW1zPlxuICA8ZGl2IGNsYXNzPVwicC0yIHB5LTRcIj5cbiAgICA8ZGl2IHRyYW5zbGF0ZT5zZXJ2aWNlLm1ldGFkYXRhLmZpbHRlcjwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "Stichwort",
285
285
  "facets.block.title.th_regions_tree.default": "Regionen",
286
286
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
287
+ "feature.catalog.attribute.code": "",
288
+ "feature.catalog.attribute.description": "",
289
+ "feature.catalog.attribute.name": "",
290
+ "feature.catalog.attribute.type": "",
287
291
  "input.file.dropFileLabel": "",
288
292
  "input.file.orInputUrl": "",
289
293
  "input.file.selectFileLabel": "",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "Anzeigen",
362
366
  "record.card.metadata.contact": "",
363
367
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
368
+ "record.metadata.feature.catalog": "",
364
369
  "record.feature.catalog.number.total.attribute": "",
365
370
  "record.feature.catalog.number.total.object": "",
366
371
  "record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "Erstellungsdatum",
408
413
  "record.metadata.details": "Über die Daten",
409
414
  "record.metadata.download": "Downloads",
410
- "record.metadata.feature.catalog": "",
411
415
  "record.metadata.formats": "Formate",
412
416
  "record.metadata.keywords": "Stichworte",
413
417
  "record.metadata.languages": "Sprachen",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "",
556
560
  "service.metadata.question": "",
557
561
  "service.metadata.search": "",
558
- "service.metadata.search.clear": "",
559
562
  "service.metadata.spatialExtent": "",
560
563
  "share.tab.permalink": "Teilen",
561
564
  "share.tab.webComponent": "Integrieren",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "Tag",
285
285
  "facets.block.title.th_regions_tree.default": "Regions",
286
286
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
287
+ "feature.catalog.attribute.code": "Code",
288
+ "feature.catalog.attribute.description": "Description",
289
+ "feature.catalog.attribute.name": "Name",
290
+ "feature.catalog.attribute.type": "Type",
287
291
  "input.file.dropFileLabel": "or drop it here",
288
292
  "input.file.orInputUrl": "or create a link to an external resource",
289
293
  "input.file.selectFileLabel": "Select a file ({sizeMB} MB max.)",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "View",
362
366
  "record.card.metadata.contact": "Metadata Contact",
363
367
  "record.externalViewer.open": "Open in the external map viewer",
368
+ "record.metadata.feature.catalog": "Feature catalog",
364
369
  "record.feature.catalog.number.total.attribute": "Total amount of objects",
365
370
  "record.feature.catalog.number.total.object": "Total amount of attributes",
366
371
  "record.feature.limit": "Preview disabled due to too many elements",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "Date of creation",
408
413
  "record.metadata.details": "About the data",
409
414
  "record.metadata.download": "Downloads",
410
- "record.metadata.feature.catalog": "Feature catalog",
411
415
  "record.metadata.formats": "Formats",
412
416
  "record.metadata.keywords": "Keywords",
413
417
  "record.metadata.languages": "Languages",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "Other information",
556
560
  "service.metadata.question": "Ask a question",
557
561
  "service.metadata.search": "Search through the layer list",
558
- "service.metadata.search.clear": "Clear the layer search",
559
562
  "service.metadata.spatialExtent": "Spatial extent",
560
563
  "share.tab.permalink": "Share",
561
564
  "share.tab.webComponent": "Integrate",
@@ -574,6 +577,8 @@
574
577
  "tooltip.url.open": "Open URL",
575
578
  "ui.readLess": "Read less",
576
579
  "ui.readMore": "Read more",
580
+ "ui.hideFullText": "Hide complete text",
581
+ "ui.showAllText": "Show all text",
577
582
  "wfs.feature.limit": "Too many features to display the WFS layer!",
578
583
  "wfs.featuretype.notfound": "No matching feature type was found in the service",
579
584
  "wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "",
285
285
  "facets.block.title.th_regions_tree.default": "",
286
286
  "favorite.not.authenticated.tooltip": "",
287
+ "feature.catalog.attribute.code": "",
288
+ "feature.catalog.attribute.description": "",
289
+ "feature.catalog.attribute.name": "",
290
+ "feature.catalog.attribute.type": "",
287
291
  "input.file.dropFileLabel": "",
288
292
  "input.file.orInputUrl": "",
289
293
  "input.file.selectFileLabel": "",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "",
362
366
  "record.card.metadata.contact": "",
363
367
  "record.externalViewer.open": "",
368
+ "record.feature.catalog": "",
364
369
  "record.feature.catalog.number.total.attribute": "",
365
370
  "record.feature.catalog.number.total.object": "",
366
371
  "record.feature.limit": "",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "",
408
413
  "record.metadata.details": "",
409
414
  "record.metadata.download": "",
410
- "record.metadata.feature.catalog": "",
411
415
  "record.metadata.formats": "",
412
416
  "record.metadata.keywords": "",
413
417
  "record.metadata.languages": "",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "",
556
560
  "service.metadata.question": "",
557
561
  "service.metadata.search": "",
558
- "service.metadata.search.clear": "",
559
562
  "service.metadata.spatialExtent": "",
560
563
  "share.tab.permalink": "",
561
564
  "share.tab.webComponent": "",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "Tag",
285
285
  "facets.block.title.th_regions_tree.default": "Régions",
286
286
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
287
+ "feature.catalog.attribute.code": "Code",
288
+ "feature.catalog.attribute.description": "Description",
289
+ "feature.catalog.attribute.name": "Nom",
290
+ "feature.catalog.attribute.type": "Type",
287
291
  "input.file.dropFileLabel": "ou glissez-le ici",
288
292
  "input.file.orInputUrl": "ou créez un lien vers une ressource externe",
289
293
  "input.file.selectFileLabel": "Sélectionnez un fichier ({sizeMB} Mo max.)",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "Voir",
362
366
  "record.card.metadata.contact": "Contact de la métadonnée ",
363
367
  "record.externalViewer.open": "Ouvrir dans le visualiseur externe",
368
+ "record.metadata.feature.catalog": "Catalogue d'attributs",
364
369
  "record.feature.catalog.number.total.attribute": "Nombre total d'attributs",
365
370
  "record.feature.catalog.number.total.object": "Nombre total d'objets",
366
371
  "record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "Date de création",
408
413
  "record.metadata.details": "À propos de la donnée",
409
414
  "record.metadata.download": "Téléchargements",
410
- "record.metadata.feature.catalog": "Catalogue d'attributs",
411
415
  "record.metadata.formats": "Formats",
412
416
  "record.metadata.keywords": "Mots-clés",
413
417
  "record.metadata.languages": "Langues",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "Autres informations",
556
560
  "service.metadata.question": "Poser une question",
557
561
  "service.metadata.search": "Rechercher dans la liste des couches",
558
- "service.metadata.search.clear": "Effacer la recherche des couches",
559
562
  "service.metadata.spatialExtent": "Etendue spatiale",
560
563
  "share.tab.permalink": "Partager",
561
564
  "share.tab.webComponent": "Intégrer",
@@ -574,6 +577,8 @@
574
577
  "tooltip.url.open": "Ouvrir l'URL",
575
578
  "ui.readLess": "Réduire",
576
579
  "ui.readMore": "Lire la suite",
580
+ "ui.hideFullText": "Masquer le texte complet",
581
+ "ui.showAllText": "Tout afficher",
577
582
  "wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
578
583
  "wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
579
584
  "wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
@@ -72,7 +72,7 @@
72
72
  "dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
73
73
  "dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
74
74
  "dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
75
- "dataset.error.restrictedAccess": "L'accesso a questa risorsa è limitato",
75
+ "dataset.error.restrictedAccess": "",
76
76
  "dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
77
77
  "dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
78
78
  "domain.contact.role.author": "Autore",
@@ -204,9 +204,9 @@
204
204
  "editor.record.form.license.odc-by": "Open Data Commons ODC-By",
205
205
  "editor.record.form.license.pddl": "Open Data Commons PDDL",
206
206
  "editor.record.form.license.unknown": "Sconosciuto o assente",
207
- "editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
208
- "editor.record.form.multilingual.open": "Modalità multilingue",
209
- "editor.record.form.multilingual.title": "Traduzioni",
207
+ "editor.record.form.multilingual.enable": "",
208
+ "editor.record.form.multilingual.open": "",
209
+ "editor.record.form.multilingual.title": "",
210
210
  "editor.record.form.page.accessAndContact": "Informazioni per l'uso",
211
211
  "editor.record.form.page.description": "Descrizione del dataset",
212
212
  "editor.record.form.page.resources": "Risorse",
@@ -236,7 +236,7 @@
236
236
  "editor.record.loadError.body": "Impossibile caricare il dataset:",
237
237
  "editor.record.loadError.closeMessage": "Capito",
238
238
  "editor.record.loadError.title": "Errore durante il caricamento",
239
- "editor.record.lock.format": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
239
+ "editor.record.lock.format": "",
240
240
  "editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
241
241
  "editor.record.onlineResource.protocol.other": "Altro",
242
242
  "editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "Tag",
285
285
  "facets.block.title.th_regions_tree.default": "Regioni",
286
286
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
287
+ "feature.catalog.attribute.code": "",
288
+ "feature.catalog.attribute.description": "",
289
+ "feature.catalog.attribute.name": "",
290
+ "feature.catalog.attribute.type": "",
287
291
  "input.file.dropFileLabel": "oppure trascinalo qui",
288
292
  "input.file.orInputUrl": "o collegamento a una risorsa esterna",
289
293
  "input.file.selectFileLabel": "Seleziona un file ({sizeMB} MB max.)",
@@ -335,7 +339,7 @@
335
339
  "map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
336
340
  "multiselect.filter.placeholder": "Cerca",
337
341
  "nav.back": "Indietro",
338
- "navbar.mobile.menuTitle": "Accesso rapido",
342
+ "navbar.mobile.menuTitle": "",
339
343
  "next": "successivo",
340
344
  "ogc.unreachable.unknown": "Il servizio non è accessibile",
341
345
  "organisation.filter.placeholder": "Filtra i risultati",
@@ -359,15 +363,16 @@
359
363
  "record.action.duplicating": "Duplicazione",
360
364
  "record.action.rollback": "Annulla",
361
365
  "record.action.view": "Visualizza",
362
- "record.card.metadata.contact": "Contatto del metadata",
366
+ "record.card.metadata.contact": "",
363
367
  "record.externalViewer.open": "Aprire nel visualizzatore esterno",
364
- "record.feature.catalog.number.total.attribute": "Quantità totale di oggetti",
365
- "record.feature.catalog.number.total.object": "Quantità totale di attributi",
368
+ "record.feature.catalog": "",
369
+ "record.feature.catalog.number.total.attribute": "",
370
+ "record.feature.catalog.number.total.object": "",
366
371
  "record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
367
- "record.kind.data": "Data",
368
- "record.kind.dataset": "Dataset",
369
- "record.kind.reuse": "Riutilizzato",
370
- "record.kind.service": "Servizio",
372
+ "record.kind.data": "",
373
+ "record.kind.dataset": "",
374
+ "record.kind.reuse": "",
375
+ "record.kind.service": "",
371
376
  "record.metadata.about": "Descrizione",
372
377
  "record.metadata.api": "API",
373
378
  "record.metadata.api.form.closeButton": "Chiude",
@@ -401,13 +406,12 @@
401
406
  "record.metadata.api.form.zoneTitle": "Zona",
402
407
  "record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
403
408
  "record.metadata.api.gpfdl": "Scarica",
404
- "record.metadata.capabilities": "Capacità del servizio",
409
+ "record.metadata.capabilities": "",
405
410
  "record.metadata.catalog": "Catalogo",
406
411
  "record.metadata.contact": "Contatto",
407
412
  "record.metadata.creation": "Data di creazione",
408
413
  "record.metadata.details": "A proposito del dati",
409
414
  "record.metadata.download": "Download",
410
- "record.metadata.feature.catalog": "Catalogo dei oggetti",
411
415
  "record.metadata.formats": "Formati",
412
416
  "record.metadata.keywords": "Parole chiave",
413
417
  "record.metadata.languages": "Lingue",
@@ -439,7 +443,7 @@
439
443
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
440
444
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
441
445
  "record.metadata.related": "Vedi anche",
442
- "record.metadata.related.contents": "Contenuti correlati",
446
+ "record.metadata.related.contents": "",
443
447
  "record.metadata.ressources.and.links": "Risorse e collegamenti",
444
448
  "record.metadata.sheet": "Origine del metadata",
445
449
  "record.metadata.status": "Stato",
@@ -481,7 +485,7 @@
481
485
  "results.sortBy.popularity": "Popolarità",
482
486
  "results.sortBy.qualityScore": "Indicatore di qualità",
483
487
  "results.sortBy.relevancy": "Rilevanza",
484
- "reuse.metadata.access": "Accedere al riutilizzo",
488
+ "reuse.metadata.access": "",
485
489
  "search.autocomplete.error": "Impossibile recuperare le suggerimenti",
486
490
  "search.error.couldNotReachApi": "Problema di connessione all'API",
487
491
  "search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
@@ -491,7 +495,7 @@
491
495
  "search.error.recordNotFound": "Impossibile trovare questi dati.",
492
496
  "search.field.any.placeholder": "Cerca del catalogo...",
493
497
  "search.field.sortBy": "Ordina per:",
494
- "search.filter.into.feature.catalog": "Cerca una parola",
498
+ "search.filter.into.feature.catalog": "",
495
499
  "search.filters.availableServices.download": "",
496
500
  "search.filters.availableServices.view": "",
497
501
  "search.filters.changeDate": "Aggiornato",
@@ -537,26 +541,25 @@
537
541
  "search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
538
542
  "search.filters.user": "Editore",
539
543
  "service.metadata.capabilities": "Informazioni tecniche",
540
- "service.metadata.capabilities.abstract": "Riassunto",
541
- "service.metadata.capabilities.attribution": "Attribuzione",
542
- "service.metadata.capabilities.availableCrs": "CRS disponibile",
543
- "service.metadata.capabilities.defaultCrs": "CRS predefinito",
544
- "service.metadata.capabilities.geometryName": "Nome della geometria",
545
- "service.metadata.capabilities.geometryType": "Tipo della geometria",
546
- "service.metadata.capabilities.keywords": "Parole chiave",
547
- "service.metadata.capabilities.name": "Nome",
548
- "service.metadata.capabilities.objectCount": "Oggetti conto",
549
- "service.metadata.capabilities.otherCrs": "Altri CRS",
550
- "service.metadata.capabilities.outputFormats": "Formato di output",
551
- "service.metadata.capabilities.resourceLinks": "Risorsa links",
552
- "service.metadata.capabilities.title": "Titolo",
553
- "service.metadata.filter": "I layers verranno filtrati per titolo e riassunto",
554
- "service.metadata.filter.noLayers": "Nessun layer abbina la ricerca",
555
- "service.metadata.other": "Altri informazioni",
556
- "service.metadata.question": "Fare una domanda",
557
- "service.metadata.search": "Cerca nella lista del layers",
558
- "service.metadata.search.clear": "Cancella la ricerca del layers",
559
- "service.metadata.spatialExtent": "Estensione spaziale",
544
+ "service.metadata.capabilities.abstract": "",
545
+ "service.metadata.capabilities.attribution": "",
546
+ "service.metadata.capabilities.availableCrs": "",
547
+ "service.metadata.capabilities.defaultCrs": "",
548
+ "service.metadata.capabilities.geometryName": "",
549
+ "service.metadata.capabilities.geometryType": "",
550
+ "service.metadata.capabilities.keywords": "",
551
+ "service.metadata.capabilities.name": "",
552
+ "service.metadata.capabilities.objectCount": "",
553
+ "service.metadata.capabilities.otherCrs": "",
554
+ "service.metadata.capabilities.outputFormats": "",
555
+ "service.metadata.capabilities.resourceLinks": "",
556
+ "service.metadata.capabilities.title": "",
557
+ "service.metadata.filter": "",
558
+ "service.metadata.filter.noLayers": "",
559
+ "service.metadata.other": "",
560
+ "service.metadata.question": "",
561
+ "service.metadata.search": "",
562
+ "service.metadata.spatialExtent": "",
560
563
  "share.tab.permalink": "Condividere",
561
564
  "share.tab.webComponent": "Incorporare",
562
565
  "table.loading.data": "Caricamento dei dati...",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "",
285
285
  "facets.block.title.th_regions_tree.default": "",
286
286
  "favorite.not.authenticated.tooltip": "",
287
+ "feature.catalog.attribute.code": "",
288
+ "feature.catalog.attribute.description": "",
289
+ "feature.catalog.attribute.name": "",
290
+ "feature.catalog.attribute.type": "",
287
291
  "input.file.dropFileLabel": "",
288
292
  "input.file.orInputUrl": "",
289
293
  "input.file.selectFileLabel": "",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "",
362
366
  "record.card.metadata.contact": "",
363
367
  "record.externalViewer.open": "",
368
+ "record.feature.catalog": "",
364
369
  "record.feature.catalog.number.total.attribute": "",
365
370
  "record.feature.catalog.number.total.object": "",
366
371
  "record.feature.limit": "",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "",
408
413
  "record.metadata.details": "",
409
414
  "record.metadata.download": "",
410
- "record.metadata.feature.catalog": "",
411
415
  "record.metadata.formats": "",
412
416
  "record.metadata.keywords": "",
413
417
  "record.metadata.languages": "",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "",
556
560
  "service.metadata.question": "",
557
561
  "service.metadata.search": "",
558
- "service.metadata.search.clear": "",
559
562
  "service.metadata.spatialExtent": "",
560
563
  "share.tab.permalink": "",
561
564
  "share.tab.webComponent": "",
@@ -284,6 +284,10 @@
284
284
  "facets.block.title.tag.default": "",
285
285
  "facets.block.title.th_regions_tree.default": "",
286
286
  "favorite.not.authenticated.tooltip": "",
287
+ "feature.catalog.attribute.code": "",
288
+ "feature.catalog.attribute.description": "",
289
+ "feature.catalog.attribute.name": "",
290
+ "feature.catalog.attribute.type": "",
287
291
  "input.file.dropFileLabel": "",
288
292
  "input.file.orInputUrl": "",
289
293
  "input.file.selectFileLabel": "",
@@ -361,6 +365,7 @@
361
365
  "record.action.view": "",
362
366
  "record.card.metadata.contact": "",
363
367
  "record.externalViewer.open": "",
368
+ "record.feature.catalog": "",
364
369
  "record.feature.catalog.number.total.attribute": "",
365
370
  "record.feature.catalog.number.total.object": "",
366
371
  "record.feature.limit": "",
@@ -407,7 +412,6 @@
407
412
  "record.metadata.creation": "",
408
413
  "record.metadata.details": "",
409
414
  "record.metadata.download": "",
410
- "record.metadata.feature.catalog": "",
411
415
  "record.metadata.formats": "",
412
416
  "record.metadata.keywords": "",
413
417
  "record.metadata.languages": "",
@@ -555,7 +559,6 @@
555
559
  "service.metadata.other": "",
556
560
  "service.metadata.question": "",
557
561
  "service.metadata.search": "",
558
- "service.metadata.search.clear": "",
559
562
  "service.metadata.spatialExtent": "",
560
563
  "share.tab.permalink": "",
561
564
  "share.tab.webComponent": "",