valtech-components 4.0.962 → 4.0.964

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 (173) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +3 -3
  2. package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
  3. package/esm2022/lib/components/atoms/button/button.component.mjs +3 -3
  4. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +3 -3
  5. package/esm2022/lib/components/atoms/display/display.component.mjs +3 -3
  6. package/esm2022/lib/components/atoms/divider/divider.component.mjs +3 -3
  7. package/esm2022/lib/components/atoms/href/href.component.mjs +3 -3
  8. package/esm2022/lib/components/atoms/icon/icon.component.mjs +3 -3
  9. package/esm2022/lib/components/atoms/image/image.component.mjs +3 -3
  10. package/esm2022/lib/components/atoms/notice/notice.component.mjs +3 -3
  11. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +3 -3
  12. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
  13. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
  14. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +2 -2
  15. package/esm2022/lib/components/atoms/text/text.component.mjs +3 -3
  16. package/esm2022/lib/components/atoms/title/title.component.mjs +3 -3
  17. package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +3 -3
  18. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +3 -3
  19. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +3 -3
  20. package/esm2022/lib/components/molecules/animal-card/animal-card.component.mjs +3 -3
  21. package/esm2022/lib/components/molecules/article-card/article-card.component.mjs +3 -3
  22. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +3 -3
  23. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +3 -3
  24. package/esm2022/lib/components/molecules/card/card.component.mjs +3 -3
  25. package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +3 -3
  26. package/esm2022/lib/components/molecules/chat-input/chat-input.component.mjs +3 -3
  27. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -3
  28. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +3 -3
  29. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -3
  30. package/esm2022/lib/components/molecules/comment/comment.component.mjs +4 -4
  31. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +3 -3
  32. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +3 -3
  33. package/esm2022/lib/components/molecules/conversation-list-item/conversation-list-item.component.mjs +3 -3
  34. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +3 -3
  35. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +5 -5
  36. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +7 -7
  37. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +3 -3
  38. package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +3 -3
  39. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
  40. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +3 -3
  41. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +3 -3
  42. package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +3 -3
  43. package/esm2022/lib/components/molecules/empty-state/empty-state.component.mjs +5 -5
  44. package/esm2022/lib/components/molecules/entity-card/entity-card.component.mjs +3 -3
  45. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +3 -3
  46. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +3 -3
  47. package/esm2022/lib/components/molecules/field-options-editor/field-options-editor.component.mjs +5 -5
  48. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
  49. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +3 -3
  50. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +4 -4
  51. package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
  52. package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +3 -3
  53. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
  54. package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
  55. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +5 -5
  56. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
  57. package/esm2022/lib/components/molecules/media-object/media-object.component.mjs +3 -3
  58. package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +3 -3
  59. package/esm2022/lib/components/molecules/metadata-list/metadata-list.component.mjs +3 -3
  60. package/esm2022/lib/components/molecules/metric-card/metric-card.component.mjs +3 -3
  61. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +3 -3
  62. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
  63. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +3 -3
  64. package/esm2022/lib/components/molecules/operation-reference/operation-reference.component.mjs +3 -3
  65. package/esm2022/lib/components/molecules/option-cards/option-cards.component.mjs +5 -5
  66. package/esm2022/lib/components/molecules/page-links/page-links.component.mjs +3 -3
  67. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +3 -3
  68. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
  69. package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +5 -5
  70. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +3 -3
  71. package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
  72. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
  73. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
  74. package/esm2022/lib/components/molecules/profile-card/profile-card.component.mjs +3 -3
  75. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +5 -5
  76. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
  77. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +3 -3
  78. package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
  79. package/esm2022/lib/components/molecules/reaction-bar/reaction-bar.component.mjs +3 -3
  80. package/esm2022/lib/components/molecules/request-form/request-form.component.mjs +3 -3
  81. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
  82. package/esm2022/lib/components/molecules/section-header/section-header.component.mjs +3 -3
  83. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -3
  84. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
  85. package/esm2022/lib/components/molecules/select-search/select-search-picker-modal.component.mjs +3 -3
  86. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +3 -3
  87. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +4 -4
  88. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +3 -3
  89. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +3 -3
  90. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
  91. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +3 -3
  92. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
  93. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +3 -3
  94. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
  95. package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +3 -3
  96. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +3 -3
  97. package/esm2022/lib/components/molecules/usage-meters/usage-meters.component.mjs +3 -3
  98. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +3 -3
  99. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +3 -3
  100. package/esm2022/lib/components/organisms/access-request-view/access-request-view.component.mjs +5 -5
  101. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +7 -7
  102. package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +3 -3
  103. package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
  104. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +3 -3
  105. package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +3 -3
  106. package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
  107. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +3 -3
  108. package/esm2022/lib/components/organisms/chat-window/chat-window.component.mjs +3 -3
  109. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +5 -5
  110. package/esm2022/lib/components/organisms/confirmation-dialog-v2/confirmation-dialog-v2.component.mjs +3 -3
  111. package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +3 -3
  112. package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +5 -5
  113. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
  114. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +3 -3
  115. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
  116. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +3 -3
  117. package/esm2022/lib/components/organisms/faq/faq.component.mjs +3 -3
  118. package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +5 -5
  119. package/esm2022/lib/components/organisms/folder-tabs/folder-tabs.component.mjs +3 -3
  120. package/esm2022/lib/components/organisms/form/form.component.mjs +5 -5
  121. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +3 -3
  122. package/esm2022/lib/components/organisms/group-members/group-members.component.mjs +3 -3
  123. package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
  124. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +7 -7
  125. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +3 -3
  126. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +11 -11
  127. package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
  128. package/esm2022/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.mjs +6 -6
  129. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +5 -5
  130. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +5 -5
  131. package/esm2022/lib/components/organisms/menu/menu.component.mjs +3 -3
  132. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  133. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  134. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  135. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  136. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
  137. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +7 -7
  138. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +5 -5
  139. package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
  140. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +3 -3
  141. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +5 -5
  142. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +11 -11
  143. package/esm2022/lib/components/organisms/qr-scanner/qr-scanner.component.mjs +3 -3
  144. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +7 -7
  145. package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +7 -7
  146. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
  147. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +5 -5
  148. package/esm2022/lib/components/organisms/session-list-modal/session-list-modal.component.mjs +3 -3
  149. package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs +3 -3
  150. package/esm2022/lib/components/organisms/thread-panel/thread-panel.component.mjs +3 -3
  151. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  152. package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +5 -5
  153. package/esm2022/lib/components/organisms/verify-view/verify-view.component.mjs +3 -3
  154. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
  155. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +3 -3
  156. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +3 -3
  157. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +3 -3
  158. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +3 -3
  159. package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
  160. package/esm2022/lib/services/confirmation-dialog/types.mjs +2 -2
  161. package/esm2022/lib/services/content/transformer.mjs +3 -3
  162. package/esm2022/lib/services/markdown-article/beautify-legal-article.mjs +2 -2
  163. package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +2 -2
  164. package/esm2022/lib/services/modal/types.mjs +2 -2
  165. package/esm2022/lib/version.mjs +2 -2
  166. package/fesm2022/valtech-components.mjs +406 -406
  167. package/fesm2022/valtech-components.mjs.map +1 -1
  168. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +1 -1
  169. package/lib/version.d.ts +1 -1
  170. package/package.json +1 -1
  171. package/src/lib/components/styles/_docs-page.scss +1 -1
  172. package/src/lib/components/styles/overrides.scss +4 -4
  173. package/src/lib/components/styles/variables.scss +7 -7
@@ -192,7 +192,7 @@ export class PermissionsViewComponent {
192
192
  [props]="{
193
193
  content: tt('errorTitle'),
194
194
  size: 'medium',
195
- color: 'medium',
195
+ color: 'dark',
196
196
  bold: false,
197
197
  }"
198
198
  />
@@ -214,7 +214,7 @@ export class PermissionsViewComponent {
214
214
  [props]="{
215
215
  content: tt('systemRolesHint'),
216
216
  size: 'medium',
217
- color: 'medium',
217
+ color: 'dark',
218
218
  bold: false,
219
219
  }"
220
220
  />
@@ -285,7 +285,7 @@ export class PermissionsViewComponent {
285
285
  [props]="{
286
286
  content: tt('customRolesHint'),
287
287
  size: 'medium',
288
- color: 'medium',
288
+ color: 'dark',
289
289
  bold: false,
290
290
  }"
291
291
  />
@@ -295,7 +295,7 @@ export class PermissionsViewComponent {
295
295
  [props]="{
296
296
  content: tt('noCustomRoles'),
297
297
  size: 'medium',
298
- color: 'medium',
298
+ color: 'dark',
299
299
  bold: false,
300
300
  }"
301
301
  />
@@ -347,7 +347,7 @@ export class PermissionsViewComponent {
347
347
  }
348
348
  </div>
349
349
  </val-container>
350
- `, isInline: true, styles: [".page{padding:16px 0}.page-header{margin-bottom:24px}.spinner-row,.error-row{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 0}.perm-section{margin-bottom:32px}.perm-section__header{margin-bottom:12px}.role-list{display:flex;flex-direction:column;gap:10px}.role-card{border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--ion-card-background, var(--ion-background-color, #fff));box-shadow:0 2px 8px #00000012}.role-card__header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.role-card__name{font-size:.9375rem;font-weight:600;color:var(--ion-color-dark)}.role-card__desc{font-size:.8125rem;color:var(--ion-color-medium);line-height:1.4}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-medium-shade, var(--ion-color-medium));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{display:inline-flex;align-items:baseline;gap:4px;font-size:.75rem;padding:4px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark);border:1px solid transparent}.perm-chip__resource{font-weight:600}.perm-chip__actions{font-weight:400;color:var(--ion-color-medium);font-size:.6875rem}.perm-chip--all{background:rgba(var(--ion-color-primary-rgb),.1);border-color:rgba(var(--ion-color-primary-rgb),.3);color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--all .perm-chip__resource{color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--write{background:rgba(var(--ion-color-secondary-rgb),.08);border-color:rgba(var(--ion-color-secondary-rgb),.2)}.perm-chip--write .perm-chip__resource{color:var(--ion-color-secondary-shade, var(--ion-color-secondary))}.perm-chip--read{background:var(--ion-color-light, rgba(0, 0, 0, .04))}.perm-chip--empty{color:var(--ion-color-medium);background:transparent;padding-left:0}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }] }); }
350
+ `, isInline: true, styles: [".page{padding:16px 0}.page-header{margin-bottom:24px}.spinner-row,.error-row{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 0}.perm-section{margin-bottom:32px}.perm-section__header{margin-bottom:12px}.role-list{display:flex;flex-direction:column;gap:10px}.role-card{border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--ion-card-background, var(--ion-background-color, #fff));box-shadow:0 2px 8px #00000012}.role-card__header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.role-card__name{font-size:.9375rem;font-weight:600;color:var(--ion-color-dark)}.role-card__desc{font-size:.8125rem;color:var(--ion-color-dark);line-height:1.4}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-dark-shade, var(--ion-color-dark));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{display:inline-flex;align-items:baseline;gap:4px;font-size:.75rem;padding:4px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark);border:1px solid transparent}.perm-chip__resource{font-weight:600}.perm-chip__actions{font-weight:400;color:var(--ion-color-dark);font-size:.6875rem}.perm-chip--all{background:rgba(var(--ion-color-primary-rgb),.1);border-color:rgba(var(--ion-color-primary-rgb),.3);color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--all .perm-chip__resource{color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--write{background:rgba(var(--ion-color-secondary-rgb),.08);border-color:rgba(var(--ion-color-secondary-rgb),.2)}.perm-chip--write .perm-chip__resource{color:var(--ion-color-secondary-shade, var(--ion-color-secondary))}.perm-chip--read{background:var(--ion-color-light, rgba(0, 0, 0, .04))}.perm-chip--empty{color:var(--ion-color-dark);background:transparent;padding-left:0}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }] }); }
351
351
  }
352
352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionsViewComponent, decorators: [{
353
353
  type: Component,
@@ -383,7 +383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
383
383
  [props]="{
384
384
  content: tt('errorTitle'),
385
385
  size: 'medium',
386
- color: 'medium',
386
+ color: 'dark',
387
387
  bold: false,
388
388
  }"
389
389
  />
@@ -405,7 +405,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
405
405
  [props]="{
406
406
  content: tt('systemRolesHint'),
407
407
  size: 'medium',
408
- color: 'medium',
408
+ color: 'dark',
409
409
  bold: false,
410
410
  }"
411
411
  />
@@ -476,7 +476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
476
476
  [props]="{
477
477
  content: tt('customRolesHint'),
478
478
  size: 'medium',
479
- color: 'medium',
479
+ color: 'dark',
480
480
  bold: false,
481
481
  }"
482
482
  />
@@ -486,7 +486,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
486
486
  [props]="{
487
487
  content: tt('noCustomRoles'),
488
488
  size: 'medium',
489
- color: 'medium',
489
+ color: 'dark',
490
490
  bold: false,
491
491
  }"
492
492
  />
@@ -538,10 +538,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
538
538
  }
539
539
  </div>
540
540
  </val-container>
541
- `, styles: [".page{padding:16px 0}.page-header{margin-bottom:24px}.spinner-row,.error-row{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 0}.perm-section{margin-bottom:32px}.perm-section__header{margin-bottom:12px}.role-list{display:flex;flex-direction:column;gap:10px}.role-card{border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--ion-card-background, var(--ion-background-color, #fff));box-shadow:0 2px 8px #00000012}.role-card__header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.role-card__name{font-size:.9375rem;font-weight:600;color:var(--ion-color-dark)}.role-card__desc{font-size:.8125rem;color:var(--ion-color-medium);line-height:1.4}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-medium-shade, var(--ion-color-medium));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{display:inline-flex;align-items:baseline;gap:4px;font-size:.75rem;padding:4px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark);border:1px solid transparent}.perm-chip__resource{font-weight:600}.perm-chip__actions{font-weight:400;color:var(--ion-color-medium);font-size:.6875rem}.perm-chip--all{background:rgba(var(--ion-color-primary-rgb),.1);border-color:rgba(var(--ion-color-primary-rgb),.3);color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--all .perm-chip__resource{color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--write{background:rgba(var(--ion-color-secondary-rgb),.08);border-color:rgba(var(--ion-color-secondary-rgb),.2)}.perm-chip--write .perm-chip__resource{color:var(--ion-color-secondary-shade, var(--ion-color-secondary))}.perm-chip--read{background:var(--ion-color-light, rgba(0, 0, 0, .04))}.perm-chip--empty{color:var(--ion-color-medium);background:transparent;padding-left:0}\n"] }]
541
+ `, styles: [".page{padding:16px 0}.page-header{margin-bottom:24px}.spinner-row,.error-row{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 0}.perm-section{margin-bottom:32px}.perm-section__header{margin-bottom:12px}.role-list{display:flex;flex-direction:column;gap:10px}.role-card{border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--ion-card-background, var(--ion-background-color, #fff));box-shadow:0 2px 8px #00000012}.role-card__header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.role-card__name{font-size:.9375rem;font-weight:600;color:var(--ion-color-dark)}.role-card__desc{font-size:.8125rem;color:var(--ion-color-dark);line-height:1.4}.perm-group{display:flex;flex-direction:column;gap:6px}.perm-group__badge{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:6px}.perm-group--app .perm-group__badge{color:var(--ion-color-primary);background:rgba(var(--ion-color-primary-rgb),.12)}.perm-group--org .perm-group__badge{color:var(--ion-color-dark-shade, var(--ion-color-dark));background:var(--ion-color-light-shade, rgba(0, 0, 0, .06))}.perm-group--other .perm-group__badge{color:var(--ion-color-tertiary);background:rgba(var(--ion-color-tertiary-rgb),.12)}.perm-chips{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{display:inline-flex;align-items:baseline;gap:4px;font-size:.75rem;padding:4px 10px;border-radius:20px;background:var(--ion-color-light);color:var(--ion-color-dark);border:1px solid transparent}.perm-chip__resource{font-weight:600}.perm-chip__actions{font-weight:400;color:var(--ion-color-dark);font-size:.6875rem}.perm-chip--all{background:rgba(var(--ion-color-primary-rgb),.1);border-color:rgba(var(--ion-color-primary-rgb),.3);color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--all .perm-chip__resource{color:var(--ion-color-primary-shade, var(--ion-color-primary))}.perm-chip--write{background:rgba(var(--ion-color-secondary-rgb),.08);border-color:rgba(var(--ion-color-secondary-rgb),.2)}.perm-chip--write .perm-chip__resource{color:var(--ion-color-secondary-shade, var(--ion-color-secondary))}.perm-chip--read{background:var(--ion-color-light, rgba(0, 0, 0, .04))}.perm-chip--empty{color:var(--ion-color-dark);background:transparent;padding-left:0}\n"] }]
542
542
  }], ctorParameters: () => [], propDecorators: { config: [{
543
543
  type: Input
544
544
  }], isModal: [{
545
545
  type: Input
546
546
  }] } });
547
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Blcm1pc3Npb25zLXZpZXcvcGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xF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Ozs0RkFnVVQsd0JBQXdCO2tCQTNVcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0xUO3dEQXlKUSxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFwcHNPdXRsaW5lLCBidXNpbmVzc091dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBTa2VsZXRvbkxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL3NrZWxldG9uLWxheW91dC9za2VsZXRvbi1sYXlvdXQuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlLFxuICBQZXJtaXNzaW9uQ2F0YWxvZ1Jlc3BvbnNlLFxuICBQZXJtQ2hpcCxcbiAgUGVybWlzc2lvblNjb3BlR3JvdXAsXG4gIGNsYXNzaWZ5Q2hpcCxcbiAgZ3JvdXBQZXJtaXNzaW9uc0J5U2NvcGUsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFBlcm1pc3Npb25zVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUEVSTUlTU0lPTlNfVklFV19JMThOIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy12aWV3LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5QZXJtaXNzaW9ucyc7XG5cbmludGVyZmFjZSBSb2xlVmlldyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzU3lzdGVtOiBib29sZWFuO1xuICBncm91cHM6IFBlcm1pc3Npb25TY29wZUdyb3VwW107XG4gIGhhc1Blcm1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGB2YWwtcGVybWlzc2lvbnMtdmlld2Ag4oCUIHZpc3RhIFBlcm1pc29zIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBWaXNvciBSQkFDIGRlIHNvbG8gbGVjdHVyYTogbXVlc3RyYSBsb3Mgcm9sZXMgZGVsIHNpc3RlbWEgKFZpc29yL0VkaXRvci9BZG1pbiArXG4gKiByb2xlcyBkZSBwbGF0YWZvcm1hKSB5IGxvcyByb2xlcyBwZXJzb25hbGl6YWRvcyBkZSBsYSBvcmcgYWN0aXZhLCBjb24gZWxcbiAqIGNhdMOhbG9nbyBkZSBwZXJtaXNvcyBhZ3J1cGFkbyBwb3IgYWxjYW5jZSAoYXBwIGFjdHVhbCAvIHBsYXRhZm9ybWEgLyBvdHJhcyBhcHBzKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqICoqUkJBQyBpbnRlcm5vKiogKGNvbW8gYG9yZ2FuaXphdGlvbi12aWV3YCk6IGxlZSBsYSBvcmcgYWN0aXZhIHbDrWFcbiAqIGBBdXRoU2VydmljZS51c2VyKCkuYWN0aXZlT3JnSWRgLiBMYSB2aXN0YSBOTyBtdXRhIG5hZGEg4oCUIGVsIGNvbnRyb2wgZGUgcXVpw6luXG4gKiBwdWVkZSB2ZXJsYSBlcyByZXNwb25zYWJpbGlkYWQgZGVsIGd1YXJkIGRlIHJ1dGEgZGVsIGNvbnN1bWVyOyBubyBoYXkgZ2F0aW5nXG4gKiBmaW5vIGludGVybm8gbmkgc2UgZXhwb25lIGNvbW8gY29uZmlnLlxuICpcbiAqIERhdG9zOiBgZm9ya0pvaW5gIGRlIGBPcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZClgIChyb2xlcyBkZSBsYSBvcmcpICtcbiAqIGBQZXJtaXNzaW9uQ2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0YWxvZyhvcmdJZClgIChjYXTDoWxvZ28gKyBhcHBJZCBhY3R1YWwpLiBFbFxuICogY2F0w6Fsb2dvIGRlZmluZSBlbCBhbGNhbmNlIChgc2NvcGVgL2BhcHBJZGApIGRlIGNhZGEgcmVjdXJzbyBwYXJhIGFncnVwYXIuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgIHNlXG4gKiBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLiBBdXRvLXJlZ2lzdHJhXG4gKiBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSAoZGVmYXVsdFxuICogYFNldHRpbmdzLlBlcm1pc3Npb25zYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wZXJtaXNzaW9ucy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkljb24sXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiAnbWQnLCBwYWRkaW5nOiAnbm9uZScgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHR0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udGVudDogdHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogNCB9XCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3Itcm93XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnZXJyb3JUaXRsZScpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJldHJ5QnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJsb2FkKClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd1N5c3RlbVJvbGVzKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBlcm0tc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1zZWN0aW9uX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ3N5c3RlbVJvbGVzVGl0bGUnKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnc3lzdGVtUm9sZXNIaW50JyksXG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChyb2xlIG9mIHN5c3RlbVJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX25hbWVcIj57eyByb2xlTGFiZWwocm9sZS5uYW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgnc3lzdGVtQmFkZ2UnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChyb2xlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX2Rlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIXJvbGUuaGFzUGVybXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXAgcGVybS1jaGlwLS1lbXB0eVwiPnt7IHR0KCdub1Blcm1pc3Npb25zJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGcgb2Ygcm9sZS5ncm91cHM7IHRyYWNrIGcua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIncGVybS1ncm91cCBwZXJtLWdyb3VwLS0nICsgZy5zY29wZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tZ3JvdXBfX2JhZGdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnLnNjb3BlID09PSAnYXBwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcHBzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGcuc2NvcGUgPT09ICdvcmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImJ1c2luZXNzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tY2hpcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjaGlwIG9mIGcuY2hpcHM7IHRyYWNrIGNoaXAucmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIncGVybS1jaGlwIHBlcm0tY2hpcC0tJyArIGNoaXBUeXBlKGNoaXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwZXJtLWNoaXBfX3Jlc291cmNlXCI+e3sgY2hpcC5yZXNvdXJjZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjaGlwLmlzQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXBfX2FjdGlvbnNcIj57eyBjaGlwLmFjdGlvbnMuam9pbignLCAnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dDdXN0b21Sb2xlcykge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwZXJtLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdjdXN0b21Sb2xlc1RpdGxlJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2N1c3RvbVJvbGVzSGludCcpLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGN1c3RvbVJvbGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnbm9DdXN0b21Sb2xlcycpLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgY3VzdG9tUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fbmFtZVwiPnt7IHJvbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm9sZS1jYXJkX19kZXNjXCI+e3sgcm9sZS5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tY2hpcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXAgcGVybS1jaGlwLS1lbXB0eVwiPnt7IHR0KCdub1Blcm1pc3Npb25zJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGcgb2Ygcm9sZS5ncm91cHM7IHRyYWNrIGcua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidwZXJtLWdyb3VwIHBlcm0tZ3JvdXAtLScgKyBnLnNjb3BlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWdyb3VwX19iYWRnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnLnNjb3BlID09PSAnYXBwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFwcHMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGcuc2NvcGUgPT09ICdvcmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnVzaW5lc3Mtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjaGlwIG9mIGcuY2hpcHM7IHRyYWNrIGNoaXAucmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidwZXJtLWNoaXAgcGVybS1jaGlwLS0nICsgY2hpcFR5cGUoY2hpcClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicGVybS1jaGlwX19yZXNvdXJjZVwiPnt7IGNoaXAucmVzb3VyY2UgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjaGlwLmlzQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tY2hpcF9fYWN0aW9uc1wiPnt7IGNoaXAuYWN0aW9ucy5qb2luKCcsICcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC8qIEFuY2hvIHkgY3JlY2ltaWVudG8gY29uIGVsIHJhaWwgY29sYXBzYWRvIGxvcyBkYSB2YWwtY29udGFpbmVyIChzaXplXG4gICAgICAgICAnbWQnKSwgbm8gQ1NTIGxvY2FsOiB2ZXIgY29udGFpbmVyLmNvbXBvbmVudC5zY3NzLiAqL1xuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLnNwaW5uZXItcm93LFxuICAgICAgLmVycm9yLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgcGFkZGluZzogMzJweCAwO1xuICAgICAgfVxuICAgICAgLnBlcm0tc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gICAgICB9XG4gICAgICAucGVybS1zZWN0aW9uX19oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvbGUtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWNhcmQge1xuICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wNyk7XG4gICAgICB9XG4gICAgICAucm9sZS1jYXJkX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZF9fbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZF9fZGVzYyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLyogQmFkZ2UgZGUgYWxjYW5jZSBkZWwgZ3J1cG8g4oCUIGNvbG9yIGNvbXVuaWNhIHNpIGVsIHBlcm1pc28gZXMgZ2VuZXJhbCxcbiAgICAgICAgIGRlIGxhIGFwcCBhY3R1YWwsIG8gZGUgb3RyYSBhcHAgKGFudGVzIGVyYSB1biBsYWJlbCBncmlzIHBsYW5vKS4gKi9cbiAgICAgIC5wZXJtLWdyb3VwX19iYWRnZSB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHBhZGRpbmc6IDNweCA5cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwLS1hcHAgLnBlcm0tZ3JvdXBfX2JhZGdlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwLS1vcmcgLnBlcm0tZ3JvdXBfX2JhZGdlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUsIHZhcigtLWlvbi1jb2xvci1tZWRpdW0pKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwLS1vdGhlciAucGVybS1ncm91cF9fYmFkZ2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItdGVydGlhcnktcmdiKSwgMC4xMik7XG4gICAgICB9XG4gICAgICAucGVybS1jaGlwcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAucGVybS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcF9fcmVzb3VyY2Uge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcF9fYWN0aW9ucyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICB9XG4gICAgICAvKiBTZW3DoW50aWNvOiBUb2RvID0gcHJpbWFyeSB0aW50ICsgYm9yZGUgKi9cbiAgICAgIC5wZXJtLWNoaXAtLWFsbCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZSwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXAtLWFsbCAucGVybS1jaGlwX19yZXNvdXJjZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1zaGFkZSwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgIH1cbiAgICAgIC8qIEVzY3JpdHVyYS9nZXN0acOzbiA9IHNlY29uZGFyeSB0aW50ICovXG4gICAgICAucGVybS1jaGlwLS13cml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktcmdiKSwgMC4yKTtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXAtLXdyaXRlIC5wZXJtLWNoaXBfX3Jlc291cmNlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktc2hhZGUsIHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpKTtcbiAgICAgIH1cbiAgICAgIC8qIExlY3R1cmEgPSBuZXV0cm8gKi9cbiAgICAgIC5wZXJtLWNoaXAtLXJlYWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNCkpO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcC0tZW1wdHkge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBwZXJtaXNzaW9uc0NvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFBlcm1pc3Npb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFBlcm1pc3Npb25zVmlld0NvbmZpZztcblxuICAvKipcbiAgICogQ3VhbmRvIGB0cnVlYCwgbGEgdmlzdGEgZXN0w6EgZW1iZWJpZGEgZW4gdW4gbW9kYWwg4oCUIHN1cHJpbWUgZWwgYmFjay1oZWFkZXJcbiAgICogKGxvIGdlc3Rpb25hIGVsIG1vZGFsIHBhZHJlKS4gRGVmYXVsdCBgZmFsc2VgICh1c28gY29tbyBydXRhKS5cbiAgICovXG4gIEBJbnB1dCgpIGlzTW9kYWwgPSBmYWxzZTtcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFJlcXVpcmVkPFBlcm1pc3Npb25zVmlld0NvbmZpZz4+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncGVybWlzc2lvbnNDb25maWcnXSA/PyB7fSkgYXMgUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogUGVybWlzc2lvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1N5c3RlbVJvbGVzOiBtZXJnZWQuc2hvd1N5c3RlbVJvbGVzID8/IHRydWUsXG4gICAgICBzaG93Q3VzdG9tUm9sZXM6IG1lcmdlZC5zaG93Q3VzdG9tUm9sZXMgPz8gdHJ1ZSxcbiAgICAgIHNob3dPdGhlckFwcFBlcm1pc3Npb25zOiBtZXJnZWQuc2hvd090aGVyQXBwUGVybWlzc2lvbnMgPz8gZmFsc2UsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKGNhcHR1cmFkbyBwYXJhIGxsYW1hZGFzIG5vLXJlYWN0aXZhcykuICovXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRFcnJvciA9IHNpZ25hbDx1bmtub3duIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZXMgPSBzaWduYWw8Um9sZVZpZXdbXT4oW10pO1xuXG4gIHJlYWRvbmx5IHN5c3RlbVJvbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yb2xlcygpLmZpbHRlcihyID0+IHIuaXNTeXN0ZW0pKTtcbiAgcmVhZG9ubHkgY3VzdG9tUm9sZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVzKCkuZmlsdGVyKHIgPT4gIXIuaXNTeXN0ZW0pKTtcblxuICByZWFkb25seSBhY3RpdmVPcmdJZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLnVzZXIoKSBhcyB7XG4gICAgICBhY3RpdmVPcmdJZD86IHN0cmluZztcbiAgICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgICB9IHwgbnVsbDtcbiAgICByZXR1cm4gdT8uYWN0aXZlT3JnSWQgPz8gdT8uYWN0aXZlT3JnID8/ICcnO1xuICB9KTtcblxuICByZWFkb25seSByZXRyeUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgncmV0cnknKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMubG9hZGluZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGFwcHNPdXRsaW5lLCBidXNpbmVzc091dGxpbmUgfSk7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKG5zLCBQRVJNSVNTSU9OU19WSUVXX0kxOE4pO1xuICAgIHRoaXMubG9hZCgpO1xuICAgIGNvbm5lY3RQYWdlUmVmcmVzaCgoKSA9PiB0aGlzLmxvYWQoKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNb2RhbCkge1xuICAgICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgdGhpcy5ucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICBmb3JrSm9pbih7XG4gICAgICByb2xlczogdGhpcy5vcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZCksXG4gICAgICBjYXRhbG9nOiB0aGlzLmNhdGFsb2cuZ2V0Q2F0YWxvZyhvcmdJZCksXG4gICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IHJvbGVzOiByYXdSb2xlcywgY2F0YWxvZyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcHBJZCA9IGNhdGFsb2cuYXBwSWQ7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIHRoaXMucm9sZXMuc2V0KFxuICAgICAgICAgIChyYXdSb2xlcyA/PyBbXSkubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICB0aGlzLmJ1aWxkUm9sZVZpZXcoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogci5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiByLm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHIuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbnM6IHIucGVybWlzc2lvbnMgPz8gW10sXG4gICAgICAgICAgICAgICAgaXNTeXN0ZW06IHIuaXNTeXN0ZW0gPz8gZmFsc2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNhdGFsb2csXG4gICAgICAgICAgICAgIGN1cnJlbnRBcHBJZCxcbiAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNoaXBUeXBlKGNoaXA6IFBlcm1DaGlwKTogJ2FsbCcgfCAnd3JpdGUnIHwgJ3JlYWQnIHtcbiAgICByZXR1cm4gY2xhc3NpZnlDaGlwKGNoaXAucmF3QWN0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUm9sZVZpZXcoXG4gICAgcm9sZToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgaXNTeXN0ZW06IGJvb2xlYW47XG4gICAgfSxcbiAgICBjYXRhbG9nOiBQaWNrPFBlcm1pc3Npb25DYXRhbG9nUmVzcG9uc2UsICdwZXJtaXNzaW9ucycgfCAnYWN0aW9uTGFiZWxzJz4sXG4gICAgY3VycmVudEFwcElkOiBzdHJpbmcsXG4gICAgbG9jYWxlOiBzdHJpbmdcbiAgKTogUm9sZVZpZXcge1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGdyb3VwUGVybWlzc2lvbnNCeVNjb3BlKFxuICAgICAgcm9sZS5wZXJtaXNzaW9ucyxcbiAgICAgIGNhdGFsb2csXG4gICAgICBjdXJyZW50QXBwSWQsXG4gICAgICBsb2NhbGUsXG4gICAgICB7XG4gICAgICAgIGFwcDogdGhpcy50dCgnZ3JvdXBBcHAnKSxcbiAgICAgICAgb3JnOiB0aGlzLnR0KCdncm91cE9yZycpLFxuICAgICAgICBvdGhlcjogdGhpcy50dCgnZ3JvdXBPdGhlcicpLFxuICAgICAgICBhcHBMYWJlbDogKGFwcElkOiBzdHJpbmcpID0+IHRoaXMuYXBwTGFiZWwoYXBwSWQpLFxuICAgICAgfSxcbiAgICAgIHsgYWxsTGFiZWw6IHRoaXMudHQoJ3Blcm1BbGwnKSB9XG4gICAgKTtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc2hvd090aGVyQXBwUGVybWlzc2lvbnNcbiAgICAgID8gYWxsR3JvdXBzXG4gICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoZyA9PiBnLnNjb3BlICE9PSAnb3RoZXInKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogcm9sZS5pZCxcbiAgICAgIG5hbWU6IHJvbGUubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByb2xlLmRlc2NyaXB0aW9uLFxuICAgICAgaXNTeXN0ZW06IHJvbGUuaXNTeXN0ZW0sXG4gICAgICBncm91cHMsXG4gICAgICBoYXNQZXJtczogZ3JvdXBzLmxlbmd0aCA+IDAsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cblxuICBhcHBMYWJlbChhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBgYXBwXyR7YXBwSWR9YDtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMudHQoa2V5KTtcbiAgICByZXR1cm4gbGFiZWwgPT09IGtleSA/IGFwcElkIDogbGFiZWw7XG4gIH1cblxuICByb2xlTGFiZWwobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB2aWV3ZXI6ICdyb2xlVmlld2VyJyxcbiAgICAgIGVkaXRvcjogJ3JvbGVFZGl0b3InLFxuICAgICAgYWRtaW46ICdyb2xlQWRtaW4nLFxuICAgICAgc3VwZXJfYWRtaW46ICdyb2xlU3VwZXJBZG1pbicsXG4gICAgICBiaW5nb19hZG1pbjogJ3JvbGVCaW5nb0FkbWluJyxcbiAgICAgIGJpbmdvX3Rlc29yZXJvOiAncm9sZUJpbmdvVGVzb3Jlcm8nLFxuICAgICAgYmluZ29fdGFxdWlsbGE6ICdyb2xlQmluZ29UYXF1aWxsYScsXG4gICAgICBiaW5nb19vcGVyYXRvcjogJ3JvbGVCaW5nb09wZXJhdG9yJyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnR0KG1hcFtuYW1lXSA/PyBuYW1lKTtcbiAgfVxufVxuIl19
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Blcm1pc3Npb25zLXZpZXcvcGVybWlzc2lvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xF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Ozs0RkFnVVQsd0JBQXdCO2tCQTNVcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0xUO3dEQXlKUSxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFwcHNPdXRsaW5lLCBidXNpbmVzc091dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBTa2VsZXRvbkxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL3NrZWxldG9uLWxheW91dC9za2VsZXRvbi1sYXlvdXQuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlLFxuICBQZXJtaXNzaW9uQ2F0YWxvZ1Jlc3BvbnNlLFxuICBQZXJtQ2hpcCxcbiAgUGVybWlzc2lvblNjb3BlR3JvdXAsXG4gIGNsYXNzaWZ5Q2hpcCxcbiAgZ3JvdXBQZXJtaXNzaW9uc0J5U2NvcGUsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFBlcm1pc3Npb25zVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUEVSTUlTU0lPTlNfVklFV19JMThOIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy12aWV3LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5QZXJtaXNzaW9ucyc7XG5cbmludGVyZmFjZSBSb2xlVmlldyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzU3lzdGVtOiBib29sZWFuO1xuICBncm91cHM6IFBlcm1pc3Npb25TY29wZUdyb3VwW107XG4gIGhhc1Blcm1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGB2YWwtcGVybWlzc2lvbnMtdmlld2Ag4oCUIHZpc3RhIFBlcm1pc29zIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBWaXNvciBSQkFDIGRlIHNvbG8gbGVjdHVyYTogbXVlc3RyYSBsb3Mgcm9sZXMgZGVsIHNpc3RlbWEgKFZpc29yL0VkaXRvci9BZG1pbiArXG4gKiByb2xlcyBkZSBwbGF0YWZvcm1hKSB5IGxvcyByb2xlcyBwZXJzb25hbGl6YWRvcyBkZSBsYSBvcmcgYWN0aXZhLCBjb24gZWxcbiAqIGNhdMOhbG9nbyBkZSBwZXJtaXNvcyBhZ3J1cGFkbyBwb3IgYWxjYW5jZSAoYXBwIGFjdHVhbCAvIHBsYXRhZm9ybWEgLyBvdHJhcyBhcHBzKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqICoqUkJBQyBpbnRlcm5vKiogKGNvbW8gYG9yZ2FuaXphdGlvbi12aWV3YCk6IGxlZSBsYSBvcmcgYWN0aXZhIHbDrWFcbiAqIGBBdXRoU2VydmljZS51c2VyKCkuYWN0aXZlT3JnSWRgLiBMYSB2aXN0YSBOTyBtdXRhIG5hZGEg4oCUIGVsIGNvbnRyb2wgZGUgcXVpw6luXG4gKiBwdWVkZSB2ZXJsYSBlcyByZXNwb25zYWJpbGlkYWQgZGVsIGd1YXJkIGRlIHJ1dGEgZGVsIGNvbnN1bWVyOyBubyBoYXkgZ2F0aW5nXG4gKiBmaW5vIGludGVybm8gbmkgc2UgZXhwb25lIGNvbW8gY29uZmlnLlxuICpcbiAqIERhdG9zOiBgZm9ya0pvaW5gIGRlIGBPcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZClgIChyb2xlcyBkZSBsYSBvcmcpICtcbiAqIGBQZXJtaXNzaW9uQ2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0YWxvZyhvcmdJZClgIChjYXTDoWxvZ28gKyBhcHBJZCBhY3R1YWwpLiBFbFxuICogY2F0w6Fsb2dvIGRlZmluZSBlbCBhbGNhbmNlIChgc2NvcGVgL2BhcHBJZGApIGRlIGNhZGEgcmVjdXJzbyBwYXJhIGFncnVwYXIuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgIHNlXG4gKiBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLiBBdXRvLXJlZ2lzdHJhXG4gKiBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZSAoZGVmYXVsdFxuICogYFNldHRpbmdzLlBlcm1pc3Npb25zYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wZXJtaXNzaW9ucy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkljb24sXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiAnbWQnLCBwYWRkaW5nOiAnbm9uZScgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHR0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udGVudDogdHQoJ3BhZ2VEZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogNCB9XCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3Itcm93XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnZXJyb3JUaXRsZScpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJyZXRyeUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwibG9hZCgpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dTeXN0ZW1Sb2xlcykge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwZXJtLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm0tc2VjdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzeXN0ZW1Sb2xlc1RpdGxlJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ3N5c3RlbVJvbGVzSGludCcpLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2Ygc3lzdGVtUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1jYXJkX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fbmFtZVwiPnt7IHJvbGVMYWJlbChyb2xlLm5hbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHR0KCdzeXN0ZW1CYWRnZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fZGVzY1wiPnt7IHJvbGUuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghcm9sZS5oYXNQZXJtcykge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tY2hpcCBwZXJtLWNoaXAtLWVtcHR5XCI+e3sgdHQoJ25vUGVybWlzc2lvbnMnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoZyBvZiByb2xlLmdyb3VwczsgdHJhY2sgZy5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidwZXJtLWdyb3VwIHBlcm0tZ3JvdXAtLScgKyBnLnNjb3BlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1ncm91cF9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGcuc2NvcGUgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFwcHMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZy5zY29wZSA9PT0gJ29yZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnVzaW5lc3Mtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGcubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaXAgb2YgZy5jaGlwczsgdHJhY2sgY2hpcC5yZXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidwZXJtLWNoaXAgcGVybS1jaGlwLS0nICsgY2hpcFR5cGUoY2hpcClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInBlcm0tY2hpcF9fcmVzb3VyY2VcIj57eyBjaGlwLnJlc291cmNlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoaXAuaXNBbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm0tY2hpcF9fYWN0aW9uc1wiPnt7IGNoaXAuYWN0aW9ucy5qb2luKCcsICcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0N1c3RvbVJvbGVzKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBlcm0tc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1zZWN0aW9uX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdHQoJ2N1c3RvbVJvbGVzVGl0bGUnKSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnY3VzdG9tUm9sZXNIaW50JyksXG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGN1c3RvbVJvbGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0dCgnbm9DdXN0b21Sb2xlcycpLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1saXN0XCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb2xlIG9mIGN1c3RvbVJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWNhcmRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb2xlLWNhcmRfX25hbWVcIj57eyByb2xlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChyb2xlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvbGUtY2FyZF9fZGVzY1wiPnt7IHJvbGUuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXJvbGUuaGFzUGVybXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtLWNoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1jaGlwIHBlcm0tY2hpcC0tZW1wdHlcIj57eyB0dCgnbm9QZXJtaXNzaW9ucycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChnIG9mIHJvbGUuZ3JvdXBzOyB0cmFjayBnLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIncGVybS1ncm91cCBwZXJtLWdyb3VwLS0nICsgZy5zY29wZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVybS1ncm91cF9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZy5zY29wZSA9PT0gJ2FwcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcHBzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnLnNjb3BlID09PSAnb3JnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImJ1c2luZXNzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybS1jaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY2hpcCBvZiBnLmNoaXBzOyB0cmFjayBjaGlwLnJlc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCIncGVybS1jaGlwIHBlcm0tY2hpcC0tJyArIGNoaXBUeXBlKGNoaXApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInBlcm0tY2hpcF9fcmVzb3VyY2VcIj57eyBjaGlwLnJlc291cmNlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY2hpcC5pc0FsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXBfX2FjdGlvbnNcIj57eyBjaGlwLmFjdGlvbnMuam9pbignLCAnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC92YWwtY29udGFpbmVyPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAvKiBBbmNobyB5IGNyZWNpbWllbnRvIGNvbiBlbCByYWlsIGNvbGFwc2FkbyBsb3MgZGEgdmFsLWNvbnRhaW5lciAoc2l6ZVxuICAgICAgICAgJ21kJyksIG5vIENTUyBsb2NhbDogdmVyIGNvbnRhaW5lci5jb21wb25lbnQuc2Nzcy4gKi9cbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5zcGlubmVyLXJvdyxcbiAgICAgIC5lcnJvci1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDMycHggMDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tc2VjdGlvbl9faGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm9sZS1jYXJkIHtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMTIpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICAgICAgfVxuICAgICAgLnJvbGUtY2FyZF9faGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWNhcmRfX25hbWUge1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5yb2xlLWNhcmRfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAvKiBCYWRnZSBkZSBhbGNhbmNlIGRlbCBncnVwbyDigJQgY29sb3IgY29tdW5pY2Egc2kgZWwgcGVybWlzbyBlcyBnZW5lcmFsLFxuICAgICAgICAgZGUgbGEgYXBwIGFjdHVhbCwgbyBkZSBvdHJhIGFwcCAoYW50ZXMgZXJhIHVuIGxhYmVsIGdyaXMgcGxhbm8pLiAqL1xuICAgICAgLnBlcm0tZ3JvdXBfX2JhZGdlIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgcGFkZGluZzogM3B4IDlweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tZ3JvdXAtLWFwcCAucGVybS1ncm91cF9fYmFkZ2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuICAgICAgLnBlcm0tZ3JvdXAtLW9yZyAucGVybS1ncm91cF9fYmFkZ2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmstc2hhZGUsIHZhcigtLWlvbi1jb2xvci1kYXJrKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodC1zaGFkZSwgcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICB9XG4gICAgICAucGVybS1ncm91cC0tb3RoZXIgLnBlcm0tZ3JvdXBfX2JhZGdlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXBfX3Jlc291cmNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIH1cbiAgICAgIC5wZXJtLWNoaXBfX2FjdGlvbnMge1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgIH1cbiAgICAgIC8qIFNlbcOhbnRpY286IFRvZG8gPSBwcmltYXJ5IHRpbnQgKyBib3JkZSAqL1xuICAgICAgLnBlcm0tY2hpcC0tYWxsIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkpO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcC0tYWxsIC5wZXJtLWNoaXBfX3Jlc291cmNlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXNoYWRlLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkpO1xuICAgICAgfVxuICAgICAgLyogRXNjcml0dXJhL2dlc3Rpw7NuID0gc2Vjb25kYXJ5IHRpbnQgKi9cbiAgICAgIC5wZXJtLWNoaXAtLXdyaXRlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5LXJnYiksIDAuMDgpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeS1yZ2IpLCAwLjIpO1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcC0td3JpdGUgLnBlcm0tY2hpcF9fcmVzb3VyY2Uge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeS1zaGFkZSwgdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSkpO1xuICAgICAgfVxuICAgICAgLyogTGVjdHVyYSA9IG5ldXRybyAqL1xuICAgICAgLnBlcm0tY2hpcC0tcmVhZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICB9XG4gICAgICAucGVybS1jaGlwLS1lbXB0eSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBwZXJtaXNzaW9uc0NvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFBlcm1pc3Npb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFBlcm1pc3Npb25zVmlld0NvbmZpZztcblxuICAvKipcbiAgICogQ3VhbmRvIGB0cnVlYCwgbGEgdmlzdGEgZXN0w6EgZW1iZWJpZGEgZW4gdW4gbW9kYWwg4oCUIHN1cHJpbWUgZWwgYmFjay1oZWFkZXJcbiAgICogKGxvIGdlc3Rpb25hIGVsIG1vZGFsIHBhZHJlKS4gRGVmYXVsdCBgZmFsc2VgICh1c28gY29tbyBydXRhKS5cbiAgICovXG4gIEBJbnB1dCgpIGlzTW9kYWwgPSBmYWxzZTtcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFJlcXVpcmVkPFBlcm1pc3Npb25zVmlld0NvbmZpZz4+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncGVybWlzc2lvbnNDb25maWcnXSA/PyB7fSkgYXMgUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogUGVybWlzc2lvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1N5c3RlbVJvbGVzOiBtZXJnZWQuc2hvd1N5c3RlbVJvbGVzID8/IHRydWUsXG4gICAgICBzaG93Q3VzdG9tUm9sZXM6IG1lcmdlZC5zaG93Q3VzdG9tUm9sZXMgPz8gdHJ1ZSxcbiAgICAgIHNob3dPdGhlckFwcFBlcm1pc3Npb25zOiBtZXJnZWQuc2hvd090aGVyQXBwUGVybWlzc2lvbnMgPz8gZmFsc2UsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKGNhcHR1cmFkbyBwYXJhIGxsYW1hZGFzIG5vLXJlYWN0aXZhcykuICovXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRFcnJvciA9IHNpZ25hbDx1bmtub3duIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZXMgPSBzaWduYWw8Um9sZVZpZXdbXT4oW10pO1xuXG4gIHJlYWRvbmx5IHN5c3RlbVJvbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yb2xlcygpLmZpbHRlcihyID0+IHIuaXNTeXN0ZW0pKTtcbiAgcmVhZG9ubHkgY3VzdG9tUm9sZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVzKCkuZmlsdGVyKHIgPT4gIXIuaXNTeXN0ZW0pKTtcblxuICByZWFkb25seSBhY3RpdmVPcmdJZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLnVzZXIoKSBhcyB7XG4gICAgICBhY3RpdmVPcmdJZD86IHN0cmluZztcbiAgICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgICB9IHwgbnVsbDtcbiAgICByZXR1cm4gdT8uYWN0aXZlT3JnSWQgPz8gdT8uYWN0aXZlT3JnID8/ICcnO1xuICB9KTtcblxuICByZWFkb25seSByZXRyeUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgncmV0cnknKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMubG9hZGluZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGFwcHNPdXRsaW5lLCBidXNpbmVzc091dGxpbmUgfSk7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKG5zLCBQRVJNSVNTSU9OU19WSUVXX0kxOE4pO1xuICAgIHRoaXMubG9hZCgpO1xuICAgIGNvbm5lY3RQYWdlUmVmcmVzaCgoKSA9PiB0aGlzLmxvYWQoKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNb2RhbCkge1xuICAgICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgdGhpcy5ucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5hY3RpdmVPcmdJZCgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICBmb3JrSm9pbih7XG4gICAgICByb2xlczogdGhpcy5vcmdTZXJ2aWNlLmxpc3RPcmdSb2xlcyhvcmdJZCksXG4gICAgICBjYXRhbG9nOiB0aGlzLmNhdGFsb2cuZ2V0Q2F0YWxvZyhvcmdJZCksXG4gICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IHJvbGVzOiByYXdSb2xlcywgY2F0YWxvZyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcHBJZCA9IGNhdGFsb2cuYXBwSWQ7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIHRoaXMucm9sZXMuc2V0KFxuICAgICAgICAgIChyYXdSb2xlcyA/PyBbXSkubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICB0aGlzLmJ1aWxkUm9sZVZpZXcoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogci5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiByLm5hbWUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHIuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbnM6IHIucGVybWlzc2lvbnMgPz8gW10sXG4gICAgICAgICAgICAgICAgaXNTeXN0ZW06IHIuaXNTeXN0ZW0gPz8gZmFsc2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNhdGFsb2csXG4gICAgICAgICAgICAgIGN1cnJlbnRBcHBJZCxcbiAgICAgICAgICAgICAgbG9jYWxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNoaXBUeXBlKGNoaXA6IFBlcm1DaGlwKTogJ2FsbCcgfCAnd3JpdGUnIHwgJ3JlYWQnIHtcbiAgICByZXR1cm4gY2xhc3NpZnlDaGlwKGNoaXAucmF3QWN0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUm9sZVZpZXcoXG4gICAgcm9sZToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICAgICAgaXNTeXN0ZW06IGJvb2xlYW47XG4gICAgfSxcbiAgICBjYXRhbG9nOiBQaWNrPFBlcm1pc3Npb25DYXRhbG9nUmVzcG9uc2UsICdwZXJtaXNzaW9ucycgfCAnYWN0aW9uTGFiZWxzJz4sXG4gICAgY3VycmVudEFwcElkOiBzdHJpbmcsXG4gICAgbG9jYWxlOiBzdHJpbmdcbiAgKTogUm9sZVZpZXcge1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGdyb3VwUGVybWlzc2lvbnNCeVNjb3BlKFxuICAgICAgcm9sZS5wZXJtaXNzaW9ucyxcbiAgICAgIGNhdGFsb2csXG4gICAgICBjdXJyZW50QXBwSWQsXG4gICAgICBsb2NhbGUsXG4gICAgICB7XG4gICAgICAgIGFwcDogdGhpcy50dCgnZ3JvdXBBcHAnKSxcbiAgICAgICAgb3JnOiB0aGlzLnR0KCdncm91cE9yZycpLFxuICAgICAgICBvdGhlcjogdGhpcy50dCgnZ3JvdXBPdGhlcicpLFxuICAgICAgICBhcHBMYWJlbDogKGFwcElkOiBzdHJpbmcpID0+IHRoaXMuYXBwTGFiZWwoYXBwSWQpLFxuICAgICAgfSxcbiAgICAgIHsgYWxsTGFiZWw6IHRoaXMudHQoJ3Blcm1BbGwnKSB9XG4gICAgKTtcbiAgICBjb25zdCBncm91cHMgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc2hvd090aGVyQXBwUGVybWlzc2lvbnNcbiAgICAgID8gYWxsR3JvdXBzXG4gICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoZyA9PiBnLnNjb3BlICE9PSAnb3RoZXInKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogcm9sZS5pZCxcbiAgICAgIG5hbWU6IHJvbGUubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByb2xlLmRlc2NyaXB0aW9uLFxuICAgICAgaXNTeXN0ZW06IHJvbGUuaXNTeXN0ZW0sXG4gICAgICBncm91cHMsXG4gICAgICBoYXNQZXJtczogZ3JvdXBzLmxlbmd0aCA+IDAsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cblxuICBhcHBMYWJlbChhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBgYXBwXyR7YXBwSWR9YDtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMudHQoa2V5KTtcbiAgICByZXR1cm4gbGFiZWwgPT09IGtleSA/IGFwcElkIDogbGFiZWw7XG4gIH1cblxuICByb2xlTGFiZWwobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB2aWV3ZXI6ICdyb2xlVmlld2VyJyxcbiAgICAgIGVkaXRvcjogJ3JvbGVFZGl0b3InLFxuICAgICAgYWRtaW46ICdyb2xlQWRtaW4nLFxuICAgICAgc3VwZXJfYWRtaW46ICdyb2xlU3VwZXJBZG1pbicsXG4gICAgICBiaW5nb19hZG1pbjogJ3JvbGVCaW5nb0FkbWluJyxcbiAgICAgIGJpbmdvX3Rlc29yZXJvOiAncm9sZUJpbmdvVGVzb3Jlcm8nLFxuICAgICAgYmluZ29fdGFxdWlsbGE6ICdyb2xlQmluZ29UYXF1aWxsYScsXG4gICAgICBiaW5nb19vcGVyYXRvcjogJ3JvbGVCaW5nb09wZXJhdG9yJyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnR0KG1hcFtuYW1lXSA/PyBuYW1lKTtcbiAgfVxufVxuIl19
@@ -400,7 +400,7 @@ export class QrScannerComponent {
400
400
  }
401
401
  </div>
402
402
  </div>
403
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.qr-scanner{display:flex;flex-direction:column;align-items:stretch;gap:12px;max-width:420px;margin:0 auto}.qr-scanner__viewport{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:var(--ion-color-dark, #1c1c1e);display:flex;align-items:center;justify-content:center}.qr-scanner__video{width:100%;height:100%;object-fit:cover;display:block}.qr-scanner__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ion-color-light, #f4f5f8)}.qr-scanner__overlay p{margin:0;font-size:.875rem}.qr-scanner__overlay-icon{font-size:3rem;opacity:.6}.qr-scanner__frame{position:absolute;inset:18%;border:3px solid var(--ion-color-primary, #ff00b2);border-radius:12px;box-shadow:0 0 0 9999px #00000040;pointer-events:none}.qr-scanner__message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);color:var(--ion-color-medium, #6b6675);font-size:.875rem}.qr-scanner__message ion-icon{font-size:1.25rem;flex-shrink:0}.qr-scanner__hint{margin:0;text-align:center;font-size:.8125rem;color:var(--ion-color-medium, #6b6675)}.qr-scanner__select{--padding-start: 12px;--padding-end: 12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px}.qr-scanner.is-on-dark .qr-scanner__select{--color: #fff;--placeholder-color: rgba(255, 255, 255, .6);border-color:#ffffff40}.qr-scanner.is-on-dark .qr-scanner__message{background:#ffffff1a;color:#ffffffe6}.qr-scanner.is-on-dark .qr-scanner__hint{color:#ffffffb3}.qr-scanner__actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px}.qr-scanner__sweep{position:absolute;left:0;right:0;top:0;height:2px;border-radius:2px;background:var(--ion-color-primary, #7026df);box-shadow:0 0 8px var(--ion-color-primary, #7026df);animation:qr-scanner-sweep 2s ease-in-out infinite}@keyframes qr-scanner-sweep{0%{top:0;opacity:.25}50%{top:calc(100% - 2px);opacity:1}to{top:0;opacity:.25}}@media (prefers-reduced-motion: reduce){.qr-scanner__sweep{animation:none;opacity:.6}}.qr-scanner__torch{position:absolute;right:12px;bottom:12px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:#00000073;color:#fff;font-size:1.25rem;cursor:pointer}.qr-scanner__torch.is-on{background:var(--ion-color-warning, #ffc409);color:var(--ion-color-dark, #2f2a36)}.qr-scanner__message small{flex-basis:100%;margin-top:2px;font-size:.75rem;opacity:.85}.qr-scanner__actions ion-button{--border-radius: 999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }] }); }
403
+ `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.qr-scanner{display:flex;flex-direction:column;align-items:stretch;gap:12px;max-width:420px;margin:0 auto}.qr-scanner__viewport{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:var(--ion-color-dark, #1c1c1e);display:flex;align-items:center;justify-content:center}.qr-scanner__video{width:100%;height:100%;object-fit:cover;display:block}.qr-scanner__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ion-color-light, #f4f5f8)}.qr-scanner__overlay p{margin:0;font-size:.875rem}.qr-scanner__overlay-icon{font-size:3rem;opacity:.6}.qr-scanner__frame{position:absolute;inset:18%;border:3px solid var(--ion-color-primary, #ff00b2);border-radius:12px;box-shadow:0 0 0 9999px #00000040;pointer-events:none}.qr-scanner__message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);color:var(--ion-color-dark, #6b6675);font-size:.875rem}.qr-scanner__message ion-icon{font-size:1.25rem;flex-shrink:0}.qr-scanner__hint{margin:0;text-align:center;font-size:.8125rem;color:var(--ion-color-dark, #6b6675)}.qr-scanner__select{--padding-start: 12px;--padding-end: 12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px}.qr-scanner.is-on-dark .qr-scanner__select{--color: #fff;--placeholder-color: rgba(255, 255, 255, .6);border-color:#ffffff40}.qr-scanner.is-on-dark .qr-scanner__message{background:#ffffff1a;color:#ffffffe6}.qr-scanner.is-on-dark .qr-scanner__hint{color:#ffffffb3}.qr-scanner__actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px}.qr-scanner__sweep{position:absolute;left:0;right:0;top:0;height:2px;border-radius:2px;background:var(--ion-color-primary, #7026df);box-shadow:0 0 8px var(--ion-color-primary, #7026df);animation:qr-scanner-sweep 2s ease-in-out infinite}@keyframes qr-scanner-sweep{0%{top:0;opacity:.25}50%{top:calc(100% - 2px);opacity:1}to{top:0;opacity:.25}}@media (prefers-reduced-motion: reduce){.qr-scanner__sweep{animation:none;opacity:.6}}.qr-scanner__torch{position:absolute;right:12px;bottom:12px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:#00000073;color:#fff;font-size:1.25rem;cursor:pointer}.qr-scanner__torch.is-on{background:var(--ion-color-warning, #ffc409);color:var(--ion-color-dark, #2f2a36)}.qr-scanner__message small{flex-basis:100%;margin-top:2px;font-size:.75rem;opacity:.85}.qr-scanner__actions ion-button{--border-radius: 999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }] }); }
404
404
  }
405
405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QrScannerComponent, decorators: [{
406
406
  type: Component,
@@ -519,7 +519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
519
519
  }
520
520
  </div>
521
521
  </div>
522
- `, styles: ["@charset \"UTF-8\";:host{display:block}.qr-scanner{display:flex;flex-direction:column;align-items:stretch;gap:12px;max-width:420px;margin:0 auto}.qr-scanner__viewport{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:var(--ion-color-dark, #1c1c1e);display:flex;align-items:center;justify-content:center}.qr-scanner__video{width:100%;height:100%;object-fit:cover;display:block}.qr-scanner__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ion-color-light, #f4f5f8)}.qr-scanner__overlay p{margin:0;font-size:.875rem}.qr-scanner__overlay-icon{font-size:3rem;opacity:.6}.qr-scanner__frame{position:absolute;inset:18%;border:3px solid var(--ion-color-primary, #ff00b2);border-radius:12px;box-shadow:0 0 0 9999px #00000040;pointer-events:none}.qr-scanner__message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);color:var(--ion-color-medium, #6b6675);font-size:.875rem}.qr-scanner__message ion-icon{font-size:1.25rem;flex-shrink:0}.qr-scanner__hint{margin:0;text-align:center;font-size:.8125rem;color:var(--ion-color-medium, #6b6675)}.qr-scanner__select{--padding-start: 12px;--padding-end: 12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px}.qr-scanner.is-on-dark .qr-scanner__select{--color: #fff;--placeholder-color: rgba(255, 255, 255, .6);border-color:#ffffff40}.qr-scanner.is-on-dark .qr-scanner__message{background:#ffffff1a;color:#ffffffe6}.qr-scanner.is-on-dark .qr-scanner__hint{color:#ffffffb3}.qr-scanner__actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px}.qr-scanner__sweep{position:absolute;left:0;right:0;top:0;height:2px;border-radius:2px;background:var(--ion-color-primary, #7026df);box-shadow:0 0 8px var(--ion-color-primary, #7026df);animation:qr-scanner-sweep 2s ease-in-out infinite}@keyframes qr-scanner-sweep{0%{top:0;opacity:.25}50%{top:calc(100% - 2px);opacity:1}to{top:0;opacity:.25}}@media (prefers-reduced-motion: reduce){.qr-scanner__sweep{animation:none;opacity:.6}}.qr-scanner__torch{position:absolute;right:12px;bottom:12px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:#00000073;color:#fff;font-size:1.25rem;cursor:pointer}.qr-scanner__torch.is-on{background:var(--ion-color-warning, #ffc409);color:var(--ion-color-dark, #2f2a36)}.qr-scanner__message small{flex-basis:100%;margin-top:2px;font-size:.75rem;opacity:.85}.qr-scanner__actions ion-button{--border-radius: 999px}\n"] }]
522
+ `, styles: ["@charset \"UTF-8\";:host{display:block}.qr-scanner{display:flex;flex-direction:column;align-items:stretch;gap:12px;max-width:420px;margin:0 auto}.qr-scanner__viewport{position:relative;width:100%;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:var(--ion-color-dark, #1c1c1e);display:flex;align-items:center;justify-content:center}.qr-scanner__video{width:100%;height:100%;object-fit:cover;display:block}.qr-scanner__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ion-color-light, #f4f5f8)}.qr-scanner__overlay p{margin:0;font-size:.875rem}.qr-scanner__overlay-icon{font-size:3rem;opacity:.6}.qr-scanner__frame{position:absolute;inset:18%;border:3px solid var(--ion-color-primary, #ff00b2);border-radius:12px;box-shadow:0 0 0 9999px #00000040;pointer-events:none}.qr-scanner__message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);color:var(--ion-color-dark, #6b6675);font-size:.875rem}.qr-scanner__message ion-icon{font-size:1.25rem;flex-shrink:0}.qr-scanner__hint{margin:0;text-align:center;font-size:.8125rem;color:var(--ion-color-dark, #6b6675)}.qr-scanner__select{--padding-start: 12px;--padding-end: 12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px}.qr-scanner.is-on-dark .qr-scanner__select{--color: #fff;--placeholder-color: rgba(255, 255, 255, .6);border-color:#ffffff40}.qr-scanner.is-on-dark .qr-scanner__message{background:#ffffff1a;color:#ffffffe6}.qr-scanner.is-on-dark .qr-scanner__hint{color:#ffffffb3}.qr-scanner__actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px}.qr-scanner__sweep{position:absolute;left:0;right:0;top:0;height:2px;border-radius:2px;background:var(--ion-color-primary, #7026df);box-shadow:0 0 8px var(--ion-color-primary, #7026df);animation:qr-scanner-sweep 2s ease-in-out infinite}@keyframes qr-scanner-sweep{0%{top:0;opacity:.25}50%{top:calc(100% - 2px);opacity:1}to{top:0;opacity:.25}}@media (prefers-reduced-motion: reduce){.qr-scanner__sweep{animation:none;opacity:.6}}.qr-scanner__torch{position:absolute;right:12px;bottom:12px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:#00000073;color:#fff;font-size:1.25rem;cursor:pointer}.qr-scanner__torch.is-on{background:var(--ion-color-warning, #ffc409);color:var(--ion-color-dark, #2f2a36)}.qr-scanner__message small{flex-basis:100%;margin-top:2px;font-size:.75rem;opacity:.85}.qr-scanner__actions ion-button{--border-radius: 999px}\n"] }]
523
523
  }], ctorParameters: () => [], propDecorators: { props: [{
524
524
  type: Input
525
525
  }], scanned: [{
@@ -528,4 +528,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
528
528
  type: ViewChild,
529
529
  args: ['video']
530
530
  }] } });
531
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItc2Nhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3FyLXNjYW5uZXIvcXItc2Nhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsd0JBQXdCLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEQsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSx3RUFBd0U7QUFDeEUsa0VBQWtFO0FBQ2xFLFFBQVEsQ0FBQztJQUNQLGFBQWE7SUFDYixVQUFVO0lBQ1YsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLGNBQWM7Q0FDZixDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUEySEgsTUFBTSxPQUFPLGtCQUFrQjtJQTZCN0I7UUE1QlMsVUFBSyxHQUFzQixFQUFFLENBQUM7UUFFdkMsMENBQTBDO1FBQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSXZDLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUIsVUFBSyxHQUFHLE1BQU0sQ0FBaUIsTUFBTSxDQUFDLENBQUM7UUFDdkMsWUFBTyxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBRXhELFdBQU0sR0FBb0MsSUFBSSxDQUFDO1FBQy9DLGFBQVEsR0FBNEIsSUFBSSxDQUFDO1FBRWpELHNFQUFzRTtRQUM5RCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsb0RBQW9EO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsMERBQTBEO1FBQ2pELGVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFHbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSyxLQUFLLENBQUMsY0FBYztRQUMxQixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBSSxTQUF1RCxDQUFDLFdBQVcsQ0FBQztZQUNuRixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNsQixLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEIsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBMEIsRUFBRSxDQUFDLENBQUM7WUFDdkUsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUNELG1FQUFtRTtRQUNyRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZO1FBQ1YsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLEtBQUssV0FBVztnQkFDZCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUI7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQWtCO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoRixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFpQjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUU3QyxzRUFBc0U7WUFDdEUsZ0VBQWdFO1lBQ2hFLElBQUksSUFBSSxHQUFzQixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDO2dCQUNILElBQUksR0FBRyxNQUFNLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDaEUsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZCLDREQUE0RDtZQUM1RCxNQUFNLE1BQU0sR0FDVixRQUFRO2dCQUNSLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUTtnQkFDeEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztZQUVwQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVoQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ3BHLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBRTVELENBQUM7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUNuQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLDJCQUEyQixFQUFFLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBNkIsQ0FBQzthQUM5QixDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLG9FQUFvRTtZQUNwRSx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLHdCQUF3QixFQUFFLENBQUM7WUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDbkMsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDM0MsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBRWxCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhCLHVFQUF1RTtRQUN2RSwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQVk7UUFDbkMsTUFBTSxJQUFJLEdBQUksR0FBZ0MsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksSUFBSSxLQUFLLGlCQUFpQixJQUFJLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssZUFBZSxJQUFJLElBQUksS0FBSyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELHlEQUF5RDtJQUNqRCxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUk7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUVyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsU0FBK0IsQ0FBQztRQUN0RCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBL1FVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDBPQXRIbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtSFQsdXFGQXBIUyxZQUFZLCtCQUFFLFNBQVMsb1BBQUUsT0FBTywySkFBRSxVQUFVLHlHQUFFLFNBQVMsa1ZBQUUsZUFBZTs7NEZBdUh2RSxrQkFBa0I7a0JBMUg5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLFlBQ3pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUhUO3dEQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxPQUFPO3NCQUFoQixNQUFNO2dCQUVhLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2FtZXJhT3V0bGluZSxcbiAgZmxhc2hsaWdodCxcbiAgZmxhc2hsaWdodE91dGxpbmUsXG4gIGltYWdlT3V0bGluZSxcbiAgc3RvcENpcmNsZU91dGxpbmUsXG4gIHZpZGVvY2FtT2ZmT3V0bGluZSxcbiAgd2FybmluZ091dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciwgSVNjYW5uZXJDb250cm9scyB9IGZyb20gJ0B6eGluZy9icm93c2VyJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFFyU2Nhbm5lck1ldGFkYXRhLCBRclNjYW5uZXJTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUVJfU0NBTk5FUl9JMThOIH0gZnJvbSAnLi9xci1zY2FubmVyLmkxOG4nO1xuXG4vLyBUT0RPUyBsb3Mgw61jb25vcyBxdWUgdXNhIGxhIHBsYW50aWxsYS4gVW4gw61jb25vIHNpbiByZWdpc3RyYXIgbm8gZmFsbGEgZWxcbi8vIGJ1aWxkOiBJb25pY29ucyBpbnRlbnRhIGJhamFybG8gY29tbyBhcmNoaXZvIFNWRywgbm8gbG8gZW5jdWVudHJhIHkgZGVqYSBlbFxuLy8gaHVlY28gZW4gYmxhbmNvIGNvbiB1biB3YXJuaW5nIGVuIGNvbnNvbGEuIEVzIGxvIHF1ZSBwYXPDsyBhbCBzdW1hciBsYVxuLy8gbGludGVybmEgeSBsYSBsZWN0dXJhIGRlc2RlIGZvdG8gKGZhc2UgMSkgc2luIHRvY2FyIGVzdGEgbGlzdGEuXG5hZGRJY29ucyh7XG4gIGNhbWVyYU91dGxpbmUsXG4gIGZsYXNobGlnaHQsXG4gIGZsYXNobGlnaHRPdXRsaW5lLFxuICBpbWFnZU91dGxpbmUsXG4gIHN0b3BDaXJjbGVPdXRsaW5lLFxuICB2aWRlb2NhbU9mZk91dGxpbmUsXG4gIHdhcm5pbmdPdXRsaW5lLFxufSk7XG5cbi8qKlxuICogdmFsLXFyLXNjYW5uZXJcbiAqXG4gKiBPcmdhbmlzbTogc2Nhbm5lciBkZSBjw7NkaWdvcyBRUiBwb3IgY8OhbWFyYSAoYEB6eGluZy9icm93c2VyYCArXG4gKiBgQHp4aW5nL2xpYnJhcnlgKS4gRW1pdGUgZWwgdGV4dG8gZGVjb2RpZmljYWRvIHBvciBgKHNjYW5uZWQpYC5cbiAqXG4gKiBNYW5lamE6IHBlcm1pc28gZGUgY8OhbWFyYSBkZW5lZ2FkbyAoYGRlbmllZGApLCBhdXNlbmNpYSBkZSBjw6FtYXJhXG4gKiAoYG5vLWNhbWVyYWApLCBzZWxlY3RvciBjdWFuZG8gaGF5IHZhcmlhcyBjw6FtYXJhcywgeSBib3TDs24gc3RhcnQvc3RvcC4gSGFjZVxuICogY2xlYW51cCBkZWwgc3RyZWFtIGVuIGBuZ09uRGVzdHJveWAuIGkxOG4gYXV0by1yZWdpc3RyYWRvIChuYW1lc3BhY2VcbiAqIGBRclNjYW5uZXJgKS5cbiAqXG4gKiBPYmplY3QtZmlyc3QgKGBASW5wdXQoKSBwcm9wc2ApICsgdW4gw7puaWNvIGBAT3V0cHV0KCkgc2Nhbm5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcXItc2Nhbm5lciBbcHJvcHNdPVwieyBjb250aW51b3VzOiB0cnVlIH1cIiAoc2Nhbm5lZCk9XCJvblNjYW4oJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXFyLXNjYW5uZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIsIElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lclwiIFtjbGFzcy5pcy1vbi1kYXJrXT1cInByb3BzLm9uRGFya1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInFyLXNjYW5uZXJfX3ZpZXdwb3J0XCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzdGF0ZSgpID09PSAnc2Nhbm5pbmcnXCI+XG4gICAgICAgIDx2aWRlbyAjdmlkZW8gY2xhc3M9XCJxci1zY2FubmVyX192aWRlb1wiIG11dGVkIHBsYXlzaW5saW5lPjwvdmlkZW8+XG5cbiAgICAgICAgQGlmIChzdGF0ZSgpID09PSAnaWRsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fb3ZlcmxheVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjYW1lcmEtb3V0bGluZVwiIGNsYXNzPVwicXItc2Nhbm5lcl9fb3ZlcmxheS1pY29uXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3N0YXJ0aW5nJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zY2FubmVyX19vdmVybGF5XCI+XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgLz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ3N0YXJ0aW5nJykgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHN0YXRlKCkgPT09ICdzY2FubmluZycpIHtcbiAgICAgICAgICA8IS0tIEVsIG1hcmNvIG5vIGJhc3RhOiBzaW4gbW92aW1pZW50byBubyBzZSBkaXN0aW5ndWUgdW5hIGPDoW1hcmFcbiAgICAgICAgICAgICAgIGVzY2FuZWFuZG8gZGUgdW5hIGltYWdlbiBjb25nZWxhZGEuIExhIGzDrW5lYSBkZSBiYXJyaWRvIGVzIGxhXG4gICAgICAgICAgICAgICBzZcOxYWwgZGUgcXVlIGVsIGxlY3RvciBlc3TDoSB2aXZvLiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fZnJhbWVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXItc2Nhbm5lcl9fc3dlZXBcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRvcmNoQXZhaWxhYmxlKCkgJiYgc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJxci1zY2FubmVyX190b3JjaFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtb25dPVwidG9yY2hPbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJ0b3JjaE9uKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b3JjaE9uKCkgPyB0KCd0b3JjaE9mZicpIDogdCgndG9yY2hPbicpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUb3JjaCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRvcmNoT24oKSkge1xuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImZsYXNobGlnaHRcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZmxhc2hsaWdodC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ2RlbmllZCcgfHwgc3RhdGUoKSA9PT0gJ25vLWNhbWVyYScgfHwgc3RhdGUoKSA9PT0gJ2Vycm9yJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ25vLWNhbWVyYScpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidmlkZW9jYW0tb2ZmLW91dGxpbmVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ3YXJuaW5nLW91dGxpbmVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3Bhbj57eyBzdGF0ZU1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHN0YXRlKCkgPT09ICdkZW5pZWQnKSB7XG4gICAgICAgICAgICA8IS0tIERlbmVnYXIgZWwgcGVybWlzbyBubyBwdWVkZSBkZWphciBhIGxhIHBlcnNvbmEgc2luIHNhbGlkYTogYW50ZXNcbiAgICAgICAgICAgICAgICAgZXN0byBlcmEgdW4gw61jb25vIHkgdW4gdGV4dG8sIHNpbiBuYWRhIHF1ZSB0b2Nhci4gLS0+XG4gICAgICAgICAgICA8c21hbGw+e3sgdCgnZGVuaWVkQmxvY2tlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGltYWdlRXJyb3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaW1hZ2Utb3V0bGluZVwiIC8+XG4gICAgICAgICAgPHNwYW4+e3sgdCgnaW1hZ2VOb0NvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJyB8fCBzdGF0ZSgpID09PSAnc3RhcnRpbmcnKSB7XG4gICAgICAgIDxwIGNsYXNzPVwicXItc2Nhbm5lcl9faGludFwiPnt7IHQoJ2hpbnQnKSB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgQGlmIChkZXZpY2VzKCkubGVuZ3RoID4gMSAmJiBzdGF0ZSgpID09PSAnc2Nhbm5pbmcnKSB7XG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJxci1zY2FubmVyX19zZWxlY3RcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0KCdjYW1lcmFMYWJlbCcpXCJcbiAgICAgICAgICBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIlxuICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgIFt2YWx1ZV09XCJhY3RpdmVEZXZpY2VJZCgpXCJcbiAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uU2VsZWN0RGV2aWNlKCRhbnkoJGV2ZW50KS5kZXRhaWwudmFsdWUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGQgb2YgZGV2aWNlcygpOyB0cmFjayBkLmRldmljZUlkKSB7XG4gICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cImQuZGV2aWNlSWRcIj57eyBkZXZpY2VMYWJlbChkKSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJxci1zY2FubmVyX19hY3Rpb25zXCI+XG4gICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJyB8fCBzdGF0ZSgpID09PSAnc3RhcnRpbmcnKSB7XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBbY29sb3JdPVwiYnV0dG9uQ29sb3IoKVwiIChjbGljayk9XCJzdG9wKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3RvcC1jaXJjbGUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiIC8+XG4gICAgICAgICAgICB7eyBwcm9wcy5zdG9wTGFiZWwgfHwgdCgnc3RvcCcpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8aW9uLWJ1dHRvbiBbY29sb3JdPVwiYnV0dG9uQ29sb3IoKVwiIChjbGljayk9XCJzdGFydCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgIHt7IHN0YXRlKCkgPT09ICdpZGxlJyA/IChwcm9wcy5zdGFydExhYmVsIHx8IHQoJ3N0YXJ0JykpIDogdCgncmV0cnknKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocHJvcHMuYWxsb3dJbWFnZSAhPT0gZmFsc2UgJiYgc3RhdGUoKSAhPT0gJ3N0YXJ0aW5nJykge1xuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIFtjb2xvcl09XCJidXR0b25Db2xvcigpXCIgKGNsaWNrKT1cImZpbGVSZWYuY2xpY2soKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbWFnZS1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgIHt7IHQoJ2Zyb21JbWFnZScpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2ZpbGVSZWZcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VQaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3FyLXNjYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUXJTY2FubmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IFFyU2Nhbm5lck1ldGFkYXRhID0ge307XG5cbiAgLyoqIEVtaXRlIGVsIHRleHRvIGRlY29kaWZpY2FkbyBkZWwgUVIuICovXG4gIEBPdXRwdXQoKSBzY2FubmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgndmlkZW8nKSB2aWRlb1JlZiE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICByZWFkb25seSBzdGF0ZSA9IHNpZ25hbDxRclNjYW5uZXJTdGF0ZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgZGV2aWNlcyA9IHNpZ25hbDxNZWRpYURldmljZUluZm9bXT4oW10pO1xuICByZWFkb25seSBhY3RpdmVEZXZpY2VJZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkZXI6IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbnRyb2xzOiBJU2Nhbm5lckNvbnRyb2xzIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gQW50aS1yZWJvdGU6IGlnbm9yYSBsYSBtaXNtYSBsZWN0dXJhIHJlcGV0aWRhIGRlbnRybyBkZSBgZGVkdXBlTXNgLlxuICBwcml2YXRlIGxhc3RWYWx1ZSA9ICcnO1xuICBwcml2YXRlIGxhc3RBdCA9IDA7XG5cbiAgcHJpdmF0ZSB2aWV3UmVhZHkgPSBmYWxzZTtcblxuICAvKiogTGEgY8OhbWFyYSBhY3RpdmEgZGVjbGFyYSBzb3BvcnRlIGRlIGxpbnRlcm5hLiAqL1xuICByZWFkb25seSB0b3JjaEF2YWlsYWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRvcmNoT24gPSBzaWduYWwoZmFsc2UpO1xuICAvKiogTWVuc2FqZSBwdW50dWFsIGRlbCBpbnRlbnRvIGRlIGxlZXIgZGVzZGUgdW5hIGZvdG8uICovXG4gIHJlYWRvbmx5IGltYWdlRXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdRclNjYW5uZXInLCBRUl9TQ0FOTkVSX0kxOE4pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlYWR5ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvU3RhcnQpIHtcbiAgICAgIHZvaWQgdGhpcy5zdGFydElmQWxsb3dlZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJhbmNhIHNvbGEgU09MTyBzaSBlbCBwZXJtaXNvIHlhIGVzdMOhIGNvbmNlZGlkby5cbiAgICpcbiAgICogRWwgYXZpc28gZGVsIG5hdmVnYWRvciBubyBsbyBwb2RlbW9zIGV2aXRhcjogcXVpw6luIGxvIG11ZXN0cmEgeSBjdcOhbmRvIGxvXG4gICAqIGRlY2lkZSBlbCBuYXZlZ2Fkb3IsIG5vIGxhIHDDoWdpbmEuIExvIHF1ZSBzw60gZXZpdGFtb3MgZXMgZGlzcGFyYXJsbyBwb3JcbiAgICogc29ycHJlc2EgYWwgbW9udGFyLiBTaSBlbCBwZXJtaXNvIHRvZGF2w61hIG5vIGVzdMOhIHJlc3VlbHRvLCBzZSBlc3BlcmEgYSBxdWVcbiAgICogbGEgcGVyc29uYSB0b3F1ZSBlbCBib3TDs246IGFzw60gZWwgYXZpc28gYXBhcmVjZSBjdWFuZG8gbG8gcGlkacOzIHkgbm8gZGUgbGFcbiAgICogbmFkYSwgcXVlIGVzIGN1YW5kbyBsYSBnZW50ZSBsbyByZWNoYXphIHNpbiBsZWVyLlxuICAgKlxuICAgKiBgbmF2aWdhdG9yLnBlcm1pc3Npb25zYCBjb24gJ2NhbWVyYScgbm8gZXN0w6EgZW4gdG9kb3MgbG9zIG5hdmVnYWRvcmVzXG4gICAqIChGaXJlZm94IG5vIGxvIHNvcG9ydGEpOyBhbnRlIGxhIGR1ZGEgc2UgYXJyYW5jYSBpZ3VhbCwgcXVlIGVzIGVsXG4gICAqIGNvbXBvcnRhbWllbnRvIGFudGVyaW9yLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzdGFydElmQWxsb3dlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGVybXMgPSAobmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHsgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9ucyB9KS5wZXJtaXNzaW9ucztcbiAgICAgIGlmICghcGVybXM/LnF1ZXJ5KSB7XG4gICAgICAgIHZvaWQgdGhpcy5zdGFydCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBwZXJtcy5xdWVyeSh7IG5hbWU6ICdjYW1lcmEnIGFzIFBlcm1pc3Npb25OYW1lIH0pO1xuICAgICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgIHZvaWQgdGhpcy5zdGFydCgpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMuc3RhdGUgPT09ICdkZW5pZWQnKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KCdkZW5pZWQnKTtcbiAgICAgIH1cbiAgICAgIC8vICdwcm9tcHQnOiBzZSBlc3BlcmEgYWwgZ2VzdG8uIEVsIGJvdMOzbiB5YSBkaWNlIFwiSW5pY2lhciBjw6FtYXJhXCIuXG4gICAgfSBjYXRjaCB7XG4gICAgICB2b2lkIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnUXJTY2FubmVyJyk7XG4gIH1cblxuICAvKiogU29icmUgc3VwZXJmaWNpZSBvc2N1cmEgbG9zIGJvdG9uZXMgdmFuIGNsYXJvcywgbyBubyBzZSB2ZW4uICovXG4gIGJ1dHRvbkNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMub25EYXJrID8gJ2xpZ2h0JyA6ICdkYXJrJztcbiAgfVxuXG4gIHN0YXRlTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zdGF0ZSgpKSB7XG4gICAgICBjYXNlICdkZW5pZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdkZW5pZWQnKTtcbiAgICAgIGNhc2UgJ25vLWNhbWVyYSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ25vQ2FtZXJhJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIGRldmljZUxhYmVsKGQ6IE1lZGlhRGV2aWNlSW5mbyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGQubGFiZWwgfHwgYCR7dGhpcy50KCdjYW1lcmFMYWJlbCcpfSAke3RoaXMuZGV2aWNlcygpLmluZGV4T2YoZCkgKyAxfWA7XG4gIH1cblxuICBhc3luYyBzdGFydChkZXZpY2VJZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy52aWV3UmVhZHkpIHJldHVybjtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ3N0YXJ0aW5nJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkZXIgPSBuZXcgQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyKCk7XG5cbiAgICAgIC8vIEVudW1lcmFyIGPDoW1hcmFzLiBBbGd1bm9zIG5hdmVnYWRvcmVzIHNvbG8gZGFuIGxhYmVscyB0cmFzIGNvbmNlZGVyXG4gICAgICAvLyBwZXJtaXNvLCBhc8OtIHF1ZSBlc3RvIHB1ZWRlIGRldm9sdmVyIGxhYmVscyB2YWPDrW9zIGxhIDHCqiB2ZXouXG4gICAgICBsZXQgY2FtczogTWVkaWFEZXZpY2VJbmZvW10gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNhbXMgPSBhd2FpdCBCcm93c2VyTXVsdGlGb3JtYXRSZWFkZXIubGlzdFZpZGVvSW5wdXREZXZpY2VzKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY2FtcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5kZXZpY2VzLnNldChjYW1zKTtcblxuICAgICAgLy8gUHJlZmVyaXIgbGEgdHJhc2VyYSAoZW52aXJvbm1lbnQpIHNpIGVsIGxhYmVsIGxvIHN1Z2llcmUuXG4gICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICBkZXZpY2VJZCB8fFxuICAgICAgICB0aGlzLmFjdGl2ZURldmljZUlkKCkgfHxcbiAgICAgICAgY2Ftcy5maW5kKGMgPT4gL2JhY2t8cmVhcnxlbnZpcm9ubWVudHx0cmFzZXJhL2kudGVzdChjLmxhYmVsKSk/LmRldmljZUlkIHx8XG4gICAgICAgIGNhbXNbMF0/LmRldmljZUlkO1xuXG4gICAgICB0aGlzLmFjdGl2ZURldmljZUlkLnNldCh0YXJnZXQpO1xuXG4gICAgICB0aGlzLmNvbnRyb2xzID0gYXdhaXQgdGhpcy5yZWFkZXIuZGVjb2RlRnJvbVZpZGVvRGV2aWNlKHRhcmdldCwgdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LCByZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXN1bHQocmVzdWx0LmdldFRleHQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0YXRlLnNldCgnc2Nhbm5pbmcnKTtcbiAgICAgIHRoaXMuZGV0ZWN0VG9yY2goKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnRFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVndW50YSBhIGxhIHBpc3RhIGRlIHZpZGVvIHNpIHNhYmUgZW5jZW5kZXIgbGEgbHV6LlxuICAgKlxuICAgKiBTZSBjb25zdWx0YSBERVNQVcOJUyBkZSBhcnJhbmNhciBwb3JxdWUgbGFzIGNhcGFiaWxpdGllcyBzb2xvIGV4aXN0ZW4gY29uIGxhXG4gICAqIGPDoW1hcmEgeWEgYWJpZXJ0YS4gU2kgbm8gaGF5IHNvcG9ydGUsIGVsIGJvdMOzbiBubyBzZSBtdWVzdHJhOiBvZnJlY2VyIHVuYVxuICAgKiBsaW50ZXJuYSBxdWUgbm8gZW5jaWVuZGUgZXMgcHJvbWV0ZXIgYWxnbyBxdWUgbm8gcGFzYSwgZWwgbWlzbW8gZXJyb3IgZGVsXG4gICAqIGluZGljYWRvciBkZSBhcnJhc3RyZSBkZWwgbWVuw7ouXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFRvcmNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRvcmNoID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FwcyA9IHRoaXMuY29udHJvbHM/LnN0cmVhbVZpZGVvQ2FwYWJpbGl0aWVzR2V0Py4odHJhY2sgPT4gW3RyYWNrXSkgYXNcbiAgICAgICAgfCAoTWVkaWFUcmFja0NhcGFiaWxpdGllcyAmIHsgdG9yY2g/OiBib29sZWFuIH0pXG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoQm9vbGVhbihjYXBzPy50b3JjaCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTmF2ZWdhZG9yIHF1ZSBubyBleHBvbmUgY2FwYWJpbGl0aWVzOiBzZSBhc3VtZSBxdWUgbm8gaGF5IGxpbnRlcm5hLlxuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLnRvcmNoT24uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBFbmNpZW5kZSBvIGFwYWdhIGxhIGx1eiBkZSBsYSBjw6FtYXJhLiAqL1xuICBhc3luYyB0b2dnbGVUb3JjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudG9yY2hBdmFpbGFibGUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSAhdGhpcy50b3JjaE9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY29udHJvbHM/LnN0cmVhbVZpZGVvQ29uc3RyYWludHNBcHBseT8uKHtcbiAgICAgICAgYWR2YW5jZWQ6IFt7IHRvcmNoOiBuZXh0IH0gYXMgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRdLFxuICAgICAgfSBhcyBNZWRpYVRyYWNrQ29uc3RyYWludHMpO1xuICAgICAgdGhpcy50b3JjaE9uLnNldChuZXh0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpIGxhIHBpc3RhIHJlY2hhemEgbGEgY29uc3RyYWludCwgZGVqYW1vcyBkZSBvZnJlY2VybGEgZW4gdmV6IGRlXG4gICAgICAvLyBpbnNpc3RpciBjb24gdW4gYm90w7NuIHF1ZSBubyByZXNwb25kZS5cbiAgICAgIHRoaXMudG9yY2hBdmFpbGFibGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMudG9yY2hPbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMZWUgZWwgY8OzZGlnbyBkZXNkZSB1bmEgZm90byBxdWUgZWxpZ2UgbGEgcGVyc29uYS5cbiAgICpcbiAgICogU2FsaWRhIHBhcmEgY3VhbmRvIGxhIGPDoW1hcmEgbm8gZXN0w6EgZGlzcG9uaWJsZSwgZWwgcGVybWlzbyBxdWVkw7MgYmxvcXVlYWRvXG4gICAqIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIGRlbCBzaXRpbywgbyBlbCBjw7NkaWdvIGxsZWfDsyBwb3IgbWVuc2FqZS5cbiAgICovXG4gIGFzeW5jIG9uSW1hZ2VQaWNrZWQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIGlmICghZmlsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pbWFnZUVycm9yLnNldChmYWxzZSk7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXIgPz8gbmV3IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcigpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZGVyLmRlY29kZUZyb21JbWFnZVVybCh1cmwpO1xuICAgICAgdGhpcy5oYW5kbGVSZXN1bHQocmVzdWx0LmdldFRleHQoKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmltYWdlRXJyb3Iuc2V0KHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfVxuICB9XG5cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgfVxuXG4gIGFzeW5jIG9uU2VsZWN0RGV2aWNlKGRldmljZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZGV2aWNlSWQgJiYgZGV2aWNlSWQgIT09IHRoaXMuYWN0aXZlRGV2aWNlSWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChkZXZpY2VJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXN1bHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZWR1cGUgPSB0aGlzLnByb3BzLmRlZHVwZU1zID8/IDE1MDA7XG4gICAgaWYgKHRleHQgPT09IHRoaXMubGFzdFZhbHVlICYmIG5vdyAtIHRoaXMubGFzdEF0IDwgZGVkdXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdFZhbHVlID0gdGV4dDtcbiAgICB0aGlzLmxhc3RBdCA9IG5vdztcblxuICAgIHRoaXMuc2Nhbm5lZC5lbWl0KHRleHQpO1xuXG4gICAgLy8gTW9kbyBubyBjb250aW51bzogZGV0ZW5lciB0cmFzIGVsIHByaW1lciBtYXRjaCAobGEgcMOhZ2luYSByZWFudWRhIHNpXG4gICAgLy8gcXVpZXJlKS4gYGNvbnRpbnVvdXNgIGRlZmF1bHQgdHJ1ZSDihpIgc2VndWlyIGVzY2FuZWFuZG8uXG4gICAgaWYgKHRoaXMucHJvcHMuY29udGludW91cyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RhcnRFcnJvcihlcnI6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSB8IG51bGwpPy5uYW1lID8/ICcnO1xuICAgIGlmIChuYW1lID09PSAnTm90QWxsb3dlZEVycm9yJyB8fCBuYW1lID09PSAnU2VjdXJpdHlFcnJvcicpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KCdkZW5pZWQnKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdOb3RGb3VuZEVycm9yJyB8fCBuYW1lID09PSAnT3ZlcmNvbnN0cmFpbmVkRXJyb3InKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldCgnbm8tY2FtZXJhJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KCdlcnJvcicpO1xuICAgIH1cbiAgICB0aGlzLnRlYXJkb3duKGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBEZXRpZW5lIGVsIGRlY29kZSArIGxpYmVyYSBlbCBzdHJlYW0gZGUgbGEgY8OhbWFyYS4gKi9cbiAgcHJpdmF0ZSB0ZWFyZG93bihyZXNldFN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNvbnRyb2xzPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgdGhpcy5jb250cm9scyA9IG51bGw7XG5cbiAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW9SZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc3RyZWFtID0gdmlkZW8/LnNyY09iamVjdCBhcyBNZWRpYVN0cmVhbSB8IG51bGw7XG4gICAgaWYgKHN0cmVhbSkge1xuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucmVhZGVyID0gbnVsbDtcbiAgICB0aGlzLnRvcmNoQXZhaWxhYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy50b3JjaE9uLnNldChmYWxzZSk7XG5cbiAgICBpZiAocmVzZXRTdGF0ZSkge1xuICAgICAgdGhpcy5sYXN0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMubGFzdEF0ID0gMDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
531
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItc2Nhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3FyLXNjYW5uZXIvcXItc2Nhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsd0JBQXdCLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEQsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSx3RUFBd0U7QUFDeEUsa0VBQWtFO0FBQ2xFLFFBQVEsQ0FBQztJQUNQLGFBQWE7SUFDYixVQUFVO0lBQ1YsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLGNBQWM7Q0FDZixDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUEySEgsTUFBTSxPQUFP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O3NCQUFoQixNQUFNO2dCQUVhLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2FtZXJhT3V0bGluZSxcbiAgZmxhc2hsaWdodCxcbiAgZmxhc2hsaWdodE91dGxpbmUsXG4gIGltYWdlT3V0bGluZSxcbiAgc3RvcENpcmNsZU91dGxpbmUsXG4gIHZpZGVvY2FtT2ZmT3V0bGluZSxcbiAgd2FybmluZ091dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciwgSVNjYW5uZXJDb250cm9scyB9IGZyb20gJ0B6eGluZy9icm93c2VyJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFFyU2Nhbm5lck1ldGFkYXRhLCBRclNjYW5uZXJTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUVJfU0NBTk5FUl9JMThOIH0gZnJvbSAnLi9xci1zY2FubmVyLmkxOG4nO1xuXG4vLyBUT0RPUyBsb3Mgw61jb25vcyBxdWUgdXNhIGxhIHBsYW50aWxsYS4gVW4gw61jb25vIHNpbiByZWdpc3RyYXIgbm8gZmFsbGEgZWxcbi8vIGJ1aWxkOiBJb25pY29ucyBpbnRlbnRhIGJhamFybG8gY29tbyBhcmNoaXZvIFNWRywgbm8gbG8gZW5jdWVudHJhIHkgZGVqYSBlbFxuLy8gaHVlY28gZW4gYmxhbmNvIGNvbiB1biB3YXJuaW5nIGVuIGNvbnNvbGEuIEVzIGxvIHF1ZSBwYXPDsyBhbCBzdW1hciBsYVxuLy8gbGludGVybmEgeSBsYSBsZWN0dXJhIGRlc2RlIGZvdG8gKGZhc2UgMSkgc2luIHRvY2FyIGVzdGEgbGlzdGEuXG5hZGRJY29ucyh7XG4gIGNhbWVyYU91dGxpbmUsXG4gIGZsYXNobGlnaHQsXG4gIGZsYXNobGlnaHRPdXRsaW5lLFxuICBpbWFnZU91dGxpbmUsXG4gIHN0b3BDaXJjbGVPdXRsaW5lLFxuICB2aWRlb2NhbU9mZk91dGxpbmUsXG4gIHdhcm5pbmdPdXRsaW5lLFxufSk7XG5cbi8qKlxuICogdmFsLXFyLXNjYW5uZXJcbiAqXG4gKiBPcmdhbmlzbTogc2Nhbm5lciBkZSBjw7NkaWdvcyBRUiBwb3IgY8OhbWFyYSAoYEB6eGluZy9icm93c2VyYCArXG4gKiBgQHp4aW5nL2xpYnJhcnlgKS4gRW1pdGUgZWwgdGV4dG8gZGVjb2RpZmljYWRvIHBvciBgKHNjYW5uZWQpYC5cbiAqXG4gKiBNYW5lamE6IHBlcm1pc28gZGUgY8OhbWFyYSBkZW5lZ2FkbyAoYGRlbmllZGApLCBhdXNlbmNpYSBkZSBjw6FtYXJhXG4gKiAoYG5vLWNhbWVyYWApLCBzZWxlY3RvciBjdWFuZG8gaGF5IHZhcmlhcyBjw6FtYXJhcywgeSBib3TDs24gc3RhcnQvc3RvcC4gSGFjZVxuICogY2xlYW51cCBkZWwgc3RyZWFtIGVuIGBuZ09uRGVzdHJveWAuIGkxOG4gYXV0by1yZWdpc3RyYWRvIChuYW1lc3BhY2VcbiAqIGBRclNjYW5uZXJgKS5cbiAqXG4gKiBPYmplY3QtZmlyc3QgKGBASW5wdXQoKSBwcm9wc2ApICsgdW4gw7puaWNvIGBAT3V0cHV0KCkgc2Nhbm5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcXItc2Nhbm5lciBbcHJvcHNdPVwieyBjb250aW51b3VzOiB0cnVlIH1cIiAoc2Nhbm5lZCk9XCJvblNjYW4oJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXFyLXNjYW5uZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvblNwaW5uZXIsIElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lclwiIFtjbGFzcy5pcy1vbi1kYXJrXT1cInByb3BzLm9uRGFya1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInFyLXNjYW5uZXJfX3ZpZXdwb3J0XCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzdGF0ZSgpID09PSAnc2Nhbm5pbmcnXCI+XG4gICAgICAgIDx2aWRlbyAjdmlkZW8gY2xhc3M9XCJxci1zY2FubmVyX192aWRlb1wiIG11dGVkIHBsYXlzaW5saW5lPjwvdmlkZW8+XG5cbiAgICAgICAgQGlmIChzdGF0ZSgpID09PSAnaWRsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fb3ZlcmxheVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjYW1lcmEtb3V0bGluZVwiIGNsYXNzPVwicXItc2Nhbm5lcl9fb3ZlcmxheS1pY29uXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3N0YXJ0aW5nJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJxci1zY2FubmVyX19vdmVybGF5XCI+XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgLz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ3N0YXJ0aW5nJykgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHN0YXRlKCkgPT09ICdzY2FubmluZycpIHtcbiAgICAgICAgICA8IS0tIEVsIG1hcmNvIG5vIGJhc3RhOiBzaW4gbW92aW1pZW50byBubyBzZSBkaXN0aW5ndWUgdW5hIGPDoW1hcmFcbiAgICAgICAgICAgICAgIGVzY2FuZWFuZG8gZGUgdW5hIGltYWdlbiBjb25nZWxhZGEuIExhIGzDrW5lYSBkZSBiYXJyaWRvIGVzIGxhXG4gICAgICAgICAgICAgICBzZcOxYWwgZGUgcXVlIGVsIGxlY3RvciBlc3TDoSB2aXZvLiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fZnJhbWVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXItc2Nhbm5lcl9fc3dlZXBcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRvcmNoQXZhaWxhYmxlKCkgJiYgc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJxci1zY2FubmVyX190b3JjaFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtb25dPVwidG9yY2hPbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJ0b3JjaE9uKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b3JjaE9uKCkgPyB0KCd0b3JjaE9mZicpIDogdCgndG9yY2hPbicpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUb3JjaCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRvcmNoT24oKSkge1xuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImZsYXNobGlnaHRcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZmxhc2hsaWdodC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ2RlbmllZCcgfHwgc3RhdGUoKSA9PT0gJ25vLWNhbWVyYScgfHwgc3RhdGUoKSA9PT0gJ2Vycm9yJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ25vLWNhbWVyYScpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidmlkZW9jYW0tb2ZmLW91dGxpbmVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ3YXJuaW5nLW91dGxpbmVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3Bhbj57eyBzdGF0ZU1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHN0YXRlKCkgPT09ICdkZW5pZWQnKSB7XG4gICAgICAgICAgICA8IS0tIERlbmVnYXIgZWwgcGVybWlzbyBubyBwdWVkZSBkZWphciBhIGxhIHBlcnNvbmEgc2luIHNhbGlkYTogYW50ZXNcbiAgICAgICAgICAgICAgICAgZXN0byBlcmEgdW4gw61jb25vIHkgdW4gdGV4dG8sIHNpbiBuYWRhIHF1ZSB0b2Nhci4gLS0+XG4gICAgICAgICAgICA8c21hbGw+e3sgdCgnZGVuaWVkQmxvY2tlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGltYWdlRXJyb3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicXItc2Nhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaW1hZ2Utb3V0bGluZVwiIC8+XG4gICAgICAgICAgPHNwYW4+e3sgdCgnaW1hZ2VOb0NvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJyB8fCBzdGF0ZSgpID09PSAnc3RhcnRpbmcnKSB7XG4gICAgICAgIDxwIGNsYXNzPVwicXItc2Nhbm5lcl9faGludFwiPnt7IHQoJ2hpbnQnKSB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgQGlmIChkZXZpY2VzKCkubGVuZ3RoID4gMSAmJiBzdGF0ZSgpID09PSAnc2Nhbm5pbmcnKSB7XG4gICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJxci1zY2FubmVyX19zZWxlY3RcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0KCdjYW1lcmFMYWJlbCcpXCJcbiAgICAgICAgICBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIlxuICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgIFt2YWx1ZV09XCJhY3RpdmVEZXZpY2VJZCgpXCJcbiAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uU2VsZWN0RGV2aWNlKCRhbnkoJGV2ZW50KS5kZXRhaWwudmFsdWUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGQgb2YgZGV2aWNlcygpOyB0cmFjayBkLmRldmljZUlkKSB7XG4gICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cImQuZGV2aWNlSWRcIj57eyBkZXZpY2VMYWJlbChkKSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJxci1zY2FubmVyX19hY3Rpb25zXCI+XG4gICAgICAgIEBpZiAoc3RhdGUoKSA9PT0gJ3NjYW5uaW5nJyB8fCBzdGF0ZSgpID09PSAnc3RhcnRpbmcnKSB7XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBbY29sb3JdPVwiYnV0dG9uQ29sb3IoKVwiIChjbGljayk9XCJzdG9wKClcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3RvcC1jaXJjbGUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiIC8+XG4gICAgICAgICAgICB7eyBwcm9wcy5zdG9wTGFiZWwgfHwgdCgnc3RvcCcpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8aW9uLWJ1dHRvbiBbY29sb3JdPVwiYnV0dG9uQ29sb3IoKVwiIChjbGljayk9XCJzdGFydCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgIHt7IHN0YXRlKCkgPT09ICdpZGxlJyA/IChwcm9wcy5zdGFydExhYmVsIHx8IHQoJ3N0YXJ0JykpIDogdCgncmV0cnknKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocHJvcHMuYWxsb3dJbWFnZSAhPT0gZmFsc2UgJiYgc3RhdGUoKSAhPT0gJ3N0YXJ0aW5nJykge1xuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIFtjb2xvcl09XCJidXR0b25Db2xvcigpXCIgKGNsaWNrKT1cImZpbGVSZWYuY2xpY2soKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJpbWFnZS1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgIHt7IHQoJ2Zyb21JbWFnZScpIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2ZpbGVSZWZcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VQaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3FyLXNjYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUXJTY2FubmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IFFyU2Nhbm5lck1ldGFkYXRhID0ge307XG5cbiAgLyoqIEVtaXRlIGVsIHRleHRvIGRlY29kaWZpY2FkbyBkZWwgUVIuICovXG4gIEBPdXRwdXQoKSBzY2FubmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgndmlkZW8nKSB2aWRlb1JlZiE6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICByZWFkb25seSBzdGF0ZSA9IHNpZ25hbDxRclNjYW5uZXJTdGF0ZT4oJ2lkbGUnKTtcbiAgcmVhZG9ubHkgZGV2aWNlcyA9IHNpZ25hbDxNZWRpYURldmljZUluZm9bXT4oW10pO1xuICByZWFkb25seSBhY3RpdmVEZXZpY2VJZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkZXI6IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbnRyb2xzOiBJU2Nhbm5lckNvbnRyb2xzIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gQW50aS1yZWJvdGU6IGlnbm9yYSBsYSBtaXNtYSBsZWN0dXJhIHJlcGV0aWRhIGRlbnRybyBkZSBgZGVkdXBlTXNgLlxuICBwcml2YXRlIGxhc3RWYWx1ZSA9ICcnO1xuICBwcml2YXRlIGxhc3RBdCA9IDA7XG5cbiAgcHJpdmF0ZSB2aWV3UmVhZHkgPSBmYWxzZTtcblxuICAvKiogTGEgY8OhbWFyYSBhY3RpdmEgZGVjbGFyYSBzb3BvcnRlIGRlIGxpbnRlcm5hLiAqL1xuICByZWFkb25seSB0b3JjaEF2YWlsYWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRvcmNoT24gPSBzaWduYWwoZmFsc2UpO1xuICAvKiogTWVuc2FqZSBwdW50dWFsIGRlbCBpbnRlbnRvIGRlIGxlZXIgZGVzZGUgdW5hIGZvdG8uICovXG4gIHJlYWRvbmx5IGltYWdlRXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdRclNjYW5uZXInLCBRUl9TQ0FOTkVSX0kxOE4pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlYWR5ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvU3RhcnQpIHtcbiAgICAgIHZvaWQgdGhpcy5zdGFydElmQWxsb3dlZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJhbmNhIHNvbGEgU09MTyBzaSBlbCBwZXJtaXNvIHlhIGVzdMOhIGNvbmNlZGlkby5cbiAgICpcbiAgICogRWwgYXZpc28gZGVsIG5hdmVnYWRvciBubyBsbyBwb2RlbW9zIGV2aXRhcjogcXVpw6luIGxvIG11ZXN0cmEgeSBjdcOhbmRvIGxvXG4gICAqIGRlY2lkZSBlbCBuYXZlZ2Fkb3IsIG5vIGxhIHDDoWdpbmEuIExvIHF1ZSBzw60gZXZpdGFtb3MgZXMgZGlzcGFyYXJsbyBwb3JcbiAgICogc29ycHJlc2EgYWwgbW9udGFyLiBTaSBlbCBwZXJtaXNvIHRvZGF2w61hIG5vIGVzdMOhIHJlc3VlbHRvLCBzZSBlc3BlcmEgYSBxdWVcbiAgICogbGEgcGVyc29uYSB0b3F1ZSBlbCBib3TDs246IGFzw60gZWwgYXZpc28gYXBhcmVjZSBjdWFuZG8gbG8gcGlkacOzIHkgbm8gZGUgbGFcbiAgICogbmFkYSwgcXVlIGVzIGN1YW5kbyBsYSBnZW50ZSBsbyByZWNoYXphIHNpbiBsZWVyLlxuICAgKlxuICAgKiBgbmF2aWdhdG9yLnBlcm1pc3Npb25zYCBjb24gJ2NhbWVyYScgbm8gZXN0w6EgZW4gdG9kb3MgbG9zIG5hdmVnYWRvcmVzXG4gICAqIChGaXJlZm94IG5vIGxvIHNvcG9ydGEpOyBhbnRlIGxhIGR1ZGEgc2UgYXJyYW5jYSBpZ3VhbCwgcXVlIGVzIGVsXG4gICAqIGNvbXBvcnRhbWllbnRvIGFudGVyaW9yLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzdGFydElmQWxsb3dlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGVybXMgPSAobmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHsgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9ucyB9KS5wZXJtaXNzaW9ucztcbiAgICAgIGlmICghcGVybXM/LnF1ZXJ5KSB7XG4gICAgICAgIHZvaWQgdGhpcy5zdGFydCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBwZXJtcy5xdWVyeSh7IG5hbWU6ICdjYW1lcmEnIGFzIFBlcm1pc3Npb25OYW1lIH0pO1xuICAgICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgIHZvaWQgdGhpcy5zdGFydCgpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMuc3RhdGUgPT09ICdkZW5pZWQnKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KCdkZW5pZWQnKTtcbiAgICAgIH1cbiAgICAgIC8vICdwcm9tcHQnOiBzZSBlc3BlcmEgYWwgZ2VzdG8uIEVsIGJvdMOzbiB5YSBkaWNlIFwiSW5pY2lhciBjw6FtYXJhXCIuXG4gICAgfSBjYXRjaCB7XG4gICAgICB2b2lkIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnUXJTY2FubmVyJyk7XG4gIH1cblxuICAvKiogU29icmUgc3VwZXJmaWNpZSBvc2N1cmEgbG9zIGJvdG9uZXMgdmFuIGNsYXJvcywgbyBubyBzZSB2ZW4uICovXG4gIGJ1dHRvbkNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMub25EYXJrID8gJ2xpZ2h0JyA6ICdkYXJrJztcbiAgfVxuXG4gIHN0YXRlTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zdGF0ZSgpKSB7XG4gICAgICBjYXNlICdkZW5pZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdkZW5pZWQnKTtcbiAgICAgIGNhc2UgJ25vLWNhbWVyYSc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ25vQ2FtZXJhJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIGRldmljZUxhYmVsKGQ6IE1lZGlhRGV2aWNlSW5mbyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGQubGFiZWwgfHwgYCR7dGhpcy50KCdjYW1lcmFMYWJlbCcpfSAke3RoaXMuZGV2aWNlcygpLmluZGV4T2YoZCkgKyAxfWA7XG4gIH1cblxuICBhc3luYyBzdGFydChkZXZpY2VJZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy52aWV3UmVhZHkpIHJldHVybjtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ3N0YXJ0aW5nJyk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkZXIgPSBuZXcgQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyKCk7XG5cbiAgICAgIC8vIEVudW1lcmFyIGPDoW1hcmFzLiBBbGd1bm9zIG5hdmVnYWRvcmVzIHNvbG8gZGFuIGxhYmVscyB0cmFzIGNvbmNlZGVyXG4gICAgICAvLyBwZXJtaXNvLCBhc8OtIHF1ZSBlc3RvIHB1ZWRlIGRldm9sdmVyIGxhYmVscyB2YWPDrW9zIGxhIDHCqiB2ZXouXG4gICAgICBsZXQgY2FtczogTWVkaWFEZXZpY2VJbmZvW10gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNhbXMgPSBhd2FpdCBCcm93c2VyTXVsdGlGb3JtYXRSZWFkZXIubGlzdFZpZGVvSW5wdXREZXZpY2VzKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY2FtcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5kZXZpY2VzLnNldChjYW1zKTtcblxuICAgICAgLy8gUHJlZmVyaXIgbGEgdHJhc2VyYSAoZW52aXJvbm1lbnQpIHNpIGVsIGxhYmVsIGxvIHN1Z2llcmUuXG4gICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICBkZXZpY2VJZCB8fFxuICAgICAgICB0aGlzLmFjdGl2ZURldmljZUlkKCkgfHxcbiAgICAgICAgY2Ftcy5maW5kKGMgPT4gL2JhY2t8cmVhcnxlbnZpcm9ubWVudHx0cmFzZXJhL2kudGVzdChjLmxhYmVsKSk/LmRldmljZUlkIHx8XG4gICAgICAgIGNhbXNbMF0/LmRldmljZUlkO1xuXG4gICAgICB0aGlzLmFjdGl2ZURldmljZUlkLnNldCh0YXJnZXQpO1xuXG4gICAgICB0aGlzLmNvbnRyb2xzID0gYXdhaXQgdGhpcy5yZWFkZXIuZGVjb2RlRnJvbVZpZGVvRGV2aWNlKHRhcmdldCwgdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50LCByZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXN1bHQocmVzdWx0LmdldFRleHQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0YXRlLnNldCgnc2Nhbm5pbmcnKTtcbiAgICAgIHRoaXMuZGV0ZWN0VG9yY2goKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnRFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVndW50YSBhIGxhIHBpc3RhIGRlIHZpZGVvIHNpIHNhYmUgZW5jZW5kZXIgbGEgbHV6LlxuICAgKlxuICAgKiBTZSBjb25zdWx0YSBERVNQVcOJUyBkZSBhcnJhbmNhciBwb3JxdWUgbGFzIGNhcGFiaWxpdGllcyBzb2xvIGV4aXN0ZW4gY29uIGxhXG4gICAqIGPDoW1hcmEgeWEgYWJpZXJ0YS4gU2kgbm8gaGF5IHNvcG9ydGUsIGVsIGJvdMOzbiBubyBzZSBtdWVzdHJhOiBvZnJlY2VyIHVuYVxuICAgKiBsaW50ZXJuYSBxdWUgbm8gZW5jaWVuZGUgZXMgcHJvbWV0ZXIgYWxnbyBxdWUgbm8gcGFzYSwgZWwgbWlzbW8gZXJyb3IgZGVsXG4gICAqIGluZGljYWRvciBkZSBhcnJhc3RyZSBkZWwgbWVuw7ouXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFRvcmNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRvcmNoID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FwcyA9IHRoaXMuY29udHJvbHM/LnN0cmVhbVZpZGVvQ2FwYWJpbGl0aWVzR2V0Py4odHJhY2sgPT4gW3RyYWNrXSkgYXNcbiAgICAgICAgfCAoTWVkaWFUcmFja0NhcGFiaWxpdGllcyAmIHsgdG9yY2g/OiBib29sZWFuIH0pXG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoQm9vbGVhbihjYXBzPy50b3JjaCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTmF2ZWdhZG9yIHF1ZSBubyBleHBvbmUgY2FwYWJpbGl0aWVzOiBzZSBhc3VtZSBxdWUgbm8gaGF5IGxpbnRlcm5hLlxuICAgICAgdGhpcy50b3JjaEF2YWlsYWJsZS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLnRvcmNoT24uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBFbmNpZW5kZSBvIGFwYWdhIGxhIGx1eiBkZSBsYSBjw6FtYXJhLiAqL1xuICBhc3luYyB0b2dnbGVUb3JjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMudG9yY2hBdmFpbGFibGUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSAhdGhpcy50b3JjaE9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY29udHJvbHM/LnN0cmVhbVZpZGVvQ29uc3RyYWludHNBcHBseT8uKHtcbiAgICAgICAgYWR2YW5jZWQ6IFt7IHRvcmNoOiBuZXh0IH0gYXMgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRdLFxuICAgICAgfSBhcyBNZWRpYVRyYWNrQ29uc3RyYWludHMpO1xuICAgICAgdGhpcy50b3JjaE9uLnNldChuZXh0KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpIGxhIHBpc3RhIHJlY2hhemEgbGEgY29uc3RyYWludCwgZGVqYW1vcyBkZSBvZnJlY2VybGEgZW4gdmV6IGRlXG4gICAgICAvLyBpbnNpc3RpciBjb24gdW4gYm90w7NuIHF1ZSBubyByZXNwb25kZS5cbiAgICAgIHRoaXMudG9yY2hBdmFpbGFibGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMudG9yY2hPbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMZWUgZWwgY8OzZGlnbyBkZXNkZSB1bmEgZm90byBxdWUgZWxpZ2UgbGEgcGVyc29uYS5cbiAgICpcbiAgICogU2FsaWRhIHBhcmEgY3VhbmRvIGxhIGPDoW1hcmEgbm8gZXN0w6EgZGlzcG9uaWJsZSwgZWwgcGVybWlzbyBxdWVkw7MgYmxvcXVlYWRvXG4gICAqIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIGRlbCBzaXRpbywgbyBlbCBjw7NkaWdvIGxsZWfDsyBwb3IgbWVuc2FqZS5cbiAgICovXG4gIGFzeW5jIG9uSW1hZ2VQaWNrZWQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIGlmICghZmlsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pbWFnZUVycm9yLnNldChmYWxzZSk7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVhZGVyID0gdGhpcy5yZWFkZXIgPz8gbmV3IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcigpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZGVyLmRlY29kZUZyb21JbWFnZVVybCh1cmwpO1xuICAgICAgdGhpcy5oYW5kbGVSZXN1bHQocmVzdWx0LmdldFRleHQoKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmltYWdlRXJyb3Iuc2V0KHRydWUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfVxuICB9XG5cbiAgc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgfVxuXG4gIGFzeW5jIG9uU2VsZWN0RGV2aWNlKGRldmljZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoZGV2aWNlSWQgJiYgZGV2aWNlSWQgIT09IHRoaXMuYWN0aXZlRGV2aWNlSWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChkZXZpY2VJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXN1bHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZWR1cGUgPSB0aGlzLnByb3BzLmRlZHVwZU1zID8/IDE1MDA7XG4gICAgaWYgKHRleHQgPT09IHRoaXMubGFzdFZhbHVlICYmIG5vdyAtIHRoaXMubGFzdEF0IDwgZGVkdXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdFZhbHVlID0gdGV4dDtcbiAgICB0aGlzLmxhc3RBdCA9IG5vdztcblxuICAgIHRoaXMuc2Nhbm5lZC5lbWl0KHRleHQpO1xuXG4gICAgLy8gTW9kbyBubyBjb250aW51bzogZGV0ZW5lciB0cmFzIGVsIHByaW1lciBtYXRjaCAobGEgcMOhZ2luYSByZWFudWRhIHNpXG4gICAgLy8gcXVpZXJlKS4gYGNvbnRpbnVvdXNgIGRlZmF1bHQgdHJ1ZSDihpIgc2VndWlyIGVzY2FuZWFuZG8uXG4gICAgaWYgKHRoaXMucHJvcHMuY29udGludW91cyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RhcnRFcnJvcihlcnI6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gKGVyciBhcyB7IG5hbWU/OiBzdHJpbmcgfSB8IG51bGwpPy5uYW1lID8/ICcnO1xuICAgIGlmIChuYW1lID09PSAnTm90QWxsb3dlZEVycm9yJyB8fCBuYW1lID09PSAnU2VjdXJpdHlFcnJvcicpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KCdkZW5pZWQnKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdOb3RGb3VuZEVycm9yJyB8fCBuYW1lID09PSAnT3ZlcmNvbnN0cmFpbmVkRXJyb3InKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldCgnbm8tY2FtZXJhJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KCdlcnJvcicpO1xuICAgIH1cbiAgICB0aGlzLnRlYXJkb3duKGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBEZXRpZW5lIGVsIGRlY29kZSArIGxpYmVyYSBlbCBzdHJlYW0gZGUgbGEgY8OhbWFyYS4gKi9cbiAgcHJpdmF0ZSB0ZWFyZG93bihyZXNldFN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNvbnRyb2xzPy5zdG9wKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gICAgdGhpcy5jb250cm9scyA9IG51bGw7XG5cbiAgICBjb25zdCB2aWRlbyA9IHRoaXMudmlkZW9SZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc3RyZWFtID0gdmlkZW8/LnNyY09iamVjdCBhcyBNZWRpYVN0cmVhbSB8IG51bGw7XG4gICAgaWYgKHN0cmVhbSkge1xuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucmVhZGVyID0gbnVsbDtcbiAgICB0aGlzLnRvcmNoQXZhaWxhYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy50b3JjaE9uLnNldChmYWxzZSk7XG5cbiAgICBpZiAocmVzZXRTdGF0ZSkge1xuICAgICAgdGhpcy5sYXN0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMubGFzdEF0ID0gMDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==