@po-ui/ng-components 16.4.1 → 16.6.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.
Files changed (49) hide show
  1. package/esm2022/lib/components/po-field/po-combo/interfaces/po-combo-literals-default.interface.mjs +9 -5
  2. package/esm2022/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.mjs +1 -1
  3. package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +4 -1
  4. package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +90 -41
  5. package/esm2022/lib/components/po-field/po-field.module.mjs +17 -13
  6. package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +4 -4
  7. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +30 -7
  8. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +4 -4
  9. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.mjs +1 -1
  10. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +220 -51
  11. package/esm2022/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +3 -3
  12. package/esm2022/lib/components/po-listbox/po-item-list/po-item-list.component.mjs +2 -2
  13. package/esm2022/lib/components/po-listbox/po-listbox.component.mjs +5 -4
  14. package/esm2022/lib/components/po-table/po-table-base.component.mjs +5 -5
  15. package/esm2022/lib/components/po-tag/index.mjs +2 -1
  16. package/esm2022/lib/components/po-tag/interfaces/po-tag-literals.interface.mjs +2 -0
  17. package/esm2022/lib/components/po-tag/po-tag-base.component.mjs +70 -4
  18. package/esm2022/lib/components/po-tag/po-tag.component.mjs +52 -44
  19. package/esm2022/lib/enums/po-key-code.enum.mjs +5 -1
  20. package/fesm2022/po-ui-ng-components.mjs +801 -574
  21. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  22. package/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.d.ts +2 -0
  23. package/lib/components/po-field/po-combo/po-combo.component.d.ts +8 -5
  24. package/lib/components/po-field/po-field.module.d.ts +44 -44
  25. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +21 -2
  26. package/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.d.ts +2 -0
  27. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +18 -6
  28. package/lib/components/po-table/po-table-base.component.d.ts +2 -2
  29. package/lib/components/po-tag/index.d.ts +1 -0
  30. package/lib/components/po-tag/interfaces/po-tag-literals.interface.d.ts +11 -0
  31. package/lib/components/po-tag/po-tag-base.component.d.ts +50 -2
  32. package/lib/components/po-tag/po-tag.component.d.ts +6 -6
  33. package/lib/enums/po-key-code.enum.d.ts +5 -1
  34. package/package.json +4 -4
  35. package/po-ui-ng-components-16.6.0.tgz +0 -0
  36. package/schematics/ng-add/index.js +1 -1
  37. package/schematics/ng-update/v14/index.js +1 -1
  38. package/schematics/ng-update/v15/index.js +1 -1
  39. package/schematics/ng-update/v16/index.js +1 -1
  40. package/schematics/ng-update/v2/index.js +1 -1
  41. package/schematics/ng-update/v3/index.js +1 -1
  42. package/schematics/ng-update/v4/index.js +1 -1
  43. package/schematics/ng-update/v5/index.js +1 -1
  44. package/schematics/ng-update/v6/index.js +1 -1
  45. package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.mjs +0 -91
  46. package/esm2022/lib/components/po-tag/po-tag.literals.mjs +0 -15
  47. package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +0 -40
  48. package/lib/components/po-tag/po-tag.literals.d.ts +0 -14
  49. package/po-ui-ng-components-16.4.1.tgz +0 -0
@@ -1,11 +1,27 @@
1
1
  import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { PoColorPaletteEnum } from '../../enums/po-color-palette.enum';
3
3
  import { convertToBoolean } from '../../utils/util';
4
+ import { poLocaleDefault } from '../../services/po-language/po-language.constant';
4
5
  import { PoTagOrientation } from './enums/po-tag-orientation.enum';
5
6
  import { PoTagType } from './enums/po-tag-type.enum';
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "./../../services/po-language/po-language.service";
7
9
  const poTagColors = Object.values(PoColorPaletteEnum);
8
10
  const poTagOrientationDefault = PoTagOrientation.Vertical;
11
+ export const PoTagLiteralsDefault = {
12
+ en: {
13
+ remove: 'Clear'
14
+ },
15
+ es: {
16
+ remove: 'Eliminar'
17
+ },
18
+ pt: {
19
+ remove: 'Remover'
20
+ },
21
+ ru: {
22
+ remove: 'удалять'
23
+ }
24
+ };
9
25
  /**
10
26
  * @description
11
27
  *
@@ -81,6 +97,8 @@ export class PoTagBaseComponent {
81
97
  _inverse;
82
98
  _orientation = poTagOrientationDefault;
83
99
  _type;
100
+ _literals;
101
+ language;
84
102
  /**
85
103
  * @optional
86
104
  *
@@ -262,12 +280,57 @@ export class PoTagBaseComponent {
262
280
  get type() {
263
281
  return this._type;
264
282
  }
265
- static ɵfac = function PoTagBaseComponent_Factory(t) { return new (t || PoTagBaseComponent)(); };
266
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTagBaseComponent, inputs: { label: ["p-label", "label"], removable: ["p-removable", "removable", convertToBoolean], disabled: ["p-disabled", "disabled", convertToBoolean], value: ["p-value", "value"], color: ["p-color", "color"], textColor: ["p-text-color", "textColor"], icon: ["p-icon", "icon"], inverse: ["p-inverse", "inverse"], orientation: ["p-orientation", "orientation"], type: ["p-type", "type"] }, outputs: { click: "p-click", remove: "p-close" }, features: [i0.ɵɵInputTransformsFeature] });
283
+ /**
284
+ * @optional
285
+ *
286
+ * @description
287
+ *
288
+ * Objeto com as literais usadas no `po-tag`.
289
+ *
290
+ *
291
+ * Para utilizar, basta passar a literal customizada:
292
+ *
293
+ * ```
294
+ * const customLiterals: PoTagLiterals = {
295
+ * remove: 'Remover itens'
296
+ * };
297
+ * ```
298
+ *
299
+ * E para carregar as literais customizadas, basta apenas passar o objeto para o componente:
300
+ *
301
+ * ```
302
+ * <po-tag
303
+ * [p-literals]="customLiterals">
304
+ * </po-tag>
305
+ * ```
306
+ *
307
+ * > O objeto padrão de literais será traduzido de acordo com o idioma do
308
+ * [`PoI18nService`](/documentation/po-i18n) ou do browser.
309
+ */
310
+ set literals(value) {
311
+ if (value instanceof Object && !(value instanceof Array)) {
312
+ this._literals = {
313
+ ...PoTagLiteralsDefault[poLocaleDefault],
314
+ ...PoTagLiteralsDefault[this.language],
315
+ ...value
316
+ };
317
+ }
318
+ else {
319
+ this._literals = PoTagLiteralsDefault[this.language];
320
+ }
321
+ }
322
+ get literals() {
323
+ return this._literals || PoTagLiteralsDefault[this.language];
324
+ }
325
+ constructor(languageService) {
326
+ this.language = languageService.getShortLanguage();
327
+ }
328
+ static ɵfac = function PoTagBaseComponent_Factory(t) { return new (t || PoTagBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
329
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoTagBaseComponent, inputs: { label: ["p-label", "label"], removable: ["p-removable", "removable", convertToBoolean], disabled: ["p-disabled", "disabled", convertToBoolean], value: ["p-value", "value"], color: ["p-color", "color"], textColor: ["p-text-color", "textColor"], icon: ["p-icon", "icon"], inverse: ["p-inverse", "inverse"], orientation: ["p-orientation", "orientation"], type: ["p-type", "type"], literals: ["p-literals", "literals"] }, outputs: { click: "p-click", remove: "p-close" }, features: [i0.ɵɵInputTransformsFeature] });
267
330
  }
268
331
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTagBaseComponent, [{
269
332
  type: Directive
270
- }], null, { label: [{
333
+ }], function () { return [{ type: i1.PoLanguageService }]; }, { label: [{
271
334
  type: Input,
272
335
  args: ['p-label']
273
336
  }], removable: [{
@@ -303,5 +366,8 @@ export class PoTagBaseComponent {
303
366
  }], type: [{
304
367
  type: Input,
305
368
  args: ['p-type']
369
+ }], literals: [{
370
+ type: Input,
371
+ args: ['p-literals']
306
372
  }] }); })();
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFnLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhZy9wby10YWctYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR3JELE1BQU0sV0FBVyxHQUFTLE1BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM3RCxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztBQUUxRDs7Ozs7Ozs7OztHQVVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7O09BTUc7SUFDZSxLQUFLLENBQVU7SUFFakM7Ozs7Ozs7O09BUUc7SUFDMkQsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUV6Rjs7Ozs7Ozs7O09BU0c7SUFDMEQsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUV2RixvQkFBb0I7SUFDRixLQUFLLENBQVM7SUFFaEM7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNnQixLQUFLLEdBQXNCLElBQUksWUFBWSxFQUFhLENBQUM7SUFFNUU7Ozs7OztPQU1HO0lBQ2dCLE1BQU0sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUV6RCxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxXQUFXLENBQUM7SUFDWixlQUFlLENBQUM7SUFDZixNQUFNLENBQVU7SUFDaEIsVUFBVSxDQUFVO0lBQ3BCLEtBQUssQ0FBd0M7SUFDN0MsUUFBUSxDQUFXO0lBQ25CLFlBQVksR0FBc0IsdUJBQXVCLENBQUM7SUFDMUQsS0FBSyxDQUFhO0lBRTFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EyQkc7SUFDSCxJQUFzQixLQUFLLENBQUMsS0FBYTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1NBQzVGO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTJCRztJQUNILElBQTJCLFNBQVMsQ0FBQyxLQUFhO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUM7U0FDcEc7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQ0c7SUFDSCxJQUFxQixJQUFJLENBQUMsS0FBMkM7UUFDbkUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxJQUF3QixPQUFPLENBQUMsS0FBYztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBNEIsV0FBVyxDQUFDLEtBQXVCO1FBQzdELElBQUksQ0FBQyxZQUFZLEdBQVMsTUFBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztJQUMvRyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxJQUFxQixJQUFJLENBQUMsS0FBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBUyxNQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7NEVBclFVLGtCQUFrQjs2REFBbEIsa0JBQWtCLGlGQW1CYSxnQkFBZ0Isd0NBWWpCLGdCQUFnQjs7dUZBL0I5QyxrQkFBa0I7Y0FEOUIsU0FBUztnQkFTVSxLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFXOEMsU0FBUztrQkFBdEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBWUMsUUFBUTtrQkFBcEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBR3pDLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQWdCRyxLQUFLO2tCQUF2QixNQUFNO21CQUFDLFNBQVM7WUFTRSxNQUFNO2tCQUF4QixNQUFNO21CQUFDLFNBQVM7WUF3Q0ssS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBdUNXLFNBQVM7a0JBQW5DLEtBQUs7bUJBQUMsY0FBYztZQTRDQSxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUE0QlMsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBaUJVLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZTtZQTBCRCxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9Db2xvclBhbGV0dGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvcG8tY29sb3ItcGFsZXR0ZS5lbnVtJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9UYWdPcmllbnRhdGlvbiB9IGZyb20gJy4vZW51bXMvcG8tdGFnLW9yaWVudGF0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWdUeXBlIH0gZnJvbSAnLi9lbnVtcy9wby10YWctdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvVGFnSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWctaXRlbS5pbnRlcmZhY2UnO1xuXG5jb25zdCBwb1RhZ0NvbG9ycyA9ICg8YW55Pk9iamVjdCkudmFsdWVzKFBvQ29sb3JQYWxldHRlRW51bSk7XG5jb25zdCBwb1RhZ09yaWVudGF0aW9uRGVmYXVsdCA9IFBvVGFnT3JpZW50YXRpb24uVmVydGljYWw7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIHBlcm1pdGUgZXhpYmlyIHVtIHZhbG9yIGVtIGZvcm1hIGRlIHVtIG1hcmNhZG9yIGNvbG9yaWRvLCBzZW5kbyBwb3Nzw612ZWwgZGVmaW5pciB1bWEgbGVnZW5kYSBlIHJlYWxpemFyIGN1c3RvbWl6YcOnw7Vlc1xuICogbmEgY29yLCBpY29ub2dyYWZpYSBlIHRpcG8uXG4gKlxuICogQWzDqW0gZGlzc28sIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBhw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSB0YW50byBhbyAqY2xpY2sqIHF1YW50byBhdHJhdsOpcyBkYXMgdGVjbGFzICplbnRlci9zcGFjZSogZW5xdWFudG8gbmF2ZWdhXG4gKiB1dGlsaXphbmRvIGEgdGVjbGEgKnRhYiouXG4gKlxuICogU2V1IHVzbyDDqSByZWNvbWVuZGFkbyBwYXJhIGluZm9ybWHDp8O1ZXMgcXVlIG5lY2Vzc2l0ZW0gZGUgZGVzdGFxdWUgZW0gZm9ybWEgZGUgbWFyY2HDp8Ojby5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUG9UYWdCYXNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBsZWdlbmRhIHF1ZSBzZXLDoSBleGliaWRhIGFjaW1hIG91IGFvIGxhZG8gZGEgKnRhZyosIGRlIGFjb3JkbyBjb20gYSBgcC1vcmllbnRhdGlvbmAuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBhIG9ww6fDo28gZGUgcmVtb3ZlciBhIHRhZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtcmVtb3ZhYmxlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHJlbW92YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlc2FiaWxpdGEgbyBgcG8tdGFnYCBlIG7Do28gcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBpbnRlcmFqYSBjb20gbyBtZXNtby5cbiAgICogPiBBIHByb3ByaWVkYWRlIGBwLWRpc2FibGVkYCBzb21lbnRlIHRlcsOhIGVmZWl0byBjYXNvIGEgcHJvcHJpZWRhZGUgYHAtcmVtb3ZhYmxlYCBlc3RlamEgZGVmaW5pZGEgY29tbyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1kaXNhYmxlZCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUZXh0byBkYSB0YWcuICovXG4gIEBJbnB1dCgncC12YWx1ZScpIHZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIDE2LngueFxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCAxNi54LngqKi5cbiAgICpcbiAgICogPiBQb3IgcmVncmFzIGRlIGFjZXNzaWJpbGlkYWRlIGEgdGFnIG7Do28gdGVyw6EgbWFpcyBldmVudG8gZGUgY2xpY2suIEluZGljYW1vcyBvIHVzbyBkbyBgUG8tYnV0dG9uYCBvdSBgUG8tbGlua2BcbiAgICogY2FzbyBkZXNlamUgZXNzZSBjb21wb3J0YW1lbnRvLlxuICAgKlxuICAgKiBBw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBhbyBjbGljYXIgc29icmUgbyBgcG8tdGFnYCBlIHF1ZSByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBjb250ZW5kbyBvIHNldSB2YWxvciBlIHRpcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNsaWNrJykgY2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1RhZ0l0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQcOnw6NvIHF1ZSBzZXJhIGV4ZWN1dGFkYSBxdWFuZG8gY2xpY2FyIHNvYnJlIG8gw61jb25lIGRlIHJlbW92ZXIgbm8gYHBvLXRhZ2BcbiAgICovXG4gIEBPdXRwdXQoJ3AtY2xvc2UnKSByZW1vdmU6IEV2ZW50RW1pdHRlcjxudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVsbD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcG9UYWdPcmllbnRhdGlvbiA9IFBvVGFnT3JpZW50YXRpb247XG4gIHB1YmxpYyBjdXN0b21Db2xvcjtcbiAgcHVibGljIGN1c3RvbVRleHRDb2xvcjtcbiAgcHJpdmF0ZSBfY29sb3I/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3RleHRDb2xvcj86IHN0cmluZztcbiAgcHJpdmF0ZSBfaWNvbj86IGJvb2xlYW4gfCBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgcHJpdmF0ZSBfaW52ZXJzZT86IGJvb2xlYW47XG4gIHByaXZhdGUgX29yaWVudGF0aW9uPzogUG9UYWdPcmllbnRhdGlvbiA9IHBvVGFnT3JpZW50YXRpb25EZWZhdWx0O1xuICBwcml2YXRlIF90eXBlPzogUG9UYWdUeXBlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERldGVybWluYSBhIGNvciBkYSB0YWcuIEFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgYXMgY29yZXMgc8OjbzpcbiAgICogLSBIZXhhZGV4aW1hbCwgcG9yIGV4ZW1wbG8gYCNjNjQ4NDBgO1xuICAgKiAtIFJHQiwgY29tbyBgcmdiKDAsIDAsIDE2NSlgO1xuICAgKiAtIE8gbm9tZSBkYSBjb3IsIHBvciBleGVtcGxvIGBibHVlYDtcbiAgICogLSBVc2FuZG8gdW1hIGRhcyBjb3JlcyBkbyB0ZW1hIGRvIFBPOlxuICAgKiBWYWxvcmVzIHbDoWxpZG9zOlxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMVwiPjwvc3Bhbj4gYGNvbG9yLTAxYFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMlwiPjwvc3Bhbj4gYGNvbG9yLTAyYFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wM1wiPjwvc3Bhbj4gYGNvbG9yLTAzYFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNFwiPjwvc3Bhbj4gYGNvbG9yLTA0YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNVwiPjwvc3Bhbj4gYGNvbG9yLTA1YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNlwiPjwvc3Bhbj4gYGNvbG9yLTA2YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wN1wiPjwvc3Bhbj4gYGNvbG9yLTA3YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOFwiPjwvc3Bhbj4gYGNvbG9yLTA4YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOVwiPjwvc3Bhbj4gYGNvbG9yLTA5YFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMFwiPjwvc3Bhbj4gYGNvbG9yLTEwYFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMVwiPjwvc3Bhbj4gYGNvbG9yLTExYFxuICAgKiAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMlwiPjwvc3Bhbj4gYGNvbG9yLTEyYFxuICAgKlxuICAgKiAtIFBhcmEgdW1hIG1lbGhvciBhY2Vzc2liaWxpZGFkZSBubyB1c28gZG8gY29tcG9uZW50ZSDDqSByZWNvbWVuZMOhdmVsIHV0aWxpemFyIGNvcmVzIGNvbSB1bSBtZWxob3IgY29udHJhc3RlIGVtIHJlbGHDp8OjbyBhbyBiYWNrZ3JvdW5kLlxuICAgKlxuICAgKiA+ICoqQXRlbsOnw6NvOioqIEEgcHJvcHJpZWRhZGUgYHAtdHlwZWAgc29icmVww7VlIGVzdGEgZGVmaW5pw6fDo28uXG4gICAqL1xuICBASW5wdXQoJ3AtY29sb3InKSBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbG9yID0gcG9UYWdDb2xvcnMuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX2NvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIENTUy5zdXBwb3J0cygnY29sb3InLCB2YWx1ZSkgPyAodGhpcy5jdXN0b21Db2xvciA9IHZhbHVlKSA6ICh0aGlzLmN1c3RvbUNvbG9yID0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXRlcm1pbmEgYSBjb3IgZG8gdGV4dG8gZGEgdGFnLiBBcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIGFzIGNvcmVzIHPDo286XG4gICAqIC0gSGV4YWRleGltYWwsIHBvciBleGVtcGxvIGAjYzY0ODQwYDtcbiAgICogLSBSR0IsIGNvbW8gYHJnYigwLCAwLCAxNjUpYDtcbiAgICogLSBPIG5vbWUgZGEgY29yLCBwb3IgZXhlbXBsbyBgYmx1ZWA7XG4gICAqIC0gVXNhbmRvIHVtYSBkYXMgY29yZXMgZG8gdGVtYSBkbyBQTzpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDJcIj48L3NwYW4+IGBjb2xvci0wMmBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDNcIj48L3NwYW4+IGBjb2xvci0wM2BcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDVcIj48L3NwYW4+IGBjb2xvci0wNWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDZcIj48L3NwYW4+IGBjb2xvci0wNmBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDhcIj48L3NwYW4+IGBjb2xvci0wOGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDlcIj48L3NwYW4+IGBjb2xvci0wOWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTFcIj48L3NwYW4+IGBjb2xvci0xMWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTJcIj48L3NwYW4+IGBjb2xvci0xMmBcbiAgICpcbiAgICogLSBQYXJhIHVtYSBtZWxob3IgYWNlc3NpYmlsaWRhZGUgbm8gdXNvIGRvIGNvbXBvbmVudGUgw6kgcmVjb21lbmTDoXZlbCB1dGlsaXphciBjb3JlcyBjb20gdW0gbWVsaG9yIGNvbnRyYXN0ZSBlbSByZWxhw6fDo28gYW8gYmFja2dyb3VuZC5cbiAgICpcbiAgICogPiAqKkF0ZW7Dp8OjbzoqKiBBIHByb3ByaWVkYWRlIGBwLXR5cGVgIHNvYnJlcMO1ZSBlc3RhIGRlZmluacOnw6NvLlxuICAgKi9cbiAgQElucHV0KCdwLXRleHQtY29sb3InKSBzZXQgdGV4dENvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZXh0Q29sb3IgPSBwb1RhZ0NvbG9ycy5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fdGV4dENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIENTUy5zdXBwb3J0cygnY29sb3InLCB2YWx1ZSkgPyAodGhpcy5jdXN0b21UZXh0Q29sb3IgPSB2YWx1ZSkgOiAodGhpcy5jdXN0b21UZXh0Q29sb3IgPSB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0ZXh0Q29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dENvbG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG91IGF0aXZhIHVtIMOtY29uZSBxdWUgc2Vyw6EgZXhpYmlkbyBhbyBsYWRvIGRvIHZhbG9yIGRhICp0YWcqLlxuICAgKlxuICAgKiBRdWFuZG8gYHAtdHlwZWAgZXN0aXZlciBkZWZpbmlkYSwgYmFzdGEgaW5mb3JtYXIgdW0gdmFsb3IgaWd1YWwgYSBgdHJ1ZWAgcGFyYSBxdWUgbyDDrWNvbmUgc2VqYSBleGliaWRvIGNvbmZvcm1lIGRlc2NyacOnw7VlcyBhYmFpeG86XG4gICAqIC0gPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tb2tcIj48L3NwYW4+IC0gYHN1Y2Nlc3NgXG4gICAqIC0gPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24td2FybmluZ1wiPjwvc3Bhbj4gLSBgd2FybmluZ2BcbiAgICogLSA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1jbG9zZVwiPjwvc3Bhbj4gLSBgZGFuZ2VyYFxuICAgKiAtIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWluZm9cIj48L3NwYW4+IC0gYGluZm9gXG4gICAqXG4gICAqIFRhbWLDqW0gw4kgcG9zc8OtdmVsIHVzYXIgcXVhbHF1ZXIgdW0gZG9zIMOtY29uZXMgZGEgW0JpYmxpb3RlY2EgZGUgw61jb25lc10oL2d1aWRlcy9pY29ucykuIGNvbmZvcm1lIGV4ZW1wbG8gYWJhaXhvOlxuICAgKiBgYGBcbiAgICogPHBvLXRhZyBwLWljb249XCJwby1pY29uLXVzZXJcIiBwLXZhbHVlPVwiUE8gVGFnXCI+PC9wby10YWc+XG4gICAqIGBgYFxuICAgKiBjb21vIHRhbWLDqW0gdXRpbGl6YXIgb3V0cmFzIGZvbnRlcyBkZSDDrWNvbmVzLCBwb3IgZXhlbXBsbyBhIGJpYmxpb3RlY2EgKkZvbnQgQXdlc29tZSosIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogPHBvLXRhZyBwLWljb249XCJmYSBmYS1wb2RjYXN0XCIgcC12YWx1ZT1cIlBPIFRhZ1wiPjwvcG8tYnV0dG9uPlxuICAgKiBgYGBcbiAgICogT3V0cmEgb3DDp8OjbyBzZXJpYSBhIGN1c3RvbWl6YcOnw6NvIGRvIMOtY29uZSBhdHJhdsOpcyBkbyBgVGVtcGxhdGVSZWZgLCBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby10YWcgW3AtaWNvbl09XCJ0ZW1wbGF0ZVwiIHAtdmFsdWU9XCJUYWcgdGVtcGxhdGUgaW9uaWNcIj48L3BvLWJ1dHRvbj5cbiAgICpcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICogIDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogaW5oZXJpdFwiIG5hbWU9XCJoZWFydFwiPjwvaW9uLWljb24+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqIGBgYFxuICAgKiA+IFBhcmEgbyDDrWNvbmUgZW5xdWFkcmFyIGNvcnJldGFtZW50ZSwgZGV2ZS1zZSB1dGlsaXphciBgZm9udC1zaXplOiBpbmhlcml0YCBjYXNvIG8gw61jb25lIHV0aWxpemFkbyBuw6NvIGFwbGlxdWUtby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWljb24nKSBzZXQgaWNvbih2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+KSB7XG4gICAgaWYgKHRoaXMudHlwZSkge1xuICAgICAgdGhpcy5faWNvbiA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pY29uID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGljb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgMTYueC54XG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogPiBQb3IgcmVncmFzIGRlIGFjZXNzaWJpbGlkYWRlIGUgdXNhYmlsaWRhZGUgYSB0YWcgbsOjbyB0ZXLDoSBhIGludmVyc8OjbyBkZSBjb3JlcyBubyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBBdGl2YSBhIGludmVyc8OjbyBkZSBjb3JlcyBjb25maWd1cmFkYXMgbm8gY29tcG9uZW50ZSwgcG9zc2liaWxpdGFuZG8gdW1hIHZpc3VhbGl6YcOnw6NvIGRlIHN0YXR1cyBhdGl2byBlIGluYXRpdm8uXG4gICAqXG4gICAqID4gQSBjb3IgZG8gdGV4dG8sIGRvIMOtY29uZSBlIGRhIGJvcmRhIGZpY2FtIGNvbSBhIGNvciB1dGlsaXphZGEgbmEgcHJvcHJpZWRhZGUgYHAtY29sb3JgIG91IGEgY29yIGNvcnJlc3BvbmRlbnRlIGFvIGBwLXR5cGVgLFxuICAgKiBlIGEgY29yIGRvIGZ1bmRvIGZpY2EgYnJhbmNhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW52ZXJzZScpIHNldCBpbnZlcnNlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW52ZXJzZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGludmVyc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ludmVyc2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyAqbGF5b3V0KiBkZSBleGliacOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmVydGljYWxgXG4gICAqL1xuICBASW5wdXQoJ3Atb3JpZW50YXRpb24nKSBzZXQgb3JpZW50YXRpb24odmFsdWU6IFBvVGFnT3JpZW50YXRpb24pIHtcbiAgICB0aGlzLl9vcmllbnRhdGlvbiA9ICg8YW55Pk9iamVjdCkudmFsdWVzKFBvVGFnT3JpZW50YXRpb24pLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogcG9UYWdPcmllbnRhdGlvbkRlZmF1bHQ7XG4gIH1cblxuICBnZXQgb3JpZW50YXRpb24oKTogUG9UYWdPcmllbnRhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWVudGF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gdGlwbyBkYSAqdGFnKi5cbiAgICpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gYHN1Y2Nlc3NgOiBjb3IgdmVyZGUgdXRpbGl6YWRhIHBhcmEgc2ltYm9saXphciBzdWNlc3NvIG91IMOqeGl0by5cbiAgICogIC0gYHdhcm5pbmdgOiBjb3IgYW1hcmVsYSBxdWUgcmVwcmVzZW50YSBhdmlzbyBvdSBhZHZlcnTDqm5jaWEuXG4gICAqICAtIGBkYW5nZXJgOiBjb3IgdmVybWVsaGEgcGFyYSBlcnJvIG91IGF2aXNvIGNyw610aWNvLlxuICAgKiAgLSBgaW5mb2A6IGNvciBhenVsIGNsYXJvIHF1ZSBjYXJhY3Rlcml6YSBjb250ZcO6ZG8gaW5mb3JtYXRpdm8uXG4gICAqICAtIGBuZXV0cmFsYDogY29yIGNpbnphIGNsYXJvIHBhcmEgdXNvIGdlcmFsLlxuICAgKlxuICAgKiA+IFF1YW5kbyBlc3RhIHByb3ByaWVkYWRlIGZvciBkZWZpbmlkYSwgaXLDoSBzb2JyZXBvciBhIGRlZmluacOnw6NvIGRlIGBwLWNvbG9yYCBlIGBwLWljb25gIHNvbWVudGUgc2Vyw6EgZXhpYmlkbyBjYXNvIHNlamEgYHRydWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgaW5mb2BcbiAgICovXG4gIEBJbnB1dCgncC10eXBlJykgc2V0IHR5cGUodmFsdWU6IFBvVGFnVHlwZSkge1xuICAgIGlmICghdGhpcy5yZW1vdmFibGUpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSAoPGFueT5PYmplY3QpLnZhbHVlcyhQb1RhZ1R5cGUpLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0eXBlKCk6IFBvVGFnVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cbn1cbiJdfQ==
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFnLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhZy9wby10YWctYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFJckQsTUFBTSxXQUFXLEdBQVMsTUFBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdELE1BQU0sdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLEVBQUUsRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO0tBQ2hCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7S0FDbkI7SUFDRCxFQUFFLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztLQUNsQjtJQUNELEVBQUUsRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO0tBQ2xCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOzs7Ozs7T0FNRztJQUNlLEtBQUssQ0FBVTtJQUVqQzs7Ozs7Ozs7T0FRRztJQUMyRCxTQUFTLEdBQVksS0FBSyxDQUFD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QWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7NEVBdFRVLGtCQUFrQjs2REFBbEIsa0JBQWtCLGlGQW1CYSxnQkFBZ0Isd0NBWWpCLGdCQUFnQjs7dUZBL0I5QyxrQkFBa0I7Y0FEOUIsU0FBUztvRUFTVSxLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFXOEMsU0FBUztrQkFBdEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBWUMsUUFBUTtrQkFBcEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBR3pDLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQWdCRyxLQUFLO2tCQUF2QixNQUFNO21CQUFDLFNBQVM7WUFTRSxNQUFNO2tCQUF4QixNQUFNO21CQUFDLFNBQVM7WUEwQ0ssS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBdUNXLFNBQVM7a0JBQW5DLEtBQUs7bUJBQUMsY0FBYztZQTRDQSxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUE0QlMsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBaUJVLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZTtZQTBCRCxJQUFJO2tCQUF4QixLQUFLO21CQUFDLFFBQVE7WUFxQ1UsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvQ29sb3JQYWxldHRlRW51bSB9IGZyb20gJy4uLy4uL2VudW1zL3BvLWNvbG9yLXBhbGV0dGUuZW51bSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvVGFnT3JpZW50YXRpb24gfSBmcm9tICcuL2VudW1zL3BvLXRhZy1vcmllbnRhdGlvbi5lbnVtJztcbmltcG9ydCB7IFBvVGFnVHlwZSB9IGZyb20gJy4vZW51bXMvcG8tdGFnLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQb1RhZ0l0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFnLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFnTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFnLWxpdGVyYWxzLmludGVyZmFjZSc7XG5cbmNvbnN0IHBvVGFnQ29sb3JzID0gKDxhbnk+T2JqZWN0KS52YWx1ZXMoUG9Db2xvclBhbGV0dGVFbnVtKTtcbmNvbnN0IHBvVGFnT3JpZW50YXRpb25EZWZhdWx0ID0gUG9UYWdPcmllbnRhdGlvbi5WZXJ0aWNhbDtcblxuZXhwb3J0IGNvbnN0IFBvVGFnTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjoge1xuICAgIHJlbW92ZTogJ0NsZWFyJ1xuICB9LFxuICBlczoge1xuICAgIHJlbW92ZTogJ0VsaW1pbmFyJ1xuICB9LFxuICBwdDoge1xuICAgIHJlbW92ZTogJ1JlbW92ZXInXG4gIH0sXG4gIHJ1OiB7XG4gICAgcmVtb3ZlOiAn0YPQtNCw0LvRj9GC0YwnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIHBlcm1pdGUgZXhpYmlyIHVtIHZhbG9yIGVtIGZvcm1hIGRlIHVtIG1hcmNhZG9yIGNvbG9yaWRvLCBzZW5kbyBwb3Nzw612ZWwgZGVmaW5pciB1bWEgbGVnZW5kYSBlIHJlYWxpemFyIGN1c3RvbWl6YcOnw7Vlc1xuICogbmEgY29yLCBpY29ub2dyYWZpYSBlIHRpcG8uXG4gKlxuICogQWzDqW0gZGlzc28sIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBhw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSB0YW50byBhbyAqY2xpY2sqIHF1YW50byBhdHJhdsOpcyBkYXMgdGVjbGFzICplbnRlci9zcGFjZSogZW5xdWFudG8gbmF2ZWdhXG4gKiB1dGlsaXphbmRvIGEgdGVjbGEgKnRhYiouXG4gKlxuICogU2V1IHVzbyDDqSByZWNvbWVuZGFkbyBwYXJhIGluZm9ybWHDp8O1ZXMgcXVlIG5lY2Vzc2l0ZW0gZGUgZGVzdGFxdWUgZW0gZm9ybWEgZGUgbWFyY2HDp8Ojby5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUG9UYWdCYXNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHVtYSBsZWdlbmRhIHF1ZSBzZXLDoSBleGliaWRhIGFjaW1hIG91IGFvIGxhZG8gZGEgKnRhZyosIGRlIGFjb3JkbyBjb20gYSBgcC1vcmllbnRhdGlvbmAuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBhIG9ww6fDo28gZGUgcmVtb3ZlciBhIHRhZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtcmVtb3ZhYmxlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHJlbW92YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlc2FiaWxpdGEgbyBgcG8tdGFnYCBlIG7Do28gcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBpbnRlcmFqYSBjb20gbyBtZXNtby5cbiAgICogPiBBIHByb3ByaWVkYWRlIGBwLWRpc2FibGVkYCBzb21lbnRlIHRlcsOhIGVmZWl0byBjYXNvIGEgcHJvcHJpZWRhZGUgYHAtcmVtb3ZhYmxlYCBlc3RlamEgZGVmaW5pZGEgY29tbyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1kaXNhYmxlZCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUZXh0byBkYSB0YWcuICovXG4gIEBJbnB1dCgncC12YWx1ZScpIHZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIDE2LngueFxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCAxNi54LngqKi5cbiAgICpcbiAgICogPiBQb3IgcmVncmFzIGRlIGFjZXNzaWJpbGlkYWRlIGEgdGFnIG7Do28gdGVyw6EgbWFpcyBldmVudG8gZGUgY2xpY2suIEluZGljYW1vcyBvIHVzbyBkbyBgUG8tYnV0dG9uYCBvdSBgUG8tbGlua2BcbiAgICogY2FzbyBkZXNlamUgZXNzZSBjb21wb3J0YW1lbnRvLlxuICAgKlxuICAgKiBBw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBhbyBjbGljYXIgc29icmUgbyBgcG8tdGFnYCBlIHF1ZSByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBjb250ZW5kbyBvIHNldSB2YWxvciBlIHRpcG8uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNsaWNrJykgY2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb1RhZ0l0ZW0+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQcOnw6NvIHF1ZSBzZXJhIGV4ZWN1dGFkYSBxdWFuZG8gY2xpY2FyIHNvYnJlIG8gw61jb25lIGRlIHJlbW92ZXIgbm8gYHBvLXRhZ2BcbiAgICovXG4gIEBPdXRwdXQoJ3AtY2xvc2UnKSByZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBvVGFnT3JpZW50YXRpb24gPSBQb1RhZ09yaWVudGF0aW9uO1xuICBwdWJsaWMgY3VzdG9tQ29sb3I7XG4gIHB1YmxpYyBjdXN0b21UZXh0Q29sb3I7XG4gIHByaXZhdGUgX2NvbG9yPzogc3RyaW5nO1xuICBwcml2YXRlIF90ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2ljb24/OiBib29sZWFuIHwgc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIHByaXZhdGUgX2ludmVyc2U/OiBib29sZWFuO1xuICBwcml2YXRlIF9vcmllbnRhdGlvbj86IFBvVGFnT3JpZW50YXRpb24gPSBwb1RhZ09yaWVudGF0aW9uRGVmYXVsdDtcbiAgcHJpdmF0ZSBfdHlwZT86IFBvVGFnVHlwZTtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvVGFnTGl0ZXJhbHM7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZXRlcm1pbmEgYSBjb3IgZGEgdGFnLiBBcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIGFzIGNvcmVzIHPDo286XG4gICAqIC0gSGV4YWRleGltYWwsIHBvciBleGVtcGxvIGAjYzY0ODQwYDtcbiAgICogLSBSR0IsIGNvbW8gYHJnYigwLCAwLCAxNjUpYDtcbiAgICogLSBPIG5vbWUgZGEgY29yLCBwb3IgZXhlbXBsbyBgYmx1ZWA7XG4gICAqIC0gVXNhbmRvIHVtYSBkYXMgY29yZXMgZG8gdGVtYSBkbyBQTzpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDJcIj48L3NwYW4+IGBjb2xvci0wMmBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDNcIj48L3NwYW4+IGBjb2xvci0wM2BcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDVcIj48L3NwYW4+IGBjb2xvci0wNWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDZcIj48L3NwYW4+IGBjb2xvci0wNmBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDhcIj48L3NwYW4+IGBjb2xvci0wOGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDlcIj48L3NwYW4+IGBjb2xvci0wOWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTFcIj48L3NwYW4+IGBjb2xvci0xMWBcbiAgICogIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTJcIj48L3NwYW4+IGBjb2xvci0xMmBcbiAgICpcbiAgICogLSBQYXJhIHVtYSBtZWxob3IgYWNlc3NpYmlsaWRhZGUgbm8gdXNvIGRvIGNvbXBvbmVudGUgw6kgcmVjb21lbmTDoXZlbCB1dGlsaXphciBjb3JlcyBjb20gdW0gbWVsaG9yIGNvbnRyYXN0ZSBlbSByZWxhw6fDo28gYW8gYmFja2dyb3VuZC5cbiAgICpcbiAgICogPiAqKkF0ZW7Dp8OjbzoqKiBBIHByb3ByaWVkYWRlIGBwLXR5cGVgIHNvYnJlcMO1ZSBlc3RhIGRlZmluacOnw6NvLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbG9yJykgc2V0IGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb2xvciA9IHBvVGFnQ29sb3JzLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl9jb2xvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDU1Muc3VwcG9ydHMoJ2NvbG9yJywgdmFsdWUpID8gKHRoaXMuY3VzdG9tQ29sb3IgPSB2YWx1ZSkgOiAodGhpcy5jdXN0b21Db2xvciA9IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV0ZXJtaW5hIGEgY29yIGRvIHRleHRvIGRhIHRhZy4gQXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBhcyBjb3JlcyBzw6NvOlxuICAgKiAtIEhleGFkZXhpbWFsLCBwb3IgZXhlbXBsbyBgI2M2NDg0MGA7XG4gICAqIC0gUkdCLCBjb21vIGByZ2IoMCwgMCwgMTY1KWA7XG4gICAqIC0gTyBub21lIGRhIGNvciwgcG9yIGV4ZW1wbG8gYGJsdWVgO1xuICAgKiAtIFVzYW5kbyB1bWEgZGFzIGNvcmVzIGRvIHRlbWEgZG8gUE86XG4gICAqIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAxXCI+PC9zcGFuPiBgY29sb3ItMDFgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAyXCI+PC9zcGFuPiBgY29sb3ItMDJgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAzXCI+PC9zcGFuPiBgY29sb3ItMDNgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA0XCI+PC9zcGFuPiBgY29sb3ItMDRgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA1XCI+PC9zcGFuPiBgY29sb3ItMDVgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA2XCI+PC9zcGFuPiBgY29sb3ItMDZgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA3XCI+PC9zcGFuPiBgY29sb3ItMDdgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA4XCI+PC9zcGFuPiBgY29sb3ItMDhgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA5XCI+PC9zcGFuPiBgY29sb3ItMDlgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEwXCI+PC9zcGFuPiBgY29sb3ItMTBgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTExXCI+PC9zcGFuPiBgY29sb3ItMTFgXG4gICAqICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEyXCI+PC9zcGFuPiBgY29sb3ItMTJgXG4gICAqXG4gICAqIC0gUGFyYSB1bWEgbWVsaG9yIGFjZXNzaWJpbGlkYWRlIG5vIHVzbyBkbyBjb21wb25lbnRlIMOpIHJlY29tZW5kw6F2ZWwgdXRpbGl6YXIgY29yZXMgY29tIHVtIG1lbGhvciBjb250cmFzdGUgZW0gcmVsYcOnw6NvIGFvIGJhY2tncm91bmQuXG4gICAqXG4gICAqID4gKipBdGVuw6fDo286KiogQSBwcm9wcmllZGFkZSBgcC10eXBlYCBzb2JyZXDDtWUgZXN0YSBkZWZpbmnDp8Ojby5cbiAgICovXG4gIEBJbnB1dCgncC10ZXh0LWNvbG9yJykgc2V0IHRleHRDb2xvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGV4dENvbG9yID0gcG9UYWdDb2xvcnMuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX3RleHRDb2xvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDU1Muc3VwcG9ydHMoJ2NvbG9yJywgdmFsdWUpID8gKHRoaXMuY3VzdG9tVGV4dENvbG9yID0gdmFsdWUpIDogKHRoaXMuY3VzdG9tVGV4dENvbG9yID0gdW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGV4dENvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRDb2xvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvdSBhdGl2YSB1bSDDrWNvbmUgcXVlIHNlcsOhIGV4aWJpZG8gYW8gbGFkbyBkbyB2YWxvciBkYSAqdGFnKi5cbiAgICpcbiAgICogUXVhbmRvIGBwLXR5cGVgIGVzdGl2ZXIgZGVmaW5pZGEsIGJhc3RhIGluZm9ybWFyIHVtIHZhbG9yIGlndWFsIGEgYHRydWVgIHBhcmEgcXVlIG8gw61jb25lIHNlamEgZXhpYmlkbyBjb25mb3JtZSBkZXNjcmnDp8O1ZXMgYWJhaXhvOlxuICAgKiAtIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLW9rXCI+PC9zcGFuPiAtIGBzdWNjZXNzYFxuICAgKiAtIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLXdhcm5pbmdcIj48L3NwYW4+IC0gYHdhcm5pbmdgXG4gICAqIC0gPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tY2xvc2VcIj48L3NwYW4+IC0gYGRhbmdlcmBcbiAgICogLSA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvXCI+PC9zcGFuPiAtIGBpbmZvYFxuICAgKlxuICAgKiBUYW1iw6ltIMOJIHBvc3PDrXZlbCB1c2FyIHF1YWxxdWVyIHVtIGRvcyDDrWNvbmVzIGRhIFtCaWJsaW90ZWNhIGRlIMOtY29uZXNdKC9ndWlkZXMvaWNvbnMpLiBjb25mb3JtZSBleGVtcGxvIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIDxwby10YWcgcC1pY29uPVwicG8taWNvbi11c2VyXCIgcC12YWx1ZT1cIlBPIFRhZ1wiPjwvcG8tdGFnPlxuICAgKiBgYGBcbiAgICogY29tbyB0YW1iw6ltIHV0aWxpemFyIG91dHJhcyBmb250ZXMgZGUgw61jb25lcywgcG9yIGV4ZW1wbG8gYSBiaWJsaW90ZWNhICpGb250IEF3ZXNvbWUqLCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIDxwby10YWcgcC1pY29uPVwiZmEgZmEtcG9kY2FzdFwiIHAtdmFsdWU9XCJQTyBUYWdcIj48L3BvLWJ1dHRvbj5cbiAgICogYGBgXG4gICAqIE91dHJhIG9ww6fDo28gc2VyaWEgYSBjdXN0b21pemHDp8OjbyBkbyDDrWNvbmUgYXRyYXbDqXMgZG8gYFRlbXBsYXRlUmVmYCwgY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XG4gICAqIGBgYFxuICAgKiA8cG8tdGFnIFtwLWljb25dPVwidGVtcGxhdGVcIiBwLXZhbHVlPVwiVGFnIHRlbXBsYXRlIGlvbmljXCI+PC9wby1idXR0b24+XG4gICAqXG4gICAqIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAqICA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6IGluaGVyaXRcIiBuYW1lPVwiaGVhcnRcIj48L2lvbi1pY29uPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICogPiBQYXJhIG8gw61jb25lIGVucXVhZHJhciBjb3JyZXRhbWVudGUsIGRldmUtc2UgdXRpbGl6YXIgYGZvbnQtc2l6ZTogaW5oZXJpdGAgY2FzbyBvIMOtY29uZSB1dGlsaXphZG8gbsOjbyBhcGxpcXVlLW8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1pY29uJykgc2V0IGljb24odmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPikge1xuICAgIGlmICh0aGlzLnR5cGUpIHtcbiAgICAgIHRoaXMuX2ljb24gPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faWNvbiA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpY29uKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIDE2LngueFxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqID4gUG9yIHJlZ3JhcyBkZSBhY2Vzc2liaWxpZGFkZSBlIHVzYWJpbGlkYWRlIGEgdGFnIG7Do28gdGVyw6EgYSBpbnZlcnPDo28gZGUgY29yZXMgbm8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogQXRpdmEgYSBpbnZlcnPDo28gZGUgY29yZXMgY29uZmlndXJhZGFzIG5vIGNvbXBvbmVudGUsIHBvc3NpYmlsaXRhbmRvIHVtYSB2aXN1YWxpemHDp8OjbyBkZSBzdGF0dXMgYXRpdm8gZSBpbmF0aXZvLlxuICAgKlxuICAgKiA+IEEgY29yIGRvIHRleHRvLCBkbyDDrWNvbmUgZSBkYSBib3JkYSBmaWNhbSBjb20gYSBjb3IgdXRpbGl6YWRhIG5hIHByb3ByaWVkYWRlIGBwLWNvbG9yYCBvdSBhIGNvciBjb3JyZXNwb25kZW50ZSBhbyBgcC10eXBlYCxcbiAgICogZSBhIGNvciBkbyBmdW5kbyBmaWNhIGJyYW5jYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWludmVyc2UnKSBzZXQgaW52ZXJzZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2ludmVyc2UgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbnZlcnNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZlcnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gKmxheW91dCogZGUgZXhpYmnDp8Ojby5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZlcnRpY2FsYFxuICAgKi9cbiAgQElucHV0KCdwLW9yaWVudGF0aW9uJykgc2V0IG9yaWVudGF0aW9uKHZhbHVlOiBQb1RhZ09yaWVudGF0aW9uKSB7XG4gICAgdGhpcy5fb3JpZW50YXRpb24gPSAoPGFueT5PYmplY3QpLnZhbHVlcyhQb1RhZ09yaWVudGF0aW9uKS5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHBvVGFnT3JpZW50YXRpb25EZWZhdWx0O1xuICB9XG5cbiAgZ2V0IG9yaWVudGF0aW9uKCk6IFBvVGFnT3JpZW50YXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9vcmllbnRhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIHRpcG8gZGEgKnRhZyouXG4gICAqXG4gICAqIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAtIGBzdWNjZXNzYDogY29yIHZlcmRlIHV0aWxpemFkYSBwYXJhIHNpbWJvbGl6YXIgc3VjZXNzbyBvdSDDqnhpdG8uXG4gICAqICAtIGB3YXJuaW5nYDogY29yIGFtYXJlbGEgcXVlIHJlcHJlc2VudGEgYXZpc28gb3UgYWR2ZXJ0w6puY2lhLlxuICAgKiAgLSBgZGFuZ2VyYDogY29yIHZlcm1lbGhhIHBhcmEgZXJybyBvdSBhdmlzbyBjcsOtdGljby5cbiAgICogIC0gYGluZm9gOiBjb3IgYXp1bCBjbGFybyBxdWUgY2FyYWN0ZXJpemEgY29udGXDumRvIGluZm9ybWF0aXZvLlxuICAgKiAgLSBgbmV1dHJhbGA6IGNvciBjaW56YSBjbGFybyBwYXJhIHVzbyBnZXJhbC5cbiAgICpcbiAgICogPiBRdWFuZG8gZXN0YSBwcm9wcmllZGFkZSBmb3IgZGVmaW5pZGEsIGlyw6Egc29icmVwb3IgYSBkZWZpbmnDp8OjbyBkZSBgcC1jb2xvcmAgZSBgcC1pY29uYCBzb21lbnRlIHNlcsOhIGV4aWJpZG8gY2FzbyBzZWphIGB0cnVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGluZm9gXG4gICAqL1xuICBASW5wdXQoJ3AtdHlwZScpIHNldCB0eXBlKHZhbHVlOiBQb1RhZ1R5cGUpIHtcbiAgICBpZiAoIXRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICB0aGlzLl90eXBlID0gKDxhbnk+T2JqZWN0KS52YWx1ZXMoUG9UYWdUeXBlKS5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZSgpOiBQb1RhZ1R5cGUge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXRhZ2AuXG4gICAqXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6YXIsIGJhc3RhIHBhc3NhciBhIGxpdGVyYWwgY3VzdG9taXphZGE6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvVGFnTGl0ZXJhbHMgPSB7XG4gICAqICAgIHJlbW92ZTogJ1JlbW92ZXIgaXRlbnMnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby10YWdcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXRhZz5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb1RhZ0xpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5Qb1RhZ0xpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5Qb1RhZ0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgICAgLi4udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gUG9UYWdMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBQb1RhZ0xpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxufVxuIl19
@@ -1,40 +1,41 @@
1
1
  import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
- import { PoTagBaseComponent } from './po-tag-base.component';
3
2
  import { PoTagIcon } from './enums/po-tag-icon.enum';
4
3
  import { PoTagType } from './enums/po-tag-type.enum';
5
- import { PoTagLiterals } from './po-tag.literals';
4
+ import { PoTagBaseComponent } from './po-tag-base.component';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "./../../services/po-language/po-language.service";
8
7
  import * as i2 from "@angular/common";
9
8
  import * as i3 from "../po-icon/po-icon.component";
10
9
  import * as i4 from "../../directives/po-tooltip/po-tooltip.directive";
11
10
  const _c0 = ["tagContainer"];
12
- function PoTagComponent_div_2_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "div", 9)(1, "span", 10);
11
+ const _c1 = ["tagClose"];
12
+ const _c2 = ["poTag"];
13
+ function PoTagComponent_div_1_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "div", 10)(1, "span", 11);
14
15
  i0.ɵɵtext(2);
15
16
  i0.ɵɵelementEnd()();
16
17
  } if (rf & 2) {
17
- const ctx_r1 = i0.ɵɵnextContext();
18
+ const ctx_r0 = i0.ɵɵnextContext();
18
19
  i0.ɵɵadvance(2);
19
- i0.ɵɵtextInterpolate(ctx_r1.tagOrientation ? ctx_r1.label + ":" : ctx_r1.label);
20
+ i0.ɵɵtextInterpolate(ctx_r0.tagOrientation ? ctx_r0.label + ":" : ctx_r0.label);
20
21
  } }
21
- const _c1 = function (a0) { return { "color": a0 }; };
22
+ const _c3 = function (a0) { return { "color": a0 }; };
22
23
  function PoTagComponent_po_icon_5_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelement(0, "po-icon", 11);
24
+ i0.ɵɵelement(0, "po-icon", 12);
24
25
  } if (rf & 2) {
25
26
  const ctx_r2 = i0.ɵɵnextContext();
26
- i0.ɵɵproperty("p-icon", !ctx_r2.type ? ctx_r2.icon : ctx_r2.iconFromType)("ngStyle", !ctx_r2.tagColor && ctx_r2.inverse && !ctx_r2.customTextColor ? i0.ɵɵpureFunction1(2, _c1, ctx_r2.customColor) : !ctx_r2.type && ctx_r2.customTextColor ? i0.ɵɵpureFunction1(4, _c1, ctx_r2.customTextColor) : "");
27
+ i0.ɵɵproperty("p-icon", !ctx_r2.type ? ctx_r2.icon : ctx_r2.iconFromType)("ngStyle", !ctx_r2.tagColor && ctx_r2.inverse && !ctx_r2.customTextColor ? i0.ɵɵpureFunction1(2, _c3, ctx_r2.customColor) : !ctx_r2.type && ctx_r2.customTextColor ? i0.ɵɵpureFunction1(4, _c3, ctx_r2.customTextColor) : "");
27
28
  } }
28
- function PoTagComponent_span_9_Template(rf, ctx) { if (rf & 1) {
29
- const _r5 = i0.ɵɵgetCurrentView();
30
- i0.ɵɵelementStart(0, "span", 12);
31
- i0.ɵɵlistener("click", function PoTagComponent_span_9_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onClose()); })("keydown.enter", function PoTagComponent_span_9_Template_span_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onClose()); });
29
+ function PoTagComponent_span_10_Template(rf, ctx) { if (rf & 1) {
30
+ const _r7 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "span", 13, 14);
32
+ i0.ɵɵlistener("click", function PoTagComponent_span_10_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onClose()); })("keydown.enter", function PoTagComponent_span_10_Template_span_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.onClose("enter")); });
32
33
  i0.ɵɵelementEnd();
33
34
  } if (rf & 2) {
34
- const ctx_r3 = i0.ɵɵnextContext();
35
- i0.ɵɵclassProp("po-clickable", !ctx_r3.disabled);
36
- i0.ɵɵproperty("tabindex", !ctx_r3.disabled ? 0 : -1);
37
- i0.ɵɵattribute("aria-label", ctx_r3.setAriaLabel())("role", !ctx_r3.disabled ? "button" : "");
35
+ const ctx_r4 = i0.ɵɵnextContext();
36
+ i0.ɵɵclassProp("po-clickable", !ctx_r4.disabled);
37
+ i0.ɵɵproperty("p-tooltip", ctx_r4.literals.remove)("tabindex", !ctx_r4.disabled ? 0 : -1);
38
+ i0.ɵɵattribute("aria-label", ctx_r4.setAriaLabel())("role", !ctx_r4.disabled ? "button" : "");
38
39
  } }
39
40
  const poTagTypeDefault = 'po-tag-' + PoTagType.Info;
40
41
  /**
@@ -59,18 +60,13 @@ const poTagTypeDefault = 'po-tag-' + PoTagType.Info;
59
60
  */
60
61
  export class PoTagComponent extends PoTagBaseComponent {
61
62
  el;
62
- languageService;
63
63
  tagContainer;
64
+ tagClose;
65
+ poTag;
64
66
  isClickable;
65
- literals;
66
67
  constructor(el, languageService) {
67
- super();
68
+ super(languageService);
68
69
  this.el = el;
69
- this.languageService = languageService;
70
- const language = this.languageService.getShortLanguage();
71
- this.literals = {
72
- ...PoTagLiterals[language]
73
- };
74
70
  }
75
71
  ngOnInit() {
76
72
  this.isClickable = this.click.observers.length > 0;
@@ -101,22 +97,23 @@ export class PoTagComponent extends PoTagBaseComponent {
101
97
  get tagOrientation() {
102
98
  return this.orientation === this.poTagOrientation.Horizontal;
103
99
  }
104
- onClick() {
100
+ onClick(event = 'click') {
105
101
  if (!this.removable && !this.disabled) {
106
- const submittedTagItem = { value: this.value, type: this.type };
102
+ const submittedTagItem = { value: this.value, type: this.type, event: event };
107
103
  this.click.emit(submittedTagItem);
108
104
  }
109
105
  }
110
- onClose() {
106
+ onClose(event = 'click') {
111
107
  if (!this.disabled) {
112
- this.click.emit(null);
108
+ this.click.emit(event);
113
109
  this.onRemove();
110
+ this.remove.emit(event);
114
111
  }
115
112
  }
116
113
  onKeyPressed(event) {
117
114
  event.preventDefault();
118
115
  event.stopPropagation();
119
- this.onClick();
116
+ this.onClick('enter');
120
117
  }
121
118
  styleTag() {
122
119
  if (!this.tagColor && !this.inverse && !this.removable) {
@@ -146,33 +143,38 @@ export class PoTagComponent extends PoTagBaseComponent {
146
143
  static ɵfac = function PoTagComponent_Factory(t) { return new (t || PoTagComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.PoLanguageService)); };
147
144
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTagComponent, selectors: [["po-tag"]], viewQuery: function PoTagComponent_Query(rf, ctx) { if (rf & 1) {
148
145
  i0.ɵɵviewQuery(_c0, 7);
146
+ i0.ɵɵviewQuery(_c1, 7);
147
+ i0.ɵɵviewQuery(_c2, 7);
149
148
  } if (rf & 2) {
150
149
  let _t;
151
150
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagContainer = _t.first);
152
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 24, consts: [["p-tooltip-position", "top", 1, "po-tag-container", 3, "p-tooltip"], ["tagContainer", ""], ["class", "po-tag-title po-text-nowrap", 4, "ngIf"], [1, "po-tag-sub-container"], [1, "po-tag", 3, "ngClass", "ngStyle", "tabindex", "click", "keydown.enter", "keydown.space", "keyup.space"], ["class", "po-tag-icon", 3, "p-icon", "ngStyle", 4, "ngIf"], [1, "po-tag-value"], [3, "ngStyle"], ["class", "po-tag-remove po-icon po-icon-close", 3, "po-clickable", "tabindex", "click", "keydown.enter", 4, "ngIf"], [1, "po-tag-title", "po-text-nowrap"], [1, "po-tag-label"], [1, "po-tag-icon", 3, "p-icon", "ngStyle"], [1, "po-tag-remove", "po-icon", "po-icon-close", 3, "tabindex", "click", "keydown.enter"]], template: function PoTagComponent_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementStart(0, "div", 0, 1);
154
- i0.ɵɵtemplate(2, PoTagComponent_div_2_Template, 3, 1, "div", 2);
155
- i0.ɵɵelementStart(3, "div", 3)(4, "div", 4);
156
- i0.ɵɵlistener("click", function PoTagComponent_Template_div_click_4_listener() { return ctx.onClick(); })("keydown.enter", function PoTagComponent_Template_div_keydown_enter_4_listener($event) { return ctx.onKeyPressed($event); })("keydown.space", function PoTagComponent_Template_div_keydown_space_4_listener($event) { return $event.preventDefault(); })("keyup.space", function PoTagComponent_Template_div_keyup_space_4_listener($event) { return ctx.onKeyPressed($event); });
151
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagClose = _t.first);
152
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poTag = _t.first);
153
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 24, consts: [[1, "po-tag-container"], ["class", "po-tag-title po-text-nowrap", 4, "ngIf"], [1, "po-tag-sub-container"], [1, "po-tag", 3, "ngClass", "ngStyle", "tabindex", "click", "keydown.enter", "keydown.space", "keyup.space"], ["poTag", ""], ["class", "po-tag-icon", 3, "p-icon", "ngStyle", 4, "ngIf"], ["p-tooltip-position", "top", 1, "po-tag-value", 3, "p-tooltip"], ["tagContainer", ""], [3, "ngStyle"], ["p-tooltip-position", "top", "class", "po-tag-remove po-icon po-icon-close", 3, "p-tooltip", "po-clickable", "tabindex", "click", "keydown.enter", 4, "ngIf"], [1, "po-tag-title", "po-text-nowrap"], [1, "po-tag-label"], [1, "po-tag-icon", 3, "p-icon", "ngStyle"], ["p-tooltip-position", "top", 1, "po-tag-remove", "po-icon", "po-icon-close", 3, "p-tooltip", "tabindex", "click", "keydown.enter"], ["tagClose", ""]], template: function PoTagComponent_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementStart(0, "div", 0);
155
+ i0.ɵɵtemplate(1, PoTagComponent_div_1_Template, 3, 1, "div", 1);
156
+ i0.ɵɵelementStart(2, "div", 2)(3, "div", 3, 4);
157
+ i0.ɵɵlistener("click", function PoTagComponent_Template_div_click_3_listener() { return ctx.onClick(); })("keydown.enter", function PoTagComponent_Template_div_keydown_enter_3_listener($event) { return ctx.onKeyPressed($event); })("keydown.space", function PoTagComponent_Template_div_keydown_space_3_listener($event) { return $event.preventDefault(); })("keyup.space", function PoTagComponent_Template_div_keyup_space_3_listener($event) { return ctx.onKeyPressed($event); });
157
158
  i0.ɵɵtemplate(5, PoTagComponent_po_icon_5_Template, 1, 6, "po-icon", 5);
158
- i0.ɵɵelementStart(6, "div", 6)(7, "span", 7);
159
- i0.ɵɵtext(8);
159
+ i0.ɵɵelementStart(6, "div", 6, 7)(8, "span", 8);
160
+ i0.ɵɵtext(9);
160
161
  i0.ɵɵelementEnd()();
161
- i0.ɵɵtemplate(9, PoTagComponent_span_9_Template, 1, 5, "span", 8);
162
+ i0.ɵɵtemplate(10, PoTagComponent_span_10_Template, 2, 6, "span", 9);
162
163
  i0.ɵɵelementEnd()()();
163
164
  } if (rf & 2) {
164
165
  i0.ɵɵclassProp("po-tag-container-horizontal", ctx.tagOrientation);
165
- i0.ɵɵproperty("p-tooltip", ctx.getWidthTag() ? ctx.value : "");
166
- i0.ɵɵadvance(2);
166
+ i0.ɵɵadvance(1);
167
167
  i0.ɵɵproperty("ngIf", ctx.label);
168
168
  i0.ɵɵadvance(2);
169
169
  i0.ɵɵclassProp("po-clickable", ctx.isClickable && !ctx.disabled && !ctx.removable)("po-tag-inverse", ctx.inverse && !ctx.type && !ctx.customTextColor && !ctx.removable)("po-tag-removable", ctx.removable)("po-tag-disabled", ctx.disabled && ctx.removable);
170
170
  i0.ɵɵproperty("ngClass", ctx.tagColor)("ngStyle", ctx.styleTag())("tabindex", ctx.isClickable && !ctx.removable ? 0 : -1);
171
171
  i0.ɵɵattribute("role", ctx.isClickable && !ctx.disabled ? "button" : "");
172
- i0.ɵɵadvance(1);
172
+ i0.ɵɵadvance(2);
173
173
  i0.ɵɵproperty("ngIf", ctx.icon && !ctx.removable);
174
+ i0.ɵɵadvance(1);
175
+ i0.ɵɵproperty("p-tooltip", ctx.getWidthTag() ? ctx.value : "");
174
176
  i0.ɵɵadvance(2);
175
- i0.ɵɵproperty("ngStyle", !ctx.tagColor && ctx.inverse && !ctx.customTextColor ? i0.ɵɵpureFunction1(20, _c1, ctx.customColor) : !ctx.type && ctx.customTextColor && !ctx.removable ? i0.ɵɵpureFunction1(22, _c1, ctx.customTextColor) : "");
177
+ i0.ɵɵproperty("ngStyle", !ctx.tagColor && ctx.inverse && !ctx.customTextColor ? i0.ɵɵpureFunction1(20, _c3, ctx.customColor) : !ctx.type && ctx.customTextColor && !ctx.removable ? i0.ɵɵpureFunction1(22, _c3, ctx.customTextColor) : "");
176
178
  i0.ɵɵadvance(1);
177
179
  i0.ɵɵtextInterpolate(ctx.value);
178
180
  i0.ɵɵadvance(1);
@@ -181,9 +183,15 @@ export class PoTagComponent extends PoTagBaseComponent {
181
183
  }
182
184
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTagComponent, [{
183
185
  type: Component,
184
- args: [{ selector: 'po-tag', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #tagContainer\n class=\"po-tag-container\"\n [class.po-tag-container-horizontal]=\"tagOrientation\"\n [p-tooltip]=\"getWidthTag() ? value : ''\"\n p-tooltip-position=\"top\"\n>\n <div *ngIf=\"label\" class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n\n <div class=\"po-tag-sub-container\">\n <div\n class=\"po-tag\"\n [attr.role]=\"isClickable && !disabled ? 'button' : ''\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-inverse]=\"inverse && !type && !customTextColor && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n >\n <po-icon\n *ngIf=\"icon && !removable\"\n class=\"po-tag-icon\"\n [p-icon]=\"!type ? icon : iconFromType\"\n [ngStyle]=\"\n !tagColor && inverse && !customTextColor\n ? { 'color': customColor }\n : !type && customTextColor\n ? { 'color': customTextColor }\n : ''\n \"\n >\n </po-icon>\n\n <div class=\"po-tag-value\">\n <span\n [ngStyle]=\"\n !tagColor && inverse && !customTextColor\n ? { 'color': customColor }\n : !type && customTextColor && !removable\n ? { 'color': customTextColor }\n : ''\n \"\n >{{ value }}</span\n >\n </div>\n\n <span\n *ngIf=\"removable\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove po-icon po-icon-close\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose()\"\n >\n </span>\n </div>\n </div>\n</div>\n" }]
186
+ args: [{ selector: 'po-tag', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-tag-container\" [class.po-tag-container-horizontal]=\"tagOrientation\">\n <div *ngIf=\"label\" class=\"po-tag-title po-text-nowrap\">\n <span class=\"po-tag-label\">{{ tagOrientation ? label + ':' : label }}</span>\n </div>\n\n <div class=\"po-tag-sub-container\">\n <div\n #poTag\n class=\"po-tag\"\n [attr.role]=\"isClickable && !disabled ? 'button' : ''\"\n [class.po-clickable]=\"isClickable && !disabled && !removable\"\n [class.po-tag-inverse]=\"inverse && !type && !customTextColor && !removable\"\n [class.po-tag-removable]=\"removable\"\n [class.po-tag-disabled]=\"disabled && removable\"\n [ngClass]=\"tagColor\"\n [ngStyle]=\"styleTag()\"\n [tabindex]=\"isClickable && !removable ? 0 : -1\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onKeyPressed($event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"onKeyPressed($event)\"\n >\n <po-icon\n *ngIf=\"icon && !removable\"\n class=\"po-tag-icon\"\n [p-icon]=\"!type ? icon : iconFromType\"\n [ngStyle]=\"\n !tagColor && inverse && !customTextColor\n ? { 'color': customColor }\n : !type && customTextColor\n ? { 'color': customTextColor }\n : ''\n \"\n >\n </po-icon>\n\n <div #tagContainer class=\"po-tag-value\" [p-tooltip]=\"getWidthTag() ? value : ''\" p-tooltip-position=\"top\">\n <span\n [ngStyle]=\"\n !tagColor && inverse && !customTextColor\n ? { 'color': customColor }\n : !type && customTextColor && !removable\n ? { 'color': customTextColor }\n : ''\n \"\n >{{ value }}</span\n >\n </div>\n\n <span\n #tagClose\n *ngIf=\"removable\"\n p-tooltip-position=\"top\"\n [p-tooltip]=\"literals.remove\"\n [attr.aria-label]=\"setAriaLabel()\"\n class=\"po-tag-remove po-icon po-icon-close\"\n [class.po-clickable]=\"!disabled\"\n [tabindex]=\"!disabled ? 0 : -1\"\n [attr.role]=\"!disabled ? 'button' : ''\"\n (click)=\"onClose()\"\n (keydown.enter)=\"onClose('enter')\"\n >\n </span>\n </div>\n </div>\n</div>\n" }]
185
187
  }], function () { return [{ type: i0.ElementRef }, { type: i1.PoLanguageService }]; }, { tagContainer: [{
186
188
  type: ViewChild,
187
189
  args: ['tagContainer', { static: true }]
190
+ }], tagClose: [{
191
+ type: ViewChild,
192
+ args: ['tagClose', { static: true }]
193
+ }], poTag: [{
194
+ type: ViewChild,
195
+ args: ['poTag', { static: true }]
188
196
  }] }); })();
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWcvcG8tdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWcvcG8tdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7SUNBaEQsOEJBQXVELGVBQUE7SUFDMUIsWUFBMEM7SUFBQSxpQkFBTyxFQUFBOzs7SUFBakQsZUFBMEM7SUFBMUMsK0VBQTBDOzs7O0lBbUJuRSw4QkFZVTs7O0lBVFIseUVBQXNDLDhOQUFBOzs7O0lBd0J4QyxnQ0FTQztJQUZDLDBKQUFTLGVBQUEsZ0JBQVMsQ0FBQSxJQUFDLDZKQUNGLGVBQUEsZ0JBQVMsQ0FBQSxJQURQO0lBR3JCLGlCQUFPOzs7SUFOTCxnREFBZ0M7SUFDaEMsb0RBQStCO0lBSC9CLG1EQUFrQywwQ0FBQTs7QUQvQzFDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFNSCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQU1oQztJQUF3QjtJQUxDLFlBQVksQ0FBYTtJQUV0RSxXQUFXLENBQVU7SUFD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Q0FNQztZQUNDLCtEQUVNO1lBRU4sOEJBQWtDLGFBQUE7WUFXOUIsd0ZBQVMsYUFBUyxJQUFDLGlHQUNGLHdCQUFvQixJQURsQixpR0FFRix1QkFBdUIsSUFGckIsNkZBR0osd0JBQW9CLElBSGhCO1lBS25CLHVFQVlVO1lBRVYsOEJBQTBCLGNBQUE7WUFTckIsWUFBVztZQUFBLGlCQUNiLEVBQUE7WUFHSCxpRUFVTztZQUNULGlCQUFNLEVBQUEsRUFBQTs7WUE5RFIsaUVBQW9EO1lBQ3BELDhEQUF3QztZQUdsQyxlQUFXO1lBQVgsZ0NBQVc7WUFRYixlQUE2RDtZQUE3RCxrRkFBNkQsc0ZBQUEsbUNBQUEsa0RBQUE7WUFJN0Qsc0NBQW9CLDJCQUFBLHdEQUFBO1lBTHBCLHdFQUFzRDtZQWNuRCxlQUF3QjtZQUF4QixpREFBd0I7WUFldkIsZUFNQztZQU5ELDBPQU1DO1lBQ0EsZUFBVztZQUFYLCtCQUFXO1lBS2IsZUFBZTtZQUFmLG9DQUFlOzs7dUZEbkJYLGNBQWM7Y0FMMUIsU0FBUzsyQkFDRSxRQUFRLG1CQUVELHVCQUF1QixDQUFDLE1BQU07NkZBR0YsWUFBWTtrQkFBeEQsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9UYWdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby10YWctYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9UYWdJY29uIH0gZnJvbSAnLi9lbnVtcy9wby10YWctaWNvbi5lbnVtJztcbmltcG9ydCB7IFBvVGFnSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWctaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWdUeXBlIH0gZnJvbSAnLi9lbnVtcy9wby10YWctdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvVGFnTGl0ZXJhbHMgfSBmcm9tICcuL3BvLXRhZy5saXRlcmFscyc7XG5cbmNvbnN0IHBvVGFnVHlwZURlZmF1bHQgPSAncG8tdGFnLScgKyBQb1RhZ1R5cGUuSW5mbztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFnLWJhc2ljXCIgdGl0bGU9XCJQTyBUYWcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYXNpYy9zYW1wbGUtcG8tdGFnLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYXNpYy9zYW1wbGUtcG8tdGFnLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhZy1sYWJzXCIgdGl0bGU9XCJQTyBUYWcgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFnLWxhYnMvc2FtcGxlLXBvLXRhZy1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1sYWJzL3NhbXBsZS1wby10YWctbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWctYmFuay1hY2NvdW50XCIgdGl0bGU9XCJQTyBUYWcgLSBCYW5rIEFjY291bnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYW5rLWFjY291bnQvc2FtcGxlLXBvLXRhZy1iYW5rLWFjY291bnQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFnLWJhbmstYWNjb3VudC9zYW1wbGUtcG8tdGFnLWJhbmstYWNjb3VudC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9UYWdDb21wb25lbnQgZXh0ZW5kcyBQb1RhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCd0YWdDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWdDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNDbGlja2FibGU6IGJvb2xlYW47XG4gIGxpdGVyYWxzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmxpdGVyYWxzID0ge1xuICAgICAgLi4uUG9UYWdMaXRlcmFsc1tsYW5ndWFnZV1cbiAgICB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc0NsaWNrYWJsZSA9IHRoaXMuY2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgaWNvbkZyb21UeXBlKCkge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFBvVGFnVHlwZS5EYW5nZXI6XG4gICAgICAgIHJldHVybiBQb1RhZ0ljb24uRGFuZ2VyO1xuXG4gICAgICBjYXNlIFBvVGFnVHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4gUG9UYWdJY29uLkluZm87XG5cbiAgICAgIGNhc2UgUG9UYWdUeXBlLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiBQb1RhZ0ljb24uU3VjY2VzcztcblxuICAgICAgY2FzZSBQb1RhZ1R5cGUuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIFBvVGFnSWNvbi5XYXJuaW5nO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWdDb2xvcigpIHtcbiAgICBpZiAodGhpcy50eXBlICYmICF0aGlzLnJlbW92YWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/IGBwby10YWctJHt0aGlzLnR5cGV9LWludmVyc2VgIDogYHBvLXRhZy0ke3RoaXMudHlwZX1gO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbG9yICYmICF0aGlzLnJlbW92YWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/IGBwby10ZXh0LSR7dGhpcy5jb2xvcn1gIDogYHBvLSR7dGhpcy5jb2xvcn1gO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXN0b21Db2xvciAmJiAhdGhpcy5yZW1vdmFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmludmVyc2UgPyBgJHtwb1RhZ1R5cGVEZWZhdWx0fS1pbnZlcnNlYCA6IHBvVGFnVHlwZURlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZ09yaWVudGF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSB0aGlzLnBvVGFnT3JpZW50YXRpb24uSG9yaXpvbnRhbDtcbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLnJlbW92YWJsZSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgY29uc3Qgc3VibWl0dGVkVGFnSXRlbTogUG9UYWdJdGVtID0geyB2YWx1ZTogdGhpcy52YWx1ZSwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgICB0aGlzLmNsaWNrLmVtaXQoc3VibWl0dGVkVGFnSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xpY2suZW1pdChudWxsKTtcbiAgICAgIHRoaXMub25SZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuICBvbktleVByZXNzZWQoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMub25DbGljaygpO1xuICB9XG5cbiAgc3R5bGVUYWcoKSB7XG4gICAgaWYgKCF0aGlzLnRhZ0NvbG9yICYmICF0aGlzLmludmVyc2UgJiYgIXRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICByZXR1cm4geyAnYmFja2dyb3VuZC1jb2xvcic6IHRoaXMuY3VzdG9tQ29sb3IsICdjb2xvcic6ICd3aGl0ZScgfTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnRhZ0NvbG9yICYmIHRoaXMuaW52ZXJzZSAmJiAhdGhpcy5jdXN0b21UZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybiB7ICdib3JkZXInOiAnMXB4IHNvbGlkICcgKyB0aGlzLmN1c3RvbUNvbG9yIH07XG4gICAgfSBlbHNlIGlmICghdGhpcy50YWdDb2xvciAmJiB0aGlzLmludmVyc2UgJiYgdGhpcy5jdXN0b21UZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybiB7ICdib3JkZXInOiAnMXB4IHNvbGlkICcgKyB0aGlzLmN1c3RvbVRleHRDb2xvciwgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmN1c3RvbUNvbG9yIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBnZXRXaWR0aFRhZygpIHtcbiAgICByZXR1cm4gdGhpcy50YWdDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA+IDE1NTtcbiAgfVxuXG4gIHNldEFyaWFMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgKyAnICcgKyB0aGlzLmxpdGVyYWxzLnJlbW92ZSA6IHRoaXMudmFsdWUgKyAnICcgKyB0aGlzLmxpdGVyYWxzLnJlbW92ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZW1vdmUoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICN0YWdDb250YWluZXJcbiAgY2xhc3M9XCJwby10YWctY29udGFpbmVyXCJcbiAgW2NsYXNzLnBvLXRhZy1jb250YWluZXItaG9yaXpvbnRhbF09XCJ0YWdPcmllbnRhdGlvblwiXG4gIFtwLXRvb2x0aXBdPVwiZ2V0V2lkdGhUYWcoKSA/IHZhbHVlIDogJydcIlxuICBwLXRvb2x0aXAtcG9zaXRpb249XCJ0b3BcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cInBvLXRhZy10aXRsZSBwby10ZXh0LW5vd3JhcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwicG8tdGFnLWxhYmVsXCI+e3sgdGFnT3JpZW50YXRpb24gPyBsYWJlbCArICc6JyA6IGxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFnLXN1Yi1jb250YWluZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBvLXRhZ1wiXG4gICAgICBbYXR0ci5yb2xlXT1cImlzQ2xpY2thYmxlICYmICFkaXNhYmxlZCA/ICdidXR0b24nIDogJydcIlxuICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJpc0NsaWNrYWJsZSAmJiAhZGlzYWJsZWQgJiYgIXJlbW92YWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFnLWludmVyc2VdPVwiaW52ZXJzZSAmJiAhdHlwZSAmJiAhY3VzdG9tVGV4dENvbG9yICYmICFyZW1vdmFibGVcIlxuICAgICAgW2NsYXNzLnBvLXRhZy1yZW1vdmFibGVdPVwicmVtb3ZhYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWctZGlzYWJsZWRdPVwiZGlzYWJsZWQgJiYgcmVtb3ZhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cInRhZ0NvbG9yXCJcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlVGFnKClcIlxuICAgICAgW3RhYmluZGV4XT1cImlzQ2xpY2thYmxlICYmICFyZW1vdmFibGUgPyAwIDogLTFcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleVByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAoa2V5dXAuc3BhY2UpPVwib25LZXlQcmVzc2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIDxwby1pY29uXG4gICAgICAgICpuZ0lmPVwiaWNvbiAmJiAhcmVtb3ZhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJwby10YWctaWNvblwiXG4gICAgICAgIFtwLWljb25dPVwiIXR5cGUgPyBpY29uIDogaWNvbkZyb21UeXBlXCJcbiAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgIXRhZ0NvbG9yICYmIGludmVyc2UgJiYgIWN1c3RvbVRleHRDb2xvclxuICAgICAgICAgICAgPyB7ICdjb2xvcic6IGN1c3RvbUNvbG9yIH1cbiAgICAgICAgICAgIDogIXR5cGUgJiYgY3VzdG9tVGV4dENvbG9yXG4gICAgICAgICAgICA/IHsgJ2NvbG9yJzogY3VzdG9tVGV4dENvbG9yIH1cbiAgICAgICAgICAgIDogJydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgIDwvcG8taWNvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLXRhZy12YWx1ZVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgIXRhZ0NvbG9yICYmIGludmVyc2UgJiYgIWN1c3RvbVRleHRDb2xvclxuICAgICAgICAgICAgICA/IHsgJ2NvbG9yJzogY3VzdG9tQ29sb3IgfVxuICAgICAgICAgICAgICA6ICF0eXBlICYmIGN1c3RvbVRleHRDb2xvciAmJiAhcmVtb3ZhYmxlXG4gICAgICAgICAgICAgID8geyAnY29sb3InOiBjdXN0b21UZXh0Q29sb3IgfVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICA+e3sgdmFsdWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwicmVtb3ZhYmxlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZXRBcmlhTGFiZWwoKVwiXG4gICAgICAgIGNsYXNzPVwicG8tdGFnLXJlbW92ZSBwby1pY29uIHBvLWljb24tY2xvc2VcIlxuICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCIhZGlzYWJsZWQgPyAwIDogLTFcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cIiFkaXNhYmxlZCA/ICdidXR0b24nIDogJydcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DbG9zZSgpXCJcbiAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWcvcG8tdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWcvcG8tdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7O0lDSjNELCtCQUF1RCxlQUFBO0lBQzFCLFlBQTBDO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWpELGVBQTBDO0lBQTFDLCtFQUEwQzs7OztJQW9CbkUsOEJBWVU7OztJQVRSLHlFQUFzQyw4TkFBQTs7OztJQXdCeEMsb0NBWUM7SUFGQywySkFBUyxlQUFBLGdCQUFTLENBQUEsSUFBQyw4SkFDRixlQUFBLGVBQVEsT0FBTyxDQUFDLENBQUEsSUFEZDtJQUdyQixpQkFBTzs7O0lBTkwsZ0RBQWdDO0lBSGhDLGtEQUE2Qix1Q0FBQTtJQUM3QixtREFBa0MsMENBQUE7O0FEOUMxQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBRXBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBTUgsTUFBTSxPQUFPLGNBQWUsU0FBUSxrQkFBa0I7SUFPaEM7SUFOeUIsWUFBWSxDQUFhO0lBQzdCLFFBQVEsQ0FBYTtJQUN4QixLQUFLLENBQWE7SUFFeEQsV0FBVyxDQUFVO0lB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QyxnQkFBQTtZQVk5Qix3RkFBUyxhQUFTLElBQUMsaUdBQ0Ysd0JBQW9CLElBRGxCLGlHQUVGLHVCQUF1QixJQUZyQiw2RkFHSix3QkFBb0IsSUFIaEI7WUFLbkIsdUVBWVU7WUFFVixpQ0FBMEcsY0FBQTtZQVNyRyxZQUFXO1lBQUEsaUJBQ2IsRUFBQTtZQUdILG1FQWFPO1lBQ1QsaUJBQU0sRUFBQSxFQUFBOztZQS9Eb0IsaUVBQW9EO1lBQzFFLGVBQVc7WUFBWCxnQ0FBVztZQVNiLGVBQTZEO1lBQTdELGtGQUE2RCxzRkFBQSxtQ0FBQSxrREFBQTtZQUk3RCxzQ0FBb0IsMkJBQUEsd0RBQUE7WUFMcEIsd0VBQXNEO1lBY25ELGVBQXdCO1lBQXhCLGlEQUF3QjtZQWFhLGVBQXdDO1lBQXhDLDhEQUF3QztZQUU1RSxlQU1DO1lBTkQsME9BTUM7WUFDQSxlQUFXO1lBQVgsK0JBQVc7WUFNYixlQUFlO1lBQWYsb0NBQWU7Ozt1RkRoQlgsY0FBYztjQUwxQixTQUFTOzJCQUNFLFFBQVEsbUJBRUQsdUJBQXVCLENBQUMsTUFBTTs2RkFHRixZQUFZO2tCQUF4RCxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDRixRQUFRO2tCQUFoRCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDRCxLQUFLO2tCQUExQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb1RhZ0ljb24gfSBmcm9tICcuL2VudW1zL3BvLXRhZy1pY29uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWdUeXBlIH0gZnJvbSAnLi9lbnVtcy9wby10YWctdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvVGFnQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tdGFnLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFnTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFnLWxpdGVyYWxzLmludGVyZmFjZSc7XG5cbmNvbnN0IHBvVGFnVHlwZURlZmF1bHQgPSAncG8tdGFnLScgKyBQb1RhZ1R5cGUuSW5mbztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFnLWJhc2ljXCIgdGl0bGU9XCJQTyBUYWcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYXNpYy9zYW1wbGUtcG8tdGFnLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYXNpYy9zYW1wbGUtcG8tdGFnLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhZy1sYWJzXCIgdGl0bGU9XCJQTyBUYWcgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFnLWxhYnMvc2FtcGxlLXBvLXRhZy1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1sYWJzL3NhbXBsZS1wby10YWctbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWctYmFuay1hY2NvdW50XCIgdGl0bGU9XCJQTyBUYWcgLSBCYW5rIEFjY291bnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhZy1iYW5rLWFjY291bnQvc2FtcGxlLXBvLXRhZy1iYW5rLWFjY291bnQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFnLWJhbmstYWNjb3VudC9zYW1wbGUtcG8tdGFnLWJhbmstYWNjb3VudC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9UYWdDb21wb25lbnQgZXh0ZW5kcyBQb1RhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCd0YWdDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWdDb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0Nsb3NlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFnQ2xvc2U6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvVGFnJywgeyBzdGF0aWM6IHRydWUgfSkgcG9UYWc6IEVsZW1lbnRSZWY7XG5cbiAgaXNDbGlja2FibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQ2xpY2thYmxlID0gdGhpcy5jbGljay5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBpY29uRnJvbVR5cGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgUG9UYWdUeXBlLkRhbmdlcjpcbiAgICAgICAgcmV0dXJuIFBvVGFnSWNvbi5EYW5nZXI7XG5cbiAgICAgIGNhc2UgUG9UYWdUeXBlLkluZm86XG4gICAgICAgIHJldHVybiBQb1RhZ0ljb24uSW5mbztcblxuICAgICAgY2FzZSBQb1RhZ1R5cGUuU3VjY2VzczpcbiAgICAgICAgcmV0dXJuIFBvVGFnSWNvbi5TdWNjZXNzO1xuXG4gICAgICBjYXNlIFBvVGFnVHlwZS5XYXJuaW5nOlxuICAgICAgICByZXR1cm4gUG9UYWdJY29uLldhcm5pbmc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhZ0NvbG9yKCkge1xuICAgIGlmICh0aGlzLnR5cGUgJiYgIXRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnZlcnNlID8gYHBvLXRhZy0ke3RoaXMudHlwZX0taW52ZXJzZWAgOiBgcG8tdGFnLSR7dGhpcy50eXBlfWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sb3IgJiYgIXRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnZlcnNlID8gYHBvLXRleHQtJHt0aGlzLmNvbG9yfWAgOiBgcG8tJHt0aGlzLmNvbG9yfWA7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmN1c3RvbUNvbG9yICYmICF0aGlzLnJlbW92YWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/IGAke3BvVGFnVHlwZURlZmF1bHR9LWludmVyc2VgIDogcG9UYWdUeXBlRGVmYXVsdDtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFnT3JpZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09IHRoaXMucG9UYWdPcmllbnRhdGlvbi5Ib3Jpem9udGFsO1xuICB9XG5cbiAgb25DbGljayhldmVudCA9ICdjbGljaycpIHtcbiAgICBpZiAoIXRoaXMucmVtb3ZhYmxlICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBjb25zdCBzdWJtaXR0ZWRUYWdJdGVtID0geyB2YWx1ZTogdGhpcy52YWx1ZSwgdHlwZTogdGhpcy50eXBlLCBldmVudDogZXZlbnQgfTtcbiAgICAgIHRoaXMuY2xpY2suZW1pdChzdWJtaXR0ZWRUYWdJdGVtKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKGV2ZW50ID0gJ2NsaWNrJykge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGljay5lbWl0KGV2ZW50KTtcbiAgICAgIHRoaXMub25SZW1vdmUoKTtcbiAgICAgIHRoaXMucmVtb3ZlLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5UHJlc3NlZChldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vbkNsaWNrKCdlbnRlcicpO1xuICB9XG5cbiAgc3R5bGVUYWcoKSB7XG4gICAgaWYgKCF0aGlzLnRhZ0NvbG9yICYmICF0aGlzLmludmVyc2UgJiYgIXRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICByZXR1cm4geyAnYmFja2dyb3VuZC1jb2xvcic6IHRoaXMuY3VzdG9tQ29sb3IsICdjb2xvcic6ICd3aGl0ZScgfTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnRhZ0NvbG9yICYmIHRoaXMuaW52ZXJzZSAmJiAhdGhpcy5jdXN0b21UZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybiB7ICdib3JkZXInOiAnMXB4IHNvbGlkICcgKyB0aGlzLmN1c3RvbUNvbG9yIH07XG4gICAgfSBlbHNlIGlmICghdGhpcy50YWdDb2xvciAmJiB0aGlzLmludmVyc2UgJiYgdGhpcy5jdXN0b21UZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybiB7ICdib3JkZXInOiAnMXB4IHNvbGlkICcgKyB0aGlzLmN1c3RvbVRleHRDb2xvciwgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmN1c3RvbUNvbG9yIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBnZXRXaWR0aFRhZygpIHtcbiAgICByZXR1cm4gdGhpcy50YWdDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA+IDE1NTtcbiAgfVxuXG4gIHNldEFyaWFMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgKyAnICcgKyB0aGlzLmxpdGVyYWxzLnJlbW92ZSA6IHRoaXMudmFsdWUgKyAnICcgKyB0aGlzLmxpdGVyYWxzLnJlbW92ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZW1vdmUoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tdGFnLWNvbnRhaW5lclwiIFtjbGFzcy5wby10YWctY29udGFpbmVyLWhvcml6b250YWxdPVwidGFnT3JpZW50YXRpb25cIj5cbiAgPGRpdiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJwby10YWctdGl0bGUgcG8tdGV4dC1ub3dyYXBcIj5cbiAgICA8c3BhbiBjbGFzcz1cInBvLXRhZy1sYWJlbFwiPnt7IHRhZ09yaWVudGF0aW9uID8gbGFiZWwgKyAnOicgOiBsYWJlbCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhZy1zdWItY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgI3BvVGFnXG4gICAgICBjbGFzcz1cInBvLXRhZ1wiXG4gICAgICBbYXR0ci5yb2xlXT1cImlzQ2xpY2thYmxlICYmICFkaXNhYmxlZCA/ICdidXR0b24nIDogJydcIlxuICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJpc0NsaWNrYWJsZSAmJiAhZGlzYWJsZWQgJiYgIXJlbW92YWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFnLWludmVyc2VdPVwiaW52ZXJzZSAmJiAhdHlwZSAmJiAhY3VzdG9tVGV4dENvbG9yICYmICFyZW1vdmFibGVcIlxuICAgICAgW2NsYXNzLnBvLXRhZy1yZW1vdmFibGVdPVwicmVtb3ZhYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWctZGlzYWJsZWRdPVwiZGlzYWJsZWQgJiYgcmVtb3ZhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cInRhZ0NvbG9yXCJcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlVGFnKClcIlxuICAgICAgW3RhYmluZGV4XT1cImlzQ2xpY2thYmxlICYmICFyZW1vdmFibGUgPyAwIDogLTFcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleVByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAoa2V5dXAuc3BhY2UpPVwib25LZXlQcmVzc2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIDxwby1pY29uXG4gICAgICAgICpuZ0lmPVwiaWNvbiAmJiAhcmVtb3ZhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJwby10YWctaWNvblwiXG4gICAgICAgIFtwLWljb25dPVwiIXR5cGUgPyBpY29uIDogaWNvbkZyb21UeXBlXCJcbiAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgIXRhZ0NvbG9yICYmIGludmVyc2UgJiYgIWN1c3RvbVRleHRDb2xvclxuICAgICAgICAgICAgPyB7ICdjb2xvcic6IGN1c3RvbUNvbG9yIH1cbiAgICAgICAgICAgIDogIXR5cGUgJiYgY3VzdG9tVGV4dENvbG9yXG4gICAgICAgICAgICA/IHsgJ2NvbG9yJzogY3VzdG9tVGV4dENvbG9yIH1cbiAgICAgICAgICAgIDogJydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgIDwvcG8taWNvbj5cblxuICAgICAgPGRpdiAjdGFnQ29udGFpbmVyIGNsYXNzPVwicG8tdGFnLXZhbHVlXCIgW3AtdG9vbHRpcF09XCJnZXRXaWR0aFRhZygpID8gdmFsdWUgOiAnJ1wiIHAtdG9vbHRpcC1wb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgIXRhZ0NvbG9yICYmIGludmVyc2UgJiYgIWN1c3RvbVRleHRDb2xvclxuICAgICAgICAgICAgICA/IHsgJ2NvbG9yJzogY3VzdG9tQ29sb3IgfVxuICAgICAgICAgICAgICA6ICF0eXBlICYmIGN1c3RvbVRleHRDb2xvciAmJiAhcmVtb3ZhYmxlXG4gICAgICAgICAgICAgID8geyAnY29sb3InOiBjdXN0b21UZXh0Q29sb3IgfVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICA+e3sgdmFsdWUgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICN0YWdDbG9zZVxuICAgICAgICAqbmdJZj1cInJlbW92YWJsZVwiXG4gICAgICAgIHAtdG9vbHRpcC1wb3NpdGlvbj1cInRvcFwiXG4gICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMucmVtb3ZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZXRBcmlhTGFiZWwoKVwiXG4gICAgICAgIGNsYXNzPVwicG8tdGFnLXJlbW92ZSBwby1pY29uIHBvLWljb24tY2xvc2VcIlxuICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCIhZGlzYWJsZWQgPyAwIDogLTFcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cIiFkaXNhYmxlZCA/ICdidXR0b24nIDogJydcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DbG9zZSgnZW50ZXInKVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -27,5 +27,9 @@ export var PoKeyCodeEnum;
27
27
  PoKeyCodeEnum[PoKeyCodeEnum["space"] = 32] = "space";
28
28
  /** Tab */
29
29
  PoKeyCodeEnum[PoKeyCodeEnum["tab"] = 9] = "tab";
30
+ /** Arrow Left */
31
+ PoKeyCodeEnum[PoKeyCodeEnum["left"] = 37] = "left";
32
+ /** Arrow Right */
33
+ PoKeyCodeEnum[PoKeyCodeEnum["right"] = 39] = "right";
30
34
  })(PoKeyCodeEnum || (PoKeyCodeEnum = {}));
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8ta2V5LWNvZGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZW51bXMvcG8ta2V5LWNvZGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQThCWDtBQTlCRCxXQUFZLGFBQWE7SUFDdkIsc0JBQXNCO0lBQ3RCLDREQUFjLENBQUE7SUFFZCxxQkFBcUI7SUFDckIsd0RBQVksQ0FBQTtJQUVaLGdCQUFnQjtJQUNoQiwyREFBYSxDQUFBO0lBRWIsYUFBYTtJQUNiLHNEQUFXLENBQUE7SUFFWCxZQUFZO0lBQ1osb0RBQVUsQ0FBQTtJQUVWLFVBQVU7SUFDVixnREFBUSxDQUFBO0lBRVIsY0FBYztJQUNkLGtEQUFTLENBQUE7SUFFVCxjQUFjO0lBQ2Qsa0RBQVMsQ0FBQTtJQUVULGFBQWE7SUFDYixvREFBVSxDQUFBO0lBRVYsVUFBVTtJQUNWLCtDQUFPLENBQUE7QUFDVCxDQUFDLEVBOUJXLGFBQWEsS0FBYixhQUFhLFFBOEJ4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogRW51bSBxdWUgY29udMOpbSBvcyB2YWxvcmVzIG51bcOpcmljb3MgZG9zICprZXlDb2RlcyouXG4gKi9cbmV4cG9ydCBlbnVtIFBvS2V5Q29kZUVudW0ge1xuICAvKiogU2V0YSBwYXJhIGJhaXhvICovXG4gIGFycm93RG93biA9IDQwLFxuXG4gIC8qKiBTZXRhIHBhcmEgY2ltYSAqL1xuICBhcnJvd1VwID0gMzgsXG5cbiAgLyoqIEJhY2tzcGFjZSAqL1xuICBiYWNrc3BhY2UgPSA4LFxuXG4gIC8qKiBEZWxldGUgKi9cbiAgZGVsZXRlID0gNDYsXG5cbiAgLyoqIEVudGVyICovXG4gIGVudGVyID0gMTMsXG5cbiAgLyoqIEVzYyAqL1xuICBlc2MgPSAyNyxcblxuICAvKiogVGVjbGEgSyAqL1xuICBrZXlLID0gNzUsXG5cbiAgLyoqIFRlY2xhIEwgKi9cbiAga2V5TCA9IDc2LFxuXG4gIC8qKiBFc3Bhw6dvICovXG4gIHNwYWNlID0gMzIsXG5cbiAgLyoqIFRhYiAqL1xuICB0YWIgPSA5XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8ta2V5LWNvZGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZW51bXMvcG8ta2V5LWNvZGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQW9DWDtBQXBDRCxXQUFZLGFBQWE7SUFDdkIsc0JBQXNCO0lBQ3RCLDREQUFjLENBQUE7SUFFZCxxQkFBcUI7SUFDckIsd0RBQVksQ0FBQTtJQUVaLGdCQUFnQjtJQUNoQiwyREFBYSxDQUFBO0lBRWIsYUFBYTtJQUNiLHNEQUFXLENBQUE7SUFFWCxZQUFZO0lBQ1osb0RBQVUsQ0FBQTtJQUVWLFVBQVU7SUFDVixnREFBUSxDQUFBO0lBRVIsY0FBYztJQUNkLGtEQUFTLENBQUE7SUFFVCxjQUFjO0lBQ2Qsa0RBQVMsQ0FBQTtJQUVULGFBQWE7SUFDYixvREFBVSxDQUFBO0lBRVYsVUFBVTtJQUNWLCtDQUFPLENBQUE7SUFFUCxpQkFBaUI7SUFDakIsa0RBQVMsQ0FBQTtJQUVULGtCQUFrQjtJQUNsQixvREFBVSxDQUFBO0FBQ1osQ0FBQyxFQXBDVyxhQUFhLEtBQWIsYUFBYSxRQW9DeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEVudW0gcXVlIGNvbnTDqW0gb3MgdmFsb3JlcyBudW3DqXJpY29zIGRvcyAqa2V5Q29kZXMqLlxuICovXG5leHBvcnQgZW51bSBQb0tleUNvZGVFbnVtIHtcbiAgLyoqIFNldGEgcGFyYSBiYWl4byAqL1xuICBhcnJvd0Rvd24gPSA0MCxcblxuICAvKiogU2V0YSBwYXJhIGNpbWEgKi9cbiAgYXJyb3dVcCA9IDM4LFxuXG4gIC8qKiBCYWNrc3BhY2UgKi9cbiAgYmFja3NwYWNlID0gOCxcblxuICAvKiogRGVsZXRlICovXG4gIGRlbGV0ZSA9IDQ2LFxuXG4gIC8qKiBFbnRlciAqL1xuICBlbnRlciA9IDEzLFxuXG4gIC8qKiBFc2MgKi9cbiAgZXNjID0gMjcsXG5cbiAgLyoqIFRlY2xhIEsgKi9cbiAga2V5SyA9IDc1LFxuXG4gIC8qKiBUZWNsYSBMICovXG4gIGtleUwgPSA3NixcblxuICAvKiogRXNwYcOnbyAqL1xuICBzcGFjZSA9IDMyLFxuXG4gIC8qKiBUYWIgKi9cbiAgdGFiID0gOSxcblxuICAvKiogQXJyb3cgTGVmdCAqL1xuICBsZWZ0ID0gMzcsXG5cbiAgLyoqIEFycm93IFJpZ2h0ICovXG4gIHJpZ2h0ID0gMzlcbn1cbiJdfQ==