@bizdoc/core 1.13.22 → 1.13.26

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 (138) hide show
  1. package/assets/i18n/cldr-data/main/ar/ca-buddhist.json +530 -530
  2. package/assets/i18n/cldr-data/main/ar/ca-chinese.json +1254 -1254
  3. package/assets/i18n/cldr-data/main/ar/ca-coptic.json +539 -539
  4. package/assets/i18n/cldr-data/main/ar/ca-dangi.json +1254 -1254
  5. package/assets/i18n/cldr-data/main/ar/ca-ethiopic-amete-alem.json +536 -536
  6. package/assets/i18n/cldr-data/main/ar/ca-ethiopic.json +539 -539
  7. package/assets/i18n/cldr-data/main/ar/ca-generic.json +533 -533
  8. package/assets/i18n/cldr-data/main/ar/ca-gregorian.json +557 -557
  9. package/assets/i18n/cldr-data/main/ar/ca-hebrew.json +542 -542
  10. package/assets/i18n/cldr-data/main/ar/ca-indian.json +530 -530
  11. package/assets/i18n/cldr-data/main/ar/ca-islamic-civil.json +530 -530
  12. package/assets/i18n/cldr-data/main/ar/ca-islamic-rgsa.json +530 -530
  13. package/assets/i18n/cldr-data/main/ar/ca-islamic-tbla.json +530 -530
  14. package/assets/i18n/cldr-data/main/ar/ca-islamic-umalqura.json +530 -530
  15. package/assets/i18n/cldr-data/main/ar/ca-islamic.json +530 -530
  16. package/assets/i18n/cldr-data/main/ar/ca-japanese.json +1238 -1238
  17. package/assets/i18n/cldr-data/main/ar/ca-persian.json +530 -530
  18. package/assets/i18n/cldr-data/main/ar/ca-roc.json +533 -533
  19. package/assets/i18n/cldr-data/main/ar/characters.json +52 -52
  20. package/assets/i18n/cldr-data/main/ar/currencies.json +2306 -2306
  21. package/assets/i18n/cldr-data/main/ar/dateFields.json +1039 -1039
  22. package/assets/i18n/cldr-data/main/ar/delimiters.json +18 -18
  23. package/assets/i18n/cldr-data/main/ar/languages.json +556 -556
  24. package/assets/i18n/cldr-data/main/ar/layout.json +18 -18
  25. package/assets/i18n/cldr-data/main/ar/listPatterns.json +68 -68
  26. package/assets/i18n/cldr-data/main/ar/localeDisplayNames.json +230 -230
  27. package/assets/i18n/cldr-data/main/ar/measurementSystemNames.json +19 -19
  28. package/assets/i18n/cldr-data/main/ar/numbers.json +511 -511
  29. package/assets/i18n/cldr-data/main/ar/posix.json +18 -18
  30. package/assets/i18n/cldr-data/main/ar/scripts.json +202 -202
  31. package/assets/i18n/cldr-data/main/ar/territories.json +324 -324
  32. package/assets/i18n/cldr-data/main/ar/timeZoneNames.json +2268 -2268
  33. package/assets/i18n/cldr-data/main/ar/units.json +4587 -4587
  34. package/assets/i18n/cldr-data/main/ar/variants.json +119 -119
  35. package/assets/i18n/cldr-data/main/de/ca-buddhist.json +530 -530
  36. package/assets/i18n/cldr-data/main/de/ca-chinese.json +1254 -1254
  37. package/assets/i18n/cldr-data/main/de/ca-coptic.json +539 -539
  38. package/assets/i18n/cldr-data/main/de/ca-dangi.json +1254 -1254
  39. package/assets/i18n/cldr-data/main/de/ca-ethiopic-amete-alem.json +536 -536
  40. package/assets/i18n/cldr-data/main/de/ca-ethiopic.json +539 -539
  41. package/assets/i18n/cldr-data/main/de/ca-generic.json +533 -533
  42. package/assets/i18n/cldr-data/main/de/ca-gregorian.json +551 -551
  43. package/assets/i18n/cldr-data/main/de/ca-hebrew.json +542 -542
  44. package/assets/i18n/cldr-data/main/de/ca-indian.json +530 -530
  45. package/assets/i18n/cldr-data/main/de/ca-islamic-civil.json +530 -530
  46. package/assets/i18n/cldr-data/main/de/ca-islamic-rgsa.json +530 -530
  47. package/assets/i18n/cldr-data/main/de/ca-islamic-tbla.json +530 -530
  48. package/assets/i18n/cldr-data/main/de/ca-islamic-umalqura.json +530 -530
  49. package/assets/i18n/cldr-data/main/de/ca-islamic.json +530 -530
  50. package/assets/i18n/cldr-data/main/de/ca-japanese.json +1238 -1238
  51. package/assets/i18n/cldr-data/main/de/ca-persian.json +530 -530
  52. package/assets/i18n/cldr-data/main/de/ca-roc.json +533 -533
  53. package/assets/i18n/cldr-data/main/de/characters.json +52 -52
  54. package/assets/i18n/cldr-data/main/de/contextTransforms.json +18 -18
  55. package/assets/i18n/cldr-data/main/de/currencies.json +1932 -1932
  56. package/assets/i18n/cldr-data/main/de/dateFields.json +679 -679
  57. package/assets/i18n/cldr-data/main/de/delimiters.json +18 -18
  58. package/assets/i18n/cldr-data/main/de/languages.json +640 -640
  59. package/assets/i18n/cldr-data/main/de/layout.json +18 -18
  60. package/assets/i18n/cldr-data/main/de/listPatterns.json +68 -68
  61. package/assets/i18n/cldr-data/main/de/localeDisplayNames.json +230 -230
  62. package/assets/i18n/cldr-data/main/de/measurementSystemNames.json +19 -19
  63. package/assets/i18n/cldr-data/main/de/numbers.json +155 -155
  64. package/assets/i18n/cldr-data/main/de/posix.json +18 -18
  65. package/assets/i18n/cldr-data/main/de/scripts.json +209 -209
  66. package/assets/i18n/cldr-data/main/de/territories.json +324 -324
  67. package/assets/i18n/cldr-data/main/de/timeZoneNames.json +2332 -2332
  68. package/assets/i18n/cldr-data/main/de/units.json +2546 -2546
  69. package/assets/i18n/cldr-data/main/de/variants.json +119 -119
  70. package/assets/i18n/cldr-data/main/ru/ca-buddhist.json +524 -524
  71. package/assets/i18n/cldr-data/main/ru/ca-chinese.json +1248 -1248
  72. package/assets/i18n/cldr-data/main/ru/ca-coptic.json +533 -533
  73. package/assets/i18n/cldr-data/main/ru/ca-dangi.json +1248 -1248
  74. package/assets/i18n/cldr-data/main/ru/ca-ethiopic-amete-alem.json +530 -530
  75. package/assets/i18n/cldr-data/main/ru/ca-ethiopic.json +533 -533
  76. package/assets/i18n/cldr-data/main/ru/ca-generic.json +527 -527
  77. package/assets/i18n/cldr-data/main/ru/ca-gregorian.json +546 -546
  78. package/assets/i18n/cldr-data/main/ru/ca-hebrew.json +536 -536
  79. package/assets/i18n/cldr-data/main/ru/ca-indian.json +524 -524
  80. package/assets/i18n/cldr-data/main/ru/ca-islamic-civil.json +524 -524
  81. package/assets/i18n/cldr-data/main/ru/ca-islamic-rgsa.json +524 -524
  82. package/assets/i18n/cldr-data/main/ru/ca-islamic-tbla.json +524 -524
  83. package/assets/i18n/cldr-data/main/ru/ca-islamic-umalqura.json +524 -524
  84. package/assets/i18n/cldr-data/main/ru/ca-islamic.json +524 -524
  85. package/assets/i18n/cldr-data/main/ru/ca-japanese.json +1232 -1232
  86. package/assets/i18n/cldr-data/main/ru/ca-persian.json +524 -524
  87. package/assets/i18n/cldr-data/main/ru/ca-roc.json +527 -527
  88. package/assets/i18n/cldr-data/main/ru/characters.json +52 -52
  89. package/assets/i18n/cldr-data/main/ru/contextTransforms.json +62 -62
  90. package/assets/i18n/cldr-data/main/ru/currencies.json +2001 -2001
  91. package/assets/i18n/cldr-data/main/ru/dateFields.json +859 -859
  92. package/assets/i18n/cldr-data/main/ru/delimiters.json +18 -18
  93. package/assets/i18n/cldr-data/main/ru/languages.json +557 -557
  94. package/assets/i18n/cldr-data/main/ru/layout.json +18 -18
  95. package/assets/i18n/cldr-data/main/ru/listPatterns.json +68 -68
  96. package/assets/i18n/cldr-data/main/ru/localeDisplayNames.json +230 -230
  97. package/assets/i18n/cldr-data/main/ru/measurementSystemNames.json +19 -19
  98. package/assets/i18n/cldr-data/main/ru/numbers.json +231 -231
  99. package/assets/i18n/cldr-data/main/ru/posix.json +18 -18
  100. package/assets/i18n/cldr-data/main/ru/scripts.json +209 -209
  101. package/assets/i18n/cldr-data/main/ru/territories.json +324 -324
  102. package/assets/i18n/cldr-data/main/ru/timeZoneNames.json +2317 -2317
  103. package/assets/i18n/cldr-data/main/ru/units.json +3647 -3647
  104. package/assets/i18n/cldr-data/main/ru/variants.json +119 -119
  105. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +6 -6
  106. package/esm2020/lib/core/controls/file.input.mjs +3 -3
  107. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  108. package/esm2020/lib/core/info/attachment-info.service.mjs +1 -1
  109. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  110. package/esm2020/lib/core/session.service.mjs +11 -9
  111. package/esm2020/lib/core/translate.service.mjs +18 -10
  112. package/esm2020/lib/core/translations.mjs +14 -8
  113. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  114. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  115. package/esm2020/lib/cube/cube.service.mjs +12 -1
  116. package/esm2020/lib/cube/grid/grid.component.mjs +3 -2
  117. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +11 -8
  118. package/esm2020/lib/cube/matrix/table.component.mjs +7 -4
  119. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  120. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  121. package/esm2020/lib/cube/sum/sum.component.mjs +21 -21
  122. package/esm2020/lib/cube/view.pane.component.mjs +3 -3
  123. package/esm2020/lib/reports/report.mobile.component.mjs +11 -3
  124. package/esm2020/lib/reports/report.pane.component.mjs +1 -1
  125. package/esm2020/lib/views/cube/matrix.component.mjs +1 -1
  126. package/fesm2015/bizdoc-core.mjs +103 -66
  127. package/fesm2015/bizdoc-core.mjs.map +1 -1
  128. package/fesm2020/bizdoc-core.mjs +103 -66
  129. package/fesm2020/bizdoc-core.mjs.map +1 -1
  130. package/lib/core/mailbox.service.d.ts +1 -1
  131. package/lib/core/translate.service.d.ts +3 -0
  132. package/lib/core/translations.d.ts +13 -7
  133. package/lib/cube/cube.service.d.ts +2 -1
  134. package/lib/cube/grid/spreadsheet.component.d.ts +0 -1
  135. package/lib/cube/sum/sum.component.d.ts +4 -1
  136. package/lib/reports/report.mobile.component.d.ts +3 -0
  137. package/lib/reports/report.pane.component.d.ts +1 -1
  138. package/package.json +2 -2
@@ -340,10 +340,10 @@ export class FileInput {
340
340
  }
341
341
  FileInput.nextId = 0;
342
342
  FileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileInput, deps: [{ token: i0.ElementRef }, { token: i1.MailboxService }, { token: i2.DomSanitizer }, { token: i3.AttachmentInfo }, { token: i4.TranslateService }, { token: i5.SessionService }, { token: i6.PromptService }, { token: i7.NgControl, optional: true, self: true }, { token: DOCUMENT_MODEL }], target: i0.ɵɵFactoryTarget.Component });
343
- FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i16.TranslatePipe, "amCalendar": i17.CalendarPipe } });
343
+ FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\" *ngIf=\"multiple\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i16.TranslatePipe, "amCalendar": i17.CalendarPipe } });
344
344
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileInput, decorators: [{
345
345
  type: Component,
346
- args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
346
+ args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <mat-icon *ngIf=\"a.icon\" [svgIcon]=\"a.icon\" [inline]=\"true\"></mat-icon>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\" *ngIf=\"multiple\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;cursor:pointer;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
347
347
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MailboxService }, { type: i2.DomSanitizer }, { type: i3.AttachmentInfo }, { type: i4.TranslateService }, { type: i5.SessionService }, { type: i6.PromptService }, { type: i7.NgControl, decorators: [{
348
348
  type: Optional
349
349
  }, {
@@ -389,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
389
389
  type: HostBinding,
390
390
  args: ['attr.aria-describedby']
391
391
  }] } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFNbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsQyxNQUFNLGNBQWMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQVEvRixNQUFNLE9BQ0UsU0FBUztJQXdCZixZQUNVLGdCQUE0QixFQUM1QixRQUF3QixFQUN4QixVQUF3QixFQUN4QixlQUErQixFQUMvQixVQUE0QixFQUM1QixRQUF3QixFQUN4QixHQUFrQixFQUNDLFNBQW9CLEVBQ2YsTUFBMkI7UUFSbkQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFZO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUEvQnJDLE9BQUUsR0FBRyxvQkFBb0IsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDN0QsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFRakIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFNBQUksR0FBRyxTQUFTLENBQUM7UUFTVCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNuQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQW1PbEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFZLG9CQUFvQixDQUFDO1FBQ04sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUF6TnJELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQWpDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUNXLFFBQVEsQ0FBQyxLQUFLO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQTRCRCxVQUFVLENBQUMsSUFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3JHLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFxQjtRQUM1QixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLElBQXdCLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUNELGlCQUFpQixDQUFDLElBQXFCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFFdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQXFCO1FBQzlCLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFxQjtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ2pHLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBcUI7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFxQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFxQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QyxHQUFHLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckQsaURBQWlEO1lBQ2pELDBFQUEwRTtZQUMxRSxXQUFXO1lBQ1gsR0FBRztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMxRixpQ0FBaUM7Z0JBQ2pDLHlCQUF5QjtnQkFDekIsa0NBQWtDO2dCQUNsQyxPQUFPO2dCQUNQLFdBQVc7Z0JBQ1gsR0FBRztnQkFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FDQSxDQUFBO0lBQ0gsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFxQjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFxQjtRQUMzQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7b0JBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ3hCOztnQkFFQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDTCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDbkIsSUFBSSxFQUFFLENBQUM7O1lBRVAsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUM1RSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ08sWUFBWSxDQUFDLFFBQTJCO1FBQzlDLFFBQVEsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN2QixLQUFLLEdBQUc7Z0JBQ04sTUFBTTtZQUNSLEtBQUssR0FBRyxFQUFFLGlCQUFpQjtnQkFDekI7b0JBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pELE1BQU07aUJBQ1A7WUFDSCxLQUFLLEdBQUcsRUFBRSx1QkFBdUI7Z0JBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxFQUFFO2dCQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDOztnQkFDbkMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFvQjtRQUNyQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBZ0I7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLEVBQVksQ0FBQztRQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ25DLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN2QixLQUFLLElBQUksSUFBSSxJQUFJLFVBQVUsRUFBRTtnQkFDM0IsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLElBQUksRUFBRTtvQkFDUixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDWCw2Q0FBNkM7b0JBQy9DLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ04sV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDOUI7YUFDRjtZQUNELFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQWlCLENBQUM7Z0JBQ3JELFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ2xDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQzlFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQzVELENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKOztZQUVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFnQjtRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWdCO1FBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFzQjtRQUMvQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsT0FBTztTQUNSO2FBQ0ksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLO2dCQUNSLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBYSxLQUFLO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBc0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFhLFdBQVc7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSyxLQUFjLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU1QyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEdBQVk7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUNJLFFBQVEsS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFJRCxpQkFBaUIsQ0FBQyxHQUFhO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsZ0JBQWdCO0lBQ2hCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFDTyxPQUFPLENBQUMsT0FBZ0Q7UUFDOUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUztnQkFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDdEU7UUFDRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQWU7UUFDckIsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUE4QixDQUFDO1FBQ3JELE1BQU0sR0FBRyxHQUFHLEVBQVksQ0FBQztRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ08sV0FBVyxDQUFDLEVBQVU7UUFDNUIseUdBQXlHO1FBQ3pHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQy9ELE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDckQsSUFBSSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxPQUFPO1lBQ0wsR0FBRyxVQUFVO1lBQ2IsVUFBVSxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUN6RCxPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3ZELE9BQU87WUFDUCxJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLFVBQVUsRUFDUixVQUFVLENBQUMsVUFBVTtnQkFDckIsVUFBVSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07U0FDN0IsQ0FBQztJQUN2QixDQUFDO0lBQ08sT0FBTyxDQUFDLEtBQWE7UUFDM0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3RCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUMzRixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1gscUJBQXFCO2dCQUVyQixLQUFLO1lBQ1AsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDdkMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsQ0FBQztvQkFBRSxPQUFPO2dCQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsTUFBbUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs7Z0JBRXhFLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOztBQTlVYyxnQkFBTSxHQUFHLENBQUUsQ0FBQTtzR0FEcEIsU0FBUyxvUkFpQ0wsY0FBYzswRkFqQ2xCLFNBQVMsb25CQzFCakIsbXlGQWdEQTsyRkR0QlEsU0FBUztrQkFQaEIsU0FBUzsyQkFHRixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsWUFDdEIsb0JBQW9COzswQkFtQzNCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixNQUFNOzJCQUFDLGNBQWM7NENBL0JBLEVBQUU7c0JBQXpCLFdBQVc7Z0JBT0QsUUFBUTtzQkFEbEIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNjLE1BQU07c0JBQXpCLFNBQVM7dUJBQUMsT0FBTztnQkFpSWxCLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUNoQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCdkIsS0FBSztzQkFBakIsS0FBSztnQkFPTyxXQUFXO3NCQUF2QixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBUWdDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50SW5mbyB9IGZyb20gJy4uL2luZm8vYXR0YWNobWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RXh0cmEsIERPQ1VNRU5UX01PREVMLCBNYWlsYm94U2VydmljZSwgVXBsb2FkRXZlbnQgfSBmcm9tICcuLi9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50LCBSZWNpcGllbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmNvbnN0IEVYVEVOREVEX0lDT05TID0geyAneGxzeCc6ICdleGNlbCcsICdkb2N4JzogJ3dvcmQnLCAncHB0eCc6ICdwb3dlcnBvaW50JywgJ3BkZic6ICdwZGYnIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ2ZpbGUuaW5wdXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2ZpbGUuaW5wdXQuc2NzcyddLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdmaWxlLWRyb3BhYmxlJyB9LFxyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZpbGUtdXBsb2FkJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBGaWxlSW5wdXQgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPG51bWJlciB8IG51bWJlcltdPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpIHJlYWRvbmx5IGlkID0gYHR5cGUtZmlsZS11cGxvYWQtJHtGaWxlSW5wdXQubmV4dElkKyt9YDtcclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBtdWx0aXBsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFjY2VwdCA9IG51bGw7XHJcbiAgQElucHV0KCkgaWNvbiA9ICdwdWJsaXNoJztcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIF9pbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBpdGVtczogQXR0YWNobWVudEV4dHJhW107XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYW55O1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bWJlcltdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdEcm9wID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wZW5kaW5nID0gbmV3IFN1YmplY3Q8RmlsZVtdPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZHJvcGFibGVFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfbWFpbGJveDogTWFpbGJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgX2F0dGFjaG1lbnRJbmZvOiBBdHRhY2htZW50SW5mbyxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICAgIEBJbmplY3QoRE9DVU1FTlRfTU9ERUwpIHByaXZhdGUgX21vZGVsOiBSZWNpcGllbnRNb2RlbDxhbnk+LFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhc1ZlcnNpb24oaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmZpbGVOYW1lID09PSBpdGVtLmZpbGVOYW1lICYmIGEuaWQgIT09IGl0ZW0uaWQpICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuZmlsZU5hbWUgPT09IGl0ZW0uZmlsZU5hbWUgJiYgYS5pZCAhPT0gaXRlbS5pZCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgbG9jYXRpb24uaHJlZiA9IHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgaXRlbS5pZCk7XHJcbiAgICAoaXRlbSBhcyBBdHRhY2htZW50RXh0cmEpLnZpZXdlZCA9IG5ldyBEYXRlKCk7XHJcbiAgfVxyXG4gIHByZXZpZXdPckRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlldyhpdGVtKSlcclxuICAgICAgdGhpcy5vcGVuUHJldmlldyhpdGVtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICB9XHJcbiAgY2FuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBBdHRhY2htZW50SW5mby5leGlzdHMoaXRlbS5jb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIGNhbkVkaXQoaXRlbTogQXR0YWNobWVudEV4dHJhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsLmNvbXBsZXRlZCAmJiBpdGVtLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhaXRlbS5kZWxldGVkO1xyXG4gIH1cclxuICBvcGVuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIHRoaXMuX2F0dGFjaG1lbnRJbmZvLnByZXZpZXcodGhpcy5fbW9kZWwsIGl0ZW0uaWQpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4oaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBjb25zdCBhY2NlcHQgPSBpdGVtLmlzSW1hZ2UgPyAnaW1hZ2UvKicgOlxyXG4gICAgICAnLicgKyBBdHRhY2htZW50SW5mby5maWxlRXh0KGl0ZW0uZmlsZU5hbWUpICsgJywnICsgaXRlbS5jb250ZW50VHlwZTtcclxuICAgIHRoaXMuX3Byb21wdCh7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0IH0pLnRoZW4oZmlsZXMgPT4ge1xyXG4gICAgICAvL2lmICghZmlsZXNbMF0ubmFtZS5zdGFydHNXaXRoKGl0ZW0uZmlsZU5hbWUpKSB7XHJcbiAgICAgIC8vICB0aGlzLl9zYi5lcnJvcih0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja0luTWF0Y2hFcnInLCBpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgIC8vICByZXR1cm47XHJcbiAgICAgIC8vfVxyXG4gICAgICB0aGlzLl9tYWlsYm94LmNoZWNrSW4odGhpcy5fbW9kZWwuaWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGVzWzBdKS5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgLy9pZiAoYSBpbnN0YW5jZW9mIFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAvL31cclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwsIGNoZWNrZWRPdXQ6IG51bGwgfSk7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICB9LCBlID0+IHRoaXMuX2hhbmRsZUVycm9yKGUpKTtcclxuICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2hlY2tPdXQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoZWNrT3V0KHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWRPdXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBkaXNjYXJkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCh0aGlzLl9tb2RlbC5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmRlbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zLm1hcChpID0+IGkuaWQpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICB9LCBlID0+XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSkpO1xyXG4gICAgaWYgKHRoaXMuX21vZGVsLmRyYWZ0KVxyXG4gICAgICB0YXNrKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3NiLmFzaygnRGVsZXRlRmlsZUFzaycsICdEZWxldGVGaWxlJywgeyBjb2xvcjogJ3dhcm4nIH0pLnN1YnNjcmliZShvayA9PlxyXG4gICAgICAgIG9rICYmIHRhc2soKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycm9yKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDA5OiAvLyB2ZXJzaW9uIGNoYW5nZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdWZXJzaW9uRXJyJywgdGhpcy5fbW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2Ryb3BhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3Auc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgaWYgKG9rKSBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xyXG4gICAgICBlbHNlIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXIpIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHJhZ0ZpbGUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRG9jdW1lbnREcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RyYWdEcm9wLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xyXG4gICAgY29uc3QgZmlsZXMgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcclxuICAgICAgZmlsZXMucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrZWRPdXQgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IGkuY2hlY2tlZE91dCk7XHJcbiAgICBpZiAodGhpcy5pdGVtcyAmJiBjaGVja2VkT3V0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIGNoZWNrZWRPdXQpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLmZpbmQoZiA9PiBmLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlKS5cclxuICAgICAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgLy9PYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwgfSk7XHJcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBlLmZpbHRlcihlID0+IGUpIGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggJiYgdGhpcy5fc2IudG9hc3QoXHJcbiAgICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggPiAxID8gdGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluTicsIGF0dGFjaG1lbnRzLmxlbmd0aCkgOlxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja2VkSW4nLCBhdHRhY2htZW50c1swXS5maWxlTmFtZSlcclxuICAgICAgICApXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl91cGxvYWQoZmlsZXMpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUxlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KGZhbHNlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZU92ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX2RyYWdEcm9wLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSlcclxuICAgICAgdGhpcy5pdGVtcyA9XHJcbiAgICAgICAgdmFsLm1hcChpID0+IHRoaXMuX2NyZWF0ZUl0ZW0oaSkpO1xyXG4gICAgZWxzZSB0aGlzLml0ZW1zW3RoaXMuX2NyZWF0ZUl0ZW0odmFsKV07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkOiBib29sZWFuO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLml0ZW1zOyB9XHJcbiAgc2hvdWxkTGFiZWxGbG9hdDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLWZpbGUtdXBsb2FkJztcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKTogdm9pZCB7XHJcbiAgfVxyXG4gIHByb21wdCgpIHtcclxuICAgIHRoaXMuX3Byb21wdCgpLnRoZW4odGhpcy5fdXBsb2FkLmJpbmQodGhpcykpXHJcbiAgfVxyXG4gIHByaXZhdGUgX3Byb21wdChvcHRpb25zPzogeyBtdWx0aXBsZTogYm9vbGVhbiwgYWNjZXB0Pzogc3RyaW5nIH0pOiBQcm9taXNlPEZpbGUgfCBGaWxlW10+IHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmFjY2VwdCkgdGhpcy5hY2NlcHQgPSBvcHRpb25zLmFjY2VwdDtcclxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkgdGhpcy5tdWx0aXBsZSA9IG9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5faW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nLnN1YnNjcmliZShyZXNvbHZlKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIF9jaGFuZ2UoZXZ0OiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgJiYgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgYXJyID0gW10gYXMgRmlsZVtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XHJcbiAgICAgIGFyci5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGVuZGluZy5uZXh0KGFycik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUl0ZW0oaWQ6IG51bWJlcik6IGFueSB7XHJcbiAgICAvL2NvbnN0IGxvZyA9IHRoaXMuX21vZGVsLmxvZy5maWx0ZXIobCA9PiBsLmZpbGVJZCA9PSBhdHRhY2htZW50LmlkICYmIGwudXNlcklkID09IHRoaXMuX3Nlc3Npb24udXNlcklkKSxcclxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gaWQpLFxyXG4gICAgICBmaWxlRXh0ID0gQXR0YWNobWVudEluZm8uZmlsZUV4dChhdHRhY2htZW50LmZpbGVOYW1lKSxcclxuICAgICAgaWNvbiA9IEVYVEVOREVEX0lDT05TW2ZpbGVFeHRdO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uYXR0YWNobWVudCxcclxuICAgICAgaGFzUHJldmlldzogQXR0YWNobWVudEluZm8uZXhpc3RzKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBpc0ltYWdlOiBBdHRhY2htZW50SW5mby5pc0ltYWdlKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBmaWxlRXh0LFxyXG4gICAgICBpY29uLFxyXG4gICAgICB1cmw6IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG4gICAgICAgIHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgYXR0YWNobWVudC5pZCkpLFxyXG4gICAgICBjaGVja2VkT3V0OlxyXG4gICAgICAgIGF0dGFjaG1lbnQuY2hlY2tlZE91dCAmJlxyXG4gICAgICAgIGF0dGFjaG1lbnQuaG9sZGluZ0lkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZFxyXG4gICAgfSBhcyBBdHRhY2htZW50RXh0cmE7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwbG9hZChmaWxlczogRmlsZVtdKSB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBsZXQgb2JzZXJ2YWJsZSA9IHRoaXMuX21haWxib3gudXBsb2FkKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC5mb3JtSWQsIHRoaXMuX21vZGVsLnZlcnNpb24sXHJcbiAgICAgICAgZmlsZSwgeyBpc1ByaXZhdGU6IHRydWUgfSkuXHJcbiAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAvLyAgaWYgKGUucHJvZ3Jlc3MpIHtcclxuXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSk7XHJcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgb2JzZXJ2YWJsZXMucHVzaChvYnNlcnZhYmxlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgY29uc3QgaWRzID0gW107XHJcbiAgICAgIGlmICghdGhpcy5pdGVtcykgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICBlLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XHJcbiAgICAgICAgaWRzLnB1c2goYS5pZCk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucHVzaChhKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5fY3JlYXRlSXRlbShhLmlkKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fdmFsdWUgPyAodGhpcy5fdmFsdWUgYXMgbnVtYmVyW10pLmNvbmNhdChpZHMpIDogaWRzO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBpZHNbMF07XHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RyYWdEcm9wLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9wZW5kaW5nLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIG1hdC1idXR0b24gKm5nSWY9XCIhaXRlbXM7IGVsc2UgcHJldmlld1wiIChjbGljayk9XCJwcm9tcHQoKVwiPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cImZpbGxlZFwiPnt7aWNvbn19PC9tYXQtaWNvbj5cclxuICA8c3BhbiBjbGFzcz1cIm1hdC1oM1wiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiICNpbnB1dFxyXG4gICAgICAgW2FjY2VwdF09YWNjZXB0IFttdWx0aXBsZV09bXVsdGlwbGUgKGNoYW5nZSk9J19jaGFuZ2UoJGV2ZW50KScgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxyXG4gIDxkaXYgKm5nRm9yPSdsZXQgYSBvZiBpdGVtcycgY2xhc3M9XCJhdHRhY2htZW50LWl0ZW1cIlxyXG4gICAgICAgW2NsYXNzLmRlbGV0ZWRdPVwiYS5kZWxldGVkXCIgW2NsYXNzLmZhaWxlZF09XCJhLmZhaWxlZFwiXHJcbiAgICAgICBbcHJvZ3Jlc3NJbmRpY2F0b3JdPVwiYS5wcm9ncmVzc1wiPlxyXG4gICAgPGltZyAqbmdJZj1cImEuaXNJbWFnZVwiIFtzcmNdPVwiYS51cmxcIiAoY2xpY2spPVwib3BlblByZXZpZXcoYSlcIiBoZWlnaHQ9XCI4MFwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYS5oYXNQcmV2aWV3ICYmICFhLmlzSW1hZ2VcIiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQcmV2aWV3J3x0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+ZmluZF9pbl9wYWdlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4+Lnt7YS5maWxlRXh0fX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImEuaWNvblwiIFtzdmdJY29uXT1cImEuaWNvblwiIFtpbmxpbmVdPVwidHJ1ZVwiPjwvbWF0LWljb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1vdmVybGF5IHJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbGVuYW1lXCI+e3thLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJvcHRpb25zXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbYml6ZG9jVG9vbHRpcF09XCInT3B0aW9ucycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmZhaWxlZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpICYmICFhLmZhaWxlZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmNoZWNrZWRPdXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGVja091dChhKVwiPnt7XCJDaGVja091dFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcm9tcHQoKVwiPnt7XCJBZGRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2hlY2tJbihhKVwiICpuZ0lmPVwiYS5jaGVja2VkT3V0XCI+e3tcIkNoZWNrSW5cIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb3dubG9hZChhKVwiPnt7XCJEb3dubG9hZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJjYW5QcmV2aWV3KGEpXCIgKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCI+PG1hdC1pY29uPmxhbmRzY2FwZTwvbWF0LWljb24+IHt7XCJQcmV2aWV3XCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWZXJzaW9uKGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgdiBvZiBnZXRWZXJzaW9ucyhhKVwiIChjbGljayk9XCJwcmV2aWV3T3JEb3dubG9hZCh2KVwiPnt7di50aW1lIHwgIGFtQ2FsZW5kYXJ9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZGlzY2FyZChhKVwiPnt7XCJEaXNjYXJkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjYW5jZWwoYSlcIiAqbmdJZj1cImEuZmFpbGVkXCI+e3tcIkNhbmNlbFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFNbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsQyxNQUFNLGNBQWMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQVEvRixNQUFNLE9BQ0UsU0FBUztJQXdCZixZQUNVLGdCQUE0QixFQUM1QixRQUF3QixFQUN4QixVQUF3QixFQUN4QixlQUErQixFQUMvQixVQUE0QixFQUM1QixRQUF3QixFQUN4QixHQUFrQixF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SUFBSTtzQkFBWixLQUFLO2dCQUNjLE1BQU07c0JBQXpCLFNBQVM7dUJBQUMsT0FBTztnQkFpSWxCLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUNoQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCdkIsS0FBSztzQkFBakIsS0FBSztnQkFPTyxXQUFXO3NCQUF2QixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBUWdDLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50SW5mbyB9IGZyb20gJy4uL2luZm8vYXR0YWNobWVudC1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RXh0cmEsIERPQ1VNRU5UX01PREVMLCBNYWlsYm94U2VydmljZSwgVXBsb2FkRXZlbnQgfSBmcm9tICcuLi9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50LCBSZWNpcGllbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmNvbnN0IEVYVEVOREVEX0lDT05TID0geyAneGxzeCc6ICdleGNlbCcsICdkb2N4JzogJ3dvcmQnLCAncHB0eCc6ICdwb3dlcnBvaW50JywgJ3BkZic6ICdwZGYnIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ2ZpbGUuaW5wdXQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2ZpbGUuaW5wdXQuc2NzcyddLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdmaWxlLWRyb3BhYmxlJyB9LFxyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZpbGUtdXBsb2FkJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBGaWxlSW5wdXQgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPG51bWJlciB8IG51bWJlcltdPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpIHJlYWRvbmx5IGlkID0gYHR5cGUtZmlsZS11cGxvYWQtJHtGaWxlSW5wdXQubmV4dElkKyt9YDtcclxuICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgX211bHRpcGxlID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBtdWx0aXBsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFjY2VwdCA9IG51bGw7XHJcbiAgQElucHV0KCkgaWNvbiA9ICdwdWJsaXNoJztcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIF9pbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBpdGVtczogQXR0YWNobWVudEV4dHJhW107XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYW55O1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciB8IG51bWJlcltdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdEcm9wID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9wZW5kaW5nID0gbmV3IFN1YmplY3Q8RmlsZVtdPigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZHJvcGFibGVFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfbWFpbGJveDogTWFpbGJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgX2F0dGFjaG1lbnRJbmZvOiBBdHRhY2htZW50SW5mbyxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICAgIEBJbmplY3QoRE9DVU1FTlRfTU9ERUwpIHByaXZhdGUgX21vZGVsOiBSZWNpcGllbnRNb2RlbDxhbnk+LFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhc1ZlcnNpb24oaXRlbTogQXR0YWNobWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmZpbGVOYW1lID09PSBpdGVtLmZpbGVOYW1lICYmIGEuaWQgIT09IGl0ZW0uaWQpICE9IG51bGw7XHJcbiAgfVxyXG4gIGdldFZlcnNpb25zKGl0ZW06IEF0dGFjaG1lbnQpOiBBdHRhY2htZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuZmlsZU5hbWUgPT09IGl0ZW0uZmlsZU5hbWUgJiYgYS5pZCAhPT0gaXRlbS5pZCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgbG9jYXRpb24uaHJlZiA9IHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgaXRlbS5pZCk7XHJcbiAgICAoaXRlbSBhcyBBdHRhY2htZW50RXh0cmEpLnZpZXdlZCA9IG5ldyBEYXRlKCk7XHJcbiAgfVxyXG4gIHByZXZpZXdPckRvd25sb2FkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgaWYgKHRoaXMuY2FuUHJldmlldyhpdGVtKSlcclxuICAgICAgdGhpcy5vcGVuUHJldmlldyhpdGVtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICB9XHJcbiAgY2FuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBBdHRhY2htZW50SW5mby5leGlzdHMoaXRlbS5jb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIGNhbkVkaXQoaXRlbTogQXR0YWNobWVudEV4dHJhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsLmNvbXBsZXRlZCAmJiBpdGVtLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhaXRlbS5kZWxldGVkO1xyXG4gIH1cclxuICBvcGVuUHJldmlldyhpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIHRoaXMuX2F0dGFjaG1lbnRJbmZvLnByZXZpZXcodGhpcy5fbW9kZWwsIGl0ZW0uaWQpO1xyXG4gIH1cclxuICBjYW5jZWwoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4oaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBjb25zdCBhY2NlcHQgPSBpdGVtLmlzSW1hZ2UgPyAnaW1hZ2UvKicgOlxyXG4gICAgICAnLicgKyBBdHRhY2htZW50SW5mby5maWxlRXh0KGl0ZW0uZmlsZU5hbWUpICsgJywnICsgaXRlbS5jb250ZW50VHlwZTtcclxuICAgIHRoaXMuX3Byb21wdCh7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0IH0pLnRoZW4oZmlsZXMgPT4ge1xyXG4gICAgICAvL2lmICghZmlsZXNbMF0ubmFtZS5zdGFydHNXaXRoKGl0ZW0uZmlsZU5hbWUpKSB7XHJcbiAgICAgIC8vICB0aGlzLl9zYi5lcnJvcih0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja0luTWF0Y2hFcnInLCBpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgIC8vICByZXR1cm47XHJcbiAgICAgIC8vfVxyXG4gICAgICB0aGlzLl9tYWlsYm94LmNoZWNrSW4odGhpcy5fbW9kZWwuaWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGVzWzBdKS5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgLy9pZiAoYSBpbnN0YW5jZW9mIFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAvL31cclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwsIGNoZWNrZWRPdXQ6IG51bGwgfSk7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICB9LCBlID0+IHRoaXMuX2hhbmRsZUVycm9yKGUpKTtcclxuICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2hlY2tPdXQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoZWNrT3V0KHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWRPdXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBkaXNjYXJkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCh0aGlzLl9tb2RlbC5pZCwgaXRlbS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmRlbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zLm1hcChpID0+IGkuaWQpO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICB9LCBlID0+XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSkpO1xyXG4gICAgaWYgKHRoaXMuX21vZGVsLmRyYWZ0KVxyXG4gICAgICB0YXNrKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX3NiLmFzaygnRGVsZXRlRmlsZUFzaycsICdEZWxldGVGaWxlJywgeyBjb2xvcjogJ3dhcm4nIH0pLnN1YnNjcmliZShvayA9PlxyXG4gICAgICAgIG9rICYmIHRhc2soKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2hhbmRsZUVycm9yKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDA5OiAvLyB2ZXJzaW9uIGNoYW5nZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdWZXJzaW9uRXJyJywgdGhpcy5fbW9kZWwubnVtYmVyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgY2FzZSA0MDY6IC8vIHZhbGlkYXRpb24gZXhjZXB0aW9uXHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3JTdHJpbmcocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2Ryb3BhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3Auc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgaWYgKG9rKSBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xyXG4gICAgICBlbHNlIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXIpIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHJhZ0ZpbGUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRG9jdW1lbnREcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RyYWdEcm9wLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xyXG4gICAgY29uc3QgZmlsZXMgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcclxuICAgICAgZmlsZXMucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrZWRPdXQgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IGkuY2hlY2tlZE91dCk7XHJcbiAgICBpZiAodGhpcy5pdGVtcyAmJiBjaGVja2VkT3V0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIGNoZWNrZWRPdXQpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLmZpbmQoZiA9PiBmLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlKS5cclxuICAgICAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgLy9PYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwgfSk7XHJcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBlLmZpbHRlcihlID0+IGUpIGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggJiYgdGhpcy5fc2IudG9hc3QoXHJcbiAgICAgICAgICBhdHRhY2htZW50cy5sZW5ndGggPiAxID8gdGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluTicsIGF0dGFjaG1lbnRzLmxlbmd0aCkgOlxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja2VkSW4nLCBhdHRhY2htZW50c1swXS5maWxlTmFtZSlcclxuICAgICAgICApXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl91cGxvYWQoZmlsZXMpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUxlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KGZhbHNlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZU92ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX2RyYWdEcm9wLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSlcclxuICAgICAgdGhpcy5pdGVtcyA9XHJcbiAgICAgICAgdmFsLm1hcChpID0+IHRoaXMuX2NyZWF0ZUl0ZW0oaSkpO1xyXG4gICAgZWxzZSB0aGlzLml0ZW1zW3RoaXMuX2NyZWF0ZUl0ZW0odmFsKV07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkOiBib29sZWFuO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLml0ZW1zOyB9XHJcbiAgc2hvdWxkTGFiZWxGbG9hdDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLWZpbGUtdXBsb2FkJztcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKTogdm9pZCB7XHJcbiAgfVxyXG4gIHByb21wdCgpIHtcclxuICAgIHRoaXMuX3Byb21wdCgpLnRoZW4odGhpcy5fdXBsb2FkLmJpbmQodGhpcykpXHJcbiAgfVxyXG4gIHByaXZhdGUgX3Byb21wdChvcHRpb25zPzogeyBtdWx0aXBsZTogYm9vbGVhbiwgYWNjZXB0Pzogc3RyaW5nIH0pOiBQcm9taXNlPEZpbGUgfCBGaWxlW10+IHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmFjY2VwdCkgdGhpcy5hY2NlcHQgPSBvcHRpb25zLmFjY2VwdDtcclxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkgdGhpcy5tdWx0aXBsZSA9IG9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5faW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nLnN1YnNjcmliZShyZXNvbHZlKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIF9jaGFuZ2UoZXZ0OiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgJiYgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgYXJyID0gW10gYXMgRmlsZVtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XHJcbiAgICAgIGFyci5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGVuZGluZy5uZXh0KGFycik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUl0ZW0oaWQ6IG51bWJlcik6IGFueSB7XHJcbiAgICAvL2NvbnN0IGxvZyA9IHRoaXMuX21vZGVsLmxvZy5maWx0ZXIobCA9PiBsLmZpbGVJZCA9PSBhdHRhY2htZW50LmlkICYmIGwudXNlcklkID09IHRoaXMuX3Nlc3Npb24udXNlcklkKSxcclxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gaWQpLFxyXG4gICAgICBmaWxlRXh0ID0gQXR0YWNobWVudEluZm8uZmlsZUV4dChhdHRhY2htZW50LmZpbGVOYW1lKSxcclxuICAgICAgaWNvbiA9IEVYVEVOREVEX0lDT05TW2ZpbGVFeHRdO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uYXR0YWNobWVudCxcclxuICAgICAgaGFzUHJldmlldzogQXR0YWNobWVudEluZm8uZXhpc3RzKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBpc0ltYWdlOiBBdHRhY2htZW50SW5mby5pc0ltYWdlKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBmaWxlRXh0LFxyXG4gICAgICBpY29uLFxyXG4gICAgICB1cmw6IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG4gICAgICAgIHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgYXR0YWNobWVudC5pZCkpLFxyXG4gICAgICBjaGVja2VkT3V0OlxyXG4gICAgICAgIGF0dGFjaG1lbnQuY2hlY2tlZE91dCAmJlxyXG4gICAgICAgIGF0dGFjaG1lbnQuaG9sZGluZ0lkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZFxyXG4gICAgfSBhcyBBdHRhY2htZW50RXh0cmE7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwbG9hZChmaWxlczogRmlsZVtdKSB7XHJcbiAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBsZXQgb2JzZXJ2YWJsZSA9IHRoaXMuX21haWxib3gudXBsb2FkKHRoaXMuX21vZGVsLmlkLCB0aGlzLl9tb2RlbC5mb3JtSWQsIHRoaXMuX21vZGVsLnZlcnNpb24sXHJcbiAgICAgICAgZmlsZSwgeyBpc1ByaXZhdGU6IHRydWUgfSkuXHJcbiAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAvLyAgaWYgKGUucHJvZ3Jlc3MpIHtcclxuXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgIH0pLCBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZSk7XHJcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgb2JzZXJ2YWJsZXMucHVzaChvYnNlcnZhYmxlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgY29uc3QgaWRzID0gW107XHJcbiAgICAgIGlmICghdGhpcy5pdGVtcykgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICBlLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XHJcbiAgICAgICAgaWRzLnB1c2goYS5pZCk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucHVzaChhKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5fY3JlYXRlSXRlbShhLmlkKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fdmFsdWUgPyAodGhpcy5fdmFsdWUgYXMgbnVtYmVyW10pLmNvbmNhdChpZHMpIDogaWRzO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBpZHNbMF07XHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RyYWdEcm9wLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9wZW5kaW5nLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIG1hdC1idXR0b24gKm5nSWY9XCIhaXRlbXM7IGVsc2UgcHJldmlld1wiIChjbGljayk9XCJwcm9tcHQoKVwiPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cImZpbGxlZFwiPnt7aWNvbn19PC9tYXQtaWNvbj5cclxuICA8c3BhbiBjbGFzcz1cIm1hdC1oM1wiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjxpbnB1dCB0eXBlPVwiZmlsZVwiICNpbnB1dFxyXG4gICAgICAgW2FjY2VwdF09YWNjZXB0IFttdWx0aXBsZV09bXVsdGlwbGUgKGNoYW5nZSk9J19jaGFuZ2UoJGV2ZW50KScgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cclxuPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxyXG4gIDxkaXYgKm5nRm9yPSdsZXQgYSBvZiBpdGVtcycgY2xhc3M9XCJhdHRhY2htZW50LWl0ZW1cIlxyXG4gICAgICAgW2NsYXNzLmRlbGV0ZWRdPVwiYS5kZWxldGVkXCIgW2NsYXNzLmZhaWxlZF09XCJhLmZhaWxlZFwiXHJcbiAgICAgICBbcHJvZ3Jlc3NJbmRpY2F0b3JdPVwiYS5wcm9ncmVzc1wiPlxyXG4gICAgPGltZyAqbmdJZj1cImEuaXNJbWFnZVwiIFtzcmNdPVwiYS51cmxcIiAoY2xpY2spPVwib3BlblByZXZpZXcoYSlcIiBoZWlnaHQ9XCI4MFwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYS5oYXNQcmV2aWV3ICYmICFhLmlzSW1hZ2VcIiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiZmlsZS1wcmV2aWV3XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQcmV2aWV3J3x0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+ZmluZF9pbl9wYWdlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPHNwYW4+Lnt7YS5maWxlRXh0fX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImEuaWNvblwiIFtzdmdJY29uXT1cImEuaWNvblwiIFtpbmxpbmVdPVwidHJ1ZVwiPjwvbWF0LWljb24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1vdmVybGF5IHJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbGVuYW1lXCI+e3thLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJvcHRpb25zXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbYml6ZG9jVG9vbHRpcF09XCInT3B0aW9ucycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmZhaWxlZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpICYmICFhLmZhaWxlZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmNoZWNrZWRPdXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGVja091dChhKVwiPnt7XCJDaGVja091dFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcm9tcHQoKVwiICpuZ0lmPVwibXVsdGlwbGVcIj57e1wiQWRkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNoZWNrSW4oYSlcIiAqbmdJZj1cImEuY2hlY2tlZE91dFwiPnt7XCJDaGVja0luXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZG93bmxvYWQoYSlcIj57e1wiRG93bmxvYWRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwiY2FuUHJldmlldyhhKVwiIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiPjxtYXQtaWNvbj5sYW5kc2NhcGU8L21hdC1pY29uPiB7e1wiUHJldmlld1wiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVmVyc2lvbihhKVwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHYgb2YgZ2V0VmVyc2lvbnMoYSlcIiAoY2xpY2spPVwicHJldmlld09yRG93bmxvYWQodilcIj57e3YudGltZSB8ICBhbUNhbGVuZGFyfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuRWRpdChhKVwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRpc2NhcmQoYSlcIj57e1wiRGlzY2FyZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2FuY2VsKGEpXCIgKm5nSWY9XCJhLmZhaWxlZFwiPnt7XCJDYW5jZWxcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -42,10 +42,10 @@ export class AppHttpInterceptor {
42
42
  if (this._authenticating)
43
43
  return this._authenticating;
44
44
  else if (e.status === 401) {
45
- this._session.ok && this._router.navigate(['broken']);
45
+ //this._session.ok && this._router.navigate(['broken']);
46
46
  this._authenticating = this._auth.authorize().pipe(switchMap(() => {
47
47
  this._authenticating = null;
48
- this._session.ok && history.back();
48
+ //this._session.ok && history.back();
49
49
  return forward();
50
50
  }));
51
51
  return this._authenticating;
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
76
76
  }, {
77
77
  type: Optional
78
78
  }] }, { type: i1.SessionService }, { type: i2.RouterImpl }, { type: i3.AuthenticationImpl }, { type: i4.HubService }]; } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9odHRwLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdELFlBQVksRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQW9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFNdEQsTUFBTSxPQUFPLGtCQUFrQjtJQXFEN0IsWUFDa0MsT0FBZSxFQUN2QyxRQUF3QixFQUN4QixPQUFtQixFQUNuQixLQUF5QixFQUN6QixVQUFzQjtRQUh0QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6RGYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQXVEakIsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBSZXNwb25zZSwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25JbXBsIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXBwSHR0cEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbmdvaW5nID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIHByaXZhdGUgX2F1dGhlbnRpY2F0aW5nOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcmVhZG9ubHkgYWN0aXZlJCA9IHRoaXMuX29uZ29pbmcuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgIG1hcChjID0+IGMgPiAwKSk7XHJcbiAgcHJpdmF0ZSBfYmFzZVVybDogc3RyaW5nO1xyXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgY29uc3QgZm9yd2FyZCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5fYmFzZVVybCArIHJlcS51cmwsXHJcbiAgICAgICAgY29ubmVjdGlvbklkID0gdGhpcy5fbWVzc2FnaW5nLmNvbm5lY3Rpb25JZCxcclxuICAgICAgICBoZWFkZXJzID0ge1xyXG4gICAgICAgICAgJ2FjY2VwdC1sYW5ndWFnZSc6IHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgaWYgKGNvbm5lY3Rpb25JZClcclxuICAgICAgICBoZWFkZXJzWydjb25uZWN0aW9uLWlkJ10gPSBjb25uZWN0aW9uSWQ7XHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMuX2F1dGguZ2V0QWNjZXNzVG9rZW4oKTtcclxuXHJcbiAgICAgIGlmIChhY2Nlc3NUb2tlbilcclxuICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7YWNjZXNzVG9rZW59YDtcclxuXHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgIHNldEhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgdXJsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgaGFuZGxlID0gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9hdXRoZW50aWNhdGluZykgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW5nO1xyXG4gICAgICAgIGVsc2UgaWYgKGUuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIHRoaXMuX3Nlc3Npb24ub2sgJiYgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnYnJva2VuJ10pO1xyXG4gICAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpbmcgPSB0aGlzLl9hdXRoLmF1dGhvcml6ZSgpLnBpcGUoc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpbmcgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLm9rICYmIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHJldHVybiB0aHJvd0Vycm9yKGUpO1xyXG4gICAgICB9KSk7XHJcbiAgICAgIGNvbnN0IG5vcHJvZ3Jlc3MgPSByZXEuaGVhZGVycy5oYXMoJ25vLXByb2dyZXNzJyk7XHJcbiAgICAgIGlmICghbm9wcm9ncmVzcykge1xyXG4gICAgICAgIHRoaXMuX29uZ29pbmcubmV4dCgxKTtcclxuICAgICAgICByZXR1cm4gaGFuZGxlLnBpcGUodGFwKGV2ZW50ID0+XHJcbiAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZVxyXG4gICAgICAgICAgJiYgdGhpcy5fb25nb2luZy5uZXh0KDApXHJcbiAgICAgICAgICAsICgpID0+XHJcbiAgICAgICAgICAgIHRoaXMuX29uZ29pbmcubmV4dCgwKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gaGFuZGxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcndhcmQoKTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdCQVNFX1VSTCcpIEBPcHRpb25hbCgpIGJhc2VVcmw6IHN0cmluZyxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfYXV0aDogQXV0aGVudGljYXRpb25JbXBsLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnaW5nOiBIdWJTZXJ2aWNlKSB7XHJcbiAgICBpZiAoYmFzZVVybCkge1xyXG4gICAgICBpZiAoYmFzZVVybC5lbmRzV2l0aCgnLycpKVxyXG4gICAgICAgIHRoaXMuX2Jhc2VVcmwgPSBiYXNlVXJsLnN1YnN0cigwLCBiYXNlVXJsLmxlbmd0aCAtIDEpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5fYmFzZVVybCA9IGJhc2VVcmw7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2Jhc2VVcmwgPSAnJztcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9odHRwLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdELFlBQVksRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQW9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFNdEQsTUFBTSxPQUFPLGtCQUFrQjtJQXFEN0IsWUFDa0MsT0FBZSxFQUN2QyxRQUF3QixFQUN4QixPQUFtQixFQUNuQixLQUF5QixFQUN6QixVQUFzQjtRQUh0QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6RGYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQXVEakIsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7O2dCQUV0RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztTQUMzQjs7WUFFQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBN0RELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQ2pDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFDM0MsT0FBTyxHQUFHO2dCQUNSLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTthQUMxQyxDQUFDO1lBQ0osSUFBSSxZQUFZO2dCQUNkLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxZQUFZLENBQUM7WUFFMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVoRCxJQUFJLFdBQVc7Z0JBQ2IsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLFVBQVUsV0FBVyxFQUFFLENBQUM7WUFFckQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDeEIsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLEdBQUc7YUFDSixDQUFDLENBQUM7WUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUU7Z0JBQzNFLElBQUksSUFBSSxDQUFDLGVBQWU7b0JBQUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO3FCQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUN6Qix3REFBd0Q7b0JBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTt3QkFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7d0JBQzVCLHFDQUFxQzt3QkFDckMsT0FBTyxPQUFPLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDSixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQzdCOztvQkFDSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUM3QixLQUFLLFlBQVksWUFBWTt1QkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ3RCLEdBQUcsRUFBRSxDQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3Qjs7Z0JBRUMsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFBO1FBQ0QsT0FBTyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDOzsrR0FwRFUsa0JBQWtCLGtCQXNEbkIsVUFBVTttSEF0RFQsa0JBQWtCLGNBREwsTUFBTTsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBdUQ3QixNQUFNOzJCQUFDLFVBQVU7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBSZXNwb25zZSwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25JbXBsIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XHJcbmltcG9ydCB7IFJvdXRlckltcGwgfSBmcm9tICcuL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXBwSHR0cEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbmdvaW5nID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG4gIHByaXZhdGUgX2F1dGhlbnRpY2F0aW5nOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcmVhZG9ubHkgYWN0aXZlJCA9IHRoaXMuX29uZ29pbmcuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgIG1hcChjID0+IGMgPiAwKSk7XHJcbiAgcHJpdmF0ZSBfYmFzZVVybDogc3RyaW5nO1xyXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgY29uc3QgZm9yd2FyZCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5fYmFzZVVybCArIHJlcS51cmwsXHJcbiAgICAgICAgY29ubmVjdGlvbklkID0gdGhpcy5fbWVzc2FnaW5nLmNvbm5lY3Rpb25JZCxcclxuICAgICAgICBoZWFkZXJzID0ge1xyXG4gICAgICAgICAgJ2FjY2VwdC1sYW5ndWFnZSc6IHRoaXMuX3Nlc3Npb24ubGFuZ3VhZ2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgaWYgKGNvbm5lY3Rpb25JZClcclxuICAgICAgICBoZWFkZXJzWydjb25uZWN0aW9uLWlkJ10gPSBjb25uZWN0aW9uSWQ7XHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMuX2F1dGguZ2V0QWNjZXNzVG9rZW4oKTtcclxuXHJcbiAgICAgIGlmIChhY2Nlc3NUb2tlbilcclxuICAgICAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7YWNjZXNzVG9rZW59YDtcclxuXHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgIHNldEhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgdXJsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgaGFuZGxlID0gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9hdXRoZW50aWNhdGluZykgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW5nO1xyXG4gICAgICAgIGVsc2UgaWYgKGUuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIC8vdGhpcy5fc2Vzc2lvbi5vayAmJiB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydicm9rZW4nXSk7XHJcbiAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGluZyA9IHRoaXMuX2F1dGguYXV0aG9yaXplKCkucGlwZShzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGluZyA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vdGhpcy5fc2Vzc2lvbi5vayAmJiBoaXN0b3J5LmJhY2soKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSByZXR1cm4gdGhyb3dFcnJvcihlKTtcclxuICAgICAgfSkpO1xyXG4gICAgICBjb25zdCBub3Byb2dyZXNzID0gcmVxLmhlYWRlcnMuaGFzKCduby1wcm9ncmVzcycpO1xyXG4gICAgICBpZiAoIW5vcHJvZ3Jlc3MpIHtcclxuICAgICAgICB0aGlzLl9vbmdvaW5nLm5leHQoMSk7XHJcbiAgICAgICAgcmV0dXJuIGhhbmRsZS5waXBlKHRhcChldmVudCA9PlxyXG4gICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2VcclxuICAgICAgICAgICYmIHRoaXMuX29uZ29pbmcubmV4dCgwKVxyXG4gICAgICAgICAgLCAoKSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9vbmdvaW5nLm5leHQoMCkpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIGhhbmRsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3J3YXJkKCk7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQkFTRV9VUkwnKSBAT3B0aW9uYWwoKSBiYXNlVXJsOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVySW1wbCxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIHByaXZhdGUgX21lc3NhZ2luZzogSHViU2VydmljZSkge1xyXG4gICAgaWYgKGJhc2VVcmwpIHtcclxuICAgICAgaWYgKGJhc2VVcmwuZW5kc1dpdGgoJy8nKSlcclxuICAgICAgICB0aGlzLl9iYXNlVXJsID0gYmFzZVVybC5zdWJzdHIoMCwgYmFzZVVybC5sZW5ndGggLSAxKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX2Jhc2VVcmwgPSBiYXNlVXJsO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9iYXNlVXJsID0gJyc7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
@@ -48,4 +48,4 @@ AttachmentInfo.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
48
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AttachmentInfo, decorators: [{
49
49
  type: Injectable
50
50
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }, { type: i2.Directionality }]; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvaW5mby9hdHRhY2htZW50LWluZm8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBZSxNQUFNLGdFQUFnRSxDQUFDO0FBRTFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLdkMsTUFBTSxPQUFPLGNBQWM7SUErQnpCLFlBQ1UsUUFBaUIsRUFDakIsU0FBbUIsRUFDbkIsSUFBb0I7UUFGcEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQWdCO0lBQzlCLENBQUM7SUFsQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFtQjtRQUMvQixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEYsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBbUI7UUFDaEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNNLE9BQU8sQ0FBVSxJQUFzQixFQUFFLE1BQWM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ2hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzRixhQUFhLEVBQUUsZUFBZTtZQUM5QixXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQzNCLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0I7Z0JBQ0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRTtvQkFDM0MsSUFBSTtvQkFDSixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQ2I7YUFDakI7WUFDRCxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUN4QyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7MkdBOUJVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlldywgRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRG9jdW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgaXNJbWFnZSB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vbWFpbGJveC5zZXJ2aWNlJztcclxuIFxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudEluZm8ge1xyXG4gIHN0YXRpYyBleGlzdHMoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzSW1hZ2UoY29udGVudFR5cGUpIHx8IG5hdmlnYXRvci5taW1lVHlwZXMubmFtZWRJdGVtKGNvbnRlbnRUeXBlKSAhPSBudWxsO1xyXG4gIH1cclxuICBzdGF0aWMgaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNJbWFnZShjb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgZmlsZUV4dChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuICB9XHJcbiAgcHVibGljIHByZXZpZXc8VCA9IGFueT4oaXRlbTogRG9jdW1lbnRNb2RlbDxUPiwgZmlsZUlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBpdGVtLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmlkID09PSBmaWxlSWQpO1xyXG4gICAgY29uc3Qgb1JlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2RhcmstYmFja2Ryb3AnLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWVcclxuICAgIH0pO1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW1xyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCB1c2VWYWx1ZToge1xyXG4gICAgICAgICAgZmlsZSxcclxuICAgICAgICAgIGRvY3VtZW50SWQ6IGl0ZW0uZG9jdW1lbnRJZFxyXG4gICAgICAgIH0gYXMgUHJldmlld0RhdGFcclxuICAgICAgfSxcclxuICAgICAgeyBwcm92aWRlOiBPdmVybGF5UmVmLCB1c2VWYWx1ZTogb1JlZiB9XHJcbiAgICBdLCB0aGlzLl9pbmplY3Rvcik7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKEF0dGFjaG1lbnRQcmV2aWV3LCBudWxsLCBpbmplY3Rvcik7XHJcbiAgICBvUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgaXRlbS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5KSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvcmUvaW5mby9hdHRhY2htZW50LWluZm8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBZSxNQUFNLGdFQUFnRSxDQUFDO0FBRTFJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFHdkMsTUFBTSxPQUFPLGNBQWM7SUErQnpCLFlBQ1UsUUFBaUIsRUFDakIsU0FBbUIsRUFDbkIsSUFBb0I7UUFGcEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQWdCO0lBQzlCLENBQUM7SUFsQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFtQjtRQUMvQixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDcEYsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBbUI7UUFDaEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNNLE9BQU8sQ0FBVSxJQUFzQixFQUFFLE1BQWM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ2hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzRixhQUFhLEVBQUUsZUFBZTtZQUM5QixXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQzNCLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0I7Z0JBQ0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRTtvQkFDM0MsSUFBSTtvQkFDSixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQ2I7YUFDakI7WUFDRCxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUN4QyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7MkdBOUJVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlldywgRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCBQcmV2aWV3RGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRG9jdW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgaXNJbWFnZSB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7IFxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudEluZm8ge1xyXG4gIHN0YXRpYyBleGlzdHMoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzSW1hZ2UoY29udGVudFR5cGUpIHx8IG5hdmlnYXRvci5taW1lVHlwZXMubmFtZWRJdGVtKGNvbnRlbnRUeXBlKSAhPSBudWxsO1xyXG4gIH1cclxuICBzdGF0aWMgaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaXNJbWFnZShjb250ZW50VHlwZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgZmlsZUV4dChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuICB9XHJcbiAgcHVibGljIHByZXZpZXc8VCA9IGFueT4oaXRlbTogRG9jdW1lbnRNb2RlbDxUPiwgZmlsZUlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBpdGVtLmF0dGFjaG1lbnRzLmZpbmQoYSA9PiBhLmlkID09PSBmaWxlSWQpO1xyXG4gICAgY29uc3Qgb1JlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2RhcmstYmFja2Ryb3AnLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWVcclxuICAgIH0pO1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoW1xyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBLCB1c2VWYWx1ZToge1xyXG4gICAgICAgICAgZmlsZSxcclxuICAgICAgICAgIGRvY3VtZW50SWQ6IGl0ZW0uZG9jdW1lbnRJZFxyXG4gICAgICAgIH0gYXMgUHJldmlld0RhdGFcclxuICAgICAgfSxcclxuICAgICAgeyBwcm92aWRlOiBPdmVybGF5UmVmLCB1c2VWYWx1ZTogb1JlZiB9XHJcbiAgICBdLCB0aGlzLl9pbmplY3Rvcik7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKEF0dGFjaG1lbnRQcmV2aWV3LCBudWxsLCBpbmplY3Rvcik7XHJcbiAgICBvUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gICAgaXRlbS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5KSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -36,9 +36,9 @@ export class MailboxService {
36
36
  folder.count++;
37
37
  });
38
38
  }
39
- formatDownloadUrl(documentId, fileId) {
39
+ formatDownloadUrl(documentId, fileId, inline) {
40
40
  const token = this._auth.getAccessToken();
41
- return `/api/attachments/${documentId}/${fileId}?access_token=${token}`;
41
+ return `/api/attachments/${documentId}/${fileId}?access_token=${token}&inline=${inline ? true : false}`;
42
42
  }
43
43
  download(documentId, fileId) {
44
44
  //new Observable<any>(observe => {
@@ -392,4 +392,4 @@ function reportprogress(filename) {
392
392
  return r;
393
393
  }));
394
394
  }
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQXNWdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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WCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSHR0cENsaWVudCwgSHR0cEV2ZW50LFxyXG4gIEh0dHBFdmVudFR5cGUsXHJcbiAgSHR0cFByb2dyZXNzRXZlbnQsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2VcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1lbnQsIFVzZXJJbmZvLCBSZWNpcGllbnRNb2RlbCwgQXR0YWNobWVudCwgU2NoZWR1bGVkRXZlbnQsIEhlYWRlck1vZGVsLCBEb2N1bWVudE1vZGVsLCBWb3RlLCBDb21tZW50VmVyc2lvbiwgQ2hhaW4gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGNsZWFudXAsIGlzQXJyYXkgfSBmcm9tICcuL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25JbXBsIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XHJcbmltcG9ydCB7IFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmV4cG9ydCBjb25zdCBET0NVTUVOVF9NT0RFTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb2N1bWVudE1vZGVsPGFueT4+KCdtb2RlbCcpO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdGVyVHlwZSA9ICdyZWNlbnQnIHwgJ3VucmVhZCcgfCAnZmxhZ2dlZCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZUV2ZW50PFQ+IHtcclxuICBtb2RlbDogUmVjaXBpZW50TW9kZWw8VD47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNYWlsYm94U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlJCA9IG5ldyBTdWJqZWN0PFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVsZXRlJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICAvKiogKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlZCA9IHRoaXMuX2NoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZWQgPSB0aGlzLl9kZWxldGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXV0aDogQXV0aGVudGljYXRpb25JbXBsLFxyXG4gICAgbWVzc2FnaW5nOiBIdWJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgbWVzc2FnaW5nLm5ldyQuXHJcbiAgICAgIHN1YnNjcmliZShtID0+IHtcclxuICAgICAgICBpZiAobS51c2VySWQgIT09IF9zZXNzaW9uLnByb2ZpbGUudXNlcklkKSByZXR1cm47XHJcbiAgICAgICAgX3Nlc3Npb24ucHJvZmlsZS5pbmJveENvdW50Kys7XHJcbiAgICAgICAgY29uc3QgZm9sZGVyID0gX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLmZpbmQoZiA9PiBmLm5hbWUgPT09IG0ubW9kZWwuZm9sZGVySWQpO1xyXG4gICAgICAgIGZvbGRlci5jb3VudCsrO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZm9ybWF0RG93bmxvYWRVcmwoZG9jdW1lbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2F1dGguZ2V0QWNjZXNzVG9rZW4oKTtcclxuICAgIHJldHVybiBgL2FwaS9hdHRhY2htZW50cy8ke2RvY3VtZW50SWR9LyR7ZmlsZUlkfT9hY2Nlc3NfdG9rZW49JHt0b2tlbn1gO1xyXG4gIH1cclxuICBkb3dubG9hZChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgIC8vICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgLy8gIHJldHVybiB7XHJcbiAgICAvLyAgICB1bnN1YnNjcmliZSgpIHsgfVxyXG4gICAgLy8gIH1cclxuICAgIC8vfSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQoYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH1gLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW1vdmVhdHRhY2htZW50KHJlY2lwaWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2ZpbGVJZH1gKTtcclxuICB9XHJcbiAgcmVhZChpZDogbnVtYmVyLCByZWFkOiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L3JlYWQvJHtpZH1gLCB1bmRlZmluZWQsIHsgcGFyYW1zOiB7IHJlYWQgfSBhcyBhbnkgfSkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgZm9sZGVySWQgJiYgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihyZWNlaXZlZCwgZm9sZGVySWQsIHJlYWQgPyAxIDogLTEpXHJcbiAgICApKTtcclxuICB9XHJcbiAgY29tbWVudHMoaWQ6IG51bWJlciwgYmVmb3JlOiBEYXRlKTogT2JzZXJ2YWJsZTxDb21tZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50W10+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgeyBwYXJhbXM6IHsgYmVmb3JlOiBuZXcgRGF0ZShiZWZvcmUpLnRvSlNPTigpIH0gfSk7XHJcbiAgfVxyXG4gIHRhZ3MoaWQ6IG51bWJlciwgdGFnczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvdGFnLyR7aWR9YCwgeyB0YWdzIH0pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHRhZ3MgfSBhcyBhbnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZFxyXG4gICAqIEBwYXJhbSBzdGF0ZUlkXHJcbiAgICogQHBhcmFtIHVzZXJJZCBzdWJzdGl0dXRlXHJcbiAgICovXHJcbiAgY2hhbmdlU3RhdGUoZG9jdW1lbnRJZDogbnVtYmVyLCBzdGF0ZUlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9jaGFuZ2VzdGF0ZS8ke2RvY3VtZW50SWR9YCwgeyBzdGF0ZUlkLCB1c2VySWQgfSk7XHJcbiAgfVxyXG4gIG1vdmUoaWQ6IG51bWJlciwgZm9sZGVySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9tb3ZlLyR7aWR9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YCwge30pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBmb2xkZXJJZFxyXG4gICAgICB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGNoZWNrT3V0KHJlY2lwaWVudElkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgYXR0YWNobWVudElkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxBdHRhY2htZW50PihgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tvdXRgLCBudWxsLCB7IHBhcmFtczogeyB2ZXJzaW9uIH0gfSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4ocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8QXR0YWNobWVudD4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLFxyXG4gICAgICBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tpbj92ZXJzaW9uPSR7dmVyc2lvbn1gLCBmZCwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgLy9jb25zdCBpbml0aWFsU3RhdGU6IFVwbG9hZEV2ZW50ID0geyBzdGF0ZTogJ1BFTkRJTkcnLCBwcm9ncmVzczogMCB9XHJcbiAgICAvL2NvbnN0IGNhbGN1bGF0ZVN0YXRlID0gKFxyXG4gICAgLy8gIHVwbG9hZDogVXBsb2FkRXZlbnQsXHJcbiAgICAvLyAgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPlxyXG4gICAgLy8pOiBVcGxvYWRFdmVudCA9PiB7XHJcbiAgICAvLyAgLy8gaW1wbGVtZW50YXRpb25cclxuICAgIC8vfVxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAgICAgLy8gIG9ic2VydmUubmV4dChuZXcgVXBsb2FkRXZlbnQoXHJcbiAgICAgICAgICAvLyAgICBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLnRvdGFsXHJcbiAgICAgICAgICAvLyAgKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gcmVzLmJvZHkgYXMgQXR0YWNobWVudDtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KG1vZGVsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHVuc3Vic2NyaWJlKCkge1xyXG4gICAgICAgICAgLy9yZXEuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudD47XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGVzOiBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudFtdPjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGUgfCBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudCB8IEF0dGFjaG1lbnRbXT4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmIChpc0FycmF5KGZpbGVzKSkgZmlsZXMuZm9yRWFjaChmID0+XHJcbiAgICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIGVsc2UgZmQuYXBwZW5kKGZpbGVzLm5hbWUsIGZpbGVzKTtcclxuICAgIC8vY29uc3QgYnl0ZXNQZXJDaHVuayA9IDIwICogMTAyNCAqIDEwMjQ7XHJcbiAgICAvLyBhcXVpcmUgdGhlIGxvY2F0aW9uIHByaW9yIHRvIHNlbmRpbmcgdGhlIHJlcXVlc3RcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtSWQpLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfT92ZXJzaW9uPSR7dmVyc2lvbn1gO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLmlzUHJpdmF0ZSkgdXJsICs9ICcmaXNwcml2YXRlPXRydWUnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVybCwgZmQsIHtcclxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBsb2FkIHByb2dyZXNzIGV2ZW50LiBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XHJcbiAgICAgICAgICAgIC8vY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgRmlsZSBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGlzQXJyYXkoZmlsZXMpID8gbW9kZWwgOiBtb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXRyaWV2ZSBzZW5kZXJzXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKi9cclxuICBzZW5kZXJzKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFVzZXJJbmZvW10+KCcvYXBpL21haWxib3gvc2VuZGVycy8nLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZsYWcoaWQ6IG51bWJlciwgZmxhZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9mbGFnLyR7aWR9P2ZsYWc9JHtmbGFnfWAsIG51bGwpLnBpcGUodGFwKCgpID0+IHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCBmbGFnIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB2aWV3ZWRjb21tZW50cyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IHRpbWU6IERhdGUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdGltZTogRGF0ZSB9PihgL2FwaS9jb21tZW50cy92aWV3ZWQvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUodGFwKChlOiB7IHRpbWU6IERhdGUgfSkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHZpZXdlZDogZS50aW1lIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB0eXBpbmcoaWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvY29tbWVudHMvdHlwaW5nLyR7aWR9YCwge30sIHsgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfSB9KS50b1Byb21pc2UoKTtcclxuICB9XHJcbiAgZWRpdGluZyhpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2VkaXRpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuICBjb3B5KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbGJveC9jb3B5LyR7aWR9YCwge30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcGFyZW50SWQ/OiBudW1iZXJcclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGNvbW1lbnR1cGRhdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxDb21tZW50PihgL2FwaS9jb21tZW50cy9lZGl0LyR7aWR9LyR7Y29tbWVudElkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBpbmZvPFQgPSBhbnk+KGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RG9jdW1lbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50TW9kZWw8VD4+KGAvYXBpL21haWxib3gvaW5mby8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHRpbWVsaW5lKGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q2hhaW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDaGFpbj4oYC9hcGkvbWFpbGJveC90aW1lbGluZS8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHZvdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChgL2FwaS9jb21tZW50cy92b3RlLyR7aWR9LyR7Y29tbWVudElkfWAsIHt9LCB7IHBhcmFtczogeyB2YWx1ZTogdmFsdWUudG9TdHJpbmcoKSB9IH0pO1xyXG4gIH1cclxuICB2b3RlcyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Vm90ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Vm90ZVtdPihgL2FwaS9jb21tZW50cy92b3Rlcy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZWRpdHMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbW1lbnRWZXJzaW9uW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50VmVyc2lvbltdPihgL2FwaS9jb21tZW50cy9lZGl0cy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZmluZEFsbChmaWx0ZXI6IHsgdHlwZT86IEZpbHRlclR5cGU7IGNvbnRhaW5zPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZzsgZm9ybT86IHN0cmluZzsgZm9sZGVySWQ/OiBzdHJpbmc7IHNlbmRlcklkPzogc3RyaW5nOyB9LFxyXG4gICAgb3B0aW9ucz86IHsgc2tpcD86IG51bWJlcjsgdGFrZT86IG51bWJlcjsgb3JkZXJCeT86ICd2YWx1ZScgfCAndmlld2VkJyB8ICdkYXRlJyB9KTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgLi4uZmlsdGVyLCAuLi5vcHRpb25zIH07XHJcbiAgICBjbGVhbnVwKHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8SGVhZGVyTW9kZWxbXT4oJy9hcGkvbWFpbCcsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICBjcmVhdGU8VCA9IGFueT4oZm9ybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHAgPT5cclxuICAgICAgdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KCcvYXBpL21haWwnLCBudWxsLCB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBmb3JtLFxyXG4gICAgICAgICAgLi4ucFxyXG4gICAgICAgIH1cclxuICAgICAgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGdldDxUID0gYW55PihpZDogbnVtYmVyLCByZWFkPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUoXHJcbiAgICAgIHRhcCgobTogUmVjaXBpZW50TW9kZWwpID0+XHJcbiAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgbS5yZWFkID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihtLnJlY2VpdmVkLCBtLmZvbGRlcklkLCAtMSlcclxuICAgICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZXVucmVhZGNvdW50ZXIoZGF0ZTogRGF0ZSwgZm9sZGVySWQ6IHN0cmluZywgdmFsOiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgLy8gZGF0ZSBpcyBhYm92ZSB3YXRlcm1hcmtcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3ICYmXHJcbiAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLmluYm94VmlldyA8IGRhdGVcclxuICAgIClcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmluYm94Q291bnQgKz0gdmFsO1xyXG4gICAgLy8gZGVjcmVhc2VcclxuICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLlxyXG4gICAgICBmaW5kKGYgPT4gZi5uYW1lID09PSBmb2xkZXJJZCk7XHJcbiAgICBmb2xkZXIuY291bnQgPSBNYXRoLm1heCgwLCBmb2xkZXIuY291bnQgKyB2YWwpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZTxUID0gYW55PihpZDogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbW9kZWw6IHt9LCBmaWxlcz86IEZpbGVbXSB8IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgLy9jb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy9jb25zdCBtb2RlbEJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobW9kZWwpXSwge1xyXG4gICAgLy8gIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgIC8vfSk7XHJcbiAgICAvL2ZkLmFwcGVuZCgnZm9ybS1kYXRhJywgbW9kZWxCbG9iKTtcclxuICAgIC8vaWYgKGZpbGVzKSB7XHJcbiAgICAvLyAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgIC8vICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIC8vICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgIC8vICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG4gICAgLy8gIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+IHtcclxuICAgIC8vICAgIGxldCB1cmwgPSBgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAvLyAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocCA9PiB1cmwgKz0gYCYke3B9PSR7cGFyYW1zW3BdfWApO1xyXG4gICAgLy8gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLCB1cmwsIGZkLCB7XHJcbiAgICAvLyAgICB9KTtcclxuICAgIC8vICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5waXBlKG1hcChldmVudCA9PiB7XHJcbiAgICAvLyAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgLy8gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+O1xyXG4gICAgLy8gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIC8vICAgICAgfVxyXG4gICAgLy8gICAgICBlbHNlXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgIC8vICAgIH0pKVxyXG4gICAgLy8gIH0pLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0R2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWAsIG1vZGVsLCB7IHBhcmFtcyB9KSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL21haWwvJHtpZH1gKS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICB0aGlzLl9kZWxldGUkLm5leHQoaWQpKSk7XHJcbiAgfVxyXG4gIHJlbW92ZWNvbW1lbnQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvY29tbWVudHMvJHtpZH1gKTtcclxuICB9XHJcbiAgc3VibWl0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbD86IGFueSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0R2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPGFueT4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmdvPXRydWVgLCBtb2RlbCwgeyBwYXJhbXMgfSkpKS5waXBlKFxyXG4gICAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgc2VuZDxUID0gYW55PihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGZvcm06IHN0cmluZywgbW9kZWw6IGFueSwgYWN0aW9uOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IHt9LCByZWFkPzogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmFjdGlvbj0ke2FjdGlvbn1gLCBtb2RlbCwgeyBwYXJhbXM6IE9iamVjdC5hc3NpZ24ocGFyYW1zLCBhY3Rpb25BcmdzKSB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+XHJcbiAgICAgICAgICByZWFkID09PSBmYWxzZSAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgLTEpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGV2ZW50cyhzdGFydGluZzogRGF0ZSwgZW5kaW5nPzogRGF0ZSwgY29udGFpbnM/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjaGVkdWxlZEV2ZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxTY2hlZHVsZWRFdmVudFtdPihgL2FwaS9ldmVudHNgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHN0YXJ0aW5nOiBzdGFydGluZy50b0pTT04oKSxcclxuICAgICAgICBlbmRpbmc6IGVuZGluZy50b0pTT04oKSxcclxuICAgICAgICBjb250YWluczogY29udGFpbnMgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZUV2ZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHsgc3RhcnRpbmc6IERhdGU7IGVuZGluZz86IERhdGU7IGNvbXBsZXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9ldmVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGdlbyBsb2NhdGlvbiBpZiBmb3JtIHNldHRpbmdzIHJlcXVpZXNcclxuICAgKiBAcGFyYW0gZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dldEdlb0xvY2F0aW9uKGZvcm06IHN0cmluZyk6IE9ic2VydmFibGU8eyBsbmc/OiBzdHJpbmc7IGxhdD86IHN0cmluZyB9PiB7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZvcm0pO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmUnOlxyXG4gICAgICAgIGNhc2UgJ0Fzayc6XHJcbiAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogci5jb29yZHMubG9uZ2l0dWRlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGF0OiByLmNvb3Jkcy5sYXRpdHVkZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCBlID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24gPT09ICdBc2snKVxyXG4gICAgICAgICAgICAgIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBvYnNlcnZlLmVycm9yKCdubyBwb3NpdGlvbicpO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbm90aWZ5ID0gPFQ+KCkgPT4gKG9ic2VydmU6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+KSA9PiB7XHJcbiAgICByZXR1cm4gb2JzZXJ2ZS5waXBlKHRhcChtID0+IHtcclxuICAgICAgKG0gYXMgSXRlbUV4dHJhKS5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQobSk7XHJcbiAgICB9KSk7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1FeHRyYSB7XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgbG9hZGVkPzogYm9vbGVhbjtcclxuICB3b3JraW5nPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRFeHRyYSBleHRlbmRzIEF0dGFjaG1lbnQge1xyXG4gIHVybDogU2FmZVVybDtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGZpbGVFeHQ6IHN0cmluZztcclxuICBpc0ltYWdlOiBib29sZWFuO1xyXG4gIHByb2dyZXNzPzogbnVtYmVyO1xyXG4gIHZpZXdlZD86IERhdGU7XHJcbiAgZmFpbGVkPzogYm9vbGVhbjtcclxufVxyXG5mdW5jdGlvbiBpc0h0dHBSZXNwb25zZTxUPihldmVudDogSHR0cEV2ZW50PFQ+KTogZXZlbnQgaXMgSHR0cFJlc3BvbnNlPFQ+IHtcclxuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0h0dHBQcm9ncmVzc0V2ZW50KFxyXG4gIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj5cclxuKTogZXZlbnQgaXMgSHR0cFByb2dyZXNzRXZlbnQge1xyXG4gIHJldHVybiAoXHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MgfHxcclxuICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3NcclxuICApXHJcbn1cclxuZnVuY3Rpb24gY2FsY3VsYXRlU3RhdGUodXBsb2FkOiBVcGxvYWRFdmVudCwgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPik6IFVwbG9hZEV2ZW50IHtcclxuICBpZiAoaXNIdHRwUHJvZ3Jlc3NFdmVudChldmVudCkpIHtcclxuICAgIHJldHVybiBuZXcgVXBsb2FkRXZlbnQoe1xyXG4gICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcclxuICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcclxuICAgICAgICA6IHVwbG9hZC5wcm9ncmVzcyxcclxuICAgICAgc3RhdGU6ICdwcm9ncmVzcycsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzSHR0cFJlc3BvbnNlKGV2ZW50KSkge1xyXG4gICAgcmV0dXJuIG5ldyBVcGxvYWRFdmVudCh7XHJcbiAgICAgIHByb2dyZXNzOiAxMDAsXHJcbiAgICAgIHN0YXRlOiAnZG9uZScsXHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gdXBsb2FkXHJcbn1cclxuZXhwb3J0IGNsYXNzIFVwbG9hZEV2ZW50IHtcclxuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIHByb2dyZXNzOiBudW1iZXI7XHJcbiAgLy8gYnl0ZXNcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIHN0YXRlOiAncGVuZGluZycgfCAncHJvZ3Jlc3MnIHwgJ2RvbmUnO1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBvcnRwcm9ncmVzcyhmaWxlbmFtZTogc3RyaW5nKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT4gT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QXR0YWNobWVudD4pID0+XHJcbiAgICBzb3VyY2UucGlwZShtYXAociA9PiB7XHJcbiAgICAgIC8vaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgLy8gICAgZmlsZS5uYW1lLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgLy8gICkpO1xyXG4gICAgICAvL30gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgLy8gIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAvLyAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAvLyAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnQ7XHJcbiAgICAgIC8vICAgIG9ic2VydmUubmV4dChtb2RlbCk7XHJcbiAgICAgIC8vICB9XHJcbiAgICAgIC8vICBlbHNlXHJcbiAgICAgIC8vICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgLy8gIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9KSk7XHJcbn1cclxuIl19
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQXNWdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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SztRQUNMLFFBQVE7UUFDUiw2REFBNkQ7UUFDN0QsdUJBQXVCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsIEh0dHBFdmVudCxcclxuICBIdHRwRXZlbnRUeXBlLFxyXG4gIEh0dHBQcm9ncmVzc0V2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tZW50LCBVc2VySW5mbywgUmVjaXBpZW50TW9kZWwsIEF0dGFjaG1lbnQsIFNjaGVkdWxlZEV2ZW50LCBIZWFkZXJNb2RlbCwgRG9jdW1lbnRNb2RlbCwgVm90ZSwgQ29tbWVudFZlcnNpb24sIENoYWluIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjbGVhbnVwLCBpc0FycmF5IH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uSW1wbCB9IGZyb20gJy4vYXV0aGVudGljYXRpb24nO1xyXG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5leHBvcnQgY29uc3QgRE9DVU1FTlRfTU9ERUwgPSBuZXcgSW5qZWN0aW9uVG9rZW48RG9jdW1lbnRNb2RlbDxhbnk+PignbW9kZWwnKTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPSAncmVjZW50JyB8ICd1bnJlYWQnIHwgJ2ZsYWdnZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VFdmVudDxUPiB7XHJcbiAgbW9kZWw6IFJlY2lwaWVudE1vZGVsPFQ+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWFpbGJveFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxSZWNpcGllbnRNb2RlbDxhbnk+PigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGV0ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgLyoqICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVkID0gdGhpcy5fZGVsZXRlJC5hc09ic2VydmFibGUoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIG1lc3NhZ2luZy5uZXckLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgaWYgKG0udXNlcklkICE9PSBfc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkgcmV0dXJuO1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdERvd25sb2FkVXJsKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIsIGlubGluZT86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLl9hdXRoLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICByZXR1cm4gYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH0/YWNjZXNzX3Rva2VuPSR7dG9rZW59JmlubGluZT0ke2lubGluZSA/IHRydWUgOiBmYWxzZX1gO1xyXG4gIH1cclxuICBkb3dubG9hZChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgIC8vICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgLy8gIHJldHVybiB7XHJcbiAgICAvLyAgICB1bnN1YnNjcmliZSgpIHsgfVxyXG4gICAgLy8gIH1cclxuICAgIC8vfSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQoYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH1gLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW1vdmVhdHRhY2htZW50KHJlY2lwaWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2ZpbGVJZH1gKTtcclxuICB9XHJcbiAgcmVhZChpZDogbnVtYmVyLCByZWFkOiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L3JlYWQvJHtpZH1gLCB1bmRlZmluZWQsIHsgcGFyYW1zOiB7IHJlYWQgfSBhcyBhbnkgfSkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgZm9sZGVySWQgJiYgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihyZWNlaXZlZCwgZm9sZGVySWQsIHJlYWQgPyAxIDogLTEpXHJcbiAgICApKTtcclxuICB9XHJcbiAgY29tbWVudHMoaWQ6IG51bWJlciwgYmVmb3JlOiBEYXRlKTogT2JzZXJ2YWJsZTxDb21tZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50W10+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgeyBwYXJhbXM6IHsgYmVmb3JlOiBuZXcgRGF0ZShiZWZvcmUpLnRvSlNPTigpIH0gfSk7XHJcbiAgfVxyXG4gIHRhZ3MoaWQ6IG51bWJlciwgdGFnczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvdGFnLyR7aWR9YCwgeyB0YWdzIH0pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHRhZ3MgfSBhcyBhbnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZFxyXG4gICAqIEBwYXJhbSBzdGF0ZUlkXHJcbiAgICogQHBhcmFtIHVzZXJJZCBzdWJzdGl0dXRlXHJcbiAgICovXHJcbiAgY2hhbmdlU3RhdGUoZG9jdW1lbnRJZDogbnVtYmVyLCBzdGF0ZUlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9jaGFuZ2VzdGF0ZS8ke2RvY3VtZW50SWR9YCwgeyBzdGF0ZUlkLCB1c2VySWQgfSk7XHJcbiAgfVxyXG4gIG1vdmUoaWQ6IG51bWJlciwgZm9sZGVySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9tb3ZlLyR7aWR9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YCwge30pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBmb2xkZXJJZFxyXG4gICAgICB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGNoZWNrT3V0KHJlY2lwaWVudElkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgYXR0YWNobWVudElkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxBdHRhY2htZW50PihgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tvdXRgLCBudWxsLCB7IHBhcmFtczogeyB2ZXJzaW9uIH0gfSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4ocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8QXR0YWNobWVudD4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLFxyXG4gICAgICBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tpbj92ZXJzaW9uPSR7dmVyc2lvbn1gLCBmZCwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgLy9jb25zdCBpbml0aWFsU3RhdGU6IFVwbG9hZEV2ZW50ID0geyBzdGF0ZTogJ1BFTkRJTkcnLCBwcm9ncmVzczogMCB9XHJcbiAgICAvL2NvbnN0IGNhbGN1bGF0ZVN0YXRlID0gKFxyXG4gICAgLy8gIHVwbG9hZDogVXBsb2FkRXZlbnQsXHJcbiAgICAvLyAgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPlxyXG4gICAgLy8pOiBVcGxvYWRFdmVudCA9PiB7XHJcbiAgICAvLyAgLy8gaW1wbGVtZW50YXRpb25cclxuICAgIC8vfVxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAgICAgLy8gIG9ic2VydmUubmV4dChuZXcgVXBsb2FkRXZlbnQoXHJcbiAgICAgICAgICAvLyAgICBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLnRvdGFsXHJcbiAgICAgICAgICAvLyAgKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gcmVzLmJvZHkgYXMgQXR0YWNobWVudDtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KG1vZGVsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHVuc3Vic2NyaWJlKCkge1xyXG4gICAgICAgICAgLy9yZXEuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudD47XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGVzOiBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudFtdPjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGUgfCBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudCB8IEF0dGFjaG1lbnRbXT4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmIChpc0FycmF5KGZpbGVzKSkgZmlsZXMuZm9yRWFjaChmID0+XHJcbiAgICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIGVsc2UgZmQuYXBwZW5kKGZpbGVzLm5hbWUsIGZpbGVzKTtcclxuICAgIC8vY29uc3QgYnl0ZXNQZXJDaHVuayA9IDIwICogMTAyNCAqIDEwMjQ7XHJcbiAgICAvLyBhcXVpcmUgdGhlIGxvY2F0aW9uIHByaW9yIHRvIHNlbmRpbmcgdGhlIHJlcXVlc3RcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtSWQpLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfT92ZXJzaW9uPSR7dmVyc2lvbn1gO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLmlzUHJpdmF0ZSkgdXJsICs9ICcmaXNwcml2YXRlPXRydWUnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVybCwgZmQsIHtcclxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBsb2FkIHByb2dyZXNzIGV2ZW50LiBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XHJcbiAgICAgICAgICAgIC8vY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgRmlsZSBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGlzQXJyYXkoZmlsZXMpID8gbW9kZWwgOiBtb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXRyaWV2ZSBzZW5kZXJzXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKi9cclxuICBzZW5kZXJzKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFVzZXJJbmZvW10+KCcvYXBpL21haWxib3gvc2VuZGVycy8nLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZsYWcoaWQ6IG51bWJlciwgZmxhZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9mbGFnLyR7aWR9P2ZsYWc9JHtmbGFnfWAsIG51bGwpLnBpcGUodGFwKCgpID0+IHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCBmbGFnIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB2aWV3ZWRjb21tZW50cyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IHRpbWU6IERhdGUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdGltZTogRGF0ZSB9PihgL2FwaS9jb21tZW50cy92aWV3ZWQvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUodGFwKChlOiB7IHRpbWU6IERhdGUgfSkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHZpZXdlZDogZS50aW1lIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB0eXBpbmcoaWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvY29tbWVudHMvdHlwaW5nLyR7aWR9YCwge30sIHsgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfSB9KS50b1Byb21pc2UoKTtcclxuICB9XHJcbiAgZWRpdGluZyhpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2VkaXRpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuICBjb3B5KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbGJveC9jb3B5LyR7aWR9YCwge30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcGFyZW50SWQ/OiBudW1iZXJcclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGNvbW1lbnR1cGRhdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxDb21tZW50PihgL2FwaS9jb21tZW50cy9lZGl0LyR7aWR9LyR7Y29tbWVudElkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBpbmZvPFQgPSBhbnk+KGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RG9jdW1lbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50TW9kZWw8VD4+KGAvYXBpL21haWxib3gvaW5mby8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHRpbWVsaW5lKGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q2hhaW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDaGFpbj4oYC9hcGkvbWFpbGJveC90aW1lbGluZS8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHZvdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChgL2FwaS9jb21tZW50cy92b3RlLyR7aWR9LyR7Y29tbWVudElkfWAsIHt9LCB7IHBhcmFtczogeyB2YWx1ZTogdmFsdWUudG9TdHJpbmcoKSB9IH0pO1xyXG4gIH1cclxuICB2b3RlcyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Vm90ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Vm90ZVtdPihgL2FwaS9jb21tZW50cy92b3Rlcy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZWRpdHMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbW1lbnRWZXJzaW9uW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50VmVyc2lvbltdPihgL2FwaS9jb21tZW50cy9lZGl0cy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZmluZEFsbChmaWx0ZXI6IHsgdHlwZT86IEZpbHRlclR5cGU7IGNvbnRhaW5zPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZzsgZm9ybT86IHN0cmluZzsgZm9sZGVySWQ/OiBzdHJpbmc7IHNlbmRlcklkPzogc3RyaW5nOyB9LFxyXG4gICAgb3B0aW9ucz86IHsgc2tpcD86IG51bWJlcjsgdGFrZT86IG51bWJlcjsgb3JkZXJCeT86ICd2YWx1ZScgfCAndmlld2VkJyB8ICdkYXRlJyB9KTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgLi4uZmlsdGVyLCAuLi5vcHRpb25zIH07XHJcbiAgICBjbGVhbnVwKHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8SGVhZGVyTW9kZWxbXT4oJy9hcGkvbWFpbCcsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICBjcmVhdGU8VCA9IGFueT4oZm9ybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHAgPT5cclxuICAgICAgdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KCcvYXBpL21haWwnLCBudWxsLCB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBmb3JtLFxyXG4gICAgICAgICAgLi4ucFxyXG4gICAgICAgIH1cclxuICAgICAgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGdldDxUID0gYW55PihpZDogbnVtYmVyLCByZWFkPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUoXHJcbiAgICAgIHRhcCgobTogUmVjaXBpZW50TW9kZWwpID0+XHJcbiAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgbS5yZWFkID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihtLnJlY2VpdmVkLCBtLmZvbGRlcklkLCAtMSlcclxuICAgICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZXVucmVhZGNvdW50ZXIoZGF0ZTogRGF0ZSwgZm9sZGVySWQ6IHN0cmluZywgdmFsOiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgLy8gZGF0ZSBpcyBhYm92ZSB3YXRlcm1hcmtcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3ICYmXHJcbiAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLmluYm94VmlldyA8IGRhdGVcclxuICAgIClcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmluYm94Q291bnQgKz0gdmFsO1xyXG4gICAgLy8gZGVjcmVhc2VcclxuICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLlxyXG4gICAgICBmaW5kKGYgPT4gZi5uYW1lID09PSBmb2xkZXJJZCk7XHJcbiAgICBmb2xkZXIuY291bnQgPSBNYXRoLm1heCgwLCBmb2xkZXIuY291bnQgKyB2YWwpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZTxUID0gYW55PihpZDogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbW9kZWw6IHt9LCBmaWxlcz86IEZpbGVbXSB8IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgLy9jb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy9jb25zdCBtb2RlbEJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobW9kZWwpXSwge1xyXG4gICAgLy8gIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgIC8vfSk7XHJcbiAgICAvL2ZkLmFwcGVuZCgnZm9ybS1kYXRhJywgbW9kZWxCbG9iKTtcclxuICAgIC8vaWYgKGZpbGVzKSB7XHJcbiAgICAvLyAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgIC8vICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIC8vICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgIC8vICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG4gICAgLy8gIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+IHtcclxuICAgIC8vICAgIGxldCB1cmwgPSBgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAvLyAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocCA9PiB1cmwgKz0gYCYke3B9PSR7cGFyYW1zW3BdfWApO1xyXG4gICAgLy8gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLCB1cmwsIGZkLCB7XHJcbiAgICAvLyAgICB9KTtcclxuICAgIC8vICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5waXBlKG1hcChldmVudCA9PiB7XHJcbiAgICAvLyAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgLy8gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+O1xyXG4gICAgLy8gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIC8vICAgICAgfVxyXG4gICAgLy8gICAgICBlbHNlXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgIC8vICAgIH0pKVxyXG4gICAgLy8gIH0pLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0R2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWAsIG1vZGVsLCB7IHBhcmFtcyB9KSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL21haWwvJHtpZH1gKS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICB0aGlzLl9kZWxldGUkLm5leHQoaWQpKSk7XHJcbiAgfVxyXG4gIHJlbW92ZWNvbW1lbnQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvY29tbWVudHMvJHtpZH1gKTtcclxuICB9XHJcbiAgc3VibWl0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbD86IGFueSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0R2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPGFueT4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmdvPXRydWVgLCBtb2RlbCwgeyBwYXJhbXMgfSkpKS5waXBlKFxyXG4gICAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgc2VuZDxUID0gYW55PihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGZvcm06IHN0cmluZywgbW9kZWw6IGFueSwgYWN0aW9uOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IHt9LCByZWFkPzogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmFjdGlvbj0ke2FjdGlvbn1gLCBtb2RlbCwgeyBwYXJhbXM6IE9iamVjdC5hc3NpZ24ocGFyYW1zLCBhY3Rpb25BcmdzKSB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+XHJcbiAgICAgICAgICByZWFkID09PSBmYWxzZSAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgLTEpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGV2ZW50cyhzdGFydGluZzogRGF0ZSwgZW5kaW5nPzogRGF0ZSwgY29udGFpbnM/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjaGVkdWxlZEV2ZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxTY2hlZHVsZWRFdmVudFtdPihgL2FwaS9ldmVudHNgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHN0YXJ0aW5nOiBzdGFydGluZy50b0pTT04oKSxcclxuICAgICAgICBlbmRpbmc6IGVuZGluZy50b0pTT04oKSxcclxuICAgICAgICBjb250YWluczogY29udGFpbnMgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZUV2ZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHsgc3RhcnRpbmc6IERhdGU7IGVuZGluZz86IERhdGU7IGNvbXBsZXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9ldmVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGdlbyBsb2NhdGlvbiBpZiBmb3JtIHNldHRpbmdzIHJlcXVpZXNcclxuICAgKiBAcGFyYW0gZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dldEdlb0xvY2F0aW9uKGZvcm06IHN0cmluZyk6IE9ic2VydmFibGU8eyBsbmc/OiBzdHJpbmc7IGxhdD86IHN0cmluZyB9PiB7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZvcm0pO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmUnOlxyXG4gICAgICAgIGNhc2UgJ0Fzayc6XHJcbiAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogci5jb29yZHMubG9uZ2l0dWRlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGF0OiByLmNvb3Jkcy5sYXRpdHVkZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCBlID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24gPT09ICdBc2snKVxyXG4gICAgICAgICAgICAgIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBvYnNlcnZlLmVycm9yKCdubyBwb3NpdGlvbicpO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbm90aWZ5ID0gPFQ+KCkgPT4gKG9ic2VydmU6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+KSA9PiB7XHJcbiAgICByZXR1cm4gb2JzZXJ2ZS5waXBlKHRhcChtID0+IHtcclxuICAgICAgKG0gYXMgSXRlbUV4dHJhKS5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQobSk7XHJcbiAgICB9KSk7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1FeHRyYSB7XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgbG9hZGVkPzogYm9vbGVhbjtcclxuICB3b3JraW5nPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRFeHRyYSBleHRlbmRzIEF0dGFjaG1lbnQge1xyXG4gIHVybDogU2FmZVVybDtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGZpbGVFeHQ6IHN0cmluZztcclxuICBpc0ltYWdlOiBib29sZWFuO1xyXG4gIHByb2dyZXNzPzogbnVtYmVyO1xyXG4gIHZpZXdlZD86IERhdGU7XHJcbiAgZmFpbGVkPzogYm9vbGVhbjtcclxufVxyXG5mdW5jdGlvbiBpc0h0dHBSZXNwb25zZTxUPihldmVudDogSHR0cEV2ZW50PFQ+KTogZXZlbnQgaXMgSHR0cFJlc3BvbnNlPFQ+IHtcclxuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0h0dHBQcm9ncmVzc0V2ZW50KFxyXG4gIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj5cclxuKTogZXZlbnQgaXMgSHR0cFByb2dyZXNzRXZlbnQge1xyXG4gIHJldHVybiAoXHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MgfHxcclxuICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3NcclxuICApXHJcbn1cclxuZnVuY3Rpb24gY2FsY3VsYXRlU3RhdGUodXBsb2FkOiBVcGxvYWRFdmVudCwgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPik6IFVwbG9hZEV2ZW50IHtcclxuICBpZiAoaXNIdHRwUHJvZ3Jlc3NFdmVudChldmVudCkpIHtcclxuICAgIHJldHVybiBuZXcgVXBsb2FkRXZlbnQoe1xyXG4gICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcclxuICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcclxuICAgICAgICA6IHVwbG9hZC5wcm9ncmVzcyxcclxuICAgICAgc3RhdGU6ICdwcm9ncmVzcycsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzSHR0cFJlc3BvbnNlKGV2ZW50KSkge1xyXG4gICAgcmV0dXJuIG5ldyBVcGxvYWRFdmVudCh7XHJcbiAgICAgIHByb2dyZXNzOiAxMDAsXHJcbiAgICAgIHN0YXRlOiAnZG9uZScsXHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gdXBsb2FkXHJcbn1cclxuZXhwb3J0IGNsYXNzIFVwbG9hZEV2ZW50IHtcclxuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIHByb2dyZXNzOiBudW1iZXI7XHJcbiAgLy8gYnl0ZXNcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIHN0YXRlOiAncGVuZGluZycgfCAncHJvZ3Jlc3MnIHwgJ2RvbmUnO1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBvcnRwcm9ncmVzcyhmaWxlbmFtZTogc3RyaW5nKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT4gT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QXR0YWNobWVudD4pID0+XHJcbiAgICBzb3VyY2UucGlwZShtYXAociA9PiB7XHJcbiAgICAgIC8vaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgLy8gICAgZmlsZS5uYW1lLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgLy8gICkpO1xyXG4gICAgICAvL30gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgLy8gIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAvLyAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAvLyAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnQ7XHJcbiAgICAgIC8vICAgIG9ic2VydmUubmV4dChtb2RlbCk7XHJcbiAgICAgIC8vICB9XHJcbiAgICAgIC8vICBlbHNlXHJcbiAgICAgIC8vICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgLy8gIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9KSk7XHJcbn1cclxuIl19