@seniorsistemas/data-seniorx-core 3.1.0 → 3.2.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 (191) hide show
  1. package/core/constants/accordion.const.d.ts +4 -4
  2. package/core/constants/alert.const.d.ts +1 -1
  3. package/core/constants/autocomplete.const.d.ts +2 -2
  4. package/core/constants/badge.const.d.ts +1 -1
  5. package/core/constants/card.const.d.ts +8 -8
  6. package/core/constants/chips.const.d.ts +2 -2
  7. package/core/constants/code-editor.const.d.ts +4 -4
  8. package/core/constants/collapse-link.const.d.ts +2 -2
  9. package/core/constants/color-picker.const.d.ts +2 -2
  10. package/core/constants/combobox.const.d.ts +3 -3
  11. package/core/constants/context-selector.const.d.ts +1 -1
  12. package/core/constants/editable-overlay.const.d.ts +4 -4
  13. package/core/constants/fileupload.const.d.ts +3 -3
  14. package/core/constants/gantt.const.d.ts +1 -1
  15. package/core/constants/help-popover.const.d.ts +2 -2
  16. package/core/constants/hyperlink.const.d.ts +2 -2
  17. package/core/constants/info-sign.const.d.ts +1 -1
  18. package/core/constants/inline-edit.const.d.ts +4 -4
  19. package/core/constants/kanban.const.d.ts +2 -2
  20. package/core/constants/list.const.d.ts +1 -1
  21. package/core/constants/modalc.const.d.ts +1 -1
  22. package/core/constants/navigation-button.const.d.ts +3 -3
  23. package/core/constants/object-card.const.d.ts +2 -2
  24. package/core/constants/picklist.const.d.ts +2 -2
  25. package/core/constants/pin-code-field.const.d.ts +3 -3
  26. package/core/constants/popover.const.d.ts +1 -1
  27. package/core/constants/progressbar.const.d.ts +1 -1
  28. package/core/constants/radio.const.d.ts +2 -2
  29. package/core/constants/rating-scale.const.d.ts +1 -1
  30. package/core/constants/sidebar.const.d.ts +1 -1
  31. package/core/constants/slider.const.d.ts +1 -1
  32. package/core/constants/split-button.const.d.ts +2 -2
  33. package/core/constants/spotlight.const.d.ts +8 -8
  34. package/core/constants/star-rating.const.d.ts +2 -2
  35. package/core/constants/tab.const.d.ts +3 -3
  36. package/core/constants/table.const.d.ts +1 -0
  37. package/core/constants/thumbnails.const.d.ts +4 -4
  38. package/core/constants/token-list.const.d.ts +1 -1
  39. package/core/types/table-column.type.d.ts +4 -0
  40. package/core/types/table-options.type.d.ts +3 -0
  41. package/core/types/table-shared.type.d.ts +1 -1
  42. package/core/types/tile-select.type.d.ts +17 -0
  43. package/esm2022/core/constants/accordion.const.mjs +5 -5
  44. package/esm2022/core/constants/alert.const.mjs +2 -2
  45. package/esm2022/core/constants/autocomplete.const.mjs +3 -3
  46. package/esm2022/core/constants/badge.const.mjs +2 -2
  47. package/esm2022/core/constants/card.const.mjs +9 -9
  48. package/esm2022/core/constants/chips.const.mjs +3 -3
  49. package/esm2022/core/constants/code-editor.const.mjs +5 -5
  50. package/esm2022/core/constants/collapse-link.const.mjs +3 -3
  51. package/esm2022/core/constants/color-picker.const.mjs +3 -3
  52. package/esm2022/core/constants/combobox.const.mjs +7 -4
  53. package/esm2022/core/constants/context-selector.const.mjs +2 -2
  54. package/esm2022/core/constants/editable-overlay.const.mjs +5 -5
  55. package/esm2022/core/constants/fileupload.const.mjs +4 -4
  56. package/esm2022/core/constants/gantt.const.mjs +2 -2
  57. package/esm2022/core/constants/help-popover.const.mjs +3 -3
  58. package/esm2022/core/constants/hyperlink.const.mjs +3 -3
  59. package/esm2022/core/constants/info-sign.const.mjs +2 -2
  60. package/esm2022/core/constants/inline-edit.const.mjs +5 -5
  61. package/esm2022/core/constants/kanban.const.mjs +3 -3
  62. package/esm2022/core/constants/list.const.mjs +2 -2
  63. package/esm2022/core/constants/loading-state.const.mjs +2 -2
  64. package/esm2022/core/constants/modalc.const.mjs +2 -2
  65. package/esm2022/core/constants/navigation-button.const.mjs +4 -4
  66. package/esm2022/core/constants/object-card.const.mjs +3 -3
  67. package/esm2022/core/constants/picklist.const.mjs +3 -3
  68. package/esm2022/core/constants/pin-code-field.const.mjs +4 -4
  69. package/esm2022/core/constants/popover.const.mjs +8 -2
  70. package/esm2022/core/constants/progressbar.const.mjs +2 -2
  71. package/esm2022/core/constants/radio.const.mjs +3 -3
  72. package/esm2022/core/constants/rating-scale.const.mjs +2 -2
  73. package/esm2022/core/constants/sidebar.const.mjs +2 -2
  74. package/esm2022/core/constants/slider.const.mjs +2 -2
  75. package/esm2022/core/constants/split-button.const.mjs +3 -3
  76. package/esm2022/core/constants/spotlight.const.mjs +9 -9
  77. package/esm2022/core/constants/star-rating.const.mjs +3 -3
  78. package/esm2022/core/constants/tab.const.mjs +4 -4
  79. package/esm2022/core/constants/table.const.mjs +4 -3
  80. package/esm2022/core/constants/thumbnails.const.mjs +5 -5
  81. package/esm2022/core/constants/token-list.const.mjs +2 -2
  82. package/esm2022/core/data/fontawesome-v5-solid-icons.data.mjs +2 -2
  83. package/esm2022/core/types/table-column.type.mjs +1 -1
  84. package/esm2022/core/types/table-options.type.mjs +1 -1
  85. package/esm2022/core/types/table-shared.type.mjs +1 -1
  86. package/esm2022/core/types/tile-select.type.mjs +8 -0
  87. package/esm2022/core/utils/combobox.util.mjs +6 -6
  88. package/esm2022/features/accordion/components/accordion-item/accordion-item.component.mjs +3 -3
  89. package/esm2022/features/autocomplete/autocomplete.component.mjs +3 -3
  90. package/esm2022/features/bignumber-input/bignumber-input.component.mjs +1 -1
  91. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +3 -3
  92. package/esm2022/features/button/button.component.mjs +7 -3
  93. package/esm2022/features/card-list/card/card.component.mjs +2 -2
  94. package/esm2022/features/card-list/card-list.component.mjs +7 -3
  95. package/esm2022/features/chat/chat.component.mjs +4 -4
  96. package/esm2022/features/checkbox/checkbox.component.mjs +3 -3
  97. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +3 -3
  98. package/esm2022/features/chips/chips.component.mjs +3 -3
  99. package/esm2022/features/code-editor/code-editor.component.mjs +23 -5
  100. package/esm2022/features/color-picker/color-picker.component.mjs +3 -3
  101. package/esm2022/features/country-phone-picker/country-phone-picker.component.mjs +3 -3
  102. package/esm2022/features/currency/currency.component.mjs +1 -1
  103. package/esm2022/features/editable-overlay/editable-overlay.component.mjs +3 -3
  104. package/esm2022/features/empty-state/empty-state.component.mjs +1 -1
  105. package/esm2022/features/fileupload/fileupload.component.mjs +4 -4
  106. package/esm2022/features/filters/filters.component.mjs +3 -3
  107. package/esm2022/features/help-popover/help-popover.component.mjs +2 -2
  108. package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
  109. package/esm2022/features/icon-picker/icon-picker.component.mjs +1 -1
  110. package/esm2022/features/image-cropper/image-cropper.component.mjs +9 -9
  111. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  112. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +2 -2
  113. package/esm2022/features/list/list.component.mjs +7 -3
  114. package/esm2022/features/loading-state/loading-state.component.mjs +5 -5
  115. package/esm2022/features/localized-number-input/localized-number-input.component.mjs +4 -4
  116. package/esm2022/features/lookup/lookup.component.mjs +5 -5
  117. package/esm2022/features/mask/mask.component.mjs +4 -4
  118. package/esm2022/features/modal/modal.component.mjs +3 -3
  119. package/esm2022/features/modalc/modalc.component.mjs +3 -3
  120. package/esm2022/features/number-input/number-input.component.mjs +32 -5
  121. package/esm2022/features/object-card/components/object-card-field/object-card-field.component.mjs +1 -1
  122. package/esm2022/features/object-card/components/object-card-main/object-card-main.component.mjs +1 -1
  123. package/esm2022/features/object-card/object-card.component.mjs +2 -2
  124. package/esm2022/features/paginator/paginator.component.mjs +3 -3
  125. package/esm2022/features/panel/panel.component.mjs +6 -6
  126. package/esm2022/features/password-strength/password-strength.component.mjs +6 -6
  127. package/esm2022/features/picklist/picklist.component.mjs +6 -4
  128. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +3 -3
  129. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +11 -11
  130. package/esm2022/features/rating-scale/rating-scale.component.mjs +3 -3
  131. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +100 -7
  132. package/esm2022/features/row-card-list/row-card-list.component.mjs +7 -3
  133. package/esm2022/features/scaffold/scaffold.component.mjs +3 -3
  134. package/esm2022/features/searchbox/searchbox.component.mjs +4 -4
  135. package/esm2022/features/select-button/select-button.component.mjs +5 -5
  136. package/esm2022/features/sidebar/sidebar.component.mjs +3 -3
  137. package/esm2022/features/slider/slider.component.mjs +3 -3
  138. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +12 -12
  139. package/esm2022/features/spotlight/spotlight.component.mjs +2 -2
  140. package/esm2022/features/star-rating/star-rating.component.mjs +3 -3
  141. package/esm2022/features/switch/switch.component.mjs +4 -4
  142. package/esm2022/features/table/components/table-actions-menu.component.mjs +2 -2
  143. package/esm2022/features/table/components/table-cell-content.component.mjs +16 -10
  144. package/esm2022/features/table/table.component.mjs +46 -16
  145. package/esm2022/features/table/utils/table-visual.util.mjs +25 -7
  146. package/esm2022/features/textarea/textarea.component.mjs +3 -3
  147. package/esm2022/features/textbox/textbox.component.mjs +3 -3
  148. package/esm2022/features/tile-select/tile-select.component.mjs +80 -0
  149. package/esm2022/features/toast/toast.component.mjs +3 -3
  150. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +6 -6
  151. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
  152. package/esm2022/locales/en.json +4760 -4749
  153. package/esm2022/locales/es-CO.json +4760 -4749
  154. package/esm2022/locales/pt.json +4760 -4749
  155. package/esm2022/providers/features.provider.mjs +3 -1
  156. package/esm2022/public-api.mjs +3 -1
  157. package/features/button/button.component.d.ts +2 -1
  158. package/features/card-list/card-list.component.d.ts +3 -1
  159. package/features/code-editor/code-editor.component.d.ts +2 -1
  160. package/features/help-popover/help-popover.component.d.ts +1 -1
  161. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +4 -4
  162. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +2 -2
  163. package/features/list/list.component.d.ts +3 -1
  164. package/features/navigation-button/navigation-button.component.d.ts +3 -3
  165. package/features/number-input/number-input.component.d.ts +7 -1
  166. package/features/panel/panel.component.d.ts +1 -1
  167. package/features/picklist/picklist.component.d.ts +3 -2
  168. package/features/pin-code-field/pin-code-field.component.d.ts +3 -3
  169. package/features/row-card-list/row-card/row-card.component.d.ts +15 -2
  170. package/features/row-card-list/row-card-list.component.d.ts +3 -1
  171. package/features/spotlight/spotlight.component.d.ts +8 -8
  172. package/features/table/components/table-cell-content.component.d.ts +4 -1
  173. package/features/table/table.component.d.ts +9 -2
  174. package/features/table/utils/table-visual.util.d.ts +5 -0
  175. package/features/textarea/textarea.component.d.ts +1 -1
  176. package/features/thumbnails/components/thumbnail-item/thumbnail-item.component.d.ts +3 -3
  177. package/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.d.ts +1 -1
  178. package/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.d.ts +1 -1
  179. package/features/tile-select/tile-select.component.d.ts +21 -0
  180. package/fesm2022/seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-fK3MF8KJ.mjs +4 -0
  181. package/fesm2022/{seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs.map → seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-fK3MF8KJ.mjs.map} +1 -1
  182. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14859 -14534
  183. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  184. package/package.json +57 -22
  185. package/public-api.d.ts +3 -0
  186. package/src/locales/en.json +4760 -4749
  187. package/src/locales/es-CO.json +4760 -4749
  188. package/src/locales/pt.json +4760 -4749
  189. package/styles/sdc-global-variables.scss +2 -2
  190. package/styles.css +2 -2
  191. package/fesm2022/seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs +0 -4
@@ -432,7 +432,7 @@ export class AutocompleteComponent {
432
432
  useExisting: forwardRef(() => AutocompleteComponent),
433
433
  multi: true
434
434
  }
435
- ], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "sdc-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
435
+ ], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility_required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "sdc-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
436
436
  }
437
437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteComponent, decorators: [{
438
438
  type: Component,
@@ -454,7 +454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
454
454
  '[attr.aria-expanded]': 'isOpen',
455
455
  '[attr.aria-haspopup]': '"listbox"',
456
456
  '(window:resize)': 'onWindowResize()'
457
- }, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"] }]
457
+ }, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility_required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"] }]
458
458
  }], ctorParameters: () => [], propDecorators: { suggestions: [{
459
459
  type: Input
460
460
  }], placeholder: [{
@@ -520,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
520
520
  type: ViewChild,
521
521
  args: ['inputEl']
522
522
  }] } });
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEYsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNyQyxNQUFNLHlDQUF5QyxDQUFDO0FBTWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBOEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RyxPQUFPLEVBQUUseUJB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O3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZFBvc2l0aW9uLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBVVRPQ09NUExFVEVfREVGQVVMVF9ERUxBWSxcbiAgQVVUT0NPTVBMRVRFX0RFRkFVTFRfRU1QVFlfTUVTU0FHRV9LRVksXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX01JTl9MRU5HVEgsXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX1BMQUNFSE9MREVSX0tFWVxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9hdXRvY29tcGxldGUuY29uc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50LFxuICBBdXRvY29tcGxldGVMYXp5TG9hZEV2ZW50LFxuICBBdXRvY29tcGxldGVXcml0ZVZhbHVlXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvYXV0b2NvbXBsZXRlLnR5cGUnO1xuaW1wb3J0IHsgd2F0Y2hPdmVybGF5RGlzbWlzcywgdHlwZSBPdmVybGF5RGlzbWlzc1dhdGNoZXIgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL292ZXJsYXktZGlzbWlzcy51dGlsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLWNoaXAvYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50JztcblxudHlwZSBTdWdnZXN0aW9uV3JhcHBlcjxUPiA9IHtcbiAgZGF0YTogVDtcbiAgaWQ6IHN0cmluZztcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYXV0b2NvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImxpc3Rib3hcIicsXG4gICAgJyh3aW5kb3c6cmVzaXplKSc6ICdvbldpbmRvd1Jlc2l6ZSgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxsb2NhdGVDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5leHRJZCA9IEF1dG9jb21wbGV0ZUNvbXBvbmVudC5uZXh0SWQ7XG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50Lm5leHRJZCArPSAxO1xuICAgIHJldHVybiBgc2RjLWF1dG9jb21wbGV0ZS0ke25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgZGlzbWlzc1dhdGNoZXI6IE92ZXJsYXlEaXNtaXNzV2F0Y2hlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBUW10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBBVVRPQ09NUExFVEVfREVGQVVMVF9QTEFDRUhPTERFUl9LRVk7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25WYWx1ZT86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25MYWJlbD86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0VNUFRZX01FU1NBR0VfS0VZO1xuICBASW5wdXQoKSBkZWxheSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0RFTEFZO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbEl0ZW1TaXplID0gMzc7XG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd24gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2ttYXJrID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aFRvU2VhcmNoID0gQVVUT0NPTVBMRVRFX0RFRkFVTFRfTUlOX0xFTkdUSDtcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkYXRhS2V5Pzoga2V5b2YgVDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZUxhenlMb2FkRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHVuc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBrZXlVcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbXBsZXRlTWV0aG9kID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckRpdicpIHByb3RlY3RlZCBjb250YWluZXJEaXY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbCcpIHByb3RlY3RlZCBpbnB1dEVsPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50SWQgPSBBdXRvY29tcGxldGVDb21wb25lbnQuYWxsb2NhdGVDb21wb25lbnRJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3ZlcmxheVBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICBdO1xuXG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlID0gJyc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dFbXB0eU1lc3NhZ2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGZvY3VzZWRJbmRleCA9IC0xO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHZhbHVlczogVFtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBsYXp5UmVxdWVzdElkID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5pbnB1dFN1YmplY3QucGlwZShkZWJvdW5jZSgoKSA9PiB0aW1lcih0aGlzLmRlbGF5KSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgocXVlcnkpID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoVG9TZWFyY2ggJiYgcXVlcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyhxdWVyeSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShxdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5waXBlKGRlYm91bmNlKCgpID0+IHRpbWVyKHRoaXMuZGVsYXkpKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChxdWVyeSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxhenlSZXF1ZXN0SWQgKz0gMTtcbiAgICAgICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5sYXp5UmVxdWVzdElkO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRoaXMubGF6eUxvYWQuZW1pdCh7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgcmVzcG9uc2U6IChkYXRhOiBUW10pID0+IHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMubGF6eVJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHF1ZXJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzdWdnZXN0aW9ucyddICYmICF0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlciA9IHdhdGNoT3ZlcmxheURpc21pc3Moe1xuICAgICAgZ2V0VHJpZ2dlckVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGFpbmVyRGl2Py5uYXRpdmVFbGVtZW50ID8/IG51bGwsXG4gICAgICBpc09wZW46ICgpID0+IHRoaXMuaXNPcGVuLFxuICAgICAgb25EaXNtaXNzOiAoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpLFxuICAgICAgcm91dGVyOiB0aGlzLnJvdXRlclxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlcj8uZGVzdHJveSgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMubm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dG9jb21wbGV0ZSB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBhcnJheSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlLicpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gcXVlcnk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMubGF6eUxvYWRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoeyBxdWVyeSB9KTtcbiAgICAgIHRoaXMuaW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uIHx8IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IHRoaXMuZmluZEV4YWN0TWF0Y2godGhpcy5pbnB1dFZhbHVlKTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24obWF0Y2guZGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMubW92ZUZvY3VzQnkoMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNCeSgtMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRTdWdnZXN0aW9uKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleVVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMua2V5VXAuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gdGhpcy5hcmVTdWdnZXN0aW9uc0VxdWFsKHZhbHVlLCBzdWdnZXN0aW9uKSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXMsIHN1Z2dlc3Rpb25dO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWVzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBzdWdnZXN0aW9uO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzdWdnZXN0aW9uKTtcbiAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLm11bHRpcGxlID8gW10gOiBudWxsKTtcbiAgICB0aGlzLmNsZWFyZWQuZW1pdCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gIXRoaXMuYXJlU3VnZ2VzdGlvbnNFcXVhbCh2YWx1ZSwgc3VnZ2VzdGlvbikpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZXMpO1xuICAgIHRoaXMudW5zZWxlY3RlZC5lbWl0KHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5U3VnZ2VzdGlvbklkKF86IG51bWJlciwgaXRlbTogU3VnZ2VzdGlvbldyYXBwZXI8VD4pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb24uaXNTZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsYWJlbEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZURlc2NlbmRhbnRJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkSW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zW3RoaXMuZm9jdXNlZEluZGV4XT8uaWQgPz8gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd25QYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5uZXh0KHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2VEcm9wZG93blBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXggPSAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbFN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+IHRoaXMud3JhcFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbikpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJTdWdnZXN0aW9uc0J5UXVlcnkobm9ybWFsaXplZFF1ZXJ5LCBhbGxTdWdnZXN0aW9ucyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KHRoaXMudmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KHZhbHVlKSkpO1xuXG4gICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zID0gdGhpcy5tYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhmaWx0ZXJlZCwgc2VsZWN0ZWRJZHMpO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPT09IDAgJiYgbm9ybWFsaXplZFF1ZXJ5Lmxlbmd0aCA+PSAwO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCA/IDAgOiAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyU3VnZ2VzdGlvbnNCeVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uV3JhcHBlcjxUPltdKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IHN1Z2dlc3Rpb25zLmZpbHRlcigoc3VnZ2VzdGlvbikgPT5cbiAgICAgICAgdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICApXG4gICAgICA6IHN1Z2dlc3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhcbiAgICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSxcbiAgICBzZWxlY3RlZElkczogU2V0PHN0cmluZz5cbiAgKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb25zLm1hcCgoc3VnZ2VzdGlvbikgPT4gKHtcbiAgICAgIC4uLnN1Z2dlc3Rpb24sXG4gICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZElkcy5oYXMoc3VnZ2VzdGlvbi5pZClcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHdyYXBTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHN1Z2dlc3Rpb24sXG4gICAgICBpZDogdGhpcy5nZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbilcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbjogVCk6IHN0cmluZyB7XG4gICAgaWYgKCFzdWdnZXN0aW9uIHx8IHR5cGVvZiBzdWdnZXN0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyhzdWdnZXN0aW9uID8/ICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmplY3RTdWdnZXN0aW9uID0gc3VnZ2VzdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBzZWxlY3RlZEtleSA9IHRoaXMuZGF0YUtleSA/PyB0aGlzLnN1Z2dlc3Rpb25WYWx1ZTtcblxuICAgIGlmIChzZWxlY3RlZEtleSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IG9iamVjdFN1Z2dlc3Rpb25bc2VsZWN0ZWRLZXkgYXMgc3RyaW5nXTtcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeUlkZW50aXR5VmFsdWUoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlJZGVudGl0eVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlRm9jdXNCeShzdGVwOiAxIHwgLTEsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1pbih0aGlzLmZvY3VzZWRJbmRleCArIDEsIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1heCh0aGlzLmZvY3VzZWRJbmRleCAtIDEsIDApO1xuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RGb2N1c2VkU3VnZ2VzdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZVN1Z2dlc3Rpb24gPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnNbdGhpcy5mb2N1c2VkSW5kZXhdO1xuXG4gICAgaWYgKGFjdGl2ZVN1Z2dlc3Rpb24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24oYWN0aXZlU3VnZ2VzdGlvbi5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbjogVCk6IHVua25vd24ge1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9uVmFsdWUgfHwgIXN1Z2dlc3Rpb24gfHwgdHlwZW9mIHN1Z2dlc3Rpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25WYWx1ZV07XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9EaXNwbGF5VmFsdWUodmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkxhYmVsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWVbdGhpcy5zdWdnZXN0aW9uTGFiZWxdID8/ICcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IFRbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIFQgPT4gdHlwZW9mIGVudHJ5ICE9PSAnc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVTdWdnZXN0aW9uc0VxdWFsKGxlZnQ6IFQsIHJpZ2h0OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KGxlZnQpID09PSB0aGlzLmdldFN1Z2dlc3Rpb25JZGVudGl0eShyaWdodCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFeGFjdE1hdGNoKHF1ZXJ5OiBzdHJpbmcpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gcXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdWdnZXN0aW9uc1xuICAgICAgLm1hcCgoc3VnZ2VzdGlvbikgPT4gdGhpcy53cmFwU3VnZ2VzdGlvbihzdWdnZXN0aW9uKSlcbiAgICAgIC5maW5kKChzdWdnZXN0aW9uKSA9PiB0aGlzLnRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkudG9Mb3dlckNhc2UoKSA9PT0gbm9ybWFsaXplZFF1ZXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleF0/LmlkO1xuXG4gICAgICBpZiAoIWFjdGl2ZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWN0aXZlSWQpPy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAobGFiZWxLZXkoKSkge1xuICA8ZGl2IGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWwtcm93XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWxcIiBbZm9yXT1cImNvbXBvbmVudElkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2xhYmVsLXRleHRcIj5cbiAgICAgICAge3sgbGFiZWxLZXkoKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1maWVsZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG59XG5cbjxkaXZcbiAgI2NvbnRhaW5lckRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZVwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1pbnZhbGlkXT1cImludmFsaWRcIlxuICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZS0tbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICBbbmdDbGFzc109XCJpbnB1dENsYXNzXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NvbnRyb2xcIj5cbiAgICBAaWYgKG11bHRpcGxlICYmIHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NoaXBzXCI+XG4gICAgICBAZm9yIChzdWdnZXN0aW9uIG9mIHZhbHVlczsgdHJhY2sgc3VnZ2VzdGlvbikge1xuICAgICAgPHNkYy1hdXRvY29tcGxldGUtY2hpcFxuICAgICAgICBbc3VnZ2VzdGlvbl09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgW3N1Z2dlc3Rpb25MYWJlbF09XCJzdWdnZXN0aW9uTGFiZWxcIlxuICAgICAgICAoc3VnZ2VzdGlvblJlbW92ZWQpPVwicmVtb3ZlU3VnZ2VzdGlvbigkZXZlbnQpXCJcbiAgICAgID48L3NkYy1hdXRvY29tcGxldGUtY2hpcD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dEVsXG4gICAgICBbaWRdPVwiY29tcG9uZW50SWRcIlxuICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19pbnB1dFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsS2V5KCkgPyBudWxsIDogKHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwibXVsdGlwbGUgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRJZFwiXG4gICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbG9hZGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKCh2YWx1ZSB8fCB2YWx1ZXMubGVuZ3RoID4gMCB8fCBpbnB1dFZhbHVlKSAmJiAhZGlzYWJsZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fY2xlYXJcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGRyb3Bkb3duKSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX3RvZ2dsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJmYXNcIlxuICAgICAgW2NsYXNzLmZhLWNhcmV0LWRvd25dPVwiIWlzT3BlblwiXG4gICAgICBbY2xhc3MuZmEtY2FyZXQtdXBdPVwiaXNPcGVuXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoKHNob3dFbXB0eU1lc3NhZ2UgfHwgZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPiAwKSAmJiAhcmVhZG9ubHkpIHtcbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luXT1cIjhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VEcm9wZG93blBhbmVsKClcIlxuICAoZGV0YWNoKT1cImNsb3NlRHJvcGRvd25QYW5lbCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fcGFuZWxcIlxuICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRhaW5lckRpdj8ub2Zmc2V0V2lkdGggPz8gbnVsbFwiXG4gID5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGlzdFwiXG4gICAgPlxuICAgICAgQGlmICh2aXJ0dWFsU2Nyb2xsICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoID4gMTApIHtcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX192aWV3cG9ydFwiXG4gICAgICAgIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U3VnZ2VzdGlvbklkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tZm9jdXNlZF09XCJpID09PSBmb2N1c2VkSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tc2VsZWN0ZWRdPVwiaXNTdWdnZXN0aW9uU2VsZWN0ZWQoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24uZGF0YSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uLmRhdGEpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGNoZWNrbWFyayAmJiBtdWx0aXBsZSAmJiBpc1N1Z2dlc3Rpb25TZWxlY3RlZChzdWdnZXN0aW9uKSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB0b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyB0cmFjayBzdWdnZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGxpXG4gICAgICAgIFtpZF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS1mb2N1c2VkXT1cImkgPT09IGZvY3VzZWRJbmRleFwiXG4gICAgICAgIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlX19vcHRpb24tLXNlbGVjdGVkXT1cImlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY2hlY2ttYXJrICYmIG11bHRpcGxlICYmIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkgfX1cbiAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc2hvd0VtcHR5TWVzc2FnZSkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fZW1wdHlcIj57eyBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEYsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNyQyxNQUFNLHlDQUF5QyxDQUFDO0FBTWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBOEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RyxPQUFPLEVBQUUseUJB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O3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZFBvc2l0aW9uLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBVVRPQ09NUExFVEVfREVGQVVMVF9ERUxBWSxcbiAgQVVUT0NPTVBMRVRFX0RFRkFVTFRfRU1QVFlfTUVTU0FHRV9LRVksXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX01JTl9MRU5HVEgsXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX1BMQUNFSE9MREVSX0tFWVxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9hdXRvY29tcGxldGUuY29uc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50LFxuICBBdXRvY29tcGxldGVMYXp5TG9hZEV2ZW50LFxuICBBdXRvY29tcGxldGVXcml0ZVZhbHVlXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvYXV0b2NvbXBsZXRlLnR5cGUnO1xuaW1wb3J0IHsgd2F0Y2hPdmVybGF5RGlzbWlzcywgdHlwZSBPdmVybGF5RGlzbWlzc1dhdGNoZXIgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL292ZXJsYXktZGlzbWlzcy51dGlsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLWNoaXAvYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50JztcblxudHlwZSBTdWdnZXN0aW9uV3JhcHBlcjxUPiA9IHtcbiAgZGF0YTogVDtcbiAgaWQ6IHN0cmluZztcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYXV0b2NvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImxpc3Rib3hcIicsXG4gICAgJyh3aW5kb3c6cmVzaXplKSc6ICdvbldpbmRvd1Jlc2l6ZSgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxsb2NhdGVDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5leHRJZCA9IEF1dG9jb21wbGV0ZUNvbXBvbmVudC5uZXh0SWQ7XG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50Lm5leHRJZCArPSAxO1xuICAgIHJldHVybiBgc2RjLWF1dG9jb21wbGV0ZS0ke25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgZGlzbWlzc1dhdGNoZXI6IE92ZXJsYXlEaXNtaXNzV2F0Y2hlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBUW10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBBVVRPQ09NUExFVEVfREVGQVVMVF9QTEFDRUhPTERFUl9LRVk7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25WYWx1ZT86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25MYWJlbD86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0VNUFRZX01FU1NBR0VfS0VZO1xuICBASW5wdXQoKSBkZWxheSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0RFTEFZO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbEl0ZW1TaXplID0gMzc7XG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd24gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2ttYXJrID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aFRvU2VhcmNoID0gQVVUT0NPTVBMRVRFX0RFRkFVTFRfTUlOX0xFTkdUSDtcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkYXRhS2V5Pzoga2V5b2YgVDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZUxhenlMb2FkRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHVuc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBrZXlVcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbXBsZXRlTWV0aG9kID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckRpdicpIHByb3RlY3RlZCBjb250YWluZXJEaXY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbCcpIHByb3RlY3RlZCBpbnB1dEVsPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50SWQgPSBBdXRvY29tcGxldGVDb21wb25lbnQuYWxsb2NhdGVDb21wb25lbnRJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3ZlcmxheVBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICBdO1xuXG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlID0gJyc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dFbXB0eU1lc3NhZ2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGZvY3VzZWRJbmRleCA9IC0xO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHZhbHVlczogVFtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBsYXp5UmVxdWVzdElkID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5pbnB1dFN1YmplY3QucGlwZShkZWJvdW5jZSgoKSA9PiB0aW1lcih0aGlzLmRlbGF5KSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgocXVlcnkpID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoVG9TZWFyY2ggJiYgcXVlcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyhxdWVyeSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShxdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5waXBlKGRlYm91bmNlKCgpID0+IHRpbWVyKHRoaXMuZGVsYXkpKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChxdWVyeSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxhenlSZXF1ZXN0SWQgKz0gMTtcbiAgICAgICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5sYXp5UmVxdWVzdElkO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRoaXMubGF6eUxvYWQuZW1pdCh7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgcmVzcG9uc2U6IChkYXRhOiBUW10pID0+IHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMubGF6eVJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHF1ZXJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzdWdnZXN0aW9ucyddICYmICF0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlciA9IHdhdGNoT3ZlcmxheURpc21pc3Moe1xuICAgICAgZ2V0VHJpZ2dlckVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGFpbmVyRGl2Py5uYXRpdmVFbGVtZW50ID8/IG51bGwsXG4gICAgICBpc09wZW46ICgpID0+IHRoaXMuaXNPcGVuLFxuICAgICAgb25EaXNtaXNzOiAoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpLFxuICAgICAgcm91dGVyOiB0aGlzLnJvdXRlclxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlcj8uZGVzdHJveSgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMubm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dG9jb21wbGV0ZSB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBhcnJheSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlLicpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gcXVlcnk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMubGF6eUxvYWRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoeyBxdWVyeSB9KTtcbiAgICAgIHRoaXMuaW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uIHx8IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IHRoaXMuZmluZEV4YWN0TWF0Y2godGhpcy5pbnB1dFZhbHVlKTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24obWF0Y2guZGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMubW92ZUZvY3VzQnkoMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNCeSgtMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRTdWdnZXN0aW9uKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleVVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMua2V5VXAuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gdGhpcy5hcmVTdWdnZXN0aW9uc0VxdWFsKHZhbHVlLCBzdWdnZXN0aW9uKSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXMsIHN1Z2dlc3Rpb25dO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWVzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBzdWdnZXN0aW9uO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzdWdnZXN0aW9uKTtcbiAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLm11bHRpcGxlID8gW10gOiBudWxsKTtcbiAgICB0aGlzLmNsZWFyZWQuZW1pdCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gIXRoaXMuYXJlU3VnZ2VzdGlvbnNFcXVhbCh2YWx1ZSwgc3VnZ2VzdGlvbikpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZXMpO1xuICAgIHRoaXMudW5zZWxlY3RlZC5lbWl0KHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5U3VnZ2VzdGlvbklkKF86IG51bWJlciwgaXRlbTogU3VnZ2VzdGlvbldyYXBwZXI8VD4pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb24uaXNTZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsYWJlbEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZURlc2NlbmRhbnRJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkSW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zW3RoaXMuZm9jdXNlZEluZGV4XT8uaWQgPz8gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd25QYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5uZXh0KHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2VEcm9wZG93blBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXggPSAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbFN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+IHRoaXMud3JhcFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbikpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJTdWdnZXN0aW9uc0J5UXVlcnkobm9ybWFsaXplZFF1ZXJ5LCBhbGxTdWdnZXN0aW9ucyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KHRoaXMudmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KHZhbHVlKSkpO1xuXG4gICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zID0gdGhpcy5tYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhmaWx0ZXJlZCwgc2VsZWN0ZWRJZHMpO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPT09IDAgJiYgbm9ybWFsaXplZFF1ZXJ5Lmxlbmd0aCA+PSAwO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCA/IDAgOiAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyU3VnZ2VzdGlvbnNCeVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uV3JhcHBlcjxUPltdKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IHN1Z2dlc3Rpb25zLmZpbHRlcigoc3VnZ2VzdGlvbikgPT5cbiAgICAgICAgdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICApXG4gICAgICA6IHN1Z2dlc3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhcbiAgICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSxcbiAgICBzZWxlY3RlZElkczogU2V0PHN0cmluZz5cbiAgKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb25zLm1hcCgoc3VnZ2VzdGlvbikgPT4gKHtcbiAgICAgIC4uLnN1Z2dlc3Rpb24sXG4gICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZElkcy5oYXMoc3VnZ2VzdGlvbi5pZClcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHdyYXBTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHN1Z2dlc3Rpb24sXG4gICAgICBpZDogdGhpcy5nZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbilcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbjogVCk6IHN0cmluZyB7XG4gICAgaWYgKCFzdWdnZXN0aW9uIHx8IHR5cGVvZiBzdWdnZXN0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyhzdWdnZXN0aW9uID8/ICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmplY3RTdWdnZXN0aW9uID0gc3VnZ2VzdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBzZWxlY3RlZEtleSA9IHRoaXMuZGF0YUtleSA/PyB0aGlzLnN1Z2dlc3Rpb25WYWx1ZTtcblxuICAgIGlmIChzZWxlY3RlZEtleSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IG9iamVjdFN1Z2dlc3Rpb25bc2VsZWN0ZWRLZXkgYXMgc3RyaW5nXTtcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeUlkZW50aXR5VmFsdWUoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlJZGVudGl0eVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlRm9jdXNCeShzdGVwOiAxIHwgLTEsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1pbih0aGlzLmZvY3VzZWRJbmRleCArIDEsIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1heCh0aGlzLmZvY3VzZWRJbmRleCAtIDEsIDApO1xuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RGb2N1c2VkU3VnZ2VzdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZVN1Z2dlc3Rpb24gPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnNbdGhpcy5mb2N1c2VkSW5kZXhdO1xuXG4gICAgaWYgKGFjdGl2ZVN1Z2dlc3Rpb24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24oYWN0aXZlU3VnZ2VzdGlvbi5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbjogVCk6IHVua25vd24ge1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9uVmFsdWUgfHwgIXN1Z2dlc3Rpb24gfHwgdHlwZW9mIHN1Z2dlc3Rpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25WYWx1ZV07XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9EaXNwbGF5VmFsdWUodmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkxhYmVsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWVbdGhpcy5zdWdnZXN0aW9uTGFiZWxdID8/ICcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IFRbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIFQgPT4gdHlwZW9mIGVudHJ5ICE9PSAnc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVTdWdnZXN0aW9uc0VxdWFsKGxlZnQ6IFQsIHJpZ2h0OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KGxlZnQpID09PSB0aGlzLmdldFN1Z2dlc3Rpb25JZGVudGl0eShyaWdodCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFeGFjdE1hdGNoKHF1ZXJ5OiBzdHJpbmcpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gcXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdWdnZXN0aW9uc1xuICAgICAgLm1hcCgoc3VnZ2VzdGlvbikgPT4gdGhpcy53cmFwU3VnZ2VzdGlvbihzdWdnZXN0aW9uKSlcbiAgICAgIC5maW5kKChzdWdnZXN0aW9uKSA9PiB0aGlzLnRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkudG9Mb3dlckNhc2UoKSA9PT0gbm9ybWFsaXplZFF1ZXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleF0/LmlkO1xuXG4gICAgICBpZiAoIWFjdGl2ZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWN0aXZlSWQpPy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAobGFiZWxLZXkoKSkge1xuICA8ZGl2IGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWwtcm93XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWxcIiBbZm9yXT1cImNvbXBvbmVudElkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2xhYmVsLXRleHRcIj5cbiAgICAgICAge3sgbGFiZWxLZXkoKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1maWVsZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfcmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG59XG5cbjxkaXZcbiAgI2NvbnRhaW5lckRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZVwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1pbnZhbGlkXT1cImludmFsaWRcIlxuICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZS0tbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICBbbmdDbGFzc109XCJpbnB1dENsYXNzXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NvbnRyb2xcIj5cbiAgICBAaWYgKG11bHRpcGxlICYmIHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NoaXBzXCI+XG4gICAgICBAZm9yIChzdWdnZXN0aW9uIG9mIHZhbHVlczsgdHJhY2sgc3VnZ2VzdGlvbikge1xuICAgICAgPHNkYy1hdXRvY29tcGxldGUtY2hpcFxuICAgICAgICBbc3VnZ2VzdGlvbl09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgW3N1Z2dlc3Rpb25MYWJlbF09XCJzdWdnZXN0aW9uTGFiZWxcIlxuICAgICAgICAoc3VnZ2VzdGlvblJlbW92ZWQpPVwicmVtb3ZlU3VnZ2VzdGlvbigkZXZlbnQpXCJcbiAgICAgID48L3NkYy1hdXRvY29tcGxldGUtY2hpcD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dEVsXG4gICAgICBbaWRdPVwiY29tcG9uZW50SWRcIlxuICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19pbnB1dFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsS2V5KCkgPyBudWxsIDogKHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwibXVsdGlwbGUgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRJZFwiXG4gICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbG9hZGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKCh2YWx1ZSB8fCB2YWx1ZXMubGVuZ3RoID4gMCB8fCBpbnB1dFZhbHVlKSAmJiAhZGlzYWJsZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fY2xlYXJcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGRyb3Bkb3duKSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX3RvZ2dsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJmYXNcIlxuICAgICAgW2NsYXNzLmZhLWNhcmV0LWRvd25dPVwiIWlzT3BlblwiXG4gICAgICBbY2xhc3MuZmEtY2FyZXQtdXBdPVwiaXNPcGVuXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoKHNob3dFbXB0eU1lc3NhZ2UgfHwgZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPiAwKSAmJiAhcmVhZG9ubHkpIHtcbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luXT1cIjhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VEcm9wZG93blBhbmVsKClcIlxuICAoZGV0YWNoKT1cImNsb3NlRHJvcGRvd25QYW5lbCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fcGFuZWxcIlxuICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRhaW5lckRpdj8ub2Zmc2V0V2lkdGggPz8gbnVsbFwiXG4gID5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGlzdFwiXG4gICAgPlxuICAgICAgQGlmICh2aXJ0dWFsU2Nyb2xsICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoID4gMTApIHtcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX192aWV3cG9ydFwiXG4gICAgICAgIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U3VnZ2VzdGlvbklkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tZm9jdXNlZF09XCJpID09PSBmb2N1c2VkSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tc2VsZWN0ZWRdPVwiaXNTdWdnZXN0aW9uU2VsZWN0ZWQoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24uZGF0YSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uLmRhdGEpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGNoZWNrbWFyayAmJiBtdWx0aXBsZSAmJiBpc1N1Z2dlc3Rpb25TZWxlY3RlZChzdWdnZXN0aW9uKSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB0b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyB0cmFjayBzdWdnZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGxpXG4gICAgICAgIFtpZF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS1mb2N1c2VkXT1cImkgPT09IGZvY3VzZWRJbmRleFwiXG4gICAgICAgIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlX19vcHRpb24tLXNlbGVjdGVkXT1cImlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY2hlY2ttYXJrICYmIG11bHRpcGxlICYmIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkgfX1cbiAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc2hvd0VtcHR5TWVzc2FnZSkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fZW1wdHlcIj57eyBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==
@@ -45,7 +45,7 @@ export class BignumberInputComponent {
45
45
  useExisting: forwardRef(() => BignumberInputComponent),
46
46
  multi: true
47
47
  }
48
- ], ngImport: i0, template: "<sdc-number-input\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [label]=\"label\"\n [message]=\"message\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [invalid]=\"invalid\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"alignTo\"\n [allowNegative]=\"allowNegative\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipPosition]=\"infoTooltipPosition\"\n [infoTooltipEvent]=\"infoTooltipEvent\"\n (blur)=\"onTouched()\"\n></sdc-number-input>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: NumberInputComponent, selector: "sdc-number-input", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "min", "max", "step", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "addonLeft", "addonRight"], outputs: ["pasteRejected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ ], ngImport: i0, template: "<sdc-number-input\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [label]=\"label\"\n [message]=\"message\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [invalid]=\"invalid\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"alignTo\"\n [allowNegative]=\"allowNegative\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipPosition]=\"infoTooltipPosition\"\n [infoTooltipEvent]=\"infoTooltipEvent\"\n (blur)=\"onTouched()\"\n></sdc-number-input>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: NumberInputComponent, selector: "sdc-number-input", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "min", "max", "step", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "addonLeft", "addonRight", "showSpinners"], outputs: ["pasteRejected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BignumberInputComponent, decorators: [{
51
51
  type: Component,