valtech-components 4.0.961 → 4.0.963

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 (155) 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 +7 -3
  11. package/esm2022/lib/components/atoms/notice/types.mjs +1 -1
  12. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +3 -3
  13. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
  14. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
  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 +3 -3
  36. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +3 -3
  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 +3 -3
  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/field-options-editor/field-options-editor.component.mjs +3 -3
  47. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
  48. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +4 -4
  49. package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
  50. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
  51. package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
  52. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +3 -3
  53. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
  54. package/esm2022/lib/components/molecules/media-object/media-object.component.mjs +3 -3
  55. package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +3 -3
  56. package/esm2022/lib/components/molecules/metadata-list/metadata-list.component.mjs +3 -3
  57. package/esm2022/lib/components/molecules/metric-card/metric-card.component.mjs +3 -3
  58. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
  59. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +3 -3
  60. package/esm2022/lib/components/molecules/operation-reference/operation-reference.component.mjs +3 -3
  61. package/esm2022/lib/components/molecules/option-cards/option-cards.component.mjs +3 -3
  62. package/esm2022/lib/components/molecules/page-links/page-links.component.mjs +3 -3
  63. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +3 -3
  64. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
  65. package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +3 -3
  66. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +3 -3
  67. package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
  68. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
  69. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
  70. package/esm2022/lib/components/molecules/profile-card/profile-card.component.mjs +3 -3
  71. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +3 -3
  72. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
  73. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +3 -3
  74. package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
  75. package/esm2022/lib/components/molecules/reaction-bar/reaction-bar.component.mjs +3 -3
  76. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
  77. package/esm2022/lib/components/molecules/section-header/section-header.component.mjs +3 -3
  78. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -3
  79. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
  80. package/esm2022/lib/components/molecules/select-search/select-search-picker-modal.component.mjs +3 -3
  81. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +3 -3
  82. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +4 -4
  83. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +3 -3
  84. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +3 -3
  85. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
  86. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +3 -3
  87. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
  88. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +3 -3
  89. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
  90. package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +3 -3
  91. package/esm2022/lib/components/molecules/usage-meters/usage-meters.component.mjs +3 -3
  92. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +3 -3
  93. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +3 -3
  94. package/esm2022/lib/components/organisms/access-request-view/access-request-view.component.mjs +3 -3
  95. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +3 -3
  96. package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +3 -3
  97. package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
  98. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +3 -3
  99. package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +3 -3
  100. package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
  101. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +3 -3
  102. package/esm2022/lib/components/organisms/chat-window/chat-window.component.mjs +3 -3
  103. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +3 -3
  104. package/esm2022/lib/components/organisms/confirmation-dialog-v2/confirmation-dialog-v2.component.mjs +3 -3
  105. package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +3 -3
  106. package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +3 -3
  107. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
  108. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
  109. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +3 -3
  110. package/esm2022/lib/components/organisms/faq/faq.component.mjs +3 -3
  111. package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +3 -3
  112. package/esm2022/lib/components/organisms/folder-tabs/folder-tabs.component.mjs +3 -3
  113. package/esm2022/lib/components/organisms/form/form.component.mjs +3 -3
  114. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +3 -3
  115. package/esm2022/lib/components/organisms/group-members/group-members.component.mjs +3 -3
  116. package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
  117. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +3 -3
  118. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +3 -3
  119. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +3 -3
  120. package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
  121. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +3 -3
  122. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +3 -3
  123. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  124. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  125. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  126. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  127. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
  128. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +3 -3
  129. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
  130. package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
  131. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +3 -3
  132. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
  133. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +3 -3
  134. package/esm2022/lib/components/organisms/qr-scanner/qr-scanner.component.mjs +3 -3
  135. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +5 -5
  136. package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +3 -3
  137. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
  138. package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs +3 -3
  139. package/esm2022/lib/components/organisms/thread-panel/thread-panel.component.mjs +3 -3
  140. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  141. package/esm2022/lib/components/organisms/verify-view/verify-view.component.mjs +3 -3
  142. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
  143. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +3 -3
  144. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +3 -3
  145. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +3 -3
  146. package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
  147. package/esm2022/lib/version.mjs +2 -2
  148. package/fesm2022/valtech-components.mjs +300 -296
  149. package/fesm2022/valtech-components.mjs.map +1 -1
  150. package/lib/components/atoms/notice/types.d.ts +8 -5
  151. package/lib/version.d.ts +1 -1
  152. package/package.json +1 -1
  153. package/src/lib/components/styles/_docs-page.scss +1 -1
  154. package/src/lib/components/styles/overrides.scss +4 -4
  155. package/src/lib/components/styles/variables.scss +7 -7
@@ -14,8 +14,8 @@ const STATUS_STYLE = {
14
14
  rejected: { bg: '#ef4444', color: '#fff' },
15
15
  in_review: { bg: '#fef3c7', color: '#92400e' },
16
16
  pending: { bg: 'var(--ion-color-light, #f4f5f8)', color: 'var(--ion-color-dark, #222)' },
17
- cancelled: { bg: 'var(--ion-color-light, #f4f5f8)', color: 'var(--ion-color-medium, #636469)' },
18
- closed: { bg: 'var(--ion-color-light, #f4f5f8)', color: 'var(--ion-color-medium, #636469)' },
17
+ cancelled: { bg: 'var(--ion-color-light, #f4f5f8)', color: 'var(--ion-color-dark, #636469)' },
18
+ closed: { bg: 'var(--ion-color-light, #f4f5f8)', color: 'var(--ion-color-dark, #636469)' },
19
19
  };
20
20
  /**
21
21
  * Panel de revisión de una Request genérica (ADR-061/062): status + acciones
@@ -359,7 +359,7 @@ export class RequestReviewPanelComponent {
359
359
  </div>
360
360
  }
361
361
  </div>
362
- `, isInline: true, styles: [".page{display:flex;flex-direction:column;gap:14px}.skel{display:flex;flex-direction:column;gap:12px}.skel val-skeleton{display:block}.detail{display:flex;flex-direction:column;gap:14px}.entity-hero{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:14px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));width:100%;text-align:left;cursor:pointer}.entity-hero:disabled{cursor:default}.entity-hero__media{width:56px;height:56px;border-radius:12px;overflow:hidden;flex-shrink:0;background:var(--ion-color-light, #f4f5f8);display:flex;align-items:center;justify-content:center}.entity-hero__img{width:100%;height:100%;object-fit:cover}.entity-hero__placeholder{font-size:1.625rem}.entity-hero__body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.entity-hero__label{font-size:.75rem;color:var(--ion-color-medium, #636469)}.entity-hero__name{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-hero__chevron{font-size:1.5rem;color:var(--ion-color-medium, #92949c);line-height:1}.status-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-left:4px solid;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.status-card__top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:.8125rem;font-weight:700}.submitted-at{font-size:.8125rem;color:var(--ion-color-dark-shade, #1e2023)}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.section{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));overflow:hidden}.section__title{margin:0;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #1e2023);padding:12px 16px 0}.section-pad{padding:12px 16px}.submitter-row{display:flex;align-items:center;gap:12px;padding:12px 16px}.submitter-avatar{width:40px;height:40px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}.submitter-info{display:flex;flex-direction:column;gap:2px;min-width:0}.submitter-name{font-size:.9375rem;font-weight:600;color:var(--ion-text-color, #000)}.submitter-email{font-size:.8125rem;color:var(--ion-color-medium, #636469);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-row{display:flex;flex-direction:column;gap:3px;padding:11px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.field-row:last-child{border-bottom:none}.field-row__label{font-size:.75rem;color:var(--ion-color-medium, #636469);text-transform:capitalize}.field-row__value{font-size:.9375rem;color:var(--ion-text-color, #000);font-weight:500;word-break:break-word;white-space:pre-line}.no-comments{margin:0;padding:12px 16px;font-size:.875rem;color:var(--ion-color-medium, #92949c)}.comments{list-style:none;margin:0;padding:0}.comment{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.comment:last-child{border-bottom:none}.comment__avatar{width:32px;height:32px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.comment__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.comment__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.comment__author{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000)}.comment__date{font-size:.75rem;color:var(--ion-color-medium, #92949c);white-space:nowrap}.comment__body{margin:0;font-size:.875rem;color:var(--ion-text-color, #000);line-height:1.5;white-space:pre-line}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
362
+ `, isInline: true, styles: [".page{display:flex;flex-direction:column;gap:14px}.skel{display:flex;flex-direction:column;gap:12px}.skel val-skeleton{display:block}.detail{display:flex;flex-direction:column;gap:14px}.entity-hero{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:14px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));width:100%;text-align:left;cursor:pointer}.entity-hero:disabled{cursor:default}.entity-hero__media{width:56px;height:56px;border-radius:12px;overflow:hidden;flex-shrink:0;background:var(--ion-color-light, #f4f5f8);display:flex;align-items:center;justify-content:center}.entity-hero__img{width:100%;height:100%;object-fit:cover}.entity-hero__placeholder{font-size:1.625rem}.entity-hero__body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.entity-hero__label{font-size:.75rem;color:var(--ion-color-dark, #636469)}.entity-hero__name{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-hero__chevron{font-size:1.5rem;color:var(--ion-color-dark, #92949c);line-height:1}.status-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-left:4px solid;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.status-card__top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:.8125rem;font-weight:700}.submitted-at{font-size:.8125rem;color:var(--ion-color-dark-shade, #1e2023)}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.section{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));overflow:hidden}.section__title{margin:0;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #1e2023);padding:12px 16px 0}.section-pad{padding:12px 16px}.submitter-row{display:flex;align-items:center;gap:12px;padding:12px 16px}.submitter-avatar{width:40px;height:40px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}.submitter-info{display:flex;flex-direction:column;gap:2px;min-width:0}.submitter-name{font-size:.9375rem;font-weight:600;color:var(--ion-text-color, #000)}.submitter-email{font-size:.8125rem;color:var(--ion-color-dark, #636469);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-row{display:flex;flex-direction:column;gap:3px;padding:11px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.field-row:last-child{border-bottom:none}.field-row__label{font-size:.75rem;color:var(--ion-color-dark, #636469);text-transform:capitalize}.field-row__value{font-size:.9375rem;color:var(--ion-text-color, #000);font-weight:500;word-break:break-word;white-space:pre-line}.no-comments{margin:0;padding:12px 16px;font-size:.875rem;color:var(--ion-color-dark, #92949c)}.comments{list-style:none;margin:0;padding:0}.comment{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.comment:last-child{border-bottom:none}.comment__avatar{width:32px;height:32px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.comment__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.comment__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.comment__author{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000)}.comment__date{font-size:.75rem;color:var(--ion-color-dark, #92949c);white-space:nowrap}.comment__body{margin:0;font-size:.875rem;color:var(--ion-text-color, #000);line-height:1.5;white-space:pre-line}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonComponent, selector: "val-skeleton", inputs: ["props"] }] }); }
363
363
  }
364
364
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestReviewPanelComponent, decorators: [{
365
365
  type: Component,
@@ -521,6 +521,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
521
521
  </div>
522
522
  }
523
523
  </div>
524
- `, styles: [".page{display:flex;flex-direction:column;gap:14px}.skel{display:flex;flex-direction:column;gap:12px}.skel val-skeleton{display:block}.detail{display:flex;flex-direction:column;gap:14px}.entity-hero{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:14px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));width:100%;text-align:left;cursor:pointer}.entity-hero:disabled{cursor:default}.entity-hero__media{width:56px;height:56px;border-radius:12px;overflow:hidden;flex-shrink:0;background:var(--ion-color-light, #f4f5f8);display:flex;align-items:center;justify-content:center}.entity-hero__img{width:100%;height:100%;object-fit:cover}.entity-hero__placeholder{font-size:1.625rem}.entity-hero__body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.entity-hero__label{font-size:.75rem;color:var(--ion-color-medium, #636469)}.entity-hero__name{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-hero__chevron{font-size:1.5rem;color:var(--ion-color-medium, #92949c);line-height:1}.status-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-left:4px solid;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.status-card__top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:.8125rem;font-weight:700}.submitted-at{font-size:.8125rem;color:var(--ion-color-dark-shade, #1e2023)}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.section{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));overflow:hidden}.section__title{margin:0;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #1e2023);padding:12px 16px 0}.section-pad{padding:12px 16px}.submitter-row{display:flex;align-items:center;gap:12px;padding:12px 16px}.submitter-avatar{width:40px;height:40px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}.submitter-info{display:flex;flex-direction:column;gap:2px;min-width:0}.submitter-name{font-size:.9375rem;font-weight:600;color:var(--ion-text-color, #000)}.submitter-email{font-size:.8125rem;color:var(--ion-color-medium, #636469);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-row{display:flex;flex-direction:column;gap:3px;padding:11px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.field-row:last-child{border-bottom:none}.field-row__label{font-size:.75rem;color:var(--ion-color-medium, #636469);text-transform:capitalize}.field-row__value{font-size:.9375rem;color:var(--ion-text-color, #000);font-weight:500;word-break:break-word;white-space:pre-line}.no-comments{margin:0;padding:12px 16px;font-size:.875rem;color:var(--ion-color-medium, #92949c)}.comments{list-style:none;margin:0;padding:0}.comment{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.comment:last-child{border-bottom:none}.comment__avatar{width:32px;height:32px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.comment__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.comment__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.comment__author{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000)}.comment__date{font-size:.75rem;color:var(--ion-color-medium, #92949c);white-space:nowrap}.comment__body{margin:0;font-size:.875rem;color:var(--ion-text-color, #000);line-height:1.5;white-space:pre-line}\n"] }]
524
+ `, styles: [".page{display:flex;flex-direction:column;gap:14px}.skel{display:flex;flex-direction:column;gap:12px}.skel val-skeleton{display:block}.detail{display:flex;flex-direction:column;gap:14px}.entity-hero{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:14px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));width:100%;text-align:left;cursor:pointer}.entity-hero:disabled{cursor:default}.entity-hero__media{width:56px;height:56px;border-radius:12px;overflow:hidden;flex-shrink:0;background:var(--ion-color-light, #f4f5f8);display:flex;align-items:center;justify-content:center}.entity-hero__img{width:100%;height:100%;object-fit:cover}.entity-hero__placeholder{font-size:1.625rem}.entity-hero__body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.entity-hero__label{font-size:.75rem;color:var(--ion-color-dark, #636469)}.entity-hero__name{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-hero__chevron{font-size:1.5rem;color:var(--ion-color-dark, #92949c);line-height:1}.status-card{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));border-left:4px solid;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.status-card__top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:.8125rem;font-weight:700}.submitted-at{font-size:.8125rem;color:var(--ion-color-dark-shade, #1e2023)}.actions-row{display:flex;gap:10px;flex-wrap:wrap}.section{background:var(--ion-card-background, var(--ion-background-color, #fff));border-radius:12px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));overflow:hidden}.section__title{margin:0;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #1e2023);padding:12px 16px 0}.section-pad{padding:12px 16px}.submitter-row{display:flex;align-items:center;gap:12px;padding:12px 16px}.submitter-avatar{width:40px;height:40px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;flex-shrink:0}.submitter-info{display:flex;flex-direction:column;gap:2px;min-width:0}.submitter-name{font-size:.9375rem;font-weight:600;color:var(--ion-text-color, #000)}.submitter-email{font-size:.8125rem;color:var(--ion-color-dark, #636469);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-row{display:flex;flex-direction:column;gap:3px;padding:11px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.field-row:last-child{border-bottom:none}.field-row__label{font-size:.75rem;color:var(--ion-color-dark, #636469);text-transform:capitalize}.field-row__value{font-size:.9375rem;color:var(--ion-text-color, #000);font-weight:500;word-break:break-word;white-space:pre-line}.no-comments{margin:0;padding:12px 16px;font-size:.875rem;color:var(--ion-color-dark, #92949c)}.comments{list-style:none;margin:0;padding:0}.comment{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .06))}.comment:last-child{border-bottom:none}.comment__avatar{width:32px;height:32px;border-radius:50%;background:var(--ion-color-primary, #313131);color:var(--ion-color-primary-contrast, #fff);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.comment__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.comment__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.comment__author{font-size:.875rem;font-weight:600;color:var(--ion-text-color, #000)}.comment__date{font-size:.75rem;color:var(--ion-color-dark, #92949c);white-space:nowrap}.comment__body{margin:0;font-size:.875rem;color:var(--ion-text-color, #000);line-height:1.5;white-space:pre-line}\n"] }]
525
525
  }], ctorParameters: () => [] });
526
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1yZXZpZXctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9yZXF1ZXN0LXJldmlldy1wYW5lbC9yZXF1ZXN0LXJldmlldy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFNdEUsTUFBTSxZQUFZLEdBQWdDO0lBQ2hELFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDMUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzlDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLEVBQUU7SUFDeEYsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlDQUFpQyxFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtJQUMvRixNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO0NBQzdGLENBQUM7QUEwQkY7Ozs7O0dBS0c7QUFzYUgsTUFBTSxPQUFPLDJCQUEyQjtJQXVFdEM7UUF0RVEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNyQyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNEIsQ0FBQztRQUVwRCxXQUFNLEdBQUcsTUFBTSxFQUFjLENBQUM7UUFFdEIsU0FBSSxHQUFHLE1BQU0sQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsUUFBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekMsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckQsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWpELGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUF1QixDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ00sY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUF1QixDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ00sb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNNLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDTSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztpQkFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLFFBQVEsQ0FBcUIsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25GLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDaEUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkQsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO2FBQ2pFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUVZLENBQUM7SUFFaEIsUUFBUTtRQUNOLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLE9BQU8sRUFBRSwyQkFBMkI7Z0JBQ3BDLFdBQVcsRUFBRSxZQUFZO2dCQUN6QixhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWE7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLFNBQWlCO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVE7YUFDVixhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUM7YUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsaUZBQWlGO2dCQUNqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUErQjtRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN0QixPQUFPLEVBQUUsaUNBQWlDO2dCQUMxQyxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNyRixHQUFHLEVBQUUsU0FBUztnQkFDZCxLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsU0FBUzthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFpQjtRQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwRSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQUUsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQzFFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLEVBQUU7WUFBRSxPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUM7UUFDM0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUMvRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBOUtVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRYQWphNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEpULCtsSUEvSlMsZUFBZSwwR0FBRSxtQkFBbUIsK0VBQUUsaUJBQWlCOzs0RkFrYXRELDJCQUEyQjtrQkFyYXZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxZQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIE9uSW5pdCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwUmVxdWVzdCwgUmVxdWVzdENvbW1lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0cy90eXBlcyc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL3R5cGVzJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuaW50ZXJmYWNlIFN0YXR1c1N0eWxlIHtcbiAgYmc6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbn1cbmNvbnN0IFNUQVRVU19TVFlMRTogUmVjb3JkPHN0cmluZywgU3RhdHVzU3R5bGU+ID0ge1xuICBhcHByb3ZlZDogeyBiZzogJyMyMmM1NWUnLCBjb2xvcjogJyNmZmYnIH0sXG4gIHJlamVjdGVkOiB7IGJnOiAnI2VmNDQ0NCcsIGNvbG9yOiAnI2ZmZicgfSxcbiAgaW5fcmV2aWV3OiB7IGJnOiAnI2ZlZjNjNycsIGNvbG9yOiAnIzkyNDAwZScgfSxcbiAgcGVuZGluZzogeyBiZzogJ3ZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCknLCBjb2xvcjogJ3ZhcigtLWlvbi1jb2xvci1kYXJrLCAjMjIyKScgfSxcbiAgY2FuY2VsbGVkOiB7IGJnOiAndmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KScsIGNvbG9yOiAndmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzYzNjQ2OSknIH0sXG4gIGNsb3NlZDogeyBiZzogJ3ZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCknLCBjb2xvcjogJ3ZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2MzY0NjkpJyB9LFxufTtcblxuLyoqXG4gKiBDb25maWcgZGVsIFwiZW50aXR5IGhlcm9cIiAoYmxvcXVlIG9wY2lvbmFsIGFycmliYSBkZWwgc3RhdHVzOiBlai4gYW5pbWFsIGVuXG4gKiBDaGVzZWQsIHJlY2V0YSBlbiBNZWFscGxhbikuIEFnbsOzc3RpY28gYWwgZG9taW5pbyDigJQgY2FkYSBhcHAgZGVjbGFyYSBkZSBxdcOpXG4gKiBjYW1wb3MgZGUgYG1ldGFkYXRhYCBzYWNhciBub21icmUvaW1hZ2VuIHkgYSBkw7NuZGUgbmF2ZWdhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3RW50aXR5SGVyb0NvbmZpZyB7XG4gIGxhYmVsS2V5OiBzdHJpbmc7XG4gIG5hbWVGaWVsZDogc3RyaW5nO1xuICBpbWFnZUZpZWxkPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlckljb24/OiBzdHJpbmc7XG4gIGNhbk5hdmlnYXRlOiAobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGJvb2xlYW47XG4gIG5hdmlnYXRlOiAobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFJldmlld1BhbmVsQ29uZmlnIHtcbiAgLyoqIE5hbWVzcGFjZSBpMThuIGRvbmRlIHZpdmVuIGxhcyBrZXlzIChzdGF0dXNfKiwgYXBwcm92ZSwgcmVqZWN0LCBzdWJtaXR0ZXIsIGZpZWxkcywgY29tbWVudHNUaXRsZSwgbm9Db21tZW50cywgc3VibWl0dGVkQXQsIHN0YXR1c1VwZGF0ZWQsIHN0YXR1c0Vycm9yLCBlcnJvclRpdGxlLCBvZmZsaW5lVGl0bGUsIG9mZmxpbmVIaW50LCByZXRyeSwgdmlld0FuaW1hbCkuICovXG4gIGkxOG5OYW1lc3BhY2U6IHN0cmluZztcbiAgZW50aXR5SGVybz86IFJlcXVlc3RSZXZpZXdFbnRpdHlIZXJvQ29uZmlnO1xuICAvKiogU2kgZWwgdXN1YXJpbyBhY3R1YWwgcHVlZGUgYXByb2Jhci9yZWNoYXphciAoZWouIHBlcnNvbmEuaXNQdWJsaXNoZXIoKSkuICovXG4gIGNhblJldmlldzogKCkgPT4gYm9vbGVhbjtcbiAgLyoqIENUQSBwb3N0LWFwcm9iYWNpw7NuIHBhcmEgcXVpZW4gTk8gcmV2aXNhIChlai4gXCJ2ZXIgcmVjZXRhXCIvXCJ2ZXIgYW5pbWFsXCIpLiAqL1xuICB2aWV3RW50aXR5Q3RhTGFiZWxLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFuZWwgZGUgcmV2aXNpw7NuIGRlIHVuYSBSZXF1ZXN0IGdlbsOpcmljYSAoQURSLTA2MS8wNjIpOiBzdGF0dXMgKyBhY2Npb25lc1xuICogYXBwcm92ZS9yZWplY3QgKyBmaWVsZHMgZGVsIGZvcm11bGFyaW8gKyBjb21lbnRhcmlvcy4gQ29uZmlnLWRyaXZlbiwgc2luXG4gKiBjb25vY2ltaWVudG8gZGVsIGRvbWluaW8gKGFkb3B0aW9uLCByZWNpcGVfdmVyaWZpY2F0aW9uLCBldGMuKSDigJQgY2FkYVxuICogY29uc3VtZXIgaW55ZWN0YSBzdSBgUmVxdWVzdFJldmlld1BhbmVsQ29uZmlnYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJlcXVlc3QtcmV2aWV3LXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0J1dHRvbkNvbXBvbmVudCwgRW1wdHlTdGF0ZUNvbXBvbmVudCwgU2tlbGV0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnODhweCcsIGJvcmRlclJhZGl1czogJzE0cHgnIH1cIiAvPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnNjRweCcsIGJvcmRlclJhZGl1czogJzEycHgnIH1cIiAvPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnODBweCcsIGJvcmRlclJhZGl1czogJzEycHgnIH1cIiAvPlxuICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTIwcHgnLCBib3JkZXJSYWRpdXM6ICcxMnB4JyB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChsb2FkRXJyb3IoKSkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlcnJvclN0YXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSBpZiAocmVxKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbFwiPlxuICAgICAgICAgIEBpZiAoaGVyb0NvbmZpZygpICYmIGhlcm9OYW1lKCkpIHtcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnRpdHktaGVyb1wiIChjbGljayk9XCJvbkhlcm9DbGljaygpXCIgW2Rpc2FibGVkXT1cIiFjYW5OYXZpZ2F0ZUhlcm8oKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50aXR5LWhlcm9fX21lZGlhXCI+XG4gICAgICAgICAgICAgICAgQGlmIChoZXJvSW1hZ2UoKSAmJiAhaGVyb0ltZ0ZhaWxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaGVyb0ltYWdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImhlcm9OYW1lKCkhXCJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaGVyb0ltZ0ZhaWxlZC5zZXQodHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVudGl0eS1oZXJvX19pbWdcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW50aXR5LWhlcm9fX3BsYWNlaG9sZGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgaGVyb0NvbmZpZygpIS5wbGFjZWhvbGRlckljb24gfHwgJ/Cfk4QnXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50aXR5LWhlcm9fX2JvZHlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVudGl0eS1oZXJvX19sYWJlbFwiPnt7IHQoaGVyb0NvbmZpZygpIS5sYWJlbEtleSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnRpdHktaGVyb19fbmFtZVwiPnt7IGhlcm9OYW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhbk5hdmlnYXRlSGVybygpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnRpdHktaGVyb19fY2hldnJvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPuKAujwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jYXJkXCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cInN0YXR1c1N0eWxlKCkuYmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY2FyZF9fdG9wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdHVzLWJhZGdlXCIgW3N0eWxlLmJhY2tncm91bmRdPVwic3RhdHVzU3R5bGUoKS5iZ1wiIFtzdHlsZS5jb2xvcl09XCJzdGF0dXNTdHlsZSgpLmNvbG9yXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnc3RhdHVzXycgKyByZXEoKSEuc3RhdHVzKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VibWl0dGVkLWF0XCI+e3sgdCgnc3VibWl0dGVkQXQnKSB9fToge3sgZm9ybWF0RGF0ZShyZXEoKSEuY3JlYXRlZEF0KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKGNvbmZpZygpLmNhblJldmlldygpICYmIChyZXEoKSEuc3RhdHVzID09PSAncGVuZGluZycgfHwgcmVxKCkhLnN0YXR1cyA9PT0gJ2luX3JldmlldycpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zLXJvd1wiPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogJ2FwcHJvdmUnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0KCdhcHByb3ZlJyksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHRyYW5zaXRpb25pbmcoKSA/ICdXT1JLSU5HJyA6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogdHJhbnNpdGlvbi5iaW5kKHRoaXMsICdhcHByb3ZlZCcpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46ICdyZWplY3QnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0KCdyZWplY3QnKSxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHRyYW5zaXRpb25pbmcoKSA/ICdXT1JLSU5HJyA6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogdHJhbnNpdGlvbi5iaW5kKHRoaXMsICdyZWplY3RlZCcpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKHJlcSgpIS5zdWJtaXR0ZXIpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvbl9fdGl0bGVcIj57eyB0KCdzdWJtaXR0ZXInKSB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Ym1pdHRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0dGVyLWF2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHN1Ym1pdHRlckluaXRpYWwoKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJtaXR0ZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZXEoKSEuc3VibWl0dGVyIS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VibWl0dGVyLW5hbWVcIj57eyByZXEoKSEuc3VibWl0dGVyIS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChyZXEoKSEuc3VibWl0dGVyIS5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1pdHRlci1lbWFpbFwiPnt7IHJlcSgpIS5zdWJtaXR0ZXIhLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChyZXEoKSEuc3VibWl0dGVyIS5waG9uZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1pdHRlci1lbWFpbFwiPnt7IHJlcSgpIS5zdWJtaXR0ZXIhLnBob25lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZmllbGRFbnRyaWVzKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInNlY3Rpb25fX3RpdGxlXCI+e3sgdCgnZmllbGRzJykgfX08L3A+XG4gICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIGZpZWxkRW50cmllcygpOyB0cmFjayBlbnRyeS5rZXkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcm93XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpZWxkLXJvd19fbGFiZWxcIj57eyBlbnRyeS5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpZWxkLXJvd19fdmFsdWVcIj57eyBlbnRyeS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICFjb25maWcoKS5jYW5SZXZpZXcoKSAmJiByZXEoKSEuc3RhdHVzID09PSAnYXBwcm92ZWQnICYmIGNhbk5hdmlnYXRlSGVybygpICYmIGNvbmZpZygpLnZpZXdFbnRpdHlDdGFMYWJlbEtleVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB0b2tlbjogJ3ZpZXctZW50aXR5JyxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0KGNvbmZpZygpLnZpZXdFbnRpdHlDdGFMYWJlbEtleSEpLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBvbkhlcm9DbGljay5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvbl9fdGl0bGVcIj57eyB0KCdjb21tZW50c1RpdGxlJykgfX08L3A+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmdDb21tZW50cygpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXBhZFwiPlxuICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnNDhweCcsIGJvcmRlclJhZGl1czogJzhweCcgfVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoY29tbWVudHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuby1jb21tZW50c1wiPnt7IHQoJ25vQ29tbWVudHMnKSB9fTwvcD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb21tZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGMgb2YgY29tbWVudHMoKTsgdHJhY2sgYy5jb21tZW50SWQpIHtcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImNvbW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRfX2F2YXRhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGF1dGhvckluaXRpYWwoYykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1lbnRfX2F1dGhvclwiPnt7IGMuYXV0aG9yLm5hbWUgfHwgYy5hdXRob3IuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1lbnRfX2RhdGVcIj57eyByZWxhdGl2ZVRpbWUoYy5jcmVhdGVkQXQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY29tbWVudF9fYm9keVwiPnt7IGMuYm9keSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuICAgICAgLnNrZWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAuc2tlbCB2YWwtc2tlbGV0b24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5kZXRhaWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIC5lbnRpdHktaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVybzpkaXNhYmxlZCB7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVyb19fbWVkaWEge1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG4gICAgICAuZW50aXR5LWhlcm9fX2ltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvX19wbGFjZWhvbGRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS42MjVyZW07XG4gICAgICB9XG4gICAgICAuZW50aXR5LWhlcm9fX2JvZHkge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvX19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2MzY0NjkpO1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvX19uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVyb19fY2hldnJvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLWNhcmRfX3RvcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy1iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5zdWJtaXR0ZWQtYXQge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjMWUyMDIzKTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuXG4gICAgICAuc2VjdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLnNlY3Rpb25fX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjMWUyMDIzKTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1wYWQge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC5zdWJtaXR0ZXItcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICB9XG4gICAgICAuc3VibWl0dGVyLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICMzMTMxMzEpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5zdWJtaXR0ZXItaW5mbyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuc3VibWl0dGVyLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5zdWJtaXR0ZXItZW1haWwge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2MzY0NjkpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cblxuICAgICAgLmZpZWxkLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxMXB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgIH1cbiAgICAgIC5maWVsZC1yb3c6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgICAuZmllbGQtcm93X19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2MzY0NjkpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIH1cbiAgICAgIC5maWVsZC1yb3dfX3ZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICAgIH1cblxuICAgICAgLm5vLWNvbW1lbnRzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5jb21tZW50cyB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICAgIC5jb21tZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICB9XG4gICAgICAuY29tbWVudDpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5jb21tZW50X19hdmF0YXIge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzEzMTMxKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuY29tbWVudF9fY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICB9XG4gICAgICAuY29tbWVudF9faGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLmNvbW1lbnRfX2F1dGhvciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAuY29tbWVudF9fZGF0ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuICAgICAgLmNvbW1lbnRfX2JvZHkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmV2aWV3UGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlcXVlc3RzID0gaW5qZWN0KFJlcXVlc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHJlYWRvbmx5IHJlcXVlc3RJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8UmVxdWVzdFJldmlld1BhbmVsQ29uZmlnPigpO1xuXG4gIHJlYWRvbmx5IGxvYWRlZCA9IG91dHB1dDxBcHBSZXF1ZXN0PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlcSA9IHNpZ25hbDxBcHBSZXF1ZXN0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRFcnJvciA9IHNpZ25hbDx1bmtub3duIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbW1lbnRzID0gc2lnbmFsPFJlcXVlc3RDb21tZW50W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZ0NvbW1lbnRzID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNpdGlvbmluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcmVxID0gdGhpcy5fcmVxLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHRoaXMuX2xvYWRpbmcuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsb2FkRXJyb3IgPSB0aGlzLl9sb2FkRXJyb3IuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBjb21tZW50cyA9IHRoaXMuX2NvbW1lbnRzLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgbG9hZGluZ0NvbW1lbnRzID0gdGhpcy5fbG9hZGluZ0NvbW1lbnRzLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgdHJhbnNpdGlvbmluZyA9IHRoaXMuX3RyYW5zaXRpb25pbmcuYXNSZWFkb25seSgpO1xuXG4gIHJlYWRvbmx5IGhlcm9JbWdGYWlsZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGhlcm9Db25maWcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmVudGl0eUhlcm8pO1xuICByZWFkb25seSBzdGF0dXNTdHlsZSA9IGNvbXB1dGVkKCgpID0+IFNUQVRVU19TVFlMRVt0aGlzLl9yZXEoKT8uc3RhdHVzID8/ICcnXSA/PyBTVEFUVVNfU1RZTEVbJ3BlbmRpbmcnXSk7XG4gIHJlYWRvbmx5IGhlcm9OYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGhlcm8gPSB0aGlzLmhlcm9Db25maWcoKTtcbiAgICBpZiAoIWhlcm8pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuX3JlcSgpPy5tZXRhZGF0YT8uW2hlcm8ubmFtZUZpZWxkXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH0pO1xuICByZWFkb25seSBoZXJvSW1hZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaGVybyA9IHRoaXMuaGVyb0NvbmZpZygpO1xuICAgIGlmICghaGVybz8uaW1hZ2VGaWVsZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5fcmVxKCk/Lm1ldGFkYXRhPy5baGVyby5pbWFnZUZpZWxkXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH0pO1xuICByZWFkb25seSBjYW5OYXZpZ2F0ZUhlcm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaGVybyA9IHRoaXMuaGVyb0NvbmZpZygpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5fcmVxKCk/Lm1ldGFkYXRhO1xuICAgIGlmICghaGVybyB8fCAhbWV0YWRhdGEpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaGVyby5jYW5OYXZpZ2F0ZShtZXRhZGF0YSk7XG4gIH0pO1xuICByZWFkb25seSBzdWJtaXR0ZXJJbml0aWFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHMgPSB0aGlzLl9yZXEoKT8uc3VibWl0dGVyO1xuICAgIGlmICghcykgcmV0dXJuICc/JztcbiAgICByZXR1cm4gKChzLm5hbWUgfHwgcy5lbWFpbCkgPz8gJz8nKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGZpZWxkRW50cmllcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLl9yZXEoKT8uZmllbGRzID8/IHt9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhmaWVsZHMpXG4gICAgICAuZmlsdGVyKChbLCB2XSkgPT4gdiAhPSBudWxsICYmIHYgIT09ICcnKVxuICAgICAgLm1hcCgoW2ssIHZdKSA9PiAoeyBrZXk6IGssIHZhbHVlOiBTdHJpbmcodikgfSkpO1xuICB9KTtcblxuICByZWFkb25seSBlcnJvclN0YXRlID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLl9sb2FkRXJyb3IoKTtcbiAgICBjb25zdCBtc2cgPSAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIgPz8gJycpKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlzT2ZmbGluZSA9IG1zZy5pbmNsdWRlcygnbmV0d29yaycpIHx8IG1zZy5pbmNsdWRlcygnb2ZmbGluZScpO1xuICAgIHJldHVybiB7XG4gICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgdGl0bGU6IGlzT2ZmbGluZSA/IHRoaXMudCgnb2ZmbGluZVRpdGxlJykgOiB0aGlzLnQoJ2Vycm9yVGl0bGUnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc09mZmxpbmUgPyB0aGlzLnQoJ29mZmxpbmVIaW50JykgOiAnJyxcbiAgICAgIGN0YTogeyBsYWJlbDogdGhpcy50KCdyZXRyeScpLCBoYW5kbGVyOiAoKSA9PiB2b2lkIHRoaXMubG9hZCgpIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBhc3luYyBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlkID0gdGhpcy5yZXF1ZXN0SWQoKTtcbiAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLl9sb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlcXVlc3RzLmdldFJlcXVlc3QoaWQpKTtcbiAgICAgIHRoaXMuX3JlcS5zZXQocmVxKTtcbiAgICAgIHRoaXMubG9hZGVkLmVtaXQocmVxKTtcbiAgICAgIHRoaXMuc3Vic2NyaWJlQ29tbWVudHMocmVxLmFwcElkLCByZXEub3JnSWQsIGlkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2xvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JlcXVlc3QtcmV2aWV3LXBhbmVsLmxvYWQnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2Vycm9yVGl0bGUnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlQ29tbWVudHMoYXBwSWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgcmVxdWVzdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkaW5nQ29tbWVudHMuc2V0KHRydWUpO1xuICAgIHRoaXMucmVxdWVzdHNcbiAgICAgIC53YXRjaENvbW1lbnRzKGFwcElkLCBvcmdJZCwgcmVxdWVzdElkKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogY29tbWVudHMgPT4ge1xuICAgICAgICAgIHRoaXMuX2NvbW1lbnRzLnNldChjb21tZW50cyk7XG4gICAgICAgICAgdGhpcy5fbG9hZGluZ0NvbW1lbnRzLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gY29tZW50YXJpb3Mgc29uIGJlc3QtZWZmb3J0OyBzaSBlbCBsaXN0ZW5lciBmYWxsYSwgc2lsZW5jaWFyIHkgb2N1bHRhciBzcGlubmVyXG4gICAgICAgICAgdGhpcy5fbG9hZGluZ0NvbW1lbnRzLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zaXRpb24oc3RhdHVzOiAnYXBwcm92ZWQnIHwgJ3JlamVjdGVkJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcSA9IHRoaXMuX3JlcSgpO1xuICAgIGlmICghcmVxIHx8IHRoaXMuX3RyYW5zaXRpb25pbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMuX3RyYW5zaXRpb25pbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlcXVlc3RzLnRyYW5zaXRpb24ocmVxLmlkLCB7IHN0YXR1cyB9KSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgnc3RhdHVzVXBkYXRlZCcpLCBkdXJhdGlvbjogMjUwMCwgY29sb3I6ICdkYXJrJywgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAncmVxdWVzdC1yZXZpZXctcGFuZWwudHJhbnNpdGlvbicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc3RhdHVzRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fdHJhbnNpdGlvbmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uSGVyb0NsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGhlcm8gPSB0aGlzLmhlcm9Db25maWcoKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuX3JlcSgpPy5tZXRhZGF0YTtcbiAgICBpZiAoaGVybyAmJiBtZXRhZGF0YSkgaGVyby5uYXZpZ2F0ZShtZXRhZGF0YSk7XG4gIH1cblxuICBmb3JtYXREYXRlKGlzbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzbykgcmV0dXJuICcnO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5pMThuLmxhbmcoKSA9PT0gJ2VzJyA/ICdlcy1DTCcgOiAnZW4tVVMnLCB7XG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaXNvO1xuICAgIH1cbiAgfVxuXG4gIGF1dGhvckluaXRpYWwoYzogUmVxdWVzdENvbW1lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiAoKGMuYXV0aG9yLm5hbWUgfHwgYy5hdXRob3IuZW1haWwpID8/ICc/JykuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICByZWxhdGl2ZVRpbWUoaXNvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaXNvKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZGlmZk1zID0gRGF0ZS5ub3coKSAtIG5ldyBEYXRlKGlzbykuZ2V0VGltZSgpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4oZGlmZk1zKSkgcmV0dXJuIGlzbztcbiAgICBjb25zdCBsYW5nID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihkaWZmTXMgLyA2MDAwMCk7XG4gICAgaWYgKG1pbnMgPCAxKSByZXR1cm4gbGFuZyA9PT0gJ2VzJyA/ICdoYWNlIHVuIG1vbWVudG8nIDogJ2p1c3Qgbm93JztcbiAgICBpZiAobWlucyA8IDYwKSByZXR1cm4gbGFuZyA9PT0gJ2VzJyA/IGBoYWNlICR7bWluc30gbWluYCA6IGAke21pbnN9bSBhZ29gO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW5zIC8gNjApO1xuICAgIGlmIChob3VycyA8IDI0KSByZXR1cm4gbGFuZyA9PT0gJ2VzJyA/IGBoYWNlICR7aG91cnN9IGhgIDogYCR7aG91cnN9aCBhZ29gO1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGhvdXJzIC8gMjQpO1xuICAgIGlmIChkYXlzIDwgNykgcmV0dXJuIGxhbmcgPT09ICdlcycgPyBgaGFjZSAke2RheXN9IGRpYSR7ZGF5cyA+IDEgPyAncycgOiAnJ31gIDogYCR7ZGF5c31kIGFnb2A7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RGF0ZShpc28pO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
526
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1yZXZpZXctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9yZXF1ZXN0LXJldmlldy1wYW5lbC9yZXF1ZXN0LXJldmlldy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFNdEUsTUFBTSxZQUFZLEdBQWdDO0lBQ2hELFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDMUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzlDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLEVBQUU7SUFDeEYsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlDQUFpQyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTtJQUM3RixNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFO0NBQzNGLENBQUM7QUEwQkY7Ozs7O0dBS0c7QUFzYUgsTUFBTSxPQUFPLDJCQUEyQjtJQXVFdEM7UUF0RVEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNyQyxXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNEIsQ0FBQztRQUVwRCxXQUFNLEdBQUcsTUFBTSxFQUFjLENBQUM7UUFFdEIsU0FBSSxHQUFHLE1BQU0sQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixlQUFVLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsTUFBTSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUN6QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsUUFBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekMsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckQsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWpELGtCQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUF1QixDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ00sY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUF1QixDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBQ00sb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNNLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsQ0FBQztZQUNqQyxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDTSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztpQkFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLFFBQVEsQ0FBcUIsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25GLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDaEUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkQsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO2FBQ2pFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUVZLENBQUM7SUFFaEIsUUFBUTtRQUNOLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLE9BQU8sRUFBRSwyQkFBMkI7Z0JBQ3BDLFdBQVcsRUFBRSxZQUFZO2dCQUN6QixhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWE7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLFNBQWlCO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVE7YUFDVixhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUM7YUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsaUZBQWlGO2dCQUNqRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUErQjtRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQUUsT0FBTztRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN0QixPQUFPLEVBQUUsaUNBQWlDO2dCQUMxQyxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNyRixHQUFHLEVBQUUsU0FBUztnQkFDZCxLQUFLLEVBQUUsT0FBTztnQkFDZCxJQUFJLEVBQUUsU0FBUzthQUNoQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFpQjtRQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwRSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQUUsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDO1FBQzFFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLEVBQUU7WUFBRSxPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUM7UUFDM0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUMvRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBOUtVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRYQWphNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEpULG1sSUEvSlMsZUFBZSwwR0FBRSxtQkFBbUIsK0VBQUUsaUJBQWlCOzs0RkFrYXRELDJCQUEyQjtrQkFyYXZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxZQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIE9uSW5pdCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwUmVxdWVzdCwgUmVxdWVzdENvbW1lbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0cy90eXBlcyc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL3R5cGVzJztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuaW50ZXJmYWNlIFN0YXR1c1N0eWxlIHtcbiAgYmc6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbn1cbmNvbnN0IFNUQVRVU19TVFlMRTogUmVjb3JkPHN0cmluZywgU3RhdHVzU3R5bGU+ID0ge1xuICBhcHByb3ZlZDogeyBiZzogJyMyMmM1NWUnLCBjb2xvcjogJyNmZmYnIH0sXG4gIHJlamVjdGVkOiB7IGJnOiAnI2VmNDQ0NCcsIGNvbG9yOiAnI2ZmZicgfSxcbiAgaW5fcmV2aWV3OiB7IGJnOiAnI2ZlZjNjNycsIGNvbG9yOiAnIzkyNDAwZScgfSxcbiAgcGVuZGluZzogeyBiZzogJ3ZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCknLCBjb2xvcjogJ3ZhcigtLWlvbi1jb2xvci1kYXJrLCAjMjIyKScgfSxcbiAgY2FuY2VsbGVkOiB7IGJnOiAndmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KScsIGNvbG9yOiAndmFyKC0taW9uLWNvbG9yLWRhcmssICM2MzY0NjkpJyB9LFxuICBjbG9zZWQ6IHsgYmc6ICd2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpJywgY29sb3I6ICd2YXIoLS1pb24tY29sb3ItZGFyaywgIzYzNjQ2OSknIH0sXG59O1xuXG4vKipcbiAqIENvbmZpZyBkZWwgXCJlbnRpdHkgaGVyb1wiIChibG9xdWUgb3BjaW9uYWwgYXJyaWJhIGRlbCBzdGF0dXM6IGVqLiBhbmltYWwgZW5cbiAqIENoZXNlZCwgcmVjZXRhIGVuIE1lYWxwbGFuKS4gQWduw7NzdGljbyBhbCBkb21pbmlvIOKAlCBjYWRhIGFwcCBkZWNsYXJhIGRlIHF1w6lcbiAqIGNhbXBvcyBkZSBgbWV0YWRhdGFgIHNhY2FyIG5vbWJyZS9pbWFnZW4geSBhIGTDs25kZSBuYXZlZ2FyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RSZXZpZXdFbnRpdHlIZXJvQ29uZmlnIHtcbiAgbGFiZWxLZXk6IHN0cmluZztcbiAgbmFtZUZpZWxkOiBzdHJpbmc7XG4gIGltYWdlRmllbGQ/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVySWNvbj86IHN0cmluZztcbiAgY2FuTmF2aWdhdGU6IChtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYm9vbGVhbjtcbiAgbmF2aWdhdGU6IChtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWcge1xuICAvKiogTmFtZXNwYWNlIGkxOG4gZG9uZGUgdml2ZW4gbGFzIGtleXMgKHN0YXR1c18qLCBhcHByb3ZlLCByZWplY3QsIHN1Ym1pdHRlciwgZmllbGRzLCBjb21tZW50c1RpdGxlLCBub0NvbW1lbnRzLCBzdWJtaXR0ZWRBdCwgc3RhdHVzVXBkYXRlZCwgc3RhdHVzRXJyb3IsIGVycm9yVGl0bGUsIG9mZmxpbmVUaXRsZSwgb2ZmbGluZUhpbnQsIHJldHJ5LCB2aWV3QW5pbWFsKS4gKi9cbiAgaTE4bk5hbWVzcGFjZTogc3RyaW5nO1xuICBlbnRpdHlIZXJvPzogUmVxdWVzdFJldmlld0VudGl0eUhlcm9Db25maWc7XG4gIC8qKiBTaSBlbCB1c3VhcmlvIGFjdHVhbCBwdWVkZSBhcHJvYmFyL3JlY2hhemFyIChlai4gcGVyc29uYS5pc1B1Ymxpc2hlcigpKS4gKi9cbiAgY2FuUmV2aWV3OiAoKSA9PiBib29sZWFuO1xuICAvKiogQ1RBIHBvc3QtYXByb2JhY2nDs24gcGFyYSBxdWllbiBOTyByZXZpc2EgKGVqLiBcInZlciByZWNldGFcIi9cInZlciBhbmltYWxcIikuICovXG4gIHZpZXdFbnRpdHlDdGFMYWJlbEtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYW5lbCBkZSByZXZpc2nDs24gZGUgdW5hIFJlcXVlc3QgZ2Vuw6lyaWNhIChBRFItMDYxLzA2Mik6IHN0YXR1cyArIGFjY2lvbmVzXG4gKiBhcHByb3ZlL3JlamVjdCArIGZpZWxkcyBkZWwgZm9ybXVsYXJpbyArIGNvbWVudGFyaW9zLiBDb25maWctZHJpdmVuLCBzaW5cbiAqIGNvbm9jaW1pZW50byBkZWwgZG9taW5pbyAoYWRvcHRpb24sIHJlY2lwZV92ZXJpZmljYXRpb24sIGV0Yy4pIOKAlCBjYWRhXG4gKiBjb25zdW1lciBpbnllY3RhIHN1IGBSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWdgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcmVxdWVzdC1yZXZpZXctcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50LCBFbXB0eVN0YXRlQ29tcG9uZW50LCBTa2VsZXRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza2VsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICc4OHB4JywgYm9yZGVyUmFkaXVzOiAnMTRweCcgfVwiIC8+XG4gICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICc2NHB4JywgYm9yZGVyUmFkaXVzOiAnMTJweCcgfVwiIC8+XG4gICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICc4MHB4JywgYm9yZGVyUmFkaXVzOiAnMTJweCcgfVwiIC8+XG4gICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMjBweCcsIGJvcmRlclJhZGl1czogJzEycHgnIH1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGxvYWRFcnJvcigpKSB7XG4gICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVycm9yU3RhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIGlmIChyZXEoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsXCI+XG4gICAgICAgICAgQGlmIChoZXJvQ29uZmlnKCkgJiYgaGVyb05hbWUoKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVudGl0eS1oZXJvXCIgKGNsaWNrKT1cIm9uSGVyb0NsaWNrKClcIiBbZGlzYWJsZWRdPVwiIWNhbk5hdmlnYXRlSGVybygpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRpdHktaGVyb19fbWVkaWFcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGhlcm9JbWFnZSgpICYmICFoZXJvSW1nRmFpbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJoZXJvSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaGVyb05hbWUoKSFcIlxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJoZXJvSW1nRmFpbGVkLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZW50aXR5LWhlcm9fX2ltZ1wiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnRpdHktaGVyb19fcGxhY2Vob2xkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57e1xuICAgICAgICAgICAgICAgICAgICBoZXJvQ29uZmlnKCkhLnBsYWNlaG9sZGVySWNvbiB8fCAn8J+ThCdcbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRpdHktaGVyb19fYm9keVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW50aXR5LWhlcm9fX2xhYmVsXCI+e3sgdChoZXJvQ29uZmlnKCkhLmxhYmVsS2V5KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVudGl0eS1oZXJvX19uYW1lXCI+e3sgaGVyb05hbWUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoY2FuTmF2aWdhdGVIZXJvKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVudGl0eS1oZXJvX19jaGV2cm9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+4oC6PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNhcmRcIiBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwic3RhdHVzU3R5bGUoKS5iZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jYXJkX190b3BcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXMtYmFkZ2VcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzdGF0dXNTdHlsZSgpLmJnXCIgW3N0eWxlLmNvbG9yXT1cInN0YXR1c1N0eWxlKCkuY29sb3JcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdzdGF0dXNfJyArIHJlcSgpIS5zdGF0dXMpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtaXR0ZWQtYXRcIj57eyB0KCdzdWJtaXR0ZWRBdCcpIH19OiB7eyBmb3JtYXREYXRlKHJlcSgpIS5jcmVhdGVkQXQpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnKCkuY2FuUmV2aWV3KCkgJiYgKHJlcSgpIS5zdGF0dXMgPT09ICdwZW5kaW5nJyB8fCByZXEoKSEuc3RhdHVzID09PSAnaW5fcmV2aWV3JykpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtcm93XCI+XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiAnYXBwcm92ZScsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHQoJ2FwcHJvdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogdHJhbnNpdGlvbmluZygpID8gJ1dPUktJTkcnIDogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0cmFuc2l0aW9uLmJpbmQodGhpcywgJ2FwcHJvdmVkJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogJ3JlamVjdCcsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHQoJ3JlamVjdCcpLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogdHJhbnNpdGlvbmluZygpID8gJ1dPUktJTkcnIDogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiB0cmFuc2l0aW9uLmJpbmQodGhpcywgJ3JlamVjdGVkJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAocmVxKCkhLnN1Ym1pdHRlcikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzZWN0aW9uX190aXRsZVwiPnt7IHQoJ3N1Ym1pdHRlcicpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0dGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJtaXR0ZXItYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgc3VibWl0dGVySW5pdGlhbCgpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Ym1pdHRlci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlcSgpIS5zdWJtaXR0ZXIhLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtaXR0ZXItbmFtZVwiPnt7IHJlcSgpIS5zdWJtaXR0ZXIhLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlcSgpIS5zdWJtaXR0ZXIhLmVtYWlsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VibWl0dGVyLWVtYWlsXCI+e3sgcmVxKCkhLnN1Ym1pdHRlciEuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlcSgpIS5zdWJtaXR0ZXIhLnBob25lKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VibWl0dGVyLWVtYWlsXCI+e3sgcmVxKCkhLnN1Ym1pdHRlciEucGhvbmUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChmaWVsZEVudHJpZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvbl9fdGl0bGVcIj57eyB0KCdmaWVsZHMnKSB9fTwvcD5cbiAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgZmllbGRFbnRyaWVzKCk7IHRyYWNrIGVudHJ5LmtleSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtcm93X19sYWJlbFwiPnt7IGVudHJ5LmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtcm93X192YWx1ZVwiPnt7IGVudHJ5LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgIWNvbmZpZygpLmNhblJldmlldygpICYmIHJlcSgpIS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgJiYgY2FuTmF2aWdhdGVIZXJvKCkgJiYgY29uZmlnKCkudmlld0VudGl0eUN0YUxhYmVsS2V5XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHRva2VuOiAndmlldy1lbnRpdHknLFxuICAgICAgICAgICAgICAgIHRleHQ6IHQoY29uZmlnKCkudmlld0VudGl0eUN0YUxhYmVsS2V5ISksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IG9uSGVyb0NsaWNrLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJzZWN0aW9uX190aXRsZVwiPnt7IHQoJ2NvbW1lbnRzVGl0bGUnKSB9fTwvcD5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ0NvbW1lbnRzKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tcGFkXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICc0OHB4JywgYm9yZGVyUmFkaXVzOiAnOHB4JyB9XCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChjb21tZW50cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5vLWNvbW1lbnRzXCI+e3sgdCgnbm9Db21tZW50cycpIH19PC9wPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb21tZW50cygpOyB0cmFjayBjLmNvbW1lbnRJZCkge1xuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY29tbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYXV0aG9ySW5pdGlhbChjKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudF9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tbWVudF9fYXV0aG9yXCI+e3sgYy5hdXRob3IubmFtZSB8fCBjLmF1dGhvci5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tbWVudF9fZGF0ZVwiPnt7IHJlbGF0aXZlVGltZShjLmNyZWF0ZWRBdCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb21tZW50X19ib2R5XCI+e3sgYy5ib2R5IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG4gICAgICAuc2tlbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5za2VsIHZhbC1za2VsZXRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLmRldGFpbCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgIH1cblxuICAgICAgLmVudGl0eS1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvOmRpc2FibGVkIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvX19tZWRpYSB7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVyb19faW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICB9XG4gICAgICAuZW50aXR5LWhlcm9fX3BsYWNlaG9sZGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjYyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVyb19fYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuZW50aXR5LWhlcm9fX2xhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM2MzY0NjkpO1xuICAgICAgfVxuICAgICAgLmVudGl0eS1oZXJvX19uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5lbnRpdHktaGVyb19fY2hldnJvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQ7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnN0YXR1cy1jYXJkX190b3Age1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMtYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG4gICAgICAuc3VibWl0dGVkLWF0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyay1zaGFkZSwgIzFlMjAyMyk7XG4gICAgICB9XG4gICAgICAuYWN0aW9ucy1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uX190aXRsZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyay1zaGFkZSwgIzFlMjAyMyk7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24tcGFkIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgfVxuXG4gICAgICAuc3VibWl0dGVyLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgfVxuICAgICAgLnN1Ym1pdHRlci1hdmF0YXIge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzEzMTMxKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuc3VibWl0dGVyLWluZm8ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnN1Ym1pdHRlci1uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAuc3VibWl0dGVyLWVtYWlsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzYzNjQ2OSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuXG4gICAgICAuZmllbGQtcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDExcHggMTZweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuICAgICAgLmZpZWxkLXJvdzpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5maWVsZC1yb3dfX2xhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM2MzY0NjkpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIH1cbiAgICAgIC5maWVsZC1yb3dfX3ZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICAgIH1cblxuICAgICAgLm5vLWNvbW1lbnRzIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuY29tbWVudHMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgICAuY29tbWVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuICAgICAgLmNvbW1lbnQ6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgICAuY29tbWVudF9fYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzMxMzEzMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmNvbW1lbnRfX2NvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgfVxuICAgICAgLmNvbW1lbnRfX2hlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5jb21tZW50X19hdXRob3Ige1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLmNvbW1lbnRfX2RhdGUge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG4gICAgICAuY29tbWVudF9fYm9keSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXZpZXdQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVxdWVzdHMgPSBpbmplY3QoUmVxdWVzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcmVhZG9ubHkgcmVxdWVzdElkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWc+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGVkID0gb3V0cHV0PEFwcFJlcXVlc3Q+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVxID0gc2lnbmFsPEFwcFJlcXVlc3QgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tbWVudHMgPSBzaWduYWw8UmVxdWVzdENvbW1lbnRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nQ29tbWVudHMgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2l0aW9uaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSByZXEgPSB0aGlzLl9yZXEuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsb2FkaW5nID0gdGhpcy5fbG9hZGluZy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGxvYWRFcnJvciA9IHRoaXMuX2xvYWRFcnJvci5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGNvbW1lbnRzID0gdGhpcy5fY29tbWVudHMuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBsb2FkaW5nQ29tbWVudHMgPSB0aGlzLl9sb2FkaW5nQ29tbWVudHMuYXNSZWFkb25seSgpO1xuICByZWFkb25seSB0cmFuc2l0aW9uaW5nID0gdGhpcy5fdHJhbnNpdGlvbmluZy5hc1JlYWRvbmx5KCk7XG5cbiAgcmVhZG9ubHkgaGVyb0ltZ0ZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgaGVyb0NvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZW50aXR5SGVybyk7XG4gIHJlYWRvbmx5IHN0YXR1c1N0eWxlID0gY29tcHV0ZWQoKCkgPT4gU1RBVFVTX1NUWUxFW3RoaXMuX3JlcSgpPy5zdGF0dXMgPz8gJyddID8/IFNUQVRVU19TVFlMRVsncGVuZGluZyddKTtcbiAgcmVhZG9ubHkgaGVyb05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaGVybyA9IHRoaXMuaGVyb0NvbmZpZygpO1xuICAgIGlmICghaGVybykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5fcmVxKCk/Lm1ldGFkYXRhPy5baGVyby5uYW1lRmllbGRdIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGhlcm9JbWFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBoZXJvID0gdGhpcy5oZXJvQ29uZmlnKCk7XG4gICAgaWYgKCFoZXJvPy5pbWFnZUZpZWxkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLl9yZXEoKT8ubWV0YWRhdGE/LltoZXJvLmltYWdlRmllbGRdIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhbk5hdmlnYXRlSGVybyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBoZXJvID0gdGhpcy5oZXJvQ29uZmlnKCk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLl9yZXEoKT8ubWV0YWRhdGE7XG4gICAgaWYgKCFoZXJvIHx8ICFtZXRhZGF0YSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBoZXJvLmNhbk5hdmlnYXRlKG1ldGFkYXRhKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHN1Ym1pdHRlckluaXRpYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMuX3JlcSgpPy5zdWJtaXR0ZXI7XG4gICAgaWYgKCFzKSByZXR1cm4gJz8nO1xuICAgIHJldHVybiAoKHMubmFtZSB8fCBzLmVtYWlsKSA/PyAnPycpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgZmllbGRFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuX3JlcSgpPy5maWVsZHMgPz8ge307XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGZpZWxkcylcbiAgICAgIC5maWx0ZXIoKFssIHZdKSA9PiB2ICE9IG51bGwgJiYgdiAhPT0gJycpXG4gICAgICAubWFwKChbaywgdl0pID0+ICh7IGtleTogaywgdmFsdWU6IFN0cmluZyh2KSB9KSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMuX2xvYWRFcnJvcigpO1xuICAgIGNvbnN0IG1zZyA9IChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVyciA/PyAnJykpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgaXNPZmZsaW5lID0gbXNnLmluY2x1ZGVzKCduZXR3b3JrJykgfHwgbXNnLmluY2x1ZGVzKCdvZmZsaW5lJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhcmlhbnQ6ICdlcnJvcicsXG4gICAgICB0aXRsZTogaXNPZmZsaW5lID8gdGhpcy50KCdvZmZsaW5lVGl0bGUnKSA6IHRoaXMudCgnZXJyb3JUaXRsZScpLFxuICAgICAgZGVzY3JpcHRpb246IGlzT2ZmbGluZSA/IHRoaXMudCgnb2ZmbGluZUhpbnQnKSA6ICcnLFxuICAgICAgY3RhOiB7IGxhYmVsOiB0aGlzLnQoJ3JldHJ5JyksIGhhbmRsZXI6ICgpID0+IHZvaWQgdGhpcy5sb2FkKCkgfSxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnJlcXVlc3RJZCgpO1xuICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuX2xvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmVxdWVzdHMuZ2V0UmVxdWVzdChpZCkpO1xuICAgICAgdGhpcy5fcmVxLnNldChyZXEpO1xuICAgICAgdGhpcy5sb2FkZWQuZW1pdChyZXEpO1xuICAgICAgdGhpcy5zdWJzY3JpYmVDb21tZW50cyhyZXEuYXBwSWQsIHJlcS5vcmdJZCwgaWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fbG9hZEVycm9yLnNldChlcnIpO1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAncmVxdWVzdC1yZXZpZXctcGFuZWwubG9hZCcsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnZXJyb3JUaXRsZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVDb21tZW50cyhhcHBJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCByZXF1ZXN0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRpbmdDb21tZW50cy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXF1ZXN0c1xuICAgICAgLndhdGNoQ29tbWVudHMoYXBwSWQsIG9yZ0lkLCByZXF1ZXN0SWQpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBjb21tZW50cyA9PiB7XG4gICAgICAgICAgdGhpcy5fY29tbWVudHMuc2V0KGNvbW1lbnRzKTtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nQ29tbWVudHMuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAvLyBjb21lbnRhcmlvcyBzb24gYmVzdC1lZmZvcnQ7IHNpIGVsIGxpc3RlbmVyIGZhbGxhLCBzaWxlbmNpYXIgeSBvY3VsdGFyIHNwaW5uZXJcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nQ29tbWVudHMuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNpdGlvbihzdGF0dXM6ICdhcHByb3ZlZCcgfCAncmVqZWN0ZWQnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxID0gdGhpcy5fcmVxKCk7XG4gICAgaWYgKCFyZXEgfHwgdGhpcy5fdHJhbnNpdGlvbmluZygpKSByZXR1cm47XG4gICAgdGhpcy5fdHJhbnNpdGlvbmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmVxdWVzdHMudHJhbnNpdGlvbihyZXEuaWQsIHsgc3RhdHVzIH0pKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdzdGF0dXNVcGRhdGVkJyksIGR1cmF0aW9uOiAyNTAwLCBjb2xvcjogJ2RhcmsnLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyZXF1ZXN0LXJldmlldy1wYW5lbC50cmFuc2l0aW9uJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdzdGF0dXNFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl90cmFuc2l0aW9uaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb25IZXJvQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgaGVybyA9IHRoaXMuaGVyb0NvbmZpZygpO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5fcmVxKCk/Lm1ldGFkYXRhO1xuICAgIGlmIChoZXJvICYmIG1ldGFkYXRhKSBoZXJvLm5hdmlnYXRlKG1ldGFkYXRhKTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoaXNvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaXNvKSByZXR1cm4gJyc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShpc28pLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmkxOG4ubGFuZygpID09PSAnZXMnID8gJ2VzLUNMJyA6ICdlbi1VUycsIHtcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBpc287XG4gICAgfVxuICB9XG5cbiAgYXV0aG9ySW5pdGlhbChjOiBSZXF1ZXN0Q29tbWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoYy5hdXRob3IubmFtZSB8fCBjLmF1dGhvci5lbWFpbCkgPz8gJz8nKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHJlbGF0aXZlVGltZShpc286IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFpc28pIHJldHVybiAnJztcbiAgICBjb25zdCBkaWZmTXMgPSBEYXRlLm5vdygpIC0gbmV3IERhdGUoaXNvKS5nZXRUaW1lKCk7XG4gICAgaWYgKE51bWJlci5pc05hTihkaWZmTXMpKSByZXR1cm4gaXNvO1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDYwMDAwKTtcbiAgICBpZiAobWlucyA8IDEpIHJldHVybiBsYW5nID09PSAnZXMnID8gJ2hhY2UgdW4gbW9tZW50bycgOiAnanVzdCBub3cnO1xuICAgIGlmIChtaW5zIDwgNjApIHJldHVybiBsYW5nID09PSAnZXMnID8gYGhhY2UgJHttaW5zfSBtaW5gIDogYCR7bWluc31tIGFnb2A7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnMgLyA2MCk7XG4gICAgaWYgKGhvdXJzIDwgMjQpIHJldHVybiBsYW5nID09PSAnZXMnID8gYGhhY2UgJHtob3Vyc30gaGAgOiBgJHtob3Vyc31oIGFnb2A7XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaG91cnMgLyAyNCk7XG4gICAgaWYgKGRheXMgPCA3KSByZXR1cm4gbGFuZyA9PT0gJ2VzJyA/IGBoYWNlICR7ZGF5c30gZGlhJHtkYXlzID4gMSA/ICdzJyA6ICcnfWAgOiBgJHtkYXlzfWQgYWdvYDtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKGlzbyk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
@@ -399,7 +399,7 @@ export class RoleManagerComponent {
399
399
  </div>
400
400
  </div>
401
401
  }
402
- `, isInline: true, styles: [":host{display:block}.rm-loading{display:flex;justify-content:center;padding:2rem 0}.rm-section{margin-bottom:2rem}.rm-section__header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.rm-section__count{font-size:.75rem;font-weight:600;background:var(--ion-color-medium-tint, #eee);color:var(--ion-color-medium-shade, #555);border-radius:9999px;padding:2px 8px}.rm-add-btn{margin-left:auto}.rm-list{border-radius:12px;overflow:hidden;background:var(--ion-card-background, var(--ion-background-color));box-shadow:0 1px 4px #0000000f}.rm-member-item,.rm-role-item{--padding-start: 1rem;--inner-padding-end: .5rem}.rm-member-icon,.rm-role-icon{color:var(--ion-color-medium, #92949c);font-size:1.25rem}.rm-member-name,.rm-role-name{font-weight:600;font-size:.9375rem;color:var(--ion-text-color);display:flex;align-items:center;gap:.375rem;flex-wrap:wrap}.rm-member-email,.rm-role-desc,.rm-role-perms{font-size:.8125rem;color:var(--ion-color-medium, #92949c);display:block;margin-top:2px}.rm-member-roles{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.rm-no-role{font-size:.8125rem;color:var(--ion-color-medium, #92949c)}.rm-member-actions,.rm-role-actions{display:flex;align-items:center;gap:2px}.rm-role-form{background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:12px;padding:1rem;margin-bottom:.75rem}.rm-form-field{margin-bottom:.75rem}.rm-label{display:block;font-size:.8125rem;font-weight:600;color:var(--ion-color-medium-shade, #555);margin-bottom:4px}.rm-input{width:100%;padding:.5rem .75rem;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:8px;font-size:.9375rem;color:var(--ion-text-color);background:var(--ion-background-color);box-sizing:border-box;outline:none}.rm-input:focus{border-color:var(--ion-color-primary, #3880ff)}.rm-form-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.rm-role-overlay{position:fixed;inset:0;background:#00000059;z-index:500;display:flex;align-items:flex-end;justify-content:center}.rm-role-sheet{background:var(--ion-card-background, var(--ion-background-color));border-radius:16px 16px 0 0;padding:1.25rem 1rem 1rem;width:100%;max-width:480px;max-height:70vh;overflow-y:auto}.rm-sheet-list{margin-top:.75rem;border-radius:12px;overflow:hidden}.rm-sheet-footer{margin-top:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { 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: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }] }); }
402
+ `, isInline: true, styles: [":host{display:block}.rm-loading{display:flex;justify-content:center;padding:2rem 0}.rm-section{margin-bottom:2rem}.rm-section__header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.rm-section__count{font-size:.75rem;font-weight:600;background:var(--ion-color-dark-tint, #eee);color:var(--ion-color-dark-shade, #555);border-radius:9999px;padding:2px 8px}.rm-add-btn{margin-left:auto}.rm-list{border-radius:12px;overflow:hidden;background:var(--ion-card-background, var(--ion-background-color));box-shadow:0 1px 4px #0000000f}.rm-member-item,.rm-role-item{--padding-start: 1rem;--inner-padding-end: .5rem}.rm-member-icon,.rm-role-icon{color:var(--ion-color-dark, #92949c);font-size:1.25rem}.rm-member-name,.rm-role-name{font-weight:600;font-size:.9375rem;color:var(--ion-text-color);display:flex;align-items:center;gap:.375rem;flex-wrap:wrap}.rm-member-email,.rm-role-desc,.rm-role-perms{font-size:.8125rem;color:var(--ion-color-dark, #92949c);display:block;margin-top:2px}.rm-member-roles{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.rm-no-role{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.rm-member-actions,.rm-role-actions{display:flex;align-items:center;gap:2px}.rm-role-form{background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:12px;padding:1rem;margin-bottom:.75rem}.rm-form-field{margin-bottom:.75rem}.rm-label{display:block;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #555);margin-bottom:4px}.rm-input{width:100%;padding:.5rem .75rem;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:8px;font-size:.9375rem;color:var(--ion-text-color);background:var(--ion-background-color);box-sizing:border-box;outline:none}.rm-input:focus{border-color:var(--ion-color-primary, #3880ff)}.rm-form-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.rm-role-overlay{position:fixed;inset:0;background:#00000059;z-index:500;display:flex;align-items:flex-end;justify-content:center}.rm-role-sheet{background:var(--ion-card-background, var(--ion-background-color));border-radius:16px 16px 0 0;padding:1.25rem 1rem 1rem;width:100%;max-width:480px;max-height:70vh;overflow-y:auto}.rm-sheet-list{margin-top:.75rem;border-radius:12px;overflow:hidden}.rm-sheet-footer{margin-top:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { 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: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }] }); }
403
403
  }
404
404
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RoleManagerComponent, decorators: [{
405
405
  type: Component,
@@ -605,8 +605,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
605
605
  </div>
606
606
  </div>
607
607
  }
608
- `, styles: [":host{display:block}.rm-loading{display:flex;justify-content:center;padding:2rem 0}.rm-section{margin-bottom:2rem}.rm-section__header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.rm-section__count{font-size:.75rem;font-weight:600;background:var(--ion-color-medium-tint, #eee);color:var(--ion-color-medium-shade, #555);border-radius:9999px;padding:2px 8px}.rm-add-btn{margin-left:auto}.rm-list{border-radius:12px;overflow:hidden;background:var(--ion-card-background, var(--ion-background-color));box-shadow:0 1px 4px #0000000f}.rm-member-item,.rm-role-item{--padding-start: 1rem;--inner-padding-end: .5rem}.rm-member-icon,.rm-role-icon{color:var(--ion-color-medium, #92949c);font-size:1.25rem}.rm-member-name,.rm-role-name{font-weight:600;font-size:.9375rem;color:var(--ion-text-color);display:flex;align-items:center;gap:.375rem;flex-wrap:wrap}.rm-member-email,.rm-role-desc,.rm-role-perms{font-size:.8125rem;color:var(--ion-color-medium, #92949c);display:block;margin-top:2px}.rm-member-roles{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.rm-no-role{font-size:.8125rem;color:var(--ion-color-medium, #92949c)}.rm-member-actions,.rm-role-actions{display:flex;align-items:center;gap:2px}.rm-role-form{background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:12px;padding:1rem;margin-bottom:.75rem}.rm-form-field{margin-bottom:.75rem}.rm-label{display:block;font-size:.8125rem;font-weight:600;color:var(--ion-color-medium-shade, #555);margin-bottom:4px}.rm-input{width:100%;padding:.5rem .75rem;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:8px;font-size:.9375rem;color:var(--ion-text-color);background:var(--ion-background-color);box-sizing:border-box;outline:none}.rm-input:focus{border-color:var(--ion-color-primary, #3880ff)}.rm-form-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.rm-role-overlay{position:fixed;inset:0;background:#00000059;z-index:500;display:flex;align-items:flex-end;justify-content:center}.rm-role-sheet{background:var(--ion-card-background, var(--ion-background-color));border-radius:16px 16px 0 0;padding:1.25rem 1rem 1rem;width:100%;max-width:480px;max-height:70vh;overflow-y:auto}.rm-sheet-list{margin-top:.75rem;border-radius:12px;overflow:hidden}.rm-sheet-footer{margin-top:.5rem}\n"] }]
608
+ `, styles: [":host{display:block}.rm-loading{display:flex;justify-content:center;padding:2rem 0}.rm-section{margin-bottom:2rem}.rm-section__header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.rm-section__count{font-size:.75rem;font-weight:600;background:var(--ion-color-dark-tint, #eee);color:var(--ion-color-dark-shade, #555);border-radius:9999px;padding:2px 8px}.rm-add-btn{margin-left:auto}.rm-list{border-radius:12px;overflow:hidden;background:var(--ion-card-background, var(--ion-background-color));box-shadow:0 1px 4px #0000000f}.rm-member-item,.rm-role-item{--padding-start: 1rem;--inner-padding-end: .5rem}.rm-member-icon,.rm-role-icon{color:var(--ion-color-dark, #92949c);font-size:1.25rem}.rm-member-name,.rm-role-name{font-weight:600;font-size:.9375rem;color:var(--ion-text-color);display:flex;align-items:center;gap:.375rem;flex-wrap:wrap}.rm-member-email,.rm-role-desc,.rm-role-perms{font-size:.8125rem;color:var(--ion-color-dark, #92949c);display:block;margin-top:2px}.rm-member-roles{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.rm-no-role{font-size:.8125rem;color:var(--ion-color-dark, #92949c)}.rm-member-actions,.rm-role-actions{display:flex;align-items:center;gap:2px}.rm-role-form{background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:12px;padding:1rem;margin-bottom:.75rem}.rm-form-field{margin-bottom:.75rem}.rm-label{display:block;font-size:.8125rem;font-weight:600;color:var(--ion-color-dark-shade, #555);margin-bottom:4px}.rm-input{width:100%;padding:.5rem .75rem;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:8px;font-size:.9375rem;color:var(--ion-text-color);background:var(--ion-background-color);box-sizing:border-box;outline:none}.rm-input:focus{border-color:var(--ion-color-primary, #3880ff)}.rm-form-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.rm-role-overlay{position:fixed;inset:0;background:#00000059;z-index:500;display:flex;align-items:flex-end;justify-content:center}.rm-role-sheet{background:var(--ion-card-background, var(--ion-background-color));border-radius:16px 16px 0 0;padding:1.25rem 1rem 1rem;width:100%;max-width:480px;max-height:70vh;overflow-y:auto}.rm-sheet-list{margin-top:.75rem;border-radius:12px;overflow:hidden}.rm-sheet-footer{margin-top:.5rem}\n"] }]
609
609
  }], ctorParameters: () => [], propDecorators: { config: [{
610
610
  type: Input
611
611
  }] } });
612
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcm9sZS1tYW5hZ2VyL3JvbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFt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Ozs7Ozs7Ozs7OztHQTBMVDt3REE2S1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIElvbkJhZGdlLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Ob3RlLFxuICBJb25TcGlubmVyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxuICBwZXJzb25PdXRsaW5lLFxuICBzaGllbGRDaGVja21hcmtPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25VcE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmJhY1NlcnZpY2UsIFJiYWNPcmdNZW1iZXIsIFJiYWNSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmJhYy9yYmFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFJPTEVfTUFOQUdFUl9JMThOIH0gZnJvbSAnLi9yb2xlLW1hbmFnZXIuaTE4bic7XG5pbXBvcnQgeyBSb2xlTWFuYWdlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbiAgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uVXBPdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTlMgPSAnU2V0dGluZ3MuUm9sZU1hbmFnZXInO1xuXG5pbnRlcmZhY2UgUm9sZUZvcm1TdGF0ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIGVkaXRpbmc6IFJiYWNSb2xlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBgdmFsLXJvbGUtbWFuYWdlcmAg4oCUIGdlc3Rpw7NuIFJCQUMgZGUgbWllbWJyb3MgeSByb2xlcyBkZSBvcmdhbml6YWNpw7NuLlxuICpcbiAqIE11ZXN0cmEgZG9zIHNlY2Npb25lczpcbiAqIDEuICoqTWllbWJyb3MqKiDigJQgbGlzdGEgZGUgbWllbWJyb3MgY29uIHJvbGVzIGFzaWduYWRvcy4gUGVybWl0ZSBhc2lnbmFyIG9cbiAqICAgIHF1aXRhciB1biByb2wgYSBjYWRhIG1pZW1icm8gKHJlcXVpZXJlIGByYmFjOm1hbmFnZWApLlxuICogMi4gKipSb2xlcyoqIOKAlCBsaXN0YSBkZSByb2xlcyBjdXN0b20gZGUgbGEgb3JnLiBQZXJtaXRlIGNyZWFyLCBlZGl0YXIgeVxuICogICAgZWxpbWluYXIgcm9sZXMgcGVyc29uYWxpemFkb3MuXG4gKlxuICogTGVlIGVsIGBvcmdJZGAgYWN0aXZvIGRlbCBgQXV0aFNlcnZpY2VgLiBSZXF1aWVyZSBxdWUgZWwgdXN1YXJpbyB0ZW5nYVxuICogYHJiYWM6bWFuYWdlYCAoZWwgYmFja2VuZCBsbyB2ZXJpZmljYTsgdW4gNDAzIHNlIHRyYWR1Y2UgYSB1biBtZW5zYWplIGRlIGVycm9yKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJvbGUtbWFuYWdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkxpc3QsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBJb25CYWRnZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25TcGlubmVyLFxuICAgIElvbk5vdGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJybS1sb2FkaW5nXCI+XG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICAgIHRpdGxlOiB0KCdlcnJvckxvYWQnKSxcbiAgICAgICAgICBhY3Rpb246IHsgbGFiZWw6IHQoJ3JldHJ5JyksIGhhbmRsZXI6IHJlbG9hZC5iaW5kKHRoaXMpLCBsb2FkaW5nOiBsb2FkaW5nKCkgfSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSDilIDilIAgU2VjY2nDs24gTWllbWJyb3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgICAgQGlmIChjZmcoKS5zaG93TWVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZW1iZXJzVGl0bGUnKSwgc2l6ZTogJ21lZGl1bScsIGJvbGQ6IHRydWUsIGNvbG9yOiAnJyB9XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tc2VjdGlvbl9fY291bnRcIj57eyBtZW1iZXJzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgQGlmIChtZW1iZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJ7IHZhcmlhbnQ6ICdlbXB0eScsIHRpdGxlOiB0KCdub01lbWJlcnMnKSB9XCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpb24tbGlzdCBjbGFzcz1cInJtLWxpc3RcIiBsaW5lcz1cImZ1bGxcIj5cbiAgICAgICAgICAgICAgQGZvciAobWVtYmVyIG9mIG1lbWJlcnMoKTsgdHJhY2sgbWVtYmVyLnVzZXJJZCkge1xuICAgICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInJtLW1lbWJlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJybS1tZW1iZXItaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tbWVtYmVyLW5hbWVcIj57eyBtZW1iZXIubmFtZSB8fCBtZW1iZXIuZW1haWwgfHwgbWVtYmVyLnVzZXJJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lbWJlci5uYW1lICYmIG1lbWJlci5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLW1lbWJlci1lbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLW1lbWJlci1yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgbWVtYmVyLnJvbGVzOyB0cmFjayByb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpc1N5c3RlbVJvbGUocm9sZSkgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVtYmVyLnJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJybS1uby1yb2xlXCI+e3sgdCgnbm9Sb2xlQXNzaWduZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLW1lbWJlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcilcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnYXNzaWduUm9sZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIOKUgOKUgCBTZWNjacOzbiBSb2xlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgICBAaWYgKGNmZygpLnNob3dSb2xlTWFuYWdlbWVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdyb2xlc1RpdGxlJyksIHNpemU6ICdtZWRpdW0nLCBib2xkOiB0cnVlLCBjb2xvcjogJycgfVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXNlY3Rpb25fX2NvdW50XCI+e3sgYWxsUm9sZXMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInJtLWFkZC1idG5cIiAoY2xpY2spPVwib3Blbk5ld1JvbGUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAge3sgdCgnYWRkUm9sZScpIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICA8IS0tIOKUgOKUgCBGb3JtdWxhcmlvIGlubGluZSBkZSBjcmVhci9lZGl0YXIgcm9sIOKUgOKUgOKUgOKUgCAtLT5cbiAgICAgICAgICBAaWYgKHJvbGVGb3JtKCkub3Blbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtZm9ybVwiPlxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZVJvbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJybS1sYWJlbFwiPnt7IHQoJ3JvbGVOYW1lJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwidCgncm9sZU5hbWUnKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJtLWxhYmVsXCI+e3sgdCgncm9sZURlc2NyaXB0aW9uJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3JvbGVEZXNjcmlwdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IHNhdmluZygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzYXZpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdzYXZlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cImNsb3NlUm9sZUZvcm0oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGFsbFJvbGVzKCkubGVuZ3RoID09PSAwICYmICFyb2xlRm9ybSgpLm9wZW4pIHtcbiAgICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cInsgdmFyaWFudDogJ2VtcHR5JywgdGl0bGU6IHQoJ25vUm9sZXMnKSB9XCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8aW9uLWxpc3QgY2xhc3M9XCJybS1saXN0XCIgbGluZXM9XCJmdWxsXCI+XG4gICAgICAgICAgICBAZm9yIChyb2xlIG9mIGFsbFJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIGNsYXNzPVwicm0tcm9sZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzaGllbGQtY2hlY2ttYXJrLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiBjbGFzcz1cInJtLXJvbGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5pc1N5c3RlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCI+e3sgdCgnc3lzdGVtQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwic2Vjb25kYXJ5XCI+e3sgdCgnY3VzdG9tQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJybS1yb2xlLWRlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLXJvbGUtcGVybXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5wZXJtaXNzaW9ucz8ubGVuZ3RoID8/IDAgfX0ge3sgdCgncGVybWlzc2lvbnMnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKCFyb2xlLmlzU3lzdGVtKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLXJvbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib3BlbkVkaXRSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjcmVhdGUtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1EZWxldGVSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSDilIDilIAgUm9sZSBzZWxlY3RvciBzaGVldCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgQGlmIChyb2xlU2VsZWN0b3JNZW1iZXIoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtb3ZlcmxheVwiIChjbGljayk9XCJjbG9zZVJvbGVTZWxlY3RvcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLXNoZWV0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnc2VsZWN0Um9sZScpLCBzaXplOiAnbWVkaXVtJywgYm9sZDogdHJ1ZSwgY29sb3I6ICcnIH1cIiAvPlxuICAgICAgICAgIDxpb24tbGlzdCBsaW5lcz1cImZ1bGxcIiBjbGFzcz1cInJtLXNoZWV0LWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgYWxsUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICA8aW9uLWl0ZW0gYnV0dG9uIGRldGFpbD1cImZhbHNlXCIgKGNsaWNrKT1cIm9uUm9sZVNlbGVjdGVkKHJvbGVTZWxlY3Rvck1lbWJlcigpISwgcm9sZS5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHJvbGUubmFtZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIEBpZiAocm9sZVNlbGVjdG9yTWVtYmVyKCkhLnJvbGVzLmluY2x1ZGVzKHJvbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCIgc2xvdD1cImVuZFwiPuKckzwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1zaGVldC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiY2xvc2VSb2xlU2VsZWN0b3IoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnJtLWxvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMnJlbSAwO1xuICAgICAgfVxuXG4gICAgICAucm0tc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1zZWN0aW9uX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLXNlY3Rpb25fX2NvdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXRpbnQsICNlZWUpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzU1NSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgICAgcGFkZGluZzogMnB4IDhweDtcbiAgICAgIH1cblxuICAgICAgLnJtLWFkZC1idG4ge1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cblxuICAgICAgLnJtLWxpc3Qge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1pdGVtLFxuICAgICAgLnJtLXJvbGUtaXRlbSB7XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMXJlbTtcbiAgICAgICAgLS1pbm5lci1wYWRkaW5nLWVuZDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWljb24sXG4gICAgICAucm0tcm9sZS1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItbmFtZSxcbiAgICAgIC5ybS1yb2xlLW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWVtYWlsLFxuICAgICAgLnJtLXJvbGUtZGVzYyxcbiAgICAgIC5ybS1yb2xlLXBlcm1zIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1yb2xlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIH1cblxuICAgICAgLnJtLW5vLXJvbGUge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWFjdGlvbnMsXG4gICAgICAucm0tcm9sZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG5cbiAgICAgIC8qIOKUgOKUgCBSb2xlIGZvcm0g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG4gICAgICAucm0tcm9sZS1mb3JtIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLWZvcm0tZmllbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAucm0tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNTU1KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuXG4gICAgICAucm0taW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5ybS1pbnB1dDpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICMzODgwZmYpO1xuICAgICAgfVxuXG4gICAgICAucm0tZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLyog4pSA4pSAIFJvbGUgc2VsZWN0b3Igb3ZlcmxheSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgICAgIC5ybS1yb2xlLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xuICAgICAgICB6LWluZGV4OiA1MDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5ybS1yb2xlLXNoZWV0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbSAxcmVtIDFyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAucm0tc2hlZXQtbGlzdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5ybS1zaGVldC1mb290ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZU1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc/OiBSb2xlTWFuYWdlckNvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJiYWMgPSBpbmplY3QoUmJhY1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9yZyA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nID0gaW5qZWN0KFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybSA9IGluamVjdChDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWc/LmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OUyk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWVtYmVycyA9IHNpZ25hbDxSYmFjT3JnTWVtYmVyW10+KFtdKTtcbiAgcmVhZG9ubHkgYWxsUm9sZXMgPSBzaWduYWw8UmJhY1JvbGVbXT4oW10pO1xuICByZWFkb25seSBwZW5kaW5nTWVtYmVyID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlU2VsZWN0b3JNZW1iZXIgPSBzaWduYWw8UmJhY09yZ01lbWJlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlRm9ybSA9IHNpZ25hbDxSb2xlRm9ybVN0YXRlPih7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICB9KTtcblxuICByZWFkb25seSBjZmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZyA/PyB7fSk7XG5cbiAgcHJpdmF0ZSBnZXQgb3JnSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoLnVzZXIoKT8uYWN0aXZlT3JnID8/ICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSBERUZBVUxUX05TO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShucykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQobnMsIFJPTEVfTUFOQUdFUl9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucygpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW21lbWJlcnNSZXMsIHJvbGVzUmVzXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBmb3JrSm9pbihbdGhpcy5yYmFjLmdldE9yZ01lbWJlcnMob3JnSWQsIHsgbGltaXQ6IDUwIH0pLCB0aGlzLnJiYWMubGlzdFJvbGVzKG9yZ0lkLCB7IGxpbWl0OiAxMDAgfSldKVxuICAgICAgKTtcbiAgICAgIHRoaXMubWVtYmVycy5zZXQobWVtYmVyc1Jlcy5tZW1iZXJzKTtcbiAgICAgIHRoaXMuYWxsUm9sZXMuc2V0KHJvbGVzUmVzLnJvbGVzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9hZEVycm9yLnNldChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIGxhYmVsIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxSb2xlcygpLmZpbmQociA9PiByLm5hbWUgPT09IHJvbGVOYW1lKTtcbiAgICByZXR1cm4gZm91bmQgPyBmb3VuZC5uYW1lIDogcm9sZU5hbWU7XG4gIH1cblxuICBpc1N5c3RlbVJvbGUocm9sZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbFJvbGVzKCkuZmluZChyID0+IHIubmFtZSA9PT0gcm9sZU5hbWUpPy5pc1N5c3RlbSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIHNlbGVjdG9yIChhc3NpZ24vcmV2b2tlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcjogUmJhY09yZ01lbWJlcik6IHZvaWQge1xuICAgIHRoaXMucm9sZVNlbGVjdG9yTWVtYmVyLnNldChtZW1iZXIpO1xuICB9XG5cbiAgY2xvc2VSb2xlU2VsZWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlU2VsZWN0b3JNZW1iZXIuc2V0KG51bGwpO1xuICB9XG5cbiAgYXN5bmMgb25Sb2xlU2VsZWN0ZWQobWVtYmVyOiBSYmFjT3JnTWVtYmVyLCByb2xlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZVJvbGVTZWxlY3RvcigpO1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5vcmdJZDtcbiAgICBjb25zdCBhbHJlYWR5SGFzID0gbWVtYmVyLnJvbGVzLmluY2x1ZGVzKHJvbGVOYW1lKTtcbiAgICB0aGlzLnBlbmRpbmdNZW1iZXIuc2V0KG1lbWJlci51c2VySWQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYWxyZWFkeUhhcykge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMucmV2b2tlUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlUmV2b2tlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnVwZGF0ZShsaXN0ID0+XG4gICAgICAgICAgbGlzdC5tYXAobSA9PiAobS51c2VySWQgPT09IG1lbWJlci51c2VySWQgPyB7IC4uLm0sIHJvbGVzOiBtLnJvbGVzLmZpbHRlcihyID0+IHIgIT09IHJvbGVOYW1lKSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuYXNzaWduUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlQXNzaWduZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIwMDAgfSk7XG4gICAgICAgIHRoaXMubWVtYmVycy51cGRhdGUobGlzdCA9PlxuICAgICAgICAgIGxpc3QubWFwKG0gPT4gKG0udXNlcklkID09PSBtZW1iZXIudXNlcklkID8geyAuLi5tLCByb2xlczogWy4uLm0ucm9sZXMsIHJvbGVOYW1lXSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuYXNzaWduUmV2b2tlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6IGFscmVhZHlIYXMgPyAnZXJyb3JSZXZva2UnIDogJ2Vycm9yQXNzaWduJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucygpLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucGVuZGluZ01lbWJlci5zZXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSAIFJvbGUgQ1JVRCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuTmV3Um9sZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IHRydWUsIGVkaXRpbmc6IG51bGwgfSk7XG4gIH1cblxuICBvcGVuRWRpdFJvbGUocm9sZTogUmJhY1JvbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IG5hbWU6IHJvbGUubmFtZSwgZGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24gPz8gJycgfSk7XG4gICAgdGhpcy5yb2xlRm9ybS5zZXQoeyBvcGVuOiB0cnVlLCBlZGl0aW5nOiByb2xlIH0pO1xuICB9XG5cbiAgY2xvc2VSb2xlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZVJvbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLnJvbGVGb3JtKCkuZWRpdGluZztcbiAgICBjb25zdCBuYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWUhO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy51cGRhdGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogZWRpdGluZy5pZCwgbmFtZSwgZGVzY3JpcHRpb24gfSkpO1xuICAgICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QubWFwKHIgPT4gKHIuaWQgPT09IGVkaXRpbmcuaWQgPyB1cGRhdGVkIDogcikpKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlVXBkYXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuY3JlYXRlUm9sZSh7IG9yZ0lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgcGVybWlzc2lvbnM6IFtdIH0pKTtcbiAgICAgICAgdGhpcy5hbGxSb2xlcy51cGRhdGUobGlzdCA9PiBbLi4ubGlzdCwgY3JlYXRlZF0pO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVDcmVhdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jbG9zZVJvbGVGb3JtKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuc2F2ZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2Vycm9yU2F2ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1EZWxldGVSb2xlKHJvbGU6IFJiYWNSb2xlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maXJtZWQgfSA9IGF3YWl0IHRoaXMuY29uZmlybS5jb25maXJtRGVzdHJ1Y3RpdmUoe1xuICAgICAgdGl0bGU6IHJvbGUubmFtZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnZGVsZXRlUm9sZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50KCdkZWxldGVSb2xlQ29uZmlybUJ0bicpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnSWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5kZWxldGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogcm9sZS5pZCB9KSk7XG4gICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKHIgPT4gci5pZCAhPT0gcm9sZS5pZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlRGVsZXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JvbGUtbWFuYWdlci5kZWxldGVSb2xlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdlcnJvckRlbGV0ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
612
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcm9sZS1tYW5hZ2VyL3JvbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFt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Ozs7Ozs7Ozs7OztHQTBMVDt3REE2S1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIElvbkJhZGdlLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Ob3RlLFxuICBJb25TcGlubmVyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxuICBwZXJzb25PdXRsaW5lLFxuICBzaGllbGRDaGVja21hcmtPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25VcE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmJhY1NlcnZpY2UsIFJiYWNPcmdNZW1iZXIsIFJiYWNSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmJhYy9yYmFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFJPTEVfTUFOQUdFUl9JMThOIH0gZnJvbSAnLi9yb2xlLW1hbmFnZXIuaTE4bic7XG5pbXBvcnQgeyBSb2xlTWFuYWdlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbiAgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uVXBPdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTlMgPSAnU2V0dGluZ3MuUm9sZU1hbmFnZXInO1xuXG5pbnRlcmZhY2UgUm9sZUZvcm1TdGF0ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIGVkaXRpbmc6IFJiYWNSb2xlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBgdmFsLXJvbGUtbWFuYWdlcmAg4oCUIGdlc3Rpw7NuIFJCQUMgZGUgbWllbWJyb3MgeSByb2xlcyBkZSBvcmdhbml6YWNpw7NuLlxuICpcbiAqIE11ZXN0cmEgZG9zIHNlY2Npb25lczpcbiAqIDEuICoqTWllbWJyb3MqKiDigJQgbGlzdGEgZGUgbWllbWJyb3MgY29uIHJvbGVzIGFzaWduYWRvcy4gUGVybWl0ZSBhc2lnbmFyIG9cbiAqICAgIHF1aXRhciB1biByb2wgYSBjYWRhIG1pZW1icm8gKHJlcXVpZXJlIGByYmFjOm1hbmFnZWApLlxuICogMi4gKipSb2xlcyoqIOKAlCBsaXN0YSBkZSByb2xlcyBjdXN0b20gZGUgbGEgb3JnLiBQZXJtaXRlIGNyZWFyLCBlZGl0YXIgeVxuICogICAgZWxpbWluYXIgcm9sZXMgcGVyc29uYWxpemFkb3MuXG4gKlxuICogTGVlIGVsIGBvcmdJZGAgYWN0aXZvIGRlbCBgQXV0aFNlcnZpY2VgLiBSZXF1aWVyZSBxdWUgZWwgdXN1YXJpbyB0ZW5nYVxuICogYHJiYWM6bWFuYWdlYCAoZWwgYmFja2VuZCBsbyB2ZXJpZmljYTsgdW4gNDAzIHNlIHRyYWR1Y2UgYSB1biBtZW5zYWplIGRlIGVycm9yKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJvbGUtbWFuYWdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkxpc3QsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBJb25CYWRnZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25TcGlubmVyLFxuICAgIElvbk5vdGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJybS1sb2FkaW5nXCI+XG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICAgIHRpdGxlOiB0KCdlcnJvckxvYWQnKSxcbiAgICAgICAgICBhY3Rpb246IHsgbGFiZWw6IHQoJ3JldHJ5JyksIGhhbmRsZXI6IHJlbG9hZC5iaW5kKHRoaXMpLCBsb2FkaW5nOiBsb2FkaW5nKCkgfSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSDilIDilIAgU2VjY2nDs24gTWllbWJyb3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgICAgQGlmIChjZmcoKS5zaG93TWVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZW1iZXJzVGl0bGUnKSwgc2l6ZTogJ21lZGl1bScsIGJvbGQ6IHRydWUsIGNvbG9yOiAnJyB9XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tc2VjdGlvbl9fY291bnRcIj57eyBtZW1iZXJzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgQGlmIChtZW1iZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJ7IHZhcmlhbnQ6ICdlbXB0eScsIHRpdGxlOiB0KCdub01lbWJlcnMnKSB9XCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpb24tbGlzdCBjbGFzcz1cInJtLWxpc3RcIiBsaW5lcz1cImZ1bGxcIj5cbiAgICAgICAgICAgICAgQGZvciAobWVtYmVyIG9mIG1lbWJlcnMoKTsgdHJhY2sgbWVtYmVyLnVzZXJJZCkge1xuICAgICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInJtLW1lbWJlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJybS1tZW1iZXItaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tbWVtYmVyLW5hbWVcIj57eyBtZW1iZXIubmFtZSB8fCBtZW1iZXIuZW1haWwgfHwgbWVtYmVyLnVzZXJJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lbWJlci5uYW1lICYmIG1lbWJlci5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLW1lbWJlci1lbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLW1lbWJlci1yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgbWVtYmVyLnJvbGVzOyB0cmFjayByb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpc1N5c3RlbVJvbGUocm9sZSkgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVtYmVyLnJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJybS1uby1yb2xlXCI+e3sgdCgnbm9Sb2xlQXNzaWduZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLW1lbWJlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcilcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnYXNzaWduUm9sZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIOKUgOKUgCBTZWNjacOzbiBSb2xlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgICBAaWYgKGNmZygpLnNob3dSb2xlTWFuYWdlbWVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdyb2xlc1RpdGxlJyksIHNpemU6ICdtZWRpdW0nLCBib2xkOiB0cnVlLCBjb2xvcjogJycgfVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXNlY3Rpb25fX2NvdW50XCI+e3sgYWxsUm9sZXMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInJtLWFkZC1idG5cIiAoY2xpY2spPVwib3Blbk5ld1JvbGUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAge3sgdCgnYWRkUm9sZScpIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICA8IS0tIOKUgOKUgCBGb3JtdWxhcmlvIGlubGluZSBkZSBjcmVhci9lZGl0YXIgcm9sIOKUgOKUgOKUgOKUgCAtLT5cbiAgICAgICAgICBAaWYgKHJvbGVGb3JtKCkub3Blbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtZm9ybVwiPlxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZVJvbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJybS1sYWJlbFwiPnt7IHQoJ3JvbGVOYW1lJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwidCgncm9sZU5hbWUnKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJtLWxhYmVsXCI+e3sgdCgncm9sZURlc2NyaXB0aW9uJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3JvbGVEZXNjcmlwdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IHNhdmluZygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzYXZpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdzYXZlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cImNsb3NlUm9sZUZvcm0oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGFsbFJvbGVzKCkubGVuZ3RoID09PSAwICYmICFyb2xlRm9ybSgpLm9wZW4pIHtcbiAgICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cInsgdmFyaWFudDogJ2VtcHR5JywgdGl0bGU6IHQoJ25vUm9sZXMnKSB9XCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8aW9uLWxpc3QgY2xhc3M9XCJybS1saXN0XCIgbGluZXM9XCJmdWxsXCI+XG4gICAgICAgICAgICBAZm9yIChyb2xlIG9mIGFsbFJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIGNsYXNzPVwicm0tcm9sZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzaGllbGQtY2hlY2ttYXJrLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiBjbGFzcz1cInJtLXJvbGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5pc1N5c3RlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCI+e3sgdCgnc3lzdGVtQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwic2Vjb25kYXJ5XCI+e3sgdCgnY3VzdG9tQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJybS1yb2xlLWRlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLXJvbGUtcGVybXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5wZXJtaXNzaW9ucz8ubGVuZ3RoID8/IDAgfX0ge3sgdCgncGVybWlzc2lvbnMnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKCFyb2xlLmlzU3lzdGVtKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLXJvbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib3BlbkVkaXRSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjcmVhdGUtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1EZWxldGVSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSDilIDilIAgUm9sZSBzZWxlY3RvciBzaGVldCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgQGlmIChyb2xlU2VsZWN0b3JNZW1iZXIoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtb3ZlcmxheVwiIChjbGljayk9XCJjbG9zZVJvbGVTZWxlY3RvcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLXNoZWV0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnc2VsZWN0Um9sZScpLCBzaXplOiAnbWVkaXVtJywgYm9sZDogdHJ1ZSwgY29sb3I6ICcnIH1cIiAvPlxuICAgICAgICAgIDxpb24tbGlzdCBsaW5lcz1cImZ1bGxcIiBjbGFzcz1cInJtLXNoZWV0LWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgYWxsUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICA8aW9uLWl0ZW0gYnV0dG9uIGRldGFpbD1cImZhbHNlXCIgKGNsaWNrKT1cIm9uUm9sZVNlbGVjdGVkKHJvbGVTZWxlY3Rvck1lbWJlcigpISwgcm9sZS5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHJvbGUubmFtZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIEBpZiAocm9sZVNlbGVjdG9yTWVtYmVyKCkhLnJvbGVzLmluY2x1ZGVzKHJvbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCIgc2xvdD1cImVuZFwiPuKckzwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1zaGVldC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiY2xvc2VSb2xlU2VsZWN0b3IoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnJtLWxvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMnJlbSAwO1xuICAgICAgfVxuXG4gICAgICAucm0tc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1zZWN0aW9uX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLXNlY3Rpb25fX2NvdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyay10aW50LCAjZWVlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjNTU1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgfVxuXG4gICAgICAucm0tYWRkLWJ0biB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAucm0tbGlzdCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWl0ZW0sXG4gICAgICAucm0tcm9sZS1pdGVtIHtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxcmVtO1xuICAgICAgICAtLWlubmVyLXBhZGRpbmctZW5kOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItaWNvbixcbiAgICAgIC5ybS1yb2xlLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItbmFtZSxcbiAgICAgIC5ybS1yb2xlLW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWVtYWlsLFxuICAgICAgLnJtLXJvbGUtZGVzYyxcbiAgICAgIC5ybS1yb2xlLXBlcm1zIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItcm9sZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1uby1yb2xlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItYWN0aW9ucyxcbiAgICAgIC5ybS1yb2xlLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cblxuICAgICAgLyog4pSA4pSAIFJvbGUgZm9ybSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgICAgIC5ybS1yb2xlLWZvcm0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAucm0tZm9ybS1maWVsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjNTU1KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuXG4gICAgICAucm0taW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5ybS1pbnB1dDpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICMzODgwZmYpO1xuICAgICAgfVxuXG4gICAgICAucm0tZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLyog4pSA4pSAIFJvbGUgc2VsZWN0b3Igb3ZlcmxheSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgICAgIC5ybS1yb2xlLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xuICAgICAgICB6LWluZGV4OiA1MDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5ybS1yb2xlLXNoZWV0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbSAxcmVtIDFyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAucm0tc2hlZXQtbGlzdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5ybS1zaGVldC1mb290ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZU1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc/OiBSb2xlTWFuYWdlckNvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJiYWMgPSBpbmplY3QoUmJhY1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9yZyA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nID0gaW5qZWN0KFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybSA9IGluamVjdChDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWc/LmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OUyk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWVtYmVycyA9IHNpZ25hbDxSYmFjT3JnTWVtYmVyW10+KFtdKTtcbiAgcmVhZG9ubHkgYWxsUm9sZXMgPSBzaWduYWw8UmJhY1JvbGVbXT4oW10pO1xuICByZWFkb25seSBwZW5kaW5nTWVtYmVyID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlU2VsZWN0b3JNZW1iZXIgPSBzaWduYWw8UmJhY09yZ01lbWJlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlRm9ybSA9IHNpZ25hbDxSb2xlRm9ybVN0YXRlPih7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICB9KTtcblxuICByZWFkb25seSBjZmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZyA/PyB7fSk7XG5cbiAgcHJpdmF0ZSBnZXQgb3JnSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoLnVzZXIoKT8uYWN0aXZlT3JnID8/ICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSBERUZBVUxUX05TO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShucykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQobnMsIFJPTEVfTUFOQUdFUl9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucygpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW21lbWJlcnNSZXMsIHJvbGVzUmVzXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBmb3JrSm9pbihbdGhpcy5yYmFjLmdldE9yZ01lbWJlcnMob3JnSWQsIHsgbGltaXQ6IDUwIH0pLCB0aGlzLnJiYWMubGlzdFJvbGVzKG9yZ0lkLCB7IGxpbWl0OiAxMDAgfSldKVxuICAgICAgKTtcbiAgICAgIHRoaXMubWVtYmVycy5zZXQobWVtYmVyc1Jlcy5tZW1iZXJzKTtcbiAgICAgIHRoaXMuYWxsUm9sZXMuc2V0KHJvbGVzUmVzLnJvbGVzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9hZEVycm9yLnNldChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIGxhYmVsIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxSb2xlcygpLmZpbmQociA9PiByLm5hbWUgPT09IHJvbGVOYW1lKTtcbiAgICByZXR1cm4gZm91bmQgPyBmb3VuZC5uYW1lIDogcm9sZU5hbWU7XG4gIH1cblxuICBpc1N5c3RlbVJvbGUocm9sZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbFJvbGVzKCkuZmluZChyID0+IHIubmFtZSA9PT0gcm9sZU5hbWUpPy5pc1N5c3RlbSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIHNlbGVjdG9yIChhc3NpZ24vcmV2b2tlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcjogUmJhY09yZ01lbWJlcik6IHZvaWQge1xuICAgIHRoaXMucm9sZVNlbGVjdG9yTWVtYmVyLnNldChtZW1iZXIpO1xuICB9XG5cbiAgY2xvc2VSb2xlU2VsZWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlU2VsZWN0b3JNZW1iZXIuc2V0KG51bGwpO1xuICB9XG5cbiAgYXN5bmMgb25Sb2xlU2VsZWN0ZWQobWVtYmVyOiBSYmFjT3JnTWVtYmVyLCByb2xlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZVJvbGVTZWxlY3RvcigpO1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5vcmdJZDtcbiAgICBjb25zdCBhbHJlYWR5SGFzID0gbWVtYmVyLnJvbGVzLmluY2x1ZGVzKHJvbGVOYW1lKTtcbiAgICB0aGlzLnBlbmRpbmdNZW1iZXIuc2V0KG1lbWJlci51c2VySWQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYWxyZWFkeUhhcykge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMucmV2b2tlUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlUmV2b2tlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnVwZGF0ZShsaXN0ID0+XG4gICAgICAgICAgbGlzdC5tYXAobSA9PiAobS51c2VySWQgPT09IG1lbWJlci51c2VySWQgPyB7IC4uLm0sIHJvbGVzOiBtLnJvbGVzLmZpbHRlcihyID0+IHIgIT09IHJvbGVOYW1lKSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuYXNzaWduUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlQXNzaWduZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIwMDAgfSk7XG4gICAgICAgIHRoaXMubWVtYmVycy51cGRhdGUobGlzdCA9PlxuICAgICAgICAgIGxpc3QubWFwKG0gPT4gKG0udXNlcklkID09PSBtZW1iZXIudXNlcklkID8geyAuLi5tLCByb2xlczogWy4uLm0ucm9sZXMsIHJvbGVOYW1lXSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuYXNzaWduUmV2b2tlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6IGFscmVhZHlIYXMgPyAnZXJyb3JSZXZva2UnIDogJ2Vycm9yQXNzaWduJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucygpLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucGVuZGluZ01lbWJlci5zZXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSAIFJvbGUgQ1JVRCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuTmV3Um9sZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IHRydWUsIGVkaXRpbmc6IG51bGwgfSk7XG4gIH1cblxuICBvcGVuRWRpdFJvbGUocm9sZTogUmJhY1JvbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IG5hbWU6IHJvbGUubmFtZSwgZGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24gPz8gJycgfSk7XG4gICAgdGhpcy5yb2xlRm9ybS5zZXQoeyBvcGVuOiB0cnVlLCBlZGl0aW5nOiByb2xlIH0pO1xuICB9XG5cbiAgY2xvc2VSb2xlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZVJvbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLnJvbGVGb3JtKCkuZWRpdGluZztcbiAgICBjb25zdCBuYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWUhO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy51cGRhdGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogZWRpdGluZy5pZCwgbmFtZSwgZGVzY3JpcHRpb24gfSkpO1xuICAgICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QubWFwKHIgPT4gKHIuaWQgPT09IGVkaXRpbmcuaWQgPyB1cGRhdGVkIDogcikpKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlVXBkYXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuY3JlYXRlUm9sZSh7IG9yZ0lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgcGVybWlzc2lvbnM6IFtdIH0pKTtcbiAgICAgICAgdGhpcy5hbGxSb2xlcy51cGRhdGUobGlzdCA9PiBbLi4ubGlzdCwgY3JlYXRlZF0pO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVDcmVhdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jbG9zZVJvbGVGb3JtKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuc2F2ZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2Vycm9yU2F2ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1EZWxldGVSb2xlKHJvbGU6IFJiYWNSb2xlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maXJtZWQgfSA9IGF3YWl0IHRoaXMuY29uZmlybS5jb25maXJtRGVzdHJ1Y3RpdmUoe1xuICAgICAgdGl0bGU6IHJvbGUubmFtZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnZGVsZXRlUm9sZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50KCdkZWxldGVSb2xlQ29uZmlybUJ0bicpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnSWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5kZWxldGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogcm9sZS5pZCB9KSk7XG4gICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKHIgPT4gci5pZCAhPT0gcm9sZS5pZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlRGVsZXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JvbGUtbWFuYWdlci5kZWxldGVSb2xlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdlcnJvckRlbGV0ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19