@worktile/theia 2.1.8 → 2.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  export * from './default';
2
2
  export * from './node-types';
3
- export * from './toolbar';
4
3
  export * from './error';
5
- export * from './toolbar';
6
4
  export * from './code';
5
+ export * from './toolbar';
@@ -53,6 +53,7 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
53
53
  initializeOptions(): void;
54
54
  applyAutoFocus(): void;
55
55
  toolbarCalculate(): void;
56
+ globalToolbarInit(): void;
56
57
  writeValue(value: string | Descendant[]): void;
57
58
  registerOnChange(fn: any): void;
58
59
  registerOnTouched(fn: any): void;
@@ -255,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
255
255
  type: ViewChild,
256
256
  args: ['toolbarContainer', { read: ViewContainerRef, static: true }]
257
257
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBUWhCLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQTRELGVBQWUsRUFBYyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFTbkUsTUFBTSxPQUFPLG1CQUFtQjtJQW9CNUIsWUFDWSxHQUE2QixFQUM3QixVQUFzQixFQUN0QixNQUFjLEVBQ2dCLHFCQUE4RDtRQUg1RixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZ0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QztRQXJCL0YsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSWpDLG1CQUFjLEdB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RUFBRSx3QkFBd0I7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsdUJBQXVCO3FCQUNqQztpQkFDSjs7MEJBeUJRLE1BQU07MkJBQUMsb0JBQW9COzRDQXZCdkIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRW1FLGdCQUFnQjtzQkFBeEYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgTmdab25lLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRvb2xiYXJBbGlnbm1lbnQsIFRvb2xiYXJJdGVtLCBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuLCBUb29sYmFySXRlbVR5cGUsIFRvb2xiYXJLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVGhlVG9vbGJhckdyb3VwVG9rZW4sIFRvb2xiYXJNb3JlR3JvdXAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIE1hcmtUeXBlcywgVG9vbGJhckFjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vZGUtdHlwZXMnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi90b29sYmFyLWl0ZW0vdG9vbGJhci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZTcGxpdExpbmVDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtc3BsaXQtbGluZS9uYXYtc3BsaXQtbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IFRoZVRvb2xiYXJHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItZ3JvdXAvdG9vbGJhci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtdG9vbGJhci1jb250YWluZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBUb29sYmFyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBpc01vcmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PigpO1xuICAgIG1vcmVHcm91cE1lbnUgPSBUb29sYmFyTW9yZUdyb3VwO1xuICAgIHJlc2l6ZU9ic2VydmVyO1xuICAgIGVsZW1lbnRXaWR0aCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFRoZVRvb2xiYXJHcm91cFRva2VuKSBwcml2YXRlIHRvb2xiYXJHcm91cENvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUaGVUb29sYmFyR3JvdXBDb21wb25lbnQ+XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VG9vbGJhckNsYXNzKCk7XG4gICAgICAgIHRoaXMucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgdGhpcy5zdGF0dXNDaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTW9yZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IGNoYW5nZXMudG9vbGJhckl0ZW1zO1xuICAgICAgICBpZiAodG9vbGJhckl0ZW1zICYmICF0b29sYmFySXRlbXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VG9vbGJhckNsYXNzKCkge1xuICAgICAgICBpZiAodGhpcy5lZGl0b3IgJiYgISF0aGlzLmNvbnRhaW5lckNsYXNzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi50aGlzLmNvbnRhaW5lckNsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzaXplRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWRpdGFibGVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSBlbnRyeS5jb250ZW50UmVjdDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01vcmUgJiYgdGhpcy5lbGVtZW50V2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFdpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWRpdGFibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdHVzQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IFsuLi50aGlzLnRvb2xiYXJJdGVtcywgdGhpcy5tb3JlR3JvdXBNZW51XTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRvb2xiYXJJdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRzLmdldChpdGVtLmtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUNvbXBvbmVudC5pbnN0YW5jZS5zdGF0dXNDaGFuZ2UoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyVG9vbGJhclZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5jbGVhcigpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFySXRlbXNDb21wb3NlKCk7XG4gICAgICAgIGNvbnN0IHsgaXRlbXMsIGdyb3VwIH0gPSB0b29sYmFySXRlbXM7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVG9vbGJhclNwbGl0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2xiYXJJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jcmVhdGVNb3JlR3JvdXAoZ3JvdXApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxjdWxhdGlvbiBkaXNwbGF5IHRvb2xiYXIgYW5kIG1vcmUgZ3JvdXBlZCB0b29sYmFyc1xuICAgICAqXG4gICAgICpcdOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCBHb29sYmFyVG9vbGJhclZpZXcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAgICpcdHwg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICNjaGlsZHJlbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgfFxuICAgICAqXHR8IHwgICDilIzilIDilIDilIDilIDilIDilIDilIAgI2l0ZW1zVmlldyDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKUjOKUgOKUgCAjZ3JvdXBlZEl0ZW1zRHJvcGRvd24g4pSA4pSA4pSA4pSQICAgfCB8XG4gICAgICpcdHwgfCAgIHwgICAgICAgI3VuZ3JvdXBlZEl0ZW1zICAgICB8IHwgVG9vbGJhclNlcGFyYXRvclZpZXcgfCB8ICAgICAgICAjZ3JvdXBlZEl0ZW1zICAgICAgIHwgICB8IHxcbiAgICAgKlx0fCB8ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSALeKUmCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgfCB8XG4gICAgICpcdHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXC0tLS0tLS0tLS0gb25seSB3aGVuIHRvb2xiYXIgaXRlbXMgb3ZlcmZsb3cgLS0tLS0tLS0vICAgfCB8XG4gICAgICpcdHwg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIHxcbiAgICAgKlx04pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAgICogc3BsaXQgd2lkdGg6IDZweFxuICAgICAqIGl0ZW0gd2lkdGg6IGRlZmF1bHQgaXRlbTogMzVweDsgZHJvcGRvd24gaXRlbTogNTBweFxuICAgICAqIHNldCBhc2lkZSA1MHB4XG4gICAgICovXG4gICAgcHJpdmF0ZSB0b29sYmFySXRlbXNDb21wb3NlKCk6IFRvb2xiYXJJdGVtc0NvbXBvc2VSZXR1cm4ge1xuICAgICAgICBsZXQgZWxlbWVudFdpZHRoID0gdGhpcy5pc01vcmUgPyB0aGlzLmVsZW1lbnRXaWR0aCA6IG51bGw7XG4gICAgICAgIGNvbnN0IG1heEl0ZW1XaWR0aCA9IDUwO1xuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbVdpZHRoID0gMzU7XG4gICAgICAgIGNvbnN0IHNwbGl0V2lkdGggPSA2O1xuICAgICAgICAvLyBzcGVjaWFsIHR5cGVcbiAgICAgICAgY29uc3QgaGVhZGluZ1dpZHRoID0gNzA7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwOiBUb29sYmFySXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb3JlKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbm90IGVub3VnaCBmcmVlIHNwYWNlXG4gICAgICAgICAgICBjb25zdCBhbGxvd1JlbmRlciA9IGVsZW1lbnRXaWR0aCAmJiBlbGVtZW50V2lkdGggPiBtYXhJdGVtV2lkdGg7XG4gICAgICAgICAgICBpZiAoYWxsb3dSZW5kZXIgJiYgaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudFdpZHRoIC09IHNwbGl0V2lkdGg7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbGxvd1JlbmRlcikge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0gRWxlbWVudEtpbmRzLmhlYWRpbmdMaXN0KSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudFdpZHRoIC09IGhlYWRpbmdXaWR0aDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzQ3VzdG9tQ29tcG9uZW50ID0gaXRlbT8udHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLnRvb2xEcm9wZG93biB8fCAhIWl0ZW0/Lmljb25Db21wb25lbnQ7XG4gICAgICAgICAgICBlbGVtZW50V2lkdGggLT0gaXNDdXN0b21Db21wb25lbnQgPyBtYXhJdGVtV2lkdGggOiBkZWZhdWx0SXRlbVdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnB1cmVUb29sYmFySXRlbXMoaXRlbXMpLFxuICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBleHRlcm5hbGx5IGRlc2lnbmF0ZWQgbW9yZSBncm91cFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbGJhckl0ZW1zQW5kTW9yZUNvbXBvc2UoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnB1cmVUb29sYmFySXRlbXMoaXRlbXMpLFxuICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaWx0ZXIgYWRqYWNlbnQgcmVwZWF0ZWQgZGl2aWRlcnNcbiAgICAgKiBAcGFyYW0ge1Rvb2xiYXJJdGVtW119IGl0ZW1zXG4gICAgICogQHJldHVybnNcbiAgICAgKiBAbWVtYmVyb2YgVGhlVG9vbGJhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1cmVUb29sYmFySXRlbXMoaXRlbXM6IFRvb2xiYXJJdGVtW10pIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGEsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID4gMCAmJiBpdGVtc1tpIC0gMV0ua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhLmtleSAhPT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRvb2xiYXJJdGVtKGl0ZW06IFRvb2xiYXJJdGVtKSB7XG4gICAgICAgIGNvbnN0IHsgaWNvbkNvbXBvbmVudCwgdHlwZSwgZHJvcGRvd25Nb2RlLCBkcm9wZG93bkl0ZW1LZXksIGluY2x1ZGVzLCAuLi5hcmdzIH0gPSBpdGVtO1xuICAgICAgICBjb25zdCB2aWV3Q29tcG9uZW50ID0gdGhpcy52aWV3Q29tcG9uZW50VHlwZSh0eXBlKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25JdGVtID0gdGhpcy5nZXREcm9wZG93bkl0ZW0oaXRlbSk7XG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShpY29uQ29tcG9uZW50ID8gaWNvbkNvbXBvbmVudCA6IHZpZXdDb21wb25lbnQpO1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcblxuICAgICAgICBjb21wUmVmLmluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnRvb2xiYXJJdGVtID0gaXRlbTtcbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5tZW51cyA9IGluY2x1ZGVzO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLml0ZW0gPSBpbmNsdWRlcyAmJiBkcm9wZG93bkl0ZW0gPyBkcm9wZG93bkl0ZW0gOiBhcmdzO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLm1vZGUgPSBkcm9wZG93bk1vZGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQoaXRlbS5rZXksIGNvbXBSZWYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhclNwbGl0KCkge1xuICAgICAgICBjb25zdCBuYXZTcGxpdExpbmVGYWN0b3J5ID0gdGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTmF2U3BsaXRMaW5lQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChuYXZTcGxpdExpbmVGYWN0b3J5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1vcmVHcm91cChncm91cDogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbW9yZUdyb3VwRmFjdG9yeSA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMudG9vbGJhckdyb3VwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KG1vcmVHcm91cEZhY3RvcnkpO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UubWVudXMgPSBncm91cDtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaXRlbSA9IHRoaXMubW9yZUdyb3VwTWVudTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQodGhpcy5tb3JlR3JvdXBNZW51LmtleSwgY29tcFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdDb21wb25lbnRUeXBlKHR5cGU6IFRvb2xiYXJJdGVtVHlwZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLnRvb2xEcm9wZG93bikge1xuICAgICAgICAgICAgcmV0dXJuIFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVGhlVG9vbGJhckl0ZW1Db21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcm9wZG93bkl0ZW0oaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgbGV0IGRyb3Bkb3duS2V5OiBUb29sYmFyS2V5IHwgc3RyaW5nID0gaXRlbT8uZHJvcGRvd25JdGVtS2V5O1xuICAgICAgICAvLyBtb2RpZnkgdGhlIGZvbnRzaXplIG9wdGlvbiBleHRlcm5hbGx5XG4gICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gdGhpcy5lZGl0b3I/LmluamVjdG9yPy5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb25zdCBmb250U2l6ZSA9IGNvbnRleHRTZXJ2aWNlPy5nZXREZWZhdWx0Rm9udFNpemUoKTtcbiAgICAgICAgaWYgKGNvbnRleHRTZXJ2aWNlICYmIGl0ZW0ua2V5ID09PSBNYXJrVHlwZXMuZm9udFNpemUgJiYgZm9udFNpemUpIHtcbiAgICAgICAgICAgIGRyb3Bkb3duS2V5ID0gZm9udFNpemU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW0/LmluY2x1ZGVzPy5maW5kKChpdGVtOiBUb29sYmFySXRlbSkgPT4gaXRlbS5rZXkgPT09IGRyb3Bkb3duS2V5KTtcbiAgICB9XG59XG4iLCI8dGh5LWljb24tbmF2IFtzdHlsZS5qdXN0aWZ5Q29udGVudF09XCJhbGlnblwiPlxuICAgIDxuZy1jb250YWluZXIgI3Rvb2xiYXJDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImFmdGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhZnRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbjwvdGh5LWljb24tbmF2PlxuIl19
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBUWhCLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQTRELGVBQWUsRUFBYyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQWEsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFTbkUsTUFBTSxPQUFPLG1CQUFtQjtJQW9CNUIsWUFDWSxHQUE2QixFQUM3QixVQUFzQixFQUN0QixNQUFjLEVBQ2dCLHFCQUE4RDtRQUg1RixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZ0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QztRQXJCL0YsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSWpDLG1CQUFjLEdB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RUFBRSx3QkFBd0I7b0JBQ3JDLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsdUJBQXVCO3FCQUNqQztpQkFDSjs7MEJBeUJRLE1BQU07MkJBQUMsb0JBQW9COzRDQXZCdkIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRW1FLGdCQUFnQjtzQkFBeEYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgTmdab25lLFxuICAgIEluamVjdCxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRvb2xiYXJBbGlnbm1lbnQsIFRvb2xiYXJJdGVtLCBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuLCBUb29sYmFySXRlbVR5cGUsIFRvb2xiYXJLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVGhlVG9vbGJhckdyb3VwVG9rZW4sIFRvb2xiYXJNb3JlR3JvdXAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIEZvbnRTaXplcywgTWFya1R5cGVzLCBUb29sYmFyQWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFySXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXItaXRlbS90b29sYmFyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdlNwbGl0TGluZUNvbXBvbmVudCB9IGZyb20gJy4uL25hdi1zcGxpdC1saW5lL25hdi1zcGxpdC1saW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgVGhlVG9vbGJhckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS10b29sYmFyLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgYWxpZ246IFRvb2xiYXJBbGlnbm1lbnQ7XG5cbiAgICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGlzTW9yZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBhZnRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhckNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHRvb2xiYXJDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBjb21wb25lbnRzOiBNYXA8c3RyaW5nLCBDb21wb25lbnRSZWY8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+KCk7XG4gICAgbW9yZUdyb3VwTWVudSA9IFRvb2xiYXJNb3JlR3JvdXA7XG4gICAgcmVzaXplT2JzZXJ2ZXI7XG4gICAgZWxlbWVudFdpZHRoID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoVGhlVG9vbGJhckdyb3VwVG9rZW4pIHByaXZhdGUgdG9vbGJhckdyb3VwQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPFRoZVRvb2xiYXJHcm91cENvbXBvbmVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICB0aGlzLnN0YXR1c0NoYW5nZSh0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNb3JlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gY2hhbmdlcy50b29sYmFySXRlbXM7XG4gICAgICAgIGlmICh0b29sYmFySXRlbXMgJiYgIXRvb2xiYXJJdGVtcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUb29sYmFyQ2xhc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiAhIXRoaXMuY29udGFpbmVyQ2xhc3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLnRoaXMuY29udGFpbmVyQ2xhc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNpemVFbGVtZW50KCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGggfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTW9yZSAmJiB0aGlzLmVsZW1lbnRXaWR0aCAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50V2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlZGl0YWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0dXNDaGFuZ2UoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gWy4uLnRoaXMudG9vbGJhckl0ZW1zLCB0aGlzLm1vcmVHcm91cE1lbnVdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnN0YXR1c0NoYW5nZShlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJUb29sYmFyVmlldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudG9vbGJhckNvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSB0aGlzLnRvb2xiYXJJdGVtc0NvbXBvc2UoKTtcbiAgICAgICAgY29uc3QgeyBpdGVtcywgZ3JvdXAgfSA9IHRvb2xiYXJJdGVtcztcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sYmFyU3BsaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVG9vbGJhckl0ZW0oaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vcmVHcm91cChncm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGN1bGF0aW9uIGRpc3BsYXkgdG9vbGJhciBhbmQgbW9yZSBncm91cGVkIHRvb2xiYXJzXG4gICAgICpcbiAgICAgKlx04pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIEdvb2xiYXJUb29sYmFyVmlldyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICAgKlx0fCDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgI2NoaWxkcmVuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCB8XG4gICAgICpcdHwgfCAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAjaXRlbXNWaWV3IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pSM4pSA4pSAICNncm91cGVkSXRlbXNEcm9wZG93biDilIDilIDilIDilJAgICB8IHxcbiAgICAgKlx0fCB8ICAgfCAgICAgICAjdW5ncm91cGVkSXRlbXMgICAgIHwgfCBUb29sYmFyU2VwYXJhdG9yVmlldyB8IHwgICAgICAgICNncm91cGVkSXRlbXMgICAgICAgfCAgIHwgfFxuICAgICAqXHR8IHwgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAt4pSYIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICB8IHxcbiAgICAgKlx0fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcLS0tLS0tLS0tLSBvbmx5IHdoZW4gdG9vbGJhciBpdGVtcyBvdmVyZmxvdyAtLS0tLS0tLS8gICB8IHxcbiAgICAgKlx0fCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggfFxuICAgICAqXHTilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgICAgKiBzcGxpdCB3aWR0aDogNnB4XG4gICAgICogaXRlbSB3aWR0aDogZGVmYXVsdCBpdGVtOiAzNXB4OyBkcm9wZG93biBpdGVtOiA1MHB4XG4gICAgICogc2V0IGFzaWRlIDUwcHhcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2xiYXJJdGVtc0NvbXBvc2UoKTogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybiB7XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSB0aGlzLmlzTW9yZSA/IHRoaXMuZWxlbWVudFdpZHRoIDogbnVsbDtcbiAgICAgICAgY29uc3QgbWF4SXRlbVdpZHRoID0gNTA7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtV2lkdGggPSAzNTtcbiAgICAgICAgY29uc3Qgc3BsaXRXaWR0aCA9IDY7XG4gICAgICAgIC8vIHNwZWNpYWwgdHlwZVxuICAgICAgICBjb25zdCBoZWFkaW5nV2lkdGggPSA3MDtcbiAgICAgICAgY29uc3QgaXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXA6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy50b29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vcmUpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBub3QgZW5vdWdoIGZyZWUgc3BhY2VcbiAgICAgICAgICAgIGNvbnN0IGFsbG93UmVuZGVyID0gZWxlbWVudFdpZHRoICYmIGVsZW1lbnRXaWR0aCA+IG1heEl0ZW1XaWR0aDtcbiAgICAgICAgICAgIGlmIChhbGxvd1JlbmRlciAmJiBpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50V2lkdGggLT0gc3BsaXRXaWR0aDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsbG93UmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBFbGVtZW50S2luZHMuaGVhZGluZ0xpc3QpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50V2lkdGggLT0gaGVhZGluZ1dpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNDdXN0b21Db21wb25lbnQgPSBpdGVtPy50eXBlID09PSBUb29sYmFySXRlbVR5cGUudG9vbERyb3Bkb3duIHx8ICEhaXRlbT8uaWNvbkNvbXBvbmVudDtcbiAgICAgICAgICAgIGVsZW1lbnRXaWR0aCAtPSBpc0N1c3RvbUNvbXBvbmVudCA/IG1heEl0ZW1XaWR0aCA6IGRlZmF1bHRJdGVtV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHRoaXMucHVyZVRvb2xiYXJJdGVtcyhpdGVtcyksXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4dGVybmFsbHkgZGVzaWduYXRlZCBtb3JlIGdyb3VwXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b29sYmFySXRlbXNBbmRNb3JlQ29tcG9zZSgpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy50b29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHRoaXMucHVyZVRvb2xiYXJJdGVtcyhpdGVtcyksXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlciBhZGphY2VudCByZXBlYXRlZCBkaXZpZGVyc1xuICAgICAqIEBwYXJhbSB7VG9vbGJhckl0ZW1bXX0gaXRlbXNcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIEBtZW1iZXJvZiBUaGVUb29sYmFyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVyZVRvb2xiYXJJdGVtcyhpdGVtczogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoYSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPiAwICYmIGl0ZW1zW2kgLSAxXS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGEua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhckl0ZW0oaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgY29uc3QgeyBpY29uQ29tcG9uZW50LCB0eXBlLCBkcm9wZG93bk1vZGUsIGRyb3Bkb3duSXRlbUtleSwgaW5jbHVkZXMsIC4uLmFyZ3MgfSA9IGl0ZW07XG4gICAgICAgIGNvbnN0IHZpZXdDb21wb25lbnQgPSB0aGlzLnZpZXdDb21wb25lbnRUeXBlKHR5cGUpO1xuICAgICAgICBjb25zdCBkcm9wZG93bkl0ZW0gPSB0aGlzLmdldERyb3Bkb3duSXRlbShpdGVtKTtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGljb25Db21wb25lbnQgPyBpY29uQ29tcG9uZW50IDogdmlld0NvbXBvbmVudCk7XG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuXG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UudG9vbGJhckl0ZW0gPSBpdGVtO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLm1lbnVzID0gaW5jbHVkZXM7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaXRlbSA9IGluY2x1ZGVzICYmIGRyb3Bkb3duSXRlbSA/IGRyb3Bkb3duSXRlbSA6IGFyZ3M7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UubW9kZSA9IGRyb3Bkb3duTW9kZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnNldChpdGVtLmtleSwgY29tcFJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb29sYmFyU3BsaXQoKSB7XG4gICAgICAgIGNvbnN0IG5hdlNwbGl0TGluZUZhY3RvcnkgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOYXZTcGxpdExpbmVDb21wb25lbnQpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KG5hdlNwbGl0TGluZUZhY3RvcnkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTW9yZUdyb3VwKGdyb3VwOiBUb29sYmFySXRlbVtdKSB7XG4gICAgICAgIGlmIChncm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBtb3JlR3JvdXBGYWN0b3J5ID0gdGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy50b29sYmFyR3JvdXBDb21wb25lbnQpO1xuICAgICAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMudG9vbGJhckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQobW9yZUdyb3VwRmFjdG9yeSk7XG4gICAgICAgICAgICBjb21wUmVmLmluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5tZW51cyA9IGdyb3VwO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5pdGVtID0gdGhpcy5tb3JlR3JvdXBNZW51O1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzLnNldCh0aGlzLm1vcmVHcm91cE1lbnUua2V5LCBjb21wUmVmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmlld0NvbXBvbmVudFR5cGUodHlwZTogVG9vbGJhckl0ZW1UeXBlKSB7XG4gICAgICAgIGlmICh0eXBlID09PSBUb29sYmFySXRlbVR5cGUuZGVmYXVsdCkge1xuICAgICAgICAgICAgcmV0dXJuIFRoZVRvb2xiYXJJdGVtQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBUb29sYmFySXRlbVR5cGUudG9vbERyb3Bkb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbUNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERyb3Bkb3duSXRlbShpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBsZXQgZHJvcGRvd25LZXk6IFRvb2xiYXJLZXkgfCBzdHJpbmcgPSBpdGVtPy5kcm9wZG93bkl0ZW1LZXk7XG4gICAgICAgIC8vIG1vZGlmeSB0aGUgZm9udHNpemUgb3B0aW9uIGV4dGVybmFsbHlcbiAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSB0aGlzLmVkaXRvcj8uaW5qZWN0b3I/LmdldChUaGVDb250ZXh0U2VydmljZSk7XG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gY29udGV4dFNlcnZpY2U/LmdldERlZmF1bHRGb250U2l6ZSgpO1xuICAgICAgICBpZiAoY29udGV4dFNlcnZpY2UgJiYgaXRlbS5rZXkgPT09IE1hcmtUeXBlcy5mb250U2l6ZSAmJiBmb250U2l6ZSkge1xuICAgICAgICAgICAgZHJvcGRvd25LZXkgPSBmb250U2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbT8uaW5jbHVkZXM/LmZpbmQoKGl0ZW06IFRvb2xiYXJJdGVtKSA9PiBpdGVtLmtleSA9PT0gZHJvcGRvd25LZXkpO1xuICAgIH1cbn1cbiIsIjx0aHktaWNvbi1uYXYgW3N0eWxlLmp1c3RpZnlDb250ZW50XT1cImFsaWduXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjdG9vbGJhckNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWZ0ZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFmdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuPC90aHktaWNvbi1uYXY+XG4iXX0=
@@ -1,7 +1,6 @@
1
1
  export * from './default';
2
2
  export * from './node-types';
3
- export * from './toolbar';
4
3
  export * from './error';
5
- export * from './toolbar';
6
4
  export * from './code';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0JztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xiYXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2RlJztcbiJdfQ==
5
+ export * from './toolbar';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0JztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xiYXInO1xuIl19
@@ -192,6 +192,9 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
192
192
  });
193
193
  this.toolbarCalculate();
194
194
  setTimeout(() => {
195
+ // You need to wait for the editor rendering to complete
196
+ // before triggering the external toolbar assignment detection
197
+ this.globalToolbarInit();
195
198
  this.theEditorCreated.emit(this.editor);
196
199
  this.applyAutoFocus();
197
200
  });
@@ -220,11 +223,14 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
220
223
  const toolbarOption = this.toolbarService.initialize(toolbarItems, toolbar === null || toolbar === void 0 ? void 0 : toolbar.global, toolbar === null || toolbar === void 0 ? void 0 : toolbar.inline, toolbar === null || toolbar === void 0 ? void 0 : toolbar.quick);
221
224
  this.globalToolbarClass = ['the-global-toolbar', getToolbarClass(this.editor)];
222
225
  this.toolbarEntity = toolbarOption.toolbarEntity;
226
+ }
227
+ globalToolbarInit() {
228
+ var _a, _b;
223
229
  if (this.theGlobalToolbar) {
224
230
  this.theGlobalToolbarInstance.editor = this.editor;
225
- this.theGlobalToolbarInstance.toolbarItems = toolbarOption.toolbarEntity.global;
231
+ this.theGlobalToolbarInstance.toolbarItems = this.toolbarEntity.global;
226
232
  this.theGlobalToolbarInstance.containerClass = this.globalToolbarClass;
227
- this.theGlobalToolbarInstance.align = toolbar === null || toolbar === void 0 ? void 0 : toolbar.align;
233
+ this.theGlobalToolbarInstance.align = (_b = (_a = this === null || this === void 0 ? void 0 : this.theOptions) === null || _a === void 0 ? void 0 : _a.toolbar) === null || _b === void 0 ? void 0 : _b.align;
228
234
  this.theGlobalToolbarInstance.setToolbarClass();
229
235
  this.theGlobalToolbarInstance.renderToolbarView();
230
236
  }
@@ -378,7 +384,7 @@ TheEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
378
384
  useExisting: forwardRef(() => TheEditorComponent),
379
385
  multi: true
380
386
  }
381
- ], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }, { propertyName: "quickInsertInstance", first: true, predicate: ["quickInsert"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar *ngIf=\"!theOptions?.readonly\" [editor]=\"editor\" [toolbarItems]=\"toolbarEntity.inline\"></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n", components: [{ type: i3.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { type: i4.SlateEditableComponent, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { type: i5.TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { type: i6.TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "quickToolbarItems", "isVisible"] }, { type: i7.TheTemplateComponent, selector: "the-template,[theTemplate]" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
387
+ ], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }, { propertyName: "quickInsertInstance", first: true, predicate: ["quickInsert"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToobarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n", components: [{ type: i3.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { type: i4.SlateEditableComponent, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { type: i5.TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { type: i6.TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "quickToolbarItems", "isVisible"] }, { type: i7.TheTemplateComponent, selector: "the-template,[theTemplate]" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
382
388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheEditorComponent, decorators: [{
383
389
  type: Component,
384
390
  args: [{
@@ -426,4 +432,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
426
432
  type: ViewChild,
427
433
  args: ['quickInsert', { static: true }]
428
434
  }] } });
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBSVosdUJBQXVCLEVBRTFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUF1QixLQUFLLEVBQUUsSUFBSSxFQUFtQixNQUFNLE9BQU8sQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQWMsV0FBVyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXNELFdBQVcsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFDOUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtD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d0JBQ2pCLHFCQUFxQjt3QkFDckI7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsNkJBQTZCLEVBQUUsc0JBQXNCO3FCQUN4RDtpQkFDSjtxUEFFWSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUdQLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0MscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLGVBQWU7Z0JBSTFCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBOZ1pvbmUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1peGluVW5zdWJzY3JpYmUsIE1peGluQmFzZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgaXNIb3RrZXkgZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IEVkaXRvciwgVGV4dCwgVHJhbnNmb3JtcywgY3JlYXRlRWRpdG9yLCBFbGVtZW50LCBEZXNjZW5kYW50LCBSYW5nZSwgUGF0aCwgTm9kZUVudHJ5LCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICdzbGF0ZS1oaXN0b3J5JztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIFNsYXRlRXJyb3IsIHdpdGhBbmd1bGFyLCBET01FbGVtZW50LCBTbGF0ZVBsYWNlaG9sZGVyIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVQbHVnaW4sIFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2l0aFRoZUVkaXRvciwgdG9vbGJhckNvbXBvc2UgfSBmcm9tICcuL3BsdWdpbnMvaW5kZXgnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IHNob3J0Y3V0cyB9IGZyb20gJy4vc2hvcnRjdXRzJztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUb29sYmFyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdG9vbGJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IENMSVBCT0FSRF9GT1JNQVRfS0VZLCBERUZBVUxUX1NDUk9MTF9DT05UQUlORVIgfSBmcm9tICcuL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgYXV0b0ZvY3VzIH0gZnJvbSAnLi91dGlscy9hdXRvLWZvY3VzJztcbmltcG9ydCB7IGF1dG9TY3JvbGxWaWV3SGFuZGxlIH0gZnJvbSAnLi91dGlscy9hdXRvLXNjcm9sbC12aWV3JztcbmltcG9ydCB7IF8gfSBmcm9tICcuL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyBkYXRhRGVzZXJpYWxpemUsIGRhdGFTZXJpYWxpemluZyB9IGZyb20gJy4vdXRpbHMvZGF0YS10cmFuc2Zvcm0nO1xuaW1wb3J0IHsgc2V0RWRpdG9yVVVJRCB9IGZyb20gJy4vdXRpbHMvZWRpdG9yLXV1aWQnO1xuaW1wb3J0IHsgaWRDcmVhdG9yIH0gZnJvbSAnLi91dGlscy9pZC1jcmVhdG9yJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0VG9vbGJhckNsYXNzIH0gZnJvbSAnLi91dGlscy9nZXQtdG9vbGJhci1jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWVkaXRvciwgdGhlRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFRoZVRvb2xiYXJTZXJ2aWNlLFxuICAgICAgICBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgVGhlQ29sb3JTZWxlY3RTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZUVkaXRvckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLWVkaXRvcicsXG4gICAgICAgICdbY2xhc3MudGhlLWVkaXRvci1yZWFkb25seV0nOiAndGhlT3B0aW9ucz8ucmVhZG9ubHknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBtaXhpblVuc3Vic2NyaWJlKE1peGluQmFzZSkgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0aGVPcHRpb25zOiBUaGVPcHRpb25zO1xuXG4gICAgQElucHV0KCkgdGhlUGx1Z2luczogVGhlUGx1Z2luW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHRoZUdsb2JhbFRvb2xiYXI/OiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgdGhlRGVjb3JhdGU6IChlZGl0b3I6IFRoZUVkaXRvciwgbm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IFJhbmdlW107XG5cbiAgICBASW5wdXQoKSB0aGVPbkVycm9yPzogKGVycm9yOiBTbGF0ZUVycm9yKSA9PiB2b2lkO1xuXG4gICAgQE91dHB1dCgpIHRoZU9uU2F2ZTogRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4oKTtcblxuICAgIEBPdXRwdXQoKSB0aGVPbkRPTUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBuYXRpdmVFdmVudDogRXZlbnQ7IGRhdGE/OiBEb21FdmVudERhdGFJbmZvIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHRoZUVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxFZGl0b3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVJbnN0YW5jZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGVtcGxhdGVJbnN0YW5jZTogVGhlVGVtcGxhdGVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdnbG9iYWxUb29sYmFyJylcbiAgICBnbG9iYWxUb29sYmFySW5zdGFuY2U6IFRoZVRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdxdWlja0luc2VydCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcXVpY2tJbnNlcnRJbnN0YW5jZTogVGhlUXVpY2tJbnNlcnRDb21wb25lbnQ7XG5cbiAgICBfcGx1Z2luczogVGhlUGx1Z2luW10gPSBbXTtcblxuICAgIHRvb2xiYXJFbnRpdHk6IFRvb2xiYXJFbnRpdHk7XG5cbiAgICBlZGl0b3I6IFRoZUVkaXRvcjtcblxuICAgIGVkaXRvclZhbHVlOiBEZXNjZW5kYW50W107XG5cbiAgICBnbG9iYWxUb29sYmFyQ2xhc3M6IHN0cmluZ1tdO1xuXG4gICAgZGVjb3JhdGU6IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIGdldCB0aGVHbG9iYWxUb29sYmFySW5zdGFuY2UoKTogVGhlVG9vbGJhckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgPyB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgOiB0aGlzLmdsb2JhbFRvb2xiYXJJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgbWF4SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQgPyBgJHt0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodH1weGAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBxdWlja1Rvb2xiYXJJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhckVudGl0eT8ucXVpY2s7XG4gICAgfVxuXG4gICAgYXV0b1Njcm9sbFZpZXcgPSBfLmRlYm91bmNlKGZ1bmN0aW9uIChlZGl0b3I6IEVkaXRvciwgc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF1dG9TY3JvbGxWaWV3SGFuZGxlKGVkaXRvciwgc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9LCA4MCk7XG5cbiAgICBlbGVtZW50VG9IdG1sOiBXZWFrTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0b29sYmFyU2VydmljZTogVGhlVG9vbGJhclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLm9uRXJyb3JIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlcy50aGVPcHRpb25zO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5jdXJyZW50VmFsdWU/LnJlYWRvbmx5ICE9PSBvcHRpb25zLnByZXZpb3VzVmFsdWU/LnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RoZURlY29yYXRlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVkaXRvcj8uc2VsZWN0aW9uICYmIChvcHRpb25zPy5jdXJyZW50VmFsdWU/LnJlYWRvbmx5IHx8IG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8uZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmRlc2VsZWN0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gd2l0aFRoZUVkaXRvcjxUaGVFZGl0b3I+KHRoaXMudGhlUGx1Z2lucywgd2l0aEhpc3Rvcnkod2l0aEFuZ3VsYXIoY3JlYXRlRWRpdG9yKCksIENMSVBCT0FSRF9GT1JNQVRfS0VZKSkpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuICAgICAgICB0aGlzLmVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zID0gdGhpcy50aGVPcHRpb25zPy5leHRyYUVsZW1lbnRPcHRpb25zO1xuICAgICAgICBzZXRFZGl0b3JVVUlEKHRoaXMuZWRpdG9yLCBpZENyZWF0b3IoKSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB0aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ2FsY3VsYXRlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50aGVFZGl0b3JDcmVhdGVkLmVtaXQodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgdGhpcy5hcHBseUF1dG9Gb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplT3B0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRoZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGhlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICByZWFkb25seTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbW9kZTogVGhlRGF0YU1vZGUuaHRtbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucy5tb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnRoZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy50aGVPcHRpb25zLFxuICAgICAgICAgICAgICAgIG1vZGU6IFRoZURhdGFNb2RlLmh0bWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcHBseUF1dG9Gb2N1cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkICYmICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBhdXRvRm9jdXModGhpcy5lZGl0b3IsIHRoaXMudGhlT3B0aW9ucz8uYXV0b0ZvY3VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvb2xiYXJDYWxjdWxhdGUoKSB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXIgPSB0aGlzPy50aGVPcHRpb25zPy50b29sYmFyO1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSB0b29sYmFyQ29tcG9zZSh0b29sYmFyPy50b29sYmFySXRlbXMpO1xuICAgICAgICBjb25zdCB0b29sYmFyT3B0aW9uID0gdGhpcy50b29sYmFyU2VydmljZS5pbml0aWFsaXplKHRvb2xiYXJJdGVtcywgdG9vbGJhcj8uZ2xvYmFsLCB0b29sYmFyPy5pbmxpbmUsIHRvb2xiYXI/LnF1aWNrKTtcbiAgICAgICAgdGhpcy5nbG9iYWxUb29sYmFyQ2xhc3MgPSBbJ3RoZS1nbG9iYWwtdG9vbGJhcicsIGdldFRvb2xiYXJDbGFzcyh0aGlzLmVkaXRvcildO1xuICAgICAgICB0aGlzLnRvb2xiYXJFbnRpdHkgPSB0b29sYmFyT3B0aW9uLnRvb2xiYXJFbnRpdHk7XG5cbiAgICAgICAgaWYgKHRoaXMudGhlR2xvYmFsVG9vbGJhcikge1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS50b29sYmFySXRlbXMgPSB0b29sYmFyT3B0aW9uLnRvb2xiYXJFbnRpdHkuZ2xvYmFsO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuY29udGFpbmVyQ2xhc3MgPSB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmFsaWduID0gdG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFEZXNlcmlhbGl6ZSh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlKHZhbHVlOiBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgaXNFZGl0YWJsZSA9ICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuXG4gICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlPy5zdGF0dXNDaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIC8vIHF1aWNrIGluc2VydCBidXR0b25cbiAgICAgICAgaWYgKGlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnRJbnN0YW5jZT8uY2hlY2tTdGF0dXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGF1dG8gc2Nyb2xsIHZpZXdcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy50aGVPcHRpb25zPy5zY3JvbGxDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0O1xuICAgICAgICBpZiAoaXNFZGl0YWJsZSAmJiAoc2Nyb2xsQ29udGFpbmVyIHx8IG1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1heEhlaWdodCA/IERFRkFVTFRfU0NST0xMX0NPTlRBSU5FUiA6IHNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFZpZXcodGhpcy5lZGl0b3IsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemluZ1ZhbHVlKHZhbHVlOiBEZXNjZW5kYW50W10pOiBzdHJpbmcgfCBEZXNjZW5kYW50W10ge1xuICAgICAgICBpZiAodGhpcy50aGVPcHRpb25zPy5tb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRIdG1sID0gdGhpcy5lbGVtZW50VG9IdG1sLmdldChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEh0bWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50SHRtbCA9IGRhdGFTZXJpYWxpemluZyh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIFtlbGVtZW50XSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBodG1sVmFsdWUgKz0gZWxlbWVudEh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFRvSHRtbC5zZXQoZWxlbWVudCwgZWxlbWVudEh0bWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25FcnJvckhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uRXJyb3IgPSAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aGVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPbkVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlSW5zdGFuY2UucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5lZGl0b3IucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGNvbXBvbmVudCA6IHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZiA9IHRoaXMuZWRpdG9yLnJlbmRlckxlYWYodGV4dCk7XG4gICAgICAgIHJldHVybiBsZWFmID8gbGVhZiA6IG51bGw7XG4gICAgfTtcblxuICAgIHJlbmRlclRleHQgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBNYXJrVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0W01hcmtUeXBlc1trZXldXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUaGVUZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0LnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2VuZXJhdGVEZWNvcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0ZSA9IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlRGVjb3JhdGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKC4uLnRoaXMudGhlRGVjb3JhdGUodGhpcy5lZGl0b3IsIG5vZGVFbnRyeSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25LZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNob3J0Y3V0cyh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudC5rZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hvdGtleSgnbW9kK3MnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPblNhdmUuZW1pdCh0aGlzLmVkaXRvclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBlZGl0YWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RFZGl0YWJsZSA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSByZWN0RWRpdGFibGUueCArIHJlY3RFZGl0YWJsZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCByZWxhdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGNlbnRlclgsIGV2ZW50LnkpO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50OiBET01FbGVtZW50ID0gcmVsYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkodGhpcy5lZGl0b3IsIHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCk7XG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIGJsb2NrQ2FyZEVudHJ5WzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlUGF0aCA9IGJsb2NrQ2FyZEVudHJ5WzFdLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZSh0aGlzLmVkaXRvciwgcm9vdE5vZGVQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKHJvb3ROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZCh0aGlzLmVkaXRvciwgcm9vdE5vZGUsIHsgZGlyZWN0aW9uOiBldmVudC54IDwgY2VudGVyWCA/ICdsZWZ0JyA6ICdyaWdodCcgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVTZWxlY3RBbGwoKSB7XG4gICAgICAgIGxldCBub2RlO1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRFbmRTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IFJhbmdlLmVkZ2VzKHRoaXMuZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBzdGFydCwgZW5kKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQmxvY2tzID0gVGhlUXVlcmllcy5nZXRDb250YWluZXJCbG9ja3ModGhpcy5lZGl0b3IpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lckJsb2Nrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgW25vZGVdID0gVGhlUXVlcmllcy5nZXROb2Rlc0J5VHlwZSh0aGlzLmVkaXRvciwgY29udGFpbmVyQmxvY2tzW2ldKTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RhcnRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBzdGFydC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbmRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBlbmQucGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChpc1N0YXJ0UGFyZW50ICYmIGlzRW5kUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVSYW5nZSA9IEVkaXRvci5yYW5nZSh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghUmFuZ2UuZXF1YWxzKG5vZGVSYW5nZSwgc2VsZWN0aW9uUmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgbm9kZVJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgQW5ndWxhckVkaXRvci5vbkNsaWNrKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oZXZlbnQuY2xpcGJvYXJkRGF0YSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmVmb3JlSW5wdXQgPSAoXG4gICAgICAgIGV2ZW50OiBFdmVudCAmIHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbDtcbiAgICAgICAgfVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogZXZlbnQuaW5wdXRUeXBlLFxuICAgICAgICAgICAgdGV4dDogKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBzdHJpbmdcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZScpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgRGF0YVRyYW5zZmVyKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJsdXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUZvY3VzID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ3V0ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ29weSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvblN0YXJ0ID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25FbmQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdPdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25Ecm9wID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBnZXRUZXh0QW5kSlNPTihkYXRhOiBEYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBkYXRhLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUEJPQVJEX0ZPUk1BVF9LRVl9YCk7XG4gICAgICAgIGxldCBqc29uID0gW107XG4gICAgICAgIGlmIChmcmFnbWVudCkge1xuICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKGZyYWdtZW50KSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGpzb24sXG4gICAgICAgICAgICB0ZXh0XG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHRoZS10b29sYmFyXG4gICAgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoZUdsb2JhbFRvb2xiYXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RoZS10b29sYmFyLWRpc2FibGVkJzogdGhlT3B0aW9ucz8uZGlzYWJsZWRcbiAgICB9XCJcbiAgICAjZ2xvYmFsVG9vbGJhclxuICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuZ2xvYmFsXCJcbiAgICBbY29udGFpbmVyQ2xhc3NdPVwiZ2xvYmFsVG9vbGJhckNsYXNzXCJcbiAgICBbYWxpZ25dPVwidGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ25cIlxuPjwvdGhlLXRvb2xiYXI+XG5cbjxkaXZcbiAgICBjbGFzcz1cInRoZS1lZGl0YWJsZS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RoZS1lZGl0b3ItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZCxcbiAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHRcbiAgICB9XCJcbiAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0IH1cIlxuPlxuICAgIDxzbGF0ZS1lZGl0YWJsZVxuICAgICAgICBjbGFzcz1cInRoZS1lZGl0b3ItdHlwb1wiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZWRpdG9yVmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2RlY29yYXRlXT1cImRlY29yYXRlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyRGVjb3JhdGVdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA/IHRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyRGVjb3JhdGUgOiBudWxsXCJcbiAgICAgICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgICAgIFtyZW5kZXJUZXh0XT1cInJlbmRlclRleHRcIlxuICAgICAgICBbcmVuZGVyTGVhZl09XCJyZW5kZXJMZWFmXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInRoZU9wdGlvbnM/LnJlYWRvbmx5IHx8IHRoZU9wdGlvbnM/LmRpc2FibGVkXCJcbiAgICAgICAgW2tleWRvd25dPVwib25LZXlEb3duXCJcbiAgICAgICAgW2NsaWNrXT1cIm9uQ2xpY2tcIlxuICAgICAgICBbcGFzdGVdPVwib25TbGFQYXN0ZVwiXG4gICAgICAgIFtiZWZvcmVJbnB1dF09XCJvblNsYUJlZm9yZUlucHV0XCJcbiAgICAgICAgW2JsdXJdPVwib25TbGFCbHVyXCJcbiAgICAgICAgW2ZvY3VzXT1cIm9uU2xhRm9jdXNcIlxuICAgICAgICBbY29weV09XCJvblNsYUNvcHlcIlxuICAgICAgICBbY3V0XT1cIm9uU2xhQ3V0XCJcbiAgICAgICAgW2lzU3RyaWN0RGVjb3JhdGVdPVwiZmFsc2VcIlxuICAgICAgICBbY29tcG9zaXRpb25TdGFydF09XCJvblNsYUNvbXBvc2l0aW9uU3RhcnRcIlxuICAgICAgICBbY29tcG9zaXRpb25FbmRdPVwib25TbGFDb21wb3NpdGlvbkVuZFwiXG4gICAgICAgIFtkcmFnU3RhcnRdPVwib25TbGFEcmFnU3RhcnRcIlxuICAgICAgICBbZHJhZ092ZXJdPVwib25TbGFEcmFnT3ZlclwiXG4gICAgICAgIFtkcm9wXT1cIm9uRHJvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIlxuICAgID48L3NsYXRlLWVkaXRhYmxlPlxuICAgIDx0aGUtaW5saW5lLXRvb2xiYXIgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHlcIiBbZWRpdG9yXT1cImVkaXRvclwiIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5pbmxpbmVcIj48L3RoZS1pbmxpbmUtdG9vbGJhcj5cbiAgICA8ZGl2XG4gICAgICAgICNxdWlja0luc2VydFxuICAgICAgICB0aGVRdWlja0luc2VydFxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFtxdWlja1Rvb2xiYXJJdGVtc109XCJxdWlja1Rvb2xiYXJJdGVtc1wiXG4gICAgICAgIFtpc1Zpc2libGVdPVwidGhlT3B0aW9ucz8ucXVpY2tJbnNlcnRWaXNpYmxlXCJcbiAgICA+PC9kaXY+XG4gICAgPHRoZS10ZW1wbGF0ZSAjdGVtcGxhdGVJbnN0YW5jZT48L3RoZS10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBSVosdUJBQXVCLEVBRTFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUF1QixLQUFLLEVBQUUsSUFBSSxFQUFtQixNQUFNLE9BQU8sQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQWMsV0FBVyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXNELFdBQVcsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFDOUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtD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RUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckI7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsNkJBQTZCLEVBQUUsc0JBQXNCO3FCQUN4RDtpQkFDSjtxUEFFWSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUdQLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0MscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLGVBQWU7Z0JBSTFCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBOZ1pvbmUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1peGluVW5zdWJzY3JpYmUsIE1peGluQmFzZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgaXNIb3RrZXkgZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IEVkaXRvciwgVGV4dCwgVHJhbnNmb3JtcywgY3JlYXRlRWRpdG9yLCBFbGVtZW50LCBEZXNjZW5kYW50LCBSYW5nZSwgUGF0aCwgTm9kZUVudHJ5LCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICdzbGF0ZS1oaXN0b3J5JztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIFNsYXRlRXJyb3IsIHdpdGhBbmd1bGFyLCBET01FbGVtZW50LCBTbGF0ZVBsYWNlaG9sZGVyIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVQbHVnaW4sIFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2l0aFRoZUVkaXRvciwgdG9vbGJhckNvbXBvc2UgfSBmcm9tICcuL3BsdWdpbnMvaW5kZXgnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IHNob3J0Y3V0cyB9IGZyb20gJy4vc2hvcnRjdXRzJztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUb29sYmFyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdG9vbGJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IENMSVBCT0FSRF9GT1JNQVRfS0VZLCBERUZBVUxUX1NDUk9MTF9DT05UQUlORVIgfSBmcm9tICcuL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgYXV0b0ZvY3VzIH0gZnJvbSAnLi91dGlscy9hdXRvLWZvY3VzJztcbmltcG9ydCB7IGF1dG9TY3JvbGxWaWV3SGFuZGxlIH0gZnJvbSAnLi91dGlscy9hdXRvLXNjcm9sbC12aWV3JztcbmltcG9ydCB7IF8gfSBmcm9tICcuL3V0aWxzL2xvZGFzaCc7XG5pbXBvcnQgeyBkYXRhRGVzZXJpYWxpemUsIGRhdGFTZXJpYWxpemluZyB9IGZyb20gJy4vdXRpbHMvZGF0YS10cmFuc2Zvcm0nO1xuaW1wb3J0IHsgc2V0RWRpdG9yVVVJRCB9IGZyb20gJy4vdXRpbHMvZWRpdG9yLXV1aWQnO1xuaW1wb3J0IHsgaWRDcmVhdG9yIH0gZnJvbSAnLi91dGlscy9pZC1jcmVhdG9yJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0VG9vbGJhckNsYXNzIH0gZnJvbSAnLi91dGlscy9nZXQtdG9vbGJhci1jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWVkaXRvciwgdGhlRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFRoZVRvb2xiYXJTZXJ2aWNlLFxuICAgICAgICBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgVGhlQ29sb3JTZWxlY3RTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZUVkaXRvckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLWVkaXRvcicsXG4gICAgICAgICdbY2xhc3MudGhlLWVkaXRvci1yZWFkb25seV0nOiAndGhlT3B0aW9ucz8ucmVhZG9ubHknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBtaXhpblVuc3Vic2NyaWJlKE1peGluQmFzZSkgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0aGVPcHRpb25zOiBUaGVPcHRpb25zO1xuXG4gICAgQElucHV0KCkgdGhlUGx1Z2luczogVGhlUGx1Z2luW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHRoZUdsb2JhbFRvb2xiYXI/OiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCkgdGhlRGVjb3JhdGU6IChlZGl0b3I6IFRoZUVkaXRvciwgbm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IFJhbmdlW107XG5cbiAgICBASW5wdXQoKSB0aGVPbkVycm9yPzogKGVycm9yOiBTbGF0ZUVycm9yKSA9PiB2b2lkO1xuXG4gICAgQE91dHB1dCgpIHRoZU9uU2F2ZTogRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERlc2NlbmRhbnRbXT4oKTtcblxuICAgIEBPdXRwdXQoKSB0aGVPbkRPTUV2ZW50OiBFdmVudEVtaXR0ZXI8eyBuYXRpdmVFdmVudDogRXZlbnQ7IGRhdGE/OiBEb21FdmVudERhdGFJbmZvIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHRoZUVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxFZGl0b3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVJbnN0YW5jZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGVtcGxhdGVJbnN0YW5jZTogVGhlVGVtcGxhdGVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdnbG9iYWxUb29sYmFyJylcbiAgICBnbG9iYWxUb29sYmFySW5zdGFuY2U6IFRoZVRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdxdWlja0luc2VydCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcXVpY2tJbnNlcnRJbnN0YW5jZTogVGhlUXVpY2tJbnNlcnRDb21wb25lbnQ7XG5cbiAgICBfcGx1Z2luczogVGhlUGx1Z2luW10gPSBbXTtcblxuICAgIHRvb2xiYXJFbnRpdHk6IFRvb2xiYXJFbnRpdHk7XG5cbiAgICBlZGl0b3I6IFRoZUVkaXRvcjtcblxuICAgIGVkaXRvclZhbHVlOiBEZXNjZW5kYW50W107XG5cbiAgICBnbG9iYWxUb29sYmFyQ2xhc3M6IHN0cmluZ1tdO1xuXG4gICAgZGVjb3JhdGU6IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIGdldCB0aGVHbG9iYWxUb29sYmFySW5zdGFuY2UoKTogVGhlVG9vbGJhckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgPyB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgOiB0aGlzLmdsb2JhbFRvb2xiYXJJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgbWF4SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQgPyBgJHt0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodH1weGAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBxdWlja1Rvb2xiYXJJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhckVudGl0eT8ucXVpY2s7XG4gICAgfVxuXG4gICAgYXV0b1Njcm9sbFZpZXcgPSBfLmRlYm91bmNlKGZ1bmN0aW9uIChlZGl0b3I6IEVkaXRvciwgc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF1dG9TY3JvbGxWaWV3SGFuZGxlKGVkaXRvciwgc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9LCA4MCk7XG5cbiAgICBlbGVtZW50VG9IdG1sOiBXZWFrTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0b29sYmFyU2VydmljZTogVGhlVG9vbGJhclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLm9uRXJyb3JIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlcy50aGVPcHRpb25zO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5jdXJyZW50VmFsdWU/LnJlYWRvbmx5ICE9PSBvcHRpb25zLnByZXZpb3VzVmFsdWU/LnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RoZURlY29yYXRlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVkaXRvcj8uc2VsZWN0aW9uICYmIChvcHRpb25zPy5jdXJyZW50VmFsdWU/LnJlYWRvbmx5IHx8IG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8uZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmRlc2VsZWN0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gd2l0aFRoZUVkaXRvcjxUaGVFZGl0b3I+KHRoaXMudGhlUGx1Z2lucywgd2l0aEhpc3Rvcnkod2l0aEFuZ3VsYXIoY3JlYXRlRWRpdG9yKCksIENMSVBCT0FSRF9GT1JNQVRfS0VZKSkpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuICAgICAgICB0aGlzLmVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zID0gdGhpcy50aGVPcHRpb25zPy5leHRyYUVsZW1lbnRPcHRpb25zO1xuICAgICAgICBzZXRFZGl0b3JVVUlEKHRoaXMuZWRpdG9yLCBpZENyZWF0b3IoKSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB0aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ2FsY3VsYXRlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJJbml0KCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVPcHRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zLm1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgbW9kZTogVGhlRGF0YU1vZGUuaHRtbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy50aGVPcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbGJhckNhbGN1bGF0ZSgpIHtcbiAgICAgICAgY29uc3QgdG9vbGJhciA9IHRoaXM/LnRoZU9wdGlvbnM/LnRvb2xiYXI7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IHRvb2xiYXJDb21wb3NlKHRvb2xiYXI/LnRvb2xiYXJJdGVtcyk7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJPcHRpb24gPSB0aGlzLnRvb2xiYXJTZXJ2aWNlLmluaXRpYWxpemUodG9vbGJhckl0ZW1zLCB0b29sYmFyPy5nbG9iYWwsIHRvb2xiYXI/LmlubGluZSwgdG9vbGJhcj8ucXVpY2spO1xuICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcyA9IFsndGhlLWdsb2JhbC10b29sYmFyJywgZ2V0VG9vbGJhckNsYXNzKHRoaXMuZWRpdG9yKV07XG4gICAgICAgIHRoaXMudG9vbGJhckVudGl0eSA9IHRvb2xiYXJPcHRpb24udG9vbGJhckVudGl0eTtcbiAgICB9XG5cbiAgICBnbG9iYWxUb29sYmFySW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlR2xvYmFsVG9vbGJhcikge1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS50b29sYmFySXRlbXMgPSB0aGlzLnRvb2xiYXJFbnRpdHkuZ2xvYmFsO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuY29udGFpbmVyQ2xhc3MgPSB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmFsaWduID0gdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFEZXNlcmlhbGl6ZSh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlKHZhbHVlOiBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgaXNFZGl0YWJsZSA9ICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuXG4gICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlPy5zdGF0dXNDaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIC8vIHF1aWNrIGluc2VydCBidXR0b25cbiAgICAgICAgaWYgKGlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnRJbnN0YW5jZT8uY2hlY2tTdGF0dXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGF1dG8gc2Nyb2xsIHZpZXdcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy50aGVPcHRpb25zPy5zY3JvbGxDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0O1xuICAgICAgICBpZiAoaXNFZGl0YWJsZSAmJiAoc2Nyb2xsQ29udGFpbmVyIHx8IG1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1heEhlaWdodCA/IERFRkFVTFRfU0NST0xMX0NPTlRBSU5FUiA6IHNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFZpZXcodGhpcy5lZGl0b3IsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemluZ1ZhbHVlKHZhbHVlOiBEZXNjZW5kYW50W10pOiBzdHJpbmcgfCBEZXNjZW5kYW50W10ge1xuICAgICAgICBpZiAodGhpcy50aGVPcHRpb25zPy5tb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRIdG1sID0gdGhpcy5lbGVtZW50VG9IdG1sLmdldChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEh0bWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50SHRtbCA9IGRhdGFTZXJpYWxpemluZyh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIFtlbGVtZW50XSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBodG1sVmFsdWUgKz0gZWxlbWVudEh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFRvSHRtbC5zZXQoZWxlbWVudCwgZWxlbWVudEh0bWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25FcnJvckhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uRXJyb3IgPSAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aGVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPbkVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlSW5zdGFuY2UucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5lZGl0b3IucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGNvbXBvbmVudCA6IHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZiA9IHRoaXMuZWRpdG9yLnJlbmRlckxlYWYodGV4dCk7XG4gICAgICAgIHJldHVybiBsZWFmID8gbGVhZiA6IG51bGw7XG4gICAgfTtcblxuICAgIHJlbmRlclRleHQgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBNYXJrVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0W01hcmtUeXBlc1trZXldXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUaGVUZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0LnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2VuZXJhdGVEZWNvcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0ZSA9IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlRGVjb3JhdGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKC4uLnRoaXMudGhlRGVjb3JhdGUodGhpcy5lZGl0b3IsIG5vZGVFbnRyeSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25LZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNob3J0Y3V0cyh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudC5rZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hvdGtleSgnbW9kK3MnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPblNhdmUuZW1pdCh0aGlzLmVkaXRvclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBlZGl0YWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RFZGl0YWJsZSA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSByZWN0RWRpdGFibGUueCArIHJlY3RFZGl0YWJsZS53aWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCByZWxhdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGNlbnRlclgsIGV2ZW50LnkpO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50OiBET01FbGVtZW50ID0gcmVsYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkodGhpcy5lZGl0b3IsIHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCk7XG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIGJsb2NrQ2FyZEVudHJ5WzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlUGF0aCA9IGJsb2NrQ2FyZEVudHJ5WzFdLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZSh0aGlzLmVkaXRvciwgcm9vdE5vZGVQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKHJvb3ROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZCh0aGlzLmVkaXRvciwgcm9vdE5vZGUsIHsgZGlyZWN0aW9uOiBldmVudC54IDwgY2VudGVyWCA/ICdsZWZ0JyA6ICdyaWdodCcgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVTZWxlY3RBbGwoKSB7XG4gICAgICAgIGxldCBub2RlO1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRFbmRTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IFJhbmdlLmVkZ2VzKHRoaXMuZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBzdGFydCwgZW5kKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQmxvY2tzID0gVGhlUXVlcmllcy5nZXRDb250YWluZXJCbG9ja3ModGhpcy5lZGl0b3IpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lckJsb2Nrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgW25vZGVdID0gVGhlUXVlcmllcy5nZXROb2Rlc0J5VHlwZSh0aGlzLmVkaXRvciwgY29udGFpbmVyQmxvY2tzW2ldKTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RhcnRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBzdGFydC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbmRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBlbmQucGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChpc1N0YXJ0UGFyZW50ICYmIGlzRW5kUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVSYW5nZSA9IEVkaXRvci5yYW5nZSh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghUmFuZ2UuZXF1YWxzKG5vZGVSYW5nZSwgc2VsZWN0aW9uUmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgbm9kZVJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgQW5ndWxhckVkaXRvci5vbkNsaWNrKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oZXZlbnQuY2xpcGJvYXJkRGF0YSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmVmb3JlSW5wdXQgPSAoXG4gICAgICAgIGV2ZW50OiBFdmVudCAmIHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbDtcbiAgICAgICAgfVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogZXZlbnQuaW5wdXRUeXBlLFxuICAgICAgICAgICAgdGV4dDogKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBzdHJpbmdcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZScpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgRGF0YVRyYW5zZmVyKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJsdXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUZvY3VzID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ3V0ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ29weSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvblN0YXJ0ID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25FbmQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdPdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25Ecm9wID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBnZXRUZXh0QW5kSlNPTihkYXRhOiBEYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBkYXRhLmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUEJPQVJEX0ZPUk1BVF9LRVl9YCk7XG4gICAgICAgIGxldCBqc29uID0gW107XG4gICAgICAgIGlmIChmcmFnbWVudCkge1xuICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKGZyYWdtZW50KSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGpzb24sXG4gICAgICAgICAgICB0ZXh0XG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHRoZS10b29sYmFyXG4gICAgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoZUdsb2JhbFRvb2xiYXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RoZS10b29sYmFyLWRpc2FibGVkJzogdGhlT3B0aW9ucz8uZGlzYWJsZWRcbiAgICB9XCJcbiAgICAjZ2xvYmFsVG9vbGJhclxuICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuZ2xvYmFsXCJcbiAgICBbY29udGFpbmVyQ2xhc3NdPVwiZ2xvYmFsVG9vbGJhckNsYXNzXCJcbiAgICBbYWxpZ25dPVwidGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ25cIlxuPjwvdGhlLXRvb2xiYXI+XG5cbjxkaXZcbiAgICBjbGFzcz1cInRoZS1lZGl0YWJsZS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RoZS1lZGl0b3ItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZCxcbiAgICAgICAgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHRcbiAgICB9XCJcbiAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0IH1cIlxuPlxuICAgIDxzbGF0ZS1lZGl0YWJsZVxuICAgICAgICBjbGFzcz1cInRoZS1lZGl0b3ItdHlwb1wiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZWRpdG9yVmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2RlY29yYXRlXT1cImRlY29yYXRlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyRGVjb3JhdGVdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA/IHRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyRGVjb3JhdGUgOiBudWxsXCJcbiAgICAgICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgICAgIFtyZW5kZXJUZXh0XT1cInJlbmRlclRleHRcIlxuICAgICAgICBbcmVuZGVyTGVhZl09XCJyZW5kZXJMZWFmXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInRoZU9wdGlvbnM/LnJlYWRvbmx5IHx8IHRoZU9wdGlvbnM/LmRpc2FibGVkXCJcbiAgICAgICAgW2tleWRvd25dPVwib25LZXlEb3duXCJcbiAgICAgICAgW2NsaWNrXT1cIm9uQ2xpY2tcIlxuICAgICAgICBbcGFzdGVdPVwib25TbGFQYXN0ZVwiXG4gICAgICAgIFtiZWZvcmVJbnB1dF09XCJvblNsYUJlZm9yZUlucHV0XCJcbiAgICAgICAgW2JsdXJdPVwib25TbGFCbHVyXCJcbiAgICAgICAgW2ZvY3VzXT1cIm9uU2xhRm9jdXNcIlxuICAgICAgICBbY29weV09XCJvblNsYUNvcHlcIlxuICAgICAgICBbY3V0XT1cIm9uU2xhQ3V0XCJcbiAgICAgICAgW2lzU3RyaWN0RGVjb3JhdGVdPVwiZmFsc2VcIlxuICAgICAgICBbY29tcG9zaXRpb25TdGFydF09XCJvblNsYUNvbXBvc2l0aW9uU3RhcnRcIlxuICAgICAgICBbY29tcG9zaXRpb25FbmRdPVwib25TbGFDb21wb3NpdGlvbkVuZFwiXG4gICAgICAgIFtkcmFnU3RhcnRdPVwib25TbGFEcmFnU3RhcnRcIlxuICAgICAgICBbZHJhZ092ZXJdPVwib25TbGFEcmFnT3ZlclwiXG4gICAgICAgIFtkcm9wXT1cIm9uRHJvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIlxuICAgID48L3NsYXRlLWVkaXRhYmxlPlxuICAgIDx0aGUtaW5saW5lLXRvb2xiYXJcbiAgICAgICAgKm5nSWY9XCIhdGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgdGhlT3B0aW9ucz8uaW5saW5lVG9vYmFyVmlzaWJsZVwiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5LmlubGluZVwiXG4gICAgPjwvdGhlLWlubGluZS10b29sYmFyPlxuICAgIDxkaXZcbiAgICAgICAgI3F1aWNrSW5zZXJ0XG4gICAgICAgIHRoZVF1aWNrSW5zZXJ0XG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW3F1aWNrVG9vbGJhckl0ZW1zXT1cInF1aWNrVG9vbGJhckl0ZW1zXCJcbiAgICAgICAgW2lzVmlzaWJsZV09XCJ0aGVPcHRpb25zPy5xdWlja0luc2VydFZpc2libGVcIlxuICAgID48L2Rpdj5cbiAgICA8dGhlLXRlbXBsYXRlICN0ZW1wbGF0ZUluc3RhbmNlPjwvdGhlLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -5,4 +5,4 @@ export var TheDataMode;
5
5
  TheDataMode["json"] = "json";
6
6
  TheDataMode["html"] = "html";
7
7
  })(TheDataMode || (TheDataMode = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2ludGVyZmFjZXMvZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBaUIxRSxNQUFNLENBQUMsTUFBTSxTQUFTLHFCQUNmLGFBQWEsQ0FDbkIsQ0FBQztBQU1GLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5jZXN0b3IsIFJhbmdlLCBQYXRoLCBQb2ludCwgTm9kZSwgU3BhbiwgTm9kZUVudHJ5LCBFZGl0b3IsIEVsZW1lbnQsIFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBTbGF0ZVBsYWNlaG9sZGVyLCBWaWV3VHlwZSB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgRWxlbWVudE9wdGlvbnNJbmZvIH0gZnJvbSAnLi92YWxpZC1jaGlsZHJlbi10eXBlcyc7XG5pbXBvcnQgeyBQcmVkaWNhdGUgfSBmcm9tICcuLi91dGlscy9tYXRjaCc7XG5pbXBvcnQgeyBUb29sYmFyT3B0aW9uIH0gZnJvbSAnLi90b29sYmFyJztcbmltcG9ydCB7IEZvbnRTaXplcyB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUaGVFZGl0b3IgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yLCBIaXN0b3J5RWRpdG9yIHtcbiAgICByZW5kZXJFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCkgPT4gVmlld1R5cGU7XG4gICAgcmVuZGVyTGVhZjogKHRleHQ6IFRleHQpID0+IFZpZXdUeXBlO1xuICAgIGluc2VydEVsZW1lbnQ6IChlbGVtZW50OiBFbGVtZW50KSA9PiB2b2lkO1xuICAgIGlzQ29udGFpbmVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBleHRyYUVsZW1lbnRPcHRpb25zOiBFbGVtZW50T3B0aW9uc0luZm9bXTtcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBUaGVFZGl0b3IgPSB7XG4gICAgLi4uQW5ndWxhckVkaXRvclxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUaGVQbHVnaW4ge1xuICAgIChlZGl0b3I6IEVkaXRvcik6IEVkaXRvcjtcbn1cblxuZXhwb3J0IGVudW0gVGhlRGF0YU1vZGUge1xuICAgIGpzb24gPSAnanNvbicsXG4gICAgaHRtbCA9ICdodG1sJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZU9wdGlvbnMge1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICBtb2RlPzogVGhlRGF0YU1vZGU7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXJEZWNvcmF0ZT86IChlZGl0b3I6IEVkaXRvcikgPT4gU2xhdGVQbGFjZWhvbGRlcltdO1xuICAgIHF1aWNrSW5zZXJ0VmlzaWJsZT86IGJvb2xlYW47XG4gICAgc2Nyb2xsQ29udGFpbmVyPzogc3RyaW5nO1xuICAgIG1heEhlaWdodD86IG51bWJlcjtcbiAgICBmb250U2l6ZT86IEZvbnRTaXplcztcbiAgICB0b29sYmFyPzogVG9vbGJhck9wdGlvbjtcbiAgICBkaXNhYmxlUGx1Z2lucz86IHN0cmluZ1tdO1xuICAgIGV4dHJhRWxlbWVudE9wdGlvbnM/OiBFbGVtZW50T3B0aW9uc0luZm9bXTtcbn1cblxuZXhwb3J0IHR5cGUgTm9kZU1hdGNoPFQgPSBOb2RlPiA9IFByZWRpY2F0ZTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaE9wdGlvbnM8VCA9IE5vZGU+IHtcbiAgICBtYXRjaD86IE5vZGVNYXRjaDxUPjtcbiAgICBibG9jaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yQWJvdmVPcHRpb25zPFQgPSBBbmNlc3Rvcj4gZXh0ZW5kcyBNYXRjaE9wdGlvbnM8VD4ge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQ7XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnO1xuICAgIHZvaWRzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JOb2Rlc09wdGlvbnMge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQgfCBTcGFuO1xuICAgIG1hdGNoPzogKG5vZGU6IE5vZGUpID0+IGJvb2xlYW47XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnIHwgJ2FsbCc7XG4gICAgdW5pdmVyc2FsPzogYm9vbGVhbjtcbiAgICByZXZlcnNlPzogYm9vbGVhbjtcbiAgICB2b2lkcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JhcE9wdGlvbnMge1xuICAgIGF0PzogUGF0aCB8IFBvaW50IHwgUmFuZ2U7XG4gICAgbWF0Y2g/OiAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcbiAgICBtb2RlPzogJ2hpZ2hlc3QnIHwgJ2xvd2VzdCcgfCAnYWxsJztcbiAgICBzcGxpdD86IGJvb2xlYW47XG4gICAgdm9pZHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvclBhcmVudE9wdGlvbnMge1xuICAgIGRlcHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGVkZ2U/OiAnc3RhcnQnIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPcHRpb25zIHtcbiAgICAvLyBDb25kaXRpb24gb24gdGhlIG5vZGUgdG8gYmUgdmFsaWQuXG4gICAgZmlsdGVyPzogKGVudHJ5OiBOb2RlRW50cnk8Tm9kZT4pID0+IGJvb2xlYW47XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSB2YWxpZC4gSWYgZW1wdHkgb3IgdW5kZWZpbmVkIC0gYWxsb3cgYWxsLlxuICAgIGFsbG93Pzogc3RyaW5nW107XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSBpbnZhbGlkLlxuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21FdmVudERhdGFJbmZvIHtcbiAgICBpbnB1dFR5cGU/OiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAganNvbj86IE5vZGVbXTtcbn1cbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2ludGVyZmFjZXMvZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBaUIxRSxNQUFNLENBQUMsTUFBTSxTQUFTLHFCQUNmLGFBQWEsQ0FDbkIsQ0FBQztBQU1GLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5jZXN0b3IsIFJhbmdlLCBQYXRoLCBQb2ludCwgTm9kZSwgU3BhbiwgTm9kZUVudHJ5LCBFZGl0b3IsIEVsZW1lbnQsIFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBTbGF0ZVBsYWNlaG9sZGVyLCBWaWV3VHlwZSB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgRWxlbWVudE9wdGlvbnNJbmZvIH0gZnJvbSAnLi92YWxpZC1jaGlsZHJlbi10eXBlcyc7XG5pbXBvcnQgeyBQcmVkaWNhdGUgfSBmcm9tICcuLi91dGlscy9tYXRjaCc7XG5pbXBvcnQgeyBUb29sYmFyT3B0aW9uIH0gZnJvbSAnLi90b29sYmFyJztcbmltcG9ydCB7IEZvbnRTaXplcyB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUaGVFZGl0b3IgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yLCBIaXN0b3J5RWRpdG9yIHtcbiAgICByZW5kZXJFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCkgPT4gVmlld1R5cGU7XG4gICAgcmVuZGVyTGVhZjogKHRleHQ6IFRleHQpID0+IFZpZXdUeXBlO1xuICAgIGluc2VydEVsZW1lbnQ6IChlbGVtZW50OiBFbGVtZW50KSA9PiB2b2lkO1xuICAgIGlzQ29udGFpbmVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBleHRyYUVsZW1lbnRPcHRpb25zOiBFbGVtZW50T3B0aW9uc0luZm9bXTtcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBUaGVFZGl0b3IgPSB7XG4gICAgLi4uQW5ndWxhckVkaXRvclxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUaGVQbHVnaW4ge1xuICAgIChlZGl0b3I6IEVkaXRvcik6IEVkaXRvcjtcbn1cblxuZXhwb3J0IGVudW0gVGhlRGF0YU1vZGUge1xuICAgIGpzb24gPSAnanNvbicsXG4gICAgaHRtbCA9ICdodG1sJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZU9wdGlvbnMge1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICBtb2RlPzogVGhlRGF0YU1vZGU7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGF1dG9Gb2N1cz86IGJvb2xlYW47XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXJEZWNvcmF0ZT86IChlZGl0b3I6IEVkaXRvcikgPT4gU2xhdGVQbGFjZWhvbGRlcltdO1xuICAgIGlubGluZVRvb2JhclZpc2libGU/OiBib29sZWFuO1xuICAgIHF1aWNrSW5zZXJ0VmlzaWJsZT86IGJvb2xlYW47XG4gICAgc2Nyb2xsQ29udGFpbmVyPzogc3RyaW5nO1xuICAgIG1heEhlaWdodD86IG51bWJlcjtcbiAgICBmb250U2l6ZT86IEZvbnRTaXplcztcbiAgICB0b29sYmFyPzogVG9vbGJhck9wdGlvbjtcbiAgICBkaXNhYmxlUGx1Z2lucz86IHN0cmluZ1tdO1xuICAgIGV4dHJhRWxlbWVudE9wdGlvbnM/OiBFbGVtZW50T3B0aW9uc0luZm9bXTtcbn1cblxuZXhwb3J0IHR5cGUgTm9kZU1hdGNoPFQgPSBOb2RlPiA9IFByZWRpY2F0ZTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaE9wdGlvbnM8VCA9IE5vZGU+IHtcbiAgICBtYXRjaD86IE5vZGVNYXRjaDxUPjtcbiAgICBibG9jaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yQWJvdmVPcHRpb25zPFQgPSBBbmNlc3Rvcj4gZXh0ZW5kcyBNYXRjaE9wdGlvbnM8VD4ge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQ7XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnO1xuICAgIHZvaWRzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JOb2Rlc09wdGlvbnMge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQgfCBTcGFuO1xuICAgIG1hdGNoPzogKG5vZGU6IE5vZGUpID0+IGJvb2xlYW47XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnIHwgJ2FsbCc7XG4gICAgdW5pdmVyc2FsPzogYm9vbGVhbjtcbiAgICByZXZlcnNlPzogYm9vbGVhbjtcbiAgICB2b2lkcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JhcE9wdGlvbnMge1xuICAgIGF0PzogUGF0aCB8IFBvaW50IHwgUmFuZ2U7XG4gICAgbWF0Y2g/OiAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcbiAgICBtb2RlPzogJ2hpZ2hlc3QnIHwgJ2xvd2VzdCcgfCAnYWxsJztcbiAgICBzcGxpdD86IGJvb2xlYW47XG4gICAgdm9pZHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvclBhcmVudE9wdGlvbnMge1xuICAgIGRlcHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGVkZ2U/OiAnc3RhcnQnIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPcHRpb25zIHtcbiAgICAvLyBDb25kaXRpb24gb24gdGhlIG5vZGUgdG8gYmUgdmFsaWQuXG4gICAgZmlsdGVyPzogKGVudHJ5OiBOb2RlRW50cnk8Tm9kZT4pID0+IGJvb2xlYW47XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSB2YWxpZC4gSWYgZW1wdHkgb3IgdW5kZWZpbmVkIC0gYWxsb3cgYWxsLlxuICAgIGFsbG93Pzogc3RyaW5nW107XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSBpbnZhbGlkLlxuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21FdmVudERhdGFJbmZvIHtcbiAgICBpbnB1dFR5cGU/OiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAganNvbj86IE5vZGVbXTtcbn1cbiJdfQ==
@@ -29,7 +29,7 @@ export const AlignEditor = {
29
29
  return;
30
30
  }
31
31
  const props = {
32
- align: alignment
32
+ align: alignment !== Alignment.left ? alignment : null
33
33
  };
34
34
  Transforms.setNodes(editor, props, {
35
35
  at: editor.selection,
@@ -37,4 +37,4 @@ export const AlignEditor = {
37
37
  });
38
38
  }
39
39
  };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvYWxpZ24vYWxpZ24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3ZCLFFBQVEsQ0FBQyxNQUFjLEVBQUUsU0FBb0I7UUFDekMsSUFBSSxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsQ0FBQSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksY0FBYyxLQUFLLElBQUksRUFBRTtZQUN6QixPQUFPLGNBQWMsQ0FBQztTQUN6QjtRQUVELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxZQUFZLEVBQUU7WUFDZCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUM7U0FDOUI7UUFDRCxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsUUFBUSxDQUFDLE1BQWMsRUFBRSxTQUFvQjtRQUN6QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3pDLE9BQU87U0FDVjtRQUNELE1BQU0sS0FBSyxHQUFHO1lBQ1YsS0FBSyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztRQUNGLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUMvQixFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUM1RCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcywgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEFMSUdOX0JMT0NLX1RZUEVTLCBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4uL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5cbmV4cG9ydCBjb25zdCBBbGlnbkVkaXRvciA9IHtcbiAgICBpc0FjdGl2ZShlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBBbGlnbm1lbnQpIHtcbiAgICAgICAgaWYgKCFlZGl0b3I/LnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlQ2VsbEFsaWduID0gVGFibGVFZGl0b3IuaXNBbGlnbkFjdGl2ZShlZGl0b3IsIGFsaWdubWVudCk7XG4gICAgICAgIGlmICh0YWJsZUNlbGxBbGlnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbEFsaWduO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvY2tFbGVtZW50ID0gVGhlUXVlcmllcy5hbmNob3JCbG9jayhlZGl0b3IpO1xuICAgICAgICBpZiAoYmxvY2tFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7IGFsaWduIH0gPSBibG9ja0VsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWFsaWduICYmIGFsaWdubWVudCA9PT0gQWxpZ25tZW50LmxlZnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbGlnbiA9PT0gYWxpZ25tZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGlnbm1lbnQgPT09IEFsaWdubWVudC5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBzZXRBbGlnbihlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBBbGlnbm1lbnQpIHtcbiAgICAgICAgaWYgKFRhYmxlRWRpdG9yLnNldEFsaWduKGVkaXRvciwgYWxpZ25tZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgYWxpZ246IGFsaWdubWVudFxuICAgICAgICB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgcHJvcHMsIHtcbiAgICAgICAgICAgIGF0OiBlZGl0b3Iuc2VsZWN0aW9uLFxuICAgICAgICAgICAgbWF0Y2g6IChuOiBFbGVtZW50KSA9PiBBTElHTl9CTE9DS19UWVBFUy5pbmNsdWRlcyhuLnR5cGUpXG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvYWxpZ24vYWxpZ24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3ZCLFFBQVEsQ0FBQyxNQUFjLEVBQUUsU0FBb0I7UUFDekMsSUFBSSxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsQ0FBQSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksY0FBYyxLQUFLLElBQUksRUFBRTtZQUN6QixPQUFPLGNBQWMsQ0FBQztTQUN6QjtRQUVELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxZQUFZLEVBQUU7WUFDZCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUM7U0FDOUI7UUFDRCxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsUUFBUSxDQUFDLE1BQWMsRUFBRSxTQUFvQjtRQUN6QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3pDLE9BQU87U0FDVjtRQUNELE1BQU0sS0FBSyxHQUFHO1lBQ1YsS0FBSyxFQUFFLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDekQsQ0FBQztRQUNGLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUMvQixFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUM1RCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcywgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEFMSUdOX0JMT0NLX1RZUEVTLCBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUVkaXRvciB9IGZyb20gJy4uL3RhYmxlL3RhYmxlLmVkaXRvcic7XG5cbmV4cG9ydCBjb25zdCBBbGlnbkVkaXRvciA9IHtcbiAgICBpc0FjdGl2ZShlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBBbGlnbm1lbnQpIHtcbiAgICAgICAgaWYgKCFlZGl0b3I/LnNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlQ2VsbEFsaWduID0gVGFibGVFZGl0b3IuaXNBbGlnbkFjdGl2ZShlZGl0b3IsIGFsaWdubWVudCk7XG4gICAgICAgIGlmICh0YWJsZUNlbGxBbGlnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbEFsaWduO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvY2tFbGVtZW50ID0gVGhlUXVlcmllcy5hbmNob3JCbG9jayhlZGl0b3IpO1xuICAgICAgICBpZiAoYmxvY2tFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7IGFsaWduIH0gPSBibG9ja0VsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWFsaWduICYmIGFsaWdubWVudCA9PT0gQWxpZ25tZW50LmxlZnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbGlnbiA9PT0gYWxpZ25tZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGlnbm1lbnQgPT09IEFsaWdubWVudC5sZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBzZXRBbGlnbihlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBBbGlnbm1lbnQpIHtcbiAgICAgICAgaWYgKFRhYmxlRWRpdG9yLnNldEFsaWduKGVkaXRvciwgYWxpZ25tZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgYWxpZ246IGFsaWdubWVudCAhPT0gQWxpZ25tZW50LmxlZnQgPyBhbGlnbm1lbnQgOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCBwcm9wcywge1xuICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICBtYXRjaDogKG46IEVsZW1lbnQpID0+IEFMSUdOX0JMT0NLX1RZUEVTLmluY2x1ZGVzKG4udHlwZSlcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==