@seniorsistemas/angular-components 19.9.7-develop-ad878012 → 19.9.8-develop-dbc2f1b4

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 (162) hide show
  1. package/card/lib/card/card.component.d.ts +6 -2
  2. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -1
  3. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -0
  4. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +3 -3
  5. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +8 -3
  6. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +4 -3
  7. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +3 -3
  8. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +4 -2
  9. package/esm2022/button/lib/button/button.component.mjs +3 -3
  10. package/esm2022/card/lib/card/card.component.mjs +13 -5
  11. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -3
  12. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +3 -3
  13. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +3 -3
  14. package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
  15. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +3 -2
  16. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +3 -3
  17. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +14 -9
  18. package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +3 -3
  19. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +3 -3
  20. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -1
  21. package/esm2022/drawer/lib/drawer/drawer.component.mjs +3 -3
  22. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  25. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  26. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
  27. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
  28. package/esm2022/editor/lib/editor/editor.component.mjs +3 -3
  29. package/esm2022/editor/lib/editor/toolbar-button/editor-toolbar-button.component.mjs +3 -3
  30. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +3 -3
  31. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +3 -3
  32. package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +2 -1
  33. package/esm2022/gantt/lib/gantt/gantt.component.mjs +3 -3
  34. package/esm2022/global-search/lib/global-search/global-search.component.mjs +16 -25
  35. package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +3 -3
  36. package/esm2022/input-text/lib/input-text/input-text.directive.mjs +3 -3
  37. package/esm2022/lib/locale/fallback.mjs +5 -2
  38. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +3 -3
  39. package/esm2022/object-card/lib/object-card/object-card.component.mjs +3 -3
  40. package/esm2022/paginator/lib/paginator/paginator.component.mjs +3 -3
  41. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +3 -3
  42. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +4 -10
  43. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +3 -3
  44. package/esm2022/select/lib/select/select.component.mjs +3 -3
  45. package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +3 -3
  46. package/esm2022/shared/lib/accessibility/datepicker-no-period-tab.directive.mjs +6 -6
  47. package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +3 -3
  48. package/esm2022/slider/lib/slider/slider.component.mjs +67 -65
  49. package/esm2022/slider/lib/slider/slider.module.mjs +2 -2
  50. package/esm2022/split-button/lib/split-button/split-button.component.mjs +3 -3
  51. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  52. package/esm2022/stepper/lib/stepper/stepper.component.mjs +3 -3
  53. package/esm2022/switch/lib/switch/switch.component.mjs +5 -19
  54. package/esm2022/tabs/lib/tabs/tabs.component.mjs +3 -3
  55. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  56. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +10 -3
  57. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +3 -3
  58. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
  59. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +4 -3
  60. package/esm2022/tile/lib/tile/tile.component.mjs +3 -3
  61. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +20 -3
  62. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +3 -3
  63. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +2 -2
  64. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +10 -5
  66. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -3
  68. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  70. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-card.mjs +12 -4
  72. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +2 -2
  74. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -2
  76. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -4
  78. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +2 -1
  80. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +2 -2
  82. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +13 -8
  84. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +2 -2
  86. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +14 -2
  88. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +2 -2
  90. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +12 -12
  92. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-editor.mjs +4 -4
  94. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +2 -2
  96. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +2 -2
  98. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +3 -2
  100. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +14 -23
  102. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +2 -2
  104. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-input-text.mjs +2 -2
  106. package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +2 -2
  108. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  110. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +2 -2
  112. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  113. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +2 -2
  114. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +3 -9
  116. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +2 -2
  118. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  120. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-select.mjs +2 -2
  122. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-shared.mjs +5 -5
  124. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +2 -2
  126. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-slider.mjs +67 -65
  128. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +2 -2
  130. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  132. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +2 -2
  134. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-switch.mjs +4 -18
  136. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +2 -2
  138. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
  140. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +9 -2
  142. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +2 -2
  144. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +5 -4
  146. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-tile.mjs +2 -2
  148. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-tree.mjs +20 -3
  150. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +2 -2
  152. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components.mjs +4 -1
  154. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  155. package/global-search/lib/global-search/global-search.component.d.ts +7 -3
  156. package/package.json +1 -1
  157. package/radio-button/lib/radio-button/radio-button.component.d.ts +0 -1
  158. package/slider/lib/slider/slider.component.d.ts +25 -7
  159. package/styles.css +5 -0
  160. package/switch/lib/switch/switch.component.d.ts +0 -2
  161. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +1 -0
  162. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +4 -0
@@ -17,31 +17,31 @@ const ARIA_LABEL_ATTR = 'aria-label';
17
17
  const FOCUS_STYLES = `
18
18
  .p-datepicker-day:focus-visible,
19
19
  .p-datepicker-day.s-datepicker-day-focused {
20
- outline: 2px solid var(--p-primary-color, #3b82f6) !important;
20
+ outline: 2px solid var(--s-focus-ring-color, #0090ff) !important;
21
21
  outline-offset: -2px;
22
22
  border-radius: 4px;
23
23
  }
24
24
  .p-datepicker-month:focus-visible,
25
25
  .p-datepicker-month.s-datepicker-day-focused {
26
- outline: 2px solid var(--p-primary-color, #3b82f6) !important;
26
+ outline: 2px solid var(--s-focus-ring-color, #0090ff) !important;
27
27
  outline-offset: -2px;
28
28
  border-radius: 4px;
29
29
  }
30
30
  .p-datepicker-year:focus-visible,
31
31
  .p-datepicker-year.s-datepicker-day-focused {
32
- outline: 2px solid var(--p-primary-color, #3b82f6) !important;
32
+ outline: 2px solid var(--s-focus-ring-color, #0090ff) !important;
33
33
  outline-offset: -2px;
34
34
  border-radius: 4px;
35
35
  }
36
36
  .p-datepicker-select-month:focus-visible,
37
37
  .p-datepicker-select-year:focus-visible {
38
- outline: 2px solid var(--p-primary-color, #3b82f6) !important;
38
+ outline: 2px solid var(--s-focus-ring-color, #0090ff) !important;
39
39
  outline-offset: 2px;
40
40
  border-radius: 4px;
41
41
  }
42
42
  .p-datepicker-prev-button:focus-visible,
43
43
  .p-datepicker-next-button:focus-visible {
44
- outline: 2px solid var(--p-primary-color, #3b82f6) !important;
44
+ outline: 2px solid var(--s-focus-ring-color, #0090ff) !important;
45
45
  outline-offset: 2px;
46
46
  border-radius: 50%;
47
47
  }
@@ -542,4 +542,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
542
542
  type: HostListener,
543
543
  args: ['onYearChange']
544
544
  }] } });
545
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uby1wZXJpb2QtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL2xpYi9hY2Nlc3NpYmlsaXR5L2RhdGVwaWNrZXItbm8tcGVyaW9kLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFaEQ7Ozs7R0FJRztBQUNILE1BQU0sY0FBYyxHQUFHLGdDQUFnQyxDQUFDO0FBRXhELCtGQUErRjtBQUMvRixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUIsOEZBQThGO0FBQzlGLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRWpDLDhFQUE4RTtBQUM5RSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQnBCLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBRXpDLE1BQU0sdUJBQXVCLEdBQTJCO0lBQ3BELGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsWUFBWSxFQUFFLGFBQWE7SUFDM0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIs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a0JBQWtCO3NCQUZ4QixZQUFZO3VCQUFDLGVBQWU7O3NCQUM1QixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgTE9DQUxFX0lELCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcblxuLyoqXG4gKiBDU1MgY3VzdG9taXphZG8gaW5qZXRhZG8gZ2xvYmFsbWVudGUgcGFyYSBmb2N1cy12aXNpYmxlIG5vcyBpbnRlcm5hbHMgZG8gRGF0ZVBpY2tlci5cbiAqIE5lY2Vzc8OhcmlvIHBvcnF1ZSBjb20gYGFwcGVuZFRvPVwiYm9keVwiYCBvIG92ZXJsYXkgZmljYSBmb3JhIGRvIGhvc3QgY29tcG9uZW50LFxuICogZSBlc3RpbG9zIGNvbSBgOmhvc3QgOjpuZy1kZWVwYCBvdSBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCBuw6NvIGFsY2Fuw6dhbS5cbiAqL1xuY29uc3QgRk9DVVNfU1RZTEVfSUQgPSAncy1kYXRlcGlja2VyLWExMXktZm9jdXMtc3R5bGVzJztcblxuLyoqIERlbGF5IGVtIG1zIHBhcmEgZm9jbyBww7NzLWFiZXJ0dXJhIGUgbmF2ZWdhw6fDo28gKHBlcm1pdGUgTlZEQSBwcm9jZXNzYXIgZGlhbG9nIGFubm91bmNlKS4gKi9cbmNvbnN0IEZPQ1VTX0RFTEFZX01TID0gNTA7XG5cbi8qKiBEZWxheSBlbSBtcyBwYXJhIGRlYm91bmNlIGRvIE11dGF0aW9uT2JzZXJ2ZXIgKGV2aXRhIHJlLWV4ZWN1w6fDo28gcG9yIHJpcHBsZS9hbmltYcOnw7VlcykuICovXG5jb25zdCBNVVRBVElPTl9ERUJPVU5DRV9NUyA9IDEwMDtcblxuLyoqIEF0dHJpYnV0ZSBuYW1lIGNvbnN0YW50IHRvIGF2b2lkIFNvbmFyUXViZSBsaXRlcmFsIGR1cGxpY2F0aW9uIHdhcm5pbmcuICovXG5jb25zdCBBUklBX0xBQkVMX0FUVFIgPSAnYXJpYS1sYWJlbCc7XG5jb25zdCBGT0NVU19TVFlMRVMgPSBgXG4ucC1kYXRlcGlja2VyLWRheTpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1kYXkucy1kYXRlcGlja2VyLWRheS1mb2N1c2VkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcC1wcmltYXJ5LWNvbG9yLCAjM2I4MmY2KSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5wLWRhdGVwaWNrZXItbW9udGg6Zm9jdXMtdmlzaWJsZSxcbi5wLWRhdGVwaWNrZXItbW9udGgucy1kYXRlcGlja2VyLWRheS1mb2N1c2VkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcC1wcmltYXJ5LWNvbG9yLCAjM2I4MmY2KSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5wLWRhdGVwaWNrZXIteWVhcjpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci15ZWFyLnMtZGF0ZXBpY2tlci1kYXktZm9jdXNlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXAtcHJpbWFyeS1jb2xvciwgIzNiODJmNikgIWltcG9ydGFudDtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4ucC1kYXRlcGlja2VyLXNlbGVjdC1tb250aDpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1zZWxlY3QteWVhcjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcC1wcmltYXJ5LWNvbG9yLCAjM2I4MmY2KSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLnAtZGF0ZXBpY2tlci1wcmV2LWJ1dHRvbjpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1uZXh0LWJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcC1wcmltYXJ5LWNvbG9yLCAjM2I4MmY2KSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuYDtcblxuLyoqXG4gKiBUcmFkdcOnw7VlcyBwdC1CUiBwYXJhIGFyaWEtbGFiZWxzIGRvIERhdGVQaWNrZXIgUHJpbWVORy5cbiAqIFByaW1lTkcgdXNhIGBnZXRUcmFuc2xhdGlvbigpYCBxdWUgcmV0b3JuYSBpbmdsw6pzIHBvciBwYWRyw6NvXG4gKiBzZSBuw6NvIGNvbmZpZ3VyYWRvIHZpYSBgUHJpbWVOR0NvbmZpZy5zZXRUcmFuc2xhdGlvbigpYC5cbiAqXG4gKiBLZXlzIGNvcnJlc3BvbmRlbSBhbyB0ZXh0byBleGF0byByZW5kZXJpemFkbyBwZWxvIFByaW1lTkcgbm8gRE9NOlxuICogLSBcIlByZXZpb3VzIE1vbnRoXCIgKG7Do28gXCJQcmV2IE1vbnRoXCIpXG4gKiAtIFwiQ2hvb3NlIERhdGVcIiwgXCJDaG9vc2UgTW9udGhcIiwgXCJDaG9vc2UgWWVhclwiXG4gKi9cbmNvbnN0IFBSRVZfREVDQURFX1BUID0gJ0TDqWNhZGEgYW50ZXJpb3InO1xuY29uc3QgUFJFVl9ERUNBREVfRVMgPSAnRMOpY2FkYSBhbnRlcmlvcic7XG5cbmNvbnN0IEFSSUFfVFJBTlNMQVRJT05TX1BUX0JSOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdDaG9vc2UgRGF0ZSc6ICdTZWxlY2lvbmFyIGRhdGEnLFxuICAgICdDaG9vc2UgTW9udGgnOiAnU2VsZWNpb25hciBtw6pzJyxcbiAgICAnQ2hvb3NlIFllYXInOiAnU2VsZWNpb25hciBhbm8nLFxuICAgICdQcmV2aW91cyBNb250aCc6ICdNw6pzIGFudGVyaW9yJyxcbiAgICAnTmV4dCBNb250aCc6ICdQcsOzeGltbyBtw6pzJyxcbiAgICAnUHJldmlvdXMgWWVhcic6ICdBbm8gYW50ZXJpb3InLFxuICAgICdOZXh0IFllYXInOiAnUHLDs3hpbW8gYW5vJyxcbiAgICAnUHJldmlvdXMgRGVjYWRlJzogUFJFVl9ERUNBREVfUFQsXG4gICAgJ05leHQgRGVjYWRlJzogJ1Byw7N4aW1hIGTDqWNhZGEnLFxuICAgICdQcmV2IE1vbnRoJzogJ03DqnMgYW50ZXJpb3InLFxuICAgICdQcmV2IFllYXInOiAnQW5vIGFudGVyaW9yJyxcbiAgICAnUHJldiBEZWNhZGUnOiBQUkVWX0RFQ0FERV9QVCxcbn07XG5cbmNvbnN0IEFSSUFfVFJBTlNMQVRJT05TX0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdDaG9vc2UgRGF0ZSc6ICdTZWxlY2Npb25hciBmZWNoYScsXG4gICAgJ0Nob29zZSBNb250aCc6ICdTZWxlY2Npb25hciBtZXMnLFxuICAgICdDaG9vc2UgWWVhcic6ICdTZWxlY2Npb25hciBhw7FvJyxcbiAgICAnUHJldmlvdXMgTW9udGgnOiAnTWVzIGFudGVyaW9yJyxcbiAgICAnTmV4dCBNb250aCc6ICdQcsOzeGltbyBtZXMnLFxuICAgICdQcmV2aW91cyBZZWFyJzogJ0HDsW8gYW50ZXJpb3InLFxuICAgICdOZXh0IFllYXInOiAnUHLDs3hpbW8gYcOxbycsXG4gICAgJ1ByZXZpb3VzIERlY2FkZSc6IFBSRVZfREVDQURFX0VTLFxuICAgICdOZXh0IERlY2FkZSc6ICdQcsOzeGltYSBkw6ljYWRhJyxcbiAgICAnUHJldiBNb250aCc6ICdNZXMgYW50ZXJpb3InLFxuICAgICdQcmV2IFllYXInOiAnQcOxbyBhbnRlcmlvcicsXG4gICAgJ1ByZXYgRGVjYWRlJzogUFJFVl9ERUNBREVfRVMsXG59O1xuXG5jb25zdCBBUklBX1RSQU5TTEFUSU9OUzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICAgJ3B0LUJSJzogQVJJQV9UUkFOU0xBVElPTlNfUFRfQlIsXG4gICAgJ3B0JzogQVJJQV9UUkFOU0xBVElPTlNfUFRfQlIsXG4gICAgJ2VzJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG4gICAgJ2VzLUNPJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG4gICAgJ2VzLUVTJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG59O1xuXG4vKipcbiAqIERpcmV0aXZhIHBhcmEgY29ycmlnaXIgYSBhY2Vzc2liaWxpZGFkZSBkbyBwYWluZWwgZG8gRGF0ZVBpY2tlciBQcmltZU5HLlxuICpcbiAqIFJlc29sdmUgb3Mgc2VndWludGVzIHByb2JsZW1hczpcbiAqXG4gKiAxLiAqKkZvY28gaW5pY2lhbCBhbyBhYnJpciBvdmVybGF5Kio6IG1vdmUgZm9jbyBwcm9ncmFtYXRpY2FtZW50ZSBwYXJhXG4gKiAgICBhIGPDqWx1bGEgc2VsZWNpb25hZGEsIGhvamUsIG91IHByaW1laXJhIGPDqWx1bGEgZGlzcG9uw612ZWwg4oCUIGV2aXRhbmRvXG4gKiAgICBxdWUgTlZEQSBsZWlhIHRvZGEgZXN0cnV0dXJhIGRvIGdyaWQgYW8gZW50cmFyIG5vIHBhaW5lbC5cbiAqXG4gKiAyLiAqKlJlLWZvY28gYW8gdHJvY2FyIHZpZXcgKG3DqnMvYW5vKSoqOiBhbyBuYXZlZ2FyIHBhcmEgdmlld3MgZGUgbcOqcyBvdVxuICogICAgYW5vLCBvIERPTSDDqSBkZXN0cnXDrWRvIGUgcmVjcmlhZG8uIFNlbSBpbnRlcnZlbsOnw6NvLCBmb2NvIGVzY2FwYSBwYXJhXG4gKiAgICBgPGJvZHk+YCBlIE5WREEgbMOqIGNvbnRlw7pkbyBmb3JhIGRvIG92ZXJsYXkuIEEgZGlyZXRpdmEgcmUtZm9jYSBvXG4gKiAgICBwcmltZWlybyBlbGVtZW50byBpbnRlcmF0aXZvIGRhIG5vdmEgdmlldy5cbiAqXG4gKiAzLiAqKkZvY3VzLXZpc2libGUgbm9zIGVsZW1lbnRvcyBpbnRlcm5vcyoqOiBpbmpldGEgQ1NTIGdsb2JhbCBjb21cbiAqICAgIG91dGxpbmUgcGFyYSB0b2RvcyBlbGVtZW50b3MgaW50ZXJhdGl2b3MgZG8gb3ZlcmxheSwgZ2FyYW50aW5kb1xuICogICAgZmVlZGJhY2sgdmlzdWFsIG1lc21vIGNvbSBgYXBwZW5kVG89XCJib2R5XCJgLlxuICpcbiAqIDQuICoqYXJpYS1sYWJlbCBlbnJpcXVlY2lkbyBub3MgZGF5IGNlbGxzKio6IFByaW1lTkcgc2V0YSBhcGVuYXMgb1xuICogICAgbsO6bWVybyBkbyBkaWEuIEEgZGlyZXRpdmEgc29icmVzY3JldmUgY29tIGRhdGEgY29tcGxldGEgZm9ybWF0YWRhXG4gKiAgICAoZXg6IFwiMyBkZSBqdW5obyBkZSAyMDI2LCBRdWFcIikg4oCUIE5WREEgbmFycmEgbGFiZWwgc2VtIHByZWNpc2FyXG4gKiAgICBjb250ZXh0dWFsaXphciB0b2RhIGdyaWQuXG4gKlxuICogNS4gKipWaWV3IGRlIG1lc2VzL2Fub3Mgc2VtIHRhYmluZGV4Kio6IHNwYW5zIGRlIG3DqnMvYW5vIHJlY2ViZW1cbiAqICAgIGB0YWJpbmRleD1cIjBcImAgZSBgcm9sZT1cIm9wdGlvblwiYCBwYXJhIG5hdmVnYcOnw6NvIHBvciB0ZWNsYWRvLlxuICpcbiAqIFV0aWxpemEgYE11dGF0aW9uT2JzZXJ2ZXJgIHBhcmEgZGV0ZWN0YXIgbXVkYW7Dp2FzIGludGVybmFzIGRlIHZpZXcsXG4gKiBqw6EgcXVlIFByaW1lTkcgbsOjbyBlbWl0ZSBldmVudG9zIHBhcmEgZXNzYXMgdHJhbnNpw6fDtWVzLlxuICpcbiAqICoqQ1NTKio6IEEgZGlyZXRpdmEgaW5qZXRhIHVtIGA8c3R5bGU+YCBnbG9iYWwgbm8gYDxoZWFkPmAgKHVtYSB2ZXopLlxuICogUGFyYSBwcm9qZXRvcyBxdWUgcHJlZmVyZW0gY29udHJvbGUgbWFudWFsLCBkZXNhYmlsaXRlIHZpYSBJbnB1dFxuICogYFtzRGF0ZXBpY2tlckluamVjdFN0eWxlc109XCJmYWxzZVwiYCBlIGltcG9ydGUgb3MgZXN0aWxvcyBtYW51YWxtZW50ZS5cbiAqXG4gKiBVc286IGA8cC1kYXRlcGlja2VyIHNEYXRlcGlja2VyTm9QZXJpb2RUYWIgLi4uPmBcbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHMtZGF0ZXBpY2tlcmAgKGA8cy1kYXRlcGlja2VyPmApLCBvIGNvbXBvbmVudGUgb2ZpY2lhbCBkb1xuICogRGVzaWduIFN5c3RlbSBkYSBTZW5pb3IsIHF1ZSBpbXBsZW1lbnRhIHRvZGEgYSBhY2Vzc2liaWxpZGFkZSBuZWNlc3PDoXJpYVxuICogbmF0aXZhbWVudGUuIEVzdGEgZGlyZXRpdmEgc2Vyw6EgcmVtb3ZpZGEgbmEgcHLDs3hpbWEgbWFqb3IgcmVsZWFzZS5cbiAqXG4gKiBAY2F0ZWdvcnkgRGlyZWN0aXZlc1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzRGF0ZXBpY2tlck5vUGVyaW9kVGFiXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlck5vUGVyaW9kVGFiRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaWNrZXIgPSBpbmplY3QoRGF0ZVBpY2tlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZm9jdXNMaXN0ZW5lckNsZWFudXBzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5qZWN0R2xvYmFsRm9jdXNTdHlsZXMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdvblNob3cnKVxuICAgIHB1YmxpYyBvblBhbmVsU2hvdygpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpeFBhbmVsQWNjZXNzaWJpbGl0eSgpO1xuICAgICAgICAgICAgLy8gTsOjbyBjaGFtYXIgZm9jdXNCZXN0VGFyZ2V0KCkgYXF1aSDigJQgUHJpbWVORyBpbml0Rm9jdXNhYmxlQ2VsbCgpXG4gICAgICAgICAgICAvLyBqw6EgbW92ZSBmb2NvIHBybyBkYXkgY2VsbCBjb20gdGFiaW5kZXg9XCIwXCIgbmEgYWJlcnR1cmEuXG4gICAgICAgICAgICAvLyBDaGFtYXIgZGUgbm92byBjYXVzYSBkb3VibGUtYW5ub3VuY2Ugbm8gTlZEQS5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vYnNlcnZlUGFuZWxDaGFuZ2VzKCksIE1VVEFUSU9OX0RFQk9VTkNFX01TKTtcbiAgICAgICAgfSwgRk9DVVNfREVMQVlfTVMpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uTW9udGhDaGFuZ2UnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uWWVhckNoYW5nZScpXG4gICAgcHVibGljIG9uTmF2aWdhdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpeFBhbmVsQWNjZXNzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0Jlc3RUYXJnZXQoKTtcbiAgICAgICAgfSwgRk9DVVNfREVMQVlfTVMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0T2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVGb2N1c0xpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmUgZm9jbyBwYXJhIG1lbGhvciBhbHZvIGRpc3BvbsOtdmVsIG5vIHBhaW5lbC5cbiAgICAgKiBVc2FkbyBhbyBhYnJpciBvdmVybGF5IGUgYW8gdHJvY2FyIHZpZXcgKG3DqnMvYW5vKS5cbiAgICAgKlxuICAgICAqIEFvIGFicmlyOiBldml0YSBxdWUgTlZEQSBsZWlhIHRvZGEgZXN0cnV0dXJhIGRvIGdyaWQuXG4gICAgICogQW8gdHJvY2FyIHZpZXc6IHByZXZpbmUgZm9jbyBlc2NhcGFyIHBhcmEgYDxib2R5PmAgcXVhbmRvXG4gICAgICogUHJpbWVORyBkZXN0csOzaSBET00gZGEgdmlldyBhbnRlcmlvci5cbiAgICAgKlxuICAgICAqIFByaW9yaWRhZGU6IHNlbGVjaW9uYWRvID4gaG9qZSA+IHByaW1laXJvIGRpc3BvbsOtdmVsLlxuICAgICAqIFB1bGEgc2UgZm9jbyBqw6EgZXN0w6Egbm8gdGFyZ2V0IGNvcnJldG8gKGV2aXRhIGRvdWJsZS1hbm5vdW5jZSBubyBOVkRBKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZvY3VzQmVzdFRhcmdldCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFuZWwgPSB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheTtcbiAgICAgICAgaWYgKCFwYW5lbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5maW5kRm9jdXNUYXJnZXQocGFuZWwpO1xuICAgICAgICBpZiAodGFyZ2V0ICYmIHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQudGFiSW5kZXggPSAwO1xuICAgICAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmpldGEgQ1NTIGdsb2JhbCBkZSBmb2N1cy12aXNpYmxlIG5vIGA8aGVhZD5gIGRvIGRvY3VtZW50by5cbiAgICAgKiBFeGVjdXRhIGFwZW5hcyB1bWEgdmV6IChpZGVtcG90ZW50ZSB2aWEgSUQgZG8gc3R5bGUgZWxlbWVudCkuXG4gICAgICogTmVjZXNzw6FyaW8gcG9ycXVlIG92ZXJsYXkgY29tIGBhcHBlbmRUbz1cImJvZHlcImAgZmljYSBmb3JhIGRvXG4gICAgICogZXNjb3BvIGRlIFZpZXdFbmNhcHN1bGF0aW9uIGRvIGNvbXBvbmVudGUgaG9zdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGluamVjdEdsb2JhbEZvY3VzU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChGT0NVU19TVFlMRV9JRCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdHlsZSwgJ2lkJywgRk9DVVNfU1RZTEVfSUQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdHlsZSwgJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChGT0NVU19TVFlMRVMpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHN0eWxlLCB0ZXh0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHN0eWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmNvbnRyYSBtZWxob3IgZWxlbWVudG8gcGFyYSByZWNlYmVyIGZvY28gbm8gcGFpbmVsIGF0dWFsLlxuICAgICAqIEJ1c2NhIGVtIG9yZGVtOiBzZWxlY2lvbmFkbyDihpIgaG9qZSDihpIgcHJpbWVpcm8gZGlzcG9uw612ZWwuXG4gICAgICogRnVuY2lvbmEgcGFyYSB2aWV3cyBkZSBkaWFzLCBtZXNlcyBlIGFub3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRm9jdXNUYXJnZXQocGFuZWw6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgLy8gVmlldyBkZSBkaWFzXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAnLnAtZGF0ZXBpY2tlci1kYXktc2VsZWN0ZWQsIC5wLWRhdGVwaWNrZXItZGF5W2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoc2VsZWN0ZWREYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZERheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItdG9kYXkgLnAtZGF0ZXBpY2tlci1kYXknKTtcbiAgICAgICAgaWYgKHRvZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdG9kYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWaWV3IGRlIG1lc2VzXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1tb250aC5wLWRhdGVwaWNrZXItbW9udGgtc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkTW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZE1vbnRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0TW9udGggPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1tb250aDpub3QoLnAtZGlzYWJsZWQpJyk7XG4gICAgICAgIGlmIChmaXJzdE1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RNb250aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZpZXcgZGUgYW5vc1xuICAgICAgICBjb25zdCBzZWxlY3RlZFllYXIgPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci15ZWFyLnAtZGF0ZXBpY2tlci15ZWFyLXNlbGVjdGVkJyk7XG4gICAgICAgIGlmIChzZWxlY3RlZFllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFllYXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RZZWFyID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXIteWVhcjpub3QoLnAtZGlzYWJsZWQpJyk7XG4gICAgICAgIGlmIChmaXJzdFllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFllYXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjazogcHJpbWVpcm8gZGF5IGNlbGwgZGlzcG9uw612ZWxcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXk6bm90KC5wLWRpc2FibGVkKScpO1xuICAgICAgICByZXR1cm4gZmlyc3REYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBsaWNhIGNvcnJlw6fDtWVzIGRlIGFjZXNzaWJpbGlkYWRlIG5vIHBhaW5lbCBkbyBEYXRlUGlja2VyLFxuICAgICAqIGluZGVwZW5kZW50ZSBkYSB2aWV3IGludGVybmEgYXRpdmEgKGRpYXMsIG1lc2VzIG91IGFub3MpLlxuICAgICAqL1xuICAgIHByaXZhdGUgZml4UGFuZWxBY2Nlc3NpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5O1xuICAgICAgICBpZiAoIXBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1zZWxlY3QtbW9udGgsIC5wLWRhdGVwaWNrZXItc2VsZWN0LXllYXInKS5mb3JFYWNoKChidG4pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ0biwgJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItbW9udGg6bm90KFt0YWJpbmRleF0pJykuZm9yRWFjaCgobW9udGgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKG1vbnRoLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobW9udGgsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci15ZWFyOm5vdChbdGFiaW5kZXhdKScpLmZvckVhY2goKHllYXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHllYXIsICd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh5ZWFyLCAncm9sZScsICdvcHRpb24nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcHBseUdyaWRjZWxsUm9sZVRvRGF5cyhwYW5lbCk7XG4gICAgICAgIHRoaXMuZW5yaWNoRGF5Q2VsbEFyaWFMYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLmVucmljaEdyaWRBcmlhTGFiZWwocGFuZWwpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZUFyaWFMYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLmZpeE5hdmlnYXRpb25CdXR0b25MYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLnJlbW92ZUFwcGxpY2F0aW9uUm9sZUZyb21Db250YWluZXIocGFuZWwpO1xuICAgICAgICB0aGlzLnNldHVwRm9jdXNUcmFja2luZyhwYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgYHJvbGU9XCJncmlkY2VsbFwiYCBub3MgYDxzcGFuIGNsYXNzPVwicC1kYXRlcGlja2VyLWRheVwiPmAgcXVlIHJlY2ViZW0gZm9jby5cbiAgICAgKlxuICAgICAqIFByaW1lTkcgY29sb2NhIGB0YWJpbmRleGAgbm8gYDxzcGFuPmAgZGVudHJvIGRvIGA8dGQ+YCwgbWFzIHNlbSByb2xlIGV4cGzDrWNpdG8uXG4gICAgICogTlZEQSBuw6NvIGVudHJhIGF1dG9tYXRpY2FtZW50ZSBlbSBmb2N1cyBtb2RlIHF1YW5kbyBmb2NhIHVtIGVsZW1lbnRvIHNlbVxuICAgICAqIHJvbGUgZGUgd2lkZ2V0IChncmlkY2VsbCwgYnV0dG9uLCBldGMpLiBSZXN1bHRhZG86IE5WREEgZmljYSBlbSBicm93c2UgbW9kZVxuICAgICAqIGUgbMOqIHRvZGEgYSB0YWJlbGEgc2VxdWVuY2lhbG1lbnRlIGFvIGludsOpcyBkZSBhbnVuY2lhciBzw7MgYSBjw6lsdWxhIGZvY2FkYS5cbiAgICAgKlxuICAgICAqIEFvIGFkaWNpb25hciBgcm9sZT1cImdyaWRjZWxsXCJgIG5vIHNwYW4gZm9jw6F2ZWwsIE5WREEgcmVjb25oZWNlIHF1ZSDDqSB1bVxuICAgICAqIHdpZGdldCBpbnRlcmF0aXZvIGUgZW50cmEgZW0gZm9jdXMgbW9kZSDigJQgYW51bmNpYW5kbyBhcGVuYXMgbyBhcmlhLWxhYmVsXG4gICAgICogZGEgY8OpbHVsYSBmb2NhZGEuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBseUdyaWRjZWxsUm9sZVRvRGF5cyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItZGF5Om5vdCgucC1kaXNhYmxlZCknKS5mb3JFYWNoKChkYXlTcGFuKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRheVNwYW4uZ2V0QXR0cmlidXRlKCdyb2xlJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkYXlTcGFuLCAncm9sZScsICdncmlkY2VsbCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnJpcXVlY2UgYGFyaWEtbGFiZWxgIGRvcyBkYXkgY2VsbHMgY29tIGRhdGEgY29tcGxldGEgZm9ybWF0YWRhLlxuICAgICAqIFByaW1lTkcgcG9yIHBhZHLDo28gdXNhIGFwZW5hcyBvIG7Dum1lcm8gZG8gZGlhLCBmb3LDp2FuZG8gTlZEQVxuICAgICAqIGEgbmFycmFyIGNvbnRleHRvIGRlIGdyaWQgKGxpbmhhL2NvbHVuYS93ZWVrZGF5KSBwYXJhIGluZm9ybWFyIGEgZGF0YS5cbiAgICAgKiBDb20gYXJpYS1sYWJlbCBjb21wbGV0bywgTlZEQSBuYXJyYSBkaXJldGFtZW50ZSBhIGRhdGEgc2VtIHZlcmJvc2lkYWRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5yaWNoRGF5Q2VsbEFyaWFMYWJlbHMocGFuZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY3VycmVudE1vbnRoLCBjdXJyZW50WWVhciB9ID0gdGhpcy5kYXRlUGlja2VyO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9udGggPT0gbnVsbCB8fCBjdXJyZW50WWVhciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3ZWVrZGF5SGVhZGVycyA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLXdlZWtkYXknKTtcbiAgICAgICAgY29uc3Qgd2Vla2RheXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHdlZWtkYXlIZWFkZXJzLmZvckVhY2goKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgd2Vla2RheXMucHVzaChoZWFkZXIudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJvd3MgPSBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXktdmlldyB0Ym9keSB0cicpO1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSByb3cucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ3RkJyk7XG4gICAgICAgICAgICBjZWxscy5mb3JFYWNoKChjZWxsLCBjZWxsSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXlTcGFuID0gY2VsbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXknKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRheVNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRheU51bWJlciA9IHBhcnNlSW50KGRheVNwYW4udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnMCcsIDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRheU51bWJlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNPdGhlck1vbnRoID0gY2VsbC5jbGFzc0xpc3QuY29udGFpbnMoJ3AtZGF0ZXBpY2tlci1vdGhlci1tb250aCcpO1xuICAgICAgICAgICAgICAgIGlmIChpc090aGVyTW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBkYXlOdW1iZXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JBcmlhTGFiZWwoZGF0ZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2Vla2RheSA9IHdlZWtkYXlzW2NlbGxJbmRleF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gd2Vla2RheSA/IGAke2Zvcm1hdHRlZERhdGV9LCAke3dlZWtkYXl9YCA6IGZvcm1hdHRlZERhdGU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkYXlTcGFuLCBBUklBX0xBQkVMX0FUVFIsIGFyaWFMYWJlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgYXJpYS1sYWJlbCBubyBncmlkIGNvbSBtw6pzL2FubyBhdHVhbCBwYXJhIGRhciBjb250ZXh0b1xuICAgICAqIGltZWRpYXRvIGFvIE5WREEgYW8gZW50cmFyIG5hIHRhYmVsYSBkZSBkaWFzLlxuICAgICAqIEV4ZW1wbG86IFwiQ2FsZW5kw6FyaW8sIEp1bmhvIDIwMjZcIlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5yaWNoR3JpZEFyaWFMYWJlbChwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLWRheS12aWV3W3JvbGU9XCJncmlkXCJdJyk7XG4gICAgICAgIGlmICghZ3JpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjdXJyZW50TW9udGgsIGN1cnJlbnRZZWFyIH0gPSB0aGlzLmRhdGVQaWNrZXI7XG4gICAgICAgIGlmIChjdXJyZW50TW9udGggPT0gbnVsbCB8fCBjdXJyZW50WWVhciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb250aE5hbWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCAxKS50b0xvY2FsZURhdGVTdHJpbmcoJ3B0LUJSJywge1xuICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNhcGl0YWxpemVkTW9udGggPSBtb250aE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBtb250aE5hbWUuc2xpY2UoMSk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gYENhbGVuZMOhcmlvLCAke2NhcGl0YWxpemVkTW9udGh9ICR7Y3VycmVudFllYXJ9YDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZ3JpZCwgQVJJQV9MQUJFTF9BVFRSLCBsYWJlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9ybWF0YSBkYXRhIHBhcmEgYXJpYS1sYWJlbCBsZWfDrXZlbCBwb3IgbGVpdG9yIGRlIHRlbGEuXG4gICAgICogU2VtcHJlIHVzYSBwdC1CUiBwYXJhIGdhcmFudGlyIGNvbnNpc3TDqm5jaWEgY29tIGxhYmVscyB0cmFkdXppZG9zLFxuICAgICAqIGluZGVwZW5kZW50ZSBkbyBMT0NBTEVfSUQgY29uZmlndXJhZG8gbm8gQW5ndWxhci5cbiAgICAgKiBFeGVtcGxvOiBcIjMgZGUganVuaG8gZGUgMjAyNlwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlRm9yQXJpYUxhYmVsKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdwdC1CUicsIHtcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtkYXRlLmdldERhdGUoKX0vJHtkYXRlLmdldE1vbnRoKCkgKyAxfS8ke2RhdGUuZ2V0RnVsbFllYXIoKX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0b3JuYSBsb2NhbGUgc3RyaW5nIHBhcmEgZm9ybWF0YcOnw6NvLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSB8fCAncHQtQlInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYWR1eiBhcmlhLWxhYmVscyBkb3MgYm90w7VlcyBkbyBoZWFkZXIgcXVlIFByaW1lTkcgcmVuZGVyaXphIGVtIGluZ2zDqnMuXG4gICAgICogUHJpbWVORyB1c2EgYGdldFRyYW5zbGF0aW9uKCdjaG9vc2VEYXRlJylgIGV0YywgcXVlIHJldG9ybmEgaW5nbMOqc1xuICAgICAqIHNlIGBQcmltZU5HQ29uZmlnLnNldFRyYW5zbGF0aW9uKClgIG7Do28gZm9pIGNvbmZpZ3VyYWRvIHBlbG8gcHJvamV0by5cbiAgICAgKlxuICAgICAqIEJ1c2NhIGJvdMO1ZXMgY29tIGFyaWEtbGFiZWwgZW0gaW5nbMOqcyBlIHRyYWR1eiBwcm8gbG9jYWxlIGF0dWFsLlxuICAgICAqL1xuICAgIHByaXZhdGUgdHJhbnNsYXRlQXJpYUxhYmVscyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy5nZXRUcmFuc2xhdGlvbnMoKTtcblxuICAgICAgICAvLyBEaWFsb2cgYXJpYS1sYWJlbCAoXCJDaG9vc2UgRGF0ZVwiKVxuICAgICAgICBjb25zdCBkaWFsb2cgPSBwYW5lbC5jbG9zZXN0KCdbcm9sZT1cImRpYWxvZ1wiXScpIHx8IHBhbmVsO1xuICAgICAgICBjb25zdCBkaWFsb2dMYWJlbCA9IGRpYWxvZy5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgaWYgKGRpYWxvZ0xhYmVsICYmIHRyYW5zbGF0aW9uc1tkaWFsb2dMYWJlbF0pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGRpYWxvZywgQVJJQV9MQUJFTF9BVFRSLCB0cmFuc2xhdGlvbnNbZGlhbG9nTGFiZWxdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJvdMO1ZXMgXCJDaG9vc2UgTW9udGhcIiBlIFwiQ2hvb3NlIFllYXJcIiBubyBoZWFkZXJcbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItc2VsZWN0LW1vbnRoLCAucC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyJykuZm9yRWFjaCgoYnRuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IGJ0bi5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCAmJiB0cmFuc2xhdGlvbnNbbGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnRuLCBBUklBX0xBQkVMX0FUVFIsIHRyYW5zbGF0aW9uc1tsYWJlbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3JyaWdlIGFyaWEtbGFiZWwgZG9zIGJvdMO1ZXMgcHJldi9uZXh0IGRvIFByaW1lTkcuXG4gICAgICogUHJpbWVORyB1c2EgYHAtYnV0dG9uYCBjb21wb25lbnQgcXVlIHNldGEgYGFyaWEtbGFiZWxgIG5vIGhvc3QgZWxlbWVudCBgPHAtYnV0dG9uPmAsXG4gICAgICogbWFzIE5WREEgZm9jYSBvIGA8YnV0dG9uPmAgaW50ZXJubyBxdWUgbsOjbyBoZXJkYSBvIGxhYmVsIGRvIGN1c3RvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogRXN0cnV0dXJhIERPTTogYDxwLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIj48YnV0dG9uIGNsYXNzPVwicC1kYXRlcGlja2VyLXByZXYtYnV0dG9uXCI+Li4uPC9idXR0b24+PC9wLWJ1dHRvbj5gXG4gICAgICpcbiAgICAgKiBGaXg6IGzDqiBhcmlhLWxhYmVsIGRvIGA8cC1idXR0b24+YCBob3N0LCB0cmFkdXosIGUgcHJvcGFnYSBwcm8gYDxidXR0b24+YCBpbnRlcm5vLlxuICAgICAqL1xuICAgIHByaXZhdGUgZml4TmF2aWdhdGlvbkJ1dHRvbkxhYmVscyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy5nZXRUcmFuc2xhdGlvbnMoKTtcblxuICAgICAgICAvLyBCdXNjYXIgPHAtYnV0dG9uPiBob3N0cyBxdWUgY29udMOpbSBvcyBib3TDtWVzIHByZXYvbmV4dFxuICAgICAgICBjb25zdCBwQnV0dG9ucyA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdwLWJ1dHRvbicpO1xuICAgICAgICBwQnV0dG9ucy5mb3JFYWNoKChwQnRuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckJ1dHRvbiA9IHBCdG4ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgJ2J1dHRvbi5wLWRhdGVwaWNrZXItcHJldi1idXR0b24sIGJ1dHRvbi5wLWRhdGVwaWNrZXItbmV4dC1idXR0b24nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFpbm5lckJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGxhYmVsID0gcEJ0bi5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKSB8fCAnJztcblxuICAgICAgICAgICAgLy8gVHJhZHV6aXJcbiAgICAgICAgICAgIGlmIChsYWJlbCAmJiB0cmFuc2xhdGlvbnNbbGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0cmFuc2xhdGlvbnNbbGFiZWxdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBCdG4sIEFSSUFfTEFCRUxfQVRUUiwgbGFiZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQcm9wYWdhciBwcm8gPGJ1dHRvbj4gaW50ZXJub1xuICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5uZXJCdXR0b24sIEFSSUFfTEFCRUxfQVRUUiwgbGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBkbyBjb250YWluZXIgZG8gY2FsZW5kw6FyaW8uXG4gICAgICpcbiAgICAgKiBQcmltZU5HIHNldGEgYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBubyBgLnAtZGF0ZXBpY2tlci1jYWxlbmRhci1jb250YWluZXJgXG4gICAgICogcGFyYSBxdWUgYXJyb3cga2V5cyBjaGVndWVtIG5vIEphdmFTY3JpcHQgc2VtIGludGVyY2VwdGHDp8OjbyBkbyBicm93c2UgbW9kZS5cbiAgICAgKiBQb3LDqW0gYHJvbGU9XCJncmlkXCJgIG5hIHRhYmxlIGrDoSBnYXJhbnRlIGVzc2UgY29tcG9ydGFtZW50byDigJQgTlZEQSBlbnRyYVxuICAgICAqIGF1dG9tYXRpY2FtZW50ZSBlbSBmb2N1cyBtb2RlIGFvIGZvY2FyIHVtYSBncmlkY2VsbC5cbiAgICAgKlxuICAgICAqIE8gYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBubyBjb250YWluZXIgUEFJIGNhdXNhIE5WREEgYSBkZXNwZWphIG8gY29udGXDumRvXG4gICAgICogdmlydHVhbCBkbyBjb250YWluZXIgaW50ZWlybyBhbyBlbnRyYXIgbm8gZGlhbG9nLCBhbnRlcyBkZSBwb3VzYXIgbmEgY8OpbHVsYS5cbiAgICAgKiBSZW1vdsOqLWxvIHJlc29sdmUgYSBsZWl0dXJhIGV4Y2Vzc2l2YSBzZW0gcXVlYnJhciBuYXZlZ2HDp8OjbyBwb3Igc2V0YXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVBcHBsaWNhdGlvblJvbGVGcm9tQ29udGFpbmVyKHBhbmVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLWNhbGVuZGFyLWNvbnRhaW5lcicpO1xuICAgICAgICBpZiAoY2FsZW5kYXJDb250YWluZXI/LmdldEF0dHJpYnV0ZSgncm9sZScpID09PSAnYXBwbGljYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShjYWxlbmRhckNvbnRhaW5lciwgJ3JvbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldG9ybmEgbWFwYSBkZSB0cmFkdcOnw7VlcyBwcm8gbG9jYWxlIGF0dWFsLlxuICAgICAqIFNlIGxvY2FsZSDDqSBpbmdsw6pzIG91IG7Do28gcmVjb25oZWNpZG8sIGZhbGxiYWNrIHByYSBwdC1CUlxuICAgICAqIChhc3N1bWltb3MgcXVlIGxhYmVscyBlbSBpbmdsw6pzIGRldmVtIHNlciB0cmFkdXppZG9zKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0aW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5nZXRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIEFSSUFfVFJBTlNMQVRJT05TW2xvY2FsZV1cbiAgICAgICAgICAgIHx8IEFSSUFfVFJBTlNMQVRJT05TW2xvY2FsZS5zcGxpdCgnLScpWzBdXVxuICAgICAgICAgICAgfHwgQVJJQV9UUkFOU0xBVElPTlNfUFRfQlI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgbGlzdGVuZXJzIGRlIGZvY3VzL2JsdXIgbm9zIGVsZW1lbnRvcyBpbnRlcmF0aXZvcyBwYXJhXG4gICAgICogZ2FyYW50aXIgaW5kaWNhZG9yIHZpc3VhbCBxdWFuZG8gYC5mb2N1cygpYCDDqSBjaGFtYWRvIHByb2dyYW1hdGljYW1lbnRlLlxuICAgICAqXG4gICAgICogYDpmb2N1cy12aXNpYmxlYCBwb2RlIG7Do28gc2VyIGFwbGljYWRvIHF1YW5kbyBmb2NvIMOpIG1vdmlkbyB2aWEgSlMsXG4gICAgICogZW50w6NvIHVzYW1vcyBjbGFzc2UgYXV4aWxpYXIgYHMtZGF0ZXBpY2tlci1kYXktZm9jdXNlZGAgY29tbyBmYWxsYmFjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldHVwRm9jdXNUcmFja2luZyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVGb2N1c0xpc3RlbmVycygpO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAnLnAtZGF0ZXBpY2tlci1kYXksIC5wLWRhdGVwaWNrZXItbW9udGgsIC5wLWRhdGVwaWNrZXIteWVhcidcbiAgICAgICAgKTtcbiAgICAgICAgZm9jdXNhYmxlRWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2xlYW51cCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAnZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ3MtZGF0ZXBpY2tlci1kYXktZm9jdXNlZCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBibHVyQ2xlYW51cCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAnYmx1cicsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsLCAncy1kYXRlcGlja2VyLWRheS1mb2N1c2VkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzLnB1c2goZm9jdXNDbGVhbnVwLCBibHVyQ2xlYW51cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBsaXN0ZW5lcnMgZGUgZm9jdXMvYmx1ciByZWdpc3RyYWRvcyBhbnRlcmlvcm1lbnRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVtb3ZlRm9jdXNMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzLmZvckVhY2goKGNsZWFudXApID0+IGNsZWFudXAoKSk7XG4gICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YSBtdWRhbsOnYXMgbm8gRE9NIGRvIHBhaW5lbCBwYXJhIHJlYXBsaWNhciBjb3JyZcOnw7Vlc1xuICAgICAqIHF1YW5kbyBvIFByaW1lTkcgdHJvY2EgYSB2aWV3IGludGVybmEgKGRpYXMg4oaSIG1lc2VzIOKGkiBhbm9zKS5cbiAgICAgKiBVc2EgZGVib3VuY2UgZSBzw7MgcmVhZ2UgYSBjaGlsZExpc3QgY2hhbmdlcyAobsOjbyBhdHRyaWJ1dGVzKVxuICAgICAqIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gY29tIGFzIHByw7NwcmlhcyBtdXRhw6fDtWVzIGRhIGRpcmV0aXZhLlxuICAgICAqL1xuICAgIHByaXZhdGUgb2JzZXJ2ZVBhbmVsQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0T2JzZXJ2ZXIoKTtcblxuICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5O1xuICAgICAgICBpZiAoIXBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVib3VuY2VUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTw7MgcmVhZ2lyIHNlIGhvdXZlIGFkacOnw6NvL3JlbW/Dp8OjbyBkZSBuw7NzICh0cm9jYSBkZSB2aWV3KVxuICAgICAgICAgICAgY29uc3QgaGFzU3RydWN0dXJhbENoYW5nZSA9IG11dGF0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnR5cGUgPT09ICdjaGlsZExpc3QnICYmIChtLmFkZGVkTm9kZXMubGVuZ3RoID4gMCB8fCBtLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNTdHJ1Y3R1cmFsQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGVib3VuY2VUaW1lcikge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZml4UGFuZWxBY2Nlc3NpYmlsaXR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0Jlc3RUYXJnZXQoKTtcbiAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIE1VVEFUSU9OX0RFQk9VTkNFX01TKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHBhbmVsLCB7XG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2Nvbm5lY3RPYnNlcnZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
545
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uby1wZXJpb2QtdGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQvc3JjL2xpYi9hY2Nlc3NpYmlsaXR5L2RhdGVwaWNrZXItbm8tcGVyaW9kLXRhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFaEQ7Ozs7R0FJRztBQUNILE1BQU0sY0FBYyxHQUFHLGdDQUFnQyxDQUFDO0FBRXhELCtGQUErRjtBQUMvRixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUIsOEZBQThGO0FBQzlGLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRWpDLDhFQUE4RTtBQUM5RSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQnBCLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDO0FBRXpDLE1BQU0sdUJBQXVCLEdBQTJCO0lBQ3BELGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsWUFBWSxFQUFFLGFBQWE7SUFDM0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIs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a0JBQWtCO3NCQUZ4QixZQUFZO3VCQUFDLGVBQWU7O3NCQUM1QixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgTE9DQUxFX0lELCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcblxuLyoqXG4gKiBDU1MgY3VzdG9taXphZG8gaW5qZXRhZG8gZ2xvYmFsbWVudGUgcGFyYSBmb2N1cy12aXNpYmxlIG5vcyBpbnRlcm5hbHMgZG8gRGF0ZVBpY2tlci5cbiAqIE5lY2Vzc8OhcmlvIHBvcnF1ZSBjb20gYGFwcGVuZFRvPVwiYm9keVwiYCBvIG92ZXJsYXkgZmljYSBmb3JhIGRvIGhvc3QgY29tcG9uZW50LFxuICogZSBlc3RpbG9zIGNvbSBgOmhvc3QgOjpuZy1kZWVwYCBvdSBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCBuw6NvIGFsY2Fuw6dhbS5cbiAqL1xuY29uc3QgRk9DVVNfU1RZTEVfSUQgPSAncy1kYXRlcGlja2VyLWExMXktZm9jdXMtc3R5bGVzJztcblxuLyoqIERlbGF5IGVtIG1zIHBhcmEgZm9jbyBww7NzLWFiZXJ0dXJhIGUgbmF2ZWdhw6fDo28gKHBlcm1pdGUgTlZEQSBwcm9jZXNzYXIgZGlhbG9nIGFubm91bmNlKS4gKi9cbmNvbnN0IEZPQ1VTX0RFTEFZX01TID0gNTA7XG5cbi8qKiBEZWxheSBlbSBtcyBwYXJhIGRlYm91bmNlIGRvIE11dGF0aW9uT2JzZXJ2ZXIgKGV2aXRhIHJlLWV4ZWN1w6fDo28gcG9yIHJpcHBsZS9hbmltYcOnw7VlcykuICovXG5jb25zdCBNVVRBVElPTl9ERUJPVU5DRV9NUyA9IDEwMDtcblxuLyoqIEF0dHJpYnV0ZSBuYW1lIGNvbnN0YW50IHRvIGF2b2lkIFNvbmFyUXViZSBsaXRlcmFsIGR1cGxpY2F0aW9uIHdhcm5pbmcuICovXG5jb25zdCBBUklBX0xBQkVMX0FUVFIgPSAnYXJpYS1sYWJlbCc7XG5jb25zdCBGT0NVU19TVFlMRVMgPSBgXG4ucC1kYXRlcGlja2VyLWRheTpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1kYXkucy1kYXRlcGlja2VyLWRheS1mb2N1c2VkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCAjMDA5MGZmKSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5wLWRhdGVwaWNrZXItbW9udGg6Zm9jdXMtdmlzaWJsZSxcbi5wLWRhdGVwaWNrZXItbW9udGgucy1kYXRlcGlja2VyLWRheS1mb2N1c2VkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCAjMDA5MGZmKSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5wLWRhdGVwaWNrZXIteWVhcjpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci15ZWFyLnMtZGF0ZXBpY2tlci1kYXktZm9jdXNlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXMtZm9jdXMtcmluZy1jb2xvciwgIzAwOTBmZikgIWltcG9ydGFudDtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4ucC1kYXRlcGlja2VyLXNlbGVjdC1tb250aDpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1zZWxlY3QteWVhcjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCAjMDA5MGZmKSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLnAtZGF0ZXBpY2tlci1wcmV2LWJ1dHRvbjpmb2N1cy12aXNpYmxlLFxuLnAtZGF0ZXBpY2tlci1uZXh0LWJ1dHRvbjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCAjMDA5MGZmKSAhaW1wb3J0YW50O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuYDtcblxuLyoqXG4gKiBUcmFkdcOnw7VlcyBwdC1CUiBwYXJhIGFyaWEtbGFiZWxzIGRvIERhdGVQaWNrZXIgUHJpbWVORy5cbiAqIFByaW1lTkcgdXNhIGBnZXRUcmFuc2xhdGlvbigpYCBxdWUgcmV0b3JuYSBpbmdsw6pzIHBvciBwYWRyw6NvXG4gKiBzZSBuw6NvIGNvbmZpZ3VyYWRvIHZpYSBgUHJpbWVOR0NvbmZpZy5zZXRUcmFuc2xhdGlvbigpYC5cbiAqXG4gKiBLZXlzIGNvcnJlc3BvbmRlbSBhbyB0ZXh0byBleGF0byByZW5kZXJpemFkbyBwZWxvIFByaW1lTkcgbm8gRE9NOlxuICogLSBcIlByZXZpb3VzIE1vbnRoXCIgKG7Do28gXCJQcmV2IE1vbnRoXCIpXG4gKiAtIFwiQ2hvb3NlIERhdGVcIiwgXCJDaG9vc2UgTW9udGhcIiwgXCJDaG9vc2UgWWVhclwiXG4gKi9cbmNvbnN0IFBSRVZfREVDQURFX1BUID0gJ0TDqWNhZGEgYW50ZXJpb3InO1xuY29uc3QgUFJFVl9ERUNBREVfRVMgPSAnRMOpY2FkYSBhbnRlcmlvcic7XG5cbmNvbnN0IEFSSUFfVFJBTlNMQVRJT05TX1BUX0JSOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdDaG9vc2UgRGF0ZSc6ICdTZWxlY2lvbmFyIGRhdGEnLFxuICAgICdDaG9vc2UgTW9udGgnOiAnU2VsZWNpb25hciBtw6pzJyxcbiAgICAnQ2hvb3NlIFllYXInOiAnU2VsZWNpb25hciBhbm8nLFxuICAgICdQcmV2aW91cyBNb250aCc6ICdNw6pzIGFudGVyaW9yJyxcbiAgICAnTmV4dCBNb250aCc6ICdQcsOzeGltbyBtw6pzJyxcbiAgICAnUHJldmlvdXMgWWVhcic6ICdBbm8gYW50ZXJpb3InLFxuICAgICdOZXh0IFllYXInOiAnUHLDs3hpbW8gYW5vJyxcbiAgICAnUHJldmlvdXMgRGVjYWRlJzogUFJFVl9ERUNBREVfUFQsXG4gICAgJ05leHQgRGVjYWRlJzogJ1Byw7N4aW1hIGTDqWNhZGEnLFxuICAgICdQcmV2IE1vbnRoJzogJ03DqnMgYW50ZXJpb3InLFxuICAgICdQcmV2IFllYXInOiAnQW5vIGFudGVyaW9yJyxcbiAgICAnUHJldiBEZWNhZGUnOiBQUkVWX0RFQ0FERV9QVCxcbn07XG5cbmNvbnN0IEFSSUFfVFJBTlNMQVRJT05TX0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdDaG9vc2UgRGF0ZSc6ICdTZWxlY2Npb25hciBmZWNoYScsXG4gICAgJ0Nob29zZSBNb250aCc6ICdTZWxlY2Npb25hciBtZXMnLFxuICAgICdDaG9vc2UgWWVhcic6ICdTZWxlY2Npb25hciBhw7FvJyxcbiAgICAnUHJldmlvdXMgTW9udGgnOiAnTWVzIGFudGVyaW9yJyxcbiAgICAnTmV4dCBNb250aCc6ICdQcsOzeGltbyBtZXMnLFxuICAgICdQcmV2aW91cyBZZWFyJzogJ0HDsW8gYW50ZXJpb3InLFxuICAgICdOZXh0IFllYXInOiAnUHLDs3hpbW8gYcOxbycsXG4gICAgJ1ByZXZpb3VzIERlY2FkZSc6IFBSRVZfREVDQURFX0VTLFxuICAgICdOZXh0IERlY2FkZSc6ICdQcsOzeGltYSBkw6ljYWRhJyxcbiAgICAnUHJldiBNb250aCc6ICdNZXMgYW50ZXJpb3InLFxuICAgICdQcmV2IFllYXInOiAnQcOxbyBhbnRlcmlvcicsXG4gICAgJ1ByZXYgRGVjYWRlJzogUFJFVl9ERUNBREVfRVMsXG59O1xuXG5jb25zdCBBUklBX1RSQU5TTEFUSU9OUzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICAgJ3B0LUJSJzogQVJJQV9UUkFOU0xBVElPTlNfUFRfQlIsXG4gICAgJ3B0JzogQVJJQV9UUkFOU0xBVElPTlNfUFRfQlIsXG4gICAgJ2VzJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG4gICAgJ2VzLUNPJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG4gICAgJ2VzLUVTJzogQVJJQV9UUkFOU0xBVElPTlNfRVMsXG59O1xuXG4vKipcbiAqIERpcmV0aXZhIHBhcmEgY29ycmlnaXIgYSBhY2Vzc2liaWxpZGFkZSBkbyBwYWluZWwgZG8gRGF0ZVBpY2tlciBQcmltZU5HLlxuICpcbiAqIFJlc29sdmUgb3Mgc2VndWludGVzIHByb2JsZW1hczpcbiAqXG4gKiAxLiAqKkZvY28gaW5pY2lhbCBhbyBhYnJpciBvdmVybGF5Kio6IG1vdmUgZm9jbyBwcm9ncmFtYXRpY2FtZW50ZSBwYXJhXG4gKiAgICBhIGPDqWx1bGEgc2VsZWNpb25hZGEsIGhvamUsIG91IHByaW1laXJhIGPDqWx1bGEgZGlzcG9uw612ZWwg4oCUIGV2aXRhbmRvXG4gKiAgICBxdWUgTlZEQSBsZWlhIHRvZGEgZXN0cnV0dXJhIGRvIGdyaWQgYW8gZW50cmFyIG5vIHBhaW5lbC5cbiAqXG4gKiAyLiAqKlJlLWZvY28gYW8gdHJvY2FyIHZpZXcgKG3DqnMvYW5vKSoqOiBhbyBuYXZlZ2FyIHBhcmEgdmlld3MgZGUgbcOqcyBvdVxuICogICAgYW5vLCBvIERPTSDDqSBkZXN0cnXDrWRvIGUgcmVjcmlhZG8uIFNlbSBpbnRlcnZlbsOnw6NvLCBmb2NvIGVzY2FwYSBwYXJhXG4gKiAgICBgPGJvZHk+YCBlIE5WREEgbMOqIGNvbnRlw7pkbyBmb3JhIGRvIG92ZXJsYXkuIEEgZGlyZXRpdmEgcmUtZm9jYSBvXG4gKiAgICBwcmltZWlybyBlbGVtZW50byBpbnRlcmF0aXZvIGRhIG5vdmEgdmlldy5cbiAqXG4gKiAzLiAqKkZvY3VzLXZpc2libGUgbm9zIGVsZW1lbnRvcyBpbnRlcm5vcyoqOiBpbmpldGEgQ1NTIGdsb2JhbCBjb21cbiAqICAgIG91dGxpbmUgcGFyYSB0b2RvcyBlbGVtZW50b3MgaW50ZXJhdGl2b3MgZG8gb3ZlcmxheSwgZ2FyYW50aW5kb1xuICogICAgZmVlZGJhY2sgdmlzdWFsIG1lc21vIGNvbSBgYXBwZW5kVG89XCJib2R5XCJgLlxuICpcbiAqIDQuICoqYXJpYS1sYWJlbCBlbnJpcXVlY2lkbyBub3MgZGF5IGNlbGxzKio6IFByaW1lTkcgc2V0YSBhcGVuYXMgb1xuICogICAgbsO6bWVybyBkbyBkaWEuIEEgZGlyZXRpdmEgc29icmVzY3JldmUgY29tIGRhdGEgY29tcGxldGEgZm9ybWF0YWRhXG4gKiAgICAoZXg6IFwiMyBkZSBqdW5obyBkZSAyMDI2LCBRdWFcIikg4oCUIE5WREEgbmFycmEgbGFiZWwgc2VtIHByZWNpc2FyXG4gKiAgICBjb250ZXh0dWFsaXphciB0b2RhIGdyaWQuXG4gKlxuICogNS4gKipWaWV3IGRlIG1lc2VzL2Fub3Mgc2VtIHRhYmluZGV4Kio6IHNwYW5zIGRlIG3DqnMvYW5vIHJlY2ViZW1cbiAqICAgIGB0YWJpbmRleD1cIjBcImAgZSBgcm9sZT1cIm9wdGlvblwiYCBwYXJhIG5hdmVnYcOnw6NvIHBvciB0ZWNsYWRvLlxuICpcbiAqIFV0aWxpemEgYE11dGF0aW9uT2JzZXJ2ZXJgIHBhcmEgZGV0ZWN0YXIgbXVkYW7Dp2FzIGludGVybmFzIGRlIHZpZXcsXG4gKiBqw6EgcXVlIFByaW1lTkcgbsOjbyBlbWl0ZSBldmVudG9zIHBhcmEgZXNzYXMgdHJhbnNpw6fDtWVzLlxuICpcbiAqICoqQ1NTKio6IEEgZGlyZXRpdmEgaW5qZXRhIHVtIGA8c3R5bGU+YCBnbG9iYWwgbm8gYDxoZWFkPmAgKHVtYSB2ZXopLlxuICogUGFyYSBwcm9qZXRvcyBxdWUgcHJlZmVyZW0gY29udHJvbGUgbWFudWFsLCBkZXNhYmlsaXRlIHZpYSBJbnB1dFxuICogYFtzRGF0ZXBpY2tlckluamVjdFN0eWxlc109XCJmYWxzZVwiYCBlIGltcG9ydGUgb3MgZXN0aWxvcyBtYW51YWxtZW50ZS5cbiAqXG4gKiBVc286IGA8cC1kYXRlcGlja2VyIHNEYXRlcGlja2VyTm9QZXJpb2RUYWIgLi4uPmBcbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHMtZGF0ZXBpY2tlcmAgKGA8cy1kYXRlcGlja2VyPmApLCBvIGNvbXBvbmVudGUgb2ZpY2lhbCBkb1xuICogRGVzaWduIFN5c3RlbSBkYSBTZW5pb3IsIHF1ZSBpbXBsZW1lbnRhIHRvZGEgYSBhY2Vzc2liaWxpZGFkZSBuZWNlc3PDoXJpYVxuICogbmF0aXZhbWVudGUuIEVzdGEgZGlyZXRpdmEgc2Vyw6EgcmVtb3ZpZGEgbmEgcHLDs3hpbWEgbWFqb3IgcmVsZWFzZS5cbiAqXG4gKiBAY2F0ZWdvcnkgRGlyZWN0aXZlc1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzRGF0ZXBpY2tlck5vUGVyaW9kVGFiXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlck5vUGVyaW9kVGFiRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaWNrZXIgPSBpbmplY3QoRGF0ZVBpY2tlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZm9jdXNMaXN0ZW5lckNsZWFudXBzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5qZWN0R2xvYmFsRm9jdXNTdHlsZXMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdvblNob3cnKVxuICAgIHB1YmxpYyBvblBhbmVsU2hvdygpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpeFBhbmVsQWNjZXNzaWJpbGl0eSgpO1xuICAgICAgICAgICAgLy8gTsOjbyBjaGFtYXIgZm9jdXNCZXN0VGFyZ2V0KCkgYXF1aSDigJQgUHJpbWVORyBpbml0Rm9jdXNhYmxlQ2VsbCgpXG4gICAgICAgICAgICAvLyBqw6EgbW92ZSBmb2NvIHBybyBkYXkgY2VsbCBjb20gdGFiaW5kZXg9XCIwXCIgbmEgYWJlcnR1cmEuXG4gICAgICAgICAgICAvLyBDaGFtYXIgZGUgbm92byBjYXVzYSBkb3VibGUtYW5ub3VuY2Ugbm8gTlZEQS5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vYnNlcnZlUGFuZWxDaGFuZ2VzKCksIE1VVEFUSU9OX0RFQk9VTkNFX01TKTtcbiAgICAgICAgfSwgRk9DVVNfREVMQVlfTVMpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uTW9udGhDaGFuZ2UnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uWWVhckNoYW5nZScpXG4gICAgcHVibGljIG9uTmF2aWdhdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpeFBhbmVsQWNjZXNzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0Jlc3RUYXJnZXQoKTtcbiAgICAgICAgfSwgRk9DVVNfREVMQVlfTVMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0T2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVGb2N1c0xpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmUgZm9jbyBwYXJhIG1lbGhvciBhbHZvIGRpc3BvbsOtdmVsIG5vIHBhaW5lbC5cbiAgICAgKiBVc2FkbyBhbyBhYnJpciBvdmVybGF5IGUgYW8gdHJvY2FyIHZpZXcgKG3DqnMvYW5vKS5cbiAgICAgKlxuICAgICAqIEFvIGFicmlyOiBldml0YSBxdWUgTlZEQSBsZWlhIHRvZGEgZXN0cnV0dXJhIGRvIGdyaWQuXG4gICAgICogQW8gdHJvY2FyIHZpZXc6IHByZXZpbmUgZm9jbyBlc2NhcGFyIHBhcmEgYDxib2R5PmAgcXVhbmRvXG4gICAgICogUHJpbWVORyBkZXN0csOzaSBET00gZGEgdmlldyBhbnRlcmlvci5cbiAgICAgKlxuICAgICAqIFByaW9yaWRhZGU6IHNlbGVjaW9uYWRvID4gaG9qZSA+IHByaW1laXJvIGRpc3BvbsOtdmVsLlxuICAgICAqIFB1bGEgc2UgZm9jbyBqw6EgZXN0w6Egbm8gdGFyZ2V0IGNvcnJldG8gKGV2aXRhIGRvdWJsZS1hbm5vdW5jZSBubyBOVkRBKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZvY3VzQmVzdFRhcmdldCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFuZWwgPSB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheTtcbiAgICAgICAgaWYgKCFwYW5lbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5maW5kRm9jdXNUYXJnZXQocGFuZWwpO1xuICAgICAgICBpZiAodGFyZ2V0ICYmIHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQudGFiSW5kZXggPSAwO1xuICAgICAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmpldGEgQ1NTIGdsb2JhbCBkZSBmb2N1cy12aXNpYmxlIG5vIGA8aGVhZD5gIGRvIGRvY3VtZW50by5cbiAgICAgKiBFeGVjdXRhIGFwZW5hcyB1bWEgdmV6IChpZGVtcG90ZW50ZSB2aWEgSUQgZG8gc3R5bGUgZWxlbWVudCkuXG4gICAgICogTmVjZXNzw6FyaW8gcG9ycXVlIG92ZXJsYXkgY29tIGBhcHBlbmRUbz1cImJvZHlcImAgZmljYSBmb3JhIGRvXG4gICAgICogZXNjb3BvIGRlIFZpZXdFbmNhcHN1bGF0aW9uIGRvIGNvbXBvbmVudGUgaG9zdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGluamVjdEdsb2JhbEZvY3VzU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChGT0NVU19TVFlMRV9JRCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdHlsZSwgJ2lkJywgRk9DVVNfU1RZTEVfSUQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdHlsZSwgJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChGT0NVU19TVFlMRVMpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHN0eWxlLCB0ZXh0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHN0eWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmNvbnRyYSBtZWxob3IgZWxlbWVudG8gcGFyYSByZWNlYmVyIGZvY28gbm8gcGFpbmVsIGF0dWFsLlxuICAgICAqIEJ1c2NhIGVtIG9yZGVtOiBzZWxlY2lvbmFkbyDihpIgaG9qZSDihpIgcHJpbWVpcm8gZGlzcG9uw612ZWwuXG4gICAgICogRnVuY2lvbmEgcGFyYSB2aWV3cyBkZSBkaWFzLCBtZXNlcyBlIGFub3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRm9jdXNUYXJnZXQocGFuZWw6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgLy8gVmlldyBkZSBkaWFzXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5ID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAnLnAtZGF0ZXBpY2tlci1kYXktc2VsZWN0ZWQsIC5wLWRhdGVwaWNrZXItZGF5W2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoc2VsZWN0ZWREYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZERheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItdG9kYXkgLnAtZGF0ZXBpY2tlci1kYXknKTtcbiAgICAgICAgaWYgKHRvZGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdG9kYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWaWV3IGRlIG1lc2VzXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1tb250aC5wLWRhdGVwaWNrZXItbW9udGgtc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkTW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZE1vbnRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0TW9udGggPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1tb250aDpub3QoLnAtZGlzYWJsZWQpJyk7XG4gICAgICAgIGlmIChmaXJzdE1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RNb250aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZpZXcgZGUgYW5vc1xuICAgICAgICBjb25zdCBzZWxlY3RlZFllYXIgPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci15ZWFyLnAtZGF0ZXBpY2tlci15ZWFyLXNlbGVjdGVkJyk7XG4gICAgICAgIGlmIChzZWxlY3RlZFllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFllYXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RZZWFyID0gcGFuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXIteWVhcjpub3QoLnAtZGlzYWJsZWQpJyk7XG4gICAgICAgIGlmIChmaXJzdFllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdFllYXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjazogcHJpbWVpcm8gZGF5IGNlbGwgZGlzcG9uw612ZWxcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBwYW5lbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXk6bm90KC5wLWRpc2FibGVkKScpO1xuICAgICAgICByZXR1cm4gZmlyc3REYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBsaWNhIGNvcnJlw6fDtWVzIGRlIGFjZXNzaWJpbGlkYWRlIG5vIHBhaW5lbCBkbyBEYXRlUGlja2VyLFxuICAgICAqIGluZGVwZW5kZW50ZSBkYSB2aWV3IGludGVybmEgYXRpdmEgKGRpYXMsIG1lc2VzIG91IGFub3MpLlxuICAgICAqL1xuICAgIHByaXZhdGUgZml4UGFuZWxBY2Nlc3NpYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5O1xuICAgICAgICBpZiAoIXBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1zZWxlY3QtbW9udGgsIC5wLWRhdGVwaWNrZXItc2VsZWN0LXllYXInKS5mb3JFYWNoKChidG4pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ0biwgJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItbW9udGg6bm90KFt0YWJpbmRleF0pJykuZm9yRWFjaCgobW9udGgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKG1vbnRoLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobW9udGgsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci15ZWFyOm5vdChbdGFiaW5kZXhdKScpLmZvckVhY2goKHllYXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHllYXIsICd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh5ZWFyLCAncm9sZScsICdvcHRpb24nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcHBseUdyaWRjZWxsUm9sZVRvRGF5cyhwYW5lbCk7XG4gICAgICAgIHRoaXMuZW5yaWNoRGF5Q2VsbEFyaWFMYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLmVucmljaEdyaWRBcmlhTGFiZWwocGFuZWwpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZUFyaWFMYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLmZpeE5hdmlnYXRpb25CdXR0b25MYWJlbHMocGFuZWwpO1xuICAgICAgICB0aGlzLnJlbW92ZUFwcGxpY2F0aW9uUm9sZUZyb21Db250YWluZXIocGFuZWwpO1xuICAgICAgICB0aGlzLnNldHVwRm9jdXNUcmFja2luZyhwYW5lbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgYHJvbGU9XCJncmlkY2VsbFwiYCBub3MgYDxzcGFuIGNsYXNzPVwicC1kYXRlcGlja2VyLWRheVwiPmAgcXVlIHJlY2ViZW0gZm9jby5cbiAgICAgKlxuICAgICAqIFByaW1lTkcgY29sb2NhIGB0YWJpbmRleGAgbm8gYDxzcGFuPmAgZGVudHJvIGRvIGA8dGQ+YCwgbWFzIHNlbSByb2xlIGV4cGzDrWNpdG8uXG4gICAgICogTlZEQSBuw6NvIGVudHJhIGF1dG9tYXRpY2FtZW50ZSBlbSBmb2N1cyBtb2RlIHF1YW5kbyBmb2NhIHVtIGVsZW1lbnRvIHNlbVxuICAgICAqIHJvbGUgZGUgd2lkZ2V0IChncmlkY2VsbCwgYnV0dG9uLCBldGMpLiBSZXN1bHRhZG86IE5WREEgZmljYSBlbSBicm93c2UgbW9kZVxuICAgICAqIGUgbMOqIHRvZGEgYSB0YWJlbGEgc2VxdWVuY2lhbG1lbnRlIGFvIGludsOpcyBkZSBhbnVuY2lhciBzw7MgYSBjw6lsdWxhIGZvY2FkYS5cbiAgICAgKlxuICAgICAqIEFvIGFkaWNpb25hciBgcm9sZT1cImdyaWRjZWxsXCJgIG5vIHNwYW4gZm9jw6F2ZWwsIE5WREEgcmVjb25oZWNlIHF1ZSDDqSB1bVxuICAgICAqIHdpZGdldCBpbnRlcmF0aXZvIGUgZW50cmEgZW0gZm9jdXMgbW9kZSDigJQgYW51bmNpYW5kbyBhcGVuYXMgbyBhcmlhLWxhYmVsXG4gICAgICogZGEgY8OpbHVsYSBmb2NhZGEuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBseUdyaWRjZWxsUm9sZVRvRGF5cyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItZGF5Om5vdCgucC1kaXNhYmxlZCknKS5mb3JFYWNoKChkYXlTcGFuKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRheVNwYW4uZ2V0QXR0cmlidXRlKCdyb2xlJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkYXlTcGFuLCAncm9sZScsICdncmlkY2VsbCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnJpcXVlY2UgYGFyaWEtbGFiZWxgIGRvcyBkYXkgY2VsbHMgY29tIGRhdGEgY29tcGxldGEgZm9ybWF0YWRhLlxuICAgICAqIFByaW1lTkcgcG9yIHBhZHLDo28gdXNhIGFwZW5hcyBvIG7Dum1lcm8gZG8gZGlhLCBmb3LDp2FuZG8gTlZEQVxuICAgICAqIGEgbmFycmFyIGNvbnRleHRvIGRlIGdyaWQgKGxpbmhhL2NvbHVuYS93ZWVrZGF5KSBwYXJhIGluZm9ybWFyIGEgZGF0YS5cbiAgICAgKiBDb20gYXJpYS1sYWJlbCBjb21wbGV0bywgTlZEQSBuYXJyYSBkaXJldGFtZW50ZSBhIGRhdGEgc2VtIHZlcmJvc2lkYWRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5yaWNoRGF5Q2VsbEFyaWFMYWJlbHMocGFuZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY3VycmVudE1vbnRoLCBjdXJyZW50WWVhciB9ID0gdGhpcy5kYXRlUGlja2VyO1xuXG4gICAgICAgIGlmIChjdXJyZW50TW9udGggPT0gbnVsbCB8fCBjdXJyZW50WWVhciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3ZWVrZGF5SGVhZGVycyA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLXdlZWtkYXknKTtcbiAgICAgICAgY29uc3Qgd2Vla2RheXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHdlZWtkYXlIZWFkZXJzLmZvckVhY2goKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgd2Vla2RheXMucHVzaChoZWFkZXIudGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJvd3MgPSBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXktdmlldyB0Ym9keSB0cicpO1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSByb3cucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ3RkJyk7XG4gICAgICAgICAgICBjZWxscy5mb3JFYWNoKChjZWxsLCBjZWxsSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXlTcGFuID0gY2VsbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnAtZGF0ZXBpY2tlci1kYXknKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRheVNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRheU51bWJlciA9IHBhcnNlSW50KGRheVNwYW4udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnMCcsIDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRheU51bWJlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNPdGhlck1vbnRoID0gY2VsbC5jbGFzc0xpc3QuY29udGFpbnMoJ3AtZGF0ZXBpY2tlci1vdGhlci1tb250aCcpO1xuICAgICAgICAgICAgICAgIGlmIChpc090aGVyTW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBkYXlOdW1iZXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JBcmlhTGFiZWwoZGF0ZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2Vla2RheSA9IHdlZWtkYXlzW2NlbGxJbmRleF0gfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gd2Vla2RheSA/IGAke2Zvcm1hdHRlZERhdGV9LCAke3dlZWtkYXl9YCA6IGZvcm1hdHRlZERhdGU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShkYXlTcGFuLCBBUklBX0xBQkVMX0FUVFIsIGFyaWFMYWJlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgYXJpYS1sYWJlbCBubyBncmlkIGNvbSBtw6pzL2FubyBhdHVhbCBwYXJhIGRhciBjb250ZXh0b1xuICAgICAqIGltZWRpYXRvIGFvIE5WREEgYW8gZW50cmFyIG5hIHRhYmVsYSBkZSBkaWFzLlxuICAgICAqIEV4ZW1wbG86IFwiQ2FsZW5kw6FyaW8sIEp1bmhvIDIwMjZcIlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5yaWNoR3JpZEFyaWFMYWJlbChwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLWRheS12aWV3W3JvbGU9XCJncmlkXCJdJyk7XG4gICAgICAgIGlmICghZ3JpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjdXJyZW50TW9udGgsIGN1cnJlbnRZZWFyIH0gPSB0aGlzLmRhdGVQaWNrZXI7XG4gICAgICAgIGlmIChjdXJyZW50TW9udGggPT0gbnVsbCB8fCBjdXJyZW50WWVhciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb250aE5hbWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCAxKS50b0xvY2FsZURhdGVTdHJpbmcoJ3B0LUJSJywge1xuICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNhcGl0YWxpemVkTW9udGggPSBtb250aE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBtb250aE5hbWUuc2xpY2UoMSk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gYENhbGVuZMOhcmlvLCAke2NhcGl0YWxpemVkTW9udGh9ICR7Y3VycmVudFllYXJ9YDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZ3JpZCwgQVJJQV9MQUJFTF9BVFRSLCBsYWJlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9ybWF0YSBkYXRhIHBhcmEgYXJpYS1sYWJlbCBsZWfDrXZlbCBwb3IgbGVpdG9yIGRlIHRlbGEuXG4gICAgICogU2VtcHJlIHVzYSBwdC1CUiBwYXJhIGdhcmFudGlyIGNvbnNpc3TDqm5jaWEgY29tIGxhYmVscyB0cmFkdXppZG9zLFxuICAgICAqIGluZGVwZW5kZW50ZSBkbyBMT0NBTEVfSUQgY29uZmlndXJhZG8gbm8gQW5ndWxhci5cbiAgICAgKiBFeGVtcGxvOiBcIjMgZGUganVuaG8gZGUgMjAyNlwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlRm9yQXJpYUxhYmVsKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdwdC1CUicsIHtcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtkYXRlLmdldERhdGUoKX0vJHtkYXRlLmdldE1vbnRoKCkgKyAxfS8ke2RhdGUuZ2V0RnVsbFllYXIoKX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0b3JuYSBsb2NhbGUgc3RyaW5nIHBhcmEgZm9ybWF0YcOnw6NvLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSB8fCAncHQtQlInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYWR1eiBhcmlhLWxhYmVscyBkb3MgYm90w7VlcyBkbyBoZWFkZXIgcXVlIFByaW1lTkcgcmVuZGVyaXphIGVtIGluZ2zDqnMuXG4gICAgICogUHJpbWVORyB1c2EgYGdldFRyYW5zbGF0aW9uKCdjaG9vc2VEYXRlJylgIGV0YywgcXVlIHJldG9ybmEgaW5nbMOqc1xuICAgICAqIHNlIGBQcmltZU5HQ29uZmlnLnNldFRyYW5zbGF0aW9uKClgIG7Do28gZm9pIGNvbmZpZ3VyYWRvIHBlbG8gcHJvamV0by5cbiAgICAgKlxuICAgICAqIEJ1c2NhIGJvdMO1ZXMgY29tIGFyaWEtbGFiZWwgZW0gaW5nbMOqcyBlIHRyYWR1eiBwcm8gbG9jYWxlIGF0dWFsLlxuICAgICAqL1xuICAgIHByaXZhdGUgdHJhbnNsYXRlQXJpYUxhYmVscyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy5nZXRUcmFuc2xhdGlvbnMoKTtcblxuICAgICAgICAvLyBEaWFsb2cgYXJpYS1sYWJlbCAoXCJDaG9vc2UgRGF0ZVwiKVxuICAgICAgICBjb25zdCBkaWFsb2cgPSBwYW5lbC5jbG9zZXN0KCdbcm9sZT1cImRpYWxvZ1wiXScpIHx8IHBhbmVsO1xuICAgICAgICBjb25zdCBkaWFsb2dMYWJlbCA9IGRpYWxvZy5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgaWYgKGRpYWxvZ0xhYmVsICYmIHRyYW5zbGF0aW9uc1tkaWFsb2dMYWJlbF0pIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGRpYWxvZywgQVJJQV9MQUJFTF9BVFRSLCB0cmFuc2xhdGlvbnNbZGlhbG9nTGFiZWxdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJvdMO1ZXMgXCJDaG9vc2UgTW9udGhcIiBlIFwiQ2hvb3NlIFllYXJcIiBubyBoZWFkZXJcbiAgICAgICAgcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5wLWRhdGVwaWNrZXItc2VsZWN0LW1vbnRoLCAucC1kYXRlcGlja2VyLXNlbGVjdC15ZWFyJykuZm9yRWFjaCgoYnRuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IGJ0bi5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKTtcbiAgICAgICAgICAgIGlmIChsYWJlbCAmJiB0cmFuc2xhdGlvbnNbbGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnRuLCBBUklBX0xBQkVMX0FUVFIsIHRyYW5zbGF0aW9uc1tsYWJlbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3JyaWdlIGFyaWEtbGFiZWwgZG9zIGJvdMO1ZXMgcHJldi9uZXh0IGRvIFByaW1lTkcuXG4gICAgICogUHJpbWVORyB1c2EgYHAtYnV0dG9uYCBjb21wb25lbnQgcXVlIHNldGEgYGFyaWEtbGFiZWxgIG5vIGhvc3QgZWxlbWVudCBgPHAtYnV0dG9uPmAsXG4gICAgICogbWFzIE5WREEgZm9jYSBvIGA8YnV0dG9uPmAgaW50ZXJubyBxdWUgbsOjbyBoZXJkYSBvIGxhYmVsIGRvIGN1c3RvbSBlbGVtZW50LlxuICAgICAqXG4gICAgICogRXN0cnV0dXJhIERPTTogYDxwLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIj48YnV0dG9uIGNsYXNzPVwicC1kYXRlcGlja2VyLXByZXYtYnV0dG9uXCI+Li4uPC9idXR0b24+PC9wLWJ1dHRvbj5gXG4gICAgICpcbiAgICAgKiBGaXg6IGzDqiBhcmlhLWxhYmVsIGRvIGA8cC1idXR0b24+YCBob3N0LCB0cmFkdXosIGUgcHJvcGFnYSBwcm8gYDxidXR0b24+YCBpbnRlcm5vLlxuICAgICAqL1xuICAgIHByaXZhdGUgZml4TmF2aWdhdGlvbkJ1dHRvbkxhYmVscyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy5nZXRUcmFuc2xhdGlvbnMoKTtcblxuICAgICAgICAvLyBCdXNjYXIgPHAtYnV0dG9uPiBob3N0cyBxdWUgY29udMOpbSBvcyBib3TDtWVzIHByZXYvbmV4dFxuICAgICAgICBjb25zdCBwQnV0dG9ucyA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdwLWJ1dHRvbicpO1xuICAgICAgICBwQnV0dG9ucy5mb3JFYWNoKChwQnRuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckJ1dHRvbiA9IHBCdG4ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgJ2J1dHRvbi5wLWRhdGVwaWNrZXItcHJldi1idXR0b24sIGJ1dHRvbi5wLWRhdGVwaWNrZXItbmV4dC1idXR0b24nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFpbm5lckJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGxhYmVsID0gcEJ0bi5nZXRBdHRyaWJ1dGUoQVJJQV9MQUJFTF9BVFRSKSB8fCAnJztcblxuICAgICAgICAgICAgLy8gVHJhZHV6aXJcbiAgICAgICAgICAgIGlmIChsYWJlbCAmJiB0cmFuc2xhdGlvbnNbbGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0cmFuc2xhdGlvbnNbbGFiZWxdO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHBCdG4sIEFSSUFfTEFCRUxfQVRUUiwgbGFiZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQcm9wYWdhciBwcm8gPGJ1dHRvbj4gaW50ZXJub1xuICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5uZXJCdXR0b24sIEFSSUFfTEFCRUxfQVRUUiwgbGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBkbyBjb250YWluZXIgZG8gY2FsZW5kw6FyaW8uXG4gICAgICpcbiAgICAgKiBQcmltZU5HIHNldGEgYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBubyBgLnAtZGF0ZXBpY2tlci1jYWxlbmRhci1jb250YWluZXJgXG4gICAgICogcGFyYSBxdWUgYXJyb3cga2V5cyBjaGVndWVtIG5vIEphdmFTY3JpcHQgc2VtIGludGVyY2VwdGHDp8OjbyBkbyBicm93c2UgbW9kZS5cbiAgICAgKiBQb3LDqW0gYHJvbGU9XCJncmlkXCJgIG5hIHRhYmxlIGrDoSBnYXJhbnRlIGVzc2UgY29tcG9ydGFtZW50byDigJQgTlZEQSBlbnRyYVxuICAgICAqIGF1dG9tYXRpY2FtZW50ZSBlbSBmb2N1cyBtb2RlIGFvIGZvY2FyIHVtYSBncmlkY2VsbC5cbiAgICAgKlxuICAgICAqIE8gYHJvbGU9XCJhcHBsaWNhdGlvblwiYCBubyBjb250YWluZXIgUEFJIGNhdXNhIE5WREEgYSBkZXNwZWphIG8gY29udGXDumRvXG4gICAgICogdmlydHVhbCBkbyBjb250YWluZXIgaW50ZWlybyBhbyBlbnRyYXIgbm8gZGlhbG9nLCBhbnRlcyBkZSBwb3VzYXIgbmEgY8OpbHVsYS5cbiAgICAgKiBSZW1vdsOqLWxvIHJlc29sdmUgYSBsZWl0dXJhIGV4Y2Vzc2l2YSBzZW0gcXVlYnJhciBuYXZlZ2HDp8OjbyBwb3Igc2V0YXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVBcHBsaWNhdGlvblJvbGVGcm9tQ29udGFpbmVyKHBhbmVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxlbmRhckNvbnRhaW5lciA9IHBhbmVsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcucC1kYXRlcGlja2VyLWNhbGVuZGFyLWNvbnRhaW5lcicpO1xuICAgICAgICBpZiAoY2FsZW5kYXJDb250YWluZXI/LmdldEF0dHJpYnV0ZSgncm9sZScpID09PSAnYXBwbGljYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShjYWxlbmRhckNvbnRhaW5lciwgJ3JvbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldG9ybmEgbWFwYSBkZSB0cmFkdcOnw7VlcyBwcm8gbG9jYWxlIGF0dWFsLlxuICAgICAqIFNlIGxvY2FsZSDDqSBpbmdsw6pzIG91IG7Do28gcmVjb25oZWNpZG8sIGZhbGxiYWNrIHByYSBwdC1CUlxuICAgICAqIChhc3N1bWltb3MgcXVlIGxhYmVscyBlbSBpbmdsw6pzIGRldmVtIHNlciB0cmFkdXppZG9zKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0aW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5nZXRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIEFSSUFfVFJBTlNMQVRJT05TW2xvY2FsZV1cbiAgICAgICAgICAgIHx8IEFSSUFfVFJBTlNMQVRJT05TW2xvY2FsZS5zcGxpdCgnLScpWzBdXVxuICAgICAgICAgICAgfHwgQVJJQV9UUkFOU0xBVElPTlNfUFRfQlI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRpY2lvbmEgbGlzdGVuZXJzIGRlIGZvY3VzL2JsdXIgbm9zIGVsZW1lbnRvcyBpbnRlcmF0aXZvcyBwYXJhXG4gICAgICogZ2FyYW50aXIgaW5kaWNhZG9yIHZpc3VhbCBxdWFuZG8gYC5mb2N1cygpYCDDqSBjaGFtYWRvIHByb2dyYW1hdGljYW1lbnRlLlxuICAgICAqXG4gICAgICogYDpmb2N1cy12aXNpYmxlYCBwb2RlIG7Do28gc2VyIGFwbGljYWRvIHF1YW5kbyBmb2NvIMOpIG1vdmlkbyB2aWEgSlMsXG4gICAgICogZW50w6NvIHVzYW1vcyBjbGFzc2UgYXV4aWxpYXIgYHMtZGF0ZXBpY2tlci1kYXktZm9jdXNlZGAgY29tbyBmYWxsYmFjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldHVwRm9jdXNUcmFja2luZyhwYW5lbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVGb2N1c0xpc3RlbmVycygpO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gcGFuZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAnLnAtZGF0ZXBpY2tlci1kYXksIC5wLWRhdGVwaWNrZXItbW9udGgsIC5wLWRhdGVwaWNrZXIteWVhcidcbiAgICAgICAgKTtcbiAgICAgICAgZm9jdXNhYmxlRWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzQ2xlYW51cCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAnZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ3MtZGF0ZXBpY2tlci1kYXktZm9jdXNlZCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBibHVyQ2xlYW51cCA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAnYmx1cicsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsLCAncy1kYXRlcGlja2VyLWRheS1mb2N1c2VkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzLnB1c2goZm9jdXNDbGVhbnVwLCBibHVyQ2xlYW51cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBsaXN0ZW5lcnMgZGUgZm9jdXMvYmx1ciByZWdpc3RyYWRvcyBhbnRlcmlvcm1lbnRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVtb3ZlRm9jdXNMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzLmZvckVhY2goKGNsZWFudXApID0+IGNsZWFudXAoKSk7XG4gICAgICAgIHRoaXMuZm9jdXNMaXN0ZW5lckNsZWFudXBzID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YSBtdWRhbsOnYXMgbm8gRE9NIGRvIHBhaW5lbCBwYXJhIHJlYXBsaWNhciBjb3JyZcOnw7Vlc1xuICAgICAqIHF1YW5kbyBvIFByaW1lTkcgdHJvY2EgYSB2aWV3IGludGVybmEgKGRpYXMg4oaSIG1lc2VzIOKGkiBhbm9zKS5cbiAgICAgKiBVc2EgZGVib3VuY2UgZSBzw7MgcmVhZ2UgYSBjaGlsZExpc3QgY2hhbmdlcyAobsOjbyBhdHRyaWJ1dGVzKVxuICAgICAqIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gY29tIGFzIHByw7NwcmlhcyBtdXRhw6fDtWVzIGRhIGRpcmV0aXZhLlxuICAgICAqL1xuICAgIHByaXZhdGUgb2JzZXJ2ZVBhbmVsQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0T2JzZXJ2ZXIoKTtcblxuICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5O1xuICAgICAgICBpZiAoIXBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVib3VuY2VUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTw7MgcmVhZ2lyIHNlIGhvdXZlIGFkacOnw6NvL3JlbW/Dp8OjbyBkZSBuw7NzICh0cm9jYSBkZSB2aWV3KVxuICAgICAgICAgICAgY29uc3QgaGFzU3RydWN0dXJhbENoYW5nZSA9IG11dGF0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnR5cGUgPT09ICdjaGlsZExpc3QnICYmIChtLmFkZGVkTm9kZXMubGVuZ3RoID4gMCB8fCBtLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNTdHJ1Y3R1cmFsQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGVib3VuY2VUaW1lcikge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZml4UGFuZWxBY2Nlc3NpYmlsaXR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0Jlc3RUYXJnZXQoKTtcbiAgICAgICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIE1VVEFUSU9OX0RFQk9VTkNFX01TKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHBhbmVsLCB7XG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2Nvbm5lY3RPYnNlcnZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -105,7 +105,7 @@ export class SideSheetComponent {
105
105
  : true;
106
106
  }
107
107
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SideSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SideSheetComponent, isStandalone: true, selector: "s-side-sheet", host: { classAttribute: "block h-full w-full flex-1 min-h-0" }, viewQueries: [{ propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"side-sheet relative flex h-full w-full\">\n <div class=\"side-sheet__content min-w-0 flex-1 overflow-auto\">\n <ng-content></ng-content>\n </div>\n\n @if (sideSheetService.visible()) {\n @if (isOverlayMode()) {\n <div class=\"side-sheet__backdrop absolute inset-0 z-20 bg-[rgba(0,0,0,0.5)]\" @backdropVisibility></div>\n }\n\n <aside\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"isOverlayMode()\"\n [@panelVisibility]=\"animationMode()\"\n class=\"side-sheet__panel z-30 flex flex-col gap-4 border-l border-grayscale-20 bg-grayscale-0 p-4 shadow-[0px_2px_4px_rgba(0,0,0,0.2),0px_1px_10px_rgba(0,0,0,0.12),0px_4px_5px_rgba(0,0,0,0.14)] absolute inset-0 w-full [@media(min-width:1024px)]:static [@media(min-width:1024px)]:inset-auto\"\n [class]=\"panelWidthClasses()\"\n [class.side-sheet__panel--half]=\"sideSheetService.size() === 'half'\"\n [attr.role]=\"isOverlayMode() ? 'dialog' : 'complementary'\"\n [attr.aria-modal]=\"isOverlayMode() ? true : null\"\n [attr.aria-labelledby]=\"titleId\"\n >\n <div class=\"side-sheet__header flex flex-col gap-3\">\n <div class=\"flex items-center gap-4\">\n <h2\n #titleRef\n [id]=\"titleId\"\n tabindex=\"-1\"\n class=\"min-w-0 flex-1 break-words font-open-sans text-base font-normal uppercase text-grayscale-90 outline-none\"\n >\n {{ sideSheetService.header() }}\n </h2>\n <button\n type=\"button\"\n class=\"flex shrink-0 cursor-pointer items-center justify-center rounded-medium border-none bg-transparent p-2 outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n aria-label=\"Fechar\"\n (click)=\"closeSideSheet()\"\n >\n <i class=\"fas fa-times text-xs\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <hr class=\"h-px w-full border-0 bg-grayscale-20\" />\n </div>\n\n <div class=\"side-sheet__body min-h-0 flex-1 overflow-auto\">\n <ng-container\n *ngTemplateOutlet=\"sideSheetService.template(); context: sideSheetService.context()\"\n ></ng-container>\n </div>\n </aside>\n }\n</div>\n", dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SideSheetComponent, isStandalone: true, selector: "s-side-sheet", host: { classAttribute: "block h-full w-full flex-1 min-h-0" }, viewQueries: [{ propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"side-sheet relative flex h-full w-full\">\n <div class=\"side-sheet__content min-w-0 flex-1 overflow-auto\">\n <ng-content></ng-content>\n </div>\n\n @if (sideSheetService.visible()) {\n @if (isOverlayMode()) {\n <div class=\"side-sheet__backdrop absolute inset-0 z-20 bg-[rgba(0,0,0,0.5)]\" @backdropVisibility></div>\n }\n\n <aside\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"isOverlayMode()\"\n [@panelVisibility]=\"animationMode()\"\n class=\"side-sheet__panel z-30 flex flex-col gap-4 border-l border-grayscale-20 bg-grayscale-0 p-4 shadow-[0px_2px_4px_rgba(0,0,0,0.2),0px_1px_10px_rgba(0,0,0,0.12),0px_4px_5px_rgba(0,0,0,0.14)] absolute inset-0 w-full [@media(min-width:1024px)]:static [@media(min-width:1024px)]:inset-auto\"\n [class]=\"panelWidthClasses()\"\n [class.side-sheet__panel--half]=\"sideSheetService.size() === 'half'\"\n [attr.role]=\"isOverlayMode() ? 'dialog' : 'complementary'\"\n [attr.aria-modal]=\"isOverlayMode() ? true : null\"\n [attr.aria-labelledby]=\"titleId\"\n >\n <div class=\"side-sheet__header flex flex-col gap-3\">\n <div class=\"flex items-center gap-4\">\n <h2\n #titleRef\n [id]=\"titleId\"\n tabindex=\"-1\"\n class=\"min-w-0 flex-1 break-words font-open-sans text-base font-normal uppercase text-grayscale-90 outline-none\"\n >\n {{ sideSheetService.header() }}\n </h2>\n <button\n type=\"button\"\n class=\"flex shrink-0 cursor-pointer items-center justify-center rounded-medium border-none bg-transparent p-2 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n aria-label=\"Fechar\"\n (click)=\"closeSideSheet()\"\n >\n <i class=\"fas fa-times text-xs\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <hr class=\"h-px w-full border-0 bg-grayscale-20\" />\n </div>\n\n <div class=\"side-sheet__body min-h-0 flex-1 overflow-auto\">\n <ng-container\n *ngTemplateOutlet=\"sideSheetService.template(); context: sideSheetService.context()\"\n ></ng-container>\n </div>\n </aside>\n }\n</div>\n", dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
109
109
  trigger('panelVisibility', [
110
110
  transition('void => push', [
111
111
  style({ width: 0 }),
@@ -167,6 +167,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
167
167
  transition(':enter', [style({ opacity: 0 }), animate('300ms ease', style({ opacity: 1 }))]),
168
168
  transition(':leave', [style({ opacity: 1 }), animate('300ms ease', style({ opacity: 0 }))]),
169
169
  ]),
170
- ], template: "<div class=\"side-sheet relative flex h-full w-full\">\n <div class=\"side-sheet__content min-w-0 flex-1 overflow-auto\">\n <ng-content></ng-content>\n </div>\n\n @if (sideSheetService.visible()) {\n @if (isOverlayMode()) {\n <div class=\"side-sheet__backdrop absolute inset-0 z-20 bg-[rgba(0,0,0,0.5)]\" @backdropVisibility></div>\n }\n\n <aside\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"isOverlayMode()\"\n [@panelVisibility]=\"animationMode()\"\n class=\"side-sheet__panel z-30 flex flex-col gap-4 border-l border-grayscale-20 bg-grayscale-0 p-4 shadow-[0px_2px_4px_rgba(0,0,0,0.2),0px_1px_10px_rgba(0,0,0,0.12),0px_4px_5px_rgba(0,0,0,0.14)] absolute inset-0 w-full [@media(min-width:1024px)]:static [@media(min-width:1024px)]:inset-auto\"\n [class]=\"panelWidthClasses()\"\n [class.side-sheet__panel--half]=\"sideSheetService.size() === 'half'\"\n [attr.role]=\"isOverlayMode() ? 'dialog' : 'complementary'\"\n [attr.aria-modal]=\"isOverlayMode() ? true : null\"\n [attr.aria-labelledby]=\"titleId\"\n >\n <div class=\"side-sheet__header flex flex-col gap-3\">\n <div class=\"flex items-center gap-4\">\n <h2\n #titleRef\n [id]=\"titleId\"\n tabindex=\"-1\"\n class=\"min-w-0 flex-1 break-words font-open-sans text-base font-normal uppercase text-grayscale-90 outline-none\"\n >\n {{ sideSheetService.header() }}\n </h2>\n <button\n type=\"button\"\n class=\"flex shrink-0 cursor-pointer items-center justify-center rounded-medium border-none bg-transparent p-2 outline-none focus-visible:ring-2 focus-visible:ring-primary\"\n aria-label=\"Fechar\"\n (click)=\"closeSideSheet()\"\n >\n <i class=\"fas fa-times text-xs\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <hr class=\"h-px w-full border-0 bg-grayscale-20\" />\n </div>\n\n <div class=\"side-sheet__body min-h-0 flex-1 overflow-auto\">\n <ng-container\n *ngTemplateOutlet=\"sideSheetService.template(); context: sideSheetService.context()\"\n ></ng-container>\n </div>\n </aside>\n }\n</div>\n" }]
170
+ ], template: "<div class=\"side-sheet relative flex h-full w-full\">\n <div class=\"side-sheet__content min-w-0 flex-1 overflow-auto\">\n <ng-content></ng-content>\n </div>\n\n @if (sideSheetService.visible()) {\n @if (isOverlayMode()) {\n <div class=\"side-sheet__backdrop absolute inset-0 z-20 bg-[rgba(0,0,0,0.5)]\" @backdropVisibility></div>\n }\n\n <aside\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"isOverlayMode()\"\n [@panelVisibility]=\"animationMode()\"\n class=\"side-sheet__panel z-30 flex flex-col gap-4 border-l border-grayscale-20 bg-grayscale-0 p-4 shadow-[0px_2px_4px_rgba(0,0,0,0.2),0px_1px_10px_rgba(0,0,0,0.12),0px_4px_5px_rgba(0,0,0,0.14)] absolute inset-0 w-full [@media(min-width:1024px)]:static [@media(min-width:1024px)]:inset-auto\"\n [class]=\"panelWidthClasses()\"\n [class.side-sheet__panel--half]=\"sideSheetService.size() === 'half'\"\n [attr.role]=\"isOverlayMode() ? 'dialog' : 'complementary'\"\n [attr.aria-modal]=\"isOverlayMode() ? true : null\"\n [attr.aria-labelledby]=\"titleId\"\n >\n <div class=\"side-sheet__header flex flex-col gap-3\">\n <div class=\"flex items-center gap-4\">\n <h2\n #titleRef\n [id]=\"titleId\"\n tabindex=\"-1\"\n class=\"min-w-0 flex-1 break-words font-open-sans text-base font-normal uppercase text-grayscale-90 outline-none\"\n >\n {{ sideSheetService.header() }}\n </h2>\n <button\n type=\"button\"\n class=\"flex shrink-0 cursor-pointer items-center justify-center rounded-medium border-none bg-transparent p-2 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n aria-label=\"Fechar\"\n (click)=\"closeSideSheet()\"\n >\n <i class=\"fas fa-times text-xs\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <hr class=\"h-px w-full border-0 bg-grayscale-20\" />\n </div>\n\n <div class=\"side-sheet__body min-h-0 flex-1 overflow-auto\">\n <ng-container\n *ngTemplateOutlet=\"sideSheetService.template(); context: sideSheetService.context()\"\n ></ng-container>\n </div>\n </aside>\n }\n</div>\n" }]
171
171
  }], ctorParameters: () => [] });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1zaGVldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2lkZS1zaGVldC9zcmMvbGliL3NpZGUtc2hlZXQvc2lkZS1zaGVldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2lkZS1zaGVldC9zcmMvbGliL3NpZGUtc2hlZXQvc2lkZS1zaGVldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFjLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakUscUhBQXFIO0FBQ3JILE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUF1Q0gsTUFBTSxPQUFPLGtCQUFrQjtJQUNSLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRS9ELDBGQUEwRjtJQUN2RSxPQUFPLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFM0MsUUFBUSxHQUFH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T0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQzlGLENBQUM7cUJBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtUcmFwRm9jdXMgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlU2Nyb2xsTG9jaywgcmFuZG9tSGFzaCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuXG5pbXBvcnQgeyBTaWRlU2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zaWRlLXNoZWV0LnNlcnZpY2UnO1xuXG4vKiogTWFudGlkYSBlbSBzaW5jcm9uaWEgY29tIG8gYnJlYWtwb2ludCBgW0BtZWRpYShtaW4td2lkdGg6MTAyNHB4KV1gIHVzYWRvIG5vIHRlbXBsYXRlIGUgZW0gYHBhbmVsV2lkdGhDbGFzc2VzYC4gKi9cbmNvbnN0IE9WRVJMQVlfUVVFUlkgPSAnKG1pbi13aWR0aDogMTAyNHB4KSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhaW5lbCBxdWUgZW1wdXJyYSBvIGNvbnRlw7pkbyBhZGphY2VudGUgcGFyYSBhIGVzcXVlcmRhLCBkaXZpZGluZG8gbyBlc3Bhw6dvXG4gKiBob3Jpem9udGFsIGNvbSBlbGUg4oCUIHNlbSBlc2N1cmVjZXIgYSB0ZWxhIGUgc2VtIHNvYnJlcG9yIG8gY29udGXDumRvLCBubyBtb2RvIGRlc2t0b3BcbiAqICg+PSAxMDI0cHgpLiBBYmFpeG8gZGUgMTAyNHB4IG8gcGFpbmVsIHBhc3NhIGEgZnVuY2lvbmFyIGNvbW8gdW0gb3ZlcmxheSBlbSB0ZWxhIGNoZWlhLFxuICogY29tIGZ1bmRvIGVzY3VyZWNpZG8sIGlndWFsIGEgdW0gRHJhd2VyLlxuICpcbiAqIEZlY2hhIHNvbWVudGUgcGVsbyBib3TDo28gZGUgZmVjaGFyIChYKSBkbyBjYWJlw6dhbGhvIOKAlCBuw6NvIGjDoSBmZWNoYW1lbnRvIHBvciB0ZWNsYSBFc2NhcGVcbiAqIG91IGNsaXF1ZSBmb3JhLCBlbSBuZW5odW1hIHJlc29sdcOnw6NvLiBFc3NhIMOpIHVtYSBkZWNpc8OjbyBkZSBwcm9kdXRvIGRlbGliZXJhZGE6IG8gY29udGXDumRvXG4gKiBwb3IgdHLDoXMgZG8gcGFpbmVsIHBlcm1hbmVjZSBpbnRlcmF0aXZvIChmaWx0cm9zLCBkcm9wZG93bnMsIGF1dG9jb21wbGV0ZSkgZSB1bSBhdGFsaG9cbiAqIGdsb2JhbCBkZSBFc2NhcGUgZW50cmFyaWEgZW0gY29uZmxpdG8gY29tIG91dHJvcyBvdmVybGF5cyBqw6EgYWJlcnRvcyBzb2JyZSBlc3NlIGNvbnRlw7pkby5cbiAqXG4gKiBTZW0gaW5wdXRzOiDDqSB1bWEgaW5zdMOibmNpYSAqKsO6bmljYSoqIHBvciBhcGxpY2HDp8OjbywgZGVjbGFyYWRhIHVtYSB2ZXogbm8gc2hlbGwgZG8gYXBwIChleDpcbiAqIGBhcHAuY29tcG9uZW50Lmh0bWxgLCBsb2dvIGFiYWl4byBkYSB0b3BiYXIpIGUgY29udHJvbGFkYSByZW1vdGFtZW50ZSBwb3JcbiAqIGBTaWRlU2hlZXRTZXJ2aWNlLm9wZW4oKWAvYGNsb3NlKClgIGEgcGFydGlyIGRlIHF1YWxxdWVyIGNvbXBvbmVudGUgZGUgcm90YS4gVW1hIHNlZ3VuZGFcbiAqIGluc3TDom5jaWEgbW9udGFkYSBzaW11bHRhbmVhbWVudGUgbGFuw6dhIHVtIGVycm8gZW0gbW9kbyBkZSBkZXNlbnZvbHZpbWVudG8uIE8gY29udGXDumRvXG4gKiBwcm9qZXRhZG8gZGVudHJvIGRvIGA8cy1zaWRlLXNoZWV0PmAgw6kgbyBjb250ZcO6ZG8gcHJpbmNpcGFsIGRhIHDDoWdpbmEgKGV4OiBvXG4gKiBgcm91dGVyLW91dGxldGApLCBlbXB1cnJhZG8gcGVsbyBwYWluZWwgcXVhbmRvIGVsZSBhYnJlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIGFwcC5jb21wb25lbnQuaHRtbCAtLT5cbiAqIDxzLXNpZGUtc2hlZXQ+XG4gKiAgIDxyb3V0ZXItb3V0bGV0IC8+XG4gKiA8L3Mtc2lkZS1zaGVldD5cbiAqIGBgYFxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gcGVkaWRvcy5jb21wb25lbnQudHNcbiAqIHByaXZhdGUgcmVhZG9ubHkgc2lkZVNoZWV0U2VydmljZSA9IGluamVjdChTaWRlU2hlZXRTZXJ2aWNlKTtcbiAqIHByaXZhdGUgcmVhZG9ubHkgcGFuZWxCb2R5ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncGFuZWxCb2R5Jyk7XG4gKlxuICogcHJvdGVjdGVkIHNlbGVjaW9uYXJQZWRpZG8ocGVkaWRvOiBQZWRpZG8pOiB2b2lkIHtcbiAqICAgICB0aGlzLnNpZGVTaGVldFNlcnZpY2Uub3Blbih7IGhlYWRlcjogcGVkaWRvLm51bWVybywgdGVtcGxhdGU6IHRoaXMucGFuZWxCb2R5KCkhIH0pO1xuICogfVxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXNpZGUtc2hlZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdibG9jayBoLWZ1bGwgdy1mdWxsIGZsZXgtMSBtaW4taC0wJyxcbiAgICB9LFxuICAgIGltcG9ydHM6IFtDZGtUcmFwRm9jdXMsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcigncGFuZWxWaXNpYmlsaXR5JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBwdXNoJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgd2lkdGg6IDAgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsIHN0eWxlKHsgd2lkdGg6ICcqJyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3B1c2ggPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHdpZHRoOiAnKicgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsIHN0eWxlKHsgd2lkdGg6IDAgfSkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IG92ZXJsYXknLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ292ZXJsYXkgPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgLy8gUmVzaXplIGNydXphbmRvIG8gYnJlYWtwb2ludCBjb20gbyBwYWluZWwgasOhIGFiZXJ0bzogbsOjbyBleGlzdGUgdW0gdHdlZW4gdmlzdWFsbWVudGVcbiAgICAgICAgICAgIC8vIGNvZXJlbnRlIGVudHJlIHdpZHRoOjQwMHB4L3N0YXRpYyAocHVzaCkgZSB3aWR0aDoxMDAlL2Fic29sdXRlIChvdmVybGF5KSDigJQgYXBsaWNhIG9cbiAgICAgICAgICAgIC8vIGVzdGFkbyBmaW5hbCBpbWVkaWF0YW1lbnRlLCBzZW0gdHJhbnNpw6fDo28gcmVzaWR1YWwuXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdwdXNoID0+IG92ZXJsYXknLCBbXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvdmVybGF5ID0+IHB1c2gnLCBbXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdiYWNrZHJvcFZpc2liaWxpdHknLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCczMDBtcyBlYXNlJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW3N0eWxlKHsgb3BhY2l0eTogMSB9KSwgYW5pbWF0ZSgnMzAwbXMgZWFzZScsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSldKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZVNoZWV0Q29tcG9uZW50IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2lkZVNoZWV0U2VydmljZSA9IGluamVjdChTaWRlU2hlZXRTZXJ2aWNlKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWQgw7puaWNvIHVzYWRvIHBhcmEgYXNzb2NpYXIgbyB0w610dWxvIGFvIHBhaW5lbCB2aWEgYGFyaWEtbGFiZWxsZWRieWAuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlSWQgPSByYW5kb21IYXNoKCdzaWRlLXNoZWV0LXRpdGxlJyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEhlYWRpbmdFbGVtZW50Pj4oJ3RpdGxlUmVmJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Rlc2t0b3BWaWV3cG9ydCA9IHNpZ25hbCh0aGlzLl9tYXRjaGVzRGVza3RvcCgpKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gYHRydWVgIHF1YW5kbyBvIHBhaW5lbCBmdW5jaW9uYSBjb21vIG92ZXJsYXkgZW0gdGVsYSBjaGVpYSAoPCAxMDI0cHgpLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc092ZXJsYXlNb2RlID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNEZXNrdG9wVmlld3BvcnQoKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFuaW1hdGlvbk1vZGUgPSBjb21wdXRlZDwncHVzaCcgfCAnb3ZlcmxheSc+KCgpID0+XG4gICAgICAgIHRoaXMuaXNPdmVybGF5TW9kZSgpID8gJ292ZXJsYXknIDogJ3B1c2gnLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGFyZ3VyYSBkbyBwYWluZWwgbm8gbW9kbyBwdXNoLCBwb3IgYnJlYWtwb2ludC4gYGhhbGZgIHPDsyBwYXNzYSBhIHNlclxuICAgICAqIGZsdWlkbyBhIHBhcnRpciBkZSAxMzY2cHgg4oCUIGVudHJlIDEwMjTigJMxMzY1cHggaGVyZGEgb3MgbWVzbW9zIDQwMHB4IGRvIGBkZWZhdWx0YFxuICAgICAqIChjb252ZXJzw6NvIGRlIFwiSGFsZlwiIHBhcmEgXCJEZWZhdWx0XCIgZGVzY3JpdGEgbmEgZXNwZWNpZmljYcOnw6NvIGRlIHByb2R1dG8pLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwYW5lbFdpZHRoQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuc2lkZVNoZWV0U2VydmljZS5zaXplKCkgPT09ICdoYWxmJ1xuICAgICAgICAgICAgPyAnW0BtZWRpYShtaW4td2lkdGg6MTAyNHB4KV06dy1bNDAwcHhdIFtAbWVkaWEobWluLXdpZHRoOjEzNjZweCldOnctW21heCg0MDBweCw1MHZ3KV0nXG4gICAgICAgICAgICA6ICdbQG1lZGlhKG1pbi13aWR0aDoxMDI0cHgpXTp3LVs0MDBweF0gW0BtZWRpYShtaW4td2lkdGg6MTkyMHB4KV06dy1bNDgwcHhdIFtAbWVkaWEobWluLXdpZHRoOjI1NjBweCldOnctWzU2MHB4XSBbQG1lZGlhKG1pbi13aWR0aDozNDQwcHgpXTp3LVs2NDBweF0nLFxuICAgICk7XG5cbiAgICBwcml2YXRlIF9lbGVtZW50VG9SZWZvY3VzOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbExvY2sgPSBjcmVhdGVTY3JvbGxMb2NrKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgICAgICB0aGlzLnNpZGVTaGVldFNlcnZpY2UuX3JlZ2lzdGVySW5zdGFuY2UoKTtcbiAgICAgICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5zaWRlU2hlZXRTZXJ2aWNlLl91bnJlZ2lzdGVySW5zdGFuY2UoKSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cubWF0Y2hNZWRpYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgbWVkaWFRdWVyeUxpc3QgPSB3aW5kb3cubWF0Y2hNZWRpYShPVkVSTEFZX1FVRVJZKTtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KTogdm9pZCA9PiB0aGlzLmlzRGVza3RvcFZpZXdwb3J0LnNldChldmVudC5tYXRjaGVzKTtcbiAgICAgICAgICAgIG1lZGlhUXVlcnlMaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IG1lZGlhUXVlcnlMaXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTG9ja1Njcm9sbCA9IHRoaXMuc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkgJiYgdGhpcy5pc092ZXJsYXlNb2RlKCk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkTG9ja1Njcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbExvY2subG9jaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxMb2NrLnVubG9jaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50VG9SZWZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCF1bnRyYWNrZWQodGhpcy5pc092ZXJsYXlNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLnRpdGxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50VG9SZWZvY3VzPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRUb1JlZm9jdXMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLl9zY3JvbGxMb2NrLnVubG9jaygpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VTaWRlU2hlZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZVNoZWV0U2VydmljZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21hdGNoZXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5tYXRjaE1lZGlhID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHdpbmRvdy5tYXRjaE1lZGlhKE9WRVJMQVlfUVVFUlkpLm1hdGNoZXNcbiAgICAgICAgICAgIDogdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1zaGVldCByZWxhdGl2ZSBmbGV4IGgtZnVsbCB3LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2lkZS1zaGVldF9fY29udGVudCBtaW4tdy0wIGZsZXgtMSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkpIHtcbiAgICAgICAgQGlmIChpc092ZXJsYXlNb2RlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLXNoZWV0X19iYWNrZHJvcCBhYnNvbHV0ZSBpbnNldC0wIHotMjAgYmctW3JnYmEoMCwwLDAsMC41KV1cIiBAYmFja2Ryb3BWaXNpYmlsaXR5PjwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJpc092ZXJsYXlNb2RlKClcIlxuICAgICAgICAgICAgW0BwYW5lbFZpc2liaWxpdHldPVwiYW5pbWF0aW9uTW9kZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1zaGVldF9fcGFuZWwgei0zMCBmbGV4IGZsZXgtY29sIGdhcC00IGJvcmRlci1sIGJvcmRlci1ncmF5c2NhbGUtMjAgYmctZ3JheXNjYWxlLTAgcC00IHNoYWRvdy1bMHB4XzJweF80cHhfcmdiYSgwLDAsMCwwLjIpLDBweF8xcHhfMTBweF9yZ2JhKDAsMCwwLDAuMTIpLDBweF80cHhfNXB4X3JnYmEoMCwwLDAsMC4xNCldIGFic29sdXRlIGluc2V0LTAgdy1mdWxsIFtAbWVkaWEobWluLXdpZHRoOjEwMjRweCldOnN0YXRpYyBbQG1lZGlhKG1pbi13aWR0aDoxMDI0cHgpXTppbnNldC1hdXRvXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJwYW5lbFdpZHRoQ2xhc3NlcygpXCJcbiAgICAgICAgICAgIFtjbGFzcy5zaWRlLXNoZWV0X19wYW5lbC0taGFsZl09XCJzaWRlU2hlZXRTZXJ2aWNlLnNpemUoKSA9PT0gJ2hhbGYnXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiaXNPdmVybGF5TW9kZSgpID8gJ2RpYWxvZycgOiAnY29tcGxlbWVudGFyeSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1tb2RhbF09XCJpc092ZXJsYXlNb2RlKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLXNoZWV0X19oZWFkZXIgZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0aXRsZVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRpdGxlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbi13LTAgZmxleC0xIGJyZWFrLXdvcmRzIGZvbnQtb3Blbi1zYW5zIHRleHQtYmFzZSBmb250LW5vcm1hbCB1cHBlcmNhc2UgdGV4dC1ncmF5c2NhbGUtOTAgb3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2lkZVNoZWV0U2VydmljZS5oZWFkZXIoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZWRpdW0gYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcC0yIG91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRmVjaGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVNpZGVTaGVldCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXMgdGV4dC14c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwiaC1weCB3LWZ1bGwgYm9yZGVyLTAgYmctZ3JheXNjYWxlLTIwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1zaGVldF9fYm9keSBtaW4taC0wIGZsZXgtMSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVTaGVldFNlcnZpY2UudGVtcGxhdGUoKTsgY29udGV4dDogc2lkZVNoZWV0U2VydmljZS5jb250ZXh0KClcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgIH1cbjwvZGl2PlxuIl19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1zaGVldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2lkZS1zaGVldC9zcmMvbGliL3NpZGUtc2hlZXQvc2lkZS1zaGVldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc2lkZS1zaGVldC9zcmMvbGliL3NpZGUtc2hlZXQvc2lkZS1zaGVldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFjLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakUscUhBQXFIO0FBQ3JILE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUF1Q0gsTUFBTSxPQUFPLGtCQUFrQjtJQUNSLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRS9ELDBGQUEwRjtJQUN2RSxPQUFPLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFM0MsUUFBUSxHQUFH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T0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQzlGLENBQUM7cUJBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtUcmFwRm9jdXMgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlU2Nyb2xsTG9jaywgcmFuZG9tSGFzaCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuXG5pbXBvcnQgeyBTaWRlU2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zaWRlLXNoZWV0LnNlcnZpY2UnO1xuXG4vKiogTWFudGlkYSBlbSBzaW5jcm9uaWEgY29tIG8gYnJlYWtwb2ludCBgW0BtZWRpYShtaW4td2lkdGg6MTAyNHB4KV1gIHVzYWRvIG5vIHRlbXBsYXRlIGUgZW0gYHBhbmVsV2lkdGhDbGFzc2VzYC4gKi9cbmNvbnN0IE9WRVJMQVlfUVVFUlkgPSAnKG1pbi13aWR0aDogMTAyNHB4KSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhaW5lbCBxdWUgZW1wdXJyYSBvIGNvbnRlw7pkbyBhZGphY2VudGUgcGFyYSBhIGVzcXVlcmRhLCBkaXZpZGluZG8gbyBlc3Bhw6dvXG4gKiBob3Jpem9udGFsIGNvbSBlbGUg4oCUIHNlbSBlc2N1cmVjZXIgYSB0ZWxhIGUgc2VtIHNvYnJlcG9yIG8gY29udGXDumRvLCBubyBtb2RvIGRlc2t0b3BcbiAqICg+PSAxMDI0cHgpLiBBYmFpeG8gZGUgMTAyNHB4IG8gcGFpbmVsIHBhc3NhIGEgZnVuY2lvbmFyIGNvbW8gdW0gb3ZlcmxheSBlbSB0ZWxhIGNoZWlhLFxuICogY29tIGZ1bmRvIGVzY3VyZWNpZG8sIGlndWFsIGEgdW0gRHJhd2VyLlxuICpcbiAqIEZlY2hhIHNvbWVudGUgcGVsbyBib3TDo28gZGUgZmVjaGFyIChYKSBkbyBjYWJlw6dhbGhvIOKAlCBuw6NvIGjDoSBmZWNoYW1lbnRvIHBvciB0ZWNsYSBFc2NhcGVcbiAqIG91IGNsaXF1ZSBmb3JhLCBlbSBuZW5odW1hIHJlc29sdcOnw6NvLiBFc3NhIMOpIHVtYSBkZWNpc8OjbyBkZSBwcm9kdXRvIGRlbGliZXJhZGE6IG8gY29udGXDumRvXG4gKiBwb3IgdHLDoXMgZG8gcGFpbmVsIHBlcm1hbmVjZSBpbnRlcmF0aXZvIChmaWx0cm9zLCBkcm9wZG93bnMsIGF1dG9jb21wbGV0ZSkgZSB1bSBhdGFsaG9cbiAqIGdsb2JhbCBkZSBFc2NhcGUgZW50cmFyaWEgZW0gY29uZmxpdG8gY29tIG91dHJvcyBvdmVybGF5cyBqw6EgYWJlcnRvcyBzb2JyZSBlc3NlIGNvbnRlw7pkby5cbiAqXG4gKiBTZW0gaW5wdXRzOiDDqSB1bWEgaW5zdMOibmNpYSAqKsO6bmljYSoqIHBvciBhcGxpY2HDp8OjbywgZGVjbGFyYWRhIHVtYSB2ZXogbm8gc2hlbGwgZG8gYXBwIChleDpcbiAqIGBhcHAuY29tcG9uZW50Lmh0bWxgLCBsb2dvIGFiYWl4byBkYSB0b3BiYXIpIGUgY29udHJvbGFkYSByZW1vdGFtZW50ZSBwb3JcbiAqIGBTaWRlU2hlZXRTZXJ2aWNlLm9wZW4oKWAvYGNsb3NlKClgIGEgcGFydGlyIGRlIHF1YWxxdWVyIGNvbXBvbmVudGUgZGUgcm90YS4gVW1hIHNlZ3VuZGFcbiAqIGluc3TDom5jaWEgbW9udGFkYSBzaW11bHRhbmVhbWVudGUgbGFuw6dhIHVtIGVycm8gZW0gbW9kbyBkZSBkZXNlbnZvbHZpbWVudG8uIE8gY29udGXDumRvXG4gKiBwcm9qZXRhZG8gZGVudHJvIGRvIGA8cy1zaWRlLXNoZWV0PmAgw6kgbyBjb250ZcO6ZG8gcHJpbmNpcGFsIGRhIHDDoWdpbmEgKGV4OiBvXG4gKiBgcm91dGVyLW91dGxldGApLCBlbXB1cnJhZG8gcGVsbyBwYWluZWwgcXVhbmRvIGVsZSBhYnJlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIGFwcC5jb21wb25lbnQuaHRtbCAtLT5cbiAqIDxzLXNpZGUtc2hlZXQ+XG4gKiAgIDxyb3V0ZXItb3V0bGV0IC8+XG4gKiA8L3Mtc2lkZS1zaGVldD5cbiAqIGBgYFxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gcGVkaWRvcy5jb21wb25lbnQudHNcbiAqIHByaXZhdGUgcmVhZG9ubHkgc2lkZVNoZWV0U2VydmljZSA9IGluamVjdChTaWRlU2hlZXRTZXJ2aWNlKTtcbiAqIHByaXZhdGUgcmVhZG9ubHkgcGFuZWxCb2R5ID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PigncGFuZWxCb2R5Jyk7XG4gKlxuICogcHJvdGVjdGVkIHNlbGVjaW9uYXJQZWRpZG8ocGVkaWRvOiBQZWRpZG8pOiB2b2lkIHtcbiAqICAgICB0aGlzLnNpZGVTaGVldFNlcnZpY2Uub3Blbih7IGhlYWRlcjogcGVkaWRvLm51bWVybywgdGVtcGxhdGU6IHRoaXMucGFuZWxCb2R5KCkhIH0pO1xuICogfVxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXNpZGUtc2hlZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdibG9jayBoLWZ1bGwgdy1mdWxsIGZsZXgtMSBtaW4taC0wJyxcbiAgICB9LFxuICAgIGltcG9ydHM6IFtDZGtUcmFwRm9jdXMsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcigncGFuZWxWaXNpYmlsaXR5JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBwdXNoJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgd2lkdGg6IDAgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsIHN0eWxlKHsgd2lkdGg6ICcqJyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3B1c2ggPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHdpZHRoOiAnKicgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKScsIHN0eWxlKHsgd2lkdGg6IDAgfSkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IG92ZXJsYXknLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ292ZXJsYXkgPT4gdm9pZCcsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgLy8gUmVzaXplIGNydXphbmRvIG8gYnJlYWtwb2ludCBjb20gbyBwYWluZWwgasOhIGFiZXJ0bzogbsOjbyBleGlzdGUgdW0gdHdlZW4gdmlzdWFsbWVudGVcbiAgICAgICAgICAgIC8vIGNvZXJlbnRlIGVudHJlIHdpZHRoOjQwMHB4L3N0YXRpYyAocHVzaCkgZSB3aWR0aDoxMDAlL2Fic29sdXRlIChvdmVybGF5KSDigJQgYXBsaWNhIG9cbiAgICAgICAgICAgIC8vIGVzdGFkbyBmaW5hbCBpbWVkaWF0YW1lbnRlLCBzZW0gdHJhbnNpw6fDo28gcmVzaWR1YWwuXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdwdXNoID0+IG92ZXJsYXknLCBbXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvdmVybGF5ID0+IHB1c2gnLCBbXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdiYWNrZHJvcFZpc2liaWxpdHknLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCczMDBtcyBlYXNlJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW3N0eWxlKHsgb3BhY2l0eTogMSB9KSwgYW5pbWF0ZSgnMzAwbXMgZWFzZScsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSldKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZVNoZWV0Q29tcG9uZW50IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2lkZVNoZWV0U2VydmljZSA9IGluamVjdChTaWRlU2hlZXRTZXJ2aWNlKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWQgw7puaWNvIHVzYWRvIHBhcmEgYXNzb2NpYXIgbyB0w610dWxvIGFvIHBhaW5lbCB2aWEgYGFyaWEtbGFiZWxsZWRieWAuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpdGxlSWQgPSByYW5kb21IYXNoKCdzaWRlLXNoZWV0LXRpdGxlJyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEhlYWRpbmdFbGVtZW50Pj4oJ3RpdGxlUmVmJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Rlc2t0b3BWaWV3cG9ydCA9IHNpZ25hbCh0aGlzLl9tYXRjaGVzRGVza3RvcCgpKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gYHRydWVgIHF1YW5kbyBvIHBhaW5lbCBmdW5jaW9uYSBjb21vIG92ZXJsYXkgZW0gdGVsYSBjaGVpYSAoPCAxMDI0cHgpLiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc092ZXJsYXlNb2RlID0gY29tcHV0ZWQoKCkgPT4gIXRoaXMuaXNEZXNrdG9wVmlld3BvcnQoKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFuaW1hdGlvbk1vZGUgPSBjb21wdXRlZDwncHVzaCcgfCAnb3ZlcmxheSc+KCgpID0+XG4gICAgICAgIHRoaXMuaXNPdmVybGF5TW9kZSgpID8gJ292ZXJsYXknIDogJ3B1c2gnLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGFyZ3VyYSBkbyBwYWluZWwgbm8gbW9kbyBwdXNoLCBwb3IgYnJlYWtwb2ludC4gYGhhbGZgIHPDsyBwYXNzYSBhIHNlclxuICAgICAqIGZsdWlkbyBhIHBhcnRpciBkZSAxMzY2cHgg4oCUIGVudHJlIDEwMjTigJMxMzY1cHggaGVyZGEgb3MgbWVzbW9zIDQwMHB4IGRvIGBkZWZhdWx0YFxuICAgICAqIChjb252ZXJzw6NvIGRlIFwiSGFsZlwiIHBhcmEgXCJEZWZhdWx0XCIgZGVzY3JpdGEgbmEgZXNwZWNpZmljYcOnw6NvIGRlIHByb2R1dG8pLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwYW5lbFdpZHRoQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuc2lkZVNoZWV0U2VydmljZS5zaXplKCkgPT09ICdoYWxmJ1xuICAgICAgICAgICAgPyAnW0BtZWRpYShtaW4td2lkdGg6MTAyNHB4KV06dy1bNDAwcHhdIFtAbWVkaWEobWluLXdpZHRoOjEzNjZweCldOnctW21heCg0MDBweCw1MHZ3KV0nXG4gICAgICAgICAgICA6ICdbQG1lZGlhKG1pbi13aWR0aDoxMDI0cHgpXTp3LVs0MDBweF0gW0BtZWRpYShtaW4td2lkdGg6MTkyMHB4KV06dy1bNDgwcHhdIFtAbWVkaWEobWluLXdpZHRoOjI1NjBweCldOnctWzU2MHB4XSBbQG1lZGlhKG1pbi13aWR0aDozNDQwcHgpXTp3LVs2NDBweF0nLFxuICAgICk7XG5cbiAgICBwcml2YXRlIF9lbGVtZW50VG9SZWZvY3VzOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbExvY2sgPSBjcmVhdGVTY3JvbGxMb2NrKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgICAgICB0aGlzLnNpZGVTaGVldFNlcnZpY2UuX3JlZ2lzdGVySW5zdGFuY2UoKTtcbiAgICAgICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5zaWRlU2hlZXRTZXJ2aWNlLl91bnJlZ2lzdGVySW5zdGFuY2UoKSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cubWF0Y2hNZWRpYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgbWVkaWFRdWVyeUxpc3QgPSB3aW5kb3cubWF0Y2hNZWRpYShPVkVSTEFZX1FVRVJZKTtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KTogdm9pZCA9PiB0aGlzLmlzRGVza3RvcFZpZXdwb3J0LnNldChldmVudC5tYXRjaGVzKTtcbiAgICAgICAgICAgIG1lZGlhUXVlcnlMaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IG1lZGlhUXVlcnlMaXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTG9ja1Njcm9sbCA9IHRoaXMuc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkgJiYgdGhpcy5pc092ZXJsYXlNb2RlKCk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkTG9ja1Njcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbExvY2subG9jaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxMb2NrLnVubG9jaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50VG9SZWZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCF1bnRyYWNrZWQodGhpcy5pc092ZXJsYXlNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLnRpdGxlUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50VG9SZWZvY3VzPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRUb1JlZm9jdXMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLl9zY3JvbGxMb2NrLnVubG9jaygpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VTaWRlU2hlZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZVNoZWV0U2VydmljZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX21hdGNoZXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5tYXRjaE1lZGlhID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHdpbmRvdy5tYXRjaE1lZGlhKE9WRVJMQVlfUVVFUlkpLm1hdGNoZXNcbiAgICAgICAgICAgIDogdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1zaGVldCByZWxhdGl2ZSBmbGV4IGgtZnVsbCB3LWZ1bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2lkZS1zaGVldF9fY29udGVudCBtaW4tdy0wIGZsZXgtMSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoc2lkZVNoZWV0U2VydmljZS52aXNpYmxlKCkpIHtcbiAgICAgICAgQGlmIChpc092ZXJsYXlNb2RlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLXNoZWV0X19iYWNrZHJvcCBhYnNvbHV0ZSBpbnNldC0wIHotMjAgYmctW3JnYmEoMCwwLDAsMC41KV1cIiBAYmFja2Ryb3BWaXNpYmlsaXR5PjwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJpc092ZXJsYXlNb2RlKClcIlxuICAgICAgICAgICAgW0BwYW5lbFZpc2liaWxpdHldPVwiYW5pbWF0aW9uTW9kZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2lkZS1zaGVldF9fcGFuZWwgei0zMCBmbGV4IGZsZXgtY29sIGdhcC00IGJvcmRlci1sIGJvcmRlci1ncmF5c2NhbGUtMjAgYmctZ3JheXNjYWxlLTAgcC00IHNoYWRvdy1bMHB4XzJweF80cHhfcmdiYSgwLDAsMCwwLjIpLDBweF8xcHhfMTBweF9yZ2JhKDAsMCwwLDAuMTIpLDBweF80cHhfNXB4X3JnYmEoMCwwLDAsMC4xNCldIGFic29sdXRlIGluc2V0LTAgdy1mdWxsIFtAbWVkaWEobWluLXdpZHRoOjEwMjRweCldOnN0YXRpYyBbQG1lZGlhKG1pbi13aWR0aDoxMDI0cHgpXTppbnNldC1hdXRvXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJwYW5lbFdpZHRoQ2xhc3NlcygpXCJcbiAgICAgICAgICAgIFtjbGFzcy5zaWRlLXNoZWV0X19wYW5lbC0taGFsZl09XCJzaWRlU2hlZXRTZXJ2aWNlLnNpemUoKSA9PT0gJ2hhbGYnXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiaXNPdmVybGF5TW9kZSgpID8gJ2RpYWxvZycgOiAnY29tcGxlbWVudGFyeSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1tb2RhbF09XCJpc092ZXJsYXlNb2RlKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLXNoZWV0X19oZWFkZXIgZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0aXRsZVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRpdGxlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pbi13LTAgZmxleC0xIGJyZWFrLXdvcmRzIGZvbnQtb3Blbi1zYW5zIHRleHQtYmFzZSBmb250LW5vcm1hbCB1cHBlcmNhc2UgdGV4dC1ncmF5c2NhbGUtOTAgb3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2lkZVNoZWV0U2VydmljZS5oZWFkZXIoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZWRpdW0gYm9yZGVyLW5vbmUgYmctdHJhbnNwYXJlbnQgcC0yIG91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW9mZnNldC1bM3B4XSBmb2N1cy12aXNpYmxlOm91dGxpbmUtW3ZhcigtLXMtZm9jdXMtcmluZy1jb2xvciwjMDA5MGZmKV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkZlY2hhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VTaWRlU2hlZXQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzIHRleHQteHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxociBjbGFzcz1cImgtcHggdy1mdWxsIGJvcmRlci0wIGJnLWdyYXlzY2FsZS0yMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtc2hlZXRfX2JvZHkgbWluLWgtMCBmbGV4LTEgb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlU2hlZXRTZXJ2aWNlLnRlbXBsYXRlKCk7IGNvbnRleHQ6IHNpZGVTaGVldFNlcnZpY2UuY29udGV4dCgpXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICB9XG48L2Rpdj5cbiJdfQ==