@eo-sdk/client 9.5.0-rc.1 → 9.6.0-rc.1

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 (59) hide show
  1. package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts +3 -2
  2. package/app/eo-framework/app-shell/app-bar/app-process/app-process.component.d.ts +1 -0
  3. package/app/eo-framework/object-details/object-details.component.d.ts +1 -0
  4. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +17 -11
  5. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +75 -0
  6. package/app/eo-framework/split/split/split.component.d.ts +1 -1
  7. package/app/eo-framework/split/split-area/split-area.component.d.ts +1 -0
  8. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -0
  9. package/assets/_default/i18n/de.json +45 -21
  10. package/assets/_default/i18n/en.json +35 -11
  11. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +15 -2
  12. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  13. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  14. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  15. package/bundles/eo-sdk-client.umd.js +427 -70
  16. package/bundles/eo-sdk-client.umd.js.map +1 -1
  17. package/bundles/eo-sdk-client.umd.min.js +1 -1
  18. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  19. package/eo-sdk-client.d.ts +10 -9
  20. package/eo-sdk-client.metadata.json +1 -1
  21. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  22. package/esm2015/app/eo-client/favorite-state/favorite-state.component.js +3 -3
  23. package/esm2015/app/eo-client/inbox-state/inbox-state/inbox-state.component.js +7 -5
  24. package/esm2015/app/eo-client/notifications-state/notifications-state.component.js +3 -3
  25. package/esm2015/app/eo-client/object-state/object-state-service/object-state.service.js +2 -2
  26. package/esm2015/app/eo-client/prepare-state/prepare-state/prepare-state.component.js +3 -3
  27. package/esm2015/app/eo-client/recyclebin-state/recyclebin-state.component.js +13 -6
  28. package/esm2015/app/eo-framework/actions/actions/delete-action/delete/delete.component.js +5 -2
  29. package/esm2015/app/eo-framework/actions/actions/signature-action/signature/signature.component.js +8 -6
  30. package/esm2015/app/eo-framework/actions/actions/signature-action/signature-action.component.js +8 -2
  31. package/esm2015/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.js +6 -4
  32. package/esm2015/app/eo-framework/app-shell/app-bar/app-process/app-process.component.js +8 -2
  33. package/esm2015/app/eo-framework/frame/frame.component.js +9 -1
  34. package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +3 -3
  35. package/esm2015/app/eo-framework/object-details/object-details.component.js +12 -5
  36. package/esm2015/app/eo-framework/object-details/object-details.module.js +4 -2
  37. package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +2 -2
  38. package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +41 -23
  39. package/esm2015/app/eo-framework/recyclebin-details/recyclebin-details.component.js +260 -0
  40. package/esm2015/app/eo-framework/split/split/split.component.js +6 -6
  41. package/esm2015/app/eo-framework/split/split-area/split-area.component.js +5 -1
  42. package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +4 -2
  43. package/esm2015/app/eo-framework/ui/signature-tab/signature-tab.component.js +3 -3
  44. package/esm2015/eo-sdk-client.js +11 -10
  45. package/esm2015/projects/eo-sdk/core/lib/model/dms-object-history.model.js +2 -1
  46. package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +3 -3
  47. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +12 -1
  48. package/esm2015/projects/eo-sdk/core/lib/service/events/events.js +2 -1
  49. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +15 -2
  50. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  51. package/fesm2015/eo-sdk-client.js +378 -62
  52. package/fesm2015/eo-sdk-client.js.map +1 -1
  53. package/package.json +2 -2
  54. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  55. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +4 -0
  56. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +1 -1
  57. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +8 -0
  58. package/projects/eo-sdk/core/lib/service/events/events.d.ts +1 -0
  59. package/projects/eo-sdk/core/package.json +1 -1
@@ -0,0 +1,260 @@
1
+ import { of } from 'rxjs';
2
+ import { takeUntil, map } from 'rxjs/operators';
3
+ import { Component, ViewChild, ContentChildren, Input, QueryList, EventEmitter, Output, HostBinding } from '@angular/core';
4
+ import { TabPanelComponent } from '../tab-container/tab-panel/tab-panel.component';
5
+ import { TabPluginComponent } from '../plugins/plugin.component';
6
+ import { Router, ActivatedRoute } from '@angular/router';
7
+ import { TranslateService, Config, UserService, NotificationsService } from '@eo-sdk/core';
8
+ import { Utils, SystemService, DmsService, BackendService, CapabilitiesService, EventService, EnaioEvent } from '@eo-sdk/core';
9
+ import { SelectionService } from '../../eo-framework-core/selection/selection.service';
10
+ import { UnsubscribeOnDestroy } from '../util/unsubscribe/unsubscribe.component';
11
+ import { LocaleDatePipe } from '../../eo-framework-core/pipes/locale-date.pipe';
12
+ import { EmptyStateService } from '../../eo-framework-core/empty-state/empty-state.service';
13
+ export class RecyclebinDetailsComponent extends UnsubscribeOnDestroy {
14
+ constructor(router, route, system, empty, backend, userService, toast, dmsService, selection, capabilityService, eventService, configService, translate) {
15
+ super();
16
+ this.router = router;
17
+ this.route = route;
18
+ this.system = system;
19
+ this.empty = empty;
20
+ this.backend = backend;
21
+ this.userService = userService;
22
+ this.toast = toast;
23
+ this.dmsService = dmsService;
24
+ this.selection = selection;
25
+ this.capabilityService = capabilityService;
26
+ this.eventService = eventService;
27
+ this.configService = configService;
28
+ this.translate = translate;
29
+ // generate unique id to pass to upload registry
30
+ this.user$ = this.userService.user$;
31
+ this._showDeleteDialog = false;
32
+ this.userId = '';
33
+ this.hasError = false;
34
+ this.nodmsobject = false;
35
+ this.showLoader = false;
36
+ this.panelOrder = { 'master': ['summary', 'history'], 'slave': ['preview'] };
37
+ this._emptyState = { icon: 'ic_no-file.svg', text: '', className: '' };
38
+ this.externalPanels = new QueryList();
39
+ this.parseDmsParams = this.getDmsParams;
40
+ this.hasContent = new EventEmitter();
41
+ this.panelOrder = this.configService.getRaw('recyclebinDetailsTabs') || this.panelOrder;
42
+ this.user$.subscribe(user => { this.userId = user.id; });
43
+ }
44
+ set showDeleteDialog(val) {
45
+ this._showDeleteDialog = val;
46
+ if (this._showDeleteDialog) {
47
+ setTimeout(() => this.confirmDeleteButton.nativeElement.focus(), 0);
48
+ }
49
+ }
50
+ get showDeleteDialog() {
51
+ return this._showDeleteDialog;
52
+ }
53
+ set emptyState(e) {
54
+ this._emptyState = e || EmptyStateService.defaultEmptyState();
55
+ }
56
+ get emptyState() {
57
+ return this._emptyState;
58
+ }
59
+ set dmsParams(params) {
60
+ this.showLoader = true;
61
+ this.loadDmsObject(params).subscribe((res) => {
62
+ this.dmsObject = res;
63
+ this.showLoader = false;
64
+ }, Utils.throw(() => this.onHasError(true, true, false)));
65
+ }
66
+ set dmsObject(v) {
67
+ this.item = v;
68
+ this.onHasError();
69
+ // prepare indexdata preview
70
+ this.onIndexDataSaved(null, this.item);
71
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_LOADED, this.item);
72
+ if (this.item) {
73
+ if (this.item.lock) {
74
+ this.lockTooltip = this.translate.instant('eo.object.lock') + ' '
75
+ + (new LocaleDatePipe(this.translate).transform(this.item.lock.on))
76
+ + ', ' + this.item.lock.by.label + ' (' + this.item.lock.by.name + ')';
77
+ }
78
+ }
79
+ else {
80
+ this.emptyState = this.empty.getEmptyState(0);
81
+ }
82
+ }
83
+ get dataType() {
84
+ return this.item ? this.item.typeName : 'none';
85
+ }
86
+ getDmsParams(data) {
87
+ return data ? Object.assign(Object.assign({}, data), { type: data.type }) : null;
88
+ }
89
+ updateContent() {
90
+ if (this.applySelection) {
91
+ this.selection
92
+ .find(this.applySelection.in)
93
+ .focus$
94
+ .pipe(takeUntil(this.componentDestroyed$))
95
+ .subscribe(result => {
96
+ this.showLoader = true;
97
+ this.loadDmsObject(this.parseDmsParams(result)).subscribe((res) => {
98
+ if (this.item && res && (this.item.id === res.id) && res.version > this.item.version) {
99
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, res);
100
+ }
101
+ this.dmsObject = res;
102
+ this.showLoader = false;
103
+ }, Utils.throw((error) => {
104
+ return this.onHasError(true, true, false);
105
+ }));
106
+ });
107
+ }
108
+ }
109
+ restoreFile(openLocationAfterRestore = false) {
110
+ this.dmsService.restore(this.item.id, this.userId, this.item.typeName).subscribe(() => {
111
+ this.updateContent();
112
+ if (openLocationAfterRestore) {
113
+ this.router.navigate(['/object', this.item.id]);
114
+ }
115
+ this.toast.success(this.translate.instant('eo.recyclebin.details.restore.done.title'), this.translate.instant('eo.recyclebin.details.restore.done.message', { item: this.item.title }));
116
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_RESTORED_OR_DELETED);
117
+ }, (error) => {
118
+ if (error.status === 409) {
119
+ this.toast.error(this.translate.instant('eo.recyclebin.details.restore.dms.object.error.409'));
120
+ }
121
+ });
122
+ }
123
+ deleteDmsObject() {
124
+ this.dmsService
125
+ .deleteDmsObject(this.item.id, this.item.type.name, true)
126
+ .subscribe(() => {
127
+ this.toast.success(this.translate.instant('eo.recyclebin.details.delete.done.title'), this.translate.instant('eo.recyclebin.details.delete.done.message', { item: this.item.title }));
128
+ this._showDeleteDialog = false;
129
+ this.eventService.trigger(EnaioEvent.DMS_OBJECT_RESTORED_OR_DELETED);
130
+ });
131
+ }
132
+ prepareIndexDataPreview(item, formData) {
133
+ const { id, data, type, created, modified, content, contentFileName, contentFileSize, version } = item;
134
+ return this.system
135
+ .getObjectTypeForm(type.name, 'EDIT')
136
+ .pipe(map(form => {
137
+ let indexDataPreview = {
138
+ form,
139
+ data: formData || data
140
+ };
141
+ let baseparams = {
142
+ id,
143
+ type: type.name,
144
+ createdOn: new Date(created.on),
145
+ modifiedOn: new Date(modified.on),
146
+ createdBy: `${created.by.title} (${created.by.name})`,
147
+ modifiedBy: `${modified.by.title} (${modified.by.name})`,
148
+ contentFileName: contentFileName ? contentFileName : null,
149
+ contentFileSize: contentFileSize ? Number(contentFileSize) : null,
150
+ version: version || 0,
151
+ mimeGroup: content ? content.contents ? content.contents[0].mimegroup : null : null,
152
+ digest: content ? content.contents ? content.contents[0].digest : null : null,
153
+ contentId: content ? content.contents ? content.id : null : null,
154
+ mimeType: content ? content.contents ? content.contents[0].mimetype : null : null,
155
+ };
156
+ return { indexDataPreview, baseparams };
157
+ }));
158
+ }
159
+ onHasError(hasError = false, nodmsobject = false, showLoader = false) {
160
+ this.hasError = hasError;
161
+ this.nodmsobject = nodmsobject;
162
+ this.showLoader = showLoader;
163
+ this.hasContent.emit(!hasError);
164
+ }
165
+ loadDmsObject(params) {
166
+ var _a;
167
+ if (params) {
168
+ delete params.version;
169
+ }
170
+ // check for valid id
171
+ return ((_a = params === null || params === void 0 ? void 0 : params.id) === null || _a === void 0 ? void 0 : _a.length) === 32 ? this.dmsService.getDmsObjectByParams(params) : of(null);
172
+ }
173
+ downloadOriginalContent() {
174
+ this.backend.downloadContent([this.item], null, false, true);
175
+ }
176
+ // executed when the dms object changed due to saving its indexdata
177
+ onIndexDataSaved(formData, item) {
178
+ if (!this.item) {
179
+ this.indexDataPreview = null;
180
+ this.baseparams = null;
181
+ }
182
+ if (!this.item2) {
183
+ this.indexDataPreview2 = null;
184
+ this.baseparams2 = null;
185
+ }
186
+ if (item) {
187
+ this.prepareIndexDataPreview(item, formData)
188
+ .subscribe(data => {
189
+ if (item === this.item) {
190
+ this.indexDataPreview = data.indexDataPreview;
191
+ this.baseparams = data.baseparams;
192
+ }
193
+ else {
194
+ this.indexDataPreview2 = data.indexDataPreview;
195
+ this.baseparams2 = data.baseparams;
196
+ }
197
+ });
198
+ }
199
+ }
200
+ isVisible(id) {
201
+ return this.panelOrder.master.includes(id) || this.panelOrder.slave.includes(id);
202
+ }
203
+ ngOnInit() {
204
+ this.capabilities = this.capabilityService.getCapabilities();
205
+ this.updateContent();
206
+ this.eventService
207
+ .on(EnaioEvent.DMS_OBJECT_UPDATED)
208
+ .pipe(takeUntil(this.componentDestroyed$))
209
+ .subscribe(event => {
210
+ if (event.data && this.item.id === event.data.id) {
211
+ this.dmsObject = this.dmsService.createLocalCopyOfDMSObject(event.data);
212
+ if (this.preview && !this.preview.disabled) {
213
+ this.preview.refresh();
214
+ }
215
+ }
216
+ });
217
+ }
218
+ ngAfterViewInit() {
219
+ let panels = this.tabPanels.toArray();
220
+ this.tabPlugins.forEach(p => panels = panels.concat(p.tabPanels.toArray()));
221
+ this.externalPanels.reset(panels);
222
+ }
223
+ }
224
+ RecyclebinDetailsComponent.decorators = [
225
+ { type: Component, args: [{
226
+ selector: 'eo-recyclebin-details',
227
+ template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"recyclebin-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError\">\n\n <div class=\"eo-head eo-head-tabs\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"actions\">\n <eo-icon *ngIf=\"item.content\" class=\"btn btn-download\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n (click)=\"downloadOriginalContent()\"></eo-icon>\n <eo-icon class=\"btn btn-delete\" [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"\n [iconTitle]=\"('eo.recyclebin.details.delete.tooltip' | translate)\"\n (click)=\"showDeleteDialog = true;\"></eo-icon>\n <button class=\"btn-tpl-apply\" (click)=\"restoreFile()\" translate>eo.recyclebin.details.restore</button>\n <button (click)=\"restoreFile(true)\" class=\"primary btn-idx-restoreopen\"\n translate>eo.recyclebin.details.restoreopen</button>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n <eo-tab-container [defaultPanelOrder]=\"panelOrder\" [pluginPanels]=\"externalPanels\" [cacheLayout]=\"cacheLayout\"\n [enableSlave]=\"true\">\n\n <eo-tab-panel [id]=\"'summary'\" *ngIf=\"isVisible('summary')\"\n header=\"{{'eo.object.summary.title' | translate}}\">\n <ng-template pTemplate=\"content\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n </eo-tab-panel>\n\n <eo-tab-panel [id]=\"'preview'\" *ngIf=\"isVisible('preview')\"\n header=\"{{'eo.object.content.title' | translate}}\" [isSlave]=\"true\" #preview>\n <ng-template pTemplate=\"content\">\n <eo-media *ngIf=\"item\" [dmsObject]=\"item\" [useVersion]=\"item.id === item.content?.id\" #viewer></eo-media>\n </ng-template>\n </eo-tab-panel>\n\n <eo-tab-panel *ngIf=\"isVisible('history')\" [id]=\"'history'\"\n header=\"{{'eo.object.history.title' | translate}}\" #history>\n <ng-template pTemplate=\"content\">\n <eo-object-history *ngIf=\"history.selected\" [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n </eo-tab-panel>\n\n <ng-content></ng-content>\n\n </eo-tab-container>\n </div>\n</ng-container>\n\n<eo-dialog [title]=\"'eo.recyclebin.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'recyclebin-delete__dialog'\">\n\n <div>{{'eo.recyclebin.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons recyclebin-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.recyclebin.details.delete.dialog.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"deleteDmsObject()\" class=\"button primary\"\n translate>eo.recyclebin.details.delete.dialog.delete</button>\n </div>\n</eo-dialog>\n",
228
+ styles: [":host{background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .eo-head .eo-header .eo-header-info .eo-header-subtitle,:host .eo-head .eo-header .eo-header-info .eo-header-title{-moz-user-select:text;-webkit-user-select:text;user-select:text}:host .actions{align-items:center;align-self:flex-start;display:flex}[dir=ltr] :host .actions button{margin-left:calc(var(--app-pane-padding)/2)}[dir=rtl] :host .actions button{margin-right:calc(var(--app-pane-padding)/2)}:host .actions eo-icon{cursor:pointer;padding:calc(var(--app-pane-padding)/4)}:host .eo-body__not-available{background:rgba(var(--color-black-rgb),.4);opacity:.4}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .loader-overlay__mask{-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s;background:rgba(var(--color-white-rgb),.8);display:flex;height:100%;position:absolute;width:100%;z-index:11}:host .loader-overlay__mask .recyclebin-detail__loader{margin:auto}:host ::ng-deep div[eosplitgutter]{background-color:var(--color-white)!important}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}::ng-deep .recyclebin-delete__dialog{min-height:unset!important;padding:8px}::ng-deep .recyclebin-delete__dialog--header{background:#fff!important;color:rgba(var(--color-black-rgb),.54)!important;font-size:1.17em!important;font-weight:400!important;margin:0;padding:0 0 1em!important}"]
229
+ },] }
230
+ ];
231
+ RecyclebinDetailsComponent.ctorParameters = () => [
232
+ { type: Router },
233
+ { type: ActivatedRoute },
234
+ { type: SystemService },
235
+ { type: EmptyStateService },
236
+ { type: BackendService },
237
+ { type: UserService },
238
+ { type: NotificationsService },
239
+ { type: DmsService },
240
+ { type: SelectionService },
241
+ { type: CapabilitiesService },
242
+ { type: EventService },
243
+ { type: Config },
244
+ { type: TranslateService }
245
+ ];
246
+ RecyclebinDetailsComponent.propDecorators = {
247
+ preview: [{ type: ViewChild, args: ['viewer',] }],
248
+ confirmDeleteButton: [{ type: ViewChild, args: ['confirmDelete',] }],
249
+ cacheLayout: [{ type: Input }],
250
+ tabPanels: [{ type: ContentChildren, args: [TabPanelComponent,] }],
251
+ tabPlugins: [{ type: ContentChildren, args: [TabPluginComponent,] }],
252
+ applySelection: [{ type: Input }],
253
+ parseDmsParams: [{ type: Input }],
254
+ hasContent: [{ type: Output }],
255
+ emptyState: [{ type: Input }],
256
+ dmsParams: [{ type: Input, args: ['params',] }],
257
+ dmsObject: [{ type: Input, args: ['item',] }],
258
+ dataType: [{ type: HostBinding, args: ['attr.data-type',] }]
259
+ };
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjeWNsZWJpbi1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3JlY3ljbGViaW4tZGV0YWlscy9yZWN5Y2xlYmluLWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUFFLFdBQVcsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUd6RixPQUFPLEVBQ00sS0FBSyxFQUFjLGFBQWEsRUFDM0MsVUFBVSxFQUFFLGNBQWMsRUFBZ0IsbUJBQW1CLEVBQzdELFlBQVksRUFBRSxVQUFVLEVBQ3pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFFOUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seURB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QWlCO1lBVlgsY0FBYztZQUxNLFdBQVc7WUFBRSxvQkFBb0I7WUFLakUsVUFBVTtZQUtWLGdCQUFnQjtZQUwwQixtQkFBbUI7WUFDN0QsWUFBWTtZQU5ZLE1BQU07WUFBeEIsZ0JBQWdCOzs7c0JBdUJyQixTQUFTLFNBQUMsUUFBUTtrQ0FDbEIsU0FBUyxTQUFDLGVBQWU7MEJBZXpCLEtBQUs7d0JBU0wsZUFBZSxTQUFDLGlCQUFpQjt5QkFDakMsZUFBZSxTQUFDLGtCQUFrQjs2QkFFbEMsS0FBSzs2QkFDTCxLQUFLO3lCQUNMLE1BQU07eUJBY04sS0FBSzt3QkFTTCxLQUFLLFNBQUMsUUFBUTt3QkFXZCxLQUFLLFNBQUMsTUFBTTt1QkFvQlosV0FBVyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWwsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgT25Jbml0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYlBhbmVsQ29tcG9uZW50fSBmcm9tICcuLi90YWItY29udGFpbmVyL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7VGFiUGx1Z2luQ29tcG9uZW50fSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbi5jb21wb25lbnQnO1xuaW1wb3J0IHtSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBDb25maWcsIFVzZXJTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7TWVkaWFDb21wb25lbnR9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERtc09iamVjdCwgVXRpbHMsIEJhc2VQYXJhbXMsIFN5c3RlbVNlcnZpY2UsIERtc1BhcmFtcyxcbiAgRG1zU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIENhcGFiaWxpdGllcywgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgRXZlbnRTZXJ2aWNlLCBFbmFpb0V2ZW50XG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1xuICBTZWxlY3Rpb25Db25maWcsXG4gIFNlbGVjdGlvblNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtFbXB0eVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1yZWN5Y2xlYmluLWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjeWNsZWJpbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjeWNsZWJpbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVjeWNsZWJpbkRldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndmlld2VyJykgcHJldmlldzogTWVkaWFDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGUnKSBjb25maXJtRGVsZXRlQnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICB1c2VyJCA9IHRoaXMudXNlclNlcnZpY2UudXNlciQ7XG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIHVzZXJJZCA9ICcnO1xuICBpdGVtOiBEbXNPYmplY3Q7XG4gIGluZGV4RGF0YVByZXZpZXc6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczogQmFzZVBhcmFtcztcbiAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgbG9ja1Rvb2x0aXA6IHN0cmluZztcbiAgbm9kbXNvYmplY3QgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwYW5lbE9yZGVyID0geydtYXN0ZXInOiBbJ3N1bW1hcnknLCAnaGlzdG9yeSddLCAnc2xhdmUnOiBbJ3ByZXZpZXcnXX07XG5cbiAgQElucHV0KCkgY2FjaGVMYXlvdXQ6IGFueTtcbiAgaXRlbTI6IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzI6IEluZGV4RGF0YTtcbiAgYmFzZXBhcmFtczI6IEJhc2VQYXJhbXM7XG4gIHByaXZhdGUgX2VtcHR5U3RhdGU6IEVtcHR5U3RhdGUgPSB7aWNvbjogJ2ljX25vLWZpbGUuc3ZnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xuICBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKFRhYlBsdWdpbkNvbXBvbmVudClcbiAgdGFiUGx1Z2luczogUXVlcnlMaXN0PFRhYlBsdWdpbkNvbXBvbmVudD47XG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XG4gIEBJbnB1dCgpIHBhcnNlRG1zUGFyYW1zOiAoZGF0YSkgPT4ge30gPSB0aGlzLmdldERtc1BhcmFtcztcbiAgQE91dHB1dCgpIGhhc0NvbnRlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBzZXQgc2hvd0RlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gdmFsO1xuXG4gICAgaWYgKHRoaXMuX3Nob3dEZWxldGVEaWFsb2cpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtRGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dEZWxldGVEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dEZWxldGVEaWFsb2c7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZW1wdHlTdGF0ZShlOiBFbXB0eVN0YXRlKSB7XG4gICAgdGhpcy5fZW1wdHlTdGF0ZSA9IGUgfHwgRW1wdHlTdGF0ZVNlcnZpY2UuZGVmYXVsdEVtcHR5U3RhdGUoKTtcbiAgfVxuXG4gIGdldCBlbXB0eVN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9lbXB0eVN0YXRlO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMnKVxuICBzZXQgZG1zUGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWREbXNPYmplY3QocGFyYW1zKS5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICB0aGlzLmRtc09iamVjdCA9IHJlcztcbiAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgIH0sXG4gICAgICBVdGlscy50aHJvdygoKSA9PiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpKVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ2l0ZW0nKVxuICBzZXQgZG1zT2JqZWN0KHY6IERtc09iamVjdCkge1xuICAgIHRoaXMuaXRlbSA9IHY7XG4gICAgdGhpcy5vbkhhc0Vycm9yKCk7XG4gICAgLy8gcHJlcGFyZSBpbmRleGRhdGEgcHJldmlld1xuICAgIHRoaXMub25JbmRleERhdGFTYXZlZChudWxsLCB0aGlzLml0ZW0pO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX0xPQURFRCwgdGhpcy5pdGVtKTtcblxuICAgIGlmICh0aGlzLml0ZW0pIHtcblxuICAgICAgaWYgKHRoaXMuaXRlbS5sb2NrKSB7XG4gICAgICAgIHRoaXMubG9ja1Rvb2x0aXAgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5vYmplY3QubG9jaycpICsgJyAnXG4gICAgICAgICAgKyAobmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odGhpcy5pdGVtLmxvY2sub24pKVxuICAgICAgICAgICsgJywgJyArIHRoaXMuaXRlbS5sb2NrLmJ5LmxhYmVsICsgJyAoJyArIHRoaXMuaXRlbS5sb2NrLmJ5Lm5hbWUgKyAnKSc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZSgwKTtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW0gPyB0aGlzLml0ZW0udHlwZU5hbWUgOiAnbm9uZSc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdDogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZyxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnBhbmVsT3JkZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdyZWN5Y2xlYmluRGV0YWlsc1RhYnMnKSB8fCB0aGlzLnBhbmVsT3JkZXI7XG4gICAgdGhpcy51c2VyJC5zdWJzY3JpYmUodXNlciA9PiB7dGhpcy51c2VySWQgPSB1c2VyLmlkOyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG1zUGFyYW1zKGRhdGE6IGFueSk6IERtc1BhcmFtcyB7XG4gICAgcmV0dXJuIGRhdGEgPyB7Li4uZGF0YSwgdHlwZTogZGF0YS50eXBlfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgIC5mb2N1cyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvYWREbXNPYmplY3QodGhpcy5wYXJzZURtc1BhcmFtcyhyZXN1bHQpIGFzIERtc1BhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiByZXMgJiYgKHRoaXMuaXRlbS5pZCA9PT0gcmVzLmlkKSAmJiByZXMudmVyc2lvbiA+IHRoaXMuaXRlbS52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgICBVdGlscy50aHJvdygoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmVGaWxlKG9wZW5Mb2NhdGlvbkFmdGVyUmVzdG9yZSA9IGZhbHNlKSB7XG4gICAgdGhpcy5kbXNTZXJ2aWNlLnJlc3RvcmUodGhpcy5pdGVtLmlkLCB0aGlzLnVzZXJJZCwgdGhpcy5pdGVtLnR5cGVOYW1lKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG4gICAgICBpZiAob3BlbkxvY2F0aW9uQWZ0ZXJSZXN0b3JlKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIHRoaXMuaXRlbS5pZF0pO1xuICAgICAgfVxuICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5yZWN5Y2xlYmluLmRldGFpbHMucmVzdG9yZS5kb25lLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnJlY3ljbGViaW4uZGV0YWlscy5yZXN0b3JlLmRvbmUubWVzc2FnZScsIHtpdGVtIDogdGhpcy5pdGVtLnRpdGxlfSksXG4gICAgICApO1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfUkVTVE9SRURfT1JfREVMRVRFRCk7XG4gICAgfSwgKGVycm9yKT0+IHtcbiAgICAgIGlmKGVycm9yLnN0YXR1cyA9PT0gNDA5KXtcbiAgICAgICAgdGhpcy50b2FzdC5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5yZWN5Y2xlYmluLmRldGFpbHMucmVzdG9yZS5kbXMub2JqZWN0LmVycm9yLjQwOScpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBkZWxldGVEbXNPYmplY3QoKSB7XG4gICAgdGhpcy5kbXNTZXJ2aWNlXG4gICAgICAuZGVsZXRlRG1zT2JqZWN0KHRoaXMuaXRlbS5pZCwgdGhpcy5pdGVtLnR5cGUubmFtZSwgdHJ1ZSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcyhcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnJlY3ljbGViaW4uZGV0YWlscy5kZWxldGUuZG9uZS50aXRsZScpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucmVjeWNsZWJpbi5kZXRhaWxzLmRlbGV0ZS5kb25lLm1lc3NhZ2UnLCB7aXRlbSA6IHRoaXMuaXRlbS50aXRsZX0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfUkVTVE9SRURfT1JfREVMRVRFRCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbTogRG1zT2JqZWN0LCBmb3JtRGF0YT86IGFueSkge1xuICAgIGNvbnN0IHtpZCwgZGF0YSwgdHlwZSwgY3JlYXRlZCwgbW9kaWZpZWQsIGNvbnRlbnQsIGNvbnRlbnRGaWxlTmFtZSwgY29udGVudEZpbGVTaXplLCB2ZXJzaW9ufSA9IGl0ZW07XG5cbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1cbiAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdFRElUJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZm9ybSA9PiB7XG4gICAgICAgICAgbGV0IGluZGV4RGF0YVByZXZpZXcgPSB7XG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgZGF0YTogZm9ybURhdGEgfHwgZGF0YVxuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IGJhc2VwYXJhbXM6IEJhc2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICAgICAgICAgIGNyZWF0ZWRPbjogbmV3IERhdGUoY3JlYXRlZC5vbiksXG4gICAgICAgICAgICBtb2RpZmllZE9uOiBuZXcgRGF0ZShtb2RpZmllZC5vbiksXG4gICAgICAgICAgICBjcmVhdGVkQnk6IGAke2NyZWF0ZWQuYnkudGl0bGV9ICgke2NyZWF0ZWQuYnkubmFtZX0pYCxcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6IGAke21vZGlmaWVkLmJ5LnRpdGxlfSAoJHttb2RpZmllZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgY29udGVudEZpbGVOYW1lOiBjb250ZW50RmlsZU5hbWUgPyBjb250ZW50RmlsZU5hbWUgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudEZpbGVTaXplOiBjb250ZW50RmlsZVNpemUgPyBOdW1iZXIoY29udGVudEZpbGVTaXplKSA6IG51bGwsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uIHx8IDAsXG4gICAgICAgICAgICBtaW1lR3JvdXA6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1lZ3JvdXAgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIGRpZ2VzdDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLmRpZ2VzdCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgY29udGVudElkOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuaWQgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0ubWltZXR5cGUgOiBudWxsIDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7aW5kZXhEYXRhUHJldmlldywgYmFzZXBhcmFtc307XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgb25IYXNFcnJvcihoYXNFcnJvciA9IGZhbHNlLCBub2Rtc29iamVjdCA9IGZhbHNlLCBzaG93TG9hZGVyID0gZmFsc2UpIHtcbiAgICB0aGlzLmhhc0Vycm9yID0gaGFzRXJyb3I7XG4gICAgdGhpcy5ub2Rtc29iamVjdCA9IG5vZG1zb2JqZWN0O1xuICAgIHRoaXMuc2hvd0xvYWRlciA9IHNob3dMb2FkZXI7XG4gICAgdGhpcy5oYXNDb250ZW50LmVtaXQoIWhhc0Vycm9yKTtcbiAgfVxuXG4gIGxvYWREbXNPYmplY3QocGFyYW1zOiBEbXNQYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBkZWxldGUgcGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciB2YWxpZCBpZFxuICAgIHJldHVybiBwYXJhbXM/LmlkPy5sZW5ndGggPT09IDMyID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtcykgOiBvZihudWxsKTtcbiAgfVxuXG4gIGRvd25sb2FkT3JpZ2luYWxDb250ZW50KCkge1xuICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoW3RoaXMuaXRlbV0sIG51bGwsIGZhbHNlLCB0cnVlKTtcbiAgfVxuXG4gIC8vIGV4ZWN1dGVkIHdoZW4gdGhlIGRtcyBvYmplY3QgY2hhbmdlZCBkdWUgdG8gc2F2aW5nIGl0cyBpbmRleGRhdGFcbiAgb25JbmRleERhdGFTYXZlZChmb3JtRGF0YSwgaXRlbSkge1xuICAgIGlmICghdGhpcy5pdGVtKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBudWxsO1xuICAgICAgdGhpcy5iYXNlcGFyYW1zID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLml0ZW0yKSB7XG4gICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtczIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5wcmVwYXJlSW5kZXhEYXRhUHJldmlldyhpdGVtLCBmb3JtRGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcy5pdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMgPSBkYXRhLmJhc2VwYXJhbXM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhEYXRhUHJldmlldzIgPSBkYXRhLmluZGV4RGF0YVByZXZpZXc7XG4gICAgICAgICAgICB0aGlzLmJhc2VwYXJhbXMyID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNWaXNpYmxlKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wYW5lbE9yZGVyLm1hc3Rlci5pbmNsdWRlcyhpZCkgfHwgdGhpcy5wYW5lbE9yZGVyLnNsYXZlLmluY2x1ZGVzKGlkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXR5U2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgdGhpcy5pdGVtLmlkID09PSBldmVudC5kYXRhLmlkKSB7XG4gICAgICAgICAgdGhpcy5kbXNPYmplY3QgPSB0aGlzLmRtc1NlcnZpY2UuY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgaWYgKHRoaXMucHJldmlldyAmJiAhdGhpcy5wcmV2aWV3LmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcbiAgICB0aGlzLnRhYlBsdWdpbnMuZm9yRWFjaChwID0+IHBhbmVscyA9IHBhbmVscy5jb25jYXQocC50YWJQYW5lbHMudG9BcnJheSgpKSk7XG4gICAgdGhpcy5leHRlcm5hbFBhbmVscy5yZXNldChwYW5lbHMpO1xuICB9XG59XG4iXX0=
@@ -82,7 +82,7 @@ export class SplitComponent extends UnsubscribeOnDestroy {
82
82
  this.layoutService.getLayout(`eo.split.layout.${this.cacheLayout}`)
83
83
  .subscribe(layout => {
84
84
  (layout || []).forEach((area) => {
85
- if (area && this.areas.length) {
85
+ if (area && this.areas.length > area.index) {
86
86
  this.areas[area.index].size = area.size;
87
87
  this.areas[area.index].sizeUser = area.size;
88
88
  this.areas[area.index].component.visible = area.visible;
@@ -135,14 +135,14 @@ export class SplitComponent extends UnsubscribeOnDestroy {
135
135
  const item = this.areas.find(a => a.component === area);
136
136
  if (item) {
137
137
  this.refresh();
138
- this.updateCache();
138
+ this.updateLayoutCache();
139
139
  }
140
140
  }
141
141
  showArea(area) {
142
142
  const item = this.areas.find(a => a.component === area);
143
143
  if (item) {
144
144
  this.refresh();
145
- this.updateCache();
145
+ this.updateLayoutCache();
146
146
  }
147
147
  }
148
148
  isLastVisibleArea(area) {
@@ -288,7 +288,7 @@ export class SplitComponent extends UnsubscribeOnDestroy {
288
288
  this.containerSize = 0;
289
289
  this.areaASize = 0;
290
290
  this.areaBSize = 0;
291
- this.updateCache();
291
+ this.updateLayoutCache();
292
292
  this.isDragging = false;
293
293
  this.notify('end');
294
294
  }
@@ -305,7 +305,7 @@ export class SplitComponent extends UnsubscribeOnDestroy {
305
305
  return this.visibleTransitionEndInternal.next(data);
306
306
  }
307
307
  }
308
- updateCache() {
308
+ updateLayoutCache() {
309
309
  if (this.cacheLayout) {
310
310
  let layout = this.areas.map((a, i) => ({ index: i, size: a.size, visible: a.component.visible }));
311
311
  this.layoutService.cacheLayout(`eo.split.layout.${this.cacheLayout}`, layout);
@@ -353,4 +353,4 @@ SplitComponent.propDecorators = {
353
353
  applyCacheLayout: [{ type: Input }],
354
354
  cacheLayout: [{ type: Input }]
355
355
  };
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3BsaXQvc3BsaXQvc3BsaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFBd0IsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzNFLFVBQVUsRUFBRSxTQUFTLEVBQWlCLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUIsTUFBTSxFQUN0RyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBMEIsTUFBTSxjQUFjLENBQUM7QUFFbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBc0IvRSxNQUFNLE9BQU8sY0FBZSxTQUFRLG9CQUFvQjtJQTJFdEQsWUFBb0IsS0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsUUFBbUIsRUFDbkIsT0FBZSxFQUNmLGFBQTRCLEVBQzVCLFdBQXdCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBTlUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTlFbkMsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25C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QUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OztZQW5ZRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxxckJBQXFDOzthQUV0Qzs7O1lBN0IyRCxpQkFBaUI7WUFDM0UsVUFBVTtZQUFFLFNBQVM7WUFBMEUsTUFBTTtZQU8vRixhQUFhO1lBSGIsV0FBVzs7O3dCQTJCaEIsS0FBSzt5QkFDTCxLQUFLO29CQUNMLEtBQUs7cUJBQ0wsS0FBSzt5QkFDTCxLQUFLOzBCQUNMLEtBQUs7dUJBQ0wsS0FBSztnQ0FDTCxLQUFLO3dCQUVMLE1BQU07MkJBQ04sTUFBTTtzQkFDTixNQUFNO21DQUVOLE1BQU07aUNBRU4sV0FBVyxTQUFDLGdCQUFnQjtzQ0FJNUIsV0FBVyxTQUFDLHNCQUFzQjt1QkFJbEMsV0FBVyxTQUFDLG9CQUFvQjt5QkFLaEMsV0FBVyxTQUFDLGFBQWE7MEJBSXpCLFdBQVcsU0FBQyxjQUFjO3lCQWMxQixXQUFXLFNBQUMsZ0JBQWdCOytCQVc1QixLQUFLOzBCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rha2VVbnRpbCwgZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3QsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VXNlclNlcnZpY2UsIEVvVXNlciwgQXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtTcGxpdEFyZWFDb21wb25lbnR9IGZyb20gJy4uL3NwbGl0LWFyZWEvc3BsaXQtYXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuaW1wb3J0IHtMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9sYXlvdXQvbGF5b3V0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBcmVhRGF0YSB7XG4gIGNvbXBvbmVudDogU3BsaXRBcmVhQ29tcG9uZW50O1xuICBzaXplVXNlcjogbnVtYmVyIHwgbnVsbDtcbiAgc2l6ZTogbnVtYmVyO1xuICBvcmRlclVzZXI6IG51bWJlciB8IG51bGw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIG1pblBpeGVsOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3BsaXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BsaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdENvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIGRpcmVjdGlvbiA9ICdob3Jpem9udGFsJztcbiAgQElucHV0KCkgc3dpdGNoYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgZ3V0dGVyU2l6ZSA9IDEwO1xuICBASW5wdXQoKSBndXR0ZXJDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB2aXNpYmxlVHJhbnNpdGlvbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBkcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PG51bWJlcj4+KGZhbHNlKTtcbiAgQE91dHB1dCgpIGRyYWdQcm9ncmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8bnVtYmVyPj4oZmFsc2UpO1xuICBAT3V0cHV0KCkgZHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8bnVtYmVyPj4oZmFsc2UpO1xuICB2aXNpYmxlVHJhbnNpdGlvbkVuZEludGVybmFsID0gbmV3IFN1YmplY3Q8QXJyYXk8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIHZpc2libGVUcmFuc2l0aW9uRW5kOiBPYnNlcnZhYmxlPEFycmF5PG51bWJlcj4+ID0gdGhpcy52aXNpYmxlVHJhbnNpdGlvbkVuZEludGVybmFsLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwKSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy52ZXJ0aWNhbCcpIGdldCBzdHlsZUZsZXhEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LWRpcmVjdGlvbicpIGdldCBzdHlsZUZsZXhEaXJlY3Rpb25TdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdyb3cnIDogJ2NvbHVtbic7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vdHJhbnNpdGlvbicpIGdldCBkcmFnZ2luZygpIHtcbiAgICAvLyBwcmV2ZW50IGFuaW1hdGlvbiBvZiBhcmVhcyB3aGVuIHZpc2libGVUcmFuc2l0aW9uIGlzIGZhbHNlLCBvciByZXNpemluZ1xuICAgIHJldHVybiAhdGhpcy52aXNpYmxlVHJhbnNpdGlvbiB8fCB0aGlzLmlzRHJhZ2dpbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgZ2V0IHN0eWxlV2lkdGgoKSB7XG4gICAgcmV0dXJuICh0aGlzLndpZHRoICYmICFpc05hTih0aGlzLndpZHRoKSAmJiB0aGlzLndpZHRoID4gMCkgPyB0aGlzLndpZHRoICsgJ3B4JyA6ICcxMDAlJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JykgZ2V0IHN0eWxlSGVpZ2h0KCkge1xuICAgIHJldHVybiAodGhpcy5oZWlnaHQgJiYgIWlzTmFOKHRoaXMuaGVpZ2h0KSAmJiB0aGlzLmhlaWdodCA+IDApID8gdGhpcy5oZWlnaHQgKyAncHgnIDogJzEwMCUnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmlzaWJsZUFyZWFzKCk6IElBcmVhRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5hcmVhcy5maWx0ZXIoYSA9PiBhLmNvbXBvbmVudC52aXNpYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5iR3V0dGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBcmVhcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHVibGljIGFyZWFzOiBBcnJheTxJQXJlYURhdGE+ID0gW107XG4gIHByaXZhdGUgbWluUGVyY2VudCA9IDU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhZ2dpbmcnKVxuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGFpbmVyU2l6ZSA9IDA7XG4gIHByaXZhdGUgYXJlYUFTaXplID0gMDtcbiAgcHJpdmF0ZSBhcmVhQlNpemUgPSAwO1xuICBwcml2YXRlIGRpcmVjdGlvbkluZGV4ID0gMTtcbiAgcHJpdmF0ZSBldmVudHNEcmFnRmN0OiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcblxuICBwcml2YXRlIF9jYWNoZUxheW91dDogYW55ID0gZmFsc2U7XG4gIHByaXZhdGUgX2FmdGVyVmlld0luaXQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBhcHBseUNhY2hlTGF5b3V0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzZXQgY2FjaGVMYXlvdXQodmFsOiBhbnkpIHtcbiAgICBpZiAodGhpcy5hcHBseUNhY2hlTGF5b3V0KSB7XG4gICAgICAodmFsICYmIHZhbC5zdWJzY3JpYmUgPyB2YWwgOiBvYnNlcnZhYmxlT2YodmFsKSlcbiAgICAgICAgLnN1YnNjcmliZShjYWNoZUxheW91dCA9PiB7XG4gICAgICAgICAgdGhpcy5fY2FjaGVMYXlvdXQgPSBjYWNoZUxheW91dDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FjaGVMYXlvdXQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVMYXlvdXQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh1c2VyOiBFb1VzZXIpID0+IHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uSW5kZXggPSAodXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcpID8gLTEgOiAxO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlRGlyZWN0aW9uKCl7XG4gICAgaWYodGhpcy5zd2l0Y2hhYmxlKXtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCdcbiAgICB9XG4gIH1cblxuICB1cGRhdGVMYXlvdXQoKSB7XG4gICAgaWYgKHRoaXMuX2FmdGVyVmlld0luaXQgJiYgdGhpcy5jYWNoZUxheW91dCkge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmdldExheW91dChgZW8uc3BsaXQubGF5b3V0LiR7dGhpcy5jYWNoZUxheW91dH1gKVxuICAgICAgICAuc3Vic2NyaWJlKGxheW91dCA9PiB7XG4gICAgICAgICAgKGxheW91dCB8fCBbXSkuZm9yRWFjaCgoYXJlYSkgPT4ge1xuICAgICAgICAgICAgaWYgKGFyZWEgJiYgdGhpcy5hcmVhcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5hcmVhc1thcmVhLmluZGV4XS5zaXplID0gYXJlYS5zaXplO1xuICAgICAgICAgICAgICB0aGlzLmFyZWFzW2FyZWEuaW5kZXhdLnNpemVVc2VyID0gYXJlYS5zaXplO1xuICAgICAgICAgICAgICB0aGlzLmFyZWFzW2FyZWEuaW5kZXhdLmNvbXBvbmVudC52aXNpYmxlID0gYXJlYS52aXNpYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS52aXNpYmlsaXR5VXBkYXRlKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoU3R5bGVTaXplcygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdCA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2d1dHRlclNpemUnXSB8fCBjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkQXJlYShjb21wb25lbnQ6IFNwbGl0QXJlYUNvbXBvbmVudCwgb3JkZXJVc2VyOiBudW1iZXIgfCBudWxsLCBzaXplVXNlcjogbnVtYmVyIHwgbnVsbCwgbWluUGl4ZWw6IG51bWJlcikge1xuICAgIHRoaXMuYXJlYXMucHVzaCh7XG4gICAgICBjb21wb25lbnQsXG4gICAgICBvcmRlclVzZXIsXG4gICAgICBvcmRlcjogLTEsXG4gICAgICBzaXplVXNlcixcbiAgICAgIHNpemU6IC0xLFxuICAgICAgbWluUGl4ZWxcbiAgICB9KTtcblxuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFyZWEoY29tcG9uZW50OiBTcGxpdEFyZWFDb21wb25lbnQsIG9yZGVyVXNlcjogbnVtYmVyIHwgbnVsbCwgc2l6ZVVzZXI6IG51bWJlciB8IG51bGwsIG1pblBpeGVsOiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcmVhcy5maW5kKGEgPT4gYS5jb21wb25lbnQgPT09IGNvbXBvbmVudCk7XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgaXRlbS5vcmRlclVzZXIgPSBvcmRlclVzZXI7XG4gICAgICBpdGVtLnNpemVVc2VyID0gc2l6ZVVzZXI7XG4gICAgICBpdGVtLm1pblBpeGVsID0gbWluUGl4ZWw7XG5cbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBcmVhKGFyZWE6IFNwbGl0QXJlYUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmFyZWFzLmZpbmQoYSA9PiBhLmNvbXBvbmVudCA9PT0gYXJlYSk7XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFyZWFzLmluZGV4T2YoaXRlbSk7XG4gICAgICB0aGlzLmFyZWFzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmFyZWFzLmZvckVhY2goKGEsIGkpID0+IGEub3JkZXIgPSBpICogMik7XG5cbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlQXJlYShhcmVhOiBTcGxpdEFyZWFDb21wb25lbnQpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcmVhcy5maW5kKGEgPT4gYS5jb21wb25lbnQgPT09IGFyZWEpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG93QXJlYShhcmVhOiBTcGxpdEFyZWFDb21wb25lbnQpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcmVhcy5maW5kKGEgPT4gYS5jb21wb25lbnQgPT09IGFyZWEpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0xhc3RWaXNpYmxlQXJlYShhcmVhOiBJQXJlYURhdGEpIHtcbiAgICBjb25zdCB2aXNpYmxlQXJlYXMgPSB0aGlzLnZpc2libGVBcmVhcztcbiAgICByZXR1cm4gdmlzaWJsZUFyZWFzLmxlbmd0aCA+IDAgPyBhcmVhID09PSB2aXNpYmxlQXJlYXNbdmlzaWJsZUFyZWFzLmxlbmd0aCAtIDFdIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2goKSB7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcblxuICAgIGNvbnN0IHZpc2libGVBcmVhcyA9IHRoaXMudmlzaWJsZUFyZWFzO1xuXG4gICAgLy8gT1JERVJTOiBTZXQgY3NzICdvcmRlcicgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHVzZXIgaW5wdXQgb3IgYWRkZWQgb3JkZXJcbiAgICBjb25zdCBuYkNvcnJlY3RPcmRlciA9IHRoaXMuYXJlYXMuZmlsdGVyKGEgPT4gYS5vcmRlclVzZXIgIT09IG51bGwgJiYgIWlzTmFOKGEub3JkZXJVc2VyKSkubGVuZ3RoO1xuICAgIGlmIChuYkNvcnJlY3RPcmRlciA9PT0gdGhpcy5hcmVhcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYXJlYXMuc29ydCgoYSwgYikgPT4gK2Eub3JkZXJVc2VyIC0gK2Iub3JkZXJVc2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLmFyZWFzLmZvckVhY2goKGEsIGkpID0+IHtcbiAgICAgIGEub3JkZXIgPSBpICogMjtcbiAgICAgIGEuY29tcG9uZW50LnNldFN0eWxlKCdvcmRlcicsIGEub3JkZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gU0laRVM6IFNldCBjc3MgJ2ZsZXgtYmFzaXMnIHByb3BlcnR5IGRlcGVuZGluZyBvbiB1c2VyIGlucHV0IG9yIGVxdWFsIHNpemVzXG4gICAgY29uc3QgbmJDb3JyZWN0U2l6ZSA9IHMgPT4gcyAhPT0gbnVsbCAmJiAhaXNOYU4ocykgJiYgcyA+PSB0aGlzLm1pblBlcmNlbnQgPyBOdW1iZXIocykgOiBOdW1iZXIoKDEwMCAvIHZpc2libGVBcmVhcy5sZW5ndGgpLnRvRml4ZWQoMykpO1xuICAgIGNvbnN0IHRvdGFsU2l6ZSA9IHZpc2libGVBcmVhcy5tYXAoYSA9PiBhLnNpemVVc2VyKS5yZWR1Y2UoKGFjYywgcykgPT4gYWNjICsgbmJDb3JyZWN0U2l6ZShzKSwgMCk7XG5cbiAgICB2aXNpYmxlQXJlYXMuZm9yRWFjaChhID0+IGEuc2l6ZSA9IG5iQ29ycmVjdFNpemUoYS5zaXplVXNlcikpO1xuXG4gICAgaWYgKE1hdGgucm91bmQodG90YWxTaXplKSAhPT0gMTAwICYmIHZpc2libGVBcmVhcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxhc3QgPSB2aXNpYmxlQXJlYXNbdmlzaWJsZUFyZWFzLmxlbmd0aCAtIDFdO1xuICAgICAgbGFzdC5zaXplID0gbGFzdC5zaXplIC0gdG90YWxTaXplICsgMTAwO1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFN0eWxlU2l6ZXMoKTtcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoU3R5bGVTaXplcygpIHtcbiAgICAvL3RoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgIGNvbnN0IHZpc2libGVBcmVhcyA9IHRoaXMudmlzaWJsZUFyZWFzO1xuXG4gICAgY29uc3QgZiA9IHRoaXMuZ3V0dGVyU2l6ZSAqIHRoaXMubmJHdXR0ZXJzIC8gdmlzaWJsZUFyZWFzLmxlbmd0aDtcbiAgICB2aXNpYmxlQXJlYXMuZm9yRWFjaChhID0+IGEuY29tcG9uZW50LnNldFN0eWxlKCdmbGV4LWJhc2lzJywgYGNhbGMoICR7YS5zaXplfSUgLSAke2Z9cHggKWApKTtcbiAgICAvL30pO1xuICAgIC8vfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnREcmFnZ2luZyhzdGFydEV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgZ3V0dGVyT3JkZXI6IG51bWJlcikge1xuICAgIHN0YXJ0RXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXJlYUEgPSB0aGlzLnZpc2libGVBcmVhcy5maWx0ZXIoYSA9PiBhLm9yZGVyIDwgZ3V0dGVyT3JkZXIpLnBvcCgpO1xuICAgIGNvbnN0IGFyZWFCID0gdGhpcy52aXNpYmxlQXJlYXMuZmlsdGVyKGEgPT4gYS5vcmRlciA+IGd1dHRlck9yZGVyKVswXTtcbiAgICBpZiAoIWFyZWFBIHx8ICFhcmVhQikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3AgPSAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnb2Zmc2V0V2lkdGgnIDogJ29mZnNldEhlaWdodCc7XG4gICAgdGhpcy5jb250YWluZXJTaXplID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRbcHJvcF07XG4gICAgdGhpcy5hcmVhQVNpemUgPSB0aGlzLmNvbnRhaW5lclNpemUgKiBhcmVhQS5zaXplIC8gMTAwO1xuICAgIHRoaXMuYXJlYUJTaXplID0gdGhpcy5jb250YWluZXJTaXplICogYXJlYUIuc2l6ZSAvIDEwMDtcblxuICAgIGxldCBzdGFydDogUG9pbnQ7XG4gICAgaWYgKHN0YXJ0RXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICBzdGFydCA9IHtcbiAgICAgICAgeDogc3RhcnRFdmVudC5zY3JlZW5YLFxuICAgICAgICB5OiBzdGFydEV2ZW50LnNjcmVlbllcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdGFydEV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xuICAgICAgc3RhcnQgPSB7XG4gICAgICAgIHg6IHN0YXJ0RXZlbnQudG91Y2hlc1swXS5zY3JlZW5YLFxuICAgICAgICB5OiBzdGFydEV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKF8gPT4ge1xuICAgICAgdGhpcy5ldmVudHNEcmFnRmN0LnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbW92ZScsIGUgPT4gdGhpcy5kcmFnRXZlbnQoZSwgc3RhcnQsIGFyZWFBLCBhcmVhQikpKTtcbiAgICAgIHRoaXMuZXZlbnRzRHJhZ0ZjdC5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaG1vdmUnLCBlID0+IHRoaXMuZHJhZ0V2ZW50KGUsIHN0YXJ0LCBhcmVhQSwgYXJlYUIpKSk7XG4gICAgICB0aGlzLmV2ZW50c0RyYWdGY3QucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2V1cCcsIGUgPT4gdGhpcy5zdG9wRHJhZ2dpbmcoKSkpO1xuICAgICAgdGhpcy5ldmVudHNEcmFnRmN0LnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNoZW5kJywgZSA9PiB0aGlzLnN0b3BEcmFnZ2luZygpKSk7XG4gICAgICB0aGlzLmV2ZW50c0RyYWdGY3QucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2hjYW5jZWwnLCBlID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICB9KTtcblxuICAgIGFyZWFBLmNvbXBvbmVudC5sb2NrRXZlbnRzKCk7XG4gICAgYXJlYUIuY29tcG9uZW50LmxvY2tFdmVudHMoKTtcblxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgdGhpcy5ub3RpZnkoJ3N0YXJ0Jyk7XG4gIH1cblxuICBwcml2YXRlIGRyYWdFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIHN0YXJ0OiBQb2ludCwgYXJlYUE6IElBcmVhRGF0YSwgYXJlYUI6IElBcmVhRGF0YSkge1xuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVuZDogUG9pbnQ7XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgZW5kID0ge1xuICAgICAgICB4OiBldmVudC5zY3JlZW5YLFxuICAgICAgICB5OiBldmVudC5zY3JlZW5ZXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBUb3VjaEV2ZW50KSB7XG4gICAgICBlbmQgPSB7XG4gICAgICAgIHg6IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWCxcbiAgICAgICAgeTogZXZlbnQudG91Y2hlc1swXS5zY3JlZW5ZXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnKHN0YXJ0LCBlbmQsIGFyZWFBLCBhcmVhQik7XG4gIH1cblxuICBwcml2YXRlIGRyYWcoc3RhcnQ6IFBvaW50LCBlbmQ6IFBvaW50LCBhcmVhQTogSUFyZWFEYXRhLCBhcmVhQjogSUFyZWFEYXRhKSB7XG4gICAgY29uc3Qgb2Zmc2V0UGl4ZWwgPSAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAoc3RhcnQueCAtIGVuZC54KSA6IChzdGFydC55IC0gZW5kLnkpO1xuXG4gICAgY29uc3QgbmV3U2l6ZVBpeGVsQSA9IHRoaXMuYXJlYUFTaXplIC0gb2Zmc2V0UGl4ZWwgKiB0aGlzLmRpcmVjdGlvbkluZGV4O1xuICAgIGNvbnN0IG5ld1NpemVQaXhlbEIgPSB0aGlzLmFyZWFCU2l6ZSArIG9mZnNldFBpeGVsICogdGhpcy5kaXJlY3Rpb25JbmRleDtcblxuICAgIGlmIChuZXdTaXplUGl4ZWxBIDw9IGFyZWFBLm1pblBpeGVsIHx8IG5ld1NpemVQaXhlbEIgPCBhcmVhQi5taW5QaXhlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBuZXdTaXplUGVyY2VudEEgPSBuZXdTaXplUGl4ZWxBIC8gdGhpcy5jb250YWluZXJTaXplICogMTAwO1xuICAgIGxldCBuZXdTaXplUGVyY2VudEIgPSBuZXdTaXplUGl4ZWxCIC8gdGhpcy5jb250YWluZXJTaXplICogMTAwO1xuXG4gICAgaWYgKG5ld1NpemVQZXJjZW50QSA8PSB0aGlzLm1pblBlcmNlbnQpIHtcbiAgICAgIG5ld1NpemVQZXJjZW50QSA9IHRoaXMubWluUGVyY2VudDtcbiAgICAgIG5ld1NpemVQZXJjZW50QiA9IGFyZWFBLnNpemUgKyBhcmVhQi5zaXplIC0gdGhpcy5taW5QZXJjZW50O1xuICAgIH0gZWxzZSBpZiAobmV3U2l6ZVBlcmNlbnRCIDw9IHRoaXMubWluUGVyY2VudCkge1xuICAgICAgbmV3U2l6ZVBlcmNlbnRCID0gdGhpcy5taW5QZXJjZW50O1xuICAgICAgbmV3U2l6ZVBlcmNlbnRBID0gYXJlYUEuc2l6ZSArIGFyZWFCLnNpemUgLSB0aGlzLm1pblBlcmNlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1NpemVQZXJjZW50QSA9IE51bWJlcihuZXdTaXplUGVyY2VudEEudG9GaXhlZCgzKSk7XG4gICAgICBuZXdTaXplUGVyY2VudEIgPSBOdW1iZXIoKGFyZWFBLnNpemUgKyBhcmVhQi5zaXplIC0gbmV3U2l6ZVBlcmNlbnRBKS50b0ZpeGVkKDMpKTtcbiAgICB9XG5cbiAgICBhcmVhQS5zaXplID0gbmV3U2l6ZVBlcmNlbnRBO1xuICAgIGFyZWFCLnNpemUgPSBuZXdTaXplUGVyY2VudEI7XG4gICAgaWYgKHRoaXMuYXJlYXMubGVuZ3RoID09PSB0aGlzLnZpc2libGVBcmVhcy5sZW5ndGgpIHtcbiAgICAgIGFyZWFBLnNpemVVc2VyID0gbmV3U2l6ZVBlcmNlbnRBO1xuICAgICAgYXJlYUIuc2l6ZVVzZXIgPSBuZXdTaXplUGVyY2VudEI7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoU3R5bGVTaXplcygpO1xuICAgIHRoaXMubm90aWZ5KCdwcm9ncmVzcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wRHJhZ2dpbmcoKSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFyZWFzLmZvckVhY2goYSA9PiBhLmNvbXBvbmVudC51bmxvY2tFdmVudHMoKSk7XG5cbiAgICB3aGlsZSAodGhpcy5ldmVudHNEcmFnRmN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZjdCA9IHRoaXMuZXZlbnRzRHJhZ0ZjdC5wb3AoKTtcbiAgICAgIGlmIChmY3QpIHtcbiAgICAgICAgZmN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJTaXplID0gMDtcbiAgICB0aGlzLmFyZWFBU2l6ZSA9IDA7XG4gICAgdGhpcy5hcmVhQlNpemUgPSAwO1xuXG4gICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5ub3RpZnkoJ2VuZCcpO1xuICB9XG5cbiAgbm90aWZ5KHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGE6IEFycmF5PG51bWJlcj4gPSB0aGlzLnZpc2libGVBcmVhcy5tYXAoYSA9PiBhLnNpemUpO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgIHJldHVybiB0aGlzLmRyYWdTdGFydC5lbWl0KGRhdGEpO1xuXG4gICAgICBjYXNlICdwcm9ncmVzcyc6XG4gICAgICAgIHJldHVybiB0aGlzLmRyYWdQcm9ncmVzcy5lbWl0KGRhdGEpO1xuXG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5kcmFnRW5kLmVtaXQoZGF0YSk7XG5cbiAgICAgIGNhc2UgJ3Zpc2libGVUcmFuc2l0aW9uRW5kJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZVRyYW5zaXRpb25FbmRJbnRlcm5hbC5uZXh0KGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2FjaGUoKSB7XG4gICAgaWYgKHRoaXMuY2FjaGVMYXlvdXQpIHtcbiAgICAgIGxldCBsYXlvdXQgPSB0aGlzLmFyZWFzLm1hcCgoYSwgaSkgPT4gKHtpbmRleDogaSwgc2l6ZTogYS5zaXplLCB2aXNpYmxlOiBhLmNvbXBvbmVudC52aXNpYmxlfSkpO1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNhY2hlTGF5b3V0KGBlby5zcGxpdC5sYXlvdXQuJHt0aGlzLmNhY2hlTGF5b3V0fWAsIGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxufVxuIl19
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3BsaXQvc3BsaXQvc3BsaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFBd0IsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzNFLFVBQVUsRUFBRSxTQUFTLEVBQWlCLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUIsTUFBTSxFQUN0RyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBMEIsTUFBTSxjQUFjLENBQUM7QUFFbEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBc0IvRSxNQUFNLE9BQU8sY0FBZSxTQUFRLG9CQUFvQjtJQTJFdEQsWUFBb0IsS0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsUUFBbUIsRUFDbkIsT0FBZSxFQUNmLGFBQTRCLEVBQzVCLFdBQXdCO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBTlUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTlFbkMsY0FBUyxHQUFHLFlBQVksQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25C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QUNwQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OztZQW5ZRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxxckJBQXFDOzthQUV0Qzs7O1lBN0IyRCxpQkFBaUI7WUFDM0UsVUFBVTtZQUFFLFNBQVM7WUFBMEUsTUFBTTtZQU8vRixhQUFhO1lBSGIsV0FBVzs7O3dCQTJCaEIsS0FBSzt5QkFDTCxLQUFLO29CQUNMLEtBQUs7cUJBQ0wsS0FBSzt5QkFDTCxLQUFLOzBCQUNMLEtBQUs7dUJBQ0wsS0FBSztnQ0FDTCxLQUFLO3dCQUVMLE1BQU07MkJBQ04sTUFBTTtzQkFDTixNQUFNO21DQUVOLE1BQU07aUNBRU4sV0FBVyxTQUFDLGdCQUFnQjtzQ0FJNUIsV0FBVyxTQUFDLHNCQUFzQjt1QkFJbEMsV0FBVyxTQUFDLG9CQUFvQjt5QkFLaEMsV0FBVyxTQUFDLGFBQWE7MEJBSXpCLFdBQVcsU0FBQyxjQUFjO3lCQWMxQixXQUFXLFNBQUMsZ0JBQWdCOytCQVc1QixLQUFLOzBCQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rha2VVbnRpbCwgZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lLCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3QsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VXNlclNlcnZpY2UsIEVvVXNlciwgQXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtTcGxpdEFyZWFDb21wb25lbnR9IGZyb20gJy4uL3NwbGl0LWFyZWEvc3BsaXQtYXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xuaW1wb3J0IHtMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9sYXlvdXQvbGF5b3V0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBcmVhRGF0YSB7XG4gIGNvbXBvbmVudDogU3BsaXRBcmVhQ29tcG9uZW50O1xuICBzaXplVXNlcjogbnVtYmVyIHwgbnVsbDtcbiAgc2l6ZTogbnVtYmVyO1xuICBvcmRlclVzZXI6IG51bWJlciB8IG51bGw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIG1pblBpeGVsOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3BsaXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BsaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdENvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIGRpcmVjdGlvbiA9ICdob3Jpem9udGFsJztcbiAgQElucHV0KCkgc3dpdGNoYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgZ3V0dGVyU2l6ZSA9IDEwO1xuICBASW5wdXQoKSBndXR0ZXJDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB2aXNpYmxlVHJhbnNpdGlvbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBkcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PG51bWJlcj4+KGZhbHNlKTtcbiAgQE91dHB1dCgpIGRyYWdQcm9ncmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8bnVtYmVyPj4oZmFsc2UpO1xuICBAT3V0cHV0KCkgZHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8bnVtYmVyPj4oZmFsc2UpO1xuICB2aXNpYmxlVHJhbnNpdGlvbkVuZEludGVybmFsID0gbmV3IFN1YmplY3Q8QXJyYXk8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIHZpc2libGVUcmFuc2l0aW9uRW5kOiBPYnNlcnZhYmxlPEFycmF5PG51bWJlcj4+ID0gdGhpcy52aXNpYmxlVHJhbnNpdGlvbkVuZEludGVybmFsLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwKSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy52ZXJ0aWNhbCcpIGdldCBzdHlsZUZsZXhEaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LWRpcmVjdGlvbicpIGdldCBzdHlsZUZsZXhEaXJlY3Rpb25TdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICdyb3cnIDogJ2NvbHVtbic7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vdHJhbnNpdGlvbicpIGdldCBkcmFnZ2luZygpIHtcbiAgICAvLyBwcmV2ZW50IGFuaW1hdGlvbiBvZiBhcmVhcyB3aGVuIHZpc2libGVUcmFuc2l0aW9uIGlzIGZhbHNlLCBvciByZXNpemluZ1xuICAgIHJldHVybiAhdGhpcy52aXNpYmxlVHJhbnNpdGlvbiB8fCB0aGlzLmlzRHJhZ2dpbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgZ2V0IHN0eWxlV2lkdGgoKSB7XG4gICAgcmV0dXJuICh0aGlzLndpZHRoICYmICFpc05hTih0aGlzLndpZHRoKSAmJiB0aGlzLndpZHRoID4gMCkgPyB0aGlzLndpZHRoICsgJ3B4JyA6ICcxMDAlJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JykgZ2V0IHN0eWxlSGVpZ2h0KCkge1xuICAgIHJldHVybiAodGhpcy5oZWlnaHQgJiYgIWlzTmFOKHRoaXMuaGVpZ2h0KSAmJiB0aGlzLmhlaWdodCA+IDApID8gdGhpcy5oZWlnaHQgKyAncHgnIDogJzEwMCUnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdmlzaWJsZUFyZWFzKCk6IElBcmVhRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5hcmVhcy5maWx0ZXIoYSA9PiBhLmNvbXBvbmVudC52aXNpYmxlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG5iR3V0dGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBcmVhcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHVibGljIGFyZWFzOiBBcnJheTxJQXJlYURhdGE+ID0gW107XG4gIHByaXZhdGUgbWluUGVyY2VudCA9IDU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhZ2dpbmcnKVxuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgY29udGFpbmVyU2l6ZSA9IDA7XG4gIHByaXZhdGUgYXJlYUFTaXplID0gMDtcbiAgcHJpdmF0ZSBhcmVhQlNpemUgPSAwO1xuICBwcml2YXRlIGRpcmVjdGlvbkluZGV4ID0gMTtcbiAgcHJpdmF0ZSBldmVudHNEcmFnRmN0OiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcblxuICBwcml2YXRlIF9jYWNoZUxheW91dDogYW55ID0gZmFsc2U7XG4gIHByaXZhdGUgX2FmdGVyVmlld0luaXQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBhcHBseUNhY2hlTGF5b3V0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzZXQgY2FjaGVMYXlvdXQodmFsOiBhbnkpIHtcbiAgICBpZiAodGhpcy5hcHBseUNhY2hlTGF5b3V0KSB7XG4gICAgICAodmFsICYmIHZhbC5zdWJzY3JpYmUgPyB2YWwgOiBvYnNlcnZhYmxlT2YodmFsKSlcbiAgICAgICAgLnN1YnNjcmliZShjYWNoZUxheW91dCA9PiB7XG4gICAgICAgICAgdGhpcy5fY2FjaGVMYXlvdXQgPSBjYWNoZUxheW91dDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FjaGVMYXlvdXQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVMYXlvdXQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh1c2VyOiBFb1VzZXIpID0+IHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uSW5kZXggPSAodXNlci51aURpcmVjdGlvbiA9PT0gJ3J0bCcpID8gLTEgOiAxO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlRGlyZWN0aW9uKCl7XG4gICAgaWYodGhpcy5zd2l0Y2hhYmxlKXtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCdcbiAgICB9XG4gIH1cblxuICB1cGRhdGVMYXlvdXQoKSB7XG4gICAgaWYgKHRoaXMuX2FmdGVyVmlld0luaXQgJiYgdGhpcy5jYWNoZUxheW91dCkge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmdldExheW91dChgZW8uc3BsaXQubGF5b3V0LiR7dGhpcy5jYWNoZUxheW91dH1gKVxuICAgICAgICAuc3Vic2NyaWJlKGxheW91dCA9PiB7XG4gICAgICAgICAgKGxheW91dCB8fCBbXSkuZm9yRWFjaCgoYXJlYSkgPT4ge1xuICAgICAgICAgICAgaWYgKGFyZWEgJiYgdGhpcy5hcmVhcy5sZW5ndGggPiBhcmVhLmluZGV4KSB7XG4gICAgICAgICAgICAgIHRoaXMuYXJlYXNbYXJlYS5pbmRleF0uc2l6ZSA9IGFyZWEuc2l6ZTtcbiAgICAgICAgICAgICAgdGhpcy5hcmVhc1thcmVhLmluZGV4XS5zaXplVXNlciA9IGFyZWEuc2l6ZTtcbiAgICAgICAgICAgICAgdGhpcy5hcmVhc1thcmVhLmluZGV4XS5jb21wb25lbnQudmlzaWJsZSA9IGFyZWEudmlzaWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UudmlzaWJpbGl0eVVwZGF0ZSgpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFN0eWxlU2l6ZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2FmdGVyVmlld0luaXQgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydndXR0ZXJTaXplJ10gfHwgY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEFyZWEoY29tcG9uZW50OiBTcGxpdEFyZWFDb21wb25lbnQsIG9yZGVyVXNlcjogbnVtYmVyIHwgbnVsbCwgc2l6ZVVzZXI6IG51bWJlciB8IG51bGwsIG1pblBpeGVsOiBudW1iZXIpIHtcbiAgICB0aGlzLmFyZWFzLnB1c2goe1xuICAgICAgY29tcG9uZW50LFxuICAgICAgb3JkZXJVc2VyLFxuICAgICAgb3JkZXI6IC0xLFxuICAgICAgc2l6ZVVzZXIsXG4gICAgICBzaXplOiAtMSxcbiAgICAgIG1pblBpeGVsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcmVhKGNvbXBvbmVudDogU3BsaXRBcmVhQ29tcG9uZW50LCBvcmRlclVzZXI6IG51bWJlciB8IG51bGwsIHNpemVVc2VyOiBudW1iZXIgfCBudWxsLCBtaW5QaXhlbDogbnVtYmVyKSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuYXJlYXMuZmluZChhID0+IGEuY29tcG9uZW50ID09PSBjb21wb25lbnQpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0ub3JkZXJVc2VyID0gb3JkZXJVc2VyO1xuICAgICAgaXRlbS5zaXplVXNlciA9IHNpemVVc2VyO1xuICAgICAgaXRlbS5taW5QaXhlbCA9IG1pblBpeGVsO1xuXG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQXJlYShhcmVhOiBTcGxpdEFyZWFDb21wb25lbnQpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcmVhcy5maW5kKGEgPT4gYS5jb21wb25lbnQgPT09IGFyZWEpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hcmVhcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgdGhpcy5hcmVhcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5hcmVhcy5mb3JFYWNoKChhLCBpKSA9PiBhLm9yZGVyID0gaSAqIDIpO1xuXG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGlkZUFyZWEoYXJlYTogU3BsaXRBcmVhQ29tcG9uZW50KSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuYXJlYXMuZmluZChhID0+IGEuY29tcG9uZW50ID09PSBhcmVhKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHRoaXMudXBkYXRlTGF5b3V0Q2FjaGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvd0FyZWEoYXJlYTogU3BsaXRBcmVhQ29tcG9uZW50KSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuYXJlYXMuZmluZChhID0+IGEuY29tcG9uZW50ID09PSBhcmVhKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHRoaXMudXBkYXRlTGF5b3V0Q2FjaGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNMYXN0VmlzaWJsZUFyZWEoYXJlYTogSUFyZWFEYXRhKSB7XG4gICAgY29uc3QgdmlzaWJsZUFyZWFzID0gdGhpcy52aXNpYmxlQXJlYXM7XG4gICAgcmV0dXJuIHZpc2libGVBcmVhcy5sZW5ndGggPiAwID8gYXJlYSA9PT0gdmlzaWJsZUFyZWFzW3Zpc2libGVBcmVhcy5sZW5ndGggLSAxXSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoKCkge1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG5cbiAgICBjb25zdCB2aXNpYmxlQXJlYXMgPSB0aGlzLnZpc2libGVBcmVhcztcblxuICAgIC8vIE9SREVSUzogU2V0IGNzcyAnb3JkZXInIHByb3BlcnR5IGRlcGVuZGluZyBvbiB1c2VyIGlucHV0IG9yIGFkZGVkIG9yZGVyXG4gICAgY29uc3QgbmJDb3JyZWN0T3JkZXIgPSB0aGlzLmFyZWFzLmZpbHRlcihhID0+IGEub3JkZXJVc2VyICE9PSBudWxsICYmICFpc05hTihhLm9yZGVyVXNlcikpLmxlbmd0aDtcbiAgICBpZiAobmJDb3JyZWN0T3JkZXIgPT09IHRoaXMuYXJlYXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFyZWFzLnNvcnQoKGEsIGIpID0+ICthLm9yZGVyVXNlciAtICtiLm9yZGVyVXNlcik7XG4gICAgfVxuXG4gICAgdGhpcy5hcmVhcy5mb3JFYWNoKChhLCBpKSA9PiB7XG4gICAgICBhLm9yZGVyID0gaSAqIDI7XG4gICAgICBhLmNvbXBvbmVudC5zZXRTdHlsZSgnb3JkZXInLCBhLm9yZGVyKTtcbiAgICB9KTtcblxuICAgIC8vIFNJWkVTOiBTZXQgY3NzICdmbGV4LWJhc2lzJyBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdXNlciBpbnB1dCBvciBlcXVhbCBzaXplc1xuICAgIGNvbnN0IG5iQ29ycmVjdFNpemUgPSBzID0+IHMgIT09IG51bGwgJiYgIWlzTmFOKHMpICYmIHMgPj0gdGhpcy5taW5QZXJjZW50ID8gTnVtYmVyKHMpIDogTnVtYmVyKCgxMDAgLyB2aXNpYmxlQXJlYXMubGVuZ3RoKS50b0ZpeGVkKDMpKTtcbiAgICBjb25zdCB0b3RhbFNpemUgPSB2aXNpYmxlQXJlYXMubWFwKGEgPT4gYS5zaXplVXNlcikucmVkdWNlKChhY2MsIHMpID0+IGFjYyArIG5iQ29ycmVjdFNpemUocyksIDApO1xuXG4gICAgdmlzaWJsZUFyZWFzLmZvckVhY2goYSA9PiBhLnNpemUgPSBuYkNvcnJlY3RTaXplKGEuc2l6ZVVzZXIpKTtcblxuICAgIGlmIChNYXRoLnJvdW5kKHRvdGFsU2l6ZSkgIT09IDEwMCAmJiB2aXNpYmxlQXJlYXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBsYXN0ID0gdmlzaWJsZUFyZWFzW3Zpc2libGVBcmVhcy5sZW5ndGggLSAxXTtcbiAgICAgIGxhc3Quc2l6ZSA9IGxhc3Quc2l6ZSAtIHRvdGFsU2l6ZSArIDEwMDtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hTdHlsZVNpemVzKCk7XG4gICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFN0eWxlU2l6ZXMoKSB7XG4gICAgLy90aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICBjb25zdCB2aXNpYmxlQXJlYXMgPSB0aGlzLnZpc2libGVBcmVhcztcblxuICAgIGNvbnN0IGYgPSB0aGlzLmd1dHRlclNpemUgKiB0aGlzLm5iR3V0dGVycyAvIHZpc2libGVBcmVhcy5sZW5ndGg7XG4gICAgdmlzaWJsZUFyZWFzLmZvckVhY2goYSA9PiBhLmNvbXBvbmVudC5zZXRTdHlsZSgnZmxleC1iYXNpcycsIGBjYWxjKCAke2Euc2l6ZX0lIC0gJHtmfXB4IClgKSk7XG4gICAgLy99KTtcbiAgICAvL30pO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0RHJhZ2dpbmcoc3RhcnRFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGd1dHRlck9yZGVyOiBudW1iZXIpIHtcbiAgICBzdGFydEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZWFBID0gdGhpcy52aXNpYmxlQXJlYXMuZmlsdGVyKGEgPT4gYS5vcmRlciA8IGd1dHRlck9yZGVyKS5wb3AoKTtcbiAgICBjb25zdCBhcmVhQiA9IHRoaXMudmlzaWJsZUFyZWFzLmZpbHRlcihhID0+IGEub3JkZXIgPiBndXR0ZXJPcmRlcilbMF07XG4gICAgaWYgKCFhcmVhQSB8fCAhYXJlYUIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wID0gKHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ29mZnNldFdpZHRoJyA6ICdvZmZzZXRIZWlnaHQnO1xuICAgIHRoaXMuY29udGFpbmVyU2l6ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50W3Byb3BdO1xuICAgIHRoaXMuYXJlYUFTaXplID0gdGhpcy5jb250YWluZXJTaXplICogYXJlYUEuc2l6ZSAvIDEwMDtcbiAgICB0aGlzLmFyZWFCU2l6ZSA9IHRoaXMuY29udGFpbmVyU2l6ZSAqIGFyZWFCLnNpemUgLyAxMDA7XG5cbiAgICBsZXQgc3RhcnQ6IFBvaW50O1xuICAgIGlmIChzdGFydEV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgc3RhcnQgPSB7XG4gICAgICAgIHg6IHN0YXJ0RXZlbnQuc2NyZWVuWCxcbiAgICAgICAgeTogc3RhcnRFdmVudC5zY3JlZW5ZXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3RhcnRFdmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgIHN0YXJ0ID0ge1xuICAgICAgICB4OiBzdGFydEV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWCxcbiAgICAgICAgeTogc3RhcnRFdmVudC50b3VjaGVzWzBdLnNjcmVlbllcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihfID0+IHtcbiAgICAgIHRoaXMuZXZlbnRzRHJhZ0ZjdC5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCBlID0+IHRoaXMuZHJhZ0V2ZW50KGUsIHN0YXJ0LCBhcmVhQSwgYXJlYUIpKSk7XG4gICAgICB0aGlzLmV2ZW50c0RyYWdGY3QucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAndG91Y2htb3ZlJywgZSA9PiB0aGlzLmRyYWdFdmVudChlLCBzdGFydCwgYXJlYUEsIGFyZWFCKSkpO1xuICAgICAgdGhpcy5ldmVudHNEcmFnRmN0LnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCBlID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICAgIHRoaXMuZXZlbnRzRHJhZ0ZjdC5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaGVuZCcsIGUgPT4gdGhpcy5zdG9wRHJhZ2dpbmcoKSkpO1xuICAgICAgdGhpcy5ldmVudHNEcmFnRmN0LnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3RvdWNoY2FuY2VsJywgZSA9PiB0aGlzLnN0b3BEcmFnZ2luZygpKSk7XG4gICAgfSk7XG5cbiAgICBhcmVhQS5jb21wb25lbnQubG9ja0V2ZW50cygpO1xuICAgIGFyZWFCLmNvbXBvbmVudC5sb2NrRXZlbnRzKCk7XG5cbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMubm90aWZ5KCdzdGFydCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmFnRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBzdGFydDogUG9pbnQsIGFyZWFBOiBJQXJlYURhdGEsIGFyZWFCOiBJQXJlYURhdGEpIHtcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbmQ6IFBvaW50O1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgIGVuZCA9IHtcbiAgICAgICAgeDogZXZlbnQuc2NyZWVuWCxcbiAgICAgICAgeTogZXZlbnQuc2NyZWVuWVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xuICAgICAgZW5kID0ge1xuICAgICAgICB4OiBldmVudC50b3VjaGVzWzBdLnNjcmVlblgsXG4gICAgICAgIHk6IGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZyhzdGFydCwgZW5kLCBhcmVhQSwgYXJlYUIpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmFnKHN0YXJ0OiBQb2ludCwgZW5kOiBQb2ludCwgYXJlYUE6IElBcmVhRGF0YSwgYXJlYUI6IElBcmVhRGF0YSkge1xuICAgIGNvbnN0IG9mZnNldFBpeGVsID0gKHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gKHN0YXJ0LnggLSBlbmQueCkgOiAoc3RhcnQueSAtIGVuZC55KTtcblxuICAgIGNvbnN0IG5ld1NpemVQaXhlbEEgPSB0aGlzLmFyZWFBU2l6ZSAtIG9mZnNldFBpeGVsICogdGhpcy5kaXJlY3Rpb25JbmRleDtcbiAgICBjb25zdCBuZXdTaXplUGl4ZWxCID0gdGhpcy5hcmVhQlNpemUgKyBvZmZzZXRQaXhlbCAqIHRoaXMuZGlyZWN0aW9uSW5kZXg7XG5cbiAgICBpZiAobmV3U2l6ZVBpeGVsQSA8PSBhcmVhQS5taW5QaXhlbCB8fCBuZXdTaXplUGl4ZWxCIDwgYXJlYUIubWluUGl4ZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbmV3U2l6ZVBlcmNlbnRBID0gbmV3U2l6ZVBpeGVsQSAvIHRoaXMuY29udGFpbmVyU2l6ZSAqIDEwMDtcbiAgICBsZXQgbmV3U2l6ZVBlcmNlbnRCID0gbmV3U2l6ZVBpeGVsQiAvIHRoaXMuY29udGFpbmVyU2l6ZSAqIDEwMDtcblxuICAgIGlmIChuZXdTaXplUGVyY2VudEEgPD0gdGhpcy5taW5QZXJjZW50KSB7XG4gICAgICBuZXdTaXplUGVyY2VudEEgPSB0aGlzLm1pblBlcmNlbnQ7XG4gICAgICBuZXdTaXplUGVyY2VudEIgPSBhcmVhQS5zaXplICsgYXJlYUIuc2l6ZSAtIHRoaXMubWluUGVyY2VudDtcbiAgICB9IGVsc2UgaWYgKG5ld1NpemVQZXJjZW50QiA8PSB0aGlzLm1pblBlcmNlbnQpIHtcbiAgICAgIG5ld1NpemVQZXJjZW50QiA9IHRoaXMubWluUGVyY2VudDtcbiAgICAgIG5ld1NpemVQZXJjZW50QSA9IGFyZWFBLnNpemUgKyBhcmVhQi5zaXplIC0gdGhpcy5taW5QZXJjZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTaXplUGVyY2VudEEgPSBOdW1iZXIobmV3U2l6ZVBlcmNlbnRBLnRvRml4ZWQoMykpO1xuICAgICAgbmV3U2l6ZVBlcmNlbnRCID0gTnVtYmVyKChhcmVhQS5zaXplICsgYXJlYUIuc2l6ZSAtIG5ld1NpemVQZXJjZW50QSkudG9GaXhlZCgzKSk7XG4gICAgfVxuXG4gICAgYXJlYUEuc2l6ZSA9IG5ld1NpemVQZXJjZW50QTtcbiAgICBhcmVhQi5zaXplID0gbmV3U2l6ZVBlcmNlbnRCO1xuICAgIGlmICh0aGlzLmFyZWFzLmxlbmd0aCA9PT0gdGhpcy52aXNpYmxlQXJlYXMubGVuZ3RoKSB7XG4gICAgICBhcmVhQS5zaXplVXNlciA9IG5ld1NpemVQZXJjZW50QTtcbiAgICAgIGFyZWFCLnNpemVVc2VyID0gbmV3U2l6ZVBlcmNlbnRCO1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFN0eWxlU2l6ZXMoKTtcbiAgICB0aGlzLm5vdGlmeSgncHJvZ3Jlc3MnKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcERyYWdnaW5nKCkge1xuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcmVhcy5mb3JFYWNoKGEgPT4gYS5jb21wb25lbnQudW5sb2NrRXZlbnRzKCkpO1xuXG4gICAgd2hpbGUgKHRoaXMuZXZlbnRzRHJhZ0ZjdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmY3QgPSB0aGlzLmV2ZW50c0RyYWdGY3QucG9wKCk7XG4gICAgICBpZiAoZmN0KSB7XG4gICAgICAgIGZjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyU2l6ZSA9IDA7XG4gICAgdGhpcy5hcmVhQVNpemUgPSAwO1xuICAgIHRoaXMuYXJlYUJTaXplID0gMDtcblxuICAgIHRoaXMudXBkYXRlTGF5b3V0Q2FjaGUoKTtcblxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMubm90aWZ5KCdlbmQnKTtcbiAgfVxuXG4gIG5vdGlmeSh0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXRhOiBBcnJheTxudW1iZXI+ID0gdGhpcy52aXNpYmxlQXJlYXMubWFwKGEgPT4gYS5zaXplKTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5kcmFnU3RhcnQuZW1pdChkYXRhKTtcblxuICAgICAgY2FzZSAncHJvZ3Jlc3MnOlxuICAgICAgICByZXR1cm4gdGhpcy5kcmFnUHJvZ3Jlc3MuZW1pdChkYXRhKTtcblxuICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhZ0VuZC5lbWl0KGRhdGEpO1xuXG4gICAgICBjYXNlICd2aXNpYmxlVHJhbnNpdGlvbkVuZCc6XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVUcmFuc2l0aW9uRW5kSW50ZXJuYWwubmV4dChkYXRhKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVMYXlvdXRDYWNoZSgpIHsgICAgXG4gICAgaWYgKHRoaXMuY2FjaGVMYXlvdXQpIHtcbiAgICAgIGxldCBsYXlvdXQgPSB0aGlzLmFyZWFzLm1hcCgoYSwgaSkgPT4gKHtpbmRleDogaSwgc2l6ZTogYS5zaXplLCB2aXNpYmxlOiBhLmNvbXBvbmVudC52aXNpYmxlfSkpO1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNhY2hlTGF5b3V0KGBlby5zcGxpdC5sYXlvdXQuJHt0aGlzLmNhY2hlTGF5b3V0fWAsIGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxufVxuIl19
@@ -20,6 +20,9 @@ export class SplitAreaComponent extends TabPanel {
20
20
  this.visibility = 'block';
21
21
  this.eventsLockFct = [];
22
22
  }
23
+ set height(height) {
24
+ this._height = height;
25
+ }
23
26
  set order(v) {
24
27
  this._order = !isNaN(v) ? v : null;
25
28
  this.split.updateArea(this, this._order, this._size, this._minSizePixel);
@@ -100,10 +103,11 @@ SplitAreaComponent.propDecorators = {
100
103
  _height: [{ type: HostBinding, args: ['style.height.%',] }],
101
104
  minWidth: [{ type: HostBinding, args: ['style.min-width.px',] }],
102
105
  visibleCls: [{ type: HostBinding, args: ['class.visible',] }],
106
+ height: [{ type: Input }],
103
107
  order: [{ type: Input }],
104
108
  size: [{ type: Input }],
105
109
  minSizePixel: [{ type: Input }],
106
110
  visible: [{ type: Input }],
107
111
  onTransitionEnd: [{ type: HostListener, args: ['transitionend', ['$event'],] }]
108
112
  };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9zcGxpdC9zcGxpdC1hcmVhL3NwbGl0LWFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQ3hHLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFXekMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFFBQVE7SUFxRDlDLFlBQ1UsVUFBc0IsRUFDdEIsUUFBbUIsRUFDbkIsS0FBcUIsRUFDN0IsYUFBK0I7UUFDL0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBSmIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBdERDLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDYixZQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ25CLFVBQUssR0FBRyxNQUFNLENBQUM7UUFDakIsWUFBTyxHQUFHLEdBQUcsQ0FBQztRQUNWLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFbEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBTTdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBTTVCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBMEIxQixlQUFVLEdBQUcsT0FBTyxDQUFDO1FBRXJCLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztJQVFwQyxDQUFDO0lB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QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsR0FBRyxFQUFFLENBQUM7YUFDUDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBdEdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7O29CQUlRO2FBRW5COzs7WUFiUSxVQUFVO1lBQUUsU0FBUztZQUV0QixjQUFjO1lBRndELGdCQUFnQjs7O3dCQWdCM0YsV0FBVyxTQUFDLGlCQUFpQjtzQkFDN0IsV0FBVyxTQUFDLGtCQUFrQjtvQkFDOUIsV0FBVyxTQUFDLGtCQUFrQjtzQkFDOUIsV0FBVyxTQUFDLGdCQUFnQjt1QkFDNUIsV0FBVyxTQUFDLG9CQUFvQjt5QkFFaEMsV0FBVyxTQUFDLGVBQWU7b0JBSTNCLEtBQUs7bUJBTUwsS0FBSzsyQkFNTCxLQUFLO3NCQU9MLEtBQUs7OEJBOEJMLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbnB1dCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBPbkluaXQsIE9uRGVzdHJveSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTcGxpdENvbXBvbmVudH0gZnJvbSAnLi4vc3BsaXQvc3BsaXQuY29tcG9uZW50JztcbmltcG9ydCB7VGFiUGFuZWx9IGZyb20gJ3ByaW1lbmcvcHJpbWVuZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXNwbGl0LWFyZWEnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlICYmIChjYWNoZSA/IGxvYWRlZCA6IHZpc2libGUpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+YCxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdEFyZWFDb21wb25lbnQgZXh0ZW5kcyBUYWJQYW5lbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgtZ3JvdycpIF9mbGV4R3JvdyA9IDE7XG4gIEBIb3N0QmluZGluZygnc3R5bGUub3ZlcmZsb3cteCcpIF9oaWRkZW4gPSAnaGlkZGVuJztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdy15JykgX2F1dG8gPSAnYXV0byc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LiUnKSBfaGVpZ2h0ID0gMTAwO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi13aWR0aC5weCcpIG1pbldpZHRoID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZpc2libGUnKSB2aXNpYmxlQ2xzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfb3JkZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzZXQgb3JkZXIodjogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3JkZXIgPSAhaXNOYU4odikgPyB2IDogbnVsbDtcbiAgICB0aGlzLnNwbGl0LnVwZGF0ZUFyZWEodGhpcywgdGhpcy5fb3JkZXIsIHRoaXMuX3NpemUsIHRoaXMuX21pblNpemVQaXhlbCk7XG4gIH1cblxuICBwcml2YXRlIF9zaXplOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc2V0IHNpemUodjogYW55KSB7XG4gICAgdGhpcy5fc2l6ZSA9ICFpc05hTih2KSA/IHYgOiBudWxsO1xuICAgIHRoaXMuc3BsaXQudXBkYXRlQXJlYSh0aGlzLCB0aGlzLl9vcmRlciwgdGhpcy5fc2l6ZSwgdGhpcy5fbWluU2l6ZVBpeGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX21pblNpemVQaXhlbCA9IDA7XG4gIEBJbnB1dCgpIHNldCBtaW5TaXplUGl4ZWwodjogbnVtYmVyKSB7XG5cbiAgICB0aGlzLl9taW5TaXplUGl4ZWwgPSAoIWlzTmFOKHYpICYmIHYgPiAwKSA/IHYgOiAwO1xuICAgIHRoaXMubWluV2lkdGggPSB0aGlzLl9taW5TaXplUGl4ZWw7XG4gICAgdGhpcy5zcGxpdC51cGRhdGVBcmVhKHRoaXMsIHRoaXMuX29yZGVyLCB0aGlzLl9zaXplLCB0aGlzLl9taW5TaXplUGl4ZWwpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHZpc2libGUodjogYm9vbGVhbikge1xuICAgIHRoaXMudmlzaWJpbGl0eSA9IHYgPyAnYmxvY2snIDogJ25vbmUnO1xuICAgIHRoaXMuX3Zpc2libGUgPSB0aGlzLnZpc2libGVDbHMgPSB2O1xuXG4gICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlOyAvLyBsb2FkZWQgYWZ0ZXIgZmlyc3QgdmlzdWFsaXphdGlvblxuICAgICAgdGhpcy5zcGxpdC5zaG93QXJlYSh0aGlzKTtcbiAgICAgIHRoaXMubWluV2lkdGggPSB0aGlzLl9taW5TaXplUGl4ZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWluV2lkdGggPSAwO1xuICAgICAgdGhpcy5zcGxpdC5oaWRlQXJlYSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHZpc2liaWxpdHkgPSAnYmxvY2snO1xuXG4gIGV2ZW50c0xvY2tGY3Q6IEFycmF5PEZ1bmN0aW9uPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzcGxpdDogU3BsaXRDb21wb25lbnQsXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKHZpZXdDb250YWluZXIpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIFsnJGV2ZW50J10pXG4gIG9uVHJhbnNpdGlvbkVuZChldnQ6IFRyYW5zaXRpb25FdmVudCkge1xuICAgIC8vIExpbWl0IG9ubHkgZmxleC1iYXNpcyB0cmFuc2l0aW9uIHRvIHRyaWdnZXIgdGhlIGV2ZW50XG4gICAgaWYgKGV2dC5wcm9wZXJ0eU5hbWUgPT09ICdmbGV4LWJhc2lzJykge1xuICAgICAgdGhpcy5zcGxpdC5ub3RpZnkoJ3Zpc2libGVUcmFuc2l0aW9uRW5kJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3BsaXQuYWRkQXJlYSh0aGlzLCB0aGlzLl9vcmRlciwgdGhpcy5fc2l6ZSwgdGhpcy5fbWluU2l6ZVBpeGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NrRXZlbnRzKCkge1xuICAgIHRoaXMuZXZlbnRzTG9ja0ZjdC5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2VsZWN0c3RhcnQnLCBlID0+IGZhbHNlKSk7XG4gICAgdGhpcy5ldmVudHNMb2NrRmN0LnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnc3RhcnQnLCBlID0+IGZhbHNlKSk7XG4gIH1cblxuICBwdWJsaWMgdW5sb2NrRXZlbnRzKCkge1xuICAgIHdoaWxlICh0aGlzLmV2ZW50c0xvY2tGY3QubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmN0ID0gdGhpcy5ldmVudHNMb2NrRmN0LnBvcCgpO1xuICAgICAgaWYgKGZjdCkge1xuICAgICAgICBmY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0U3R5bGUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNwbGl0LnJlbW92ZUFyZWEodGhpcyk7XG4gIH1cblxuXG59XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtYXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9zcGxpdC9zcGxpdC1hcmVhL3NwbGl0LWFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQ3hHLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFXekMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFFBQVE7SUF3RDlDLFlBQ1UsVUFBc0IsRUFDdEIsUUFBbUIsRUFDbkIsS0FBcUIsRUFDN0IsYUFBK0I7UUFDL0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBSmIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBekRDLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDYixZQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ25CLFVBQUssR0FBRyxNQUFNLENBQUM7UUFDakIsWUFBTyxHQUFHLEdBQUcsQ0FBQztRQUNWLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFbEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBTWhCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBTTdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBTTVCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBeUIxQixlQUFVLEdBQUcsT0FBTyxDQUFDO1FBRXJCLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztJQVFwQyxDQUFDO0lBbkRELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUdELElBQWEsS0FBSyxDQUFDLENBQVM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUdELElBQWEsSUFBSSxDQUFDLENBQU07UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUdELElBQWEsWUFBWSxDQUFDLENBQVM7UUFFakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFhLE9BQU8sQ0FBQyxDQUFVO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLG1DQUFtQztZQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBZUQsZUFBZSxDQUFDLEdBQW9CO1FBQ2xDLHdEQUF3RDtRQUN4RCxJQUFJLEdBQUcsQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsR0FBRyxFQUFFLENBQUM7YUFDUDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBekdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7O29CQUlRO2FBRW5COzs7WUFiUSxVQUFVO1lBQUUsU0FBUztZQUV0QixjQUFjO1lBRndELGdCQUFnQjs7O3dCQWdCM0YsV0FBVyxTQUFDLGlCQUFpQjtzQkFDN0IsV0FBVyxTQUFDLGtCQUFrQjtvQkFDOUIsV0FBVyxTQUFDLGtCQUFrQjtzQkFDOUIsV0FBVyxTQUFDLGdCQUFnQjt1QkFDNUIsV0FBVyxTQUFDLG9CQUFvQjt5QkFFaEMsV0FBVyxTQUFDLGVBQWU7cUJBRzNCLEtBQUs7b0JBS0wsS0FBSzttQkFNTCxLQUFLOzJCQU1MLEtBQUs7c0JBTUwsS0FBSzs4QkE4QkwsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElucHV0LCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NwbGl0Q29tcG9uZW50fSBmcm9tICcuLi9zcGxpdC9zcGxpdC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJQYW5lbH0gZnJvbSAncHJpbWVuZy9wcmltZW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3BsaXQtYXJlYScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50VGVtcGxhdGUgJiYgKGNhY2hlID8gbG9hZGVkIDogdmlzaWJsZSlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5gLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0QXJlYUNvbXBvbmVudCBleHRlbmRzIFRhYlBhbmVsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZmxleC1ncm93JykgX2ZsZXhHcm93ID0gMTtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdy14JykgX2hpZGRlbiA9ICdoaWRkZW4nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm92ZXJmbG93LXknKSBfYXV0byA9ICdhdXRvJztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQuJScpIF9oZWlnaHQgPSAxMDA7XG4gIEBIb3N0QmluZGluZygnc3R5bGUubWluLXdpZHRoLnB4JykgbWluV2lkdGggPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudmlzaWJsZScpIHZpc2libGVDbHMgPSB0cnVlO1xuICBwcml2YXRlIF92aXNpYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzZXQgaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3JkZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzZXQgb3JkZXIodjogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3JkZXIgPSAhaXNOYU4odikgPyB2IDogbnVsbDtcbiAgICB0aGlzLnNwbGl0LnVwZGF0ZUFyZWEodGhpcywgdGhpcy5fb3JkZXIsIHRoaXMuX3NpemUsIHRoaXMuX21pblNpemVQaXhlbCk7XG4gIH1cblxuICBwcml2YXRlIF9zaXplOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc2V0IHNpemUodjogYW55KSB7XG4gICAgdGhpcy5fc2l6ZSA9ICFpc05hTih2KSA/IHYgOiBudWxsO1xuICAgIHRoaXMuc3BsaXQudXBkYXRlQXJlYSh0aGlzLCB0aGlzLl9vcmRlciwgdGhpcy5fc2l6ZSwgdGhpcy5fbWluU2l6ZVBpeGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX21pblNpemVQaXhlbCA9IDA7XG4gIEBJbnB1dCgpIHNldCBtaW5TaXplUGl4ZWwodjogbnVtYmVyKSB7XG5cbiAgICB0aGlzLl9taW5TaXplUGl4ZWwgPSAoIWlzTmFOKHYpICYmIHYgPiAwKSA/IHYgOiAwO1xuICAgIHRoaXMubWluV2lkdGggPSB0aGlzLl9taW5TaXplUGl4ZWw7XG4gICAgdGhpcy5zcGxpdC51cGRhdGVBcmVhKHRoaXMsIHRoaXMuX29yZGVyLCB0aGlzLl9zaXplLCB0aGlzLl9taW5TaXplUGl4ZWwpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2aXNpYmxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnZpc2liaWxpdHkgPSB2ID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICB0aGlzLl92aXNpYmxlID0gdGhpcy52aXNpYmxlQ2xzID0gdjtcblxuICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTsgLy8gbG9hZGVkIGFmdGVyIGZpcnN0IHZpc3VhbGl6YXRpb25cbiAgICAgIHRoaXMuc3BsaXQuc2hvd0FyZWEodGhpcyk7XG4gICAgICB0aGlzLm1pbldpZHRoID0gdGhpcy5fbWluU2l6ZVBpeGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pbldpZHRoID0gMDtcbiAgICAgIHRoaXMuc3BsaXQuaGlkZUFyZWEodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICB2aXNpYmlsaXR5ID0gJ2Jsb2NrJztcblxuICBldmVudHNMb2NrRmN0OiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc3BsaXQ6IFNwbGl0Q29tcG9uZW50LFxuICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcih2aWV3Q29udGFpbmVyKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBbJyRldmVudCddKVxuICBvblRyYW5zaXRpb25FbmQoZXZ0OiBUcmFuc2l0aW9uRXZlbnQpIHtcbiAgICAvLyBMaW1pdCBvbmx5IGZsZXgtYmFzaXMgdHJhbnNpdGlvbiB0byB0cmlnZ2VyIHRoZSBldmVudFxuICAgIGlmIChldnQucHJvcGVydHlOYW1lID09PSAnZmxleC1iYXNpcycpIHtcbiAgICAgIHRoaXMuc3BsaXQubm90aWZ5KCd2aXNpYmxlVHJhbnNpdGlvbkVuZCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNwbGl0LmFkZEFyZWEodGhpcywgdGhpcy5fb3JkZXIsIHRoaXMuX3NpemUsIHRoaXMuX21pblNpemVQaXhlbCk7XG4gIH1cblxuICBwdWJsaWMgbG9ja0V2ZW50cygpIHtcbiAgICB0aGlzLmV2ZW50c0xvY2tGY3QucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3NlbGVjdHN0YXJ0JywgZSA9PiBmYWxzZSkpO1xuICAgIHRoaXMuZXZlbnRzTG9ja0ZjdC5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ3N0YXJ0JywgZSA9PiBmYWxzZSkpO1xuICB9XG5cbiAgcHVibGljIHVubG9ja0V2ZW50cygpIHtcbiAgICB3aGlsZSAodGhpcy5ldmVudHNMb2NrRmN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZjdCA9IHRoaXMuZXZlbnRzTG9ja0ZjdC5wb3AoKTtcbiAgICAgIGlmIChmY3QpIHtcbiAgICAgICAgZmN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFN0eWxlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwga2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zcGxpdC5yZW1vdmVBcmVhKHRoaXMpO1xuICB9XG5cblxufVxuIl19