@libs-ui/components-inputs-quill 0.2.356-4 → 0.2.356-41
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.
- package/blots-custom/div.component.d.ts +1 -1
- package/blots-custom/mention.component.d.ts +3 -3
- package/esm2022/blots-custom/div.component.mjs +1 -1
- package/esm2022/blots-custom/mention.component.mjs +1 -1
- package/esm2022/link/link.component.mjs +2 -2
- package/esm2022/quill.component.mjs +16 -15
- package/esm2022/upload-image/upload-image.component.mjs +4 -36
- package/esm2022/utils/quill.define.mjs +1 -1
- package/fesm2022/libs-ui-components-inputs-quill.mjs +86 -117
- package/fesm2022/libs-ui-components-inputs-quill.mjs.map +1 -1
- package/link/link.component.d.ts +1 -1
- package/package.json +19 -17
- package/quill.component.d.ts +15 -15
|
@@ -15,42 +15,10 @@ 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
20
|
async handlerSaveImage() {
|
|
29
|
-
|
|
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
|
-
// }
|
|
21
|
+
return;
|
|
54
22
|
}
|
|
55
23
|
handlerEventModal(event) {
|
|
56
24
|
if (event === 'close') {
|
|
@@ -58,10 +26,10 @@ export class LibsUiComponentsInputsQuillUploadImageComponent {
|
|
|
58
26
|
}
|
|
59
27
|
}
|
|
60
28
|
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
|
|
29
|
+
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
30
|
}
|
|
63
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsInputsQuillUploadImageComponent, decorators: [{
|
|
64
32
|
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
|
|
33
|
+
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
34
|
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWltYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9pbnB1dHMvcXVpbGwvc3JjL3VwbG9hZC1pbWFnZS91cGxvYWQtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSw4QkFBOEIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQzs7QUFXN0YsTUFBTSxPQUFPLCtDQUErQztJQUNoRCxZQUFZLEdBQUcsTUFBTSxDQUFpQjtRQUM5QztZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1NBQ3pDO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1NBQ3RDO0tBQ0YsQ0FBQyxDQUFDO0lBQ08sT0FBTyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNsQywyQkFBMkIsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUUvQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO0lBRTlELFFBQVEsR0FBRyxNQUFNLEVBQWlCLENBQUM7SUFFcEMsS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixPQUFPO0lBQ1QsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQXVCO1FBQ2pELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7d0dBM0JVLCtDQUErQzs0RkFBL0MsK0NBQStDLDRlQ2I1RCx1aEJBZUEsNENESlksOEJBQThCOzs0RkFFN0IsK0NBQStDO2tCQVIzRCxTQUFTOytCQUVFLDhDQUE4QyxjQUU1QyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJ1dHRvbiB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c01vZGFsQ29tcG9uZW50LCBUWVBFX01PREFMX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1tb2RhbCc7XG5pbXBvcnQgeyBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWlucHV0cy1xdWlsbC11cGxvYWRfaW1hZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtMaWJzVWlDb21wb25lbnRzTW9kYWxDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzSW5wdXRzUXVpbGxVcGxvYWRJbWFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBidXR0b25Gb290ZXIgPSBzaWduYWw8QXJyYXk8SUJ1dHRvbj4+KFtcbiAgICB7XG4gICAgICB0eXBlOiAnYnV0dG9uLXRoaXJkJyxcbiAgICAgIGxhYmVsOiAnaTE4bl9jYW5jZWwnLFxuICAgICAgYWN0aW9uOiBhc3luYyAoKSA9PiB0aGlzLm91dENsb3NlLmVtaXQoKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnaTE4bl9zYXZlJyxcbiAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5oYW5kbGVyU2F2ZUltYWdlKCksXG4gICAgfSxcbiAgXSk7XG4gIHByb3RlY3RlZCBkaXNhYmxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaWdub3JlQ29tbXVuaWNhdGVNaWNyb0V2ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSB1cGxvYWRJbWFnZUNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPElRdWlsbFVwbG9hZEltYWdlQ29uZmlnPigpO1xuXG4gIHJlYWRvbmx5IG91dENsb3NlID0gb3V0cHV0PHN0cmluZyB8IHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVyU2F2ZUltYWdlKCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRXZlbnRNb2RhbChldmVudDogVFlQRV9NT0RBTF9FVkVOVCkge1xuICAgIGlmIChldmVudCA9PT0gJ2Nsb3NlJykge1xuICAgICAgdGhpcy5vdXRDbG9zZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGlic191aS1jb21wb25lbnRzLW1vZGFsXG4gIFt0aXRsZV09XCInaTE4bl91cGxvYWRfaW1hZ2UnXCJcbiAgW21vZGVdPVwiJ2NlbnRlcidcIlxuICBbd2lkdGhdPVwiJzU5OHB4J1wiXG4gIFtoZWFkZXJDb25maWddPVwieyBpZ25vcmVIZWFkZXJUaGVtZTogdHJ1ZSB9XCJcbiAgW21heEhlaWdodF09XCInY2FsYygxMDAlIC0gMTAwcHgpJ1wiXG4gIFtoZWlnaHRdPVwiJ2F1dG8nXCJcbiAgW3pJbmRleF09XCJ1cGxvYWRJbWFnZUNvbmZpZygpLnpJbmRleCB8fCAxMjAzXCJcbiAgW2Rpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgW2lnbm9yZUNvbW11bmljYXRlTWljcm9FdmVudF09XCJpZ25vcmVDb21tdW5pY2F0ZU1pY3JvRXZlbnQoKVwiXG4gIFtidXR0b25zRm9vdGVyXT1cImJ1dHRvbkZvb3RlcigpXCJcbiAgKG91dEV2ZW50KT1cImhhbmRsZXJFdmVudE1vZGFsKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImxpYnMtdWktbW9kYWwtYm9keS1jdXN0b21cIj5cbiAgPC9kaXY+XG48L2xpYnNfdWktY29tcG9uZW50cy1tb2RhbD5cbiJdfQ==
|
|
@@ -620,4 +620,4 @@ export const insertContentWithRange = (content, savedRange, element) => {
|
|
|
620
620
|
selection.removeAllRanges();
|
|
621
621
|
selection.addRange(savedRange);
|
|
622
622
|
};
|
|
623
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZELElBQUksS0FBSyxHQUFpQixJQUFJLENBQUM7QUFDL0IsSUFBSSxPQUFPLEdBQXVCLFNBQVMsQ0FBQztBQUM1QyxJQUFJLFFBQVEsR0FBdUIsU0FBUyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7UUFDakgsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrRkFBK0YsRUFBRTtRQUN2SCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdHQUFnRyxFQUFFO1FBQ3pILEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUdBQWlHLEVBQUU7S0FDNUgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFL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QUM7UUFDMUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELG1DQUFtQztJQUNuQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLGdEQUFnRDtJQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbGlzdCc7XG5pbXBvcnQgeyBJSHR0cFJlcXVlc3RDb25maWcsIHJldHVybkxpc3RPYmplY3QgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3QnO1xuaW1wb3J0IHsgY29udmVydEZpbGVUb0Jhc2U2NF9PYmplY3RVcmwsIGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuaW1wb3J0IERlbHRhIGZyb20gJ3F1aWxsLWRlbHRhJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzL2ludGVybmFsL2xhc3RWYWx1ZUZyb20nO1xuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvdGltZXInO1xuaW1wb3J0IHsgSVF1aWxsTGluaywgSVF1aWxsVG9vbGJhckNvbmZpZywgSVF1aWxsVXBsb2FkSW1hZ2VDb25maWcsIFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcbmxldCBxdWlsbDogUXVpbGwgfCBudWxsID0gbnVsbDtcbmxldCB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5sZXQgdGltZW91dDI6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGxpc3REYXRhQWxpZ24gPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWxlZnQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdyaWdodCcsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdjZW50ZXInLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWNlbnRlciB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2p1c3RpZnknLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnkgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZvbnQgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ1NhbnMgU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdzZXJpZicsIGxhYmVsOiAnU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdtb25vc3BhY2UnLCBsYWJlbDogJ01vbm9zcGFjZScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0SGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgbGFiZWw6ICdOb3JtYWwnIH0sXG4gICAgeyBrZXk6ICcxJywgbGFiZWw6ICdIZWFkaW5nIDEnIH0sXG4gICAgeyBrZXk6ICcyJywgbGFiZWw6ICdIZWFkaW5nIDInIH0sXG4gICAgeyBrZXk6ICczJywgbGFiZWw6ICdIZWFkaW5nIDMnIH0sXG4gICAgeyBrZXk6ICc0JywgbGFiZWw6ICdIZWFkaW5nIDQnIH0sXG4gICAgeyBrZXk6ICc1JywgbGFiZWw6ICdIZWFkaW5nIDUnIH0sXG4gICAgeyBrZXk6ICc2JywgbGFiZWw6ICdIZWFkaW5nIDYnIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0FsaWduID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0RGF0YUFsaWduKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0Q2xhc3NJdGVtOiAoKSA9PiAnIXB4LVs4cHhdICFweS1bNHB4XScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IGA8aSBjbGFzcz0nZmxleCAke2l0ZW0uaWNvbn0nPjwvaT5gLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdGb250ID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0Rm9udCgpKSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2xpc3QnLFxuICAgICAgYXJndW1lbnRzVmFsdWU6IFtdLFxuICAgIH0pLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAna2V5JyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gaXRlbS5sYWJlbCxcbiAgICAgIGlnbm9yZUljb25TZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnSGVhZGVyID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0SGVhZGVyKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbT8ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDFyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDJyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDNyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDRyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc1JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc2JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWw7XG4gICAgICB9LFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvb2xCYXJPcHRpb25zID0gKG1vZGU6IFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiwgaGFzSWNvbkltYWdlOiBib29sZWFuLCBoYXNJY29uUGVyc29uYWxpemU6IGJvb2xlYW4pOiBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPlxuICApLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGlmICghaXRlbS5tb2RlPy5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvbkltYWdlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAncGVyc29uYWxpemUnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvblBlcnNvbmFsaXplO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgaWNvbkxpc3QgPSAoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBrZXk6ICdib2xkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWJvbGQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaXRhbGljJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWl0YWxpYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRlcmxpbmUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItdW5kZXJsaW5lZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbWFnZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWltYWdlLXNvbGlkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2xpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi11bmRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3JlZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1yZWRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0cmlrZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1zdHJpa2UtdGhyb3VnaCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdibG9ja3F1b3RlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tcXVvdGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnb3JkZXJlZCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpc3QtbnVtYmVyZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYnVsbGV0JyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1idWxsZXRlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLWJhY2tncm91bmQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29sb3InLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItdGV4dCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuLTEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtZGVjcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaW5kZW50LisxJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW5kZW50LWluY3JlYXNlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLicsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWxlZnQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uY2VudGVyJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLnJpZ2h0JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uanVzdGlmeScsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnknLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5MaW5rJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGluay1icm9rZW4nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1vamknLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1mYWNlLXNtaWxlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3RhYmxlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdGFibGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY2hlY2snLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YXNrLWxpc3QnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndmlkZW8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi12aWRlby1vdXRsaW5lJyxcbiAgICB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlQ29uZmlnRGVmYXVsdCA9ICgpOiBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyA9PiB7XG4gIHJldHVybiB7XG4gICAgbW9kZUN1c3RvbTogZmFsc2UsXG4gICAgekluZGV4OiAxMjAyLFxuICAgIHNob3dJY29uOiB0cnVlLFxuICAgIG1heEltYWdlU2l6ZTogNSAqIDEwMjQgKiAxMDI0LFxuICAgIG9ubHlBY2NlcHRJbWFnZUh0dHBzTGluazogZmFsc2UsXG4gICAgZnVuY3Rpb25VcGxvYWRJbWFnZTogYXN5bmMgKGZpbGVzOiBBcnJheTxGaWxlPikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGRhdGEucHVzaChhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybChmaWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmtEZWZhdWx0ID0gKCk6IElRdWlsbExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwgPSAoXG4gIGRlbHRhOiBEZWx0YSxcbiAgb3B0aW9ucz86IHtcbiAgICBnZXRSb290SHRtbD86IGJvb2xlYW47XG4gICAgcmVwbGFjZU5ld0xpbmVUbz86IHN0cmluZztcbiAgICByZXBsYWNlVGFnQlJUbz86IHN0cmluZztcbiAgICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gICAgZnVuY3Rpb25SZXBsYWNlRGVsdGE/OiAob3A6IERlbHRhKSA9PiB2b2lkO1xuICAgIHJlcGxhY2VUYWdzPzoge1xuICAgICAgdGFnOiBzdHJpbmc7XG4gICAgICByZXBsYWNlVG86IHN0cmluZztcbiAgICB9W107XG4gIH1cbik6IHN0cmluZyA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHt0YWcudGFnfT5gLCAnZycpLCBgPC8ke3RhZy5yZXBsYWNlVG99PmApIGFzIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBxdWlsbC5zZXRDb250ZW50cyhkZWx0YSk7XG4gIGxldCBodG1sVGV4dCA9IG9wdGlvbnM/LmdldFJvb3RIdG1sID8gcXVpbGwucm9vdC5pbm5lckhUTUwgOiBxdWlsbC5yb290LmZpcnN0RWxlbWVudENoaWxkPy5pbm5lckhUTUw7XG4gIGlmIChyZXBsYWNlQnJUb0Rpdikge1xuICAgIGh0bWxUZXh0ID0gY29udmVydEh0bWxUb0RpdkJsb2NrcyhodG1sVGV4dCB8fCAnJyk7XG4gIH1cbiAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgcXVpbGwgPSBudWxsO1xuICB9LCAxMDAwMCk7XG4gIHJldHVybiBkZWNvZGVFc2NhcGVIdG1sKGh0bWxUZXh0IHx8ICcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHRtbFRvRGl2QmxvY2tzID0gKGh0bWw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IEJSRUFLX1RPS0VOID0gJzw8PEJSRUFLPj4+JztcbiAgLy8gQsaw4bubYyAxOiB0aGF5IDxicj4gdGjDoG5oIHRva2VuIHThuqFtXG4gIGNvbnN0IG5vcm1hbGl6ZWRIdG1sID0gaHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIEJSRUFLX1RPS0VOKTtcblxuICAvLyBCxrDhu5tjIDI6IHTDoWNoIHRoZW8gdG9rZW5cbiAgY29uc3QgcGFydHMgPSBub3JtYWxpemVkSHRtbC5zcGxpdChCUkVBS19UT0tFTik7XG5cbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICBjb25zdCBkaXZzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmF3IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcblxuICAgIC8vIHBhcnNlIG3hu5dpIHBo4bqnbiBuaOG7jyBuaMawIG3hu5l0IGRvY3VtZW50IHJpw6puZ1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodHJpbW1lZCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keTtcblxuICAgIC8vIEzhuqV5IGzhuqFpIG7hu5lpIGR1bmcgYsOqbiB0cm9uZyBib2R5XG4gICAgZGl2cy5wdXNoKGA8ZGl2PiR7Ym9keS5pbm5lckhUTUx9PC9kaXY+YCk7XG4gIH1cblxuICByZXR1cm4gZGl2cy5qb2luKCcnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWx0YU9mUXVpbGxGcm9tSFRNTCA9IGFzeW5jIChodG1sOiBzdHJpbmcpOiBQcm9taXNlPERlbHRhPiA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgcXVpbGwucm9vdC5pbm5lckhUTUwgPSBodG1sO1xuXG4gIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMTAwMCkpO1xuICBjbGVhclRpbWVvdXQodGltZW91dDIpO1xuICB0aW1lb3V0MiA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHF1aWxsID0gbnVsbDtcbiAgfSwgMTAwMDApO1xuICByZXR1cm4gcXVpbGwuZ2V0Q29udGVudHMoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzUGFzdGVEYXRhID0gYXN5bmMgKFxuICBlOiBDbGlwYm9hcmRFdmVudCxcbiAgY29uZmlnOiB7XG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgaGFuZGxlclBhc3RlRmlsZT86IChmaWxlczogRmlsZUxpc3QpID0+IHZvaWQ7XG4gICAgY2FsbEJhY2s/OiAocG9zaXRvblJldHVybjogJ2ZpbGUnIHwgJ3JhbmdlJyB8ICdjb250ZW50JyB8ICduby1jb250ZW50JykgPT4gdm9pZDtcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBjb25maWcuZWxlbWVudDtcbiAgY29uc3QgZmlsZXMgPSBlLmNsaXBib2FyZERhdGE/LmZpbGVzO1xuICBpZiAoZmlsZXM/Lmxlbmd0aCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25maWcuaGFuZGxlclBhc3RlRmlsZT8uKGZpbGVzKTtcbiAgICBjb25maWcuY2FsbEJhY2s/LignZmlsZScpO1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBMxrB1IHNlbGVjdGlvbiBUUsav4buaQyBraGkgcHJldmVudCBkZWZhdWx0XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgbGV0IHNhdmVkUmFuZ2U6IFJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICAvLyBDaOG7iSBsxrB1IG7hur91IHJhbmdlIG7hurFtIHRyb25nIGNvbnRlbnRUZXh0IGVsZW1lbnRcbiAgICBjb25zdCBjb250YWluZXIgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcjtcbiAgICBjb25zdCBpc0luQ29udGVudEVsZW1lbnQgPSBlbGVtZW50LmNvbnRhaW5zKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyBjb250YWluZXIucGFyZW50Tm9kZSA6IGNvbnRhaW5lcik7XG4gICAgaWYgKGlzSW5Db250ZW50RWxlbWVudCkge1xuICAgICAgc2F2ZWRSYW5nZSA9IHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG4gIH1cbiAgLy8gUHJldmVudCBkZWZhdWx0IMSR4buDIHThu7EgeOG7rSBsw70gcGFzdGVcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBT4butIGThu6VuZyBRdWlsbCDEkeG7gyBjbGVhbiBIVE1MIGNvbnRlbnRcbiAgY29uc3QgaHRtbENvbnRlbnQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvaHRtbCcpIHx8ICcnO1xuICBjb25zdCBwbGFpblRleHQgPSBlLmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKSB8fCAnJztcbiAgbGV0IGNvbnRlbnRUb0luc2VydCA9IChwbGFpblRleHQgfHwgJycpLnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xuICBpZiAoaHRtbENvbnRlbnQpIHtcbiAgICBjb25zdCBkZWx0YSA9IGF3YWl0IGdldERlbHRhT2ZRdWlsbEZyb21IVE1MKGh0bWxDb250ZW50KTtcbiAgICBjb250ZW50VG9JbnNlcnQgPSBnZXRIVE1MRnJvbURlbHRhT2ZRdWlsbChkZWx0YSk7XG4gIH1cblxuICBpZiAoIWNvbnRlbnRUb0luc2VydCkge1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCduby1jb250ZW50Jyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHNhdmVkUmFuZ2UpIHtcbiAgICBpbnNlcnRDb250ZW50V2l0aFJhbmdlKGNvbnRlbnRUb0luc2VydCwgc2F2ZWRSYW5nZSwgZWxlbWVudCk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ3JhbmdlJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnRUb0luc2VydDtcbiAgY29uZmlnLmNhbGxCYWNrPy4oJ2NvbnRlbnQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDb250ZW50V2l0aFJhbmdlID0gKGNvbnRlbnQ6IHN0cmluZywgc2F2ZWRSYW5nZTogUmFuZ2UsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24pIHtcbiAgICAvLyBGYWxsYmFjazogYXBwZW5kIHbDoG8gY3Xhu5FpXG4gICAgZWxlbWVudC5pbm5lckhUTUwgKz0gY29udGVudDtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG4gIC8vIFjDs2EgbuG7mWkgZHVuZyDEkcOjIHNlbGVjdCAobuG6v3UgY8OzKVxuICBzYXZlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XG4gIC8vIFThuqFvIGRvY3VtZW50IGZyYWdtZW50IHThu6sgSFRNTCBjb250ZW50XG4gIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdGVtcERpdi5pbm5lckhUTUwgPSBjb250ZW50O1xuICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gIH1cbiAgLy8gSW5zZXJ0IGZyYWdtZW50IHThuqFpIHbhu4sgdHLDrSByYW5nZVxuICBzYXZlZFJhbmdlLmluc2VydE5vZGUoZnJhZ21lbnQpO1xuICAvLyBEaSBjaHV54buDbiBjdXJzb3IgxJHhur9uIGN14buRaSBu4buZaSBkdW5nIHbhu6thIGluc2VydFxuICBpZiAoZnJhZ21lbnQubGFzdENoaWxkKSB7XG4gICAgc2F2ZWRSYW5nZS5zZXRTdGFydEFmdGVyKGZyYWdtZW50Lmxhc3RDaGlsZCk7XG4gIH1cbiAgc2F2ZWRSYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICBzZWxlY3Rpb24uYWRkUmFuZ2Uoc2F2ZWRSYW5nZSk7XG59O1xuIl19
|
|
623
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwuZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2lucHV0cy9xdWlsbC9zcmMvdXRpbHMvcXVpbGwuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZELElBQUksS0FBSyxHQUFpQixJQUFJLENBQUM7QUFDL0IsSUFBSSxPQUFPLEdBQXVCLFNBQVMsQ0FBQztBQUM1QyxJQUFJLFFBQVEsR0FBdUIsU0FBUyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEZBQThGLEVBQUU7UUFDakgsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrRkFBK0YsRUFBRTtRQUN2SCxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdHQUFnRyxFQUFFO1FBQ3pILEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUdBQWlHLEVBQUU7S0FDNUgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTztRQUNMLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFL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QUM7UUFDMUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELG1DQUFtQztJQUNuQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLGdEQUFnRDtJQUNoRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtbGlzdCc7XG5pbXBvcnQgeyBJSHR0cFJlcXVlc3RDb25maWcsIHJldHVybkxpc3RPYmplY3QgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1odHRwLXJlcXVlc3QnO1xuaW1wb3J0IHsgY29udmVydEZpbGVUb0Jhc2U2NF9PYmplY3RVcmwsIGRlY29kZUVzY2FwZUh0bWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuaW1wb3J0IERlbHRhIGZyb20gJ3F1aWxsLWRlbHRhJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzL2ludGVybmFsL2xhc3RWYWx1ZUZyb20nO1xuaW1wb3J0IHsgdGltZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvdGltZXInO1xuaW1wb3J0IHsgSVF1aWxsTGluaywgSVF1aWxsVG9vbGJhckNvbmZpZywgSVF1aWxsVXBsb2FkSW1hZ2VDb25maWcsIFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVpbGwuaW50ZXJmYWNlJztcbmxldCBxdWlsbDogUXVpbGwgfCBudWxsID0gbnVsbDtcbmxldCB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5sZXQgdGltZW91dDI6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGxpc3REYXRhQWxpZ24gPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWxlZnQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdyaWdodCcsIGljb246ICdsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gICAgeyBrZXk6ICdjZW50ZXInLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWNlbnRlciB0ZXh0LVsjNmE3MzgzXSB0ZXh0LVsxNnB4XSBob3Zlcjp0ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEpXScgfSxcbiAgICB7IGtleTogJ2p1c3RpZnknLCBpY29uOiAnbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnkgdGV4dC1bIzZhNzM4M10gdGV4dC1bMTZweF0gaG92ZXI6dGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xKV0nIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZvbnQgPSAoKSA9PiB7XG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICcnLCBsYWJlbDogJ1NhbnMgU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdzZXJpZicsIGxhYmVsOiAnU2VyaWYnIH0sXG4gICAgeyBrZXk6ICdtb25vc3BhY2UnLCBsYWJlbDogJ01vbm9zcGFjZScgfSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0SGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gW1xuICAgIHsga2V5OiAnJywgbGFiZWw6ICdOb3JtYWwnIH0sXG4gICAgeyBrZXk6ICcxJywgbGFiZWw6ICdIZWFkaW5nIDEnIH0sXG4gICAgeyBrZXk6ICcyJywgbGFiZWw6ICdIZWFkaW5nIDInIH0sXG4gICAgeyBrZXk6ICczJywgbGFiZWw6ICdIZWFkaW5nIDMnIH0sXG4gICAgeyBrZXk6ICc0JywgbGFiZWw6ICdIZWFkaW5nIDQnIH0sXG4gICAgeyBrZXk6ICc1JywgbGFiZWw6ICdIZWFkaW5nIDUnIH0sXG4gICAgeyBrZXk6ICc2JywgbGFiZWw6ICdIZWFkaW5nIDYnIH0sXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdENvbmZpZ0FsaWduID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0RGF0YUFsaWduKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0Q2xhc3NJdGVtOiAoKSA9PiAnIXB4LVs4cHhdICFweS1bNHB4XScsXG4gICAgICBnZXRWYWx1ZTogKGl0ZW0pID0+IGA8aSBjbGFzcz0nZmxleCAke2l0ZW0uaWNvbn0nPjwvaT5gLFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb25maWdGb250ID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0Rm9udCgpKSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2xpc3QnLFxuICAgICAgYXJndW1lbnRzVmFsdWU6IFtdLFxuICAgIH0pLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAna2V5JyxcbiAgICAgIGdldFZhbHVlOiAoaXRlbSkgPT4gaXRlbS5sYWJlbCxcbiAgICAgIGlnbm9yZUljb25TZWxlY3RlZDogdHJ1ZSxcbiAgICB9KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29uZmlnSGVhZGVyID0gKCk6IElMaXN0Q29uZmlnSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGF1dG9TZWxlY3RGaXJzdEl0ZW06IHRydWUsXG4gICAgaHR0cFJlcXVlc3REYXRhOiBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPih7XG4gICAgICBvYmplY3RJbnN0YW5jZTogcmV0dXJuTGlzdE9iamVjdChsaXN0SGVhZGVyKCkpLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnbGlzdCcsXG4gICAgICBhcmd1bWVudHNWYWx1ZTogW10sXG4gICAgfSksXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdrZXknLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbT8ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDFyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDJyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDNyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDRyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc1JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgICBjYXNlICc2JzpcbiAgICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDZyXCI+JHtpdGVtPy5sYWJlbH08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbT8ubGFiZWw7XG4gICAgICB9LFxuICAgICAgaWdub3JlSWNvblNlbGVjdGVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvb2xCYXJPcHRpb25zID0gKG1vZGU6IFRZUEVfTU9ERV9CQVJfQ09ORklHX09QVElPTiwgaGFzSWNvbkltYWdlOiBib29sZWFuLCBoYXNJY29uUGVyc29uYWxpemU6IGJvb2xlYW4pOiBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPiA9PiB7XG4gIHJldHVybiAoXG4gICAgW1xuICAgICAge1xuICAgICAgICB0eXBlOiAndW5kbycsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21yLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncmVkbycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2hlYWRlcicsXG4gICAgICAgIGNsYXNzSW5jbHVkZTogJ21sLVs4cHhdJyxcbiAgICAgICAgbW9kZTogWydhbGwnXSxcbiAgICAgICAgd2lkdGg6IDE0NixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdmb250RmFtaWx5JyxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAnbWwtWzhweF0nLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxMzYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZm9udFNpemUnLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XSBtci1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDgyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCcsICdiYXNpYyddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2JvbGQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd1bmRlcmxpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0JywgJ2Jhc2ljJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpa2VUaHJvdWdoJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc2NyaXB0LnN1YicsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzY3JpcHQuc3VwZXInLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJ10sXG4gICAgICAgIHdpZHRoOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2FkanVzdCcsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDUyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdpbmRlbnRJbmNyZWFzZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2luZGVudERlY3JlYXNlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdEJ1bGxldGVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdE51bWJlcmVkJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGlzdENoZWNrZWQnLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAncGVyc29uYWxpemUnLFxuICAgICAgICBtb2RlOiBbJ2FsbCcsICdkZWZhdWx0J10sXG4gICAgICAgIHdpZHRoOiAzMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdibG9ja3F1b3RlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3VuTGluaycsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnLCAnYmFzaWMnXSxcbiAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgbW9kZTogWydhbGwnLCAnZGVmYXVsdCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICBtb2RlOiBbJ2FsbCddLFxuICAgICAgICB3aWR0aDogMzIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZW1vamknLFxuICAgICAgICBjbGFzc0luY2x1ZGU6ICdtbC1bOHB4XScsXG4gICAgICAgIG1vZGU6IFsnYWxsJywgJ2RlZmF1bHQnXSxcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSxcbiAgICAgIHsgdHlwZTogJ3RhYmxlJywgd2lkdGg6IDMyLCBtb2RlOiBbJ2FsbCddIH0sXG4gICAgXSBhcyBBcnJheTxJUXVpbGxUb29sYmFyQ29uZmlnPlxuICApLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGlmICghaXRlbS5tb2RlPy5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvbkltYWdlO1xuICAgIH1cbiAgICBpZiAoaXRlbS50eXBlID09PSAncGVyc29uYWxpemUnKSB7XG4gICAgICByZXR1cm4gaGFzSWNvblBlcnNvbmFsaXplO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgaWNvbkxpc3QgPSAoKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+ID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBrZXk6ICdib2xkJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWJvbGQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaXRhbGljJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWl0YWxpYycsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd1bmRlcmxpbmUnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItdW5kZXJsaW5lZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbWFnZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWltYWdlLXNvbGlkJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2xpbmsnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1saW5rJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VuZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi11bmRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3JlZG8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1yZWRvJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N0cmlrZScsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWVkaXRvci1zdHJpa2UtdGhyb3VnaCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdibG9ja3F1b3RlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tcXVvdGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnb3JkZXJlZCcsXG4gICAgICBpY29uOiAnbGlicy11aS1pY29uLWxpc3QtbnVtYmVyZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYnVsbGV0JyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGlzdC1idWxsZXRlZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tZWRpdG9yLWNvbG9yLWJhY2tncm91bmQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY29sb3InLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1lZGl0b3ItY29sb3ItdGV4dCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdpbmRlbnQuLTEnLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1pbmRlbnQtZGVjcmVhc2UnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnaW5kZW50LisxJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24taW5kZW50LWluY3JlYXNlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLicsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWxlZnQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uY2VudGVyJyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tY2VudGVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2FsaWduLnJpZ2h0JyxcbiAgICAgIGljb246ICdhbGlnbi1xdWlsbCBsaWJzLXVpLWljb24tYWxpZ24tcmlnaHQnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnYWxpZ24uanVzdGlmeScsXG4gICAgICBpY29uOiAnYWxpZ24tcXVpbGwgbGlicy11aS1pY29uLWFsaWduLWp1c3RpZnknLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndW5MaW5rJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tbGluay1icm9rZW4nLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1vamknLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi1mYWNlLXNtaWxlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3RhYmxlJyxcbiAgICAgIGljb246ICdsaWJzLXVpLWljb24tdGFibGUnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnY2hlY2snLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi10YXNrLWxpc3QnLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndmlkZW8nLFxuICAgICAgaWNvbjogJ2xpYnMtdWktaWNvbi12aWRlby1vdXRsaW5lJyxcbiAgICB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlQ29uZmlnRGVmYXVsdCA9ICgpOiBJUXVpbGxVcGxvYWRJbWFnZUNvbmZpZyA9PiB7XG4gIHJldHVybiB7XG4gICAgbW9kZUN1c3RvbTogZmFsc2UsXG4gICAgekluZGV4OiAxMjAyLFxuICAgIHNob3dJY29uOiB0cnVlLFxuICAgIG1heEltYWdlU2l6ZTogNSAqIDEwMjQgKiAxMDI0LFxuICAgIG9ubHlBY2NlcHRJbWFnZUh0dHBzTGluazogZmFsc2UsXG4gICAgZnVuY3Rpb25VcGxvYWRJbWFnZTogYXN5bmMgKGZpbGVzOiBBcnJheTxGaWxlPikgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGRhdGEucHVzaChhd2FpdCBjb252ZXJ0RmlsZVRvQmFzZTY0X09iamVjdFVybChmaWxlKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmtEZWZhdWx0ID0gKCk6IElRdWlsbExpbmsgPT4ge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnJyxcbiAgICB1cmw6ICcnLFxuICAgIHJhbmdlOiB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIGxlbmd0aDogMCxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZvbnRTaXplV2hpdGVMaXN0ID0gKCkgPT4gW1xuICAnOHB4JyxcbiAgJzlweCcsXG4gICcxMHB4JyxcbiAgJzExcHgnLFxuICAnMTJweCcsXG4gICcxM3B4JyxcbiAgJzE0cHgnLFxuICAnMTVweCcsXG4gICcxNnB4JyxcbiAgJzE3cHgnLFxuICAnMThweCcsXG4gICcxOXB4JyxcbiAgJzIwcHgnLFxuICAnMjFweCcsXG4gICcyMnB4JyxcbiAgJzIzcHgnLFxuICAnMjRweCcsXG4gICcyNXB4JyxcbiAgJzI2cHgnLFxuICAnMjdweCcsXG4gICcyOHB4JyxcbiAgJzI5cHgnLFxuICAnMzBweCcsXG4gICczMXB4JyxcbiAgJzMycHgnLFxuICAnMzNweCcsXG4gICczNHB4JyxcbiAgJzM1cHgnLFxuICAnMzZweCcsXG4gICczN3B4JyxcbiAgJzM4cHgnLFxuICAnMzlweCcsXG4gICc0MHB4JyxcbiAgJzQxcHgnLFxuICAnNDJweCcsXG4gICc0M3B4JyxcbiAgJzQ0cHgnLFxuICAnNDVweCcsXG4gICc0NnB4JyxcbiAgJzQ3cHgnLFxuICAnNDhweCcsXG4gICc0OXB4JyxcbiAgJzUwcHgnLFxuICAnNTFweCcsXG4gICc1MnB4JyxcbiAgJzUzcHgnLFxuICAnNTRweCcsXG4gICc1NXB4JyxcbiAgJzU2cHgnLFxuICAnNTdweCcsXG4gICc1OHB4JyxcbiAgJzU5cHgnLFxuICAnNjBweCcsXG4gICc2MXB4JyxcbiAgJzYycHgnLFxuICAnNjNweCcsXG4gICc2NHB4JyxcbiAgJzY1cHgnLFxuICAnNjZweCcsXG4gICc2N3B4JyxcbiAgJzY4cHgnLFxuICAnNjlweCcsXG4gICc3MHB4JyxcbiAgJzcxcHgnLFxuICAnNzJweCcsXG5dO1xuXG5leHBvcnQgY29uc3QgZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwgPSAoXG4gIGRlbHRhOiBEZWx0YSxcbiAgb3B0aW9ucz86IHtcbiAgICBnZXRSb290SHRtbD86IGJvb2xlYW47XG4gICAgcmVwbGFjZU5ld0xpbmVUbz86IHN0cmluZztcbiAgICByZXBsYWNlVGFnQlJUbz86IHN0cmluZztcbiAgICByZXBsYWNlQnJUb0Rpdj86IGJvb2xlYW47XG4gICAgZnVuY3Rpb25SZXBsYWNlRGVsdGE/OiAob3A6IERlbHRhKSA9PiB2b2lkO1xuICAgIHJlcGxhY2VUYWdzPzoge1xuICAgICAgdGFnOiBzdHJpbmc7XG4gICAgICByZXBsYWNlVG86IHN0cmluZztcbiAgICB9W107XG4gIH1cbik6IHN0cmluZyA9PiB7XG4gIGlmICghcXVpbGwpIHtcbiAgICBxdWlsbCA9IG5ldyBRdWlsbChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIH1cbiAgY29uc3QgeyByZXBsYWNlTmV3TGluZVRvID0gJzxicj4nLCByZXBsYWNlVGFnQlJUbywgcmVwbGFjZVRhZ3MsIHJlcGxhY2VCclRvRGl2IH0gPSBvcHRpb25zIHx8IHt9O1xuICBpZiAob3B0aW9ucz8uZnVuY3Rpb25SZXBsYWNlRGVsdGEpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uUmVwbGFjZURlbHRhKGRlbHRhKTtcbiAgfVxuXG4gIGRlbHRhLm9wcy5mb3JFYWNoKChvcCkgPT4ge1xuICAgIGlmIChvcC5pbnNlcnQpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3AuaW5zZXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVwbGFjZU5ld0xpbmVUbykge1xuICAgICAgICAgIG9wLmluc2VydCA9IG9wLmluc2VydC5yZXBsYWNlKC9cXG4vZywgcmVwbGFjZU5ld0xpbmVUbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdCUlRvKSB7XG4gICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UoLzxicj4vZywgcmVwbGFjZVRhZ0JSVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcGxhY2VUYWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZXBsYWNlVGFncykge1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPCR7dGFnLnRhZ30+YCwgJ2cnKSwgYDwke3RhZy5yZXBsYWNlVG99PmApO1xuICAgICAgICAgICAgb3AuaW5zZXJ0ID0gb3AuaW5zZXJ0LnJlcGxhY2UobmV3IFJlZ0V4cChgPC8ke3RhZy50YWd9PmAsICdnJyksIGA8LyR7dGFnLnJlcGxhY2VUb30+YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcXVpbGwuc2V0Q29udGVudHMoZGVsdGEpO1xuICBsZXQgaHRtbFRleHQgPSBvcHRpb25zPy5nZXRSb290SHRtbCA/IHF1aWxsLnJvb3QuaW5uZXJIVE1MIDogcXVpbGwucm9vdC5maXJzdEVsZW1lbnRDaGlsZD8uaW5uZXJIVE1MO1xuICBpZiAocmVwbGFjZUJyVG9EaXYpIHtcbiAgICBodG1sVGV4dCA9IGNvbnZlcnRIdG1sVG9EaXZCbG9ja3MoaHRtbFRleHQgfHwgJycpO1xuICB9XG4gIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHF1aWxsID0gbnVsbDtcbiAgfSwgMTAwMDApO1xuICByZXR1cm4gZGVjb2RlRXNjYXBlSHRtbChodG1sVGV4dCB8fCAnJyk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEh0bWxUb0RpdkJsb2NrcyA9IChodG1sOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBCUkVBS19UT0tFTiA9ICc8PDxCUkVBSz4+Pic7XG4gIC8vIELGsOG7m2MgMTogdGhheSA8YnI+IHRow6BuaCB0b2tlbiB04bqhbVxuICBjb25zdCBub3JtYWxpemVkSHRtbCA9IGh0bWwucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCBCUkVBS19UT0tFTik7XG5cbiAgLy8gQsaw4bubYyAyOiB0w6FjaCB0aGVvIHRva2VuXG4gIGNvbnN0IHBhcnRzID0gbm9ybWFsaXplZEh0bWwuc3BsaXQoQlJFQUtfVE9LRU4pO1xuXG4gIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgY29uc3QgZGl2czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJhdyBvZiBwYXJ0cykge1xuICAgIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG5cbiAgICAvLyBwYXJzZSBt4buXaSBwaOG6p24gbmjhu48gbmjGsCBt4buZdCBkb2N1bWVudCByacOqbmdcbiAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRyaW1tZWQsICd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBib2R5ID0gZG9jLmJvZHk7XG5cbiAgICAvLyBM4bqleSBs4bqhaSBu4buZaSBkdW5nIGLDqm4gdHJvbmcgYm9keVxuICAgIGRpdnMucHVzaChgPGRpdj4ke2JvZHkuaW5uZXJIVE1MfTwvZGl2PmApO1xuICB9XG5cbiAgcmV0dXJuIGRpdnMuam9pbignJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVsdGFPZlF1aWxsRnJvbUhUTUwgPSBhc3luYyAoaHRtbDogc3RyaW5nKTogUHJvbWlzZTxEZWx0YT4gPT4ge1xuICBpZiAoIXF1aWxsKSB7XG4gICAgcXVpbGwgPSBuZXcgUXVpbGwoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICB9XG4gIHF1aWxsLnJvb3QuaW5uZXJIVE1MID0gaHRtbDtcblxuICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRpbWVyKDEwMDApKTtcbiAgY2xlYXJUaW1lb3V0KHRpbWVvdXQyKTtcbiAgdGltZW91dDIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBxdWlsbCA9IG51bGw7XG4gIH0sIDEwMDAwKTtcbiAgcmV0dXJuIHF1aWxsLmdldENvbnRlbnRzKCk7XG59O1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc1Bhc3RlRGF0YSA9IGFzeW5jIChcbiAgZTogQ2xpcGJvYXJkRXZlbnQsXG4gIGNvbmZpZzoge1xuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGhhbmRsZXJQYXN0ZUZpbGU/OiAoZmlsZXM6IEZpbGVMaXN0KSA9PiB2b2lkO1xuICAgIGNhbGxCYWNrPzogKHBvc2l0b25SZXR1cm46ICdmaWxlJyB8ICdyYW5nZScgfCAnY29udGVudCcgfCAnbm8tY29udGVudCcpID0+IHZvaWQ7XG4gIH1cbikgPT4ge1xuICBjb25zdCBlbGVtZW50ID0gY29uZmlnLmVsZW1lbnQ7XG4gIGNvbnN0IGZpbGVzID0gZS5jbGlwYm9hcmREYXRhPy5maWxlcztcbiAgaWYgKGZpbGVzPy5sZW5ndGgpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uZmlnLmhhbmRsZXJQYXN0ZUZpbGU/LihmaWxlcyk7XG4gICAgY29uZmlnLmNhbGxCYWNrPy4oJ2ZpbGUnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gTMawdSBzZWxlY3Rpb24gVFLGr+G7mkMga2hpIHByZXZlbnQgZGVmYXVsdFxuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGxldCBzYXZlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgLy8gQ2jhu4kgbMawdSBu4bq/dSByYW5nZSBu4bqxbSB0cm9uZyBjb250ZW50VGV4dCBlbGVtZW50XG4gICAgY29uc3QgY29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgY29uc3QgaXNJbkNvbnRlbnRFbGVtZW50ID0gZWxlbWVudC5jb250YWlucyhjb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFID8gY29udGFpbmVyLnBhcmVudE5vZGUgOiBjb250YWluZXIpO1xuICAgIGlmIChpc0luQ29udGVudEVsZW1lbnQpIHtcbiAgICAgIHNhdmVkUmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7XG4gICAgfVxuICB9XG4gIC8vIFByZXZlbnQgZGVmYXVsdCDEkeG7gyB04buxIHjhu60gbMO9IHBhc3RlXG4gIGUucHJldmVudERlZmF1bHQoKTtcbiAgLy8gU+G7rSBk4bulbmcgUXVpbGwgxJHhu4MgY2xlYW4gSFRNTCBjb250ZW50XG4gIGNvbnN0IGh0bWxDb250ZW50ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L2h0bWwnKSB8fCAnJztcbiAgY29uc3QgcGxhaW5UZXh0ID0gZS5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJykgfHwgJyc7XG4gIGxldCBjb250ZW50VG9JbnNlcnQgPSAocGxhaW5UZXh0IHx8ICcnKS5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcbiAgaWYgKGh0bWxDb250ZW50KSB7XG4gICAgY29uc3QgZGVsdGEgPSBhd2FpdCBnZXREZWx0YU9mUXVpbGxGcm9tSFRNTChodG1sQ29udGVudCk7XG4gICAgY29udGVudFRvSW5zZXJ0ID0gZ2V0SFRNTEZyb21EZWx0YU9mUXVpbGwoZGVsdGEpO1xuICB9XG5cbiAgaWYgKCFjb250ZW50VG9JbnNlcnQpIHtcbiAgICBjb25maWcuY2FsbEJhY2s/Lignbm8tY29udGVudCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzYXZlZFJhbmdlKSB7XG4gICAgaW5zZXJ0Q29udGVudFdpdGhSYW5nZShjb250ZW50VG9JbnNlcnQsIHNhdmVkUmFuZ2UsIGVsZW1lbnQpO1xuICAgIGNvbmZpZy5jYWxsQmFjaz8uKCdyYW5nZScpO1xuICAgIHJldHVybjtcbiAgfVxuICBlbGVtZW50LmlubmVySFRNTCArPSBjb250ZW50VG9JbnNlcnQ7XG4gIGNvbmZpZy5jYWxsQmFjaz8uKCdjb250ZW50Jyk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q29udGVudFdpdGhSYW5nZSA9IChjb250ZW50OiBzdHJpbmcsIHNhdmVkUmFuZ2U6IFJhbmdlLCBlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmICghc2VsZWN0aW9uKSB7XG4gICAgLy8gRmFsbGJhY2s6IGFwcGVuZCB2w6BvIGN14buRaVxuICAgIGVsZW1lbnQuaW5uZXJIVE1MICs9IGNvbnRlbnQ7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIFJlc3RvcmUgc2VsZWN0aW9uXG4gIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgc2VsZWN0aW9uLmFkZFJhbmdlKHNhdmVkUmFuZ2UpO1xuICAvLyBYw7NhIG7hu5lpIGR1bmcgxJHDoyBzZWxlY3QgKG7hur91IGPDsylcbiAgc2F2ZWRSYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAvLyBU4bqhbyBkb2N1bWVudCBmcmFnbWVudCB04burIEhUTUwgY29udGVudFxuICBjb25zdCB0ZW1wRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHRlbXBEaXYuaW5uZXJIVE1MID0gY29udGVudDtcbiAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHdoaWxlICh0ZW1wRGl2LmZpcnN0Q2hpbGQpIHtcbiAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCh0ZW1wRGl2LmZpcnN0Q2hpbGQpO1xuICB9XG4gIC8vIEluc2VydCBmcmFnbWVudCB04bqhaSB24buLIHRyw60gcmFuZ2VcbiAgc2F2ZWRSYW5nZS5pbnNlcnROb2RlKGZyYWdtZW50KTtcbiAgLy8gRGkgY2h1eeG7g24gY3Vyc29yIMSR4bq/biBjdeG7kWkgbuG7mWkgZHVuZyB24burYSBpbnNlcnRcbiAgaWYgKGZyYWdtZW50Lmxhc3RDaGlsZCkge1xuICAgIHNhdmVkUmFuZ2Uuc2V0U3RhcnRBZnRlcihmcmFnbWVudC5sYXN0Q2hpbGQpO1xuICB9XG4gIHNhdmVkUmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgc2VsZWN0aW9uLmFkZFJhbmdlKHNhdmVkUmFuZ2UpO1xufTtcbiJdfQ==
|