@libs-ui/components-inputs-quill2x 0.2.356-38 → 0.2.356-40

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.
@@ -15,53 +15,19 @@ export class LibsUiComponentsInputsQuillUploadImageComponent {
15
15
  ]);
16
16
  disable = signal(false);
17
17
  ignoreCommunicateMicroEvent = input();
18
- // private mediaFile =signal<IMediaFile | undefined>(undefined);
19
- // private mediaUploadFunctionControl =signal<IMediaUploadBaseFunctionControlEvent | undefined>(undefined);
20
18
  uploadImageConfig = input.required();
21
19
  outClose = output();
22
- // protected handlerFunctionsControl(event: IMediaUploadBaseFunctionControlEvent) {
23
- // this.mediaUploadFunctionControl.set(event);
24
- // }
25
- // protected handlerChangeFile(event: IChangeFile) {
26
- // this.mediaFile.set(event.files[0]);
27
- // }
28
- async handlerSaveImage() {
29
- // if (!await this.mediaUploadFunctionControl()?.checkIsValid()) {
30
- // return;
31
- // }
32
- // if (this.mediaFile?.origin_url) {
33
- // this.moClose.emit(this.mediaFile.origin_url);
34
- // return;
35
- // }
36
- // const body: IOptionsUploadMedia = {
37
- // do_not_delete: true,
38
- // file: this.mediaFile?.file,
39
- // option: 'thumb',
40
- // size: [{ 'width': '200', 'height': '200' }]
41
- // };
42
- // this.disable = true;
43
- // try {
44
- // const params = new HttpParamsRequest({ fromObject: { pem: BUILD_PEM_OBJECT({ isCheck: 0, action: DefineConstants.PERMISSION_ACTION_VIEW, pathCheck: '/other' }) } });
45
- // const res = await this.mediaService.uploadImage(params, body);
46
- // this.moClose.emit(res.data?.url);
47
- // } catch (error) {
48
- // console.log(error);
49
- // this.pushMessageService.showCompTypeText('i18n_notification_manipulation_not_success', undefined, undefined, { timeRemove: 2000, type: 'error' });
50
- // this.moClose.emit();
51
- // } finally {
52
- // this.disable = false;
53
- // }
54
- }
20
+ async handlerSaveImage() { }
55
21
  handlerEventModal(event) {
56
22
  if (event === 'close') {
57
23
  this.outClose.emit();
58
24
  }
59
25
  }
60
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LibsUiComponentsInputsQuillUploadImageComponent, isStandalone: true, selector: "libs_ui-components-inputs-quill-upload_image", inputs: { ignoreCommunicateMicroEvent: { classPropertyName: "ignoreCommunicateMicroEvent", publicName: "ignoreCommunicateMicroEvent", isSignal: true, isRequired: false, transformFunction: null }, uploadImageConfig: { classPropertyName: "uploadImageConfig", publicName: "uploadImageConfig", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outClose: "outClose" }, ngImport: i0, template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n </div>\n</libs_ui-components-modal>\n", dependencies: [{ kind: "component", type: LibsUiComponentsModalComponent, selector: "libs_ui-components-modal", inputs: ["show", "mode", "isBackdropTransparent", "isBackgroundTransparentModal", "isSizeBackdropByWidthHeightInput", "hasShadowBoxWhenHiddenBackDropTransparent", "classIncludeModalWrapper", "zIndex", "width", "height", "maxWidth", "maxHeight", "minWidth", "isFullScreen", "disable", "ignoreCommunicateMicroEvent", "escapeKeyboardCloseModal", "isClickOutsideClose", "headerConfig", "bodyConfig", "footerConfig", "buttonsFooter", "title", "titleUseXssFilter", "titleUseTooltip", "titleUseInnerText"], outputs: ["showChange", "widthChange", "heightChange", "maxWidthChange", "maxHeightChange", "minWidthChange", "disableChange", "buttonsFooterChange", "outScrollContent", "outEvent", "outFunctionControl", "outClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
28
  }
63
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, decorators: [{
64
30
  type: Component,
65
- args: [{ selector: 'libs_ui-components-inputs-quill-upload_image', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsModalComponent], template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n <!-- <libs-uicomponents-media-upload [zIndex]=\"zIndex+1\"\n [labelConfig]=\"labelConfig\"\n [multiple]=\"false\"\n [fileType]=\"'image'\"\n [doNotDelete]=\"true\"\n [maxImageSize]=\"maxImageSize || 1048576\"\n [limitFile]=\"10\"\n [validRequired]=\"{isRequired: true}\"\n (moChangeFile)=\"handlerChangeFile($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\">\n </libs-uicomponents-media-upload> -->\n </div>\n</libs_ui-components-modal>\n" }]
31
+ args: [{ selector: 'libs_ui-components-inputs-quill-upload_image', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsModalComponent], template: "<libs_ui-components-modal\n [title]=\"'i18n_upload_image'\"\n [mode]=\"'center'\"\n [width]=\"'598px'\"\n [headerConfig]=\"{ ignoreHeaderTheme: true }\"\n [maxHeight]=\"'calc(100% - 100px)'\"\n [height]=\"'auto'\"\n [zIndex]=\"uploadImageConfig().zIndex || 1203\"\n [disable]=\"disable()\"\n [ignoreCommunicateMicroEvent]=\"ignoreCommunicateMicroEvent()\"\n [buttonsFooter]=\"buttonFooter()\"\n (outEvent)=\"handlerEventModal($event)\">\n <div class=\"libs-ui-modal-body-custom\">\n </div>\n</libs_ui-components-modal>\n" }]
66
32
  }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWltYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL3VwbG9hZC1pbWFnZS91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7O0FBVzdGLE1BQU0sT0FBTywrQ0FBK0M7SUFDaEQsWUFBWSxHQUFHLE1BQU0sQ0FBaUI7UUFDOUM7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsYUFBYTtZQUNwQixNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtTQUN6QztRQUNEO1lBQ0UsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN0QztLQUNGLENBQUMsQ0FBQztJQUNPLE9BQU8sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbEMsMkJBQTJCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFeEQsZ0VBQWdFO0lBQ2hFLDJHQUEyRztJQUVsRyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUE2QixDQUFDO0lBRWhFLFFBQVEsR0FBRyxNQUFNLEVBQWlCLENBQUM7SUFFNUMsbUZBQW1GO0lBQ25GLGdEQUFnRDtJQUNoRCxJQUFJO0lBRUosb0RBQW9EO0lBQ3BELHdDQUF3QztJQUN4QyxJQUFJO0lBRUksS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixrRUFBa0U7UUFDbEUsWUFBWTtRQUNaLElBQUk7UUFDSixvQ0FBb0M7UUFDcEMsa0RBQWtEO1FBQ2xELFlBQVk7UUFDWixJQUFJO1FBQ0osc0NBQXNDO1FBQ3RDLHlCQUF5QjtRQUN6QixnQ0FBZ0M7UUFDaEMscUJBQXFCO1FBQ3JCLGdEQUFnRDtRQUNoRCxLQUFLO1FBQ0wsdUJBQXVCO1FBQ3ZCLFFBQVE7UUFDUiwwS0FBMEs7UUFDMUssbUVBQW1FO1FBQ25FLHNDQUFzQztRQUN0QyxvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLHVKQUF1SjtRQUN2Six5QkFBeUI7UUFDekIsY0FBYztRQUNkLDBCQUEwQjtRQUMxQixJQUFJO0lBQ04sQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQXVCO1FBQ2pELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBOURVLCtDQUErQzs0RkFBL0MsK0NBQStDLDRlQ2I1RCwrK0JBMEJBLDRDRGZZLDhCQUE4Qjs7NEZBRTdCLCtDQUErQztrQkFSM0QsU0FBUzsrQkFFRSw4Q0FBOEMsY0FFNUMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElCdXR0b24gfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudCwgVFlQRV9NT0RBTF9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbW9kYWwnO1xuaW1wb3J0IHsgSVF1aWxsMnhVcGxvYWRJbWFnZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwyeC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXF1aWxsLXVwbG9hZF9pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0xpYnNVaUNvbXBvbmVudHNNb2RhbENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNJbnB1dHNRdWlsbFVwbG9hZEltYWdlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGJ1dHRvbkZvb3RlciA9IHNpZ25hbDxBcnJheTxJQnV0dG9uPj4oW1xuICAgIHtcbiAgICAgIHR5cGU6ICdidXR0b24tdGhpcmQnLFxuICAgICAgbGFiZWw6ICdpMThuX2NhbmNlbCcsXG4gICAgICBhY3Rpb246IGFzeW5jICgpID0+IHRoaXMub3V0Q2xvc2UuZW1pdCgpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdpMThuX3NhdmUnLFxuICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLmhhbmRsZXJTYXZlSW1hZ2UoKSxcbiAgICB9LFxuICBdKTtcbiAgcHJvdGVjdGVkIGRpc2FibGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8vIHByaXZhdGUgbWVkaWFGaWxlID1zaWduYWw8SU1lZGlhRmlsZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLy8gcHJpdmF0ZSBtZWRpYVVwbG9hZEZ1bmN0aW9uQ29udHJvbCA9c2lnbmFsPElNZWRpYVVwbG9hZEJhc2VGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSB1cGxvYWRJbWFnZUNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPElRdWlsbDJ4VXBsb2FkSW1hZ2VDb25maWc+KCk7XG5cbiAgcmVhZG9ubHkgb3V0Q2xvc2UgPSBvdXRwdXQ8c3RyaW5nIHwgdm9pZD4oKTtcblxuICAvLyBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woZXZlbnQ6IElNZWRpYVVwbG9hZEJhc2VGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAvLyAgIHRoaXMubWVkaWFVcGxvYWRGdW5jdGlvbkNvbnRyb2wuc2V0KGV2ZW50KTtcbiAgLy8gfVxuXG4gIC8vIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlRmlsZShldmVudDogSUNoYW5nZUZpbGUpIHtcbiAgLy8gICB0aGlzLm1lZGlhRmlsZS5zZXQoZXZlbnQuZmlsZXNbMF0pO1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVyU2F2ZUltYWdlKCkge1xuICAgIC8vIGlmICghYXdhaXQgdGhpcy5tZWRpYVVwbG9hZEZ1bmN0aW9uQ29udHJvbCgpPy5jaGVja0lzVmFsaWQoKSkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICAvLyBpZiAodGhpcy5tZWRpYUZpbGU/Lm9yaWdpbl91cmwpIHtcbiAgICAvLyAgIHRoaXMubW9DbG9zZS5lbWl0KHRoaXMubWVkaWFGaWxlLm9yaWdpbl91cmwpO1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICAvLyBjb25zdCBib2R5OiBJT3B0aW9uc1VwbG9hZE1lZGlhID0ge1xuICAgIC8vICAgZG9fbm90X2RlbGV0ZTogdHJ1ZSxcbiAgICAvLyAgIGZpbGU6IHRoaXMubWVkaWFGaWxlPy5maWxlLFxuICAgIC8vICAgb3B0aW9uOiAndGh1bWInLFxuICAgIC8vICAgc2l6ZTogW3sgJ3dpZHRoJzogJzIwMCcsICdoZWlnaHQnOiAnMjAwJyB9XVxuICAgIC8vIH07XG4gICAgLy8gdGhpcy5kaXNhYmxlID0gdHJ1ZTtcbiAgICAvLyB0cnkge1xuICAgIC8vICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXNSZXF1ZXN0KHsgZnJvbU9iamVjdDogeyBwZW06IEJVSUxEX1BFTV9PQkpFQ1QoeyBpc0NoZWNrOiAwLCBhY3Rpb246IERlZmluZUNvbnN0YW50cy5QRVJNSVNTSU9OX0FDVElPTl9WSUVXLCBwYXRoQ2hlY2s6ICcvb3RoZXInIH0pIH0gfSk7XG4gICAgLy8gICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLm1lZGlhU2VydmljZS51cGxvYWRJbWFnZShwYXJhbXMsIGJvZHkpO1xuICAgIC8vICAgdGhpcy5tb0Nsb3NlLmVtaXQocmVzLmRhdGE/LnVybCk7XG4gICAgLy8gfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAvLyAgIHRoaXMucHVzaE1lc3NhZ2VTZXJ2aWNlLnNob3dDb21wVHlwZVRleHQoJ2kxOG5fbm90aWZpY2F0aW9uX21hbmlwdWxhdGlvbl9ub3Rfc3VjY2VzcycsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7IHRpbWVSZW1vdmU6IDIwMDAsIHR5cGU6ICdlcnJvcicgfSk7XG4gICAgLy8gICB0aGlzLm1vQ2xvc2UuZW1pdCgpO1xuICAgIC8vIH0gZmluYWxseSB7XG4gICAgLy8gICB0aGlzLmRpc2FibGUgPSBmYWxzZTtcbiAgICAvLyB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckV2ZW50TW9kYWwoZXZlbnQ6IFRZUEVfTU9EQUxfRVZFTlQpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMub3V0Q2xvc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxpYnNfdWktY29tcG9uZW50cy1tb2RhbFxuICBbdGl0bGVdPVwiJ2kxOG5fdXBsb2FkX2ltYWdlJ1wiXG4gIFttb2RlXT1cIidjZW50ZXInXCJcbiAgW3dpZHRoXT1cIic1OThweCdcIlxuICBbaGVhZGVyQ29uZmlnXT1cInsgaWdub3JlSGVhZGVyVGhlbWU6IHRydWUgfVwiXG4gIFttYXhIZWlnaHRdPVwiJ2NhbGMoMTAwJSAtIDEwMHB4KSdcIlxuICBbaGVpZ2h0XT1cIidhdXRvJ1wiXG4gIFt6SW5kZXhdPVwidXBsb2FkSW1hZ2VDb25maWcoKS56SW5kZXggfHwgMTIwM1wiXG4gIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gIFtpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnRdPVwiaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50KClcIlxuICBbYnV0dG9uc0Zvb3Rlcl09XCJidXR0b25Gb290ZXIoKVwiXG4gIChvdXRFdmVudCk9XCJoYW5kbGVyRXZlbnRNb2RhbCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJsaWJzLXVpLW1vZGFsLWJvZHktY3VzdG9tXCI+XG4gICAgPCEtLSA8bGlicy11aWNvbXBvbmVudHMtbWVkaWEtdXBsb2FkIFt6SW5kZXhdPVwiekluZGV4KzFcIlxuICAgICAgW2xhYmVsQ29uZmlnXT1cImxhYmVsQ29uZmlnXCJcbiAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICBbZmlsZVR5cGVdPVwiJ2ltYWdlJ1wiXG4gICAgICBbZG9Ob3REZWxldGVdPVwidHJ1ZVwiXG4gICAgICBbbWF4SW1hZ2VTaXplXT1cIm1heEltYWdlU2l6ZSB8fCAxMDQ4NTc2XCJcbiAgICAgIFtsaW1pdEZpbGVdPVwiMTBcIlxuICAgICAgW3ZhbGlkUmVxdWlyZWRdPVwie2lzUmVxdWlyZWQ6IHRydWV9XCJcbiAgICAgIChtb0NoYW5nZUZpbGUpPVwiaGFuZGxlckNoYW5nZUZpbGUoJGV2ZW50KVwiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25zQ29udHJvbCgkZXZlbnQpXCI+XG4gICAgPC9saWJzLXVpY29tcG9uZW50cy1tZWRpYS11cGxvYWQ+IC0tPlxuICA8L2Rpdj5cbjwvbGlic191aS1jb21wb25lbnRzLW1vZGFsPlxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWltYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvaW5wdXRzL3F1aWxsMngvc3JjL3VwbG9hZC1pbWFnZS91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsOEJBQThCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7O0FBVzdGLE1BQU0sT0FBTywrQ0FBK0M7SUFDaEQsWUFBWSxHQUFHLE1BQU0sQ0FBaUI7UUFDOUM7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsYUFBYTtZQUNwQixNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtTQUN6QztRQUNEO1lBQ0UsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN0QztLQUNGLENBQUMsQ0FBQztJQUNPLE9BQU8sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbEMsMkJBQTJCLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFFL0MsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNkIsQ0FBQztJQUVoRSxRQUFRLEdBQUcsTUFBTSxFQUFpQixDQUFDO0lBRXBDLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSSxDQUFDO0lBRXpCLGlCQUFpQixDQUFDLEtBQXVCO1FBQ2pELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBekJVLCtDQUErQzs0RkFBL0MsK0NBQStDLDRlQ2I1RCx1aEJBZUEsNENESlksOEJBQThCOzs0RkFFN0IsK0NBQStDO2tCQVIzRCxTQUFTOytCQUVFLDhDQUE4QyxjQUU1QyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJ1dHRvbiB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c01vZGFsQ29tcG9uZW50LCBUWVBFX01PREFMX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1tb2RhbCc7XG5pbXBvcnQgeyBJUXVpbGwyeFVwbG9hZEltYWdlQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWlsbDJ4LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtcXVpbGwtdXBsb2FkX2ltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTGlic1VpQ29tcG9uZW50c01vZGFsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0lucHV0c1F1aWxsVXBsb2FkSW1hZ2VDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgYnV0dG9uRm9vdGVyID0gc2lnbmFsPEFycmF5PElCdXR0b24+PihbXG4gICAge1xuICAgICAgdHlwZTogJ2J1dHRvbi10aGlyZCcsXG4gICAgICBsYWJlbDogJ2kxOG5fY2FuY2VsJyxcbiAgICAgIGFjdGlvbjogYXN5bmMgKCkgPT4gdGhpcy5vdXRDbG9zZS5lbWl0KCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2kxOG5fc2F2ZScsXG4gICAgICBhY3Rpb246ICgpID0+IHRoaXMuaGFuZGxlclNhdmVJbWFnZSgpLFxuICAgIH0sXG4gIF0pO1xuICBwcm90ZWN0ZWQgZGlzYWJsZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlnbm9yZUNvbW11bmljYXRlTWljcm9FdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgdXBsb2FkSW1hZ2VDb25maWcgPSBpbnB1dC5yZXF1aXJlZDxJUXVpbGwyeFVwbG9hZEltYWdlQ29uZmlnPigpO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHN0cmluZyB8IHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVyU2F2ZUltYWdlKCkge31cblxuICBwcm90ZWN0ZWQgaGFuZGxlckV2ZW50TW9kYWwoZXZlbnQ6IFRZUEVfTU9EQUxfRVZFTlQpIHtcbiAgICBpZiAoZXZlbnQgPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMub3V0Q2xvc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxpYnNfdWktY29tcG9uZW50cy1tb2RhbFxuICBbdGl0bGVdPVwiJ2kxOG5fdXBsb2FkX2ltYWdlJ1wiXG4gIFttb2RlXT1cIidjZW50ZXInXCJcbiAgW3dpZHRoXT1cIic1OThweCdcIlxuICBbaGVhZGVyQ29uZmlnXT1cInsgaWdub3JlSGVhZGVyVGhlbWU6IHRydWUgfVwiXG4gIFttYXhIZWlnaHRdPVwiJ2NhbGMoMTAwJSAtIDEwMHB4KSdcIlxuICBbaGVpZ2h0XT1cIidhdXRvJ1wiXG4gIFt6SW5kZXhdPVwidXBsb2FkSW1hZ2VDb25maWcoKS56SW5kZXggfHwgMTIwM1wiXG4gIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gIFtpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnRdPVwiaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50KClcIlxuICBbYnV0dG9uc0Zvb3Rlcl09XCJidXR0b25Gb290ZXIoKVwiXG4gIChvdXRFdmVudCk9XCJoYW5kbGVyRXZlbnRNb2RhbCgkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJsaWJzLXVpLW1vZGFsLWJvZHktY3VzdG9tXCI+XG4gIDwvZGl2PlxuPC9saWJzX3VpLWNvbXBvbmVudHMtbW9kYWw+XG4iXX0=
@@ -445,7 +445,7 @@ export const isEmptyQuill2x = (quill) => {
445
445
  return html === '<p><br></p>' || html === '<p></p>' || html === '' || html === '<p><span class="ql-cursor"></span><br></p>' || rootElement.classList.contains('ql-blank');
446
446
  };
447
447
  export const getHTMLFromDeltaOfQuill2x = (delta, options) => {
448
- if (!delta || !delta.ops || !delta.ops.length) {
448
+ if (!delta?.ops?.length) {
449
449
  return '';
450
450
  }
451
451
  if (!quill2x) {
@@ -621,4 +621,4 @@ export const convertStandardListToQuill2x = (html) => {
621
621
  });
622
622
  return dom.body.innerHTML;
623
623
  };
624
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvdXRpbHMvZnVuY3Rpb25zLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQztBQUNuQyxJQUFJLE9BQU8sR0FBdUIsU0FBUyxDQUFDO0FBQzVDLElBQUksUUFBUSxHQUF1QixTQUFTLENBQUM7QUFFN0MsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFD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TUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDOUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUVsQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7IGRlY29kZUVzY2FwZUh0bWwsIGdldERvY3VtZW50QnlTdHJpbmcsIHNldCwgc2V0U3R5bGVzRWxlbWVudCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBSZXNpemVNb2R1bGUgZnJvbSAnQHNzdW1vL3F1aWxsLXJlc2l6ZS1tb2R1bGUnO1xuaW1wb3J0IERlbHRhIGZyb20gJ3F1aWxsLWRlbHRhJztcbmltcG9ydCBRdWlsbDJ4IGZyb20gJ3F1aWxsMngnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBsYXN0VmFsdWVGcm9tLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3VzdG9tSW1hZ2UyeEJsb3QsIFF1aWxsTWVudGlvbjJ4QmxvdCB9IGZyb20gJy4uL2Jsb3RzLWN1c3RvbSc7XG5pbXBvcnQgeyBmb250U2l6ZVdoaXRlTGlzdCwgaWNvbkxpc3QgfSBmcm9tICcuL2RhdGEuZGVmaW5lJztcbmxldCBxdWlsbDJ4OiBRdWlsbDJ4IHwgbnVsbCA9IG51bGw7XG5sZXQgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xubGV0IHRpbWVvdXQxOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbmxldCBzdGFydENlbGw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5sZXQgZW5kQ2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbmxldCBpc1NlbGVjdGluZyA9IGZhbHNlO1xuXG4vL3JlZ2lvbiBGdW5jdGlvbiBUYWJsZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhYmxlU2VsZWN0b3IgPSAocXVpbGw6IFF1aWxsMngsIGFuY2hvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgPT4ge1xuICAvLyDEkMOzbmcgcG9wdXAgY8WpIG7hur91IGPDsm4gdOG7k24gdOG6oWlcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hbnVhbC10YWJsZS1jcmVhdG9yJykuZm9yRWFjaCgoZWwpID0+IGVsLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGVsKSk7XG5cbiAgY29uc3QgcG9wdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcG9wdXAuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1jcmVhdG9yJztcbiAgcG9wdXAuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICBwb3B1cC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICBwb3B1cC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNkZGQnO1xuICBwb3B1cC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNnB4JztcbiAgcG9wdXAuc3R5bGUuYm94U2hhZG93ID0gJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKSc7XG4gIHBvcHVwLnN0eWxlLnBhZGRpbmcgPSAnMTJweCc7XG4gIHBvcHVwLnN0eWxlLnpJbmRleCA9ICcxMDAwMCc7XG4gIHBvcHVwLnN0eWxlLm1pbldpZHRoID0gJzIwMHB4JztcbiAgc2V0U3R5bGVzRWxlbWVudChwb3B1cCwge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGJhY2tncm91bmQ6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2RkZCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICBib3hTaGFkb3c6ICcwIDZweCAxNnB4IHJnYmEoMCwwLDAsMC4xMiknLFxuICAgIHBhZGRpbmc6ICcxMnB4JyxcbiAgICB6SW5kZXg6ICcxMDAwMCcsXG4gICAgbWluV2lkdGg6ICcyMDBweCcsXG4gIH0pO1xuXG4gIGNvbnN0IGluZm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgaW5mby50ZXh0Q29udGVudCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NlbGVjdF9jZWxsJyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoaW5mbywge1xuICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgY29sb3I6ICcjMzMzJyxcbiAgICBtYXJnaW5Cb3R0b206ICcxMHB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICB9KTtcbiAgcG9wdXAuYXBwZW5kQ2hpbGQoaW5mbyk7XG5cbiAgY29uc3QgZ3JpZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBzZXRTdHlsZXNFbGVtZW50KGdyaWQsIHtcbiAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCAxOHB4KScsXG4gICAgZ2FwOiAnNHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgbWF4ID0gODtcbiAgZm9yIChsZXQgcm93ID0gMTsgcm93IDw9IG1heDsgcm93KyspIHtcbiAgICBmb3IgKGxldCBjb2wgPSAxOyBjb2wgPD0gbWF4OyBjb2wrKykge1xuICAgICAgY29uc3QgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY2VsbC5zdHlsZS53aWR0aCA9ICcxOHB4JztcbiAgICAgIGNlbGwuc3R5bGUuaGVpZ2h0ID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNlNWU3ZWInO1xuICAgICAgY2VsbC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgICAgY2VsbC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgICAgaW5mby50ZXh0Q29udGVudCA9IGAke3Jvd30gw5cgJHtjb2x9YDtcbiAgICAgICAgQXJyYXkuZnJvbShncmlkLmNoaWxkcmVuKS5mb3JFYWNoKChlbCwgaWR4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcnIgPSBNYXRoLmZsb29yKGlkeCAvIG1heCkgKyAxO1xuICAgICAgICAgIGNvbnN0IGNjID0gKGlkeCAlIG1heCkgKyAxO1xuICAgICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuYmFja2dyb3VuZCA9IHJyIDw9IHJvdyAmJiBjYyA8PSBjb2wgPyAnI2RiZWFmZScgOiAnI2ZmZic7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5ib3JkZXJDb2xvciA9IHJyIDw9IHJvdyAmJiBjYyA8PSBjb2wgPyAnIzkzYzVmZCcgOiAnI2U1ZTdlYic7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcXVpbGwuZm9jdXMoKTtcbiAgICAgICAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBhbnk7XG4gICAgICAgICAgaWYgKHRhYmxlTW9kdWxlICYmIHR5cGVvZiB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGFibGVNb2R1bGUuaW5zZXJ0VGFibGUocm93LCBjb2wpO1xuICAgICAgICAgICAgZ2V0QWxsVGFibGVzV2l0aFNwYW4ocXVpbGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyhwb3B1cCkpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocG9wdXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2VsbCk7XG4gICAgfVxuICB9XG4gIHBvcHVwLmFwcGVuZENoaWxkKGdyaWQpO1xuXG4gIGNvbnN0IHBsYWNlUG9wdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGFuY2hvckVsPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0b3AgPSByZWN0ID8gcmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDYgOiAxMDA7XG4gICAgY29uc3QgbGVmdCA9IHJlY3QgPyByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCA6IDEwMDtcbiAgICBwb3B1cC5zdHlsZS50b3AgPSBgJHt0b3B9cHhgO1xuICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgfTtcblxuICBjb25zdCBvbk91dHNpZGVDbGljayA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyhwb3B1cCkpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKTtcbiAgICB9XG4gIH07XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3B1cCk7XG4gIHBsYWNlUG9wdXAoKTtcbiAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZUNsaWNrLCB0cnVlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGV4dE1lbnVPcHRpb25UYWJsZSA9IChxdWlsbDogUXVpbGwyeCwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gIGxldCBsYXN0Q29udGV4dEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBjbG9zZUFueU1lbnUgPSAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1hbnVhbC10YWJsZS1tZW51JykuZm9yRWFjaCgoZWwpID0+IGVsLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGVsKSk7XG4gIH07XG5cbiAgY29uc3QgcnVuV2l0aFNlbGVjdGlvbiA9IChmbjogKCkgPT4gdm9pZCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgaWYgKHR5cGVvZiBsYXN0Q29udGV4dEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24obGFzdENvbnRleHRJbmRleCwgMCwgJ3NpbGVudCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogbm8tb3A6IGdp4buvIHnDqm4gbuG6v3Uga2jDtG5nIHRo4buDIHNldCBzZWxlY3Rpb24gKi9cbiAgICB9XG4gICAgZm4oKTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVNZW51SXRlbSA9IChsYWJlbDogc3RyaW5nLCBvbkNsaWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGl0ZW0udGV4dENvbnRlbnQgPSBsYWJlbDtcbiAgICBpdGVtLnN0eWxlLnBhZGRpbmcgPSAnNnB4IDEycHgnO1xuICAgIGl0ZW0uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBydW5XaXRoU2VsZWN0aW9uKG9uQ2xpY2spO1xuICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmNWY1ZjUnO1xuICAgIH0pO1xuICAgIGl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgIGl0ZW0uc3R5bGUuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgY29uc3Qgb3BlbkNvbnRleHRNZW51ID0gKHBhZ2VYOiBudW1iZXIsIHBhZ2VZOiBudW1iZXIpID0+IHtcbiAgICBjbG9zZUFueU1lbnUoKTtcblxuICAgIGNvbnN0IG1lbnUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZW51LmNsYXNzTmFtZSA9ICdtYW51YWwtdGFibGUtbWVudSc7XG4gICAgbWVudS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgbWVudS5zdHlsZS50b3AgPSBgJHtwYWdlWX1weGA7XG4gICAgbWVudS5zdHlsZS5sZWZ0ID0gYCR7cGFnZVh9cHhgO1xuICAgIG1lbnUuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcbiAgICBtZW51LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XG4gICAgbWVudS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICBtZW51LnN0eWxlLmJveFNoYWRvdyA9ICcwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4yKSc7XG4gICAgbWVudS5zdHlsZS56SW5kZXggPSAnMTAwMDEnO1xuICAgIG1lbnUuc3R5bGUucGFkZGluZyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUubWluV2lkdGggPSAnMTgwcHgnO1xuXG4gICAgY29uc3QgdGFibGVNb2R1bGUgPSBxdWlsbC5nZXRNb2R1bGUoJ3RhYmxlJykgYXMgUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gICAgY29uc3Qgc2FmZUNhbGwgPSAobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBpZiAobWV0aG9kID09PSAnbWVyZ2VDZWxscycpIHtcbiAgICAgICAgY29uc3QgW3N0YXJ0Q2VsbCwgZW5kQ2VsbF0gPSBhcmdzO1xuICAgICAgICBtZXJnZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgICAgIGNsb3NlQW55TWVudSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobWV0aG9kID09PSAnc3BsaXRDZWxscycpIHtcbiAgICAgICAgY29uc3QgW3N0YXJ0Q2VsbF0gPSBhcmdzO1xuICAgICAgICBzcGxpdENlbGxzKHN0YXJ0Q2VsbCk7XG4gICAgICAgIGNsb3NlQW55TWVudSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGFibGVNb2R1bGVbbWV0aG9kXSguLi5hcmdzKTtcbiAgICAgICAgZ2V0QWxsVGFibGVzV2l0aFNwYW4ocXVpbGwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2Fib3ZlJyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dBYm92ZScpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X3Jvd19iZWxvdycpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Um93QmVsb3cnKSkpO1xuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19jb2x1bW5fbGVmdCcpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Q29sdW1uTGVmdCcpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9yaWdodCcpLCAoKSA9PiBzYWZlQ2FsbCgnaW5zZXJ0Q29sdW1uUmlnaHQnKSkpO1xuICAgIGNvbnN0IGRpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXZpZGVyLnN0eWxlLmhlaWdodCA9ICcxcHgnO1xuICAgIGRpdmlkZXIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICBkaXZpZGVyLnN0eWxlLm1hcmdpbiA9ICc0cHggMCc7XG4gICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyKTtcbiAgICBpZiAoc3RhcnRDZWxsICYmIGVuZENlbGwpIHtcbiAgICAgIGNvbnN0IHN0YXJ0Q2VsbFN0b3JlID0gc3RhcnRDZWxsO1xuICAgICAgY29uc3QgZW5kQ2VsbFN0b3JlID0gZW5kQ2VsbDtcbiAgICAgIGNvbnN0IGNvbHNwYW4gPSBwYXJzZUludChzdGFydENlbGxTdG9yZS5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKTtcbiAgICAgIGNvbnN0IHJvd3NwYW4gPSBwYXJzZUludChzdGFydENlbGxTdG9yZS5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgICAgIGxldCB0b3RhbE1lbnUgPSAwO1xuICAgICAgaWYgKHN0YXJ0Q2VsbCAhPT0gZW5kQ2VsbCkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX21lcmdlX2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdtZXJnZUNlbGxzJywgc3RhcnRDZWxsU3RvcmUsIGVuZENlbGxTdG9yZSkpKTtcbiAgICAgICAgdG90YWxNZW51Kys7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnRDZWxsID09PSBlbmRDZWxsICYmIChjb2xzcGFuID4gMSB8fCByb3dzcGFuID4gMSkpIHtcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9zcGxpdF9jZWxscycpLCAoKSA9PiBzYWZlQ2FsbCgnc3BsaXRDZWxscycsIHN0YXJ0Q2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cblxuICAgICAgaWYgKHRvdGFsTWVudSA+IDApIHtcbiAgICAgICAgY29uc3QgZGl2aWRlcjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgICAgIGRpdmlkZXIyLnN0eWxlLmJhY2tncm91bmQgPSAnI2VlZSc7XG4gICAgICAgIGRpdmlkZXIyLnN0eWxlLm1hcmdpbiA9ICc0cHggMCc7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoZGl2aWRlcjIpO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9yb3cnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVJvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfY29sdW1uJyksICgpID0+IHNhZmVDYWxsKCdkZWxldGVDb2x1bW4nKSkpO1xuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3RhYmxlJyksICgpID0+IHNhZmVDYWxsKCdkZWxldGVUYWJsZScpKSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1lbnUpO1xuXG4gICAgY29uc3Qgb25PdXRzaWRlID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIW1lbnUuY29udGFpbnMoZXYudGFyZ2V0IGFzIE5vZGUpIHx8IChldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpLmxlbmd0aCA8IDApIHtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHNldFRpbWVvdXQoKCkgPT4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpKTtcblxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgfTtcblxuICBmcm9tRXZlbnQ8TW91c2VFdmVudD4ocXVpbGwucm9vdCwgJ2NvbnRleHRtZW51Jykuc3Vic2NyaWJlKChldjogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBpc0NlbGwgPSAhIXRhcmdldC5jbG9zZXN0KCd0ZCx0aCx0YWJsZSwucWwtdGFibGUnKTtcbiAgICBpZiAoIWlzQ2VsbCkgcmV0dXJuO1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIMavdSB0acOqbiBs4bqleSBpbmRleCB04burIGJsb3QgdMawxqFuZyDhu6luZyBub2RlXG4gICAgICBjb25zdCBRdWlsbEFueSA9IFF1aWxsMnggYXMgYW55O1xuICAgICAgY29uc3QgYmxvdCA9IFF1aWxsQW55Py5maW5kPy4odGFyZ2V0KTtcbiAgICAgIGlmIChibG90ICYmIHR5cGVvZiBibG90Lm9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gYmxvdC5vZmZzZXQocXVpbGwuc2Nyb2xsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZhbGxiYWNrOiDEkeG6t3Qgc2VsZWN0aW9uIGhp4buHbiB04bqhaSBu4bq/dSBraMO0bmcgeMOhYyDEkeG7i25oIMSRxrDhu6NjXG4gICAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgICAgbGFzdENvbnRleHRJbmRleCA9IHNlbCA/IHNlbC5pbmRleCA6IDA7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCBzZWwgPSBxdWlsbC5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICB9XG4gICAgcXVpbGwuZm9jdXMoKTtcbiAgICBvcGVuQ29udGV4dE1lbnUoZXYucGFnZVgsIGV2LnBhZ2VZKTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVdGlsczogY2xlYXIgdsOgIHNlbGVjdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlbGVjdGVkLWNlbGwnKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgYy5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZC1jZWxsJyk7XG4gIH0pO1xufTtcblxuY29uc3Qgc2VsZWN0UmFuZ2VDZWxscyA9IChzdGFydDogSFRNTEVsZW1lbnQsIGVuZDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY2xlYXJTZWxlY3Rpb24oKTtcbiAgY29uc3QgdGFibGUgPSBzdGFydC5jbG9zZXN0KCd0YWJsZScpO1xuICBpZiAoIXRhYmxlIHx8IHRhYmxlICE9PSBlbmQuY2xvc2VzdCgndGFibGUnKSkgcmV0dXJuO1xuXG4gIGNvbnN0IHJvd3MgPSBBcnJheS5mcm9tKHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICBjb25zdCBzdGFydFJvdyA9IHJvd3MuaW5kZXhPZihzdGFydC5wYXJlbnRFbGVtZW50IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpO1xuICBjb25zdCBlbmRSb3cgPSByb3dzLmluZGV4T2YoZW5kLnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG5cbiAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnRSb3csIGVuZFJvdyk7XG4gIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0Um93LCBlbmRSb3cpO1xuXG4gIGNvbnN0IHN0YXJ0Q29sID0gQXJyYXkuZnJvbShzdGFydC5wYXJlbnRFbGVtZW50IS5jaGlsZHJlbikuaW5kZXhPZihzdGFydCk7XG4gIGNvbnN0IGVuZENvbCA9IEFycmF5LmZyb20oZW5kLnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKGVuZCk7XG5cbiAgY29uc3QgbWluQ29sID0gTWF0aC5taW4oc3RhcnRDb2wsIGVuZENvbCk7XG4gIGNvbnN0IG1heENvbCA9IE1hdGgubWF4KHN0YXJ0Q29sLCBlbmRDb2wpO1xuXG4gIGZvciAobGV0IHIgPSBtaW5Sb3c7IHIgPD0gbWF4Um93OyByKyspIHtcbiAgICBjb25zdCByb3cgPSByb3dzW3JdO1xuICAgIGNvbnN0IGNlbGxzID0gQXJyYXkuZnJvbShyb3cuY2hpbGRyZW4pO1xuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcbiAgICAgIChjZWxsc1tjXSBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtY2VsbCcpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5hYmxlIHNlbGVjdGlvbiB0csOqbiB0YWJsZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVRhYmxlU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBlLmJ1dHRvbiAhPT0gMikgfHwgKGUuYnV0dG9uID09PSAyICYmICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3RlZC1jZWxsJykpKSB7XG4gICAgICBjbGVhclNlbGVjdGlvbigpO1xuICAgICAgaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgc3RhcnRDZWxsID0gdGFyZ2V0O1xuICAgICAgZW5kQ2VsbCA9IHRhcmdldDtcbiAgICAgIHNlbGVjdFJhbmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4ge1xuICAgIGlmICghaXNTZWxlY3RpbmcpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURCcgJiYgc3RhcnRDZWxsKSB7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgfSk7XG59XG5jb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdURCcgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUUicgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUQk9EWScgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUSEVBRCcgJiYgdGFyZ2V0LnRhZ05hbWUgIT09ICdUQUJMRScpIHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICAgIHN0YXJ0Q2VsbCA9IG51bGw7XG4gICAgZW5kQ2VsbCA9IG51bGw7XG4gICAgY2xlYXJTZWxlY3Rpb24oKTtcbiAgfVxufTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlLCB0cnVlKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVyZ2UgY2VsbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjb25zdCBtZXJnZUNlbGxzID0gKHN0YXJ0Q2VsbDogSFRNTEVsZW1lbnQsIGVuZENlbGw6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHN0YXJ0Q2VsbEluZGV4ID0gc3RhcnRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3QgZW5kQ2VsbEluZGV4ID0gZW5kQ2VsbC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGNvbnN0IHN0YXJ0Q2VsbFJvdyA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzBdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsUm93ID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzBdIHx8ICcwJywgMTApO1xuICBjb25zdCBzdGFydENlbGxDb2wgPSBwYXJzZUludChzdGFydENlbGxJbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgZW5kQ2VsbENvbCA9IHBhcnNlSW50KGVuZENlbGxJbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnRDZWxsUm93LCBlbmRDZWxsUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRDZWxsUm93LCBlbmRDZWxsUm93KTtcbiAgY29uc3QgbWluQ29sID0gTWF0aC5taW4oc3RhcnRDZWxsQ29sLCBlbmRDZWxsQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDZWxsQ29sLCBlbmRDZWxsQ29sKTtcblxuICBjb25zdCByb3dzID0gc3RhcnRDZWxsLmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gIHJvd3M/LmZvckVhY2goKHJvd0VsLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA8IG1pblJvdyB8fCByb3dJbmRleCA+IG1heFJvdykgcmV0dXJuO1xuXG4gICAgY29uc3QgY2VsbHMgPSByb3dFbC5xdWVyeVNlbGVjdG9yQWxsKCd0ZCwgdGgnKTtcbiAgICBjZWxscy5mb3JFYWNoKChjZWxsRWwsIGNvbEluZGV4KSA9PiB7XG4gICAgICBpZiAoY29sSW5kZXggPCBtaW5Db2wgfHwgY29sSW5kZXggPiBtYXhDb2wpIHJldHVybjtcbiAgICAgIGlmIChyb3dJbmRleCA9PT0gbWluUm93ICYmIGNvbEluZGV4ID09PSBtaW5Db2wpIHtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsIFN0cmluZyhtYXhDb2wgLSBtaW5Db2wgKyAxKSk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCBTdHJpbmcobWF4Um93IC0gbWluUm93ICsgMSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjZWxsRWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3BsaXQgY2VsbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdENlbGxzKGNlbGxTcGxpdDogSFRNTEVsZW1lbnQpIHtcbiAgY29uc3QgaW5kZXggPSBjZWxsU3BsaXQuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBsZXQgY29sU3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKTtcbiAgbGV0IHJvd1NwYW4gPSBwYXJzZUludChjZWxsU3BsaXQuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCk7XG4gIGNvbnN0IHRvdGFsQ2VsbFNwbGl0ID0gcm93U3BhbiAqIGNvbFNwYW47XG4gIGxldCBjb3VudENlbGxTcGxpdCA9IDA7XG4gIGNvbnN0IHJvd1N0YXJ0ID0gcGFyc2VJbnQoaW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGNvbFN0YXJ0ID0gcGFyc2VJbnQoaW5kZXg/LnNwbGl0KCctJylbMV0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGNvbEluY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBjb25zdCByb3dJbmNyZW1lbnQgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBjb25zdCByb3dzID0gY2VsbFNwbGl0LmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gIHJvd3M/LmZvckVhY2goKHJvd0VsLCByb3dJbmRleCkgPT4ge1xuICAgIGlmIChyb3dJbmRleCA8IHJvd1N0YXJ0KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChyb3dJbmRleCA8IHJvd1N0YXJ0IHx8IGNvbEluZGV4IDwgY29sU3RhcnQgfHwgcm93U3RhcnQgKyByb3dTcGFuIDwgcm93SW5kZXggfHwgY29sU3RhcnQgKyBjb2xTcGFuIDwgY29sSW5kZXggfHwgY291bnRDZWxsU3BsaXQgPj0gdG90YWxDZWxsU3BsaXQpIHJldHVybjtcbiAgICAgIGlmIChyb3dJbmRleCA9PT0gcm93U3RhcnQgJiYgY29sSW5kZXggPT09IGNvbFN0YXJ0KSB7XG4gICAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMScpO1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFjZWxsRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICBpZiAoIXJvd0luY3JlbWVudC5oYXMocm93SW5kZXgpKSB7XG4gICAgICAgICAgcm93U3BhbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29sSW5jcmVtZW50Lmhhcyhjb2xJbmRleCkpIHtcbiAgICAgICAgICBjb2xTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgcm93SW5jcmVtZW50LmFkZChyb3dJbmRleCk7XG4gICAgICAgIGNvbEluY3JlbWVudC5hZGQoY29sSW5kZXgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjZWxsRWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICBjb3VudENlbGxTcGxpdCsrO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFsbFRhYmxlc1dpdGhTcGFuID0gKHF1aWxsOiBhbnkpID0+IHtcbiAgY29uc3Qgcm9vdCA9IHF1aWxsLnJvb3Q7XG5cbiAgLy8gVMOsbSB04bqldCBj4bqjIHRhYmxlIHRyb25nIHF1aWxsXG4gIGNvbnN0IHRhYmxlRWxzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpO1xuXG4gIHRhYmxlRWxzLmZvckVhY2goKHRhYmxlRWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IHRhYmxlRWwucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgICByb3dzLmZvckVhY2goKHJvd0VsLCBySW5kZXgpID0+IHtcbiAgICAgIHJvd0VsLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtySW5kZXh9YCk7XG4gICAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjSW5kZXgpID0+IHtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnaW5kZXgnLCBgJHtySW5kZXh9LSR7Y0luZGV4fWApO1xuICAgICAgICBjb25zdCByb3dzcGFuID0gcGFyc2VJbnQoY2VsbEVsLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgICBjb25zdCBjb2xzcGFuID0gcGFyc2VJbnQoY2VsbEVsLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuXG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCBTdHJpbmcocm93c3BhbikpO1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKGNvbHNwYW4pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5sZXQgcmVnaXN0ZXIgPSBmYWxzZTtcbmV4cG9ydCBjb25zdCByZWdpc3RlclF1aWxsMnggPSAoKSA9PiB7XG4gIGlmIChyZWdpc3RlcikgcmV0dXJuO1xuICByZWdpc3RlciA9IHRydWU7XG5cbiAgY29uc3QgUXVpbGwgPSBRdWlsbDJ4IGFzIGFueTtcblxuICBjb25zdCBzaXplID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9zdHlsZS9zaXplJyk7XG4gIGNvbnN0IGFsaWduU3R5bGUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL2FsaWduJyk7XG4gIGNvbnN0IGl0YWxpYyA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9pdGFsaWMnKTtcbiAgY29uc3QgYm9sZCA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9ib2xkJyk7XG4gIGNvbnN0IGljb25zID0gUXVpbGwuaW1wb3J0KCd1aS9pY29ucycpO1xuICBzaXplLndoaXRlbGlzdCA9IGZvbnRTaXplV2hpdGVMaXN0KCk7XG5cbiAgaXRhbGljLnRhZ05hbWUgPSAnaSc7XG4gIGJvbGQudGFnTmFtZSA9ICdiJztcblxuICBRdWlsbC5yZWdpc3Rlcihib2xkLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoaXRhbGljLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoc2l6ZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKGFsaWduU3R5bGUsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihRdWlsbE1lbnRpb24yeEJsb3QsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihDdXN0b21JbWFnZTJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL3Jlc2l6ZScsIFJlc2l6ZU1vZHVsZSk7XG4gIFsuLi5pY29uTGlzdCgpXS5mb3JFYWNoKChlbGVtZW50KSA9PiBzZXQoaWNvbnMsIGVsZW1lbnQua2V5LCBgPHNwYW4gY2xhc3M9XCIke2VsZW1lbnQuaWNvbn0gJHtlbGVtZW50LmtleSA9PT0gJ3VuTGluaycgPyAnaG92ZXI6dGV4dC1bI2VlMmQ0MV0gJyA6ICdob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXSd9IHRleHQtWzE2cHhdIHRleHQtWyM2YTczODNdXCI+PC9zcGFuPmApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5UXVpbGwyeCA9IChxdWlsbDogUXVpbGwyeCB8IG51bGwpID0+IHtcbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBxdWlsbD8ucm9vdDtcbiAgaWYgKCFyb290RWxlbWVudCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGh0bWwgPSByb290RWxlbWVudC5pbm5lckhUTUwudHJpbSgpO1xuICByZXR1cm4gaHRtbCA9PT0gJzxwPjxicj48L3A+JyB8fCBodG1sID09PSAnPHA+PC9wPicgfHwgaHRtbCA9PT0gJycgfHwgaHRtbCA9PT0gJzxwPjxzcGFuIGNsYXNzPVwicWwtY3Vyc29yXCI+PC9zcGFuPjxicj48L3A+JyB8fCByb290RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3FsLWJsYW5rJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwyeCA9IChcbiAgZGVsdGE6IERlbHRhLFxuICBvcHRpb25zPzoge1xuICAgIGdldFJvb3RIdG1sPzogYm9vbGVhbjtcbiAgICByZXBsYWNlTmV3TGluZVRvPzogc3RyaW5nO1xuICAgIHJlcGxhY2VUYWdCUlRvPzogc3RyaW5nO1xuICAgIHJlcGxhY2VCclRvRGl2PzogYm9vbGVhbjtcbiAgICBmdW5jdGlvblJlcGxhY2VEZWx0YT86IChvcDogRGVsdGEpID0+IHZvaWQ7XG4gICAgcmVwbGFjZVRhZ3M/OiB7XG4gICAgICB0YWc6IHN0cmluZztcbiAgICAgIHJlcGxhY2VUbzogc3RyaW5nO1xuICAgIH1bXTtcbiAgfVxuKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkZWx0YSB8fCAhZGVsdGEub3BzIHx8ICFkZWx0YS5vcHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmICghcXVpbGwyeCkge1xuICAgIHF1aWxsMnggPSBuZXcgUXVpbGwyeChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChvcHRpb25zPy5mdW5jdGlvblJlcGxhY2VEZWx0YSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25SZXBsYWNlRGVsdGEoZGVsdGEpO1xuICB9XG5cbiAgZGVsdGEub3BzLmZvckVhY2goKG9wKSA9PiB7XG4gICAgaWYgKG9wLmluc2VydCkge1xuICAgICAgaWYgKHR5cGVvZiBvcC5pbnNlcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChyZXBsYWNlTmV3TGluZVRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoL1xcbi9nLCByZXBsYWNlTmV3TGluZVRvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVwbGFjZVRhZ0JSVG8pIHtcbiAgICAgICAgICBvcC5pbnNlcnQgPSBvcC5pbnNlcnQucmVwbGFjZSgvPGJyPi9nLCByZXBsYWNlVGFnQlJUbyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVwbGFjZVRhZ3M/Lmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIHJlcGxhY2VUYWdzKSB7XG4gICAgICAgICAgICBvcC5pbnNlcnQgPSBvcC5pbnNlcnQucmVwbGFjZShuZXcgUmVnRXhwKGA8JHt0YWcudGFnfT5gLCAnZycpLCBgPCR7dGFnLnJlcGxhY2VUb30+YCkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPC8ke3RhZy50YWd9PmAsICdnJyksIGA8LyR7dGFnLnJlcGxhY2VUb30+YCkgYXMgc3RyaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHF1aWxsMnguc2V0Q29udGVudHMoZGVsdGEpO1xuICBsZXQgaHRtbFRleHQgPSBvcHRpb25zPy5nZXRSb290SHRtbCA/IHF1aWxsMngucm9vdC5pbm5lckhUTUwgOiBxdWlsbDJ4LnJvb3QuZmlyc3RFbGVtZW50Q2hpbGQ/LmlubmVySFRNTDtcbiAgaWYgKHJlcGxhY2VCclRvRGl2KSB7XG4gICAgaHRtbFRleHQgPSBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzKGh0bWxUZXh0IHx8ICcnKTtcbiAgfVxuICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBxdWlsbDJ4ID0gbnVsbDtcbiAgfSwgMTAwMDApO1xuICByZXR1cm4gZGVjb2RlRXNjYXBlSHRtbChodG1sVGV4dCB8fCAnJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVsdGFPZlF1aWxsMnhGcm9tSFRNTCA9IGFzeW5jIChodG1sOiBzdHJpbmcpOiBQcm9taXNlPERlbHRhPiA9PiB7XG4gIGlmICghcXVpbGwyeCkge1xuICAgIHF1aWxsMnggPSBuZXcgUXVpbGwyeChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgcXVpbGwyeC5yb290LmlubmVySFRNTCA9IGh0bWw7XG5cbiAgYXdhaXQgbGFzdFZhbHVlRnJvbSh0aW1lcigxMDAwKSk7XG4gIGNsZWFyVGltZW91dCh0aW1lb3V0MSk7XG4gIHRpbWVvdXQxID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcXVpbGwyeCA9IG51bGw7XG4gIH0sIDEwMDAwKTtcbiAgcmV0dXJuIHF1aWxsMnguZ2V0Q29udGVudHMoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IEJSRUFLX1RPS0VOID0gJzw8PEJSRUFLPj4+JztcbiAgLy8gQsaw4bubYyAxOiB0aGF5IDxicj4gdGjDoG5oIHRva2VuIHThuqFtXG4gIGNvbnN0IG5vcm1hbGl6ZWRIdG1sID0gaHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIEJSRUFLX1RPS0VOKTtcblxuICAvLyBCxrDhu5tjIDI6IHTDoWNoIHRoZW8gdG9rZW5cbiAgY29uc3QgcGFydHMgPSBub3JtYWxpemVkSHRtbC5zcGxpdChCUkVBS19UT0tFTik7XG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICBjb25zdCBkaXZzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmF3IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcblxuICAgIC8vIHBhcnNlIG3hu5dpIHBo4bqnbiBuaOG7jyBuaMawIG3hu5l0IGRvY3VtZW50IHJpw6puZ1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodHJpbW1lZCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keTtcblxuICAgIC8vIEzhuqV5IGzhuqFpIG7hu5lpIGR1bmcgYsOqbiB0cm9uZyBib2R5XG4gICAgZGl2cy5wdXNoKGA8ZGl2PiR7Ym9keS5pbm5lckhUTUx9PC9kaXY+YCk7XG4gIH1cblxuICByZXR1cm4gZGl2cy5qb2luKCcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUGFzdGVEYXRhID0gYXN5bmMgKFxuICBlOiBDbGlwYm9hcmRFdmVudCxcbiAgY29uZmlnOiB7XG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgaGFuZGxlclBhc3RlRmlsZT86IChmaWxlczogRmlsZUxpc3QpID0+IHZvaWQ7XG4gICAgY2FsbEJhY2s/OiAocG9zaXRvblJldHVybjogJ2ZpbGUnIHwgJ3JhbmdlJyB8ICdjb250ZW50JyB8ICduby1jb250ZW50JykgPT4gdm9pZDtcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBjb25maWcuZWxlbWVudDtcbiAgY29uc3QgZmlsZXMgPSBlLmNsaXBib2FyZERhdGE/LmZpbGVzO1xuICBpZiAoZmlsZXM/Lmxlbmd0aCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25maWcuaGFuZGxlclBhc3RlRmlsZT8uKGZpbGVzKTtcbiAgICBjb25maWcuY2FsbEJhY2s/LignZmlsZScpO1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBMxrB1IHNlbGVjdGlvbiBUUsav4buaQyBraGkgcHJldmVudCBkZWZhdWx0XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgbGV0IHNhdmVkUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICAvLyBDaOG7iSBsxrB1IG7hur91IHJhbmdlIG7hurFtIHRyb25nIGNvbnRlbnRUZXh0IGVsZW1lbnRcbiAgICBjb25zdCBjb250YWluZXIgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcjtcbiAgICBjb25zdCBpc0luQ29udGVudEVsZW1lbnQgPSBlbGVtZW50LmNvbnRhaW5zKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lcik7XG4gICAgaWYgKGlzSW5Db250ZW50RWxlbWVudCkge1xuICAgICAgc2F2ZWRSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJldmVudCBkZWZhdWx0IMSR4buDIHThu7EgeOG7rSBsw70gcGFzdGVcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICBjb25zdCBodG1sQ29udGVudCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9odG1sJykgfHwgJyc7XG4gIGNvbnN0IHBsYWluVGV4dCA9IGUuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9wbGFpbicpIHx8ICcnO1xuICBsZXQgY29udGVudFRvSW5zZXJ0ID0gKHBsYWluVGV4dCB8fCAnJykucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG4gIGlmIChodG1sQ29udGVudCkge1xuICAgIGNvbnN0IGRlbHRhID0gYXdhaXQgZ2V0RGVsdGFPZlF1aWxsMnhGcm9tSFRNTChodG1sQ29udGVudCk7XG4gICAgY29udGVudFRvSW5zZXJ0ID0gZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwyeChkZWx0YSBhcyBEZWx0YSk7XG4gIH1cblxuICBpZiAoIWNvbnRlbnRUb0luc2VydCkge1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCduby1jb250ZW50Jyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNhdmVkUmFuZ2UpIHtcbiAgICBpbnNlcnRDb250ZW50V2l0aFJhbmdlKGNvbnRlbnRUb0luc2VydCwgc2F2ZWRSYW5nZSwgZWxlbWVudCk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ3JhbmdlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnRUb0luc2VydDtcbiAgY29uZmlnLmNhbGxCYWNrPy4oJ2NvbnRlbnQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDb250ZW50V2l0aFJhbmdlID0gKGNvbnRlbnQ6IHN0cmluZywgc2F2ZWRSYW5nZTogUmFuZ2UsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFN0YW5kYXJkTGlzdCA9IChodG1sOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkb20gPSBnZXREb2N1bWVudEJ5U3RyaW5nKGh0bWwpO1xuICBjb25zdCBsaUVsZW1lbnRzID0gZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpW2RhdGEtbGlzdD1cImJ1bGxldFwiXTpub3QodWwgbGkpJyk7XG4gIGxpRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgIGlmIChlbGVtZW50LmNsb3Nlc3QoJ3VsJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuICAgIGNvbnN0IGVsZW1lbnRDbG9uZSA9IGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgIHVsLnNldEF0dHJpYnV0ZSgnZGF0YS1saXN0JywgJ2Rpc2MnKTtcbiAgICBpZiAoIWVsZW1lbnRDbG9uZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKSkge1xuICAgICAgdWwuc3R5bGUuc2V0UHJvcGVydHkoJ3BhZGRpbmctbGVmdCcsICcxLjVlbScsICdpbXBvcnRhbnQnKTtcbiAgICB9XG4gICAgdWwuc3R5bGUuc2V0UHJvcGVydHkoJ2xpc3Qtc3R5bGUtdHlwZScsICdkaXNjJywgJ2ltcG9ydGFudCcpO1xuICAgIHVsLmFwcGVuZENoaWxkKGVsZW1lbnRDbG9uZSk7XG4gICAgZWxlbWVudC5yZXBsYWNlV2l0aCh1bCk7XG4gIH0pO1xuICByZXR1cm4gZG9tLmJvZHkuaW5uZXJIVE1MO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRTdGFuZGFyZExpc3RUb1F1aWxsMnggPSAoaHRtbDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZG9tID0gZ2V0RG9jdW1lbnRCeVN0cmluZyhodG1sKTtcbiAgY29uc3QgdWxFbGVtZW50cyA9IGRvbS5xdWVyeVNlbGVjdG9yQWxsKCd1bFtkYXRhLWxpc3Q9XCJkaXNjXCJdJyk7XG4gIHVsRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGJ1bGxldExpcyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlbZGF0YS1saXN0PVwiYnVsbGV0XCJdJyk7XG4gICAgaWYgKCFidWxsZXRMaXMubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgYnVsbGV0TGlzLmZvckVhY2goKGxpKSA9PiB7XG4gICAgICBwYXJlbnQ/Lmluc2VydEJlZm9yZShsaSwgZWxlbWVudCk7XG4gICAgfSk7XG5cbiAgICBlbGVtZW50LnJlbW92ZSgpO1xuICB9KTtcbiAgcmV0dXJuIGRvbS5ib2R5LmlubmVySFRNTDtcbn07XG4iXX0=
624
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwyeC9zcmMvdXRpbHMvZnVuY3Rpb25zLmRlZmluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RixPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQztBQUNuQyxJQUFJLE9BQU8sR0FBdUIsU0FBUyxDQUFDO0FBQzVDLElBQUksUUFBUSxHQUF1QixTQUFTLENBQUM7QUFFN0MsSUFBSSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUN6QyxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO0FBQ3ZDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4Qix1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBNEIsRUFBRSxTQUEyQixFQUFFLEVBQUU7SUFDL0csZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7SUFDekMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztJQUN0QyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsNkJBQTZCLENBQUM7SUFDdEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDL0IsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsU0FBUyxFQUFFLDZCQUE2QjtRQUN4QyxPQUFPLEVBQUUsTUFBTTtRQUNmLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFLE9BQU87S0FDbEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDckIsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsTUFBTTtRQUNwQixTQUFTLEVBQUUsUUFBUTtRQUNuQixVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsbUJBQW1CLEVBQUUsaUJBQWlCO1FBQ3RDLEdBQUcsRUFBRSxLQUFLO0tBQ1gsQ0FBQyxDQUFDO0lBRUgsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUM7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDckMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUM1QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDMUIsRUFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ2xGLEVBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN6RixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQztvQkFDSCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQVEsQ0FBQztvQkFDcEQsSUFBSSxXQUFXLElBQUksT0FBTyxXQUFXLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO3dCQUNqRSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbEMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQzt3QkFBUyxDQUFDO29CQUNULElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLENBQUM7b0JBQ0QsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtRQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztJQUNqQyxDQUFDLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQWMsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBYyxFQUFFLFNBQTJCLEVBQUUsRUFBRTtJQUMxRixJQUFJLGdCQUFnQixHQUFrQixJQUFJLENBQUM7SUFFM0MsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBYyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdEQUFnRDtRQUNsRCxDQUFDO1FBQ0QsRUFBRSxFQUFFLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFtQixFQUFFLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRTtRQUN2RCxZQUFZLEVBQUUsQ0FBQztRQUVmLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFFOUIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQStCLENBQUM7UUFDM0UsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFjLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRTtZQUNsRCxJQUFJLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxNQUFNLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEIsWUFBWSxFQUFFLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDN0QsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwSCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwSSxTQUFTLEVBQUUsQ0FBQztZQUNkLENBQUM7WUFDRCxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RILFNBQVMsRUFBRSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDbkMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBYyxDQUFDLElBQUssRUFBRSxDQUFDLE1BQXNCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3RyxZQUFZLEVBQUUsQ0FBQztnQkFDZixRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLFlBQVksRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0lBRUYsU0FBUyxDQUFhLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7UUFDNUUsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQXFCLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILDJDQUEyQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxPQUFjLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDJEQUEyRDtnQkFDM0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxlQUFlLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsK0JBQStCO0FBQy9CLGtDQUFrQztBQUVsQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFDMUIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDeEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBa0IsRUFBRSxHQUFnQixFQUFFLEVBQUU7SUFDaEUsY0FBYyxFQUFFLENBQUM7SUFDakIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU87SUFFckQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFvQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBb0MsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQyxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxLQUFLLENBQUMsQ0FBQyxDQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsU0FBc0I7SUFDekQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQzVDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFxQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkgsY0FBYyxFQUFFLENBQUM7WUFDakIsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuQixTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakIsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUM1QyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQXFCLENBQUM7UUFDdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ2pCLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBYyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQXFCLENBQUM7SUFDeEMsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2pKLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsY0FBYyxFQUFFLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUNGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXBELGtDQUFrQztBQUNsQyxjQUFjO0FBQ2Qsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQXNCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFbEQsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2hDLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxRQUFRLEdBQUcsTUFBTTtZQUFFLE9BQU87UUFFbkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDakMsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNO2dCQUFFLE9BQU87WUFDbkQsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsa0NBQWtDO0FBQ2xDLGNBQWM7QUFDZCxrQ0FBa0M7QUFDbEMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxTQUFzQjtJQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckUsTUFBTSxjQUFjLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2hDLElBQUksUUFBUSxHQUFHLFFBQVE7WUFBRSxPQUFPO1FBRWhDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2pDLElBQUksUUFBUSxHQUFHLFFBQVEsSUFBSSxRQUFRLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxPQUFPLEdBQUcsUUFBUSxJQUFJLGNBQWMsSUFBSSxjQUFjO2dCQUFFLE9BQU87WUFDN0osSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDcEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2dCQUNELFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsY0FBYyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFFeEIsK0JBQStCO0lBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdCLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDL0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRXBFLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRiw2Q0FBNkM7QUFFN0MsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDbEMsSUFBSSxRQUFRO1FBQUUsT0FBTztJQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWhCLE1BQU0sS0FBSyxHQUFHLE9BQWMsQ0FBQztJQUU3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBRW5CLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLGdCQUFnQixPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsMkNBQTJDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztBQUN4TyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztJQUNoQyxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUMsT0FBTyxJQUFJLEtBQUssYUFBYSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssNENBQTRDLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDNUssQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsS0FBWSxFQUNaLE9BVUMsRUFDTyxFQUFFO0lBQ1YsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFFakcsSUFBSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLE9BQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNyQixFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUVELElBQUksV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUN4QixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO3dCQUM5QixFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQ3JGLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDekYsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsSUFBSSxRQUFRLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQ3pHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsUUFBUSxHQUFHLHNCQUFzQixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDakIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1YsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBa0IsRUFBRTtJQUM5RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFFOUIsTUFBTSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDakIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1YsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUM3RCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDbEMsb0NBQW9DO0lBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRWpFLDBCQUEwQjtJQUMxQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDL0IsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBRTFCLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUV2Qiw0Q0FBNEM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUV0QixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUNuQyxDQUFpQixFQUNqQixNQUlDLEVBQ0QsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7SUFDckMsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixPQUFPO0lBQ1QsQ0FBQztJQUNELDBDQUEwQztJQUMxQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQztJQUNwQyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsa0RBQWtEO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztRQUNoRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0SCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUNELG9DQUFvQztJQUNwQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvRCxJQUFJLGVBQWUsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsTUFBTSxLQUFLLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxlQUFlLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQixNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2Ysc0JBQXNCLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RCxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsT0FBTztJQUNULENBQUM7SUFDRCxPQUFPLENBQUMsU0FBUyxJQUFJLGVBQWUsQ0FBQztJQUNyQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsVUFBaUIsRUFBRSxPQUFvQixFQUFRLEVBQUU7SUFDdkcsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLDRCQUE0QjtRQUM1QixPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUNELG9CQUFvQjtJQUNwQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixrQ0FBa0M7SUFDbEMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVCLHdDQUF3QztJQUN4QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ25ELE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxtQ0FBbUM7SUFDbkMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxnREFBZ0Q7SUFDaEQsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUMxRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUM3RSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFnQixDQUFDO1FBQzVELEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDekQsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUNuRSxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNoRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUM5QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRWxDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2QixNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuaW1wb3J0IHsgZGVjb2RlRXNjYXBlSHRtbCwgZ2V0RG9jdW1lbnRCeVN0cmluZywgc2V0LCBzZXRTdHlsZXNFbGVtZW50IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IFJlc2l6ZU1vZHVsZSBmcm9tICdAc3N1bW8vcXVpbGwtcmVzaXplLW1vZHVsZSc7XG5pbXBvcnQgRGVsdGEgZnJvbSAncXVpbGwtZGVsdGEnO1xuaW1wb3J0IFF1aWxsMnggZnJvbSAncXVpbGwyeCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIGxhc3RWYWx1ZUZyb20sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21JbWFnZTJ4QmxvdCwgUXVpbGxNZW50aW9uMnhCbG90IH0gZnJvbSAnLi4vYmxvdHMtY3VzdG9tJztcbmltcG9ydCB7IGZvbnRTaXplV2hpdGVMaXN0LCBpY29uTGlzdCB9IGZyb20gJy4vZGF0YS5kZWZpbmUnO1xubGV0IHF1aWxsMng6IFF1aWxsMnggfCBudWxsID0gbnVsbDtcbmxldCB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5sZXQgdGltZW91dDE6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxubGV0IHN0YXJ0Q2VsbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbmxldCBlbmRDZWxsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xubGV0IGlzU2VsZWN0aW5nID0gZmFsc2U7XG5cbi8vcmVnaW9uIEZ1bmN0aW9uIFRhYmxlXG5leHBvcnQgY29uc3QgY3JlYXRlVGFibGVTZWxlY3RvciA9IChxdWlsbDogUXVpbGwyeCwgYW5jaG9yRWw6IEhUTUxFbGVtZW50IHwgbnVsbCwgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gIC8vIMSQw7NuZyBwb3B1cCBjxakgbuG6v3UgY8OybiB04buTbiB04bqhaVxuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLWNyZWF0b3InKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcblxuICBjb25zdCBwb3B1cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwb3B1cC5jbGFzc05hbWUgPSAnbWFudWFsLXRhYmxlLWNyZWF0b3InO1xuICBwb3B1cC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIHBvcHVwLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gIHBvcHVwLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2RkZCc7XG4gIHBvcHVwLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc2cHgnO1xuICBwb3B1cC5zdHlsZS5ib3hTaGFkb3cgPSAnMCA2cHggMTZweCByZ2JhKDAsMCwwLDAuMTIpJztcbiAgcG9wdXAuc3R5bGUucGFkZGluZyA9ICcxMnB4JztcbiAgcG9wdXAuc3R5bGUuekluZGV4ID0gJzEwMDAwJztcbiAgcG9wdXAuc3R5bGUubWluV2lkdGggPSAnMjAwcHgnO1xuICBzZXRTdHlsZXNFbGVtZW50KHBvcHVwLCB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGRkJyxcbiAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgIGJveFNoYWRvdzogJzAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjEyKScsXG4gICAgcGFkZGluZzogJzEycHgnLFxuICAgIHpJbmRleDogJzEwMDAwJyxcbiAgICBtaW5XaWR0aDogJzIwMHB4JyxcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBpbmZvLnRleHRDb250ZW50ID0gdHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fc2VsZWN0X2NlbGwnKTtcbiAgc2V0U3R5bGVzRWxlbWVudChpbmZvLCB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyMzMzMnLFxuICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZm9udFdlaWdodDogJzYwMCcsXG4gIH0pO1xuICBwb3B1cC5hcHBlbmRDaGlsZChpbmZvKTtcblxuICBjb25zdCBncmlkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHNldFN0eWxlc0VsZW1lbnQoZ3JpZCwge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIDE4cHgpJyxcbiAgICBnYXA6ICc0cHgnLFxuICB9KTtcblxuICBjb25zdCBtYXggPSA4O1xuICBmb3IgKGxldCByb3cgPSAxOyByb3cgPD0gbWF4OyByb3crKykge1xuICAgIGZvciAobGV0IGNvbCA9IDE7IGNvbCA8PSBtYXg7IGNvbCsrKSB7XG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLndpZHRoID0gJzE4cHgnO1xuICAgICAgY2VsbC5zdHlsZS5oZWlnaHQgPSAnMThweCc7XG4gICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2U1ZTdlYic7XG4gICAgICBjZWxsLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZic7XG4gICAgICBjZWxsLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICBpbmZvLnRleHRDb250ZW50ID0gYCR7cm93fSDDlyAke2NvbH1gO1xuICAgICAgICBBcnJheS5mcm9tKGdyaWQuY2hpbGRyZW4pLmZvckVhY2goKGVsLCBpZHgpID0+IHtcbiAgICAgICAgICBjb25zdCByciA9IE1hdGguZmxvb3IoaWR4IC8gbWF4KSArIDE7XG4gICAgICAgICAgY29uc3QgY2MgPSAoaWR4ICUgbWF4KSArIDE7XG4gICAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjZGJlYWZlJyA6ICcjZmZmJztcbiAgICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmJvcmRlckNvbG9yID0gcnIgPD0gcm93ICYmIGNjIDw9IGNvbCA/ICcjOTNjNWZkJyA6ICcjZTVlN2ViJztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBxdWlsbC5mb2N1cygpO1xuICAgICAgICAgIGNvbnN0IHRhYmxlTW9kdWxlID0gcXVpbGwuZ2V0TW9kdWxlKCd0YWJsZScpIGFzIGFueTtcbiAgICAgICAgICBpZiAodGFibGVNb2R1bGUgJiYgdHlwZW9mIHRhYmxlTW9kdWxlLmluc2VydFRhYmxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YWJsZU1vZHVsZS5pbnNlcnRUYWJsZShyb3csIGNvbCk7XG4gICAgICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwb3B1cCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjZWxsKTtcbiAgICB9XG4gIH1cbiAgcG9wdXAuYXBwZW5kQ2hpbGQoZ3JpZCk7XG5cbiAgY29uc3QgcGxhY2VQb3B1cCA9ICgpID0+IHtcbiAgICBjb25zdCByZWN0ID0gYW5jaG9yRWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHRvcCA9IHJlY3QgPyByZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZICsgNiA6IDEwMDtcbiAgICBjb25zdCBsZWZ0ID0gcmVjdCA/IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYIDogMTAwO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICB9O1xuXG4gIGNvbnN0IG9uT3V0c2lkZUNsaWNrID0gKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFwb3B1cC5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHBvcHVwKSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpO1xuICAgIH1cbiAgfTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcbiAgcGxhY2VQb3B1cCgpO1xuICBzZXRUaW1lb3V0KCgpID0+IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25PdXRzaWRlQ2xpY2ssIHRydWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZXh0TWVudU9wdGlvblRhYmxlID0gKHF1aWxsOiBRdWlsbDJ4LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcbiAgbGV0IGxhc3RDb250ZXh0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IGNsb3NlQW55TWVudSA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFudWFsLXRhYmxlLW1lbnUnKS5mb3JFYWNoKChlbCkgPT4gZWwucGFyZW50RWxlbWVudD8ucmVtb3ZlQ2hpbGQoZWwpKTtcbiAgfTtcblxuICBjb25zdCBydW5XaXRoU2VsZWN0aW9uID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHF1aWxsLmZvY3VzKCk7XG4gICAgICBpZiAodHlwZW9mIGxhc3RDb250ZXh0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihsYXN0Q29udGV4dEluZGV4LCAwLCAnc2lsZW50Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBuby1vcDogZ2nhu68gecOqbiBu4bq/dSBraMO0bmcgdGjhu4Mgc2V0IHNlbGVjdGlvbiAqL1xuICAgIH1cbiAgICBmbigpO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU1lbnVJdGVtID0gKGxhYmVsOiBzdHJpbmcsIG9uQ2xpY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgICBjb25zdCBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaXRlbS50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgIGl0ZW0uc3R5bGUucGFkZGluZyA9ICc2cHggMTJweCc7XG4gICAgaXRlbS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJ1bldpdGhTZWxlY3Rpb24ob25DbGljayk7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICB9KTtcbiAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpdGVtLnN0eWxlLmJhY2tncm91bmQgPSAnI2Y1ZjVmNSc7XG4gICAgfSk7XG4gICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBjb25zdCBvcGVuQ29udGV4dE1lbnUgPSAocGFnZVg6IG51bWJlciwgcGFnZVk6IG51bWJlcikgPT4ge1xuICAgIGNsb3NlQW55TWVudSgpO1xuXG4gICAgY29uc3QgbWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lbnUuY2xhc3NOYW1lID0gJ21hbnVhbC10YWJsZS1tZW51JztcbiAgICBtZW51LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBtZW51LnN0eWxlLnRvcCA9IGAke3BhZ2VZfXB4YDtcbiAgICBtZW51LnN0eWxlLmxlZnQgPSBgJHtwYWdlWH1weGA7XG4gICAgbWVudS5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnO1xuICAgIG1lbnUuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICBtZW51LnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgIG1lbnUuc3R5bGUuYm94U2hhZG93ID0gJzAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjIpJztcbiAgICBtZW51LnN0eWxlLnpJbmRleCA9ICcxMDAwMSc7XG4gICAgbWVudS5zdHlsZS5wYWRkaW5nID0gJzRweCc7XG4gICAgbWVudS5zdHlsZS5taW5XaWR0aCA9ICcxODBweCc7XG5cbiAgICBjb25zdCB0YWJsZU1vZHVsZSA9IHF1aWxsLmdldE1vZHVsZSgndGFibGUnKSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgICBjb25zdCBzYWZlQ2FsbCA9IChtZXRob2Q6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdtZXJnZUNlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsLCBlbmRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIG1lcmdlQ2VsbHMoc3RhcnRDZWxsLCBlbmRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRob2QgPT09ICdzcGxpdENlbGxzJykge1xuICAgICAgICBjb25zdCBbc3RhcnRDZWxsXSA9IGFyZ3M7XG4gICAgICAgIHNwbGl0Q2VsbHMoc3RhcnRDZWxsKTtcbiAgICAgICAgY2xvc2VBbnlNZW51KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0YWJsZU1vZHVsZSAmJiB0eXBlb2YgdGFibGVNb2R1bGVbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YWJsZU1vZHVsZVttZXRob2RdKC4uLmFyZ3MpO1xuICAgICAgICBnZXRBbGxUYWJsZXNXaXRoU3BhbihxdWlsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fYWRkX25ld19yb3dfYWJvdmUnKSwgKCkgPT4gc2FmZUNhbGwoJ2luc2VydFJvd0Fib3ZlJykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfcm93X2JlbG93JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRSb3dCZWxvdycpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9hZGRfbmV3X2NvbHVtbl9sZWZ0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5MZWZ0JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2FkZF9uZXdfY29sdW1uX3JpZ2h0JyksICgpID0+IHNhZmVDYWxsKCdpbnNlcnRDb2x1bW5SaWdodCcpKSk7XG4gICAgY29uc3QgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdmlkZXIuc3R5bGUuaGVpZ2h0ID0gJzFweCc7XG4gICAgZGl2aWRlci5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlZWUnO1xuICAgIGRpdmlkZXIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICBtZW51LmFwcGVuZENoaWxkKGRpdmlkZXIpO1xuICAgIGlmIChzdGFydENlbGwgJiYgZW5kQ2VsbCkge1xuICAgICAgY29uc3Qgc3RhcnRDZWxsU3RvcmUgPSBzdGFydENlbGw7XG4gICAgICBjb25zdCBlbmRDZWxsU3RvcmUgPSBlbmRDZWxsO1xuICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgY29uc3Qgcm93c3BhbiA9IHBhcnNlSW50KHN0YXJ0Q2VsbFN0b3JlLmdldEF0dHJpYnV0ZSgncm93c3BhbicpIHx8ICcxJywgMTApO1xuICAgICAgbGV0IHRvdGFsTWVudSA9IDA7XG4gICAgICBpZiAoc3RhcnRDZWxsICE9PSBlbmRDZWxsKSB7XG4gICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fbWVyZ2VfY2VsbHMnKSwgKCkgPT4gc2FmZUNhbGwoJ21lcmdlQ2VsbHMnLCBzdGFydENlbGxTdG9yZSwgZW5kQ2VsbFN0b3JlKSkpO1xuICAgICAgICB0b3RhbE1lbnUrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydENlbGwgPT09IGVuZENlbGwgJiYgKGNvbHNwYW4gPiAxIHx8IHJvd3NwYW4gPiAxKSkge1xuICAgICAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX3NwbGl0X2NlbGxzJyksICgpID0+IHNhZmVDYWxsKCdzcGxpdENlbGxzJywgc3RhcnRDZWxsU3RvcmUpKSk7XG4gICAgICAgIHRvdGFsTWVudSsrO1xuICAgICAgfVxuXG4gICAgICBpZiAodG90YWxNZW51ID4gMCkge1xuICAgICAgICBjb25zdCBkaXZpZGVyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXZpZGVyMi5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICAgICAgZGl2aWRlcjIuc3R5bGUubWFyZ2luID0gJzRweCAwJztcbiAgICAgICAgbWVudS5hcHBlbmRDaGlsZChkaXZpZGVyMik7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbnUuYXBwZW5kQ2hpbGQoY3JlYXRlTWVudUl0ZW0odHJhbnNsYXRlLmluc3RhbnQoJ2kxOG5fZGVsZXRlX3JvdycpLCAoKSA9PiBzYWZlQ2FsbCgnZGVsZXRlUm93JykpKTtcbiAgICBtZW51LmFwcGVuZENoaWxkKGNyZWF0ZU1lbnVJdGVtKHRyYW5zbGF0ZS5pbnN0YW50KCdpMThuX2RlbGV0ZV9jb2x1bW4nKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZUNvbHVtbicpKSk7XG4gICAgbWVudS5hcHBlbmRDaGlsZChjcmVhdGVNZW51SXRlbSh0cmFuc2xhdGUuaW5zdGFudCgnaTE4bl9kZWxldGVfdGFibGUnKSwgKCkgPT4gc2FmZUNhbGwoJ2RlbGV0ZVRhYmxlJykpKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWVudSk7XG5cbiAgICBjb25zdCBvbk91dHNpZGUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghbWVudS5jb250YWlucyhldi50YXJnZXQgYXMgTm9kZSkgfHwgKGV2LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RhYmxlJykubGVuZ3RoIDwgMCkge1xuICAgICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uT3V0c2lkZSwgdHJ1ZSkpO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBjbG9zZUFueU1lbnUoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICAgIH07XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25TY3JvbGwsIHRydWUpO1xuICB9O1xuXG4gIGZyb21FdmVudDxNb3VzZUV2ZW50PihxdWlsbC5yb290LCAnY29udGV4dG1lbnUnKS5zdWJzY3JpYmUoKGV2OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGlzQ2VsbCA9ICEhdGFyZ2V0LmNsb3Nlc3QoJ3RkLHRoLHRhYmxlLC5xbC10YWJsZScpO1xuICAgIGlmICghaXNDZWxsKSByZXR1cm47XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0cnkge1xuICAgICAgLy8gxq91IHRpw6puIGzhuqV5IGluZGV4IHThu6sgYmxvdCB0xrDGoW5nIOG7qW5nIG5vZGVcbiAgICAgIGNvbnN0IFF1aWxsQW55ID0gUXVpbGwyeCBhcyBhbnk7XG4gICAgICBjb25zdCBibG90ID0gUXVpbGxBbnk/LmZpbmQ/Lih0YXJnZXQpO1xuICAgICAgaWYgKGJsb3QgJiYgdHlwZW9mIGJsb3Qub2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBibG90Lm9mZnNldChxdWlsbC5zY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmFsbGJhY2s6IMSR4bq3dCBzZWxlY3Rpb24gaGnhu4duIHThuqFpIG7hur91IGtow7RuZyB4w6FjIMSR4buLbmggxJHGsOG7o2NcbiAgICAgICAgY29uc3Qgc2VsID0gcXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgICBsYXN0Q29udGV4dEluZGV4ID0gc2VsID8gc2VsLmluZGV4IDogMDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbnN0IHNlbCA9IHF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxhc3RDb250ZXh0SW5kZXggPSBzZWwgPyBzZWwuaW5kZXggOiAwO1xuICAgIH1cbiAgICBxdWlsbC5mb2N1cygpO1xuICAgIG9wZW5Db250ZXh0TWVudShldi5wYWdlWCwgZXYucGFnZVkpO1xuICB9KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFV0aWxzOiBjbGVhciB2w6Agc2VsZWN0IGNlbGxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IGNsZWFyU2VsZWN0aW9uID0gKCkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VsZWN0ZWQtY2VsbCcpLmZvckVhY2goKGMpID0+IHtcbiAgICBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkLWNlbGwnKTtcbiAgfSk7XG59O1xuXG5jb25zdCBzZWxlY3RSYW5nZUNlbGxzID0gKHN0YXJ0OiBIVE1MRWxlbWVudCwgZW5kOiBIVE1MRWxlbWVudCkgPT4ge1xuICBjbGVhclNlbGVjdGlvbigpO1xuICBjb25zdCB0YWJsZSA9IHN0YXJ0LmNsb3Nlc3QoJ3RhYmxlJyk7XG4gIGlmICghdGFibGUgfHwgdGFibGUgIT09IGVuZC5jbG9zZXN0KCd0YWJsZScpKSByZXR1cm47XG5cbiAgY29uc3Qgcm93cyA9IEFycmF5LmZyb20odGFibGUucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gIGNvbnN0IHN0YXJ0Um93ID0gcm93cy5pbmRleE9mKHN0YXJ0LnBhcmVudEVsZW1lbnQgYXMgSFRNTFRhYmxlUm93RWxlbWVudCk7XG4gIGNvbnN0IGVuZFJvdyA9IHJvd3MuaW5kZXhPZihlbmQucGFyZW50RWxlbWVudCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KTtcblxuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydFJvdywgZW5kUm93KTtcbiAgY29uc3QgbWF4Um93ID0gTWF0aC5tYXgoc3RhcnRSb3csIGVuZFJvdyk7XG5cbiAgY29uc3Qgc3RhcnRDb2wgPSBBcnJheS5mcm9tKHN0YXJ0LnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuKS5pbmRleE9mKHN0YXJ0KTtcbiAgY29uc3QgZW5kQ29sID0gQXJyYXkuZnJvbShlbmQucGFyZW50RWxlbWVudCEuY2hpbGRyZW4pLmluZGV4T2YoZW5kKTtcblxuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENvbCwgZW5kQ29sKTtcbiAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XG5cbiAgZm9yIChsZXQgciA9IG1pblJvdzsgciA8PSBtYXhSb3c7IHIrKykge1xuICAgIGNvbnN0IHJvdyA9IHJvd3Nbcl07XG4gICAgY29uc3QgY2VsbHMgPSBBcnJheS5mcm9tKHJvdy5jaGlsZHJlbik7XG4gICAgZm9yIChsZXQgYyA9IG1pbkNvbDsgYyA8PSBtYXhDb2w7IGMrKykge1xuICAgICAgKGNlbGxzW2NdIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZC1jZWxsJyk7XG4gICAgfVxuICB9XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmFibGUgc2VsZWN0aW9uIHRyw6puIHRhYmxlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlVGFibGVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoKHRhcmdldC50YWdOYW1lID09PSAnVEQnICYmIGUuYnV0dG9uICE9PSAyKSB8fCAoZS5idXR0b24gPT09IDIgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NlbGVjdGVkLWNlbGwnKSkpIHtcbiAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBpc1NlbGVjdGluZyA9IHRydWU7XG4gICAgICBzdGFydENlbGwgPSB0YXJnZXQ7XG4gICAgICBlbmRDZWxsID0gdGFyZ2V0O1xuICAgICAgc2VsZWN0UmFuZ2VDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7XG4gICAgaWYgKCFpc1NlbGVjdGluZykgcmV0dXJuO1xuICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyAmJiBzdGFydENlbGwpIHtcbiAgICAgIGVuZENlbGwgPSB0YXJnZXQ7XG4gICAgICBzZWxlY3RSYW5nZUNlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgfVxuICB9KTtcblxuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcbiAgICBpc1NlbGVjdGluZyA9IGZhbHNlO1xuICB9KTtcbn1cbmNvbnN0IG9uT3V0c2lkZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ1REJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RSJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RCT0RZJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RIRUFEJyAmJiB0YXJnZXQudGFnTmFtZSAhPT0gJ1RBQkxFJykge1xuICAgIGlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgc3RhcnRDZWxsID0gbnVsbDtcbiAgICBlbmRDZWxsID0gbnVsbDtcbiAgICBjbGVhclNlbGVjdGlvbigpO1xuICB9XG59O1xuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbk91dHNpZGUsIHRydWUpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZXJnZSBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IG1lcmdlQ2VsbHMgPSAoc3RhcnRDZWxsOiBIVE1MRWxlbWVudCwgZW5kQ2VsbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgY29uc3Qgc3RhcnRDZWxsSW5kZXggPSBzdGFydENlbGwuZ2V0QXR0cmlidXRlKCdpbmRleCcpO1xuICBjb25zdCBlbmRDZWxsSW5kZXggPSBlbmRDZWxsLmdldEF0dHJpYnV0ZSgnaW5kZXgnKTtcbiAgY29uc3Qgc3RhcnRDZWxsUm93ID0gcGFyc2VJbnQoc3RhcnRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IGVuZENlbGxSb3cgPSBwYXJzZUludChlbmRDZWxsSW5kZXg/LnNwbGl0KCctJylbMF0gfHwgJzAnLCAxMCk7XG4gIGNvbnN0IHN0YXJ0Q2VsbENvbCA9IHBhcnNlSW50KHN0YXJ0Q2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBlbmRDZWxsQ29sID0gcGFyc2VJbnQoZW5kQ2VsbEluZGV4Py5zcGxpdCgnLScpWzFdIHx8ICcwJywgMTApO1xuICBjb25zdCBtaW5Sb3cgPSBNYXRoLm1pbihzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydENlbGxSb3csIGVuZENlbGxSb3cpO1xuICBjb25zdCBtaW5Db2wgPSBNYXRoLm1pbihzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuICBjb25zdCBtYXhDb2wgPSBNYXRoLm1heChzdGFydENlbGxDb2wsIGVuZENlbGxDb2wpO1xuXG4gIGNvbnN0IHJvd3MgPSBzdGFydENlbGwuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgbWluUm93IHx8IHJvd0luZGV4ID4gbWF4Um93KSByZXR1cm47XG5cbiAgICBjb25zdCBjZWxscyA9IHJvd0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkLCB0aCcpO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGxFbCwgY29sSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb2xJbmRleCA8IG1pbkNvbCB8fCBjb2xJbmRleCA+IG1heENvbCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSBtaW5Sb3cgJiYgY29sSW5kZXggPT09IG1pbkNvbCkge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgU3RyaW5nKG1heENvbCAtIG1pbkNvbCArIDEpKTtcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhtYXhSb3cgLSBtaW5Sb3cgKyAxKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTcGxpdCBjZWxsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0Q2VsbHMoY2VsbFNwbGl0OiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBpbmRleCA9IGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ2luZGV4Jyk7XG4gIGxldCBjb2xTcGFuID0gcGFyc2VJbnQoY2VsbFNwbGl0LmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApO1xuICBsZXQgcm93U3BhbiA9IHBhcnNlSW50KGNlbGxTcGxpdC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKTtcbiAgY29uc3QgdG90YWxDZWxsU3BsaXQgPSByb3dTcGFuICogY29sU3BhbjtcbiAgbGV0IGNvdW50Q2VsbFNwbGl0ID0gMDtcbiAgY29uc3Qgcm93U3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVswXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sU3RhcnQgPSBwYXJzZUludChpbmRleD8uc3BsaXQoJy0nKVsxXSB8fCAnMCcsIDEwKTtcbiAgY29uc3QgY29sSW5jcmVtZW50ID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGNvbnN0IHJvd0luY3JlbWVudCA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIGNvbnN0IHJvd3MgPSBjZWxsU3BsaXQuY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvckFsbCgndHInKTtcbiAgcm93cz8uZm9yRWFjaCgocm93RWwsIHJvd0luZGV4KSA9PiB7XG4gICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQpIHJldHVybjtcblxuICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbEVsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgaWYgKHJvd0luZGV4IDwgcm93U3RhcnQgfHwgY29sSW5kZXggPCBjb2xTdGFydCB8fCByb3dTdGFydCArIHJvd1NwYW4gPCByb3dJbmRleCB8fCBjb2xTdGFydCArIGNvbFNwYW4gPCBjb2xJbmRleCB8fCBjb3VudENlbGxTcGxpdCA+PSB0b3RhbENlbGxTcGxpdCkgcmV0dXJuO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSByb3dTdGFydCAmJiBjb2xJbmRleCA9PT0gY29sU3RhcnQpIHtcbiAgICAgICAgY291bnRDZWxsU3BsaXQrKztcbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgnY29sc3BhbicsICcxJyk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWNlbGxFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgIGlmICghcm93SW5jcmVtZW50Lmhhcyhyb3dJbmRleCkpIHtcbiAgICAgICAgICByb3dTcGFuKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb2xJbmNyZW1lbnQuaGFzKGNvbEluZGV4KSkge1xuICAgICAgICAgIGNvbFNwYW4rKztcbiAgICAgICAgfVxuICAgICAgICByb3dJbmNyZW1lbnQuYWRkKHJvd0luZGV4KTtcbiAgICAgICAgY29sSW5jcmVtZW50LmFkZChjb2xJbmRleCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNlbGxFbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgIGNvdW50Q2VsbFNwbGl0Kys7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0QWxsVGFibGVzV2l0aFNwYW4gPSAocXVpbGw6IGFueSkgPT4ge1xuICBjb25zdCByb290ID0gcXVpbGwucm9vdDtcblxuICAvLyBUw6xtIHThuqV0IGPhuqMgdGFibGUgdHJvbmcgcXVpbGxcbiAgY29uc3QgdGFibGVFbHMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJyk7XG5cbiAgdGFibGVFbHMuZm9yRWFjaCgodGFibGVFbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGFibGVFbC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpO1xuICAgIHJvd3MuZm9yRWFjaCgocm93RWwsIHJJbmRleCkgPT4ge1xuICAgICAgcm93RWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH1gKTtcbiAgICAgIGNvbnN0IGNlbGxzID0gcm93RWwucXVlcnlTZWxlY3RvckFsbCgndGQsIHRoJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChjZWxsRWwsIGNJbmRleCkgPT4ge1xuICAgICAgICBjZWxsRWwuc2V0QXR0cmlidXRlKCdpbmRleCcsIGAke3JJbmRleH0tJHtjSW5kZXh9YCk7XG4gICAgICAgIGNvbnN0IHJvd3NwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCk7XG4gICAgICAgIGNvbnN0IGNvbHNwYW4gPSBwYXJzZUludChjZWxsRWwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJykgfHwgJzEnLCAxMCk7XG5cbiAgICAgICAgY2VsbEVsLnNldEF0dHJpYnV0ZSgncm93c3BhbicsIFN0cmluZyhyb3dzcGFuKSk7XG4gICAgICAgIGNlbGxFbC5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCBTdHJpbmcoY29sc3BhbikpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCByZWdpc3RlciA9IGZhbHNlO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXVpbGwyeCA9ICgpID0+IHtcbiAgaWYgKHJlZ2lzdGVyKSByZXR1cm47XG4gIHJlZ2lzdGVyID0gdHJ1ZTtcblxuICBjb25zdCBRdWlsbCA9IFF1aWxsMnggYXMgYW55O1xuXG4gIGNvbnN0IHNpemUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcbiAgY29uc3QgYWxpZ25TdHlsZSA9IFF1aWxsLmltcG9ydCgnYXR0cmlidXRvcnMvc3R5bGUvYWxpZ24nKTtcbiAgY29uc3QgaXRhbGljID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2l0YWxpYycpO1xuICBjb25zdCBib2xkID0gUXVpbGwuaW1wb3J0KCdmb3JtYXRzL2JvbGQnKTtcbiAgY29uc3QgaWNvbnMgPSBRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJyk7XG4gIHNpemUud2hpdGVsaXN0ID0gZm9udFNpemVXaGl0ZUxpc3QoKTtcblxuICBpdGFsaWMudGFnTmFtZSA9ICdpJztcbiAgYm9sZC50YWdOYW1lID0gJ2InO1xuXG4gIFF1aWxsLnJlZ2lzdGVyKGJvbGQsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihpdGFsaWMsIHRydWUpO1xuICBRdWlsbC5yZWdpc3RlcihzaXplLCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoYWxpZ25TdHlsZSwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKFF1aWxsTWVudGlvbjJ4QmxvdCwgdHJ1ZSk7XG4gIFF1aWxsLnJlZ2lzdGVyKEN1c3RvbUltYWdlMnhCbG90LCB0cnVlKTtcbiAgUXVpbGwucmVnaXN0ZXIoJ21vZHVsZXMvcmVzaXplJywgUmVzaXplTW9kdWxlKTtcbiAgWy4uLmljb25MaXN0KCldLmZvckVhY2goKGVsZW1lbnQpID0+IHNldChpY29ucywgZWxlbWVudC5rZXksIGA8c3BhbiBjbGFzcz1cIiR7ZWxlbWVudC5pY29ufSAke2VsZW1lbnQua2V5ID09PSAndW5MaW5rJyA/ICdob3Zlcjp0ZXh0LVsjZWUyZDQxXSAnIDogJ2hvdmVyOnRleHQtW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMSldJ30gdGV4dC1bMTZweF0gdGV4dC1bIzZhNzM4M11cIj48L3NwYW4+YCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRW1wdHlRdWlsbDJ4ID0gKHF1aWxsOiBRdWlsbDJ4IHwgbnVsbCkgPT4ge1xuICBjb25zdCByb290RWxlbWVudCA9IHF1aWxsPy5yb290O1xuICBpZiAoIXJvb3RFbGVtZW50KSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgaHRtbCA9IHJvb3RFbGVtZW50LmlubmVySFRNTC50cmltKCk7XG4gIHJldHVybiBodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8cD48L3A+JyB8fCBodG1sID09PSAnJyB8fCBodG1sID09PSAnPHA+PHNwYW4gY2xhc3M9XCJxbC1jdXJzb3JcIj48L3NwYW4+PGJyPjwvcD4nIHx8IHJvb3RFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygncWwtYmxhbmsnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIVE1MRnJvbURlbHRhT2ZRdWlsbDJ4ID0gKFxuICBkZWx0YTogRGVsdGEsXG4gIG9wdGlvbnM/OiB7XG4gICAgZ2V0Um9vdEh0bWw/OiBib29sZWFuO1xuICAgIHJlcGxhY2VOZXdMaW5lVG8/OiBzdHJpbmc7XG4gICAgcmVwbGFjZVRhZ0JSVG8/OiBzdHJpbmc7XG4gICAgcmVwbGFjZUJyVG9EaXY/OiBib29sZWFuO1xuICAgIGZ1bmN0aW9uUmVwbGFjZURlbHRhPzogKG9wOiBEZWx0YSkgPT4gdm9pZDtcbiAgICByZXBsYWNlVGFncz86IHtcbiAgICAgIHRhZzogc3RyaW5nO1xuICAgICAgcmVwbGFjZVRvOiBzdHJpbmc7XG4gICAgfVtdO1xuICB9XG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoIWRlbHRhPy5vcHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoIXF1aWxsMngpIHtcbiAgICBxdWlsbDJ4ID0gbmV3IFF1aWxsMngoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICB9XG4gIGNvbnN0IHsgcmVwbGFjZU5ld0xpbmVUbyA9ICc8YnI+JywgcmVwbGFjZVRhZ0JSVG8sIHJlcGxhY2VUYWdzLCByZXBsYWNlQnJUb0RpdiB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApO1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPC8ke3RhZy50YWd9PmAsICdnJyksIGA8LyR7dGFnLnJlcGxhY2VUb30+YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcXVpbGwyeC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwyeC5yb290LmlubmVySFRNTCA6IHF1aWxsMngucm9vdC5maXJzdEVsZW1lbnRDaGlsZD8uaW5uZXJIVE1MO1xuICBpZiAocmVwbGFjZUJyVG9EaXYpIHtcbiAgICBodG1sVGV4dCA9IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MoaHRtbFRleHQgfHwgJycpO1xuICB9XG4gIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHF1aWxsMnggPSBudWxsO1xuICB9LCAxMDAwMCk7XG4gIHJldHVybiBkZWNvZGVFc2NhcGVIdG1sKGh0bWxUZXh0IHx8ICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWx0YU9mUXVpbGwyeEZyb21IVE1MID0gYXN5bmMgKGh0bWw6IHN0cmluZyk6IFByb21pc2U8RGVsdGE+ID0+IHtcbiAgaWYgKCFxdWlsbDJ4KSB7XG4gICAgcXVpbGwyeCA9IG5ldyBRdWlsbDJ4KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcbiAgfVxuICBxdWlsbDJ4LnJvb3QuaW5uZXJIVE1MID0gaHRtbDtcblxuICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRpbWVyKDEwMDApKTtcbiAgY2xlYXJUaW1lb3V0KHRpbWVvdXQxKTtcbiAgdGltZW91dDEgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBxdWlsbDJ4ID0gbnVsbDtcbiAgfSwgMTAwMDApO1xuICByZXR1cm4gcXVpbGwyeC5nZXRDb250ZW50cygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MgPSAoaHRtbDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgQlJFQUtfVE9LRU4gPSAnPDw8QlJFQUs+Pj4nO1xuICAvLyBCxrDhu5tjIDE6IHRoYXkgPGJyPiB0aMOgbmggdG9rZW4gdOG6oW1cbiAgY29uc3Qgbm9ybWFsaXplZEh0bWwgPSBodG1sLnJlcGxhY2UoLzxiclxccypcXC8/Pi9naSwgQlJFQUtfVE9LRU4pO1xuXG4gIC8vIELGsOG7m2MgMjogdMOhY2ggdGhlbyB0b2tlblxuICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZWRIdG1sLnNwbGl0KEJSRUFLX1RPS0VOKTtcblxuICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gIGNvbnN0IGRpdnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByYXcgb2YgcGFydHMpIHtcbiAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgICBpZiAoIXRyaW1tZWQpIGNvbnRpbnVlO1xuXG4gICAgLy8gcGFyc2UgbeG7l2kgcGjhuqduIG5o4buPIG5oxrAgbeG7mXQgZG9jdW1lbnQgcmnDqm5nXG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0cmltbWVkLCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgYm9keSA9IGRvYy5ib2R5O1xuXG4gICAgLy8gTOG6pXkgbOG6oWkgbuG7mWkgZHVuZyBiw6puIHRyb25nIGJvZHlcbiAgICBkaXZzLnB1c2goYDxkaXY+JHtib2R5LmlubmVySFRNTH08L2Rpdj5gKTtcbiAgfVxuXG4gIHJldHVybiBkaXZzLmpvaW4oJycpO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NQYXN0ZURhdGEgPSBhc3luYyAoXG4gIGU6IENsaXBib2FyZEV2ZW50LFxuICBjb25maWc6IHtcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBoYW5kbGVyUGFzdGVGaWxlPzogKGZpbGVzOiBGaWxlTGlzdCkgPT4gdm9pZDtcbiAgICBjYWxsQmFjaz86IChwb3NpdG9uUmV0dXJuOiAnZmlsZScgfCAncmFuZ2UnIHwgJ2NvbnRlbnQnIHwgJ25vLWNvbnRlbnQnKSA9PiB2b2lkO1xuICB9XG4pID0+IHtcbiAgY29uc3QgZWxlbWVudCA9IGNvbmZpZy5lbGVtZW50O1xuICBjb25zdCBmaWxlcyA9IGUuY2xpcGJvYXJkRGF0YT8uZmlsZXM7XG4gIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbmZpZy5oYW5kbGVyUGFzdGVGaWxlPy4oZmlsZXMpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdmaWxlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEzGsHUgc2VsZWN0aW9uIFRSxq/hu5pDIGtoaSBwcmV2ZW50IGRlZmF1bHRcbiAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICBsZXQgc2F2ZWRSYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIC8vIENo4buJIGzGsHUgbuG6v3UgcmFuZ2UgbuG6sW0gdHJvbmcgY29udGVudFRleHQgZWxlbWVudFxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xuICAgIGNvbnN0IGlzSW5Db250ZW50RWxlbWVudCA9IGVsZW1lbnQuY29udGFpbnMoY29udGFpbmVyLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSA/IGNvbnRhaW5lci5wYXJlbnROb2RlIDogY29udGFpbmVyKTtcbiAgICBpZiAoaXNJbkNvbnRlbnRFbGVtZW50KSB7XG4gICAgICBzYXZlZFJhbmdlID0gcmFuZ2UuY2xvbmVSYW5nZSgpO1xuICAgIH1cbiAgfVxuICAvLyBQcmV2ZW50IGRlZmF1bHQgxJHhu4MgdOG7sSB44butIGzDvSBwYXN0ZVxuICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIGNvbnN0IGh0bWxDb250ZW50ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L2h0bWwnKSB8fCAnJztcbiAgY29uc3QgcGxhaW5UZXh0ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJykgfHwgJyc7XG4gIGxldCBjb250ZW50VG9JbnNlcnQgPSAocGxhaW5UZXh0IHx8ICcnKS5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcbiAgaWYgKGh0bWxDb250ZW50KSB7XG4gICAgY29uc3QgZGVsdGEgPSBhd2FpdCBnZXREZWx0YU9mUXVpbGwyeEZyb21IVE1MKGh0bWxDb250ZW50KTtcbiAgICBjb250ZW50VG9JbnNlcnQgPSBnZXRIVE1MRnJvbURlbHRhT2ZRdWlsbDJ4KGRlbHRhKTtcbiAgfVxuXG4gIGlmICghY29udGVudFRvSW5zZXJ0KSB7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ25vLWNvbnRlbnQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2F2ZWRSYW5nZSkge1xuICAgIGluc2VydENvbnRlbnRXaXRoUmFuZ2UoY29udGVudFRvSW5zZXJ0LCBzYXZlZFJhbmdlLCBlbGVtZW50KTtcbiAgICBjb25maWcuY2FsbEJhY2s/LigncmFuZ2UnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudFRvSW5zZXJ0O1xuICBjb25maWcuY2FsbEJhY2s/LignY29udGVudCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENvbnRlbnRXaXRoUmFuZ2UgPSAoY29udGVudDogc3RyaW5nLCBzYXZlZFJhbmdlOiBSYW5nZSwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICBpZiAoIXNlbGVjdGlvbikge1xuICAgIC8vIEZhbGxiYWNrOiBhcHBlbmQgdsOgbyBjdeG7kWlcbiAgICBlbGVtZW50LmlubmVySFRNTCArPSBjb250ZW50O1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBSZXN0b3JlIHNlbGVjdGlvblxuICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIHNlbGVjdGlvbi5hZGRSYW5nZShzYXZlZFJhbmdlKTtcbiAgLy8gWMOzYSBu4buZaSBkdW5nIMSRw6Mgc2VsZWN0IChu4bq/dSBjw7MpXG4gIHNhdmVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgLy8gVOG6oW8gZG9jdW1lbnQgZnJhZ21lbnQgdOG7qyBIVE1MIGNvbnRlbnRcbiAgY29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB0ZW1wRGl2LmlubmVySFRNTCA9IGNvbnRlbnQ7XG4gIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB3aGlsZSAodGVtcERpdi5maXJzdENoaWxkKSB7XG4gICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQodGVtcERpdi5maXJzdENoaWxkKTtcbiAgfVxuICAvLyBJbnNlcnQgZnJhZ21lbnQgdOG6oWkgduG7iyB0csOtIHJhbmdlXG4gIHNhdmVkUmFuZ2UuaW5zZXJ0Tm9kZShmcmFnbWVudCk7XG4gIC8vIERpIGNodXnhu4NuIGN1cnNvciDEkeG6v24gY3Xhu5FpIG7hu5lpIGR1bmcgduG7q2EgaW5zZXJ0XG4gIGlmIChmcmFnbWVudC5sYXN0Q2hpbGQpIHtcbiAgICBzYXZlZFJhbmdlLnNldFN0YXJ0QWZ0ZXIoZnJhZ21lbnQubGFzdENoaWxkKTtcbiAgfVxuICBzYXZlZFJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIHNlbGVjdGlvbi5hZGRSYW5nZShzYXZlZFJhbmdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0U3RhbmRhcmRMaXN0ID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRvbSA9IGdldERvY3VtZW50QnlTdHJpbmcoaHRtbCk7XG4gIGNvbnN0IGxpRWxlbWVudHMgPSBkb20ucXVlcnlTZWxlY3RvckFsbCgnbGlbZGF0YS1saXN0PVwiYnVsbGV0XCJdOm5vdCh1bCBsaSknKTtcbiAgbGlFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQuY2xvc2VzdCgndWwnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7XG4gICAgY29uc3QgZWxlbWVudENsb25lID0gZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdWwuc2V0QXR0cmlidXRlKCdkYXRhLWxpc3QnLCAnZGlzYycpO1xuICAgIGlmICghZWxlbWVudENsb25lLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpKSB7XG4gICAgICB1bC5zdHlsZS5zZXRQcm9wZXJ0eSgncGFkZGluZy1sZWZ0JywgJzEuNWVtJywgJ2ltcG9ydGFudCcpO1xuICAgIH1cbiAgICB1bC5zdHlsZS5zZXRQcm9wZXJ0eSgnbGlzdC1zdHlsZS10eXBlJywgJ2Rpc2MnLCAnaW1wb3J0YW50Jyk7XG4gICAgdWwuYXBwZW5kQ2hpbGQoZWxlbWVudENsb25lKTtcbiAgICBlbGVtZW50LnJlcGxhY2VXaXRoKHVsKTtcbiAgfSk7XG4gIHJldHVybiBkb20uYm9keS5pbm5lckhUTUw7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFN0YW5kYXJkTGlzdFRvUXVpbGwyeCA9IChodG1sOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkb20gPSBnZXREb2N1bWVudEJ5U3RyaW5nKGh0bWwpO1xuICBjb25zdCB1bEVsZW1lbnRzID0gZG9tLnF1ZXJ5U2VsZWN0b3JBbGwoJ3VsW2RhdGEtbGlzdD1cImRpc2NcIl0nKTtcbiAgdWxFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYnVsbGV0TGlzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaVtkYXRhLWxpc3Q9XCJidWxsZXRcIl0nKTtcbiAgICBpZiAoIWJ1bGxldExpcy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICBidWxsZXRMaXMuZm9yRWFjaCgobGkpID0+IHtcbiAgICAgIHBhcmVudD8uaW5zZXJ0QmVmb3JlKGxpLCBlbGVtZW50KTtcbiAgICB9KTtcblxuICAgIGVsZW1lbnQucmVtb3ZlKCk7XG4gIH0pO1xuICByZXR1cm4gZG9tLmJvZHkuaW5uZXJIVE1MO1xufTtcbiJdfQ==