@hmcts/media-viewer 4.0.11 → 4.0.12

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 (58) hide show
  1. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +2 -2
  2. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +2 -2
  3. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +4 -3
  4. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +13 -11
  5. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +9 -9
  6. package/esm2022/lib/icp/icp-follower.service.mjs +11 -6
  7. package/esm2022/lib/icp/icp-presenter.service.mjs +4 -3
  8. package/esm2022/lib/icp/icp-session-api.service.mjs +4 -3
  9. package/esm2022/lib/icp/icp-update.service.mjs +4 -3
  10. package/esm2022/lib/icp/icp.service.mjs +13 -10
  11. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +9 -7
  12. package/esm2022/lib/icp/socket.service.mjs +4 -3
  13. package/esm2022/lib/media-viewer.component.mjs +21 -19
  14. package/esm2022/lib/media-viewer.module.mjs +1 -21
  15. package/esm2022/lib/redaction/components/redaction.component.mjs +2 -2
  16. package/esm2022/lib/toolbar/icp-event.service.mjs +43 -29
  17. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +13 -11
  18. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +14 -12
  19. package/esm2022/lib/toolbar/toolbar-event.service.mjs +7 -7
  20. package/esm2022/lib/toolbar/toolbar.module.mjs +3 -7
  21. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +1 -1
  22. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +20 -18
  23. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +3 -3
  24. package/fesm2022/hmcts-media-viewer.mjs +2055 -2058
  25. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  26. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
  27. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +1 -1
  28. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +1 -1
  29. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +1 -1
  30. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +3 -1
  31. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +1 -1
  32. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +3 -3
  33. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +1 -1
  34. package/lib/icp/icp-follower.service.d.ts +1 -0
  35. package/lib/icp/icp-follower.service.d.ts.map +1 -1
  36. package/lib/icp/icp-presenter.service.d.ts.map +1 -1
  37. package/lib/icp/icp.service.d.ts +3 -1
  38. package/lib/icp/icp.service.d.ts.map +1 -1
  39. package/lib/icp/participants-list/participants-list.component.d.ts +3 -1
  40. package/lib/icp/participants-list/participants-list.component.d.ts.map +1 -1
  41. package/lib/media-viewer.component.d.ts +3 -1
  42. package/lib/media-viewer.component.d.ts.map +1 -1
  43. package/lib/media-viewer.module.d.ts.map +1 -1
  44. package/lib/redaction/components/redaction.component.d.ts +1 -1
  45. package/lib/redaction/components/redaction.component.d.ts.map +1 -1
  46. package/lib/toolbar/icp-event.service.d.ts +19 -13
  47. package/lib/toolbar/icp-event.service.d.ts.map +1 -1
  48. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +3 -1
  49. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +1 -1
  50. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +3 -1
  51. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +1 -1
  52. package/lib/toolbar/toolbar-event.service.d.ts +3 -2
  53. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
  54. package/lib/toolbar/toolbar.module.d.ts +0 -1
  55. package/lib/toolbar/toolbar.module.d.ts.map +1 -1
  56. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +3 -1
  57. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +1 -1
  58. package/package.json +1 -1
@@ -4,17 +4,19 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "../toolbar-event.service";
5
5
  import * as i2 from "../toolbar-button-visibility.service";
6
6
  import * as i3 from "../../../lib/shared/util/services/number.helper.service";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "@angular/cdk/overlay";
10
- import * as i7 from "../search-bar/search-bar.component";
11
- import * as i8 from "rpx-xui-translation";
7
+ import * as i4 from "../icp-event.service";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "@angular/forms";
10
+ import * as i7 from "@angular/cdk/overlay";
11
+ import * as i8 from "../search-bar/search-bar.component";
12
+ import * as i9 from "rpx-xui-translation";
12
13
  export class MainToolbarComponent {
13
- constructor(toolbarEvents, toolbarButtons, cdr, numberHelper) {
14
+ constructor(toolbarEvents, toolbarButtons, cdr, numberHelper, icpEventService) {
14
15
  this.toolbarEvents = toolbarEvents;
15
16
  this.toolbarButtons = toolbarButtons;
16
17
  this.cdr = cdr;
17
18
  this.numberHelper = numberHelper;
19
+ this.icpEventService = icpEventService;
18
20
  this.enableAnnotations = false;
19
21
  this.enableRedactions = false;
20
22
  this.enableICP = false;
@@ -39,7 +41,7 @@ export class MainToolbarComponent {
39
41
  this.widthRequiredForBtn = {};
40
42
  }
41
43
  ngOnInit() {
42
- this.subscriptions.push(this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.setCurrentPage(pageNumber)), this.toolbarEvents.setCurrentPageInputValueSubject.subscribe(pageNumber => this.pageNumber = pageNumber), this.toolbarEvents.getPageCount().subscribe(count => this.pageCount = count), this.toolbarEvents.icp.enabled.subscribe(enabled => {
44
+ this.subscriptions.push(this.toolbarEvents.setCurrentPageSubject.subscribe(pageNumber => this.setCurrentPage(pageNumber)), this.toolbarEvents.setCurrentPageInputValueSubject.subscribe(pageNumber => this.pageNumber = pageNumber), this.toolbarEvents.getPageCount().subscribe(count => this.pageCount = count), this.icpEventService.enabled.subscribe(enabled => {
43
45
  this.icpEnabled = enabled;
44
46
  if (this.icpEnabled) {
45
47
  this.toolbarEvents.toggleCommentsPanel(!enabled);
@@ -100,7 +102,7 @@ export class MainToolbarComponent {
100
102
  }
101
103
  togglePresentBar() {
102
104
  this.toolbarEvents.searchBarHidden.next(true);
103
- this.toolbarEvents.icp.enable();
105
+ this.icpEventService.enable();
104
106
  }
105
107
  increasePageNumber() {
106
108
  this.toolbarEvents.incrementPage(1);
@@ -159,13 +161,13 @@ export class MainToolbarComponent {
159
161
  }
160
162
  }, 100);
161
163
  }
162
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainToolbarComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.ToolbarButtonVisibilityService }, { token: i0.ChangeDetectorRef }, { token: i3.NumberHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
163
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MainToolbarComponent, selector: "mv-main-toolbar", inputs: { enableAnnotations: "enableAnnotations", enableRedactions: "enableRedactions", enableICP: "enableICP", contentType: "contentType" }, host: { listeners: { "window:resize": "onResize()", "document:keydown.control.p": "onControlPrint($event)", "document:keydown.meta.p": "onControlPrint($event)" } }, viewQueries: [{ propertyName: "zoomSelect", first: true, predicate: ["zoomSelect"], descendants: true }, { propertyName: "mvToolbarMain", first: true, predicate: ["mvToolbarMain"], descendants: true }, { propertyName: "mvMenuItems", first: true, predicate: ["dropdownMenu"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div id=\"toolbarContainer\">\n <div class=\"mv-toolbar__container\">\n <div #mvToolbar class=\"mv-toolbar\" [class.notSupported]=\"!contentType\">\n <!-- The mvToolbarMain div contains all toolbar buttons except the \"More options\" button. This allows for calculation of the available space to display buttons -->\n <div id=\"mvToolbarMain\" class=\"mv-toolbar-main\" #mvToolbarMain>\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n <!-- The mvToolbarMoreOptions div contains the \"More options\" toolbar button (and the overlay template for the dropdown menu).\n The space occupied by the button (if visible) is excluded from the toolbar space available calculation -->\n <div id=\"mvToolbarMoreOptions\" class=\"mv-toolbar-more-options\">\n <button\n id=\"mvMoreOptionsBtn\"\n class=\"mv-button mv-toolbar__menu-button--more-options\"\n [class.mv-toolbar__menu-button--more-options__hidden]=\"\n mvToolbar.offsetWidth >= allButtonsWidth\n \"\n aria-pressed=\"false\"\n (click)=\"toggleMoreOptions()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"redactAllInProgress\"\n >\n <span>{{ \"More options\" | rpxTranslate }}</span>\n </button>\n <!-- This template displays the overlay content for the dropdown menu and is connected to the \"More options\" button -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownMenuOpen\"\n [cdkConnectedOverlayPositions]=\"dropdownMenuPositions\"\n >\n <div class=\"dropdown-menu\" #dropdownMenu tabindex=\"0\">\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div id=\"mvMenuItems\" #mvMenuItems>\n <ng-template #menuItems>\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvIndexBtn\"\n title=\"Index\"\n data-l10n-id=\"index\"\n #mvIndexBtn\n class=\"mv-button mv-toolbar__menu-button--index\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvIndexBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvIndexBtn']\n \"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleIndexSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Index\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvBookmarksBtn\"\n title=\"Bookmarks\"\n data-l10n-id=\"bookmarks\"\n #mvBookmarksBtn\n [ngClass]=\"{\n 'mv-button mv-toolbar__menu-button--bookmarks': true,\n 'button-hidden-on-toolbar':\n mvToolbarMain.offsetWidth <\n widthRequiredForBtn['mvBookmarksBtn'],\n 'button-hidden-on-dropdown':\n mvToolbarMain.offsetWidth >=\n widthRequiredForBtn['mvBookmarksBtn']\n }\"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleBookmarksSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Bookmarks\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDrawButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvDrawBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvDrawBtn']\n \"\n [class.toggled]=\"toolbarEvents.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"onClickDrawToggle(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"draw_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvHighlightBtn\"\n #mvHighlightBtn\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight\"\n aria-label=\"Highlight\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.toggled]=\"toolbarEvents.highlightToolbarSubject | async\"\n aria-pressed=\"false\"\n (click)=\"onClickHighlightToggle(); isDropdownMenuOpen = false\"\n data-l10n-id=\"toggleHighlightButton\"\n >\n <span data-l10n-id=\"highlight_label\">{{\n \"Highlight\" | rpxTranslate\n }}</span>\n </button>\n\n <ng-container *ngIf=\"toolbarButtons.showNavigation\">\n <div\n id=\"mvPageBtn\"\n #mvPageBtn\n class=\"mv-toolbar__menu-button--page\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvPageBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvPageBtn']\n \"\n >\n <span>{{ \"Page\" | rpxTranslate }}</span>\n\n <button\n id=\"mvUpBtn\"\n [disabled]=\"pageNumber === 1 || redactAllInProgress\"\n title=\"Previous Page\"\n class=\"mv-toolbar__menu-button--up button-image\"\n data-l10n-id=\"previous\"\n (click)=\"decreasePageNumber()\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvDownBtn\"\n [disabled]=\"pageNumber === pageCount || redactAllInProgress\"\n title=\"Next Page\"\n class=\"mv-toolbar__menu-button--down button-image\"\n data-l10n-id=\"next\"\n (click)=\"increasePageNumber()\"\n >\n <span></span>\n </button>\n\n <input\n type=\"number\"\n id=\"pageNumber\"\n class=\"hmcts-toolbar-input govuk-input--width-2\"\n title=\"Page Number\"\n value=\"1\"\n size=\"4\"\n min=\"1\"\n [value]=\"pageNumber\"\n aria-label=\"page number\"\n tabindex=\"0\"\n data-l10n-id=\"page\"\n (change)=\"onPageNumberInputChange(pageNumberInput.value)\"\n [disabled]=\"redactAllInProgress\"\n #pageNumberInput\n />\n <span id=\"numPages\" class=\"toolbarLabel\">/ {{ pageCount }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"toolbarButtons.showZoom\">\n <div\n id=\"mvZoomBtn\"\n #mvZoomBtn\n class=\"mv-toolbar__menu-button--zoom\"\n aria-pressed=\"false\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvZoomBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvZoomBtn']\n \"\n >\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 0.1 ||\n redactAllInProgress\n \"\n id=\"mvMinusBtn\"\n class=\"mv-toolbar__menu-button--zoom-out button-image\"\n title=\"Zoom Out\"\n data-l10n-id=\"zoom_out\"\n (click)=\"stepZoom(-0.1)\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom Out\" | rpxTranslate\n }}</span>\n </button>\n <select\n id=\"scaleSelect\"\n class=\"hmcts-toolbar-select\"\n title=\"Zoom\"\n tabindex=\"0\"\n data-l10n-id=\"zoom\"\n (change)=\"zoom($event.target.value)\"\n aria-label=\"zoom\"\n [disabled]=\"redactAllInProgress\"\n >\n <option\n #zoomSelect\n id=\"customScaleOption\"\n title=\"\"\n [value]=\"toolbarEvents.zoomValueSubject.value\"\n >\n {{\n toolbarEvents.zoomValueSubject.value * 100\n | number : \"1.0-0\"\n }}%\n </option>\n <option\n *ngFor=\"let zoomScale of zoomScales\"\n title=\"\"\n [value]=\"zoomScale\"\n [attr.data-l10n-id]=\"'page_scale_percent_' + zoomScale * 100\"\n >\n {{ zoomScale * 100 }}%\n </option>\n </select>\n\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 5 ||\n redactAllInProgress\n \"\n id=\"mvPlusBtn\"\n class=\"mv-toolbar__menu-button--zoom-in button-image\"\n (click)=\"stepZoom(0.1)\"\n title=\"Zoom In\"\n data-l10n-id=\"zoom_in\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom In\" | rpxTranslate\n }}</span>\n </button>\n </div>\n </ng-container>\n\n <div\n *ngIf=\"toolbarButtons.showRotate\"\n id=\"mvRotateBtn\"\n #mvRotateBtn\n class=\"mv-toolbar__menu-button--rotate\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvRotateBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvRotateBtn']\n \"\n >\n <button\n id=\"mvRotateLeftBtn\"\n class=\"mv-toolbar__menu-button--rotate_left button-image\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n (click)=\"rotate(270)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvRotateRightBtn\"\n class=\"mv-toolbar__menu-button--rotate_right button-image\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n (click)=\"rotate(90)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <span>{{ \"Rotate\" | rpxTranslate }}</span>\n </div>\n\n <button\n *ngIf=\"toolbarButtons.showSearchBar\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvSearchBtn\"\n #mvSearchBtn\n title=\"Search\"\n data-l10n-id=\"searchbar\"\n class=\"mv-button mv-toolbar__menu-button--search\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvSearchBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvSearchBtn']\n \"\n aria-pressed=\"false\"\n (click)=\"toggleSearchBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Search\" | rpxTranslate }}</span>\n </button>\n <mv-search-bar\n *ngIf=\"!toolbarEvents.searchBarHidden.getValue()\"\n ></mv-search-bar>\n\n <button\n *ngIf=\"enableICP && toolbarButtons.showPresentationMode && isPdf()\"\n [disabled]=\"icpEnabled || !contentType || redactionEnabled\"\n id=\"mvPresentBtn\"\n #mvPresentBtn\n class=\"mv-button mv-toolbar__menu-button--present\"\n title=\"In-Court Presentation Mode\"\n data-l10n-id=\"icpMode_label\"\n [ngClass]=\"onToolBarOffSetChange('mvPresentBtn')\"\n aria-pressed=\"false\"\n (click)=\"togglePresentBar(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"icpMode_label\">{{\n \"Present\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"enableRedactions && toolbarButtons.showRedact\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvRedactBtn\"\n #mvRedactBtn\n title=\"Redact\"\n data-l10n-id=\"redact\"\n class=\"mv-button mv-toolbar__menu-button--redact\"\n [ngClass]=\"onToolBarOffSetChange('mvRedactBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleRedactBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Redact\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showGrabNDragButton\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvGrabBtn\"\n #mvGrabBtn\n class=\"mv-button mv-toolbar__menu-button--grab\"\n title=\"Grab and drag\"\n [ngClass]=\"onToolBarOffSetChange('mvGrabBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleGrabNDrag(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Grab and drag\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDownload\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDownloadBtn\"\n #mvDownloadBtn\n class=\"mv-button mv-toolbar__menu-button--download\"\n title=\"Download\"\n data-l10n-id=\"download\"\n [ngClass]=\"onToolBarOffSetChange('mvDownloadBtn')\"\n aria-pressed=\"false\"\n (click)=\"downloadFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Download\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showPrint\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvPrintBtn\"\n #mvPrintBtn\n title=\"Print\"\n data-l10n-id=\"print\"\n class=\"mv-button mv-toolbar__menu-button--print\"\n [ngClass]=\"onToolBarOffSetChange('mvPrintBtn')\"\n aria-pressed=\"false\"\n (click)=\"printFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Print\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"enableAnnotations && toolbarButtons.showCommentSummary\"\n [disabled]=\"redactionEnabled\"\n id=\"mvCommentsBtn\"\n #mvCommentsBtn\n class=\"mv-button mv-toolbar__menu-button--comments\"\n title=\"Comments\"\n data-l10n-id=\"comments\"\n [ngClass]=\"onToolBarOffSetChange('mvCommentsBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleCommentsPanel(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Comments\" | rpxTranslate }}</span>\n </button>\n </ng-template>\n </div>\n </div>\n\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\"></div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i7.SearchBarComponent, selector: "mv-search-bar" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.RpxTranslatePipe, name: "rpxTranslate" }] }); }
164
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainToolbarComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.ToolbarButtonVisibilityService }, { token: i0.ChangeDetectorRef }, { token: i3.NumberHelperService }, { token: i4.IcpEventService }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MainToolbarComponent, selector: "mv-main-toolbar", inputs: { enableAnnotations: "enableAnnotations", enableRedactions: "enableRedactions", enableICP: "enableICP", contentType: "contentType" }, host: { listeners: { "window:resize": "onResize()", "document:keydown.control.p": "onControlPrint($event)", "document:keydown.meta.p": "onControlPrint($event)" } }, viewQueries: [{ propertyName: "zoomSelect", first: true, predicate: ["zoomSelect"], descendants: true }, { propertyName: "mvToolbarMain", first: true, predicate: ["mvToolbarMain"], descendants: true }, { propertyName: "mvMenuItems", first: true, predicate: ["dropdownMenu"], descendants: true }], ngImport: i0, template: "<div class=\"toolbar\">\n <div id=\"toolbarContainer\">\n <div class=\"mv-toolbar__container\">\n <div #mvToolbar class=\"mv-toolbar\" [class.notSupported]=\"!contentType\">\n <!-- The mvToolbarMain div contains all toolbar buttons except the \"More options\" button. This allows for calculation of the available space to display buttons -->\n <div id=\"mvToolbarMain\" class=\"mv-toolbar-main\" #mvToolbarMain>\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n <!-- The mvToolbarMoreOptions div contains the \"More options\" toolbar button (and the overlay template for the dropdown menu).\n The space occupied by the button (if visible) is excluded from the toolbar space available calculation -->\n <div id=\"mvToolbarMoreOptions\" class=\"mv-toolbar-more-options\">\n <button\n id=\"mvMoreOptionsBtn\"\n class=\"mv-button mv-toolbar__menu-button--more-options\"\n [class.mv-toolbar__menu-button--more-options__hidden]=\"\n mvToolbar.offsetWidth >= allButtonsWidth\n \"\n aria-pressed=\"false\"\n (click)=\"toggleMoreOptions()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"redactAllInProgress\"\n >\n <span>{{ \"More options\" | rpxTranslate }}</span>\n </button>\n <!-- This template displays the overlay content for the dropdown menu and is connected to the \"More options\" button -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownMenuOpen\"\n [cdkConnectedOverlayPositions]=\"dropdownMenuPositions\"\n >\n <div class=\"dropdown-menu\" #dropdownMenu tabindex=\"0\">\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div id=\"mvMenuItems\" #mvMenuItems>\n <ng-template #menuItems>\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvIndexBtn\"\n title=\"Index\"\n data-l10n-id=\"index\"\n #mvIndexBtn\n class=\"mv-button mv-toolbar__menu-button--index\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvIndexBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvIndexBtn']\n \"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleIndexSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Index\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvBookmarksBtn\"\n title=\"Bookmarks\"\n data-l10n-id=\"bookmarks\"\n #mvBookmarksBtn\n [ngClass]=\"{\n 'mv-button mv-toolbar__menu-button--bookmarks': true,\n 'button-hidden-on-toolbar':\n mvToolbarMain.offsetWidth <\n widthRequiredForBtn['mvBookmarksBtn'],\n 'button-hidden-on-dropdown':\n mvToolbarMain.offsetWidth >=\n widthRequiredForBtn['mvBookmarksBtn']\n }\"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleBookmarksSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Bookmarks\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDrawButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvDrawBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvDrawBtn']\n \"\n [class.toggled]=\"toolbarEvents.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"onClickDrawToggle(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"draw_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvHighlightBtn\"\n #mvHighlightBtn\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight\"\n aria-label=\"Highlight\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.toggled]=\"toolbarEvents.highlightToolbarSubject | async\"\n aria-pressed=\"false\"\n (click)=\"onClickHighlightToggle(); isDropdownMenuOpen = false\"\n data-l10n-id=\"toggleHighlightButton\"\n >\n <span data-l10n-id=\"highlight_label\">{{\n \"Highlight\" | rpxTranslate\n }}</span>\n </button>\n\n <ng-container *ngIf=\"toolbarButtons.showNavigation\">\n <div\n id=\"mvPageBtn\"\n #mvPageBtn\n class=\"mv-toolbar__menu-button--page\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvPageBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvPageBtn']\n \"\n >\n <span>{{ \"Page\" | rpxTranslate }}</span>\n\n <button\n id=\"mvUpBtn\"\n [disabled]=\"pageNumber === 1 || redactAllInProgress\"\n title=\"Previous Page\"\n class=\"mv-toolbar__menu-button--up button-image\"\n data-l10n-id=\"previous\"\n (click)=\"decreasePageNumber()\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvDownBtn\"\n [disabled]=\"pageNumber === pageCount || redactAllInProgress\"\n title=\"Next Page\"\n class=\"mv-toolbar__menu-button--down button-image\"\n data-l10n-id=\"next\"\n (click)=\"increasePageNumber()\"\n >\n <span></span>\n </button>\n\n <input\n type=\"number\"\n id=\"pageNumber\"\n class=\"hmcts-toolbar-input govuk-input--width-2\"\n title=\"Page Number\"\n value=\"1\"\n size=\"4\"\n min=\"1\"\n [value]=\"pageNumber\"\n aria-label=\"page number\"\n tabindex=\"0\"\n data-l10n-id=\"page\"\n (change)=\"onPageNumberInputChange(pageNumberInput.value)\"\n [disabled]=\"redactAllInProgress\"\n #pageNumberInput\n />\n <span id=\"numPages\" class=\"toolbarLabel\">/ {{ pageCount }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"toolbarButtons.showZoom\">\n <div\n id=\"mvZoomBtn\"\n #mvZoomBtn\n class=\"mv-toolbar__menu-button--zoom\"\n aria-pressed=\"false\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvZoomBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvZoomBtn']\n \"\n >\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 0.1 ||\n redactAllInProgress\n \"\n id=\"mvMinusBtn\"\n class=\"mv-toolbar__menu-button--zoom-out button-image\"\n title=\"Zoom Out\"\n data-l10n-id=\"zoom_out\"\n (click)=\"stepZoom(-0.1)\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom Out\" | rpxTranslate\n }}</span>\n </button>\n <select\n id=\"scaleSelect\"\n class=\"hmcts-toolbar-select\"\n title=\"Zoom\"\n tabindex=\"0\"\n data-l10n-id=\"zoom\"\n (change)=\"zoom($event.target.value)\"\n aria-label=\"zoom\"\n [disabled]=\"redactAllInProgress\"\n >\n <option\n #zoomSelect\n id=\"customScaleOption\"\n title=\"\"\n [value]=\"toolbarEvents.zoomValueSubject.value\"\n >\n {{\n toolbarEvents.zoomValueSubject.value * 100\n | number : \"1.0-0\"\n }}%\n </option>\n <option\n *ngFor=\"let zoomScale of zoomScales\"\n title=\"\"\n [value]=\"zoomScale\"\n [attr.data-l10n-id]=\"'page_scale_percent_' + zoomScale * 100\"\n >\n {{ zoomScale * 100 }}%\n </option>\n </select>\n\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 5 ||\n redactAllInProgress\n \"\n id=\"mvPlusBtn\"\n class=\"mv-toolbar__menu-button--zoom-in button-image\"\n (click)=\"stepZoom(0.1)\"\n title=\"Zoom In\"\n data-l10n-id=\"zoom_in\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom In\" | rpxTranslate\n }}</span>\n </button>\n </div>\n </ng-container>\n\n <div\n *ngIf=\"toolbarButtons.showRotate\"\n id=\"mvRotateBtn\"\n #mvRotateBtn\n class=\"mv-toolbar__menu-button--rotate\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvRotateBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvRotateBtn']\n \"\n >\n <button\n id=\"mvRotateLeftBtn\"\n class=\"mv-toolbar__menu-button--rotate_left button-image\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n (click)=\"rotate(270)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvRotateRightBtn\"\n class=\"mv-toolbar__menu-button--rotate_right button-image\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n (click)=\"rotate(90)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <span>{{ \"Rotate\" | rpxTranslate }}</span>\n </div>\n\n <button\n *ngIf=\"toolbarButtons.showSearchBar\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvSearchBtn\"\n #mvSearchBtn\n title=\"Search\"\n data-l10n-id=\"searchbar\"\n class=\"mv-button mv-toolbar__menu-button--search\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvSearchBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvSearchBtn']\n \"\n aria-pressed=\"false\"\n (click)=\"toggleSearchBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Search\" | rpxTranslate }}</span>\n </button>\n <mv-search-bar\n *ngIf=\"!toolbarEvents.searchBarHidden.getValue()\"\n ></mv-search-bar>\n\n <button\n *ngIf=\"enableICP && toolbarButtons.showPresentationMode && isPdf()\"\n [disabled]=\"icpEnabled || !contentType || redactionEnabled\"\n id=\"mvPresentBtn\"\n #mvPresentBtn\n class=\"mv-button mv-toolbar__menu-button--present\"\n title=\"In-Court Presentation Mode\"\n data-l10n-id=\"icpMode_label\"\n [ngClass]=\"onToolBarOffSetChange('mvPresentBtn')\"\n aria-pressed=\"false\"\n (click)=\"togglePresentBar(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"icpMode_label\">{{\n \"Present\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"enableRedactions && toolbarButtons.showRedact\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvRedactBtn\"\n #mvRedactBtn\n title=\"Redact\"\n data-l10n-id=\"redact\"\n class=\"mv-button mv-toolbar__menu-button--redact\"\n [ngClass]=\"onToolBarOffSetChange('mvRedactBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleRedactBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Redact\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showGrabNDragButton\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvGrabBtn\"\n #mvGrabBtn\n class=\"mv-button mv-toolbar__menu-button--grab\"\n title=\"Grab and drag\"\n [ngClass]=\"onToolBarOffSetChange('mvGrabBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleGrabNDrag(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Grab and drag\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDownload\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDownloadBtn\"\n #mvDownloadBtn\n class=\"mv-button mv-toolbar__menu-button--download\"\n title=\"Download\"\n data-l10n-id=\"download\"\n [ngClass]=\"onToolBarOffSetChange('mvDownloadBtn')\"\n aria-pressed=\"false\"\n (click)=\"downloadFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Download\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showPrint\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvPrintBtn\"\n #mvPrintBtn\n title=\"Print\"\n data-l10n-id=\"print\"\n class=\"mv-button mv-toolbar__menu-button--print\"\n [ngClass]=\"onToolBarOffSetChange('mvPrintBtn')\"\n aria-pressed=\"false\"\n (click)=\"printFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Print\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"enableAnnotations && toolbarButtons.showCommentSummary\"\n [disabled]=\"redactionEnabled\"\n id=\"mvCommentsBtn\"\n #mvCommentsBtn\n class=\"mv-button mv-toolbar__menu-button--comments\"\n title=\"Comments\"\n data-l10n-id=\"comments\"\n [ngClass]=\"onToolBarOffSetChange('mvCommentsBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleCommentsPanel(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Comments\" | rpxTranslate }}</span>\n </button>\n </ng-template>\n </div>\n </div>\n\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\"></div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i7.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i8.SearchBarComponent, selector: "mv-search-bar" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.RpxTranslatePipe, name: "rpxTranslate" }] }); }
164
166
  }
165
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainToolbarComponent, decorators: [{
166
168
  type: Component,
167
169
  args: [{ selector: 'mv-main-toolbar', template: "<div class=\"toolbar\">\n <div id=\"toolbarContainer\">\n <div class=\"mv-toolbar__container\">\n <div #mvToolbar class=\"mv-toolbar\" [class.notSupported]=\"!contentType\">\n <!-- The mvToolbarMain div contains all toolbar buttons except the \"More options\" button. This allows for calculation of the available space to display buttons -->\n <div id=\"mvToolbarMain\" class=\"mv-toolbar-main\" #mvToolbarMain>\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n <!-- The mvToolbarMoreOptions div contains the \"More options\" toolbar button (and the overlay template for the dropdown menu).\n The space occupied by the button (if visible) is excluded from the toolbar space available calculation -->\n <div id=\"mvToolbarMoreOptions\" class=\"mv-toolbar-more-options\">\n <button\n id=\"mvMoreOptionsBtn\"\n class=\"mv-button mv-toolbar__menu-button--more-options\"\n [class.mv-toolbar__menu-button--more-options__hidden]=\"\n mvToolbar.offsetWidth >= allButtonsWidth\n \"\n aria-pressed=\"false\"\n (click)=\"toggleMoreOptions()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"redactAllInProgress\"\n >\n <span>{{ \"More options\" | rpxTranslate }}</span>\n </button>\n <!-- This template displays the overlay content for the dropdown menu and is connected to the \"More options\" button -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownMenuOpen\"\n [cdkConnectedOverlayPositions]=\"dropdownMenuPositions\"\n >\n <div class=\"dropdown-menu\" #dropdownMenu tabindex=\"0\">\n <ng-container *ngTemplateOutlet=\"menuItems\"></ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n\n <div id=\"mvMenuItems\" #mvMenuItems>\n <ng-template #menuItems>\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvIndexBtn\"\n title=\"Index\"\n data-l10n-id=\"index\"\n #mvIndexBtn\n class=\"mv-button mv-toolbar__menu-button--index\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvIndexBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvIndexBtn']\n \"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleIndexSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Index\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showSidebar\"\n id=\"mvBookmarksBtn\"\n title=\"Bookmarks\"\n data-l10n-id=\"bookmarks\"\n #mvBookmarksBtn\n [ngClass]=\"{\n 'mv-button mv-toolbar__menu-button--bookmarks': true,\n 'button-hidden-on-toolbar':\n mvToolbarMain.offsetWidth <\n widthRequiredForBtn['mvBookmarksBtn'],\n 'button-hidden-on-dropdown':\n mvToolbarMain.offsetWidth >=\n widthRequiredForBtn['mvBookmarksBtn']\n }\"\n aria-pressed=\"false\"\n [disabled]=\"redactAllInProgress\"\n (click)=\"toggleBookmarksSideBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Bookmarks\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDrawButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDrawBtn\"\n #mvDrawBtn\n class=\"mv-button mv-toolbar__menu-button--draw\"\n title=\"Draw a box\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvDrawBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvDrawBtn']\n \"\n [class.toggled]=\"toolbarEvents.drawModeSubject | async\"\n aria-pressed=\"false\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"onClickDrawToggle(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"draw_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvHighlightBtn\"\n #mvHighlightBtn\n class=\"mv-button mv-toolbar__menu-button--highlight\"\n title=\"Highlight\"\n aria-label=\"Highlight\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvHighlightBtn']\n \"\n [class.toggled]=\"toolbarEvents.highlightToolbarSubject | async\"\n aria-pressed=\"false\"\n (click)=\"onClickHighlightToggle(); isDropdownMenuOpen = false\"\n data-l10n-id=\"toggleHighlightButton\"\n >\n <span data-l10n-id=\"highlight_label\">{{\n \"Highlight\" | rpxTranslate\n }}</span>\n </button>\n\n <ng-container *ngIf=\"toolbarButtons.showNavigation\">\n <div\n id=\"mvPageBtn\"\n #mvPageBtn\n class=\"mv-toolbar__menu-button--page\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvPageBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvPageBtn']\n \"\n >\n <span>{{ \"Page\" | rpxTranslate }}</span>\n\n <button\n id=\"mvUpBtn\"\n [disabled]=\"pageNumber === 1 || redactAllInProgress\"\n title=\"Previous Page\"\n class=\"mv-toolbar__menu-button--up button-image\"\n data-l10n-id=\"previous\"\n (click)=\"decreasePageNumber()\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvDownBtn\"\n [disabled]=\"pageNumber === pageCount || redactAllInProgress\"\n title=\"Next Page\"\n class=\"mv-toolbar__menu-button--down button-image\"\n data-l10n-id=\"next\"\n (click)=\"increasePageNumber()\"\n >\n <span></span>\n </button>\n\n <input\n type=\"number\"\n id=\"pageNumber\"\n class=\"hmcts-toolbar-input govuk-input--width-2\"\n title=\"Page Number\"\n value=\"1\"\n size=\"4\"\n min=\"1\"\n [value]=\"pageNumber\"\n aria-label=\"page number\"\n tabindex=\"0\"\n data-l10n-id=\"page\"\n (change)=\"onPageNumberInputChange(pageNumberInput.value)\"\n [disabled]=\"redactAllInProgress\"\n #pageNumberInput\n />\n <span id=\"numPages\" class=\"toolbarLabel\">/ {{ pageCount }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"toolbarButtons.showZoom\">\n <div\n id=\"mvZoomBtn\"\n #mvZoomBtn\n class=\"mv-toolbar__menu-button--zoom\"\n aria-pressed=\"false\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvZoomBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvZoomBtn']\n \"\n >\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 0.1 ||\n redactAllInProgress\n \"\n id=\"mvMinusBtn\"\n class=\"mv-toolbar__menu-button--zoom-out button-image\"\n title=\"Zoom Out\"\n data-l10n-id=\"zoom_out\"\n (click)=\"stepZoom(-0.1)\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom Out\" | rpxTranslate\n }}</span>\n </button>\n <select\n id=\"scaleSelect\"\n class=\"hmcts-toolbar-select\"\n title=\"Zoom\"\n tabindex=\"0\"\n data-l10n-id=\"zoom\"\n (change)=\"zoom($event.target.value)\"\n aria-label=\"zoom\"\n [disabled]=\"redactAllInProgress\"\n >\n <option\n #zoomSelect\n id=\"customScaleOption\"\n title=\"\"\n [value]=\"toolbarEvents.zoomValueSubject.value\"\n >\n {{\n toolbarEvents.zoomValueSubject.value * 100\n | number : \"1.0-0\"\n }}%\n </option>\n <option\n *ngFor=\"let zoomScale of zoomScales\"\n title=\"\"\n [value]=\"zoomScale\"\n [attr.data-l10n-id]=\"'page_scale_percent_' + zoomScale * 100\"\n >\n {{ zoomScale * 100 }}%\n </option>\n </select>\n\n <button\n [disabled]=\"\n toolbarEvents.zoomValueSubject.value === 5 ||\n redactAllInProgress\n \"\n id=\"mvPlusBtn\"\n class=\"mv-toolbar__menu-button--zoom-in button-image\"\n (click)=\"stepZoom(0.1)\"\n title=\"Zoom In\"\n data-l10n-id=\"zoom_in\"\n >\n <span class=\"mv-toolbar__menu-button--zoom-out-text\">{{\n \"Zoom In\" | rpxTranslate\n }}</span>\n </button>\n </div>\n </ng-container>\n\n <div\n *ngIf=\"toolbarButtons.showRotate\"\n id=\"mvRotateBtn\"\n #mvRotateBtn\n class=\"mv-toolbar__menu-button--rotate\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvRotateBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvRotateBtn']\n \"\n >\n <button\n id=\"mvRotateLeftBtn\"\n class=\"mv-toolbar__menu-button--rotate_left button-image\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n (click)=\"rotate(270)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <button\n id=\"mvRotateRightBtn\"\n class=\"mv-toolbar__menu-button--rotate_right button-image\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n (click)=\"rotate(90)\"\n [disabled]=\"redactAllInProgress\"\n >\n <span></span>\n </button>\n <span>{{ \"Rotate\" | rpxTranslate }}</span>\n </div>\n\n <button\n *ngIf=\"toolbarButtons.showSearchBar\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvSearchBtn\"\n #mvSearchBtn\n title=\"Search\"\n data-l10n-id=\"searchbar\"\n class=\"mv-button mv-toolbar__menu-button--search\"\n [class.button-hidden-on-toolbar]=\"\n mvToolbarMain.offsetWidth < widthRequiredForBtn['mvSearchBtn']\n \"\n [class.button-hidden-on-dropdown]=\"\n mvToolbarMain.offsetWidth >= widthRequiredForBtn['mvSearchBtn']\n \"\n aria-pressed=\"false\"\n (click)=\"toggleSearchBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Search\" | rpxTranslate }}</span>\n </button>\n <mv-search-bar\n *ngIf=\"!toolbarEvents.searchBarHidden.getValue()\"\n ></mv-search-bar>\n\n <button\n *ngIf=\"enableICP && toolbarButtons.showPresentationMode && isPdf()\"\n [disabled]=\"icpEnabled || !contentType || redactionEnabled\"\n id=\"mvPresentBtn\"\n #mvPresentBtn\n class=\"mv-button mv-toolbar__menu-button--present\"\n title=\"In-Court Presentation Mode\"\n data-l10n-id=\"icpMode_label\"\n [ngClass]=\"onToolBarOffSetChange('mvPresentBtn')\"\n aria-pressed=\"false\"\n (click)=\"togglePresentBar(); isDropdownMenuOpen = false\"\n >\n <span data-l10n-id=\"icpMode_label\">{{\n \"Present\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"enableRedactions && toolbarButtons.showRedact\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvRedactBtn\"\n #mvRedactBtn\n title=\"Redact\"\n data-l10n-id=\"redact\"\n class=\"mv-button mv-toolbar__menu-button--redact\"\n [ngClass]=\"onToolBarOffSetChange('mvRedactBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleRedactBar(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Redact\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showGrabNDragButton\"\n [disabled]=\"icpEnabled || redactAllInProgress\"\n id=\"mvGrabBtn\"\n #mvGrabBtn\n class=\"mv-button mv-toolbar__menu-button--grab\"\n title=\"Grab and drag\"\n [ngClass]=\"onToolBarOffSetChange('mvGrabBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleGrabNDrag(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Grab and drag\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showDownload\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvDownloadBtn\"\n #mvDownloadBtn\n class=\"mv-button mv-toolbar__menu-button--download\"\n title=\"Download\"\n data-l10n-id=\"download\"\n [ngClass]=\"onToolBarOffSetChange('mvDownloadBtn')\"\n aria-pressed=\"false\"\n (click)=\"downloadFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Download\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showPrint\"\n [disabled]=\"icpEnabled || redactionEnabled\"\n id=\"mvPrintBtn\"\n #mvPrintBtn\n title=\"Print\"\n data-l10n-id=\"print\"\n class=\"mv-button mv-toolbar__menu-button--print\"\n [ngClass]=\"onToolBarOffSetChange('mvPrintBtn')\"\n aria-pressed=\"false\"\n (click)=\"printFile(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Print\" | rpxTranslate }}</span>\n </button>\n\n <button\n *ngIf=\"enableAnnotations && toolbarButtons.showCommentSummary\"\n [disabled]=\"redactionEnabled\"\n id=\"mvCommentsBtn\"\n #mvCommentsBtn\n class=\"mv-button mv-toolbar__menu-button--comments\"\n title=\"Comments\"\n data-l10n-id=\"comments\"\n [ngClass]=\"onToolBarOffSetChange('mvCommentsBtn')\"\n aria-pressed=\"false\"\n (click)=\"toggleCommentsPanel(); isDropdownMenuOpen = false\"\n >\n <span>{{ \"Comments\" | rpxTranslate }}</span>\n </button>\n </ng-template>\n </div>\n </div>\n\n <div id=\"loadingBar\">\n <div class=\"progress\">\n <div class=\"glimmer\"></div>\n </div>\n </div>\n </div>\n</div>\n" }]
168
- }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.ToolbarButtonVisibilityService }, { type: i0.ChangeDetectorRef }, { type: i3.NumberHelperService }], propDecorators: { enableAnnotations: [{
170
+ }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.ToolbarButtonVisibilityService }, { type: i0.ChangeDetectorRef }, { type: i3.NumberHelperService }, { type: i4.IcpEventService }], propDecorators: { enableAnnotations: [{
169
171
  type: Input
170
172
  }], enableRedactions: [{
171
173
  type: Input
@@ -192,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
192
194
  type: HostListener,
193
195
  args: ['document:keydown.meta.p', ['$event']]
194
196
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3Rvb2xiYXIvbWFpbi10b29sYmFyL21haW4tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL21haW4tdG9vbGJhci9tYWluLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVV2QixNQUFNLE9BQU8sb0JBQW9CO0lBd0MvQixZQUNrQixhQUFrQyxFQUNsQyxjQUE4QyxFQUM3QyxHQUFzQixFQUN0QixZQUFpQztRQUhsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQzdDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQTFDM0Msc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBTVgsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRTdDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBSXpCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLDBCQUFxQixHQUFHO1lBQzdC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QUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO2tJQTVNVSxvQkFBb0I7c0hBQXBCLG9CQUFvQixtcEJDckJqQyxrbGhCQXNhQTs7NEZEalphLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxpQkFBaUI7dU1BS2xCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUU2QyxVQUFVO3NCQUE1RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1ksYUFBYTtzQkFBbEUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNRLFdBQVc7c0JBQS9ELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEyRXJDLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRTtnQkFPMUIsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3JELFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVtYmVySGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zaGFyZWQvdXRpbC9zZXJ2aWNlcy9udW1iZXIuaGVscGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tYWluLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFpbi10b29sYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYWluVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBlbmFibGVBbm5vdGF0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVSZWRhY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUlDUCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb250ZW50VHlwZSA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnem9vbVNlbGVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgem9vbVNlbGVjdDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXZUb29sYmFyTWFpbicsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgbXZUb29sYmFyTWFpbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTWVudScsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgbXZNZW51SXRlbXM6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgaWNwRW5hYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgcmVkYWN0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0NvbW1lbnRzUGFuZWw6IGJvb2xlYW47XG4gIHB1YmxpYyByZWRhY3RBbGxJblByb2dyZXNzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBwYWdlTnVtYmVyID0gMTtcbiAgcHVibGljIHBhZ2VDb3VudCA9IDA7XG4gIHB1YmxpYyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZTtcbiAgcHVibGljIGRyb3Bkb3duTWVudVBvc2l0aW9ucyA9IFtcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgfSxcbiAgICAgIDAsXG4gICAgICAzKVxuICBdO1xuXG4gIHB1YmxpYyB6b29tU2NhbGVzID0gWzAuMSwgMC4yNSwgMC41LCAwLjc1LCAxLCAxLjI1LCAxLjUsIDIuNSwgMywgNV07XG5cbiAgYWxsQnV0dG9uc1dpZHRoID0gMDtcbiAgd2lkdGhSZXF1aXJlZEZvckJ0bjogeyBbaWQ6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckhlbHBlcjogTnVtYmVySGVscGVyU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZXRDdXJyZW50UGFnZVN1YmplY3Quc3Vic2NyaWJlKHBhZ2VOdW1iZXIgPT4gdGhpcy5zZXRDdXJyZW50UGFnZShwYWdlTnVtYmVyKSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0Q3VycmVudFBhZ2VJbnB1dFZhbHVlU3ViamVjdC5zdWJzY3JpYmUocGFnZU51bWJlciA9PiB0aGlzLnBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyKSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5nZXRQYWdlQ291bnQoKS5zdWJzY3JpYmUoY291bnQgPT4gdGhpcy5wYWdlQ291bnQgPSBjb3VudCksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuaWNwLmVuYWJsZWQuc3Vic2NyaWJlKGVuYWJsZWQgPT4ge1xuICAgICAgICB0aGlzLmljcEVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICBpZiAodGhpcy5pY3BFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzUGFuZWwoIWVuYWJsZWQpO1xuICAgICAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3Blbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZS5zdWJzY3JpYmUoZW5hYmxlZCA9PiB7XG4gICAgICAgIHRoaXMucmVkYWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICB9KSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdC5zdWJzY3JpYmUoZGlzYWJsZSA9PiB7XG4gICAgICAgIHRoaXMucmVkYWN0QWxsSW5Qcm9ncmVzcyA9IGRpc2FibGU7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBBcnJheS5mcm9tKHRoaXMubXZUb29sYmFyTWFpbi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKS5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICB0aGlzLmFsbEJ1dHRvbnNXaWR0aCArPSBidXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICB0aGlzLndpZHRoUmVxdWlyZWRGb3JCdG5bYnV0dG9uLmlkXSA9IHRoaXMuYWxsQnV0dG9uc1dpZHRoO1xuICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbXSlcbiAgcHVibGljIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5wJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5tZXRhLnAnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Db250cm9sUHJpbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJpbnRGaWxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0hpZ2hsaWdodFRvZ2dsZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlSGlnaGxpZ2h0VG9vbGJhcigpO1xuICB9XG4gIHB1YmxpYyBvbkNsaWNrRHJhd1RvZ2dsZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlRHJhd01vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVJbmRleFNpZGVCYXIoKSB7XG4gICAgY29uc3Qgc2lkZWJhck9wZW4gPSB0aGlzLnRvb2xiYXJFdmVudHMuc2lkZWJhck9wZW4uZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBzaWRlYmFyVmlldyA9IHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3V0bGluZVZpZXcuZ2V0VmFsdWUoKTtcbiAgICBpZiAoIShzaWRlYmFyT3BlbiAmJiAhc2lkZWJhclZpZXcpKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlU2lkZUJhcighc2lkZWJhck9wZW4pO1xuICAgIH1cbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlU2lkZUJhclZpZXcodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub29sQmFyT2ZmU2V0Q2hhbmdlKGJ1dHRvbklkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5tdlRvb2xiYXJNYWluICYmIHRoaXMubXZUb29sYmFyTWFpbi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgdGhpcy53aWR0aFJlcXVpcmVkRm9yQnRuW2J1dHRvbklkXSkge1xuICAgICAgcmV0dXJuIFwiYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXCI7XG5cbiAgICB9XG4gICAgcmV0dXJuIFwiYnV0dG9uLWhpZGRlbi1vbi1kcm9wZG93blwiO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUJvb2ttYXJrc1NpZGVCYXIoKSB7XG4gICAgY29uc3Qgc2lkZWJhck9wZW4gPSB0aGlzLnRvb2xiYXJFdmVudHMuc2lkZWJhck9wZW4uZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBzaWRlYmFyVmlldyA9IHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3V0bGluZVZpZXcuZ2V0VmFsdWUoKTtcbiAgICBpZiAoIShzaWRlYmFyT3BlbiAmJiBzaWRlYmFyVmlldykpIHtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVTaWRlQmFyKCFzaWRlYmFyT3Blbik7XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVTaWRlQmFyVmlldyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUHJlc2VudEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQodHJ1ZSk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLmljcC5lbmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbmNyZWFzZVBhZ2VOdW1iZXIoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLmluY3JlbWVudFBhZ2UoMSk7XG4gIH1cblxuICBwdWJsaWMgZGVjcmVhc2VQYWdlTnVtYmVyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5pbmNyZW1lbnRQYWdlKC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2VOdW1iZXJJbnB1dENoYW5nZShwYWdlTnVtYmVyOiBzdHJpbmcpIHtcbiAgICBpZiAoTnVtYmVyKHBhZ2VOdW1iZXIpIDwgMSkge1xuICAgICAgcGFnZU51bWJlciA9ICcxJztcbiAgICB9XG4gICAgaWYgKE51bWJlcihwYWdlTnVtYmVyKSA+IHRoaXMucGFnZUNvdW50KSB7XG4gICAgICBwYWdlTnVtYmVyID0gdGhpcy5wYWdlQ291bnQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0UGFnZShOdW1iZXIucGFyc2VJbnQocGFnZU51bWJlciwgMTApKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudFBhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcbiAgfVxuXG4gIHB1YmxpYyByb3RhdGUocm90YXRpb246IG51bWJlcikge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5yb3RhdGUocm90YXRpb24pO1xuICB9XG5cbiAgcHVibGljIHByaW50RmlsZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMucHJpbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLmRvd25sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgem9vbSh6b29tRmFjdG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuem9vbSgrem9vbUZhY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgc3RlcFpvb20oem9vbUZhY3RvcjogbnVtYmVyKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnN0ZXBab29tKHpvb21GYWN0b3IpO1xuICAgIHRoaXMuem9vbVNlbGVjdC5uYXRpdmVFbGVtZW50LnNlbGVjdGVkID0gJ3NlbGVjdGVkJztcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb21tZW50c1BhbmVsKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVDb21tZW50c1BhbmVsKCF0aGlzLnRvb2xiYXJFdmVudHMuY29tbWVudHNQYW5lbFZpc2libGUuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUmVkYWN0QmFyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVSZWRhY3Rpb25Nb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlR3JhYk5EcmFnKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVHcmFiTkRyYWcoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1BkZigpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSA9PT0gJ3BkZic7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VhcmNoQmFyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCghdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb3JlT3B0aW9ucygpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25NZW51T3BlbiA9ICF0aGlzLmlzRHJvcGRvd25NZW51T3BlbjtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm12TWVudUl0ZW1zKSB7XG4gICAgICAgIHRoaXMubXZNZW51SXRlbXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0b29sYmFyXCI+XG4gIDxkaXYgaWQ9XCJ0b29sYmFyQ29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm12LXRvb2xiYXJfX2NvbnRhaW5lclwiPlxuICAgICAgPGRpdiAjbXZUb29sYmFyIGNsYXNzPVwibXYtdG9vbGJhclwiIFtjbGFzcy5ub3RTdXBwb3J0ZWRdPVwiIWNvbnRlbnRUeXBlXCI+XG4gICAgICAgIDwhLS0gVGhlIG12VG9vbGJhck1haW4gZGl2IGNvbnRhaW5zIGFsbCB0b29sYmFyIGJ1dHRvbnMgZXhjZXB0IHRoZSBcIk1vcmUgb3B0aW9uc1wiIGJ1dHRvbi4gVGhpcyBhbGxvd3MgZm9yIGNhbGN1bGF0aW9uIG9mIHRoZSBhdmFpbGFibGUgc3BhY2UgdG8gZGlzcGxheSBidXR0b25zIC0tPlxuICAgICAgICA8ZGl2IGlkPVwibXZUb29sYmFyTWFpblwiIGNsYXNzPVwibXYtdG9vbGJhci1tYWluXCIgI212VG9vbGJhck1haW4+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUaGUgbXZUb29sYmFyTW9yZU9wdGlvbnMgZGl2IGNvbnRhaW5zIHRoZSBcIk1vcmUgb3B0aW9uc1wiIHRvb2xiYXIgYnV0dG9uIChhbmQgdGhlIG92ZXJsYXkgdGVtcGxhdGUgZm9yIHRoZSBkcm9wZG93biBtZW51KS5cbiAgICAgICAgICAgIFRoZSBzcGFjZSBvY2N1cGllZCBieSB0aGUgYnV0dG9uIChpZiB2aXNpYmxlKSBpcyBleGNsdWRlZCBmcm9tIHRoZSB0b29sYmFyIHNwYWNlIGF2YWlsYWJsZSBjYWxjdWxhdGlvbiAtLT5cbiAgICAgICAgPGRpdiBpZD1cIm12VG9vbGJhck1vcmVPcHRpb25zXCIgY2xhc3M9XCJtdi10b29sYmFyLW1vcmUtb3B0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibXZNb3JlT3B0aW9uc0J0blwiXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tbW9yZS1vcHRpb25zXCJcbiAgICAgICAgICAgIFtjbGFzcy5tdi10b29sYmFyX19tZW51LWJ1dHRvbi0tbW9yZS1vcHRpb25zX19oaWRkZW5dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhci5vZmZzZXRXaWR0aCA+PSBhbGxCdXR0b25zV2lkdGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9yZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiTW9yZSBvcHRpb25zXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPCEtLSBUaGlzIHRlbXBsYXRlIGRpc3BsYXlzIHRoZSBvdmVybGF5IGNvbnRlbnQgZm9yIHRoZSBkcm9wZG93biBtZW51IGFuZCBpcyBjb25uZWN0ZWQgdG8gdGhlIFwiTW9yZSBvcHRpb25zXCIgYnV0dG9uIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNEcm9wZG93bk1lbnVPcGVuXCJcbiAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cImRyb3Bkb3duTWVudVBvc2l0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAjZHJvcGRvd25NZW51IHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW1zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGlkPVwibXZNZW51SXRlbXNcIiAjbXZNZW51SXRlbXM+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1zPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd1NpZGViYXJcIlxuICAgICAgICAgICAgaWQ9XCJtdkluZGV4QnRuXCJcbiAgICAgICAgICAgIHRpdGxlPVwiSW5kZXhcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiaW5kZXhcIlxuICAgICAgICAgICAgI212SW5kZXhCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1pbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZJbmRleEJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZJbmRleEJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUluZGV4U2lkZUJhcigpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJJbmRleFwiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93U2lkZWJhclwiXG4gICAgICAgICAgICBpZD1cIm12Qm9va21hcmtzQnRuXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQm9va21hcmtzXCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImJvb2ttYXJrc1wiXG4gICAgICAgICAgICAjbXZCb29rbWFya3NCdG5cbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ212LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tYm9va21hcmtzJzogdHJ1ZSxcbiAgICAgICAgICAgICAgJ2J1dHRvbi1oaWRkZW4tb24tdG9vbGJhcic6XG4gICAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA8XG4gICAgICAgICAgICAgICAgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZCb29rbWFya3NCdG4nXSxcbiAgICAgICAgICAgICAgJ2J1dHRvbi1oaWRkZW4tb24tZHJvcGRvd24nOlxuICAgICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj1cbiAgICAgICAgICAgICAgICB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdkJvb2ttYXJrc0J0biddXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVCb29rbWFya3NTaWRlQmFyKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIkJvb2ttYXJrc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93RHJhd0J1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaWNwRW5hYmxlZCB8fCByZWRhY3Rpb25FbmFibGVkXCJcbiAgICAgICAgICAgIGlkPVwibXZEcmF3QnRuXCJcbiAgICAgICAgICAgICNtdkRyYXdCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1kcmF3XCJcbiAgICAgICAgICAgIHRpdGxlPVwiRHJhdyBhIGJveFwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZEcmF3QnRuJ11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi1kcm9wZG93bl09XCJcbiAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA+PSB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdkRyYXdCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2dnbGVkXT1cInRvb2xiYXJFdmVudHMuZHJhd01vZGVTdWJqZWN0IHwgYXN5bmNcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlRHJhd0J1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0RyYXdUb2dnbGUoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cImRyYXdfbGFiZWxcIj57e1xuICAgICAgICAgICAgICBcIkRyYXcgYSBib3hcIiB8IHJweFRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dIaWdobGlnaHRCdXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0aW9uRW5hYmxlZFwiXG4gICAgICAgICAgICBpZD1cIm12SGlnaGxpZ2h0QnRuXCJcbiAgICAgICAgICAgICNtdkhpZ2hsaWdodEJ0blxuICAgICAgICAgICAgY2xhc3M9XCJtdi1idXR0b24gbXYtdG9vbGJhcl9fbWVudS1idXR0b24tLWhpZ2hsaWdodFwiXG4gICAgICAgICAgICB0aXRsZT1cIkhpZ2hsaWdodFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiSGlnaGxpZ2h0XCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLXRvb2xiYXJdPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPCB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdkhpZ2hsaWdodEJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZIaWdobGlnaHRCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy50b2dnbGVkXT1cInRvb2xiYXJFdmVudHMuaGlnaGxpZ2h0VG9vbGJhclN1YmplY3QgfCBhc3luY1wiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0hpZ2hsaWdodFRvZ2dsZSgpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJ0b2dnbGVIaWdobGlnaHRCdXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cImhpZ2hsaWdodF9sYWJlbFwiPnt7XG4gICAgICAgICAgICAgIFwiSGlnaGxpZ2h0XCIgfCBycHhUcmFuc2xhdGVcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dOYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwibXZQYWdlQnRuXCJcbiAgICAgICAgICAgICAgI212UGFnZUJ0blxuICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1wYWdlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tdG9vbGJhcl09XCJcbiAgICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZQYWdlQnRuJ11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA+PSB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlBhZ2VCdG4nXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBcIlBhZ2VcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJtdlVwQnRuXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZU51bWJlciA9PT0gMSB8fCByZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlByZXZpb3VzIFBhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXVwIGJ1dHRvbi1pbWFnZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwicHJldmlvdXNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWNyZWFzZVBhZ2VOdW1iZXIoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibXZEb3duQnRuXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZU51bWJlciA9PT0gcGFnZUNvdW50IHx8IHJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiTmV4dCBQYWdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1kb3duIGJ1dHRvbi1pbWFnZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwibmV4dFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlYXNlUGFnZU51bWJlcigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgaWQ9XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhtY3RzLXRvb2xiYXItaW5wdXQgZ292dWstaW5wdXQtLXdpZHRoLTJcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiUGFnZSBOdW1iZXJcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwiMVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjRcIlxuICAgICAgICAgICAgICAgIG1pbj1cIjFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwicGFnZSBudW1iZXJcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwicGFnZVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VOdW1iZXJJbnB1dENoYW5nZShwYWdlTnVtYmVySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgI3BhZ2VOdW1iZXJJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3BhbiBpZD1cIm51bVBhZ2VzXCIgY2xhc3M9XCJ0b29sYmFyTGFiZWxcIj4vIHt7IHBhZ2VDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dab29tXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwibXZab29tQnRuXCJcbiAgICAgICAgICAgICAgI212Wm9vbUJ0blxuICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS16b29tXCJcbiAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXT1cIlxuICAgICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPCB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlpvb21CdG4nXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi1kcm9wZG93bl09XCJcbiAgICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoID49IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212Wm9vbUJ0biddXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICB0b29sYmFyRXZlbnRzLnpvb21WYWx1ZVN1YmplY3QudmFsdWUgPT09IDAuMSB8fFxuICAgICAgICAgICAgICAgICAgcmVkYWN0QWxsSW5Qcm9ncmVzc1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJtdk1pbnVzQnRuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS16b29tLW91dCBidXR0b24taW1hZ2VcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiWm9vbSBPdXRcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInpvb21fb3V0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RlcFpvb20oLTAuMSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tem9vbS1vdXQtdGV4dFwiPnt7XG4gICAgICAgICAgICAgICAgICBcIlpvb20gT3V0XCIgfCBycHhUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBpZD1cInNjYWxlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhtY3RzLXRvb2xiYXItc2VsZWN0XCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlpvb21cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiem9vbVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ6b29tKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiem9vbVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgI3pvb21TZWxlY3RcbiAgICAgICAgICAgICAgICAgIGlkPVwiY3VzdG9tU2NhbGVPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC52YWx1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgdG9vbGJhckV2ZW50cy56b29tVmFsdWVTdWJqZWN0LnZhbHVlICogMTAwXG4gICAgICAgICAgICAgICAgICAgICAgfCBudW1iZXIgOiBcIjEuMC0wXCJcbiAgICAgICAgICAgICAgICAgIH19JVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB6b29tU2NhbGUgb2Ygem9vbVNjYWxlc1wiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiem9vbVNjYWxlXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbDEwbi1pZF09XCIncGFnZV9zY2FsZV9wZXJjZW50XycgKyB6b29tU2NhbGUgKiAxMDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHpvb21TY2FsZSAqIDEwMCB9fSVcbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC52YWx1ZSA9PT0gNSB8fFxuICAgICAgICAgICAgICAgICAgcmVkYWN0QWxsSW5Qcm9ncmVzc1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJtdlBsdXNCdG5cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXpvb20taW4gYnV0dG9uLWltYWdlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RlcFpvb20oMC4xKVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJab29tIEluXCJcbiAgICAgICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJ6b29tX2luXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXpvb20tb3V0LXRleHRcIj57e1xuICAgICAgICAgICAgICAgICAgXCJab29tIEluXCIgfCBycHhUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd1JvdGF0ZVwiXG4gICAgICAgICAgICBpZD1cIm12Um90YXRlQnRuXCJcbiAgICAgICAgICAgICNtdlJvdGF0ZUJ0blxuICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tcm90YXRlXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLXRvb2xiYXJdPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPCB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlJvdGF0ZUJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZSb3RhdGVCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwibXZSb3RhdGVMZWZ0QnRuXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tcm90YXRlX2xlZnQgYnV0dG9uLWltYWdlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJSb3RhdGUgQ291bnRlcmNsb2Nrd2lzZVwiXG4gICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInBhZ2Vfcm90YXRlX2Njd1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyb3RhdGUoMjcwKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwibXZSb3RhdGVSaWdodEJ0blwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXJvdGF0ZV9yaWdodCBidXR0b24taW1hZ2VcIlxuICAgICAgICAgICAgICB0aXRsZT1cIlJvdGF0ZSBDbG9ja3dpc2VcIlxuICAgICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJwYWdlX3JvdGF0ZV9jd1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyb3RhdGUoOTApXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiUm90YXRlXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dTZWFyY2hCYXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBpZD1cIm12U2VhcmNoQnRuXCJcbiAgICAgICAgICAgICNtdlNlYXJjaEJ0blxuICAgICAgICAgICAgdGl0bGU9XCJTZWFyY2hcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwic2VhcmNoYmFyXCJcbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1zZWFyY2hcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tdG9vbGJhcl09XCJcbiAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA8IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212U2VhcmNoQnRuJ11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi1kcm9wZG93bl09XCJcbiAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA+PSB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlNlYXJjaEJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJhcigpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJTZWFyY2hcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bXYtc2VhcmNoLWJhclxuICAgICAgICAgICAgKm5nSWY9XCIhdG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4uZ2V0VmFsdWUoKVwiXG4gICAgICAgICAgPjwvbXYtc2VhcmNoLWJhcj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlSUNQICYmIHRvb2xiYXJCdXR0b25zLnNob3dQcmVzZW50YXRpb25Nb2RlICYmIGlzUGRmKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgIWNvbnRlbnRUeXBlIHx8IHJlZGFjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgaWQ9XCJtdlByZXNlbnRCdG5cIlxuICAgICAgICAgICAgI212UHJlc2VudEJ0blxuICAgICAgICAgICAgY2xhc3M9XCJtdi1idXR0b24gbXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXByZXNlbnRcIlxuICAgICAgICAgICAgdGl0bGU9XCJJbi1Db3VydCBQcmVzZW50YXRpb24gTW9kZVwiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJpY3BNb2RlX2xhYmVsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm9uVG9vbEJhck9mZlNldENoYW5nZSgnbXZQcmVzZW50QnRuJylcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVByZXNlbnRCYXIoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cImljcE1vZGVfbGFiZWxcIj57e1xuICAgICAgICAgICAgICBcIlByZXNlbnRcIiB8IHJweFRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImVuYWJsZVJlZGFjdGlvbnMgJiYgdG9vbGJhckJ1dHRvbnMuc2hvd1JlZGFjdFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaWNwRW5hYmxlZCB8fCByZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgIGlkPVwibXZSZWRhY3RCdG5cIlxuICAgICAgICAgICAgI212UmVkYWN0QnRuXG4gICAgICAgICAgICB0aXRsZT1cIlJlZGFjdFwiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJyZWRhY3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdi1idXR0b24gbXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXJlZGFjdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212UmVkYWN0QnRuJylcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlZGFjdEJhcigpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJSZWRhY3RcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd0dyYWJORHJhZ0J1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaWNwRW5hYmxlZCB8fCByZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgIGlkPVwibXZHcmFiQnRuXCJcbiAgICAgICAgICAgICNtdkdyYWJCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1ncmFiXCJcbiAgICAgICAgICAgIHRpdGxlPVwiR3JhYiBhbmQgZHJhZ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212R3JhYkJ0bicpXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmFiTkRyYWcoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiR3JhYiBhbmQgZHJhZ1wiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93RG93bmxvYWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0aW9uRW5hYmxlZFwiXG4gICAgICAgICAgICBpZD1cIm12RG93bmxvYWRCdG5cIlxuICAgICAgICAgICAgI212RG93bmxvYWRCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1kb3dubG9hZFwiXG4gICAgICAgICAgICB0aXRsZT1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImRvd25sb2FkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm9uVG9vbEJhck9mZlNldENoYW5nZSgnbXZEb3dubG9hZEJ0bicpXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiRG93bmxvYWRcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd1ByaW50XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpY3BFbmFibGVkIHx8IHJlZGFjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgaWQ9XCJtdlByaW50QnRuXCJcbiAgICAgICAgICAgICNtdlByaW50QnRuXG4gICAgICAgICAgICB0aXRsZT1cIlByaW50XCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInByaW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1wcmludFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212UHJpbnRCdG4nKVwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJpbnRGaWxlKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIlByaW50XCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImVuYWJsZUFubm90YXRpb25zICYmIHRvb2xiYXJCdXR0b25zLnNob3dDb21tZW50U3VtbWFyeVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uRW5hYmxlZFwiXG4gICAgICAgICAgICBpZD1cIm12Q29tbWVudHNCdG5cIlxuICAgICAgICAgICAgI212Q29tbWVudHNCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1jb21tZW50c1wiXG4gICAgICAgICAgICB0aXRsZT1cIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImNvbW1lbnRzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm9uVG9vbEJhck9mZlNldENoYW5nZSgnbXZDb21tZW50c0J0bicpXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21tZW50c1BhbmVsKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIkNvbW1lbnRzXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJsb2FkaW5nQmFyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsaW1tZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3Rvb2xiYXIvbWFpbi10b29sYmFyL21haW4tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL21haW4tdG9vbGJhci9tYWluLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkIsTUFBTSxPQUFPLG9CQUFvQjtJQXdDL0IsWUFDa0IsYUFBa0MsRUFDbEMsY0FBOEMsRUFDN0MsR0FBc0IsRUFDdEIsWUFBaUMsRUFDakMsZUFBZ0M7UUFKakMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUM3QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBM0MxQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFNWCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFN0MsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFJekIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCx1QkFB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Q3JCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO2tJQTdNVSxvQkFBb0I7c0hBQXBCLG9CQUFvQixtcEJDdEJqQyxrbGhCQXNhQTs7NEZEaFphLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxpQkFBaUI7cU9BS2xCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUU2QyxVQUFVO3NCQUE1RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1ksYUFBYTtzQkFBbEUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNRLFdBQVc7c0JBQS9ELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE0RXJDLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRTtnQkFPMUIsY0FBYztzQkFGcEIsWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3JELFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVtYmVySGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zaGFyZWQvdXRpbC9zZXJ2aWNlcy9udW1iZXIuaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNwRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vaWNwLWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tYWluLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFpbi10b29sYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYWluVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBlbmFibGVBbm5vdGF0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVSZWRhY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUlDUCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb250ZW50VHlwZSA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnem9vbVNlbGVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgem9vbVNlbGVjdDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXZUb29sYmFyTWFpbicsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgbXZUb29sYmFyTWFpbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTWVudScsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgbXZNZW51SXRlbXM6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgaWNwRW5hYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgcmVkYWN0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0NvbW1lbnRzUGFuZWw6IGJvb2xlYW47XG4gIHB1YmxpYyByZWRhY3RBbGxJblByb2dyZXNzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBwYWdlTnVtYmVyID0gMTtcbiAgcHVibGljIHBhZ2VDb3VudCA9IDA7XG4gIHB1YmxpYyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZTtcbiAgcHVibGljIGRyb3Bkb3duTWVudVBvc2l0aW9ucyA9IFtcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgfSxcbiAgICAgIDAsXG4gICAgICAzKVxuICBdO1xuXG4gIHB1YmxpYyB6b29tU2NhbGVzID0gWzAuMSwgMC4yNSwgMC41LCAwLjc1LCAxLCAxLjI1LCAxLjUsIDIuNSwgMywgNV07XG5cbiAgYWxsQnV0dG9uc1dpZHRoID0gMDtcbiAgd2lkdGhSZXF1aXJlZEZvckJ0bjogeyBbaWQ6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckhlbHBlcjogTnVtYmVySGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljcEV2ZW50U2VydmljZTogSWNwRXZlbnRTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNldEN1cnJlbnRQYWdlU3ViamVjdC5zdWJzY3JpYmUocGFnZU51bWJlciA9PiB0aGlzLnNldEN1cnJlbnRQYWdlKHBhZ2VOdW1iZXIpKSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZXRDdXJyZW50UGFnZUlucHV0VmFsdWVTdWJqZWN0LnN1YnNjcmliZShwYWdlTnVtYmVyID0+IHRoaXMucGFnZU51bWJlciA9IHBhZ2VOdW1iZXIpLFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmdldFBhZ2VDb3VudCgpLnN1YnNjcmliZShjb3VudCA9PiB0aGlzLnBhZ2VDb3VudCA9IGNvdW50KSxcbiAgICAgIHRoaXMuaWNwRXZlbnRTZXJ2aWNlLmVuYWJsZWQuc3Vic2NyaWJlKGVuYWJsZWQgPT4ge1xuICAgICAgICB0aGlzLmljcEVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICBpZiAodGhpcy5pY3BFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnRvZ2dsZUNvbW1lbnRzUGFuZWwoIWVuYWJsZWQpO1xuICAgICAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3Blbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZS5zdWJzY3JpYmUoZW5hYmxlZCA9PiB7XG4gICAgICAgIHRoaXMucmVkYWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICB9KSxcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdC5zdWJzY3JpYmUoZGlzYWJsZSA9PiB7XG4gICAgICAgIHRoaXMucmVkYWN0QWxsSW5Qcm9ncmVzcyA9IGRpc2FibGU7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBBcnJheS5mcm9tKHRoaXMubXZUb29sYmFyTWFpbi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKS5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICB0aGlzLmFsbEJ1dHRvbnNXaWR0aCArPSBidXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICB0aGlzLndpZHRoUmVxdWlyZWRGb3JCdG5bYnV0dG9uLmlkXSA9IHRoaXMuYWxsQnV0dG9uc1dpZHRoO1xuICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbXSlcbiAgcHVibGljIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5wJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5tZXRhLnAnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Db250cm9sUHJpbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJpbnRGaWxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0hpZ2hsaWdodFRvZ2dsZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlSGlnaGxpZ2h0VG9vbGJhcigpO1xuICB9XG4gIHB1YmxpYyBvbkNsaWNrRHJhd1RvZ2dsZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlRHJhd01vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVJbmRleFNpZGVCYXIoKSB7XG4gICAgY29uc3Qgc2lkZWJhck9wZW4gPSB0aGlzLnRvb2xiYXJFdmVudHMuc2lkZWJhck9wZW4uZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBzaWRlYmFyVmlldyA9IHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3V0bGluZVZpZXcuZ2V0VmFsdWUoKTtcbiAgICBpZiAoIShzaWRlYmFyT3BlbiAmJiAhc2lkZWJhclZpZXcpKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlU2lkZUJhcighc2lkZWJhck9wZW4pO1xuICAgIH1cbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlU2lkZUJhclZpZXcodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub29sQmFyT2ZmU2V0Q2hhbmdlKGJ1dHRvbklkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5tdlRvb2xiYXJNYWluICYmIHRoaXMubXZUb29sYmFyTWFpbi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgdGhpcy53aWR0aFJlcXVpcmVkRm9yQnRuW2J1dHRvbklkXSkge1xuICAgICAgcmV0dXJuIFwiYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXCI7XG5cbiAgICB9XG4gICAgcmV0dXJuIFwiYnV0dG9uLWhpZGRlbi1vbi1kcm9wZG93blwiO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUJvb2ttYXJrc1NpZGVCYXIoKSB7XG4gICAgY29uc3Qgc2lkZWJhck9wZW4gPSB0aGlzLnRvb2xiYXJFdmVudHMuc2lkZWJhck9wZW4uZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBzaWRlYmFyVmlldyA9IHRoaXMudG9vbGJhckV2ZW50cy5zaWRlYmFyT3V0bGluZVZpZXcuZ2V0VmFsdWUoKTtcbiAgICBpZiAoIShzaWRlYmFyT3BlbiAmJiBzaWRlYmFyVmlldykpIHtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVTaWRlQmFyKCFzaWRlYmFyT3Blbik7XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVTaWRlQmFyVmlldyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUHJlc2VudEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5pY3BFdmVudFNlcnZpY2UuZW5hYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5jcmVhc2VQYWdlTnVtYmVyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5pbmNyZW1lbnRQYWdlKDEpO1xuICB9XG5cbiAgcHVibGljIGRlY3JlYXNlUGFnZU51bWJlcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuaW5jcmVtZW50UGFnZSgtMSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdlTnVtYmVySW5wdXRDaGFuZ2UocGFnZU51bWJlcjogc3RyaW5nKSB7XG4gICAgaWYgKE51bWJlcihwYWdlTnVtYmVyKSA8IDEpIHtcbiAgICAgIHBhZ2VOdW1iZXIgPSAnMSc7XG4gICAgfVxuICAgIGlmIChOdW1iZXIocGFnZU51bWJlcikgPiB0aGlzLnBhZ2VDb3VudCkge1xuICAgICAgcGFnZU51bWJlciA9IHRoaXMucGFnZUNvdW50LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnNldFBhZ2UoTnVtYmVyLnBhcnNlSW50KHBhZ2VOdW1iZXIsIDEwKSk7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMucGFnZU51bWJlciA9IHBhZ2VOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgcm90YXRlKHJvdGF0aW9uOiBudW1iZXIpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMucm90YXRlKHJvdGF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludEZpbGUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnByaW50KCk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRGaWxlKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5kb3dubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIHpvb20oem9vbUZhY3Rvcjogc3RyaW5nKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnpvb20oK3pvb21GYWN0b3IpO1xuICB9XG5cbiAgcHVibGljIHN0ZXBab29tKHpvb21GYWN0b3I6IG51bWJlcikge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zdGVwWm9vbSh6b29tRmFjdG9yKTtcbiAgICB0aGlzLnpvb21TZWxlY3QubmF0aXZlRWxlbWVudC5zZWxlY3RlZCA9ICdzZWxlY3RlZCc7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ29tbWVudHNQYW5lbCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlQ29tbWVudHNQYW5lbCghdGhpcy50b29sYmFyRXZlbnRzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJlZGFjdEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlUmVkYWN0aW9uTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUdyYWJORHJhZygpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlR3JhYk5EcmFnKCk7XG4gIH1cblxuICBwdWJsaWMgaXNQZGYoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFR5cGUgPT09ICdwZGYnO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQoIXRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4uZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTW9yZU9wdGlvbnMoKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duTWVudU9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duTWVudU9wZW47XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tdk1lbnVJdGVtcykge1xuICAgICAgICB0aGlzLm12TWVudUl0ZW1zLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidG9vbGJhclwiPlxuICA8ZGl2IGlkPVwidG9vbGJhckNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtdi10b29sYmFyX19jb250YWluZXJcIj5cbiAgICAgIDxkaXYgI212VG9vbGJhciBjbGFzcz1cIm12LXRvb2xiYXJcIiBbY2xhc3Mubm90U3VwcG9ydGVkXT1cIiFjb250ZW50VHlwZVwiPlxuICAgICAgICA8IS0tIFRoZSBtdlRvb2xiYXJNYWluIGRpdiBjb250YWlucyBhbGwgdG9vbGJhciBidXR0b25zIGV4Y2VwdCB0aGUgXCJNb3JlIG9wdGlvbnNcIiBidXR0b24uIFRoaXMgYWxsb3dzIGZvciBjYWxjdWxhdGlvbiBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlIHRvIGRpc3BsYXkgYnV0dG9ucyAtLT5cbiAgICAgICAgPGRpdiBpZD1cIm12VG9vbGJhck1haW5cIiBjbGFzcz1cIm12LXRvb2xiYXItbWFpblwiICNtdlRvb2xiYXJNYWluPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVGhlIG12VG9vbGJhck1vcmVPcHRpb25zIGRpdiBjb250YWlucyB0aGUgXCJNb3JlIG9wdGlvbnNcIiB0b29sYmFyIGJ1dHRvbiAoYW5kIHRoZSBvdmVybGF5IHRlbXBsYXRlIGZvciB0aGUgZHJvcGRvd24gbWVudSkuXG4gICAgICAgICAgICBUaGUgc3BhY2Ugb2NjdXBpZWQgYnkgdGhlIGJ1dHRvbiAoaWYgdmlzaWJsZSkgaXMgZXhjbHVkZWQgZnJvbSB0aGUgdG9vbGJhciBzcGFjZSBhdmFpbGFibGUgY2FsY3VsYXRpb24gLS0+XG4gICAgICAgIDxkaXYgaWQ9XCJtdlRvb2xiYXJNb3JlT3B0aW9uc1wiIGNsYXNzPVwibXYtdG9vbGJhci1tb3JlLW9wdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cIm12TW9yZU9wdGlvbnNCdG5cIlxuICAgICAgICAgICAgY2xhc3M9XCJtdi1idXR0b24gbXYtdG9vbGJhcl9fbWVudS1idXR0b24tLW1vcmUtb3B0aW9uc1wiXG4gICAgICAgICAgICBbY2xhc3MubXYtdG9vbGJhcl9fbWVudS1idXR0b24tLW1vcmUtb3B0aW9uc19faGlkZGVuXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXIub2Zmc2V0V2lkdGggPj0gYWxsQnV0dG9uc1dpZHRoXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vcmVPcHRpb25zKClcIlxuICAgICAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIk1vcmUgb3B0aW9uc1wiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwhLS0gVGhpcyB0ZW1wbGF0ZSBkaXNwbGF5cyB0aGUgb3ZlcmxheSBjb250ZW50IGZvciB0aGUgZHJvcGRvd24gbWVudSBhbmQgaXMgY29ubmVjdGVkIHRvIHRoZSBcIk1vcmUgb3B0aW9uc1wiIGJ1dHRvbiAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzRHJvcGRvd25NZW51T3BlblwiXG4gICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJkcm9wZG93bk1lbnVQb3NpdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgI2Ryb3Bkb3duTWVudSB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cIm12TWVudUl0ZW1zXCIgI212TWVudUl0ZW1zPlxuICAgICAgICA8bmctdGVtcGxhdGUgI21lbnVJdGVtcz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dTaWRlYmFyXCJcbiAgICAgICAgICAgIGlkPVwibXZJbmRleEJ0blwiXG4gICAgICAgICAgICB0aXRsZT1cIkluZGV4XCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImluZGV4XCJcbiAgICAgICAgICAgICNtdkluZGV4QnRuXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0taW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tdG9vbGJhcl09XCJcbiAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA8IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212SW5kZXhCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLWRyb3Bkb3duXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoID49IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212SW5kZXhCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJbmRleFNpZGVCYXIoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiSW5kZXhcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd1NpZGViYXJcIlxuICAgICAgICAgICAgaWQ9XCJtdkJvb2ttYXJrc0J0blwiXG4gICAgICAgICAgICB0aXRsZT1cIkJvb2ttYXJrc1wiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJib29rbWFya3NcIlxuICAgICAgICAgICAgI212Qm9va21hcmtzQnRuXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdtdi1idXR0b24gbXYtdG9vbGJhcl9fbWVudS1idXR0b24tLWJvb2ttYXJrcyc6IHRydWUsXG4gICAgICAgICAgICAgICdidXR0b24taGlkZGVuLW9uLXRvb2xiYXInOlxuICAgICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPFxuICAgICAgICAgICAgICAgIHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212Qm9va21hcmtzQnRuJ10sXG4gICAgICAgICAgICAgICdidXR0b24taGlkZGVuLW9uLWRyb3Bkb3duJzpcbiAgICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoID49XG4gICAgICAgICAgICAgICAgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZCb29rbWFya3NCdG4nXVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQm9va21hcmtzU2lkZUJhcigpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJCb29rbWFya3NcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd0RyYXdCdXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0aW9uRW5hYmxlZFwiXG4gICAgICAgICAgICBpZD1cIm12RHJhd0J0blwiXG4gICAgICAgICAgICAjbXZEcmF3QnRuXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tZHJhd1wiXG4gICAgICAgICAgICB0aXRsZT1cIkRyYXcgYSBib3hcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tdG9vbGJhcl09XCJcbiAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA8IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212RHJhd0J0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZEcmF3QnRuJ11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MudG9nZ2xlZF09XCJ0b29sYmFyRXZlbnRzLmRyYXdNb2RlU3ViamVjdCB8IGFzeW5jXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInRvZ2dsZURyYXdCdXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tEcmF3VG9nZ2xlKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJkcmF3X2xhYmVsXCI+e3tcbiAgICAgICAgICAgICAgXCJEcmF3IGEgYm94XCIgfCBycHhUcmFuc2xhdGVcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93SGlnaGxpZ2h0QnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpY3BFbmFibGVkIHx8IHJlZGFjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgaWQ9XCJtdkhpZ2hsaWdodEJ0blwiXG4gICAgICAgICAgICAjbXZIaWdobGlnaHRCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1oaWdobGlnaHRcIlxuICAgICAgICAgICAgdGl0bGU9XCJIaWdobGlnaHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhpZ2hsaWdodFwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZIaWdobGlnaHRCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLWRyb3Bkb3duXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoID49IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212SGlnaGxpZ2h0QnRuJ11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY2xhc3MudG9nZ2xlZF09XCJ0b29sYmFyRXZlbnRzLmhpZ2hsaWdodFRvb2xiYXJTdWJqZWN0IHwgYXN5bmNcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tIaWdobGlnaHRUb2dnbGUoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlSGlnaGxpZ2h0QnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJoaWdobGlnaHRfbGFiZWxcIj57e1xuICAgICAgICAgICAgICBcIkhpZ2hsaWdodFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93TmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD1cIm12UGFnZUJ0blwiXG4gICAgICAgICAgICAgICNtdlBhZ2VCdG5cbiAgICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tcGFnZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLXRvb2xiYXJdPVwiXG4gICAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA8IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212UGFnZUJ0biddXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLWRyb3Bkb3duXT1cIlxuICAgICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZQYWdlQnRuJ11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgXCJQYWdlXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibXZVcEJ0blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2VOdW1iZXIgPT09IDEgfHwgcmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJQcmV2aW91cyBQYWdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS11cCBidXR0b24taW1hZ2VcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInByZXZpb3VzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVjcmVhc2VQYWdlTnVtYmVyKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIm12RG93bkJ0blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2VOdW1iZXIgPT09IHBhZ2VDb3VudCB8fCByZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIk5leHQgUGFnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tZG93biBidXR0b24taW1hZ2VcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cIm5leHRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbmNyZWFzZVBhZ2VOdW1iZXIoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgIGlkPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJobWN0cy10b29sYmFyLWlucHV0IGdvdnVrLWlucHV0LS13aWR0aC0yXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlBhZ2UgTnVtYmVyXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxuICAgICAgICAgICAgICAgIHNpemU9XCI0XCJcbiAgICAgICAgICAgICAgICBtaW49XCIxXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInBhZ2UgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInBhZ2VcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlTnVtYmVySW5wdXRDaGFuZ2UocGFnZU51bWJlcklucHV0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICNwYWdlTnVtYmVySW5wdXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJudW1QYWdlc1wiIGNsYXNzPVwidG9vbGJhckxhYmVsXCI+LyB7eyBwYWdlQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93Wm9vbVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD1cIm12Wm9vbUJ0blwiXG4gICAgICAgICAgICAgICNtdlpvb21CdG5cbiAgICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tem9vbVwiXG4gICAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tdG9vbGJhcl09XCJcbiAgICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZab29tQnRuJ11cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgICAgbXZUb29sYmFyTWFpbi5vZmZzZXRXaWR0aCA+PSB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlpvb21CdG4nXVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgdG9vbGJhckV2ZW50cy56b29tVmFsdWVTdWJqZWN0LnZhbHVlID09PSAwLjEgfHxcbiAgICAgICAgICAgICAgICAgIHJlZGFjdEFsbEluUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGlkPVwibXZNaW51c0J0blwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tem9vbS1vdXQgYnV0dG9uLWltYWdlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlpvb20gT3V0XCJcbiAgICAgICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJ6b29tX291dFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0ZXBab29tKC0wLjEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXpvb20tb3V0LXRleHRcIj57e1xuICAgICAgICAgICAgICAgICAgXCJab29tIE91dFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgaWQ9XCJzY2FsZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJobWN0cy10b29sYmFyLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJab29tXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInpvb21cIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiem9vbSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInpvb21cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICN6b29tU2VsZWN0XG4gICAgICAgICAgICAgICAgICBpZD1cImN1c3RvbVNjYWxlT3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b29sYmFyRXZlbnRzLnpvb21WYWx1ZVN1YmplY3QudmFsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHRvb2xiYXJFdmVudHMuem9vbVZhbHVlU3ViamVjdC52YWx1ZSAqIDEwMFxuICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyIDogXCIxLjAtMFwiXG4gICAgICAgICAgICAgICAgICB9fSVcbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgem9vbVNjYWxlIG9mIHpvb21TY2FsZXNcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInpvb21TY2FsZVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWwxMG4taWRdPVwiJ3BhZ2Vfc2NhbGVfcGVyY2VudF8nICsgem9vbVNjYWxlICogMTAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB6b29tU2NhbGUgKiAxMDAgfX0lXG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICB0b29sYmFyRXZlbnRzLnpvb21WYWx1ZVN1YmplY3QudmFsdWUgPT09IDUgfHxcbiAgICAgICAgICAgICAgICAgIHJlZGFjdEFsbEluUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGlkPVwibXZQbHVzQnRuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS16b29tLWluIGJ1dHRvbi1pbWFnZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0ZXBab29tKDAuMSlcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiWm9vbSBJblwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiem9vbV9pblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS16b29tLW91dC10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgIFwiWm9vbSBJblwiIHwgcnB4VHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dSb3RhdGVcIlxuICAgICAgICAgICAgaWQ9XCJtdlJvdGF0ZUJ0blwiXG4gICAgICAgICAgICAjbXZSb3RhdGVCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXJvdGF0ZVwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWhpZGRlbi1vbi10b29sYmFyXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoIDwgd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZSb3RhdGVCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLWRyb3Bkb3duXT1cIlxuICAgICAgICAgICAgICBtdlRvb2xiYXJNYWluLm9mZnNldFdpZHRoID49IHdpZHRoUmVxdWlyZWRGb3JCdG5bJ212Um90YXRlQnRuJ11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cIm12Um90YXRlTGVmdEJ0blwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXYtdG9vbGJhcl9fbWVudS1idXR0b24tLXJvdGF0ZV9sZWZ0IGJ1dHRvbi1pbWFnZVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiUm90YXRlIENvdW50ZXJjbG9ja3dpc2VcIlxuICAgICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJwYWdlX3JvdGF0ZV9jY3dcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicm90YXRlKDI3MClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cIm12Um90YXRlUmlnaHRCdG5cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1yb3RhdGVfcmlnaHQgYnV0dG9uLWltYWdlXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJSb3RhdGUgQ2xvY2t3aXNlXCJcbiAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwicGFnZV9yb3RhdGVfY3dcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicm90YXRlKDkwKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIlJvdGF0ZVwiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93U2VhcmNoQmFyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpY3BFbmFibGVkIHx8IHJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgaWQ9XCJtdlNlYXJjaEJ0blwiXG4gICAgICAgICAgICAjbXZTZWFyY2hCdG5cbiAgICAgICAgICAgIHRpdGxlPVwiU2VhcmNoXCJcbiAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cInNlYXJjaGJhclwiXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tc2VhcmNoXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24taGlkZGVuLW9uLXRvb2xiYXJdPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPCB3aWR0aFJlcXVpcmVkRm9yQnRuWydtdlNlYXJjaEJ0biddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NsYXNzLmJ1dHRvbi1oaWRkZW4tb24tZHJvcGRvd25dPVwiXG4gICAgICAgICAgICAgIG12VG9vbGJhck1haW4ub2Zmc2V0V2lkdGggPj0gd2lkdGhSZXF1aXJlZEZvckJ0blsnbXZTZWFyY2hCdG4nXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2hCYXIoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiU2VhcmNoXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG12LXNlYXJjaC1iYXJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLmdldFZhbHVlKClcIlxuICAgICAgICAgID48L212LXNlYXJjaC1iYXI+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImVuYWJsZUlDUCAmJiB0b29sYmFyQnV0dG9ucy5zaG93UHJlc2VudGF0aW9uTW9kZSAmJiBpc1BkZigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpY3BFbmFibGVkIHx8ICFjb250ZW50VHlwZSB8fCByZWRhY3Rpb25FbmFibGVkXCJcbiAgICAgICAgICAgIGlkPVwibXZQcmVzZW50QnRuXCJcbiAgICAgICAgICAgICNtdlByZXNlbnRCdG5cbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1wcmVzZW50XCJcbiAgICAgICAgICAgIHRpdGxlPVwiSW4tQ291cnQgUHJlc2VudGF0aW9uIE1vZGVcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiaWNwTW9kZV9sYWJlbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212UHJlc2VudEJ0bicpXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQcmVzZW50QmFyKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJpY3BNb2RlX2xhYmVsXCI+e3tcbiAgICAgICAgICAgICAgXCJQcmVzZW50XCIgfCBycHhUcmFuc2xhdGVcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVSZWRhY3Rpb25zICYmIHRvb2xiYXJCdXR0b25zLnNob3dSZWRhY3RcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBpZD1cIm12UmVkYWN0QnRuXCJcbiAgICAgICAgICAgICNtdlJlZGFjdEJ0blxuICAgICAgICAgICAgdGl0bGU9XCJSZWRhY3RcIlxuICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwicmVkYWN0XCJcbiAgICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIG12LXRvb2xiYXJfX21lbnUtYnV0dG9uLS1yZWRhY3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwib25Ub29sQmFyT2ZmU2V0Q2hhbmdlKCdtdlJlZGFjdEJ0bicpXCJcbiAgICAgICAgICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWRhY3RCYXIoKTsgaXNEcm9wZG93bk1lbnVPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IFwiUmVkYWN0XCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dHcmFiTkRyYWdCdXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImljcEVuYWJsZWQgfHwgcmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBpZD1cIm12R3JhYkJ0blwiXG4gICAgICAgICAgICAjbXZHcmFiQnRuXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tZ3JhYlwiXG4gICAgICAgICAgICB0aXRsZT1cIkdyYWIgYW5kIGRyYWdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwib25Ub29sQmFyT2ZmU2V0Q2hhbmdlKCdtdkdyYWJCdG4nKVwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JhYk5EcmFnKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIkdyYWIgYW5kIGRyYWdcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidG9vbGJhckJ1dHRvbnMuc2hvd0Rvd25sb2FkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpY3BFbmFibGVkIHx8IHJlZGFjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgaWQ9XCJtdkRvd25sb2FkQnRuXCJcbiAgICAgICAgICAgICNtdkRvd25sb2FkQnRuXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tZG93bmxvYWRcIlxuICAgICAgICAgICAgdGl0bGU9XCJEb3dubG9hZFwiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJkb3dubG9hZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212RG93bmxvYWRCdG4nKVwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRGaWxlKCk7IGlzRHJvcGRvd25NZW51T3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBcIkRvd25sb2FkXCIgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dQcmludFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaWNwRW5hYmxlZCB8fCByZWRhY3Rpb25FbmFibGVkXCJcbiAgICAgICAgICAgIGlkPVwibXZQcmludEJ0blwiXG4gICAgICAgICAgICAjbXZQcmludEJ0blxuICAgICAgICAgICAgdGl0bGU9XCJQcmludFwiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJwcmludFwiXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tcHJpbnRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwib25Ub29sQmFyT2ZmU2V0Q2hhbmdlKCdtdlByaW50QnRuJylcIlxuICAgICAgICAgICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByaW50RmlsZSgpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJQcmludFwiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVBbm5vdGF0aW9ucyAmJiB0b29sYmFyQnV0dG9ucy5zaG93Q29tbWVudFN1bW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgaWQ9XCJtdkNvbW1lbnRzQnRuXCJcbiAgICAgICAgICAgICNtdkNvbW1lbnRzQnRuXG4gICAgICAgICAgICBjbGFzcz1cIm12LWJ1dHRvbiBtdi10b29sYmFyX19tZW51LWJ1dHRvbi0tY29tbWVudHNcIlxuICAgICAgICAgICAgdGl0bGU9XCJDb21tZW50c1wiXG4gICAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJjb21tZW50c1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJvblRvb2xCYXJPZmZTZXRDaGFuZ2UoJ212Q29tbWVudHNCdG4nKVwiXG4gICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tbWVudHNQYW5lbCgpOyBpc0Ryb3Bkb3duTWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgXCJDb21tZW50c1wiIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwibG9hZGluZ0JhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbGltbWVyXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,14 +1,15 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, Subject } from 'rxjs';
3
- import * as icpEvents from './icp-event.service';
4
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "./icp-event.service";
5
5
  export var SearchType;
6
6
  (function (SearchType) {
7
7
  SearchType["Redact"] = "Redact";
8
8
  SearchType["Highlight"] = "Highlight";
9
9
  })(SearchType || (SearchType = {}));
10
10
  export class ToolbarEventService {
11
- constructor() {
11
+ constructor(icpEventService) {
12
+ this.icpEventService = icpEventService;
12
13
  this.highlightModeSubject = new BehaviorSubject(false);
13
14
  this.highlightToolbarSubject = new BehaviorSubject(false);
14
15
  this.drawModeSubject = new BehaviorSubject(false);
@@ -39,7 +40,6 @@ export class ToolbarEventService {
39
40
  this.sidebarOutlineView = new BehaviorSubject(true);
40
41
  this.searchBarHidden = new BehaviorSubject(true);
41
42
  this.commentsPanelVisible = new BehaviorSubject(false);
42
- this.icp = icpEvents;
43
43
  }
44
44
  /**
45
45
  * Reset the stateful behaviour subjects
@@ -166,13 +166,13 @@ export class ToolbarEventService {
166
166
  if (isVisible) {
167
167
  this.toggleCommentsPanel(!isVisible);
168
168
  }
169
- this.icp.participantsListVisible.next(isVisible);
169
+ this.icpEventService.participantsListVisible.next(isVisible);
170
170
  }
171
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
171
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarEventService, deps: [{ token: i1.IcpEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
172
172
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarEventService, providedIn: 'root' }); }
173
173
  }
174
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarEventService, decorators: [{
175
175
  type: Injectable,
176
176
  args: [{ providedIn: 'root' }]
177
- }] });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDOztBQXFCakQsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQixxQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUFRRCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBR2tCLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFnQixLQUFLLENBQUMsQ0FBQztRQUNqRSw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsS0FBSyxDQUFDLENBQUM7UUFDcEUsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxLQUFLLENBQUMsQ0FBQztRQUN2RCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUMvQyw4QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUM5RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xELHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDekMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFB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LGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIGljcEV2ZW50cyBmcm9tICcuL2ljcC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IHBhcnRpY2lwYW50c0xpc3RWaXNpYmxlIH0gZnJvbSAnLi9pY3AtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZWRhY3Rpb25TZWFyY2ggfSBmcm9tICcuL3JlZGFjdGlvbi1zZWFyY2gtYmFyL3JlZGFjdGlvbi1zZWFyY2gubW9kZWwnO1xuXG4vLyBUb29sYmFyIEN1c3RvbS1FdmVudCBUeXBlc1xuZXhwb3J0IHR5cGUgSGlnaGxpZ2h0TW9kZSA9IGJvb2xlYW47XG5leHBvcnQgdHlwZSBEcmF3TW9kZSA9IGJvb2xlYW47XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaE9wZXJhdGlvbiB7XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgaGlnaGxpZ2h0QWxsOiBib29sZWFuO1xuICBtYXRjaENhc2U6IGJvb2xlYW47XG4gIHdob2xlV29yZDogYm9vbGVhbjtcbiAgcHJldmlvdXM6IGJvb2xlYW47XG4gIHJlc2V0OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSZXN1bHRzQ291bnQge1xuICBjdXJyZW50OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXI7XG4gIGlzUHJldmlvdXM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIFNlYXJjaFR5cGUge1xuICBSZWRhY3QgPSAnUmVkYWN0JyxcbiAgSGlnaGxpZ2h0ID0gJ0hpZ2hsaWdodCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoTW9kZSB7XG4gIG1vZGVUeXBlOiBTZWFyY2hUeXBlO1xuICBpc09wZW46IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckV2ZW50U2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGhpZ2hsaWdodE1vZGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIaWdobGlnaHRNb2RlPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBoaWdobGlnaHRUb29sYmFyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SGlnaGxpZ2h0TW9kZT4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZHJhd01vZGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcmF3TW9kZT4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgcm90YXRlU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxTZWFyY2hPcGVyYXRpb24+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hSZXN1bHRzQ291bnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U2VhcmNoUmVzdWx0c0NvdW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgem9vbVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzdGVwWm9vbVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSB6b29tVmFsdWVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDEpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFnZUNvdW50U3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHByaW50U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBkb3dubG9hZFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0Q3VycmVudFBhZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0Q3VycmVudFBhZ2VJbnB1dFZhbHVlU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZVBhZ2VCeURlbHRhU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDb21tZW50U3VtbWFyeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhYk5EcmFnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzYXZlUm90YXRpb25TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVkYWN0aW9uTW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkYWN0aW9uUHJldmlldyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhcHBseVJlZGFjdFRvRG9jdW1lbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjbGVhckFsbFJlZGFjdE1hcmtlcnMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkYWN0V2hvbGVQYWdlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlZGFjdGlvblNlcmFjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxSZWRhY3Rpb25TZWFyY2g+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlblJlZGFjdGlvblNlYXJjaCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoTW9kZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaWRlYmFyT3BlbiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkZWJhck91dGxpbmVWaWV3ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoQmFySGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1lbnRzUGFuZWxWaXNpYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljcCA9IGljcEV2ZW50cztcblxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc3RhdGVmdWwgYmVoYXZpb3VyIHN1YmplY3RzXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDdXJyZW50UGFnZVN1YmplY3QubmV4dCgxKTtcbiAgICB0aGlzLnpvb21WYWx1ZVN1YmplY3QubmV4dCgxKTtcbiAgICB0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMuaGlnaGxpZ2h0VG9vbGJhclN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5zaG93Q29tbWVudFN1bW1hcnkubmV4dChmYWxzZSk7XG4gICAgdGhpcy5ncmFiTkRyYWcubmV4dChmYWxzZSk7XG4gIH1cblxuICAvLyBGdW5jdGlvbiB0byBpbmZvcm0gT2JzZXJ2ZXJzIHRoYXQgaGlnaGxpZ2h0TW9kZSBoYXMgYmVlbiBlbmFibGVkXG4gIHB1YmxpYyB0b2dnbGVIaWdobGlnaHRNb2RlKCk6IHZvaWQge1xuICAgIC8vIEhpZ2hsaWdodCBhbmQgRHJhdyBzdGF0ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuICAgIGlmICh0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmRyYXdNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZ3JhYk5EcmFnLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIGluZm9ybSBPYnNlcnZlcnMgdGhhdCBUb2dnbGVNb2RlIGhhcyBiZWVuIGVuYWJsZWRcbiAgcHVibGljIHRvZ2dsZURyYXdNb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZ3JhYk5EcmFnLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZUhpZ2hsaWdodFRvb2xiYXIoKTogdm9pZCB7XG4gICAgdGhpcy5oaWdobGlnaHRUb29sYmFyU3ViamVjdC5uZXh0KCF0aGlzLmhpZ2hsaWdodFRvb2xiYXJTdWJqZWN0LmdldFZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHJvdGF0ZShhbmdsZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yb3RhdGVTdWJqZWN0Lm5leHQoYW5nbGUpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaChwaHJhc2U6IFNlYXJjaE9wZXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHBocmFzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VhcmNoUmVzdWx0c0NvdW50KCk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0c0NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21TdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHN0ZXBab29tKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBab29tU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRab29tVmFsdWUoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy56b29tVmFsdWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldFBhZ2VDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2VDb3VudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5wcmludFN1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNldEN1cnJlbnRQYWdlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbmNyZW1lbnRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVBhZ2VCeURlbHRhU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50UGFnZU51bWJlcigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnRQYWdlSW5wdXRWYWx1ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2hvd0NvbW1lbnRTdW1tYXJ5KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNob3dDb21tZW50U3VtbWFyeS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb21tZW50c1N1bW1hcnkodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDb21tZW50U3VtbWFyeS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlUm90YXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlUm90YXRpb25TdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVHcmFiTkRyYWcoKTogdm9pZCB7XG4gICAgdGhpcy5ncmFiTkRyYWcubmV4dCghdGhpcy5ncmFiTkRyYWcuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICB0b2dnbGVTaWRlQmFyKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2lkZWJhck9wZW4ubmV4dCh0b2dnbGUpO1xuICB9XG5cbiAgdG9nZ2xlU2lkZUJhclZpZXcodG9nZ2xlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaWRlYmFyT3V0bGluZVZpZXcubmV4dCh0b2dnbGUpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJlZGFjdGlvbk1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVkYWN0aW9uTW9kZS5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmdyYWJORHJhZy5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVkYWN0aW9uTW9kZS5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZGFjdGlvbk1vZGUubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMub3BlblJlZGFjdGlvblNlYXJjaC5uZXh0KHsgbW9kZVR5cGU6IFNlYXJjaFR5cGUuUmVkYWN0LCBpc09wZW46IGZhbHNlIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJlZGFjdGlvblByZXZpZXcodmlld01vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlZGFjdGlvblByZXZpZXcubmV4dCh2aWV3TW9kZSk7XG4gIH1cblxuICBwdWJsaWMgdW5tYXJrQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJBbGxSZWRhY3RNYXJrZXJzLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVJlZGFjdGlvblRvRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseVJlZGFjdFRvRG9jdW1lbnQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHJlZGFjdFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZWRhY3RXaG9sZVBhZ2UubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNvbW1lbnRzUGFuZWwoaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgdGhpcy50b2dnbGVQYXJ0aWNpcGFudHNMaXN0KCFpc1Zpc2libGUpO1xuICAgIH1cbiAgICB0aGlzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLm5leHQoaXNWaXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQYXJ0aWNpcGFudHNMaXN0KGlzVmlzaWJsZTogYm9vbGVhbikge1xuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlQ29tbWVudHNQYW5lbCghaXNWaXNpYmxlKTtcbiAgICB9XG4gICAgdGhpcy5pY3AucGFydGljaXBhbnRzTGlzdFZpc2libGUubmV4dChpc1Zpc2libGUpO1xuICB9XG59XG4iXX0=
177
+ }], ctorParameters: () => [{ type: i1.IcpEventService }] });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBdUI1RCxNQUFNLENBQU4sSUFBWSxVQUdYO0FBSEQsV0FBWSxVQUFVO0lBQ3BCLCtCQUFpQixDQUFBO0lBQ2pCLHFDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQVFELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRXBDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFnQixLQUFLLENBQUMsQ0FBQztRQUNqRSw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsS0FBSyxDQUFDLENBQUM7UUFDcEUsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxLQUFLLENBQUMsQ0FBQztRQUN2RCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUMvQyw4QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUM5RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xELHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDekMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QywwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQzlDLG9DQUErQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDeEQsNkJBQXdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUUxQyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDMUMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1QywwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzVDLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QywyQkFBc0IsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUN4RCwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFFbkUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBbkNYLENBQUM7SUFxQ3hEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsbUVBQW1FO0lBQzVELG1CQUFtQjtRQUN4QixtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDekQsY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUF1QjtRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0scUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTSxJQUFJLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFlO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxRQUFpQjtRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsU0FBa0I7UUFDM0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxTQUFrQjtRQUM5QyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7a0lBOUxVLG1CQUFtQjtzSUFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbi8vIGltcG9ydCAqIGFzIGljcEV2ZW50cyBmcm9tICcuL2ljcC1ldmVudC5zZXJ2aWNlJztcbi8vIGltcG9ydCB7IHBhcnRpY2lwYW50c0xpc3RWaXNpYmxlIH0gZnJvbSAnLi9pY3AtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZWRhY3Rpb25TZWFyY2ggfSBmcm9tICcuL3JlZGFjdGlvbi1zZWFyY2gtYmFyL3JlZGFjdGlvbi1zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgSWNwRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9pY3AtZXZlbnQuc2VydmljZSc7XG5cbi8vIFRvb2xiYXIgQ3VzdG9tLUV2ZW50IFR5cGVzXG5leHBvcnQgdHlwZSBIaWdobGlnaHRNb2RlID0gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIERyYXdNb2RlID0gYm9vbGVhbjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoT3BlcmF0aW9uIHtcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuICBoaWdobGlnaHRBbGw6IGJvb2xlYW47XG4gIG1hdGNoQ2FzZTogYm9vbGVhbjtcbiAgd2hvbGVXb3JkOiBib29sZWFuO1xuICBwcmV2aW91czogYm9vbGVhbjtcbiAgcmVzZXQ6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNDb3VudCB7XG4gIGN1cnJlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgaXNQcmV2aW91czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gU2VhcmNoVHlwZSB7XG4gIFJlZGFjdCA9ICdSZWRhY3QnLFxuICBIaWdobGlnaHQgPSAnSGlnaGxpZ2h0Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hNb2RlIHtcbiAgbW9kZVR5cGU6IFNlYXJjaFR5cGU7XG4gIGlzT3BlbjogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyRXZlbnRTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGljcEV2ZW50U2VydmljZTogSWNwRXZlbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyByZWFkb25seSBoaWdobGlnaHRNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SGlnaGxpZ2h0TW9kZT4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaGlnaGxpZ2h0VG9vbGJhclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhpZ2hsaWdodE1vZGU+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRyYXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RHJhd01vZGU+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHJvdGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U2VhcmNoT3BlcmF0aW9uPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdCA9IG5ldyBTdWJqZWN0PFNlYXJjaFJlc3VsdHNDb3VudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHpvb21TdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RlcFpvb21TdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgem9vbVZhbHVlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2VDb3VudFN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwcmludFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZG93bmxvYWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNldEN1cnJlbnRQYWdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNldEN1cnJlbnRQYWdlSW5wdXRWYWx1ZVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VQYWdlQnlEZWx0YVN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q29tbWVudFN1bW1hcnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGdyYWJORHJhZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2F2ZVJvdGF0aW9uU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlZGFjdGlvbk1vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlZGFjdGlvblByZXZpZXcgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwbHlSZWRhY3RUb0RvY3VtZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJBbGxSZWRhY3RNYXJrZXJzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlZGFjdFdob2xlUGFnZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZWRhY3Rpb25TZXJhY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8UmVkYWN0aW9uU2VhcmNoPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVkYWN0QWxsSW5Qcm9ncmVzc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5SZWRhY3Rpb25TZWFyY2ggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaE1vZGUgfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2lkZWJhck9wZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpZGViYXJPdXRsaW5lVmlldyA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaEJhckhpZGRlbiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBjb21tZW50c1BhbmVsVmlzaWJsZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc3RhdGVmdWwgYmVoYXZpb3VyIHN1YmplY3RzXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDdXJyZW50UGFnZVN1YmplY3QubmV4dCgxKTtcbiAgICB0aGlzLnpvb21WYWx1ZVN1YmplY3QubmV4dCgxKTtcbiAgICB0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMuaGlnaGxpZ2h0VG9vbGJhclN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5zaG93Q29tbWVudFN1bW1hcnkubmV4dChmYWxzZSk7XG4gICAgdGhpcy5ncmFiTkRyYWcubmV4dChmYWxzZSk7XG4gIH1cblxuICAvLyBGdW5jdGlvbiB0byBpbmZvcm0gT2JzZXJ2ZXJzIHRoYXQgaGlnaGxpZ2h0TW9kZSBoYXMgYmVlbiBlbmFibGVkXG4gIHB1YmxpYyB0b2dnbGVIaWdobGlnaHRNb2RlKCk6IHZvaWQge1xuICAgIC8vIEhpZ2hsaWdodCBhbmQgRHJhdyBzdGF0ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuICAgIGlmICh0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmRyYXdNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZ3JhYk5EcmFnLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZ2hsaWdodE1vZGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIGluZm9ybSBPYnNlcnZlcnMgdGhhdCBUb2dnbGVNb2RlIGhhcyBiZWVuIGVuYWJsZWRcbiAgcHVibGljIHRvZ2dsZURyYXdNb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZ3JhYk5EcmFnLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZUhpZ2hsaWdodFRvb2xiYXIoKTogdm9pZCB7XG4gICAgdGhpcy5oaWdobGlnaHRUb29sYmFyU3ViamVjdC5uZXh0KCF0aGlzLmhpZ2hsaWdodFRvb2xiYXJTdWJqZWN0LmdldFZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHJvdGF0ZShhbmdsZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yb3RhdGVTdWJqZWN0Lm5leHQoYW5nbGUpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaChwaHJhc2U6IFNlYXJjaE9wZXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHBocmFzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VhcmNoUmVzdWx0c0NvdW50KCk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0c0NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21TdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHN0ZXBab29tKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBab29tU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRab29tVmFsdWUoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy56b29tVmFsdWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldFBhZ2VDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2VDb3VudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5wcmludFN1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNldEN1cnJlbnRQYWdlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbmNyZW1lbnRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVBhZ2VCeURlbHRhU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50UGFnZU51bWJlcigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnRQYWdlSW5wdXRWYWx1ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2hvd0NvbW1lbnRTdW1tYXJ5KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNob3dDb21tZW50U3VtbWFyeS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb21tZW50c1N1bW1hcnkodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDb21tZW50U3VtbWFyeS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlUm90YXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlUm90YXRpb25TdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVHcmFiTkRyYWcoKTogdm9pZCB7XG4gICAgdGhpcy5ncmFiTkRyYWcubmV4dCghdGhpcy5ncmFiTkRyYWcuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICB0b2dnbGVTaWRlQmFyKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2lkZWJhck9wZW4ubmV4dCh0b2dnbGUpO1xuICB9XG5cbiAgdG9nZ2xlU2lkZUJhclZpZXcodG9nZ2xlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaWRlYmFyT3V0bGluZVZpZXcubmV4dCh0b2dnbGUpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJlZGFjdGlvbk1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVkYWN0aW9uTW9kZS5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kcmF3TW9kZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmdyYWJORHJhZy5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVkYWN0aW9uTW9kZS5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZGFjdGlvbk1vZGUubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMub3BlblJlZGFjdGlvblNlYXJjaC5uZXh0KHsgbW9kZVR5cGU6IFNlYXJjaFR5cGUuUmVkYWN0LCBpc09wZW46IGZhbHNlIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVJlZGFjdGlvblByZXZpZXcodmlld01vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlZGFjdGlvblByZXZpZXcubmV4dCh2aWV3TW9kZSk7XG4gIH1cblxuICBwdWJsaWMgdW5tYXJrQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJBbGxSZWRhY3RNYXJrZXJzLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVJlZGFjdGlvblRvRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseVJlZGFjdFRvRG9jdW1lbnQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHJlZGFjdFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZWRhY3RXaG9sZVBhZ2UubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNvbW1lbnRzUGFuZWwoaXNWaXNpYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgdGhpcy50b2dnbGVQYXJ0aWNpcGFudHNMaXN0KCFpc1Zpc2libGUpO1xuICAgIH1cbiAgICB0aGlzLmNvbW1lbnRzUGFuZWxWaXNpYmxlLm5leHQoaXNWaXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQYXJ0aWNpcGFudHNMaXN0KGlzVmlzaWJsZTogYm9vbGVhbikge1xuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlQ29tbWVudHNQYW5lbCghaXNWaXNpYmxlKTtcbiAgICB9XG4gICAgdGhpcy5pY3BFdmVudFNlcnZpY2UucGFydGljaXBhbnRzTGlzdFZpc2libGUubmV4dChpc1Zpc2libGUpO1xuICB9XG59XG4iXX0=
@@ -5,7 +5,6 @@ import { MainToolbarComponent } from './main-toolbar/main-toolbar.component';
5
5
  import { SearchBarComponent } from './search-bar/search-bar.component';
6
6
  import { FormsModule } from '@angular/forms';
7
7
  import { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';
8
- import { ToolbarEventService } from './toolbar-event.service';
9
8
  import { RedactionToolbarComponent } from './redaction-toolbar/redaction-toolbar.component';
10
9
  import { IcpToolbarComponent } from './icp-toolbar/icp-toolbar.component';
11
10
  import { OverlayModule } from '@angular/cdk/overlay';
@@ -15,7 +14,6 @@ import { RpxTranslationModule } from 'rpx-xui-translation';
15
14
  import * as i0 from "@angular/core";
16
15
  import * as i1 from "rpx-xui-translation";
17
16
  export { ToolbarButtonVisibilityService } from './toolbar-button-visibility.service';
18
- export { ToolbarEventService } from './toolbar-event.service';
19
17
  export class ToolbarModule {
20
18
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21
19
  /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ToolbarModule, declarations: [SearchBarComponent,
@@ -33,8 +31,7 @@ export class ToolbarModule {
33
31
  RedactionSearchBarComponent,
34
32
  HighlightToolbarComponent] }); }
35
33
  /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarModule, providers: [
36
- ToolbarButtonVisibilityService,
37
- ToolbarEventService
34
+ ToolbarButtonVisibilityService
38
35
  ], imports: [CommonModule,
39
36
  FormsModule,
40
37
  OverlayModule,
@@ -53,8 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
53
50
  HighlightToolbarComponent
54
51
  ],
55
52
  providers: [
56
- ToolbarButtonVisibilityService,
57
- ToolbarEventService
53
+ ToolbarButtonVisibilityService
58
54
  ],
59
55
  exports: [
60
56
  MainToolbarComponent,
@@ -73,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
73
69
  ]
74
70
  }]
75
71
  }] });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFMM0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFvQzlELE1BQU0sT0FBTyxhQUFhO2tJQUFiLGFBQWE7bUlBQWIsYUFBYSxpQkEzQnRCLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IseUJBQXlCLGFBZXpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLFlBQVksc0NBWFosb0JBQW9CO1lBQ3BCLGtCQUFrQjtZQUNsQix5QkFBeUI7WUFDekIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQix5QkFBeUI7bUlBVWhCLGFBQWEsYUFwQmI7WUFDVCw4QkFBOEI7WUFDOUIsbUJBQW1CO1NBQ3BCLFlBVUMsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1lBQ2IsWUFBWTtZQUNaLG9CQUFvQixDQUFDLFFBQVEsRUFBRTs7NEZBR3RCLGFBQWE7a0JBN0J6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IseUJBQXlCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsOEJBQThCO3dCQUM5QixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7cUJBQ2hDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkYWN0aW9uU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYWluVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi10b29sYmFyL21haW4tdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4vdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZGFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3JlZGFjdGlvbi10b29sYmFyL3JlZGFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY3BUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9pY3AtdG9vbGJhci9pY3AtdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuZXhwb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4vdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSGlnaGxpZ2h0VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vaGlnaGxpZ2h0LXRvb2xiYXIvaGlnaGxpZ2h0LXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2VhcmNoQmFyQ29tcG9uZW50LFxuICAgIE1haW5Ub29sYmFyQ29tcG9uZW50LFxuICAgIFJlZGFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgSWNwVG9vbGJhckNvbXBvbmVudCxcbiAgICBSZWRhY3Rpb25TZWFyY2hCYXJDb21wb25lbnQsXG4gICAgSGlnaGxpZ2h0VG9vbGJhckNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgVG9vbGJhckV2ZW50U2VydmljZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTWFpblRvb2xiYXJDb21wb25lbnQsXG4gICAgU2VhcmNoQmFyQ29tcG9uZW50LFxuICAgIFJlZGFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgSWNwVG9vbGJhckNvbXBvbmVudCxcbiAgICBSZWRhY3Rpb25TZWFyY2hCYXJDb21wb25lbnQsXG4gICAgSGlnaGxpZ2h0VG9vbGJhckNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIFJweFRyYW5zbGF0aW9uTW9kdWxlLmZvckNoaWxkKCksXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhck1vZHVsZSB7IH1cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFKM0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFtQ3JGLE1BQU0sT0FBTyxhQUFhO2tJQUFiLGFBQWE7bUlBQWIsYUFBYSxpQkExQnRCLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IseUJBQXlCLGFBY3pCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLFlBQVksc0NBWFosb0JBQW9CO1lBQ3BCLGtCQUFrQjtZQUNsQix5QkFBeUI7WUFDekIsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQix5QkFBeUI7bUlBVWhCLGFBQWEsYUFuQmI7WUFDVCw4QkFBOEI7U0FDL0IsWUFVQyxZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixZQUFZO1lBQ1osb0JBQW9CLENBQUMsUUFBUSxFQUFFOzs0RkFHdEIsYUFBYTtrQkE1QnpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQix5QkFBeUI7cUJBQzFCO29CQUNELFNBQVMsRUFBRTt3QkFDVCw4QkFBOEI7cUJBQy9CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7cUJBQ2hDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkYWN0aW9uU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYWluVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vbWFpbi10b29sYmFyL21haW4tdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkYWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vcmVkYWN0aW9uLXRvb2xiYXIvcmVkYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljcFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2ljcC10b29sYmFyL2ljcC10b29sYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEhpZ2hsaWdodFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2hpZ2hsaWdodC10b29sYmFyL2hpZ2hsaWdodC10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBScHhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBNYWluVG9vbGJhckNvbXBvbmVudCxcbiAgICBSZWRhY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxuICAgIEljcFRvb2xiYXJDb21wb25lbnQsXG4gICAgUmVkYWN0aW9uU2VhcmNoQmFyQ29tcG9uZW50LFxuICAgIEhpZ2hsaWdodFRvb2xiYXJDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNYWluVG9vbGJhckNvbXBvbmVudCxcbiAgICBTZWFyY2hCYXJDb21wb25lbnQsXG4gICAgUmVkYWN0aW9uVG9vbGJhckNvbXBvbmVudCxcbiAgICBJY3BUb29sYmFyQ29tcG9uZW50LFxuICAgIFJlZGFjdGlvblNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBIaWdobGlnaHRUb29sYmFyQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgUnB4VHJhbnNsYXRpb25Nb2R1bGUuZm9yQ2hpbGQoKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyTW9kdWxlIHsgfVxuIl19