@po-ui/ng-templates 18.20.0 → 18.21.0
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.
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +31 -7
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +1 -1
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +59 -22
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +26 -4
- package/fesm2022/po-ui-ng-templates.mjs +113 -30
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +25 -4
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.d.ts +4 -0
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +6 -3
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +20 -1
- package/package.json +4 -4
- package/po-ui-ng-templates-18.21.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/po-ui-ng-templates-18.20.0.tgz +0 -0
package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs
CHANGED
|
@@ -131,6 +131,31 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
131
131
|
*
|
|
132
132
|
*/
|
|
133
133
|
quickSearchValue;
|
|
134
|
+
_visibleFixedFilters = true;
|
|
135
|
+
/**
|
|
136
|
+
* @optional
|
|
137
|
+
*
|
|
138
|
+
* @description
|
|
139
|
+
*
|
|
140
|
+
* Controla a visibilidade dos filtros fixos na página.
|
|
141
|
+
*
|
|
142
|
+
* - Quando `true` (default), todos os filtros, incluindo os fixos, são exibidos, permitindo que o usuário visualize os filtros aplicados.
|
|
143
|
+
* - Quando `false`, os filtros fixos são ocultados, não sendo exibidos na interface, mas ainda sendo aplicados como filtros nas requisições.
|
|
144
|
+
*
|
|
145
|
+
* Esta propriedade trabalha em conjunto com a propriedade `fixed` dos filtros individuais. Filtros marcados como `fixed: true` não serão exibidos na interface do filtro avançado quando `visibleFixedFilters` for `false`, mas continuarão a ser aplicados de forma transparente ao usuário. Dessa forma, permite-se maior flexibilidade no controle de quais filtros devem ser visíveis ao usuário ou devem ser aplicados permanentemente sem interferência.
|
|
146
|
+
*
|
|
147
|
+
* **Exemplo de uso:**
|
|
148
|
+
* ```html
|
|
149
|
+
* <!-- Para ocultar os filtros fixos -->
|
|
150
|
+
* <po-page-dynamic-table [p-visible-fixed-filters]="false"></po-page-dynamic-table>
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
set visibleFixedFilters(visible) {
|
|
154
|
+
this._visibleFixedFilters = visible;
|
|
155
|
+
}
|
|
156
|
+
get visibleFixedFilters() {
|
|
157
|
+
return this._visibleFixedFilters;
|
|
158
|
+
}
|
|
134
159
|
/**
|
|
135
160
|
* @optional
|
|
136
161
|
*
|
|
@@ -162,8 +187,8 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
162
187
|
_hideCloseDisclaimers = [];
|
|
163
188
|
_literals;
|
|
164
189
|
_quickSearchWidth;
|
|
165
|
-
previousFilters;
|
|
166
190
|
language;
|
|
191
|
+
previousFilters;
|
|
167
192
|
/**
|
|
168
193
|
* @optional
|
|
169
194
|
*
|
|
@@ -227,10 +252,6 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
227
252
|
*/
|
|
228
253
|
set filters(filters) {
|
|
229
254
|
this._filters = Array.isArray(filters) ? [...filters] : [];
|
|
230
|
-
if (this.stringify(this._filters) !== this.stringify(this.previousFilters)) {
|
|
231
|
-
this.onChangeFilters(this.filters);
|
|
232
|
-
this.previousFilters = [...this._filters];
|
|
233
|
-
}
|
|
234
255
|
}
|
|
235
256
|
get filters() {
|
|
236
257
|
return this._filters;
|
|
@@ -288,7 +309,7 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
288
309
|
});
|
|
289
310
|
}
|
|
290
311
|
static ɵfac = function PoPageDynamicSearchBaseComponent_Factory(t) { return new (t || PoPageDynamicSearchBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
|
|
291
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageDynamicSearchBaseComponent, inputs: { actions: [0, "p-actions", "actions"], breadcrumb: [0, "p-breadcrumb", "breadcrumb"], keepFilters: [2, "p-keep-filters", "keepFilters", convertToBoolean], concatFilters: [2, "p-concat-filters", "concatFilters", convertToBoolean], hideRemoveAllDisclaimer: [2, "p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], onLoad: [0, "p-load", "onLoad"], title: [0, "p-title", "title"], quickSearchValue: [0, "p-quick-search-value", "quickSearchValue"], literals: [0, "p-literals", "literals"], filters: [0, "p-filters", "filters"], quickSearchWidth: [0, "p-quick-search-width", "quickSearchWidth"], hideCloseDisclaimers: [0, "p-hide-close-disclaimers", "hideCloseDisclaimers"] }, outputs: { advancedSearch: "p-advanced-search", changeDisclaimers: "p-change-disclaimers", quickSearch: "p-quick-search" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
312
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageDynamicSearchBaseComponent, inputs: { actions: [0, "p-actions", "actions"], breadcrumb: [0, "p-breadcrumb", "breadcrumb"], keepFilters: [2, "p-keep-filters", "keepFilters", convertToBoolean], concatFilters: [2, "p-concat-filters", "concatFilters", convertToBoolean], hideRemoveAllDisclaimer: [2, "p-hide-remove-all-disclaimer", "hideRemoveAllDisclaimer", convertToBoolean], onLoad: [0, "p-load", "onLoad"], title: [0, "p-title", "title"], quickSearchValue: [0, "p-quick-search-value", "quickSearchValue"], visibleFixedFilters: [0, "p-visible-fixed-filters", "visibleFixedFilters"], literals: [0, "p-literals", "literals"], filters: [0, "p-filters", "filters"], quickSearchWidth: [0, "p-quick-search-width", "quickSearchWidth"], hideCloseDisclaimers: [0, "p-hide-close-disclaimers", "hideCloseDisclaimers"] }, outputs: { advancedSearch: "p-advanced-search", changeDisclaimers: "p-change-disclaimers", quickSearch: "p-quick-search" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
292
313
|
}
|
|
293
314
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageDynamicSearchBaseComponent, [{
|
|
294
315
|
type: Directive
|
|
@@ -316,6 +337,9 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
316
337
|
}], quickSearchValue: [{
|
|
317
338
|
type: Input,
|
|
318
339
|
args: ['p-quick-search-value']
|
|
340
|
+
}], visibleFixedFilters: [{
|
|
341
|
+
type: Input,
|
|
342
|
+
args: ['p-visible-fixed-filters']
|
|
319
343
|
}], advancedSearch: [{
|
|
320
344
|
type: Output,
|
|
321
345
|
args: ['p-advanced-search']
|
|
@@ -338,4 +362,4 @@ export class PoPageDynamicSearchBaseComponent {
|
|
|
338
362
|
type: Input,
|
|
339
363
|
args: ['p-hide-close-disclaimers']
|
|
340
364
|
}] }); })();
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXNlYXJjaC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1keW5hbWljLXNlYXJjaC9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUtMLGVBQWUsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7OztBQU0xRyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRztJQUNoRCxFQUFFLEVBQStCO1FBQy9CLG9CQUFvQixFQUFFLGlDQUFpQztRQUN2RCxXQUFXLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLEtBQUs7UUFDdEQsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLFdBQVc7UUFDbEUsa0JBQWtCLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLFlBQVk7UUFDcEUsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxpQkFBaUIsRUFBRSxRQUFRO0tBQzVCO0lBQ0QsRUFBRSxFQUErQjtRQUMvQixvQkFBb0IsRUFBRSx1Q0FBdUM7UUFDN0QsV0FBVyxFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxLQUFLO1FBQ3RELGlCQUFpQixFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxXQUFXO1FBQ2xFLGtCQUFrQixFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxZQUFZO1FBQ3BFLGdCQUFnQixF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O21CQUFDLHNCQUFzQjtZQVNKLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBa0RDLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQXlCSyxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUF1QmlCLGdCQUFnQjtrQkFBbEQsS0FBSzttQkFBQyxzQkFBc0I7WUFxQlUsb0JBQW9CO2tCQUExRCxLQUFLO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFBvQnJlYWRjcnVtYixcbiAgUG9EeW5hbWljRm9ybUZpZWxkLFxuICBQb0xhbmd1YWdlU2VydmljZSxcbiAgUG9QYWdlQWN0aW9uLFxuICBwb0xvY2FsZURlZmF1bHRcbn0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBjb252ZXJ0VG9JbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQgfSBmcm9tICcuL3BvLWFkdmFuY2VkLWZpbHRlci9wby1hZHZhbmNlZC1maWx0ZXItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9BZHZhbmNlZEZpbHRlckxpdGVyYWxzIH0gZnJvbSAnLi9wby1hZHZhbmNlZC1maWx0ZXIvcG8tYWR2YW5jZWQtZmlsdGVyLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VhcmNoRmlsdGVycyB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLXNlYXJjaC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHMgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IHBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzPntcbiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ0Rpc3BsYXlpbmcgcmVzdWx0cyBmaWx0ZXJlZCBieTonLFxuICAgIGZpbHRlclRpdGxlOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5lbi50aXRsZSxcbiAgICBmaWx0ZXJDYW5jZWxMYWJlbDogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQuZW4uY2FuY2VsTGFiZWwsXG4gICAgZmlsdGVyQ29uZmlybUxhYmVsOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5lbi5jb25maXJtTGFiZWwsXG4gICAgcXVpY2tTZWFyY2hMYWJlbDogJ1F1aWNrIHNlYXJjaDonLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoJ1xuICB9LFxuICBlczogPFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscz57XG4gICAgZGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50YW5kbyByZXN1bHRhZG9zIGZpbHRyYWRvcyBwb3I6JyxcbiAgICBmaWx0ZXJUaXRsZTogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQuZXMudGl0bGUsXG4gICAgZmlsdGVyQ2FuY2VsTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LmVzLmNhbmNlbExhYmVsLFxuICAgIGZpbHRlckNvbmZpcm1MYWJlbDogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQuZXMuY29uZmlybUxhYmVsLFxuICAgIHF1aWNrU2VhcmNoTGFiZWw6ICdCw7pzcXVlZGEgcsOhcGlkYTonLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQnVzY2FyJ1xuICB9LFxuICBwdDogPFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscz57XG4gICAgZGlzY2xhaW1lckdyb3VwVGl0bGU6ICdBcHJlc2VudGFuZG8gcmVzdWx0YWRvcyBmaWx0cmFkb3MgcG9yOicsXG4gICAgZmlsdGVyVGl0bGU6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnB0LnRpdGxlLFxuICAgIGZpbHRlckNhbmNlbExhYmVsOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5wdC5jYW5jZWxMYWJlbCxcbiAgICBmaWx0ZXJDb25maXJtTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnB0LmNvbmZpcm1MYWJlbCxcbiAgICBxdWlja1NlYXJjaExhYmVsOiAnUGVzcXVpc2EgcsOhcGlkYTonLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUGVzcXVpc2FyJ1xuICB9LFxuICBydTogPFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscz57XG4gICAgZGlzY2xhaW1lckdyb3VwVGl0bGU6ICfQntGC0L7QsdGA0LDQttC10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIsINC+0YLRhNC40LvRjNGC0YDQvtCy0LDQvdC90YvRhSDQv9C+OicsXG4gICAgZmlsdGVyVGl0bGU6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnJ1LnRpdGxlLFxuICAgIGZpbHRlckNhbmNlbExhYmVsOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5ydS5jYW5jZWxMYWJlbCxcbiAgICBmaWx0ZXJDb25maXJtTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnJ1LmNvbmZpcm1MYWJlbCxcbiAgICBxdWlja1NlYXJjaExhYmVsOiAn0JHRi9GB0YLRgNGL0Lkg0L/QvtC40YHQujonLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAn0LjRgdGB0LvQtdC00L7QstCw0L3QuNC1J1xuICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgY29tIGFzIGHDp8O1ZXMgZGUgcGVzcXVpc2EgasOhIGRlZmluaWRhcywgYmFzdGFuZG8gcXVlIG8gZGVzZW52b2x2ZWRvciBpbXBsZW1lbnRlIGFwZW5hcyBhIGNoYW1hZGEgcGFyYSBhcyBBUElzXG4gKiBlIGV4aWJhIGFzIGluZm9ybWHDp8O1ZXMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvUGFnZUR5bmFtaWNTZWFyY2hCYXNlQ29tcG9uZW50IHtcbiAgLyoqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGRlZmluaWRvIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb1BhZ2VBY3Rpb25gLiAqL1xuICBASW5wdXQoJ3AtYWN0aW9ucycpIGFjdGlvbnM/OiBBcnJheTxQb1BhZ2VBY3Rpb24+ID0gW107XG5cbiAgLyoqIE9iamV0byBjb20gcHJvcHJpZWRhZGVzIGRvIGJyZWFkY3J1bWIuICovXG4gIEBJbnB1dCgncC1icmVhZGNydW1iJykgYnJlYWRjcnVtYj86IFBvQnJlYWRjcnVtYiA9IHsgaXRlbXM6IFtdIH07XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWFudMOpbSBuYSBidXNjYSBhdmFuw6dhZGEgb3MgdmFsb3JlcyBwcmVlbmNoaWRvcyBkbyDDumx0aW1vIGZpbHRybyByZWFsaXphZG8gcGVsbyB1c3XDoXJpby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWtlZXAtZmlsdGVycycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBrZWVwRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSB1dGlsaXphw6fDo28gZGEgcGVzcXVpc2EgcsOhcGlkYSBqdW50byBjb20gYSBwZXNxdWlzYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqIERlc3RhIGZvcm1hLCBhbyB0ZXIgdW1hIHBlc3F1aXNhIGF2YW7Dp2FkYSBlc3RhYmVsZWNpZGEgZSBzZXJcbiAgICogcHJlZW5jaGlkbyBhIHBlc3F1aXNhIHLDoXBpZGEsIG8gZmlsdHJvIHNlcsOhIGNvbmNhdGVuYWRvIGFkaWNpb25hbmRvIGEgcGVzcXVpc2FcbiAgICogcsOhcGlkYSB0YW1iw6ltIG5hIGxpc3RhIGRlIGBkaXNjbGFpbWVyc2AuXG4gICAqXG4gICAqID4gT3MgdmFsb3JlcyBxdWUgc8OjbyBlbWl0aWRvcyBubyBgcC1xdWljay1zZWFyY2hgIGUgbm8gYHAtYWR2YW5jZWQtc2VhcmNoYFxuICAgKiBwZXJtYW5lY2VtIHNlcGFyYWRvcyBkdXJhbnRlIGEgZW1pc3PDo28gZG9zIHZhbG9yZXMgYWx0ZXJhZG9zLiBBIGNvbmNhdGVuYcOnw6NvXG4gICAqIMOpIGFwZW5hcyBub3MgYGRpc2NsYWltZXJzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNvbmNhdC1maWx0ZXJzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNvbmNhdEZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPY3VsdGEgbyBib3TDo28gcGFyYSByZW1vdmVyIHRvZG9zIG9zICpkaXNjbGFpbWVycyogZG8gZ3J1cG8uXG4gICAqXG4gICAqID4gUG9yIHBhZHLDo28sIG8gbWVzbW8gw6kgZXhpYmlkbyDDoCBwYXJ0aXIgZGUgZG9pcyBvdSBtYWlzICpkaXNjbGFpbWVycyogY29tIGEgb3DDp8OjbyBgaGlkZUNsb3NlYCBoYWJpbGl0YWRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1yZW1vdmUtYWxsLWRpc2NsYWltZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSlcbiAgaGlkZVJlbW92ZUFsbERpc2NsYWltZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRnVuw6fDo28gb3Ugc2VydmnDp28gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKiAtIGBzdHJpbmdgOiAqRW5kcG9pbnQqIHVzYWRvIHBlbG8gY29tcG9uZW50ZSBwYXJhIHJlcXVpc2nDp8OjbyB2aWEgYFBPU1RgLlxuICAgKiAtIGBmdW5jdGlvbmA6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkby5cbiAgICpcbiAgICogTyByZXRvcm5vIGRlc3RhIGZ1bsOnw6NvIGRldmUgc2VyIGRvIHRpcG8gYFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zYCxcbiAgICogb25kZSBvIHVzdcOhcmlvIHBvZGVyw6EgY3VzdG9taXphciBub3ZvcyBmaWx0cm9zLCBicmVhZGNydW1iLCB0aXRsZSBlIGFjdGlvbnNcbiAgICpcbiAgICogUG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBnZXRQYWdlT3B0aW9ucygpOiBQb1BhZ2VEeW5hbWljU2VhcmNoT3B0aW9ucyB7XG4gICAqIHJldHVybiB7XG4gICAqICAgYWN0aW9uczogW1xuICAgKiAgICAgeyBsYWJlbDogJ0ZpbmQgb24gR29vZ2xlJyB9LFxuICAgKiAgIF0sXG4gICAqICAgZmlsdGVyczogW1xuICAgKiAgICAgeyBwcm9wZXJ0eTogJ2lkQ2FyZCcsIGdyaWRDb2x1bW5zOiA2IH1cbiAgICogICBdXG4gICAqIH07XG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqIFBhcmEgcmVmZXJlbmNpYXIgYSBzdWEgZnVuw6fDo28gdXRpbGl6ZSBhIHByb3ByaWVkYWRlIGBiaW5kYCwgcG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiAgW3AtbG9hZF09XCJvbkxvYWRPcHRpb25zLmJpbmQodGhpcylcIlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkJykgb25Mb2FkOiBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY1NlYXJjaE9wdGlvbnMpO1xuXG4gIC8qKiBUw610dWxvIGRhIHDDoWdpbmEuICovXG4gIEBJbnB1dCgncC10aXRsZScpIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVmFsb3IgcGFkcsOjbyBuYSBidXNjYSByw6FwaWRhIGFvIGluaWNpYWxpemFyIG8gY29tcG9uZW50ZVxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC12YWx1ZScpIHF1aWNrU2VhcmNoVmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGV4ZWN1dGFyIGEgcGVzcXVpc2EgYXZhbsOnYWRhLCBvIG1lc21vIGlyw6EgcmVwYXNzYXIgdW0gb2JqZXRvIGNvbSBvcyB2YWxvcmVzIHByZWVuY2hpZG9zIG5vIG1vZGFsIGRlIHBlc3F1aXNhLlxuICAgKlxuICAgKiA+IENhbXBvcyBuw6NvIHByZWVuY2hpZG9zIG7Do28gaXLDo28gYXBhcmVjZXIgbm8gb2JqZXRvIHBhc3NhZG8gcG9yIHBhcsOibWV0cm8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWFkdmFuY2VkLXNlYXJjaCcpIGFkdmFuY2VkU2VhcmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIHJlbW92ZXIgdW0gb3UgdG9kb3Mgb3MgZGlzY2xhaW1lcnMgcGVsbyB1c3XDoXJpby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLWRpc2NsYWltZXJzJykgY2hhbmdlRGlzY2xhaW1lcnM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gcmVhbGl6YXIgdW1hIGJ1c2NhIHBlbG8gY2FtcG8gZGUgcGVzcXVpc2EgcsOhcGlkYSwgbyBtZXNtbyBzZXLDoSBjaGFtYWRvIHJlcGFzc2FuZG8gbyB2YWxvciBkaWdpdGFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcXVpY2stc2VhcmNoJykgcXVpY2tTZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGFkdmFuY2VkRmlsdGVyTGl0ZXJhbHM6IFBvQWR2YW5jZWRGaWx0ZXJMaXRlcmFscztcblxuICBwcml2YXRlIF9maWx0ZXJzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+ID0gW107XG4gIHByaXZhdGUgX2hpZGVDbG9zZURpc2NsYWltZXJzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHM7XG4gIHByaXZhdGUgX3F1aWNrU2VhcmNoV2lkdGg6IG51bWJlcjtcblxuICBwcml2YXRlIHByZXZpb3VzRmlsdGVyczogQXJyYXk8UG9EeW5hbWljRm9ybUZpZWxkPjtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1wYWdlLWR5bmFtaWMtc2VhcmNoYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzID0ge1xuICAgKiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ0ZpbHRyb3MgYXBsaWNhZG9zOicsXG4gICAqICAgIGZpbHRlclRpdGxlOiAnRmlsdHJvIGF2YW7Dp2FkbycsXG4gICAqICAgIGZpbHRlckNhbmNlbExhYmVsOiAnRmVjaGFyJyxcbiAgICogICAgZmlsdGVyQ29uZmlybUxhYmVsOiAnQXBsaWNhcicsXG4gICAqICAgIHF1aWNrU2VhcmNoTGFiZWw6ICdWYWxvciBwZXNxdWlzYWRvOicsXG4gICAqICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUGVzcXVpc2UgYXF1aSdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHMgPSB7XG4gICAqICAgIGZpbHRlclRpdGxlOiAnRmlsdHJvIGF2YW7Dp2FkbydcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtZHluYW1pYy1zZWFyY2hcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtZHluYW1pYy1zZWFyY2g+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QWR2YW5jZWRGaWx0ZXJMaXRlcmFscyh0aGlzLmxpdGVyYWxzKTtcbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRvcyBjYW1wb3MgdXNhZG9zIG5hIGJ1c2NhIGF2YW7Dp2FkYS4gQ2FzbyBvIG1lc21vIG7Do28gc2VqYSBwYXNzYWRvIGEgYnVzY2EgYXZhbsOnYWRhIG7Do28gc2Vyw6EgZXhpYmlkYS5cbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXJzJykgc2V0IGZpbHRlcnMoZmlsdGVyczogQXJyYXk8UG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnM+KSB7XG4gICAgdGhpcy5fZmlsdGVycyA9IEFycmF5LmlzQXJyYXkoZmlsdGVycykgPyBbLi4uZmlsdGVyc10gOiBbXTtcblxuICAgIGlmICh0aGlzLnN0cmluZ2lmeSh0aGlzLl9maWx0ZXJzKSAhPT0gdGhpcy5zdHJpbmdpZnkodGhpcy5wcmV2aW91c0ZpbHRlcnMpKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlRmlsdGVycyh0aGlzLmZpbHRlcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzRmlsdGVycyA9IFsuLi50aGlzLl9maWx0ZXJzXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVycygpOiBBcnJheTxQb1BhZ2VEeW5hbWljU2VhcmNoRmlsdGVycz4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGFyZ3VyYSBkbyBjYW1wbyBkZSBidXNjYSwgdXRpbGl6YW5kbyBvICpHcmlkIFN5c3RlbSosXG4gICAqIGUgbGltaXRhZG8gYW8gbcOheGltbyBkZSA2IGNvbHVuYXMuIE8gdGFtYW5obyBtw61uaW1vIMOpIGNvbnRyb2xhZG9cbiAgICogY29uZm9ybWUgcmVzb2x1w6fDo28gZGUgdGVsYSBwYXJhIG1hbnRlciBhIGNvbnNpc3TDqm5jaWEgZG8gbGF5b3V0LlxuICAgKi9cbiAgQElucHV0KCdwLXF1aWNrLXNlYXJjaC13aWR0aCcpIHNldCBxdWlja1NlYXJjaFdpZHRoKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9xdWlja1NlYXJjaFdpZHRoID0gY29udmVydFRvSW50KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBxdWlja1NlYXJjaFdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1aWNrU2VhcmNoV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBmaWx0cm9zIHF1ZSB0ZXLDo28gYSBvcMOnw6NvIGRlIGZlY2hhciBvY3VsdGFkYVxuICAgKiBlbSBzZXUgcmVzcGVjdGl2byBkaXNjbGFpbWVyLiBVdGlsaXphciBvIGF0cmlidXRvIGBwcm9wZXJ0eWAgZG8gZmlsdHJvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIHV0aWxpemHDp8OjbzpcbiAgICogYGBgXG4gICAqIFsnY2l0eScsJ25hbWUnXTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1jbG9zZS1kaXNjbGFpbWVycycpIHNldCBoaWRlQ2xvc2VEaXNjbGFpbWVycyh2YWx1ZTogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuX2hpZGVDbG9zZURpc2NsYWltZXJzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICB9XG5cbiAgZ2V0IGhpZGVDbG9zZURpc2NsYWltZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlQ2xvc2VEaXNjbGFpbWVycztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBZHZhbmNlZEZpbHRlckxpdGVyYWxzKGxpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHMpIHtcbiAgICB0aGlzLmFkdmFuY2VkRmlsdGVyTGl0ZXJhbHMgPSB7XG4gICAgICBjYW5jZWxMYWJlbDogbGl0ZXJhbHMuZmlsdGVyQ2FuY2VsTGFiZWwsXG4gICAgICBjb25maXJtTGFiZWw6IGxpdGVyYWxzLmZpbHRlckNvbmZpcm1MYWJlbCxcbiAgICAgIHRpdGxlOiBsaXRlcmFscy5maWx0ZXJUaXRsZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShjb2x1bW5zOiBBcnJheTxQb1BhZ2VEeW5hbWljU2VhcmNoRmlsdGVycz4pIHtcbiAgICAvLyBuw6NvIGZheiBvIHN0cmluZ2lmeSBkYSBwcm9wcmllZGFkZSBzZWFyY2hTZXJ2aWNlLCBwb2lzIHBvZGUgY29udGVyIG9iamV0byBjb21wbGV4byBlIGRpc3BhcmFyIHVtIGVycm8uXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbHVtbnMsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc2VhcmNoU2VydmljZScpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWJzdHJhY3Qgb25DaGFuZ2VGaWx0ZXJzKGZpbHRlcnM6IEFycmF5PFBvUGFnZUR5bmFtaWNTZWFyY2hGaWx0ZXJzPik7XG59XG4iXX0=
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXNlYXJjaC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1keW5hbWljLXNlYXJjaC9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUtMLGVBQWUsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7OztBQU0xRyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRztJQUNoRCxFQUFFLEVBQStCO1FBQy9CLG9CQUFvQixFQUFFLGlDQUFpQztRQUN2RCxXQUFXLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLEtBQUs7UUFDdEQsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLFdBQVc7UUFDbEUsa0JBQWtCLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLFlBQVk7UUFDcEUsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxpQkFBaUIsRUFBRSxRQUFRO0tBQzVCO0lBQ0QsRUFBRSxFQUErQjtRQUMvQixvQkFBb0IsRUFBRSx1Q0FBdUM7UUFDN0QsV0FBVyxFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxLQUFLO1FBQ3RELGlCQUFpQixFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxXQUFXO1FBQ2xFLGtCQUFrQixFQUFFLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxZQUFZO1FBQ3BFLGdCQUFnQixF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LE1BQU07bUJBQUMsc0JBQXNCO1lBU0osV0FBVztrQkFBcEMsTUFBTTttQkFBQyxnQkFBZ0I7WUFrREMsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBeUJLLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQWlCaUIsZ0JBQWdCO2tCQUFsRCxLQUFLO21CQUFDLHNCQUFzQjtZQXFCVSxvQkFBb0I7a0JBQTFELEtBQUs7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgUG9CcmVhZGNydW1iLFxuICBQb0R5bmFtaWNGb3JtRmllbGQsXG4gIFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICBQb1BhZ2VBY3Rpb24sXG4gIHBvTG9jYWxlRGVmYXVsdFxufSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGNvbnZlcnRUb0ludCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vcG8tYWR2YW5jZWQtZmlsdGVyL3BvLWFkdmFuY2VkLWZpbHRlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0FkdmFuY2VkRmlsdGVyTGl0ZXJhbHMgfSBmcm9tICcuL3BvLWFkdmFuY2VkLWZpbHRlci9wby1hZHZhbmNlZC1maWx0ZXItbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hGaWx0ZXJzIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscyB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLXNlYXJjaC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1NlYXJjaE9wdGlvbnMgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gtb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgcG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHM+e1xuICAgIGRpc2NsYWltZXJHcm91cFRpdGxlOiAnRGlzcGxheWluZyByZXN1bHRzIGZpbHRlcmVkIGJ5OicsXG4gICAgZmlsdGVyVGl0bGU6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LmVuLnRpdGxlLFxuICAgIGZpbHRlckNhbmNlbExhYmVsOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5lbi5jYW5jZWxMYWJlbCxcbiAgICBmaWx0ZXJDb25maXJtTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LmVuLmNvbmZpcm1MYWJlbCxcbiAgICBxdWlja1NlYXJjaExhYmVsOiAnUXVpY2sgc2VhcmNoOicsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2gnXG4gIH0sXG4gIGVzOiA8UG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzPntcbiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRhbmRvIHJlc3VsdGFkb3MgZmlsdHJhZG9zIHBvcjonLFxuICAgIGZpbHRlclRpdGxlOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5lcy50aXRsZSxcbiAgICBmaWx0ZXJDYW5jZWxMYWJlbDogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQuZXMuY2FuY2VsTGFiZWwsXG4gICAgZmlsdGVyQ29uZmlybUxhYmVsOiBwb0FkdmFuY2VkRmlsdGVyc0xpdGVyYWxzRGVmYXVsdC5lcy5jb25maXJtTGFiZWwsXG4gICAgcXVpY2tTZWFyY2hMYWJlbDogJ0LDunNxdWVkYSByw6FwaWRhOicsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdCdXNjYXInXG4gIH0sXG4gIHB0OiA8UG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzPntcbiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ0FwcmVzZW50YW5kbyByZXN1bHRhZG9zIGZpbHRyYWRvcyBwb3I6JyxcbiAgICBmaWx0ZXJUaXRsZTogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQucHQudGl0bGUsXG4gICAgZmlsdGVyQ2FuY2VsTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnB0LmNhbmNlbExhYmVsLFxuICAgIGZpbHRlckNvbmZpcm1MYWJlbDogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQucHQuY29uZmlybUxhYmVsLFxuICAgIHF1aWNrU2VhcmNoTGFiZWw6ICdQZXNxdWlzYSByw6FwaWRhOicsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdQZXNxdWlzYXInXG4gIH0sXG4gIHJ1OiA8UG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzPntcbiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ9Ce0YLQvtCx0YDQsNC20LXQvdC40LUg0YDQtdC30YPQu9GM0YLQsNGC0L7Qsiwg0L7RgtGE0LjQu9GM0YLRgNC+0LLQsNC90L3Ri9GFINC/0L46JyxcbiAgICBmaWx0ZXJUaXRsZTogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQucnUudGl0bGUsXG4gICAgZmlsdGVyQ2FuY2VsTGFiZWw6IHBvQWR2YW5jZWRGaWx0ZXJzTGl0ZXJhbHNEZWZhdWx0LnJ1LmNhbmNlbExhYmVsLFxuICAgIGZpbHRlckNvbmZpcm1MYWJlbDogcG9BZHZhbmNlZEZpbHRlcnNMaXRlcmFsc0RlZmF1bHQucnUuY29uZmlybUxhYmVsLFxuICAgIHF1aWNrU2VhcmNoTGFiZWw6ICfQkdGL0YHRgtGA0YvQuSDQv9C+0LjRgdC6OicsXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICfQuNGB0YHQu9C10LTQvtCy0LDQvdC40LUnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBjb20gYXMgYcOnw7VlcyBkZSBwZXNxdWlzYSBqw6EgZGVmaW5pZGFzLCBiYXN0YW5kbyBxdWUgbyBkZXNlbnZvbHZlZG9yIGltcGxlbWVudGUgYXBlbmFzIGEgY2hhbWFkYSBwYXJhIGFzIEFQSXNcbiAqIGUgZXhpYmEgYXMgaW5mb3JtYcOnw7Vlcy5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9QYWdlRHluYW1pY1NlYXJjaEJhc2VDb21wb25lbnQge1xuICAvKiogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZG8gdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvUGFnZUFjdGlvbmAuICovXG4gIEBJbnB1dCgncC1hY3Rpb25zJykgYWN0aW9ucz86IEFycmF5PFBvUGFnZUFjdGlvbj4gPSBbXTtcblxuICAvKiogT2JqZXRvIGNvbSBwcm9wcmllZGFkZXMgZG8gYnJlYWRjcnVtYi4gKi9cbiAgQElucHV0KCdwLWJyZWFkY3J1bWInKSBicmVhZGNydW1iPzogUG9CcmVhZGNydW1iID0geyBpdGVtczogW10gfTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW50w6ltIG5hIGJ1c2NhIGF2YW7Dp2FkYSBvcyB2YWxvcmVzIHByZWVuY2hpZG9zIGRvIMO6bHRpbW8gZmlsdHJvIHJlYWxpemFkbyBwZWxvIHVzdcOhcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3Ata2VlcC1maWx0ZXJzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGtlZXBGaWx0ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHV0aWxpemHDp8OjbyBkYSBwZXNxdWlzYSByw6FwaWRhIGp1bnRvIGNvbSBhIHBlc3F1aXNhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogRGVzdGEgZm9ybWEsIGFvIHRlciB1bWEgcGVzcXVpc2EgYXZhbsOnYWRhIGVzdGFiZWxlY2lkYSBlIHNlclxuICAgKiBwcmVlbmNoaWRvIGEgcGVzcXVpc2EgcsOhcGlkYSwgbyBmaWx0cm8gc2Vyw6EgY29uY2F0ZW5hZG8gYWRpY2lvbmFuZG8gYSBwZXNxdWlzYVxuICAgKiByw6FwaWRhIHRhbWLDqW0gbmEgbGlzdGEgZGUgYGRpc2NsYWltZXJzYC5cbiAgICpcbiAgICogPiBPcyB2YWxvcmVzIHF1ZSBzw6NvIGVtaXRpZG9zIG5vIGBwLXF1aWNrLXNlYXJjaGAgZSBubyBgcC1hZHZhbmNlZC1zZWFyY2hgXG4gICAqIHBlcm1hbmVjZW0gc2VwYXJhZG9zIGR1cmFudGUgYSBlbWlzc8OjbyBkb3MgdmFsb3JlcyBhbHRlcmFkb3MuIEEgY29uY2F0ZW5hw6fDo29cbiAgICogw6kgYXBlbmFzIG5vcyBgZGlzY2xhaW1lcnNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtY29uY2F0LWZpbHRlcnMnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgY29uY2F0RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9jdWx0YSBvIGJvdMOjbyBwYXJhIHJlbW92ZXIgdG9kb3Mgb3MgKmRpc2NsYWltZXJzKiBkbyBncnVwby5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbywgbyBtZXNtbyDDqSBleGliaWRvIMOgIHBhcnRpciBkZSBkb2lzIG91IG1haXMgKmRpc2NsYWltZXJzKiBjb20gYSBvcMOnw6NvIGBoaWRlQ2xvc2VgIGhhYmlsaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLXJlbW92ZS1hbGwtZGlzY2xhaW1lcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBvdSBzZXJ2acOnbyBxdWUgc2Vyw6EgZXhlY3V0YWRvIG5hIGluaWNpYWxpemHDp8OjbyBkbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqIC0gYHN0cmluZ2A6ICpFbmRwb2ludCogdXNhZG8gcGVsbyBjb21wb25lbnRlIHBhcmEgcmVxdWlzacOnw6NvIHZpYSBgUE9TVGAuXG4gICAqIC0gYGZ1bmN0aW9uYDogTcOpdG9kbyBxdWUgc2Vyw6EgZXhlY3V0YWRvLlxuICAgKlxuICAgKiBPIHJldG9ybm8gZGVzdGEgZnVuw6fDo28gZGV2ZSBzZXIgZG8gdGlwbyBgUG9QYWdlRHluYW1pY1NlYXJjaE9wdGlvbnNgLFxuICAgKiBvbmRlIG8gdXN1w6FyaW8gcG9kZXLDoSBjdXN0b21pemFyIG5vdm9zIGZpbHRyb3MsIGJyZWFkY3J1bWIsIHRpdGxlIGUgYWN0aW9uc1xuICAgKlxuICAgKiBQb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGdldFBhZ2VPcHRpb25zKCk6IFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zIHtcbiAgICogcmV0dXJuIHtcbiAgICogICBhY3Rpb25zOiBbXG4gICAqICAgICB7IGxhYmVsOiAnRmluZCBvbiBHb29nbGUnIH0sXG4gICAqICAgXSxcbiAgICogICBmaWx0ZXJzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAnaWRDYXJkJywgZ3JpZENvbHVtbnM6IDYgfVxuICAgKiAgIF1cbiAgICogfTtcbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICogUGFyYSByZWZlcmVuY2lhciBhIHN1YSBmdW7Dp8OjbyB1dGlsaXplIGEgcHJvcHJpZWRhZGUgYGJpbmRgLCBwb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqICBbcC1sb2FkXT1cIm9uTG9hZE9wdGlvbnMuYmluZCh0aGlzKVwiXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLWxvYWQnKSBvbkxvYWQ6IHN0cmluZyB8ICgoKSA9PiBQb1BhZ2VEeW5hbWljU2VhcmNoT3B0aW9ucyk7XG5cbiAgLyoqIFTDrXR1bG8gZGEgcMOhZ2luYS4gKi9cbiAgQElucHV0KCdwLXRpdGxlJykgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBwYWRyw6NvIG5hIGJ1c2NhIHLDoXBpZGEgYW8gaW5pY2lhbGl6YXIgbyBjb21wb25lbnRlXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtcXVpY2stc2VhcmNoLXZhbHVlJykgcXVpY2tTZWFyY2hWYWx1ZTogc3RyaW5nO1xuXG4gIF92aXNpYmxlRml4ZWRGaWx0ZXJzID0gdHJ1ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDb250cm9sYSBhIHZpc2liaWxpZGFkZSBkb3MgZmlsdHJvcyBmaXhvcyBuYSBww6FnaW5hLlxuICAgKlxuICAgKiAtIFF1YW5kbyBgdHJ1ZWAgKGRlZmF1bHQpLCB0b2RvcyBvcyBmaWx0cm9zLCBpbmNsdWluZG8gb3MgZml4b3MsIHPDo28gZXhpYmlkb3MsIHBlcm1pdGluZG8gcXVlIG8gdXN1w6FyaW8gdmlzdWFsaXplIG9zIGZpbHRyb3MgYXBsaWNhZG9zLlxuICAgKiAtIFF1YW5kbyBgZmFsc2VgLCBvcyBmaWx0cm9zIGZpeG9zIHPDo28gb2N1bHRhZG9zLCBuw6NvIHNlbmRvIGV4aWJpZG9zIG5hIGludGVyZmFjZSwgbWFzIGFpbmRhIHNlbmRvIGFwbGljYWRvcyBjb21vIGZpbHRyb3MgbmFzIHJlcXVpc2nDp8O1ZXMuXG4gICAqXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgdHJhYmFsaGEgZW0gY29uanVudG8gY29tIGEgcHJvcHJpZWRhZGUgYGZpeGVkYCBkb3MgZmlsdHJvcyBpbmRpdmlkdWFpcy4gRmlsdHJvcyBtYXJjYWRvcyBjb21vIGBmaXhlZDogdHJ1ZWAgbsOjbyBzZXLDo28gZXhpYmlkb3MgbmEgaW50ZXJmYWNlIGRvIGZpbHRybyBhdmFuw6dhZG8gcXVhbmRvIGB2aXNpYmxlRml4ZWRGaWx0ZXJzYCBmb3IgYGZhbHNlYCwgbWFzIGNvbnRpbnVhcsOjbyBhIHNlciBhcGxpY2Fkb3MgZGUgZm9ybWEgdHJhbnNwYXJlbnRlIGFvIHVzdcOhcmlvLiBEZXNzYSBmb3JtYSwgcGVybWl0ZS1zZSBtYWlvciBmbGV4aWJpbGlkYWRlIG5vIGNvbnRyb2xlIGRlIHF1YWlzIGZpbHRyb3MgZGV2ZW0gc2VyIHZpc8OtdmVpcyBhbyB1c3XDoXJpbyBvdSBkZXZlbSBzZXIgYXBsaWNhZG9zIHBlcm1hbmVudGVtZW50ZSBzZW0gaW50ZXJmZXLDqm5jaWEuXG4gICAqXG4gICAqICoqRXhlbXBsbyBkZSB1c286KipcbiAgICogYGBgaHRtbFxuICAgKiA8IS0tIFBhcmEgb2N1bHRhciBvcyBmaWx0cm9zIGZpeG9zIC0tPlxuICAgKiA8cG8tcGFnZS1keW5hbWljLXRhYmxlIFtwLXZpc2libGUtZml4ZWQtZmlsdGVyc109XCJmYWxzZVwiPjwvcG8tcGFnZS1keW5hbWljLXRhYmxlPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC12aXNpYmxlLWZpeGVkLWZpbHRlcnMnKSBzZXQgdmlzaWJsZUZpeGVkRmlsdGVycyh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZUZpeGVkRmlsdGVycyA9IHZpc2libGU7XG4gIH1cblxuICBnZXQgdmlzaWJsZUZpeGVkRmlsdGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUZpeGVkRmlsdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZXhlY3V0YXIgYSBwZXNxdWlzYSBhdmFuw6dhZGEsIG8gbWVzbW8gaXLDoSByZXBhc3NhciB1bSBvYmpldG8gY29tIG9zIHZhbG9yZXMgcHJlZW5jaGlkb3Mgbm8gbW9kYWwgZGUgcGVzcXVpc2EuXG4gICAqXG4gICAqID4gQ2FtcG9zIG7Do28gcHJlZW5jaGlkb3MgbsOjbyBpcsOjbyBhcGFyZWNlciBubyBvYmpldG8gcGFzc2FkbyBwb3IgcGFyw6JtZXRyby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtYWR2YW5jZWQtc2VhcmNoJykgYWR2YW5jZWRTZWFyY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gcmVtb3ZlciB1bSBvdSB0b2RvcyBvcyBkaXNjbGFpbWVycyBwZWxvIHVzdcOhcmlvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtZGlzY2xhaW1lcnMnKSBjaGFuZ2VEaXNjbGFpbWVyczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyByZWFsaXphciB1bWEgYnVzY2EgcGVsbyBjYW1wbyBkZSBwZXNxdWlzYSByw6FwaWRhLCBvIG1lc21vIHNlcsOhIGNoYW1hZG8gcmVwYXNzYW5kbyBvIHZhbG9yIGRpZ2l0YWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1xdWljay1zZWFyY2gnKSBxdWlja1NlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYWR2YW5jZWRGaWx0ZXJMaXRlcmFsczogUG9BZHZhbmNlZEZpbHRlckxpdGVyYWxzO1xuXG4gIHByaXZhdGUgX2ZpbHRlcnM6IEFycmF5PFBvRHluYW1pY0Zvcm1GaWVsZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaGlkZUNsb3NlRGlzY2xhaW1lcnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscztcbiAgcHJpdmF0ZSBfcXVpY2tTZWFyY2hXaWR0aDogbnVtYmVyO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgcHJldmlvdXNGaWx0ZXJzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1wYWdlLWR5bmFtaWMtc2VhcmNoYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzID0ge1xuICAgKiAgICBkaXNjbGFpbWVyR3JvdXBUaXRsZTogJ0ZpbHRyb3MgYXBsaWNhZG9zOicsXG4gICAqICAgIGZpbHRlclRpdGxlOiAnRmlsdHJvIGF2YW7Dp2FkbycsXG4gICAqICAgIGZpbHRlckNhbmNlbExhYmVsOiAnRmVjaGFyJyxcbiAgICogICAgZmlsdGVyQ29uZmlybUxhYmVsOiAnQXBsaWNhcicsXG4gICAqICAgIHF1aWNrU2VhcmNoTGFiZWw6ICdWYWxvciBwZXNxdWlzYWRvOicsXG4gICAqICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnUGVzcXVpc2UgYXF1aSdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHMgPSB7XG4gICAqICAgIGZpbHRlclRpdGxlOiAnRmlsdHJvIGF2YW7Dp2FkbydcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtZHluYW1pYy1zZWFyY2hcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtZHluYW1pYy1zZWFyY2g+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb1BhZ2VEeW5hbWljU2VhcmNoTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QWR2YW5jZWRGaWx0ZXJMaXRlcmFscyh0aGlzLmxpdGVyYWxzKTtcbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9QYWdlRHluYW1pY1NlYXJjaExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRvcyBjYW1wb3MgdXNhZG9zIG5hIGJ1c2NhIGF2YW7Dp2FkYS4gQ2FzbyBvIG1lc21vIG7Do28gc2VqYSBwYXNzYWRvIGEgYnVzY2EgYXZhbsOnYWRhIG7Do28gc2Vyw6EgZXhpYmlkYS5cbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXJzJykgc2V0IGZpbHRlcnMoZmlsdGVyczogQXJyYXk8UG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnM+KSB7XG4gICAgdGhpcy5fZmlsdGVycyA9IEFycmF5LmlzQXJyYXkoZmlsdGVycykgPyBbLi4uZmlsdGVyc10gOiBbXTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJzKCk6IEFycmF5PFBvUGFnZUR5bmFtaWNTZWFyY2hGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMYXJndXJhIGRvIGNhbXBvIGRlIGJ1c2NhLCB1dGlsaXphbmRvIG8gKkdyaWQgU3lzdGVtKixcbiAgICogZSBsaW1pdGFkbyBhbyBtw6F4aW1vIGRlIDYgY29sdW5hcy4gTyB0YW1hbmhvIG3DrW5pbW8gw6kgY29udHJvbGFkb1xuICAgKiBjb25mb3JtZSByZXNvbHXDp8OjbyBkZSB0ZWxhIHBhcmEgbWFudGVyIGEgY29uc2lzdMOqbmNpYSBkbyBsYXlvdXQuXG4gICAqL1xuICBASW5wdXQoJ3AtcXVpY2stc2VhcmNoLXdpZHRoJykgc2V0IHF1aWNrU2VhcmNoV2lkdGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3F1aWNrU2VhcmNoV2lkdGggPSBjb252ZXJ0VG9JbnQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHF1aWNrU2VhcmNoV2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcXVpY2tTZWFyY2hXaWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIGZpbHRyb3MgcXVlIHRlcsOjbyBhIG9ww6fDo28gZGUgZmVjaGFyIG9jdWx0YWRhXG4gICAqIGVtIHNldSByZXNwZWN0aXZvIGRpc2NsYWltZXIuIFV0aWxpemFyIG8gYXRyaWJ1dG8gYHByb3BlcnR5YCBkbyBmaWx0cm8uXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgdXRpbGl6YcOnw6NvOlxuICAgKiBgYGBcbiAgICogWydjaXR5JywnbmFtZSddO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWNsb3NlLWRpc2NsYWltZXJzJykgc2V0IGhpZGVDbG9zZURpc2NsYWltZXJzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5faGlkZUNsb3NlRGlzY2xhaW1lcnMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG4gIH1cblxuICBnZXQgaGlkZUNsb3NlRGlzY2xhaW1lcnMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVDbG9zZURpc2NsYWltZXJzO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEFkdmFuY2VkRmlsdGVyTGl0ZXJhbHMobGl0ZXJhbHM6IFBvUGFnZUR5bmFtaWNTZWFyY2hMaXRlcmFscykge1xuICAgIHRoaXMuYWR2YW5jZWRGaWx0ZXJMaXRlcmFscyA9IHtcbiAgICAgIGNhbmNlbExhYmVsOiBsaXRlcmFscy5maWx0ZXJDYW5jZWxMYWJlbCxcbiAgICAgIGNvbmZpcm1MYWJlbDogbGl0ZXJhbHMuZmlsdGVyQ29uZmlybUxhYmVsLFxuICAgICAgdGl0bGU6IGxpdGVyYWxzLmZpbHRlclRpdGxlXG4gICAgfTtcbiAgfVxuXG4gIHN0cmluZ2lmeShjb2x1bW5zOiBBcnJheTxQb1BhZ2VEeW5hbWljU2VhcmNoRmlsdGVycz4pIHtcbiAgICAvLyBuw6NvIGZheiBvIHN0cmluZ2lmeSBkYSBwcm9wcmllZGFkZSBzZWFyY2hTZXJ2aWNlLCBwb2lzIHBvZGUgY29udGVyIG9iamV0byBjb21wbGV4byBlIGRpc3BhcmFyIHVtIGVycm8uXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbHVtbnMsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc2VhcmNoU2VydmljZScpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWJzdHJhY3Qgb25DaGFuZ2VGaWx0ZXJzKGZpbHRlcnM6IEFycmF5PFBvUGFnZUR5bmFtaWNTZWFyY2hGaWx0ZXJzPik7XG59XG4iXX0=
|
package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXNlYXJjaC1maWx0ZXJzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1keW5hbWljLXNlYXJjaC9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWZpbHRlcnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0R5bmFtaWNGb3JtRmllbGQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbi8qKlxuICogQHVzZWRCeSBQb1BhZ2VEeW5hbWljU2VhcmNoQ29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIHBhcmEgYSBjdXN0b21pemHDp8OjbyBkZSB1bWEgcMOhZ2luYSBkaW7Dom1pY2EgcXVlIHBlcm1pdGUgYXRyaWJ1aXIgdmFsb3JlcyBpbmljaWFpcyBhb3MgZmlsdHJvcyBkZSBidXNjYSBhdmFuw6dhZGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnMgZXh0ZW5kcyBQb0R5bmFtaWNGb3JtRmllbGQge1xuICAvKipcbiAgICogRGVmaW5lIHVtIHZhbG9yIGluaWNpYWwgcGFyYSB1bSBmaWx0cm8gZGUgYnVzY2EgYXZhbsOnYWRhLlxuICAgKi9cbiAgaW5pdFZhbHVlPzogYW55O1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdW0gdmFsb3IgZml4ZWQgcGFyYSB1bSBmaWx0cm8gZGUgYnVzY2EgYXZhbsOnYWRhLlxuICAgKi9cbiAgZml4ZWQ/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -79,6 +79,21 @@ export class PoPageDynamicSearchComponent extends PoPageDynamicSearchBaseCompone
|
|
|
79
79
|
this.loadSubscription.unsubscribe();
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
ngAfterViewInit() {
|
|
83
|
+
if (this.stringify(this.filters) !== this.stringify(this.previousFilters)) {
|
|
84
|
+
this.onChangeFilters(this.filters);
|
|
85
|
+
this.previousFilters = [...this.filters];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
ngOnChanges(changes) {
|
|
89
|
+
const visibleFixedFilters = changes.visibleFixedFilters;
|
|
90
|
+
if (visibleFixedFilters &&
|
|
91
|
+
visibleFixedFilters.currentValue !== visibleFixedFilters.previousValue &&
|
|
92
|
+
this.filters.some(filter => filter.fixed)) {
|
|
93
|
+
this.onChangeFilters(this.filters);
|
|
94
|
+
this.previousFilters = [...this.filters];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
82
97
|
onChangeFilters(filters) {
|
|
83
98
|
const filterObjectWithValue = filters
|
|
84
99
|
.filter(filter => filter.initValue)
|
|
@@ -114,7 +129,10 @@ export class PoPageDynamicSearchComponent extends PoPageDynamicSearchBaseCompone
|
|
|
114
129
|
}
|
|
115
130
|
onAdvancedSearch(filteredItems, isAdvancedSearch) {
|
|
116
131
|
const { filter, optionsService } = filteredItems;
|
|
117
|
-
|
|
132
|
+
const visibleFilters = this.visibleFixedFilters === false
|
|
133
|
+
? this.filters.filter(filter => !('fixed' in filter) || !filter.fixed)
|
|
134
|
+
: this.filters;
|
|
135
|
+
this._disclaimerGroup.disclaimers = this.setDisclaimers(filter, optionsService, visibleFilters);
|
|
118
136
|
this.setFilters(filter);
|
|
119
137
|
this.advancedSearch.emit(filter);
|
|
120
138
|
if (isAdvancedSearch) {
|
|
@@ -193,33 +211,52 @@ export class PoPageDynamicSearchComponent extends PoPageDynamicSearchBaseCompone
|
|
|
193
211
|
}
|
|
194
212
|
return value;
|
|
195
213
|
}
|
|
196
|
-
onRemoveDisclaimer(removeData) {
|
|
197
|
-
const { currentDisclaimers } = removeData;
|
|
198
|
-
this.emitChangesDisclaimers(currentDisclaimers);
|
|
199
|
-
}
|
|
200
214
|
emitChangesDisclaimers(currentDisclaimers) {
|
|
201
215
|
this.changeDisclaimers.emit(currentDisclaimers);
|
|
202
216
|
this.setFilters(this.formatArrayToObjectKeyValue(currentDisclaimers));
|
|
203
217
|
}
|
|
204
218
|
onRemoveAllDisclaimers() {
|
|
205
|
-
this.
|
|
219
|
+
const disclaimersToKeep = this.getFixedFiltersDisclaimers();
|
|
220
|
+
this.emitChangesDisclaimers(disclaimersToKeep);
|
|
221
|
+
}
|
|
222
|
+
onRemoveDisclaimer(removeData) {
|
|
223
|
+
const { currentDisclaimers } = removeData;
|
|
224
|
+
const updatedDisclaimers = [...currentDisclaimers, ...this.getFixedFiltersDisclaimers(currentDisclaimers)];
|
|
225
|
+
this.emitChangesDisclaimers(updatedDisclaimers);
|
|
226
|
+
}
|
|
227
|
+
getFixedFiltersDisclaimers(currentDisclaimers) {
|
|
228
|
+
const fixedFilters = this.filters.filter(filter => filter.fixed === true &&
|
|
229
|
+
filter.hasOwnProperty('initValue') &&
|
|
230
|
+
filter.initValue !== undefined &&
|
|
231
|
+
filter.initValue !== null);
|
|
232
|
+
return fixedFilters
|
|
233
|
+
.map(filter => ({
|
|
234
|
+
property: filter.property,
|
|
235
|
+
value: filter.initValue,
|
|
236
|
+
label: `${filter.label}: ${filter.initValue}`,
|
|
237
|
+
hideClose: true
|
|
238
|
+
}))
|
|
239
|
+
.filter(fixedFilter => !currentDisclaimers || !currentDisclaimers.some(disclaimer => disclaimer.property === fixedFilter.property));
|
|
206
240
|
}
|
|
207
|
-
setDisclaimers(filters, optionsServiceObjects) {
|
|
241
|
+
setDisclaimers(filters, optionsServiceObjects, visibleFilters) {
|
|
208
242
|
const disclaimers = [];
|
|
209
243
|
const properties = Object.keys(filters);
|
|
244
|
+
const visibleProperties = visibleFilters ? visibleFilters.map(filter => filter.property) : properties;
|
|
210
245
|
properties.forEach(property => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
246
|
+
if (visibleProperties.includes(property)) {
|
|
247
|
+
const field = this.getFieldByProperty(this.filters, property);
|
|
248
|
+
const label = field.label || capitalizeFirstLetter(field.property);
|
|
249
|
+
const value = filters[property];
|
|
250
|
+
const hideClose = this.hideCloseDisclaimers.some(hideCloseDisclaimer => hideCloseDisclaimer === property) || false;
|
|
251
|
+
const valueDisplayedOnTheDisclaimerLabel = this.getFilterValueToDisclaimer(field, value, optionsServiceObjects);
|
|
252
|
+
if (valueDisplayedOnTheDisclaimerLabel !== '') {
|
|
253
|
+
disclaimers.push({
|
|
254
|
+
label: `${label}: ${valueDisplayedOnTheDisclaimerLabel}`,
|
|
255
|
+
property,
|
|
256
|
+
value,
|
|
257
|
+
hideClose
|
|
258
|
+
});
|
|
259
|
+
}
|
|
223
260
|
}
|
|
224
261
|
});
|
|
225
262
|
return disclaimers;
|
|
@@ -284,7 +321,7 @@ export class PoPageDynamicSearchComponent extends PoPageDynamicSearchBaseCompone
|
|
|
284
321
|
let _t;
|
|
285
322
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poAdvancedFilter = _t.first);
|
|
286
323
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poPageList = _t.first);
|
|
287
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 4, vars: 9, consts: [["poPageList", ""], [3, "p-actions", "p-breadcrumb", "p-disclaimer-group", "p-filter", "p-title", "p-quick-search-value"], [3, "p-search-event", "p-filters", "p-keep-filters", "p-literals"]], template: function PoPageDynamicSearchComponent_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 4, vars: 9, consts: [["poPageList", ""], [3, "p-actions", "p-breadcrumb", "p-disclaimer-group", "p-filter", "p-title", "p-quick-search-value"], [3, "p-search-event", "p-filters", "p-keep-filters", "p-literals"]], template: function PoPageDynamicSearchComponent_Template(rf, ctx) { if (rf & 1) {
|
|
288
325
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
289
326
|
i0.ɵɵprojectionDef();
|
|
290
327
|
i0.ɵɵelementStart(0, "po-page-list", 1, 0)(2, "po-advanced-filter", 2);
|
|
@@ -308,5 +345,5 @@ export class PoPageDynamicSearchComponent extends PoPageDynamicSearchBaseCompone
|
|
|
308
345
|
type: ViewChild,
|
|
309
346
|
args: [PoPageListComponent, { static: true }]
|
|
310
347
|
}] }); })();
|
|
311
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicSearchComponent, { className: "PoPageDynamicSearchComponent", filePath: "lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts", lineNumber:
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUVMLGtCQUFrQixFQU1sQixtQkFBbUIsRUFDcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBTzNGOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUtILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxnQ0FBZ0M7SUFzQnRFO0lBQ0E7SUFDQTtJQXZCOEMsZ0JBQWdCLENBQTRCO0lBQ2xELFVBQVUsQ0FBc0I7SUFFMUUsZ0JBQWdCLENBQWU7SUFFdEIsZ0JBQWdCLEdBQXNCO1FBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakQsV0FBVyxFQUFFLEVBQUU7UUFDZixL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a0JBQXlCO1lBQzNCLGlCQUFlOztZQVhiLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSx1Q0FBcUIsZ0NBQ00sMkNBQ1csZ0NBQ1gsc0JBQ1YsOENBQ3dCO1lBR3ZDLGVBQXFCO1lBRXJCLEFBREEsQUFEQSx1Q0FBcUIsbUNBQ1MsMENBQ087OztpRkRpQzVCLDRCQUE0QjtjQUp4QyxTQUFTOzJCQUNFLHdCQUF3QjsySEFJc0IsZ0JBQWdCO2tCQUF2RSxTQUFTO21CQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNKLFVBQVU7a0JBQTNELFNBQVM7bUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrRkFGckMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE9uSW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFBvRGlzY2xhaW1lckdyb3VwLFxuICBQb0R5bmFtaWNGaWVsZFR5cGUsXG4gIFBvRHluYW1pY0Zvcm1GaWVsZCxcbiAgUG9MYW5ndWFnZVNlcnZpY2UsXG4gIFBvUGFnZUZpbHRlcixcbiAgUG9EaXNjbGFpbWVyR3JvdXBSZW1vdmVBY3Rpb24sXG4gIFBvQ29tYm9PcHRpb24sXG4gIFBvUGFnZUxpc3RDb21wb25lbnRcbn0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsIGdldEJyb3dzZXJMYW5ndWFnZSB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1wYWdlLWN1c3RvbWl6YXRpb24vcG8tcGFnZS1jdXN0b21pemF0aW9uLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb0FkdmFuY2VkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9wby1hZHZhbmNlZC1maWx0ZXIvcG8tYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VhcmNoQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLXNlYXJjaC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljU2VhcmNoT3B0aW9ucyB9IGZyb20gJy4vcG8tcGFnZS1keW5hbWljLXNlYXJjaC1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VEeW5hbWljT3B0aW9uc1NjaGVtYSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hGaWx0ZXJzIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWZpbHRlcnMuaW50ZXJmYWNlJztcblxudHlwZSBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uID0gc3RyaW5nIHwgKCgpID0+IFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zKTtcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9QYWdlRHluYW1pY1NlYXJjaEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2ljXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgU2VhcmNoIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2ljL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1keW5hbWljLXNlYXJjaC1oaXJpbmctcHJvY2Vzc2VzXCIgdGl0bGU9XCJQTyBQYWdlIER5bmFtaWMgU2VhcmNoIC0gSGlyaW5nIHByb2Nlc3Nlc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtaGlyaW5nLXByb2Nlc3Nlcy9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1oaXJpbmctcHJvY2Vzc2VzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWR5bmFtaWMtc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvUGFnZUR5bmFtaWNTZWFyY2hDb21wb25lbnQgZXh0ZW5kcyBQb1BhZ2VEeW5hbWljU2VhcmNoQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChQb0FkdmFuY2VkRmlsdGVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwb0FkdmFuY2VkRmlsdGVyOiBQb0FkdmFuY2VkRmlsdGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFBvUGFnZUxpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHBvUGFnZUxpc3Q6IFBvUGFnZUxpc3RDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBsb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzY2xhaW1lckdyb3VwOiBQb0Rpc2NsYWltZXJHcm91cCA9IHtcbiAgICByZW1vdmU6IHRoaXMub25SZW1vdmVEaXNjbGFpbWVyLmJpbmQodGhpcyksXG4gICAgcmVtb3ZlQWxsOiB0aGlzLm9uUmVtb3ZlQWxsRGlzY2xhaW1lcnMuYmluZCh0aGlzKSxcbiAgICBkaXNjbGFpbWVyczogW10sXG4gICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuZGlzY2xhaW1lckdyb3VwVGl0bGUsXG4gICAgaGlkZVJlbW92ZUFsbDogdGhpcy5oaWRlUmVtb3ZlQWxsRGlzY2xhaW1lclxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlclNldHRpbmdzOiBQb1BhZ2VGaWx0ZXIgPSB7XG4gICAgYWN0aW9uOiB0aGlzLm9uQWN0aW9uLmJpbmQodGhpcyksXG4gICAgYWR2YW5jZWRBY3Rpb246IHRoaXMub25BZHZhbmNlZEFjdGlvbi5iaW5kKHRoaXMpLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLmxpdGVyYWxzLnNlYXJjaFBsYWNlaG9sZGVyLFxuICAgIHdpZHRoOiB0aGlzLnF1aWNrU2VhcmNoV2lkdGhcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZTogUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBkaXNjbGFpbWVyR3JvdXAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2Rpc2NsYWltZXJHcm91cCwge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuZGlzY2xhaW1lckdyb3VwVGl0bGUsXG4gICAgICBoaWRlUmVtb3ZlQWxsOiB0aGlzLmhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyXG4gICAgfSk7XG4gIH1cblxuICBnZXQgZmlsdGVyU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgdGhlcmVBcmVWYWxpZEZpbHRlcnMgPVxuICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJzLnNvbWUoZmlsdGVyID0+IGZpbHRlci52aXNpYmxlID09PSB0cnVlIHx8IGZpbHRlci52aXNpYmxlID09PSB1bmRlZmluZWQpO1xuICAgIHRoaXMuX2ZpbHRlclNldHRpbmdzLmFkdmFuY2VkQWN0aW9uID0gdGhlcmVBcmVWYWxpZEZpbHRlcnMgPyB0aGlzLm9uQWR2YW5jZWRBY3Rpb24uYmluZCh0aGlzKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9maWx0ZXJTZXR0aW5ncywge1xuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGl0ZXJhbHMuc2VhcmNoUGxhY2Vob2xkZXIsXG4gICAgICB3aWR0aDogdGhpcy5xdWlja1NlYXJjaFdpZHRoXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEFkdmFuY2VkRmlsdGVyTGl0ZXJhbHModGhpcy5saXRlcmFscyk7XG4gICAgaWYgKHRoaXMub25Mb2FkKSB7XG4gICAgICB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKHRoaXMub25Mb2FkKTtcbiAgICB9XG4gICAgLy9jb2xvY2EgbyBkaXNjbGFpbWVyIGluaWNpYWwgY2FzbyBlbnZpZSBwLXF1aWNrLXNlYXJjaC12YWx1ZVxuICAgIGlmICh0aGlzLnF1aWNrU2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMub25BY3Rpb24odGhpcy5xdWlja1NlYXJjaFZhbHVlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5sb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZUZpbHRlcnMoZmlsdGVyczogQXJyYXk8UG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnM+KSB7XG4gICAgY29uc3QgZmlsdGVyT2JqZWN0V2l0aFZhbHVlID0gZmlsdGVyc1xuICAgICAgLmZpbHRlcihmaWx0ZXIgPT4gZmlsdGVyLmluaXRWYWx1ZSlcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+ICh7IC4uLnByZXYsIC4uLnsgW2N1cnJlbnQucHJvcGVydHldOiBjdXJyZW50LmluaXRWYWx1ZSB9IH0pLCB7fSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyT2JqZWN0V2l0aFZhbHVlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMub25BZHZhbmNlZFNlYXJjaCh7IGZpbHRlcjogZmlsdGVyT2JqZWN0V2l0aFZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQWN0aW9uKHF1aWNrRmlsdGVyOiBzdHJpbmcsIHF1aWNrU2VhcmNoVmFsdWU/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lclF1aWNrU2VhcmNoVXBkYXRlZCA9IHtcbiAgICAgIHByb3BlcnR5OiAnc2VhcmNoJyxcbiAgICAgIGxhYmVsOiBgJHt0aGlzLmxpdGVyYWxzLnF1aWNrU2VhcmNoTGFiZWx9ICR7cXVpY2tGaWx0ZXJ9YCxcbiAgICAgIHZhbHVlOiBxdWlja0ZpbHRlcixcbiAgICAgIGhpZGVDbG9zZTogdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycy5zb21lKGhpZGVDbG9zZURpc2NsYWltZXIgPT4gaGlkZUNsb3NlRGlzY2xhaW1lciA9PT0gJ3NlYXJjaCcpIHx8IGZhbHNlXG4gICAgfTtcblxuICAgIGNvbnN0IGdldERpc2NsYWltZXJzV2l0aENvbmNhdEZpbHRlcnMgPSAoKSA9PiBbXG4gICAgICAuLi50aGlzLmdldERpc2NsYWltZXJzV2l0aG91dFF1aWNrU2VhcmNoKCksXG4gICAgICBkaXNjbGFpbWVyUXVpY2tTZWFyY2hVcGRhdGVkXG4gICAgXTtcblxuICAgIHRoaXMuX2Rpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IHRoaXMuY29uY2F0RmlsdGVyc1xuICAgICAgPyBnZXREaXNjbGFpbWVyc1dpdGhDb25jYXRGaWx0ZXJzKClcbiAgICAgIDogW2Rpc2NsYWltZXJRdWlja1NlYXJjaFVwZGF0ZWRdO1xuXG4gICAgaWYgKHRoaXMucXVpY2tTZWFyY2gub2JzZXJ2ZXJzICYmIHRoaXMucXVpY2tTZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDAgJiYgIXF1aWNrU2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMucXVpY2tTZWFyY2guZW1pdChxdWlja0ZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMua2VlcEZpbHRlcnMgJiYgIXRoaXMuY29uY2F0RmlsdGVycykge1xuICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goZWxlbWVudCA9PiBkZWxldGUgZWxlbWVudC5pbml0VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25BZHZhbmNlZEFjdGlvbigpIHtcbiAgICB0aGlzLnBvQWR2YW5jZWRGaWx0ZXIub3BlbigpO1xuICB9XG5cbiAgb25BZHZhbmNlZFNlYXJjaChmaWx0ZXJlZEl0ZW1zLCBpc0FkdmFuY2VkU2VhcmNoPykge1xuICAgIGNvbnN0IHsgZmlsdGVyLCBvcHRpb25zU2VydmljZSB9ID0gZmlsdGVyZWRJdGVtcztcblxuICAgIHRoaXMuX2Rpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IHRoaXMuc2V0RGlzY2xhaW1lcnMoZmlsdGVyLCBvcHRpb25zU2VydmljZSk7XG5cbiAgICB0aGlzLnNldEZpbHRlcnMoZmlsdGVyKTtcblxuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2guZW1pdChmaWx0ZXIpO1xuXG4gICAgaWYgKGlzQWR2YW5jZWRTZWFyY2gpIHtcbiAgICAgIHRoaXMucG9QYWdlTGlzdC5jbGVhcklucHV0U2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNjbGFpbWVyc1dpdGhvdXRRdWlja1NlYXJjaCgpIHtcbiAgICBjb25zdCBxdWlja1NlYXJjaFByb3BlcnR5ID0gJ3NlYXJjaCc7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb3BlcnR5ICE9PSBxdWlja1NlYXJjaFByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmlsdGVycyhmaWx0ZXJzKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRmlsdGVycyA9IHRoaXMuY29udmVydFRvRmlsdGVycyhmaWx0ZXJzKTtcblxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgY29tcGF0aWJsZU9iamVjdCA9IGZvcm1hdHRlZEZpbHRlcnMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT09IGVsZW1lbnQucHJvcGVydHkpO1xuXG4gICAgICBpZiAoY29tcGF0aWJsZU9iamVjdCkge1xuICAgICAgICBlbGVtZW50LmluaXRWYWx1ZSA9IGNvbXBhdGlibGVPYmplY3QudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgZWxlbWVudC5pbml0VmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb0ZpbHRlcnMoZmlsdGVycykge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5tYXAoKFtwcm9wZXJ0eSwgdmFsdWVdKSA9PiAoeyBwcm9wZXJ0eSwgdmFsdWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zU2VydmljZURpc2NsYWltZXJMYWJlbCh2YWx1ZTogYW55LCBvcHRpb25zU2VydmljZU9iamVjdHNMaXN0OiBBcnJheTxQb0NvbWJvT3B0aW9uPikge1xuICAgIGNvbnN0IG9wdGlvblNlcnZpY2VNYXRjaCA9IG9wdGlvbnNTZXJ2aWNlT2JqZWN0c0xpc3QuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgICByZXR1cm4gb3B0aW9uU2VydmljZU1hdGNoLmxhYmVsIHx8IG9wdGlvblNlcnZpY2VNYXRjaC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEaXNjbGFpbWVyTGFiZWxWYWx1ZShmaWVsZDogYW55LCBmaWx0ZXJWYWx1ZTogYW55KSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgPyBmaWx0ZXJWYWx1ZSA6IFtmaWx0ZXJWYWx1ZV07XG5cbiAgICBjb25zdCBsYWJlbHMgPSB2YWx1ZXMubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkRmllbGQgPSBmaWVsZC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUgfHwgb3B0aW9uID09PSB2YWx1ZSk7XG5cbiAgICAgIGlmIChmaWx0ZXJlZEZpZWxkKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEZpZWxkLmxhYmVsIHx8IGZpbHRlcmVkRmllbGQudmFsdWUgfHwgZmlsdGVyZWRGaWVsZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYWJlbHMuam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZS5zdWJzdHIoMCwgNCksIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KGRhdGUuc3Vic3RyKDUsIDIpLCAxMCk7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZS5zdWJzdHIoOCwgMiksIDEwKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSkudG9Mb2NhbGVEYXRlU3RyaW5nKGdldEJyb3dzZXJMYW5ndWFnZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0QXJyYXlUb09iamVjdEtleVZhbHVlKGZpbHRlcnM6IEFycmF5PHsgcHJvcGVydHk6IHN0cmluZzsgdmFsdWU/OiBhbnk7IGluaXRWYWx1ZT86IGFueSB9Pik6IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0ge1xuICAgIGNvbnN0IGZvcm1hdHRlZE9iamVjdCA9IGZpbHRlcnMucmVkdWNlKFxuICAgICAgKHJlc3VsdCwgaXRlbSkgPT4gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsgW2l0ZW0ucHJvcGVydHldOiBpdGVtLnZhbHVlIHx8IGl0ZW0uaW5pdFZhbHVlIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgT2JqZWN0LmtleXMoZm9ybWF0dGVkT2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIWZvcm1hdHRlZE9iamVjdFtrZXldKSB7XG4gICAgICAgIGRlbGV0ZSBmb3JtYXR0ZWRPYmplY3Rba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRPYmplY3Q7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlVG9DdXJyZW5jeShmaWVsZDogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xuICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoZmllbGQubG9jYWxlID8gZmllbGQubG9jYWxlIDogbGFuZ3VhZ2UsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMlxuICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkQnlQcm9wZXJ0eShmaWVsZHM6IEFycmF5PFBvRHluYW1pY0Zvcm1GaWVsZD4sIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5maW5kKChmaWVsZDogUG9EeW5hbWljRm9ybUZpZWxkKSA9PiBmaWVsZC5wcm9wZXJ0eSA9PT0gZmllbGROYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyVmFsdWVUb0Rpc2NsYWltZXIoZmllbGQ6IGFueSwgdmFsdWU6IGFueSwgb3B0aW9uc1NlcnZpY2VPYmplY3RzTGlzdD86IEFycmF5PFBvQ29tYm9PcHRpb24+KSB7XG4gICAgaWYgKGZpZWxkLm9wdGlvbnNTZXJ2aWNlICYmIG9wdGlvbnNTZXJ2aWNlT2JqZWN0c0xpc3QpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNTZXJ2aWNlRGlzY2xhaW1lckxhYmVsKHZhbHVlLCBvcHRpb25zU2VydmljZU9iamVjdHNMaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gUG9EeW5hbWljRmllbGRUeXBlLkN1cnJlbmN5ICYmIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRWYWx1ZVRvQ3VycmVuY3koZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gUG9EeW5hbWljRmllbGRUeXBlLkRhdGUpIHtcbiAgICAgIHJldHVybiBmaWVsZC5yYW5nZSA/IHRoaXMuZm9ybWF0RGF0ZSh2YWx1ZS5zdGFydCkgKyAnIC0gJyArIHRoaXMuZm9ybWF0RGF0ZSh2YWx1ZS5lbmQpIDogdGhpcy5mb3JtYXREYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlEaXNjbGFpbWVyTGFiZWxWYWx1ZShmaWVsZCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZW1vdmVEaXNjbGFpbWVyKHJlbW92ZURhdGE6IFBvRGlzY2xhaW1lckdyb3VwUmVtb3ZlQWN0aW9uKSB7XG4gICAgY29uc3QgeyBjdXJyZW50RGlzY2xhaW1lcnMgfSA9IHJlbW92ZURhdGE7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2VzRGlzY2xhaW1lcnMoY3VycmVudERpc2NsYWltZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZXNEaXNjbGFpbWVycyhjdXJyZW50RGlzY2xhaW1lcnM6IGFueSkge1xuICAgIHRoaXMuY2hhbmdlRGlzY2xhaW1lcnMuZW1pdChjdXJyZW50RGlzY2xhaW1lcnMpO1xuICAgIHRoaXMuc2V0RmlsdGVycyh0aGlzLmZvcm1hdEFycmF5VG9PYmplY3RLZXlWYWx1ZShjdXJyZW50RGlzY2xhaW1lcnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZW1vdmVBbGxEaXNjbGFpbWVycygpIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2VzRGlzY2xhaW1lcnMoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNjbGFpbWVycyhmaWx0ZXJzLCBvcHRpb25zU2VydmljZU9iamVjdHM/OiBBcnJheTxQb0NvbWJvT3B0aW9uPikge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gW107XG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGZpbHRlcnMpO1xuXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZEJ5UHJvcGVydHkodGhpcy5maWx0ZXJzLCBwcm9wZXJ0eSk7XG4gICAgICBjb25zdCBsYWJlbCA9IGZpZWxkLmxhYmVsIHx8IGNhcGl0YWxpemVGaXJzdExldHRlcihmaWVsZC5wcm9wZXJ0eSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlcnNbcHJvcGVydHldO1xuICAgICAgY29uc3QgaGlkZUNsb3NlID1cbiAgICAgICAgdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycy5zb21lKGhpZGVDbG9zZURpc2NsYWltZXIgPT4gaGlkZUNsb3NlRGlzY2xhaW1lciA9PT0gcHJvcGVydHkpIHx8IGZhbHNlO1xuXG4gICAgICBjb25zdCB2YWx1ZURpc3BsYXllZE9uVGhlRGlzY2xhaW1lckxhYmVsID0gdGhpcy5nZXRGaWx0ZXJWYWx1ZVRvRGlzY2xhaW1lcihmaWVsZCwgdmFsdWUsIG9wdGlvbnNTZXJ2aWNlT2JqZWN0cyk7XG5cbiAgICAgIGlmICh2YWx1ZURpc3BsYXllZE9uVGhlRGlzY2xhaW1lckxhYmVsICE9PSAnJykge1xuICAgICAgICBkaXNjbGFpbWVycy5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogYCR7bGFiZWx9OiAke3ZhbHVlRGlzcGxheWVkT25UaGVEaXNjbGFpbWVyTGFiZWx9YCxcbiAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBoaWRlQ2xvc2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGlzY2xhaW1lcnM7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zT25Jbml0aWFsaXplKG9uTG9hZDogVXJsT3JQb0N1c3RvbWl6YXRpb25GdW5jdGlvbikge1xuICAgIHRoaXMubG9hZFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0UG9EeW5hbWljUGFnZU9wdGlvbnMob25Mb2FkKS5zdWJzY3JpYmUocmVzcG9uc2VQb09wdGlvbiA9PlxuICAgICAgdGhpcy5wb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZS5jaGFuZ2VPcmlnaW5hbE9wdGlvbnNUb05ld09wdGlvbnModGhpcywgcmVzcG9uc2VQb09wdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb0R5bmFtaWNQYWdlT3B0aW9ucyhvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pOiBPYnNlcnZhYmxlPFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zPiB7XG4gICAgY29uc3Qgb3JpZ2luYWxPcHRpb246IFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBhY3Rpb25zOiB0aGlzLmFjdGlvbnMsXG4gICAgICBicmVhZGNydW1iOiB0aGlzLmJyZWFkY3J1bWIsXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICBrZWVwRmlsdGVyczogdGhpcy5rZWVwRmlsdGVycyxcbiAgICAgIGNvbmNhdEZpbHRlcnM6IHRoaXMuY29uY2F0RmlsdGVycyxcbiAgICAgIGhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyOiB0aGlzLmhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyLFxuICAgICAgaGlkZUNsb3NlRGlzY2xhaW1lcnM6IHRoaXMuaGlkZUNsb3NlRGlzY2xhaW1lcnMsXG4gICAgICBxdWlja1NlYXJjaFdpZHRoOiB0aGlzLnF1aWNrU2VhcmNoV2lkdGhcbiAgICB9O1xuXG4gICAgY29uc3QgcGFnZU9wdGlvblNjaGVtYTogUG9QYWdlRHluYW1pY09wdGlvbnNTY2hlbWE8UG9QYWdlRHluYW1pY1NlYXJjaE9wdGlvbnM+ID0ge1xuICAgICAgc2NoZW1hOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2ZpbHRlcnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAncHJvcGVydHknXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2FjdGlvbnMnLFxuICAgICAgICAgIG1lcmdlOiB0cnVlLFxuICAgICAgICAgIGtleUZvck1lcmdlOiAnbGFiZWwnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2JyZWFkY3J1bWInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ3RpdGxlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdrZWVwRmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnY29uY2F0RmlsdGVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAnaGlkZVJlbW92ZUFsbERpc2NsYWltZXInXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2hpZGVDbG9zZURpc2NsYWltZXJzJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdxdWlja1NlYXJjaFdpZHRoJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnBvUGFnZUN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldEN1c3RvbU9wdGlvbnMob25Mb2FkLCBvcmlnaW5hbE9wdGlvbiwgcGFnZU9wdGlvblNjaGVtYSk7XG4gIH1cbn1cbiIsIjxwby1wYWdlLWxpc3RcbiAgI3BvUGFnZUxpc3RcbiAgW3AtYWN0aW9uc109XCJhY3Rpb25zXCJcbiAgW3AtYnJlYWRjcnVtYl09XCJicmVhZGNydW1iXCJcbiAgW3AtZGlzY2xhaW1lci1ncm91cF09XCJkaXNjbGFpbWVyR3JvdXBcIlxuICBbcC1maWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxuICBbcC10aXRsZV09XCJ0aXRsZVwiXG4gIFtwLXF1aWNrLXNlYXJjaC12YWx1ZV09XCJxdWlja1NlYXJjaFZhbHVlXCJcbj5cbiAgPHBvLWFkdmFuY2VkLWZpbHRlclxuICAgIFtwLWZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW3Ata2VlcC1maWx0ZXJzXT1cImtlZXBGaWx0ZXJzXCJcbiAgICBbcC1saXRlcmFsc109XCJhZHZhbmNlZEZpbHRlckxpdGVyYWxzXCJcbiAgICAocC1zZWFyY2gtZXZlbnQpPVwib25BZHZhbmNlZFNlYXJjaCgkZXZlbnQsIHRydWUpXCJcbiAgPlxuICA8L3BvLWFkdmFuY2VkLWZpbHRlcj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3BvLXBhZ2UtbGlzdD5cbiJdfQ==
|
|
348
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoPageDynamicSearchComponent, { className: "PoPageDynamicSearchComponent", filePath: "lib/components/po-page-dynamic-search/po-page-dynamic-search.component.ts", lineNumber: 54 }); })();
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gvcG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFNVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBRUwsa0JBQWtCLEVBTWxCLG1CQUFtQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFPM0Y7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBS0gsTUFBTSxPQUFPLDRCQUNYLFNBQVEsZ0NBQWdDO0lBd0I5QjtJQUNBO0lBQ0E7SUF2QjhDLGdCQUFnQixDQUE0QjtJQUNsRCxVQUFVLENBQXNCO0lBRTFFLGdCQUFnQixDQUFlO0lBRXRCLGdCQUFnQixHQUFzQjtRQUNyRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUMsU0FBUyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELFdBQVcsRUFBRSxFQUFFO1FBQ2YsS0FB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YixBQURBLEFBREEsQUFEQSxBQURBLEFBREEsdUNBQXFCLGdDQUNNLDJDQUNXLGdDQUNYLHNCQUNWLDhDQUN3QjtZQUd2QyxlQUFxQjtZQUVyQixBQURBLEFBREEsdUNBQXFCLG1DQUNTLDBDQUNPOzs7aUZEeUM1Qiw0QkFBNEI7Y0FKeEMsU0FBUzsyQkFDRSx3QkFBd0I7MkhBT3NCLGdCQUFnQjtrQkFBdkUsU0FBUzttQkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDSixVQUFVO2tCQUEzRCxTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7a0ZBTHJDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUG9EaXNjbGFpbWVyR3JvdXAsXG4gIFBvRHluYW1pY0ZpZWxkVHlwZSxcbiAgUG9EeW5hbWljRm9ybUZpZWxkLFxuICBQb0xhbmd1YWdlU2VydmljZSxcbiAgUG9QYWdlRmlsdGVyLFxuICBQb0Rpc2NsYWltZXJHcm91cFJlbW92ZUFjdGlvbixcbiAgUG9Db21ib09wdGlvbixcbiAgUG9QYWdlTGlzdENvbXBvbmVudFxufSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGNhcGl0YWxpemVGaXJzdExldHRlciwgZ2V0QnJvd3Nlckxhbmd1YWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLXBhZ2UtY3VzdG9taXphdGlvbi9wby1wYWdlLWN1c3RvbWl6YXRpb24uc2VydmljZSc7XG5cbmltcG9ydCB7IFBvQWR2YW5jZWRGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvLWFkdmFuY2VkLWZpbHRlci9wby1hZHZhbmNlZC1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zIH0gZnJvbSAnLi9wby1wYWdlLWR5bmFtaWMtc2VhcmNoLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUR5bmFtaWNPcHRpb25zU2NoZW1hIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgUG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnMgfSBmcm9tICcuL3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gtZmlsdGVycy5pbnRlcmZhY2UnO1xuXG50eXBlIFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gUG9QYWdlRHluYW1pY1NlYXJjaE9wdGlvbnMpO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1BhZ2VEeW5hbWljU2VhcmNoQmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtYmFzaWNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBTZWFyY2ggQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtYmFzaWMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1iYXNpYy9zYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXNcIiB0aXRsZT1cIlBPIFBhZ2UgRHluYW1pYyBTZWFyY2ggLSBIaXJpbmcgcHJvY2Vzc2VzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtaGlyaW5nLXByb2Nlc3Nlcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXMvc2FtcGxlLXBvLXBhZ2UtZHluYW1pYy1zZWFyY2gtaGlyaW5nLXByb2Nlc3Nlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1keW5hbWljLXNlYXJjaC1oaXJpbmctcHJvY2Vzc2VzL3NhbXBsZS1wby1wYWdlLWR5bmFtaWMtc2VhcmNoLWhpcmluZy1wcm9jZXNzZXMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXBhZ2UtZHluYW1pYy1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcGFnZS1keW5hbWljLXNlYXJjaC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUG9QYWdlRHluYW1pY1NlYXJjaENvbXBvbmVudFxuICBleHRlbmRzIFBvUGFnZUR5bmFtaWNTZWFyY2hCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgQFZpZXdDaGlsZChQb0FkdmFuY2VkRmlsdGVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwb0FkdmFuY2VkRmlsdGVyOiBQb0FkdmFuY2VkRmlsdGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFBvUGFnZUxpc3RDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHBvUGFnZUxpc3Q6IFBvUGFnZUxpc3RDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBsb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzY2xhaW1lckdyb3VwOiBQb0Rpc2NsYWltZXJHcm91cCA9IHtcbiAgICByZW1vdmU6IHRoaXMub25SZW1vdmVEaXNjbGFpbWVyLmJpbmQodGhpcyksXG4gICAgcmVtb3ZlQWxsOiB0aGlzLm9uUmVtb3ZlQWxsRGlzY2xhaW1lcnMuYmluZCh0aGlzKSxcbiAgICBkaXNjbGFpbWVyczogW10sXG4gICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuZGlzY2xhaW1lckdyb3VwVGl0bGUsXG4gICAgaGlkZVJlbW92ZUFsbDogdGhpcy5oaWRlUmVtb3ZlQWxsRGlzY2xhaW1lclxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlclNldHRpbmdzOiBQb1BhZ2VGaWx0ZXIgPSB7XG4gICAgYWN0aW9uOiB0aGlzLm9uQWN0aW9uLmJpbmQodGhpcyksXG4gICAgYWR2YW5jZWRBY3Rpb246IHRoaXMub25BZHZhbmNlZEFjdGlvbi5iaW5kKHRoaXMpLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLmxpdGVyYWxzLnNlYXJjaFBsYWNlaG9sZGVyLFxuICAgIHdpZHRoOiB0aGlzLnF1aWNrU2VhcmNoV2lkdGhcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZTogUG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBkaXNjbGFpbWVyR3JvdXAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2Rpc2NsYWltZXJHcm91cCwge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMuZGlzY2xhaW1lckdyb3VwVGl0bGUsXG4gICAgICBoaWRlUmVtb3ZlQWxsOiB0aGlzLmhpZGVSZW1vdmVBbGxEaXNjbGFpbWVyXG4gICAgfSk7XG4gIH1cblxuICBnZXQgZmlsdGVyU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgdGhlcmVBcmVWYWxpZEZpbHRlcnMgPVxuICAgICAgdGhpcy5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5maWx0ZXJzLnNvbWUoZmlsdGVyID0+IGZpbHRlci52aXNpYmxlID09PSB0cnVlIHx8IGZpbHRlci52aXNpYmxlID09PSB1bmRlZmluZWQpO1xuICAgIHRoaXMuX2ZpbHRlclNldHRpbmdzLmFkdmFuY2VkQWN0aW9uID0gdGhlcmVBcmVWYWxpZEZpbHRlcnMgPyB0aGlzLm9uQWR2YW5jZWRBY3Rpb24uYmluZCh0aGlzKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9maWx0ZXJTZXR0aW5ncywge1xuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGl0ZXJhbHMuc2VhcmNoUGxhY2Vob2xkZXIsXG4gICAgICB3aWR0aDogdGhpcy5xdWlja1NlYXJjaFdpZHRoXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEFkdmFuY2VkRmlsdGVyTGl0ZXJhbHModGhpcy5saXRlcmFscyk7XG4gICAgaWYgKHRoaXMub25Mb2FkKSB7XG4gICAgICB0aGlzLmxvYWRPcHRpb25zT25Jbml0aWFsaXplKHRoaXMub25Mb2FkKTtcbiAgICB9XG4gICAgLy9jb2xvY2EgbyBkaXNjbGFpbWVyIGluaWNpYWwgY2FzbyBlbnZpZSBwLXF1aWNrLXNlYXJjaC12YWx1ZVxuICAgIGlmICh0aGlzLnF1aWNrU2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMub25BY3Rpb24odGhpcy5xdWlja1NlYXJjaFZhbHVlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5sb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RyaW5naWZ5KHRoaXMuZmlsdGVycykgIT09IHRoaXMuc3RyaW5naWZ5KHRoaXMucHJldmlvdXNGaWx0ZXJzKSkge1xuICAgICAgdGhpcy5vbkNoYW5nZUZpbHRlcnModGhpcy5maWx0ZXJzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0ZpbHRlcnMgPSBbLi4udGhpcy5maWx0ZXJzXTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgdmlzaWJsZUZpeGVkRmlsdGVycyA9IGNoYW5nZXMudmlzaWJsZUZpeGVkRmlsdGVycztcblxuICAgIGlmIChcbiAgICAgIHZpc2libGVGaXhlZEZpbHRlcnMgJiZcbiAgICAgIHZpc2libGVGaXhlZEZpbHRlcnMuY3VycmVudFZhbHVlICE9PSB2aXNpYmxlRml4ZWRGaWx0ZXJzLnByZXZpb3VzVmFsdWUgJiZcbiAgICAgIHRoaXMuZmlsdGVycy5zb21lKGZpbHRlciA9PiBmaWx0ZXIuZml4ZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlRmlsdGVycyh0aGlzLmZpbHRlcnMpO1xuICAgICAgdGhpcy5wcmV2aW91c0ZpbHRlcnMgPSBbLi4udGhpcy5maWx0ZXJzXTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZUZpbHRlcnMoZmlsdGVyczogQXJyYXk8UG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnM+KSB7XG4gICAgY29uc3QgZmlsdGVyT2JqZWN0V2l0aFZhbHVlID0gZmlsdGVyc1xuICAgICAgLmZpbHRlcihmaWx0ZXIgPT4gZmlsdGVyLmluaXRWYWx1ZSlcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+ICh7IC4uLnByZXYsIC4uLnsgW2N1cnJlbnQucHJvcGVydHldOiBjdXJyZW50LmluaXRWYWx1ZSB9IH0pLCB7fSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyT2JqZWN0V2l0aFZhbHVlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMub25BZHZhbmNlZFNlYXJjaCh7IGZpbHRlcjogZmlsdGVyT2JqZWN0V2l0aFZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQWN0aW9uKHF1aWNrRmlsdGVyOiBzdHJpbmcsIHF1aWNrU2VhcmNoVmFsdWU/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lclF1aWNrU2VhcmNoVXBkYXRlZCA9IHtcbiAgICAgIHByb3BlcnR5OiAnc2VhcmNoJyxcbiAgICAgIGxhYmVsOiBgJHt0aGlzLmxpdGVyYWxzLnF1aWNrU2VhcmNoTGFiZWx9ICR7cXVpY2tGaWx0ZXJ9YCxcbiAgICAgIHZhbHVlOiBxdWlja0ZpbHRlcixcbiAgICAgIGhpZGVDbG9zZTogdGhpcy5oaWRlQ2xvc2VEaXNjbGFpbWVycy5zb21lKGhpZGVDbG9zZURpc2NsYWltZXIgPT4gaGlkZUNsb3NlRGlzY2xhaW1lciA9PT0gJ3NlYXJjaCcpIHx8IGZhbHNlXG4gICAgfTtcblxuICAgIGNvbnN0IGdldERpc2NsYWltZXJzV2l0aENvbmNhdEZpbHRlcnMgPSAoKSA9PiBbXG4gICAgICAuLi50aGlzLmdldERpc2NsYWltZXJzV2l0aG91dFF1aWNrU2VhcmNoKCksXG4gICAgICBkaXNjbGFpbWVyUXVpY2tTZWFyY2hVcGRhdGVkXG4gICAgXTtcblxuICAgIHRoaXMuX2Rpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IHRoaXMuY29uY2F0RmlsdGVyc1xuICAgICAgPyBnZXREaXNjbGFpbWVyc1dpdGhDb25jYXRGaWx0ZXJzKClcbiAgICAgIDogW2Rpc2NsYWltZXJRdWlja1NlYXJjaFVwZGF0ZWRdO1xuXG4gICAgaWYgKHRoaXMucXVpY2tTZWFyY2gub2JzZXJ2ZXJzICYmIHRoaXMucXVpY2tTZWFyY2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDAgJiYgIXF1aWNrU2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMucXVpY2tTZWFyY2guZW1pdChxdWlja0ZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMua2VlcEZpbHRlcnMgJiYgIXRoaXMuY29uY2F0RmlsdGVycykge1xuICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goZWxlbWVudCA9PiBkZWxldGUgZWxlbWVudC5pbml0VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25BZHZhbmNlZEFjdGlvbigpIHtcbiAgICB0aGlzLnBvQWR2YW5jZWRGaWx0ZXIub3BlbigpO1xuICB9XG5cbiAgb25BZHZhbmNlZFNlYXJjaChmaWx0ZXJlZEl0ZW1zLCBpc0FkdmFuY2VkU2VhcmNoPykge1xuICAgIGNvbnN0IHsgZmlsdGVyLCBvcHRpb25zU2VydmljZSB9ID0gZmlsdGVyZWRJdGVtcztcblxuICAgIGNvbnN0IHZpc2libGVGaWx0ZXJzID1cbiAgICAgIHRoaXMudmlzaWJsZUZpeGVkRmlsdGVycyA9PT0gZmFsc2VcbiAgICAgICAgPyB0aGlzLmZpbHRlcnMuZmlsdGVyKGZpbHRlciA9PiAhKCdmaXhlZCcgaW4gZmlsdGVyKSB8fCAhZmlsdGVyLmZpeGVkKVxuICAgICAgICA6IHRoaXMuZmlsdGVycztcblxuICAgIHRoaXMuX2Rpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyA9IHRoaXMuc2V0RGlzY2xhaW1lcnMoZmlsdGVyLCBvcHRpb25zU2VydmljZSwgdmlzaWJsZUZpbHRlcnMpO1xuXG4gICAgdGhpcy5zZXRGaWx0ZXJzKGZpbHRlcik7XG5cbiAgICB0aGlzLmFkdmFuY2VkU2VhcmNoLmVtaXQoZmlsdGVyKTtcblxuICAgIGlmIChpc0FkdmFuY2VkU2VhcmNoKSB7XG4gICAgICB0aGlzLnBvUGFnZUxpc3QuY2xlYXJJbnB1dFNlYXJjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzY2xhaW1lcnNXaXRob3V0UXVpY2tTZWFyY2goKSB7XG4gICAgY29uc3QgcXVpY2tTZWFyY2hQcm9wZXJ0eSA9ICdzZWFyY2gnO1xuICAgIHJldHVybiB0aGlzLl9kaXNjbGFpbWVyR3JvdXAuZGlzY2xhaW1lcnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSAhPT0gcXVpY2tTZWFyY2hQcm9wZXJ0eSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpbHRlcnMoZmlsdGVycykge1xuICAgIGNvbnN0IGZvcm1hdHRlZEZpbHRlcnMgPSB0aGlzLmNvbnZlcnRUb0ZpbHRlcnMoZmlsdGVycyk7XG5cbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGNvbXBhdGlibGVPYmplY3QgPSBmb3JtYXR0ZWRGaWx0ZXJzLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnR5ID09PSBlbGVtZW50LnByb3BlcnR5KTtcblxuICAgICAgaWYgKGNvbXBhdGlibGVPYmplY3QpIHtcbiAgICAgICAgZWxlbWVudC5pbml0VmFsdWUgPSBjb21wYXRpYmxlT2JqZWN0LnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnQuaW5pdFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9GaWx0ZXJzKGZpbHRlcnMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZmlsdGVycykubWFwKChbcHJvcGVydHksIHZhbHVlXSkgPT4gKHsgcHJvcGVydHksIHZhbHVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uc1NlcnZpY2VEaXNjbGFpbWVyTGFiZWwodmFsdWU6IGFueSwgb3B0aW9uc1NlcnZpY2VPYmplY3RzTGlzdDogQXJyYXk8UG9Db21ib09wdGlvbj4pIHtcbiAgICBjb25zdCBvcHRpb25TZXJ2aWNlTWF0Y2ggPSBvcHRpb25zU2VydmljZU9iamVjdHNMaXN0LmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpO1xuXG4gICAgcmV0dXJuIG9wdGlvblNlcnZpY2VNYXRjaC5sYWJlbCB8fCBvcHRpb25TZXJ2aWNlTWF0Y2gudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGlzY2xhaW1lckxhYmVsVmFsdWUoZmllbGQ6IGFueSwgZmlsdGVyVmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpID8gZmlsdGVyVmFsdWUgOiBbZmlsdGVyVmFsdWVdO1xuXG4gICAgY29uc3QgbGFiZWxzID0gdmFsdWVzLm1hcCh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZEZpZWxkID0gZmllbGQub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlIHx8IG9wdGlvbiA9PT0gdmFsdWUpO1xuXG4gICAgICBpZiAoZmlsdGVyZWRGaWVsZCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZC5sYWJlbCB8fCBmaWx0ZXJlZEZpZWxkLnZhbHVlIHx8IGZpbHRlcmVkRmllbGQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGFiZWxzLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGUoZGF0ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KGRhdGUuc3Vic3RyKDAsIDQpLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludChkYXRlLnN1YnN0cig1LCAyKSwgMTApO1xuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KGRhdGUuc3Vic3RyKDgsIDIpLCAxMCk7XG5cbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpLnRvTG9jYWxlRGF0ZVN0cmluZyhnZXRCcm93c2VyTGFuZ3VhZ2UoKSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEFycmF5VG9PYmplY3RLZXlWYWx1ZShmaWx0ZXJzOiBBcnJheTx7IHByb3BlcnR5OiBzdHJpbmc7IHZhbHVlPzogYW55OyBpbml0VmFsdWU/OiBhbnkgfT4pOiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9IHtcbiAgICBjb25zdCBmb3JtYXR0ZWRPYmplY3QgPSBmaWx0ZXJzLnJlZHVjZShcbiAgICAgIChyZXN1bHQsIGl0ZW0pID0+IE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7IFtpdGVtLnByb3BlcnR5XTogaXRlbS52YWx1ZSB8fCBpdGVtLmluaXRWYWx1ZSB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIE9iamVjdC5rZXlzKGZvcm1hdHRlZE9iamVjdCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFmb3JtYXR0ZWRPYmplY3Rba2V5XSkge1xuICAgICAgICBkZWxldGUgZm9ybWF0dGVkT2JqZWN0W2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkT2JqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVRvQ3VycmVuY3koZmllbGQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGZpZWxkLmxvY2FsZSA/IGZpZWxkLmxvY2FsZSA6IGxhbmd1YWdlLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICB9KS5mb3JtYXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZEJ5UHJvcGVydHkoZmllbGRzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+LCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZHMuZmluZCgoZmllbGQ6IFBvRHluYW1pY0Zvcm1GaWVsZCkgPT4gZmllbGQucHJvcGVydHkgPT09IGZpZWxkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlclZhbHVlVG9EaXNjbGFpbWVyKGZpZWxkOiBhbnksIHZhbHVlOiBhbnksIG9wdGlvbnNTZXJ2aWNlT2JqZWN0c0xpc3Q/OiBBcnJheTxQb0NvbWJvT3B0aW9uPikge1xuICAgIGlmIChmaWVsZC5vcHRpb25zU2VydmljZSAmJiBvcHRpb25zU2VydmljZU9iamVjdHNMaXN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zU2VydmljZURpc2NsYWltZXJMYWJlbCh2YWx1ZSwgb3B0aW9uc1NlcnZpY2VPYmplY3RzTGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFBvRHluYW1pY0ZpZWxkVHlwZS5DdXJyZW5jeSAmJiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0VmFsdWVUb0N1cnJlbmN5KGZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09IFBvRHluYW1pY0ZpZWxkVHlwZS5EYXRlKSB7XG4gICAgICByZXR1cm4gZmllbGQucmFuZ2UgPyB0aGlzLmZvcm1hdERhdGUodmFsdWUuc3RhcnQpICsgJyAtICcgKyB0aGlzLmZvcm1hdERhdGUodmFsdWUuZW5kKSA6IHRoaXMuZm9ybWF0RGF0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgdmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcGx5RGlzY2xhaW1lckxhYmVsVmFsdWUoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2VzRGlzY2xhaW1lcnMoY3VycmVudERpc2NsYWltZXJzOiBhbnkpIHtcbiAgICB0aGlzLmNoYW5nZURpc2NsYWltZXJzLmVtaXQoY3VycmVudERpc2NsYWltZXJzKTtcbiAgICB0aGlzLnNldEZpbHRlcnModGhpcy5mb3JtYXRBcnJheVRvT2JqZWN0S2V5VmFsdWUoY3VycmVudERpc2NsYWltZXJzKSk7XG4gIH1cblxuICBwcml2YXRlIG9uUmVtb3ZlQWxsRGlzY2xhaW1lcnMoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnNUb0tlZXAgPSB0aGlzLmdldEZpeGVkRmlsdGVyc0Rpc2NsYWltZXJzKCk7XG4gICAgdGhpcy5lbWl0Q2hhbmdlc0Rpc2NsYWltZXJzKGRpc2NsYWltZXJzVG9LZWVwKTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZW1vdmVEaXNjbGFpbWVyKHJlbW92ZURhdGE6IFBvRGlzY2xhaW1lckdyb3VwUmVtb3ZlQWN0aW9uKSB7XG4gICAgY29uc3QgeyBjdXJyZW50RGlzY2xhaW1lcnMgfSA9IHJlbW92ZURhdGE7XG5cbiAgICBjb25zdCB1cGRhdGVkRGlzY2xhaW1lcnMgPSBbLi4uY3VycmVudERpc2NsYWltZXJzLCAuLi50aGlzLmdldEZpeGVkRmlsdGVyc0Rpc2NsYWltZXJzKGN1cnJlbnREaXNjbGFpbWVycyldO1xuXG4gICAgdGhpcy5lbWl0Q2hhbmdlc0Rpc2NsYWltZXJzKHVwZGF0ZWREaXNjbGFpbWVycyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpeGVkRmlsdGVyc0Rpc2NsYWltZXJzKGN1cnJlbnREaXNjbGFpbWVycz86IEFycmF5PGFueT4pOiBBcnJheTxhbnk+IHtcbiAgICBjb25zdCBmaXhlZEZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKFxuICAgICAgZmlsdGVyID0+XG4gICAgICAgIGZpbHRlci5maXhlZCA9PT0gdHJ1ZSAmJlxuICAgICAgICBmaWx0ZXIuaGFzT3duUHJvcGVydHkoJ2luaXRWYWx1ZScpICYmXG4gICAgICAgIGZpbHRlci5pbml0VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBmaWx0ZXIuaW5pdFZhbHVlICE9PSBudWxsXG4gICAgKTtcblxuICAgIHJldHVybiBmaXhlZEZpbHRlcnNcbiAgICAgIC5tYXAoZmlsdGVyID0+ICh7XG4gICAgICAgIHByb3BlcnR5OiBmaWx0ZXIucHJvcGVydHksXG4gICAgICAgIHZhbHVlOiBmaWx0ZXIuaW5pdFZhbHVlLFxuICAgICAgICBsYWJlbDogYCR7ZmlsdGVyLmxhYmVsfTogJHtmaWx0ZXIuaW5pdFZhbHVlfWAsXG4gICAgICAgIGhpZGVDbG9zZTogdHJ1ZVxuICAgICAgfSkpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICBmaXhlZEZpbHRlciA9PlxuICAgICAgICAgICFjdXJyZW50RGlzY2xhaW1lcnMgfHwgIWN1cnJlbnREaXNjbGFpbWVycy5zb21lKGRpc2NsYWltZXIgPT4gZGlzY2xhaW1lci5wcm9wZXJ0eSA9PT0gZml4ZWRGaWx0ZXIucHJvcGVydHkpXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXNjbGFpbWVycyhcbiAgICBmaWx0ZXJzLFxuICAgIG9wdGlvbnNTZXJ2aWNlT2JqZWN0cz86IEFycmF5PFBvQ29tYm9PcHRpb24+LFxuICAgIHZpc2libGVGaWx0ZXJzPzogQXJyYXk8UG9QYWdlRHluYW1pY1NlYXJjaEZpbHRlcnM+XG4gICkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gW107XG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKGZpbHRlcnMpO1xuICAgIGNvbnN0IHZpc2libGVQcm9wZXJ0aWVzID0gdmlzaWJsZUZpbHRlcnMgPyB2aXNpYmxlRmlsdGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5wcm9wZXJ0eSkgOiBwcm9wZXJ0aWVzO1xuXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgIGlmICh2aXNpYmxlUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkQnlQcm9wZXJ0eSh0aGlzLmZpbHRlcnMsIHByb3BlcnR5KTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBmaWVsZC5sYWJlbCB8fCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZmllbGQucHJvcGVydHkpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlcnNbcHJvcGVydHldO1xuICAgICAgICBjb25zdCBoaWRlQ2xvc2UgPVxuICAgICAgICAgIHRoaXMuaGlkZUNsb3NlRGlzY2xhaW1lcnMuc29tZShoaWRlQ2xvc2VEaXNjbGFpbWVyID0+IGhpZGVDbG9zZURpc2NsYWltZXIgPT09IHByb3BlcnR5KSB8fCBmYWxzZTtcblxuICAgICAgICBjb25zdCB2YWx1ZURpc3BsYXllZE9uVGhlRGlzY2xhaW1lckxhYmVsID0gdGhpcy5nZXRGaWx0ZXJWYWx1ZVRvRGlzY2xhaW1lcihmaWVsZCwgdmFsdWUsIG9wdGlvbnNTZXJ2aWNlT2JqZWN0cyk7XG5cbiAgICAgICAgaWYgKHZhbHVlRGlzcGxheWVkT25UaGVEaXNjbGFpbWVyTGFiZWwgIT09ICcnKSB7XG4gICAgICAgICAgZGlzY2xhaW1lcnMucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogYCR7bGFiZWx9OiAke3ZhbHVlRGlzcGxheWVkT25UaGVEaXNjbGFpbWVyTGFiZWx9YCxcbiAgICAgICAgICAgIHByb3BlcnR5LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBoaWRlQ2xvc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc2NsYWltZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3B0aW9uc09uSW5pdGlhbGl6ZShvbkxvYWQ6IFVybE9yUG9DdXN0b21pemF0aW9uRnVuY3Rpb24pIHtcbiAgICB0aGlzLmxvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmdldFBvRHluYW1pY1BhZ2VPcHRpb25zKG9uTG9hZCkuc3Vic2NyaWJlKHJlc3BvbnNlUG9PcHRpb24gPT5cbiAgICAgIHRoaXMucG9QYWdlQ3VzdG9taXphdGlvblNlcnZpY2UuY2hhbmdlT3JpZ2luYWxPcHRpb25zVG9OZXdPcHRpb25zKHRoaXMsIHJlc3BvbnNlUG9PcHRpb24pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9EeW5hbWljUGFnZU9wdGlvbnMob25Mb2FkOiBVcmxPclBvQ3VzdG9taXphdGlvbkZ1bmN0aW9uKTogT2JzZXJ2YWJsZTxQb1BhZ2VEeW5hbWljU2VhcmNoT3B0aW9ucz4ge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9uOiBQb1BhZ2VEeW5hbWljU2VhcmNoT3B0aW9ucyA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLFxuICAgICAgYnJlYWRjcnVtYjogdGhpcy5icmVhZGNydW1iLFxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAga2VlcEZpbHRlcnM6IHRoaXMua2VlcEZpbHRlcnMsXG4gICAgICBjb25jYXRGaWx0ZXJzOiB0aGlzLmNvbmNhdEZpbHRlcnMsXG4gICAgICBoaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcjogdGhpcy5oaWRlUmVtb3ZlQWxsRGlzY2xhaW1lcixcbiAgICAgIGhpZGVDbG9zZURpc2NsYWltZXJzOiB0aGlzLmhpZGVDbG9zZURpc2NsYWltZXJzLFxuICAgICAgcXVpY2tTZWFyY2hXaWR0aDogdGhpcy5xdWlja1NlYXJjaFdpZHRoXG4gICAgfTtcblxuICAgIGNvbnN0IHBhZ2VPcHRpb25TY2hlbWE6IFBvUGFnZUR5bmFtaWNPcHRpb25zU2NoZW1hPFBvUGFnZUR5bmFtaWNTZWFyY2hPcHRpb25zPiA9IHtcbiAgICAgIHNjaGVtYTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdmaWx0ZXJzJyxcbiAgICAgICAgICBtZXJnZTogdHJ1ZSxcbiAgICAgICAgICBrZXlGb3JNZXJnZTogJ3Byb3BlcnR5J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdhY3Rpb25zJyxcbiAgICAgICAgICBtZXJnZTogdHJ1ZSxcbiAgICAgICAgICBrZXlGb3JNZXJnZTogJ2xhYmVsJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdicmVhZGNydW1iJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICd0aXRsZSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAna2VlcEZpbHRlcnMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2NvbmNhdEZpbHRlcnMnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lUHJvcDogJ2hpZGVSZW1vdmVBbGxEaXNjbGFpbWVyJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZVByb3A6ICdoaWRlQ2xvc2VEaXNjbGFpbWVycydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVQcm9wOiAncXVpY2tTZWFyY2hXaWR0aCdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5wb1BhZ2VDdXN0b21pemF0aW9uU2VydmljZS5nZXRDdXN0b21PcHRpb25zKG9uTG9hZCwgb3JpZ2luYWxPcHRpb24sIHBhZ2VPcHRpb25TY2hlbWEpO1xuICB9XG59XG4iLCI8cG8tcGFnZS1saXN0XG4gICNwb1BhZ2VMaXN0XG4gIFtwLWFjdGlvbnNdPVwiYWN0aW9uc1wiXG4gIFtwLWJyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXG4gIFtwLWRpc2NsYWltZXItZ3JvdXBdPVwiZGlzY2xhaW1lckdyb3VwXCJcbiAgW3AtZmlsdGVyXT1cImZpbHRlclNldHRpbmdzXCJcbiAgW3AtdGl0bGVdPVwidGl0bGVcIlxuICBbcC1xdWljay1zZWFyY2gtdmFsdWVdPVwicXVpY2tTZWFyY2hWYWx1ZVwiXG4+XG4gIDxwby1hZHZhbmNlZC1maWx0ZXJcbiAgICBbcC1maWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgIFtwLWtlZXAtZmlsdGVyc109XCJrZWVwRmlsdGVyc1wiXG4gICAgW3AtbGl0ZXJhbHNdPVwiYWR2YW5jZWRGaWx0ZXJMaXRlcmFsc1wiXG4gICAgKHAtc2VhcmNoLWV2ZW50KT1cIm9uQWR2YW5jZWRTZWFyY2goJGV2ZW50LCB0cnVlKVwiXG4gID5cbiAgPC9wby1hZHZhbmNlZC1maWx0ZXI+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9wby1wYWdlLWxpc3Q+XG4iXX0=
|