vcomply-workflow-engine 6.0.52 → 6.0.53
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/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +2 -2
- package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -2
- package/esm2022/lib/constants/assets.constants.mjs +57 -0
- package/esm2022/lib/constants/link-responsibility.constants.mjs +2 -2
- package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +2 -2
- package/esm2022/lib/more-option/more-option.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-assignees/case-assignees.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-details/case-details.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-owners/case-owners.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-priority/case-priority.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/field-holder/field-holder.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/linked assessment/linked-assessment.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/rc-details/rc-details.component.mjs +2 -2
- package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +2 -2
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/policy-template/constants/template.constant.mjs +2 -2
- package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +2 -2
- package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -2
- package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +2 -2
- package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
- package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +2 -2
- package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +2 -2
- package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +2 -2
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +2 -2
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +2 -2
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +2 -2
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +2 -2
- package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +2 -2
- package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +2 -2
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +2 -2
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +2 -2
- package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +2 -2
- package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +2 -2
- package/fesm2022/vcomply-workflow-engine.mjs +14 -15
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/package.json +1 -1
- package/esm2022/lib/constants/assessts.constants.mjs +0 -57
- /package/lib/constants/{assessts.constants.d.ts → assets.constants.d.ts} +0 -0
|
@@ -3,7 +3,7 @@ import { Validators, } from '@angular/forms';
|
|
|
3
3
|
import { cloneDeep, isEqual } from 'lodash';
|
|
4
4
|
import { distinctUntilChanged, take } from 'rxjs';
|
|
5
5
|
import { CONSTANTS } from './constants';
|
|
6
|
-
import { ASSETS } from '../constants/
|
|
6
|
+
import { ASSETS } from '../constants/assets.constants';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/forms";
|
|
9
9
|
import * as i2 from "../workflow-services/programs.service";
|
|
@@ -1550,4 +1550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1550
1550
|
}], orgDetails: [{
|
|
1551
1551
|
type: Input
|
|
1552
1552
|
}] } });
|
|
1553
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyx3QkFBd0I7SUF3RG5DLFlBQ1UsRUFBc0IsRUFDdEIsY0FBK0IsRUFDL0IsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsU0FBNEI7UUFMNUIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVC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QU1SLFVBQVUsd0hDckN2Qyxnc29IQTJzRkE7OzRGRDVxRmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjt3UEFVUyxJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRWQsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNiLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXNzdHMuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXByb2dyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGNvbnN0YW50cyA9IENPTlNUQU5UUztcbiAgc2hvd0NvbmZpcm1hdGlvbjogYW55O1xuICBpc0FzY2VudEFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmZfcmNfbGlzdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZvcm0hOiBFbGVtZW50UmVmO1xuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWZyZXNoRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdSb2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgc2Nyb2xsVG9Cb3R0b20hOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5GcmFtZXdvcmtDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm9ncmFtU2ltcGxpZnlGbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQWxsIElucHV0IGZpZWxkc1xuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHJvZ3JhbUlkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHJvZ3JhbVR5cGU6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIGFsbG93ZWRGZWF0dXJlITogYW55O1xuICBASW5wdXQoKSBhZGRUb1Byb2dyYW1EZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcbiAgcGFuZWxUaXRsZURlZmF1bHRSZXZpZXdlciA9ICdTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKSc7XG4gIHBhbmVsVGl0bGVPd25lciA9ICdTZWxlY3QgT3duZXIocyknO1xuICBwYW5lbFRpdGxlUmV2aWV3ZXIgPSAnU2VsZWN0IFJldmlld2VyKHMpJztcbiAgcGFuZWxUaXRsZUFzc2lnbmVlID0gJ1NlbGVjdCBBc3NpZ25lZShzKSc7XG4gIHBhbmVsVGl0bGVBcHByb3ZlciA9ICdTZWxlY3QgIEFwcHJvdmVyJztcbiAgaXNBcHByb3ZlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUHJvZ3JhbVNjb3BlOiBib29sZWFuID0gZmFsc2U7XG4gIHRvb2xUaXBEYXRhOiBhbnkgPSB7XG4gICAgb3duZXI6XG4gICAgICAnT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlRoZSA8c3Ryb25nPktleSBBZG1pbjwvc3Ryb25nPiBhbmQgYWxsIDxiPkFkbWluPC9iPiB1c2VycyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuJyxcbiAgICBwcm9ncmFtU2NvcGU6IGBBIFByb2dyYW0gU2NvcGUgY2FuIGJlIHVzZWQgYXMgZm9sbG93czpcbiAgPGxpPlRvIHNwZWNpZnkgdGhlIGR1cmF0aW9uIG9mIHRoZSBQcm9ncmFtLjwvbGk+XG4gIDxsaT5UbyBwcmUtc2VsZWN0IGNlcnRhaW4gb3B0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LCB0aGVyZWJ5IGRlY3JlYXNpbmcgdGhlIHRpbWUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcmVzcG9uc2liaWxpdHkuPC9saT5cbiAgPGxpPlRvIGxpbWl0IHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBtYWtpbmcgaXQgZWFzaWVyIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5IGFuZCByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZCBvZiBhbiBpbmNvcnJlY3Qgb3B0aW9uIGJlaW5nIHNlbGVjdGVkLjwvbGk+XG4gICAgYCxcbiAgfTtcbiAgYnVzaW5lc3NDeWNsZTogYW55O1xuICBmZWF0dXJlZmxhZ3JvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVhdHVyZWZsYWdHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzYWJsZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRPdmVyc2VlcklkczogYW55W10gPSBbXTtcbiAgYXNzaWdub3JJZDogbnVtYmVyW10gPSBbXTtcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gIH1cbiAgcHVibGljIG5vV2hpdGVzcGFjZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICBjb25zdCBpc1doaXRlc3BhY2UgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzV2hpdGVzcGFjZTtcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IHdoaXRlc3BhY2U6IHRydWUgfTtcbiAgfVxuICBwdWJsaWMgYmxhbmtBcnJheVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICBjb25zdCBpc0JsYW5rID0gY29udHJvbC52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlKT8ubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IGlzVmFsaWQgPSAhaXNCbGFuaztcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IGJsYW5rOiB0cnVlIH07XG4gIH1cbiAgbG9hZGVyID0gZmFsc2U7XG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBQcm9ncmFtcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUHJvZ3JhbScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdQcm9ncmFtJyB9LFxuICBdO1xuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0IWA7XG4gIGNyZWF0ZWRQcm9ncmFtSWQgPSAnJztcbiAgaXNPYmplY3RpdmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gIGlzTmFtZUV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuICAvL2Zvcm0gYm9keSBmb3IgcHJvZ3JhbSBtZXRhIGRhdGFcbiAgcHJvZ3JhbUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBwcm9ncmFtX3R5cGU6IFtcbiAgICAgIHRoaXMucHJvZ3JhbVR5cGUsXG4gICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDMpXSxcbiAgICBdLFxuICAgIHByb2dyYW1fbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ub1doaXRlc3BhY2VWYWxpZGF0b3JdXSxcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOiBbJyddLFxuICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IFtbXV0sXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IFsnJ10sXG4gICAgLy8gcHJvZ3JhbV9vYmplY3RpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6IFtbXV0sXG4gICAgcHJvZ3JhbV9yb2xlczogW1tdLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXG4gICAgYWxsX3VzZXJfaW5fcm9sZTogW2ZhbHNlXSxcbiAgICBwcm9ncmFtX293bmVyczogW1tdLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ibGFua0FycmF5VmFsaWRhdG9yXV0sXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogW1tdXSxcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogWydQQVNUX0VWRU5UJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiBbdHJ1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogW2ZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgIGZyYW1ld29yazogW10sXG4gICAgcmM6IFtbXV0sXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogW1tdXSxcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtbXV0sXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogWydBTEwnXSxcbiAgICBwcm9ncmFtX3Jldmlld2VyOiBbW11dLFxuICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW1tdXSxcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ1NFUVVFTlRJQUwnXSxcbiAgICBwcm9ncmFtX292ZXJzZWVyOiBbW11dLFxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW1tdXSxcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogW2ZhbHNlXSxcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IFtmYWxzZV0sXG4gICAgY3VzdG9tX2ZpZWxkczogW1tdXSxcbiAgICBwcm9ncmFtX3N0YXRlOiAwLFxuICB9KTtcblxuICAvL2V4Y2VwdGlvbmFsIGhhbmRsaW5nIG9mIGN1c3RvbSBmaWVsZHNcblxuICBzaG93QWRkQ3VzdG9tRmllbGQgPSB0cnVlO1xuICAvL1Byb2dyYW0gb2JqZWN0aXZlIGFuZCBkZXNjcmlwaW9uIGFyZSBleHBsZWN0bHkgZGVjbGFyZWQgYXMgdGhleSBhcmUgdXNpbmcgbWFyeCBlZGl0b3Igd2hpY2ggZG9lcyBub3Qgc3VwcG9ydHMgUmVhY3RpdmUgZm9ybXMgYmluZGluZ1xuICBlZGl0b3JEYXRhID0ge1xuICAgIHByb2dyYW1PYmplY3RpdmU6ICcnLFxuICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJycsXG4gIH07XG5cbiAgc2VsZWN0ZWRBc3Nlc3NtZW50ITogYW55O1xuXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuSW5mbygpO1xuICAgIHJldHVybiB7XG4gICAgICBtZW1iZXJfZW1haWw6IHVzZXI/LmVtYWlsLFxuICAgICAgbWVtYmVyX2lkOiB1c2VyPy5pZCxcbiAgICAgIG1lbWJlcl9uYW1lOiB1c2VyPy5uYW1lLFxuICAgICAgdXNlcl9yb2xlOiAnTE9HR0VEX0lOJyxcbiAgICAgIF9pZDogJycsXG4gICAgfTtcbiAgfVxuICAvL1NldHMgdGhlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sXG4gIHNldEZvcm1GaWVsZChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBpc0Zyb21Gb3JtPzogYm9vbGVhbikge1xuICAgIGxldCBwYXRjaDogYW55ID0ge307XG4gICAgcGF0Y2hbY29udHJvbE5hbWVdID0gdmFsdWU7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKHBhdGNoKTtcbiAgICB0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXT8ubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmIChcbiAgICAgIGlzRnJvbUZvcm0gJiZcbiAgICAgIGNvbnRyb2xOYW1lID09PSAncHJvZ3JhbV9vYmplY3RpdmUnICYmXG4gICAgICAhdmFsdWUucmVwbGFjZSgvJm5ic3A7L2csICcgJykudHJpbSgpXG4gICAgKVxuICAgICAgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmlzT2JqZWN0aXZlVmFsaWQgPSB0cnVlO1xuICB9XG5cbiAgLy9SZXR1cm5zIHdlYXRoZXIgdGhlIGZvcm0gaXMgdmFsaWQgb3Igbm90XG4gIGdldCBmb3JtVmFsaWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9ncmFtRm9ybS52YWxpZCAmJlxuICAgICAgdGhpcy5lZGl0b3JEYXRhPy5wcm9ncmFtT2JqZWN0aXZlPy5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKT8udHJpbSgpPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbHM6IGFueSA9IHtcbiAgICBwcm9ncmFtX25hbWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX25hbWUnKSxcbiAgICBwcm9ncmFtX3R5cGU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3R5cGUnKSxcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb2JqZWN0aXZlJyksXG4gICAgcHJvZ3JhbV9yb2xlczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcm9sZXMnKSxcbiAgICBwcm9ncmFtX293bmVyczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzJyksXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVyc19ncm91cCcpLFxuICAgIGFsbF91c2VyX2luX3JvbGU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxfdXNlcl9pbl9yb2xlJyksXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXBwcm92ZXInKSxcbiAgICBkZXNjcmlwdGlvbl9hdHRhY2htZW50OiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJ1xuICAgICksXG4gICAgb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cydcbiAgICApLFxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncGVyZm9ybWFuY2VfY2FsY3VsYXRpb24nKSxcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScpLFxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnbG9ja19zY29wZV9jaGFuZ2UnKSxcbiAgICByYzogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JjJyksXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdldmlkZW5jZV9yZXF1aXJlZCcpLFxuICAgIGZyYW1ld29yazogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2ZyYW1ld29yaycpLFxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJ1xuICAgICksXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWUnKSxcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJ1xuICAgICksXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYSdcbiAgICApLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJ1xuICAgICksXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXInKSxcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcpLFxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyJyksXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCdcbiAgICApLFxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJ1xuICAgICksXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYSdcbiAgICApLFxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2Vzc21lbnRzJyksXG4gICAgY3VzdG9tX2ZpZWxkczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2N1c3RvbV9maWVsZHMnKSxcbiAgICBpc0FwcHJvdmVyRGlzYWJsZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdpc0FwcHJvdmVyRGlzYWJsZWQnKSxcbiAgfTtcblxuICBsaXN0czogYW55ID0ge1xuICAgIFJPTEVTOiBbXSxcbiAgICBPV05FUlM6IFtdLFxuICAgIE9XTkVSU19HUk9VUFM6IFtdLFxuICAgIEFQUFJPVkVSUzogW10sXG4gICAgUkVWSUVXRVJTOiBbXSxcbiAgICBSRVZJRVdFUlNfR1JPVVA6IFtdLFxuICAgIEFTU0lHTkVFUzogW10sXG4gICAgQVNTSUdORUVTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX0FTU0lHTkVFUzogW10sXG4gICAgREVGQVVMVF9BU1NJR05FRVNfR1JPVVA6IFtdLFxuICAgIERFRkFVTFRfUkVWSUVXRVJTOiBbXSxcbiAgICBERUZBVUxUX1JFVklFV0VSU19HUk9VUDogW10sXG4gICAgT1ZFUlNFRVJTOiBbXSxcbiAgICBPVkVSU0VFUlNfR1JPVVA6IFtdLFxuICAgIERFRkFVTFRfT1ZFUlNFRVJTOiBbXSxcbiAgICBERUZBVUxUX09WRVJTRUVSU19HUk9VUDogW10sXG4gICAgUkM6IFtdLFxuICAgIE5PTl9SRU1PVkFCTEVfT1dORVJTOiBbXSxcbiAgICBBTExfVVNFUjogW10sXG4gICAgQUxMX0dST1VQOiBbXSxcbiAgICBTWVNURU1fUk9MRV9JRFM6IFtdLFxuICB9O1xuXG4gIGxpc3RMb2FkaW5nU3RhdGUgPSB7XG4gICAgUk9MRVM6IGZhbHNlLFxuICAgIFVTRVJTOiBmYWxzZSxcbiAgICBHUk9VUDogZmFsc2UsXG4gICAgUkM6IGZhbHNlLFxuICB9O1xuICBzaWRlRWxlbWVudHMgPSBbXG4gICAgJ1JPTEUnLFxuICAgICdSQycsXG4gICAgJ09XTkVSJyxcbiAgICAnQVNTSUdORUUnLFxuICAgICdBUFBST1ZFUicsXG4gICAgJ0RFRkFVTFRfQVNTSUdORUUnLFxuICAgICdSRVZJRVdFUicsXG4gICAgJ0RFRkFVTFRfUkVWSUVXRVInLFxuICAgICdBU1NFU1NNRU5UJyxcbiAgICAnRlJBTUVXT1JLJyxcbiAgICAnT1ZFUlNFRVInLFxuICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicsXG4gICAgJ0RFRkFVTFRfT1ZFUlNFRVInLFxuICAgICdPVkVSU0VFUicsXG4gIF07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHRoaXMucHJvZ3JhbVR5cGUpO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5nZXRQcm9ncmFtRGV0YWlscygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xuICAgIH1cbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcbiAgICB0aGlzLmZldGNoUkMoKTtcbiAgICBpZiAodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcbiAgICAgIHRoaXMubGlzdEFjdGlvbih0aGlzLmFkZFRvUHJvZ3JhbURldGFpbHMsICdGUkFNRVdPUksnKTtcbiAgICB9XG4gICAgdGhpcy5lbmFibGVmZWF0dXJlKCk7XG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGdldCB2YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtRm9ybS52YWxpZDtcbiAgfVxuXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHsgLi4uQ09OU1RBTlRTLmFkZGl0aW9uYWxPcHRpb24gfTtcbiAgYWN0aXZlTGlzdCA9ICcnO1xuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKiBQb3B1bGF0ZXMgb3B0aW9uYWwgZmllbGRzIHN0YXR1cyBmb3IgdGhlIG9wdGlvbmFsIGZpZWxkc1xuICAgKi9cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XG4gIH1cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbltldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgLy8gZnVuY3Rpb24gdG8gYXV0b21hdGUgZm9ybSB2YWx1ZSBjaGFuZ2UgaGFuZG5nXG4gIGZvcm1DaGFuZ2VMaXN0bmVyKCkge1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xuICAgIGZpZWxkcy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jb250cm9sc1tlbGVdPy52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUZvcm1GaWVsZENoYW5nZShlbGUsIHJlcyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1GaWVsZENoYW5nZShjb250cm9sOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGNvbnRyb2wpIHtcbiAgICAgIGNhc2UgJ3Byb2dyYW1fcm9sZXMnOiB7XG4gICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZUxpc3QoZXZ0OiBzdHJpbmcpIHtcbiAgICBpZiAoZXZ0ID09PSAnRlJBTUVXT1JLJyAmJiAhdGhpcy5jYW5GcmFtZXdvcmtDaGFuZ2UpIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSBldnQ7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBsaXN0QWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgICAgIGNvbnN0IHN5c3RlbVJvbGVzID0gZXZ0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGF0Y2hWYWwgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uc3lzdGVtUm9sZXMsIC4uLmV2dF0sICdfaWQnKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFpc0VxdWFsKHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcy52YWx1ZS5zb3J0KCksIHBhdGNoVmFsLnNvcnQoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBwYXRjaFZhbCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkMnOiB7XG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5zZXRMaXN0KHRoaXMubGlzdHMuUkMsIGV2dCwgJ2l0ZW1faWQnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgdGhpcy51bmlxdWVCeVByb3AocmMsICdpdGVtX2lkJykpO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3duZXJzJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3duZXJzX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVBQUk9WRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2FwcHJvdmVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUUnOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2Fzc2lnbmVlJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWUoZXZ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkVWSUVXRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX3Jldmlld2VyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXIoZXZ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gJ0FOWU9ORSdcbiAgICAgICAgICAgIDogdGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWU7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPVkVSU0VFUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3ZlcnNlZXInLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2VlcihldnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTRVNTTUVOVCc6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnLCBldnQpO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGUkFNRVdPUksnOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLCBldnQpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9uYW1lJywgZXZ0Py5uYW1lKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCBldnQ/LmRlc2NyaXB0aW9uKTtcbiAgICAgICAgdGhpcy5lZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvbiA9IGV2dD8uZGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnUk9MRSc6IHtcbiAgICAgICAgbGV0IG1zZyA9ICcnO1xuICAgICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nO1xuICAgICAgICBjb25zdCByb2xlcyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZCAhPT0gZXZ0Py5faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKHJvbGVzLCAnUk9MRScpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHJvbGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdSQyc6IHtcbiAgICAgICAgY29uc3QgcmNzID0gdGhpcy5jb250cm9scz8ucmM/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lml0ZW1faWQgIT09IGV2dD8uaXRlbV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCByY3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09XTkVSJzoge1xuICAgICAgICBjb25zdCBvd25lcnMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09XTkVSX0dST1VQJzoge1xuICAgICAgICBjb25zdCBvd25lcnNfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzX2dyb3VwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBUFBST1ZFUic6IHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgYXBwcm92ZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzoge1xuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCBhc3NpZ25lZSk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LCB0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBU1NJR05FRV9HUk9VUCc6IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJzoge1xuICAgICAgICBjb25zdCBhc3NpZ25lZV9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdSRVZJRVdFUic6IHtcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgcmV2aWV3ZXIpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkVWSUVXRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0LCB0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzoge1xuICAgICAgICBjb25zdCByZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXIpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XG4gICAgICAgIHRoaXMuY29udHJvbHMucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYS52YWx1ZSA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyAnQU5ZT05FJ1xuICAgICAgICAgICAgOiB0aGlzLmNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPVkVSU0VFUic6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgb3ZlcnNlZXIpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0LCB0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzoge1xuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJzoge1xuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJyxcbiAgICAgICAgICBvdmVyc2Vlcl9ncm91cFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOiB7XG4gICAgICAgIGxldCBjdXJyZW50ID0gY2xvbmVEZWVwKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUpO1xuICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09IGV2dC5jYXRlZ29yeV9pZFxuICAgICAgICApO1xuICAgICAgICBjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzID0gY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5maWx0ZXIoXG4gICAgICAgICAgKGFzc2Vzc21lbnQ6IGFueSkgPT4gYXNzZXNzbWVudC5pZCAhPT0gZXZ0LmlkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzLmxlbmd0aCA9PT0gMCkgY3VycmVudC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmxpc3RBY3Rpb24oY3VycmVudCwgJ0FTU0VTU01FTlQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGUkFNRVdPUksnOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLCBudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0XG4gICAgICA/Lm1hcCgoZWxlKSA9PiB7XG4gICAgICAgIGlmIChlbGVba2V5XSkge1xuICAgICAgICAgIHJldHVybiBlbGVba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGVsZSkgPT4gZWxlKTtcbiAgfVxuXG4gIHJlZnJlc2hMaXN0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2VlcklkcyA9IFtdO1xuICAgIGxldCBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XG4gICAgbGV0IHNlbGVjdGVkQXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xuICAgIGxldCBzZWxlY3RlZFJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcbiAgICBsZXQgc2VsZWN0ZWRPdmVyc2Vlckxpc3QgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xuICAgIGxldCBzZWxlY3RlZE92ZXJzZWVyRmFpbHVyZUxpc3QgPVxuICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgbGV0IGFzc2lnbm9yID0gdGhpcy5jdXJyZW50VXNlcigpO1xuICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKGFzc2lnbm9yPy5tZW1iZXJfaWQpO1xuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2goYXNzaWdub3I/Lm1lbWJlcl9pZCk7XG4gICAgc2VsZWN0ZWRBc3NpZ25lZT8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIHNlbGVjdGVkUmV2aWV3ZXI/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFJldmlld2VySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBzZWxlY3RlZE92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIHNlbGVjdGVkT3ZlcnNlZXJGYWlsdXJlTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcyldO1xuICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcyldO1xuICAgIHRoaXMuc2VsZWN0ZWRPdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRPdmVyc2VlcklkcyldO1xuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gdGhpcy5saXN0cz8uQUxMX1VTRVI/LmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZWRBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVBc3NpZ25lZUxpc3QsICdtZW1iZXJfaWQnKTtcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVSZXZpZXdlckxpc3QsICdtZW1iZXJfaWQnKTtcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoZGlzYWJsZU92ZXJzZWVyTGlzdCwgJ21lbWJlcl9pZCcpO1xuICB9XG5cbiAgcmVtb3ZlUm9sZShldnQ6IGFueSkge1xuICAgIHRoaXMub25SZW1vdmluZ1JvbGUuZW1pdChldnQpO1xuICB9XG5cbiAgLy9iZWxvdyA0IGZ1bmN0aW9ucyBjYW4gYmUgZWFzaWx0eSBjb21iaW5lZCBpbnRvIG9uZSBhcyB0aGV5IGZvbGxvdyBzYW1lIGtpbmQgb2YgcGF0dGVybiBvciBjYW4gYmUgb2ZmbG9hZGVkIHRvIGEgZXh0ZXJuYWwgc2VydmljZVxuICBzZXREZWZhdWx0QXNzaWduZWUoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3QgYXNzaWduZWVNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IGN1cnJlbnREZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIGFzc2lnbmVlTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGN1cnJlbnREZWZhdWx0QXNzaWduZWUpO1xuICB9XG5cbiAgc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQVNTSUdORUUnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gZGVmYXVsdEFzc2lnbmVlLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWFzc2lnbmVlPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPVxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlR3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cCA9IGRlZmF1bHRBc3NpZ25lZUdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUdyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZXREZWZhdWx0UmV2aWV3ZXIoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3QgcmV2aWV3ZXJNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIHJldmlld2VyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xuICB9XG4gIHNldERlZmF1bHRPdmVyc2VlcihldnQ6IGFueSkge1xuICAgIGlmIChldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgZXZ0Py5ncm91cHMsXG4gICAgICAgICdncm91cF9pZCdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xuICAgIH1cbiAgICBjb25zdCBvdmVyc2Vlck1hcCA9IGV2dD8udXNlcnM/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcbiAgICBsZXQgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPVxuICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLFxuICAgICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXJcbiAgICApO1xuICB9XG4gIHNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xuICAgICAgICBjb25zdCByZXZpZXdlciA9IGRlZmF1bHRSZXZpZXdlci5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlckdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHJldmlld2VyR3JvdXAgPSBkZWZhdWx0UmV2aWV3ZXJHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlckdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gZGVmYXVsdE92ZXJzZWVyLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRGYWlsT3ZlcnNlZXIgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyRmFpbCA9IGRlZmF1bHRGYWlsT3ZlcnNlZXIuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXJGYWlsKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSBkZWZhdWx0T3ZlcnNlZXJHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsZWRHcm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsZWRHcm91cCA9IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIG92ZXJzZWVyRmFpbGVkR3JvdXBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gJyc7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMubWFya2FzVG91Y2hlZFNlbGVjdG9yKHR5cGUpO1xuICB9XG4gIG1hcmthc1RvdWNoZWRTZWxlY3RvcihmaWVsZE5hbWU6IGFueSkge1xuICAgIGNvbnN0IHR5cGVGaWVsZDogYW55ID0ge1xuICAgICAgUk9MRTogJ3Byb2dyYW1fcm9sZXMnLFxuICAgICAgQVBQUk9WRVI6ICdwcm9ncmFtX2FwcHJvdmVyJyxcbiAgICAgIE9XTkVSOiAncHJvZ3JhbV9vd25lcnMnLFxuICAgICAgT1dORVJfR1JPVVA6ICdwcm9ncmFtX293bmVyc19ncm91cCcsXG4gICAgfTtcbiAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgZmV0Y2hSb2xlcygpIHtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJvbGVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xuICAgICAgICBjb25zdCBkZWZhdWx0U3lzdGVtVmFsID0gdGhpcy5saXN0cz8uUk9MRVM/LmRhdGFcbiAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJ1xuICAgICAgICAgIClcbiAgICAgICAgICA/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5saXN0cy5TWVNURU1fUk9MRV9JRFMgPSBkZWZhdWx0U3lzdGVtVmFsO1xuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSAnRURJVCcpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIGRlZmF1bHRWYWwpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge30sXG4gICAgfSk7XG4gIH1cbiAgLy9mZXRjaCB0aGUgbGlzdCBvZiByZXNwb25zaWJpbGl0aWVzIGNlbnRlclxuICBmZXRjaFJDKCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLlJDID0gcmVzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoY2FsbGVkRnJvbT86IGFueSkge1xuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZFxuICAgICk7XG4gICAgLy8gaWYgKGZldGNoQWxsKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVVc2Vycyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzVXNlckZpbmQgPSByZXM/LmRhdGE/LnNvbWUoXG4gICAgICAgICAgKHJlczogYW55KSA9PiByZXM/Lm1lbWJlcl9pZCA9PT0gbG9nZ2VkSW5Vc2VyPy5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFpc1VzZXJGaW5kKSB7XG4gICAgICAgICAgcmVzPy5kYXRhPy5wdXNoKGxvZ2dlZEluVXNlcik7XG4gICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0cy5PV05FUlMgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXJlcz8uZGF0YVxuICAgICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgID8uaW5jbHVkZXModGhpcy5jb250cm9scy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX2lkKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdE93bmVycyhyZXM/LmRhdGEsIGNhbGxlZEZyb20pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge30sXG4gICAgfSk7XG4gIH1cblxuICBmZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKSB7XG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWRcbiAgICApO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlR3JvdXBzKHJvbGVJZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5PV05FUlNfR1JPVVBTID0gcmVzO1xuICAgICAgICBjb25zdCByb2xlSWRzOiBBcnJheTxzdHJpbmc+ID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZS5tYXAoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuX2lkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdyb3VwRGV0YWlscyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlLmZpbHRlcihcbiAgICAgICAgICAocm9sZUlkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyb2xlSWQucm9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxldCBpc1NhbWVSb2xlID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJvbGVJZC5yb2xlcy5mb3JFYWNoKChyb2xlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocm9sZUlkcy5pbmNsdWRlcyhyb2xlLnJvbGVJZCkpIHtcbiAgICAgICAgICAgICAgICAgIGlzU2FtZVJvbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKGlzU2FtZVJvbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9sZUlkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBncm91cERldGFpbHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldERlZmF1bHRPd25lcnModXNlckxpc3Q6IGFueSwgY2FsbGVkRnJvbT86IGFueSkge1xuICAgIGNvbnN0IGxvZ2dlZEludXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB1c2VyTGlzdC5maWx0ZXIoXG4gICAgICAoZWxlOiBhbnkpID0+XG4gICAgICAgIFsnQURNSU4nLCAnS0VZX0FETUlOJ10uaW5jbHVkZXMoZWxlPy51c2VyX3JvbGUpICYmXG4gICAgICAgIGVsZT8ubWVtYmVyX2lkICE9IGxvZ2dlZEludXNlcj8ubWVtYmVyX2lkXG4gICAgKTtcbiAgICB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICBbLi4uW2xvZ2dlZEludXNlcl0sIC4uLmRlZmF1bHRPd25lcl0sXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgLy8gdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyk7XG4gICAgY29uc3QgcHJlU2VsZWN0ZWRVc2VycyA9IHRoaXMuZ2V0UHJlU2VsZWN0ZWRPd25lcnMoXG4gICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWUsXG4gICAgICB1c2VyTGlzdFxuICAgICk7XG4gICAgaWYgKGNhbGxlZEZyb20gIT09ICdnZXRQcm9ncmFtRGV0YWlscycpIHtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAncHJvZ3JhbV9vd25lcnMnLFxuICAgICAgICBwcmVTZWxlY3RlZFVzZXJzPy5sZW5ndGhcbiAgICAgICAgICA/IHByZVNlbGVjdGVkVXNlcnNcbiAgICAgICAgICA6IHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJlU2VsZWN0ZWRPd25lcnMocHJldmlvdXNTZWxlY3RlZFVzZXJzOiBhbnksIGN1cnJlbnRVc2VyczogYW55KSB7XG4gICAgbGV0IGZpbmFsVXNlcnMgPSBbXTtcbiAgICBmaW5hbFVzZXJzID0gcHJldmlvdXNTZWxlY3RlZFVzZXJzPy5maWx0ZXIoKHByZXZpb3VzOiBhbnkpID0+XG4gICAgICBjdXJyZW50VXNlcnM/LnNvbWUoXG4gICAgICAgIChjdXJyZW50OiBhbnkpID0+IHByZXZpb3VzPy5tZW1iZXJfaWQgPT09IGN1cnJlbnQ/Lm1lbWJlcl9pZFxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIGZpbmFsVXNlcnM7XG4gIH1cblxuICBmZXRjaE9yZ2FuaXphdGlvblVzZXJzKGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxPcmdVc2VyKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLkFMTF9VU0VSID0gcmVzO1xuICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFUyA9IHJlcztcbiAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlMgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuT1ZFUlNFRVJTID0gcmVzO1xuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSAnRURJVCcpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXM7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICAgIGlmICghdGhpcy5jb250cm9scy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmZXRjaE9yZ2FuaXphdGlvbkdyb3VwKGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQ29tcGxpYW5jZUdyb3VwcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5BTExfR1JPVVAgPSByZXM7XG5cbiAgICAgICAgdGhpcy5saXN0cy5BU1NJR05FRVNfR1JPVVAgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuUkVWSUVXRVJTX0dST1VQID0gcmVzO1xuXG4gICAgICAgIHRoaXMubGlzdHMuT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xuXG4gICAgICAgIGlmICh0aGlzLm1vZGUgIT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSByZXM7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHJlcztcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge30sXG4gICAgfSk7XG4gIH1cblxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcbiAgICBkZXNjcmlwdGlvbjogW10sXG4gICAgb2JqZWN0aXZlOiBbXSxcbiAgfTtcblxuICBzZWxlY3RGaWxlKHR5cGU6IGFueSwgZmlsZXM6IGFueSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModHlwZSwgZmlsZXNbaV0uZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkRmlsZXModHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xuICAgICAgZmlsZV91cmxfcGF0aDogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgbmFtZTogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxuICAgICAgb3JnX2ZpbGU6IGAke2ZpbGU/Lm5hbWV9YCxcbiAgICB9O1xuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVBdHRhY2htZW50KHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBkZXNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xuICAgICAgbGV0IG9iamVjdGl2ZSA9IHRoaXMuY29udHJvbHM/Lm9iamVjdGl2ZV9hdHRhY2htZW50cz8udmFsdWUgPz8gW107XG4gICAgICBpZiAob2JqZWN0aXZlKSB7XG4gICAgICAgIG9iamVjdGl2ZSA9IG9iamVjdGl2ZS5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsUm9sZU93bmVyKGV2dDogYW55KSB7XG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XG4gICAgbGV0IHJvbGVJZCA9IFtdO1xuICAgIGxldCB1c2VyOiBhbnk7XG4gICAgaWYgKGV2dD8udGFyZ2V0Py5jaGVja2VkKSB7XG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3Vwcykge1xuICAgICAgICB1c2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlID0gdXNlcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgICAgWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHVzZXIpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHt9LFxuICAgIH0pO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlR3JvdXBzKHVzZXIpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5yZXM/LmRhdGFdLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgdXNlcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XG4gICAqIEBwYXJhbSBhcnJheVxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIGFycmF5XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSwgYWNjXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgTWFwKClcbiAgICAgICAgKVxuICAgICAgICAudmFsdWVzKClcbiAgICApO1xuICB9XG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHNhdmVQcm9ncmFtKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGF5bG9hZCA9IHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sIHRoaXMpO1xuICAgIGlmIChwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFByb2dyYW1JZCA9IHJlcy5faWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSkge1xuICAgICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocGF5bG9hZCAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGRhdGVQcm9ncmFtKHBheWxvYWQsIHRoaXMucHJvZ3JhbUlkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgICAgICAgIGlmIChlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKSB7XG4gICAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Byb2dyYW0nOlxuICAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2aWV3UHJvZ3JhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBsZXQgdXJsOiBzdHJpbmc7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH1cblxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgKz0gJy9wcm9ncmFtL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcbiAgICB9XG5cbiAgICB0aGlzLmlmcmFtZVNlcnZpY2UucmVkaXJlY3RJZkluSWZyYW1lKHVybCwgdHJ1ZSk7XG4gIH1cbiAgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IERFRkFVTFRfVkFMVUVTID0ge1xuICAgICAgcHJvZ3JhbV90eXBlOiAxLFxuICAgICAgcHJvZ3JhbV9uYW1lOiAnJyxcbiAgICAgIHByb2dyYW1fZGVzY3JpcHRpb246ICcnLFxuICAgICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZTogJycsXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX3JvbGVzOiBbXSxcbiAgICAgIGFsbF91c2VyX2luX3JvbGU6IGZhbHNlLFxuICAgICAgcHJvZ3JhbV9vd25lcnM6IFtdLFxuICAgICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hcHByb3ZlcjogW10sXG4gICAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogJ1BBU1RfRVZFTlQnLFxuICAgICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogZmFsc2UsXG4gICAgICBsb2NrX3Njb3BlX2NoYW5nZTogZmFsc2UsXG4gICAgICBmcmFtZXdvcms6IFtdLFxuICAgICAgcmM6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtdLFxuICAgICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogJ0FMTCcsXG4gICAgICBwcm9ncmFtX3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW10sXG4gICAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiAnU0VRVUVOVElBTCcsXG4gICAgICBwcm9ncmFtX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW10sXG4gICAgICBldmlkZW5jZV9yZXF1aXJlZDogZmFsc2UsXG4gICAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IGZhbHNlLFxuICAgICAgY3VzdG9tX2ZpZWxkczogW10sXG4gICAgICBwcm9ncmFtX3N0YXRlOiAwLFxuICAgIH07XG4gICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKERFRkFVTFRfVkFMVUVTKTtcbiAgICB0aGlzLmVkaXRvckRhdGEgPSB7XG4gICAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcbiAgICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJycsXG4gICAgfTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gZmFsc2U7XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHRydWUpO1xuICAgIHRoaXMuZm9ybS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGJsb2NrOiAnc3RhcnQnLFxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogJycsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cbiAgICovXG4gIGdldFByb2dyYW1EZXRhaWxzKCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2VcbiAgICAgIC5nZXRQcm9ncmFtKHRoaXMucHJvZ3JhbUlkKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX25hbWUnLCByZXM/Lm5hbWUpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgcmVzPy5wcm9ncmFtVHlwZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZScsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsX3VzZXJfaW5fcm9sZScsIHJlcz8uYWxsX3VzZXJfaW5fcm9sZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICByZXM/LmRlc2NyaXB0aW9uPy5hdHRhY2htZW50c1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnLFxuICAgICAgICAgIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LmF0dGFjaG1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicsXG4gICAgICAgICAgcmVzPy5jYWxjdWxhdGVfcGFzdF91cGNvbWluZ19ldmVudFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5wcm9ncmFtX2ZyZXF1ZW5jeSAmJlxuICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXG4gICAgICAgICAgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIHJlcz8ubG9ja19zY29wZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmxvY2tfc2NvcGUgJiZcbiAgICAgICAgICAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5TQ09QRV9DSEFOR0VTID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9zdGF0ZScsIHJlcz8uc3RhdGUpO1xuICAgICAgICBjb25zdCByYyA9IHJlcy5yY19kZXRhaWxzLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5lbGUsIGl0ZW1fbmFtZTogZWxlPy5yY19uYW1lLCBpdGVtX2lkOiBlbGU/LnJjX2lkIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCByYyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LnJjX2RldGFpbHMgJiZcbiAgICAgICAgICByZXM/LnJjX2RldGFpbHM/Lmxlbmd0aCAmJlxuICAgICAgICAgICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLCByZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsIHJlcz8uaXNfa2V5X2V2aWRlbmNlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChyZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnIHx8IHJlcz8uaXNfa2V5X2V2aWRlbmNlKSAmJlxuICAgICAgICAgICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJyxcbiAgICAgICAgICByZXMuZGVmYXVsdF9hc3NpZ25lZV90eXBlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJyxcbiAgICAgICAgICByZXMuZGVmYXVsdF9yZXZpZXdlcnNfdHlwZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSByZXMuZGVzY3JpcHRpb24/LnRleHQ7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtT2JqZWN0aXZlID0gcmVzLnByb2dyYW1fb2JqZWN0aXZlPy50ZXh0O1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywge1xuICAgICAgICAgIC4uLnJlcy5mcmFtZXdvcmtfZGV0YWlscyxcbiAgICAgICAgICAuLi57IF9pZDogcmVzPy5mcmFtZXdvcmtfZGV0YWlscz8uZnJhbWV3b3JrX2lkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByb2xlID0gcmVzPy5yb2xlcz8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBfaWQ6IGVsZT8ucm9sZUlkLFxuICAgICAgICAgICAgcm9sZU5hbWU6IGVsZT8ucm9sZU5hbWUsXG4gICAgICAgICAgICBsaWNlbnNlVHlwZTogZWxlPy5saWNlbnNlVHlwZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25Hcm91cE5hbWU6IGVsZT8ucGVybWlzc2lvbkdyb3VwTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcbiAgICAgICAgaWYgKHJlcz8ucm9sZXMgJiYgcmVzPy5yb2xlcz8ubGVuZ3RoICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzLmFzc2Vzc21lbnREYXRhLmxlbmd0aCkge1xuICAgICAgICAgIHJlcy5hc3Nlc3NtZW50RGF0YSA9IHJlcy5hc3Nlc3NtZW50RGF0YS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5lbGUsXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IGVsZT8uYXNzZXNzbWVudHMubWFwKChhc3Nlc3M6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmFzc2VzcywgaWQ6IGFzc2Vzcz8uX2lkIH07XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NFU1NNRU5UID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0FwcHJvdmVyRGlzYWJsZWQgPSByZXM/LmlzQXBwcm92ZXJEaXNhYmxlZCA/PyBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaXNBcHByb3ZlckRpc2FibGVkKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KFsnQVBQUk9WRVInXSk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9wdWxhdGVNZW1iZXJzKHJlcyk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVHcm91cHMocmVzKTtcbiAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygnZ2V0UHJvZ3JhbURldGFpbHMnKTtcbiAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XG4gICAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Vc2VycygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwb3B1bGF0ZU1lbWJlcnMocmVzOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgaWRzID0gW1xuICAgICAgLi4ubmV3IFNldChbXG4gICAgICAgIC4uLihyZXM/Lm93bmVycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmFwcHJvdmVycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ucmV2aWV3ZXJzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUpLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbCA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtZWJlckJ5SWRzKGlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGlmIChyZXMub3duZXJzICYmIHJlcz8ub3duZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5vd25lcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9XTkVSUyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5hcHByb3ZlcnMgJiZcbiAgICAgICAgICByZXM/LmFwcHJvdmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5hc3NpZ25lZV9pZHMgJiYgcmVzPy5hc3NpZ25lZV9pZHM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCBhc3NpZ25lZSk7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IGFzc2lnbmVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8ucmV2aWV3ZXJzICYmIHJlcz8ucmV2aWV3ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2Vycyk7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJldmlld2VycztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5kZWZhdWx0X3Jldmlld2VycyAmJiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5kZWZhdWx0X3Jldmlld2Vycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/Lm92ZXJzZWVycyAmJiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWw/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGNjID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgY2MpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSBjYztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmXG4gICAgICAgICAgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGggfHxcbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDQyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBkZWZhdWx0Q0MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgcG9wdWxhdGVHcm91cHMocmVzOiBhbnkpIHtcbiAgICBjb25zdCBpZHMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFtcbiAgICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LnJldmlld2VyX2dyb3VwX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICBdKSxcbiAgICBdO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtYmVyQnlHcm91cHMoaWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3A/LmRhdGE7XG4gICAgICAgIGlmIChyZXMub3duZXJzX2dyb3VwICYmIHJlcz8ub3duZXJzX2dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5vd25lcnNfZ3JvdXA/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMuYXNzaWduZWVfZ3JvdXBfaWRzICYmIHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSBhc3NpZ25lZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzICYmXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzICYmIHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlciA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LnJldmlld2VyX2dyb3VwX2lkcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXIpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXZpZXdlcjtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHMgJiZcbiAgICAgICAgICByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZT8uZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXIpO1xuICAgICAgICAgIHRoaXMuY29udHJvbHMucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYS52YWx1ZSA9XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gJ0FOWU9ORSdcbiAgICAgICAgICAgICAgOiB0aGlzLmNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgJiZcbiAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cCA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gb3ZlcnNlZXJHcm91cDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyAmJlxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgICBkZWZhdWx0T3ZlcnNlZXJHcm91cFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyAmJlxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyRmFpbHVyZUdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgZWxlPy5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgICBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzIG9mIG5vdyBncm91cHMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHJldmlld2VyIGFuZCBvdmVyc2VlZXIgaWYgdGhpcyBncm91cCBmZWF0dXJlIGdldHMgaW5jb3BlcmF0ZWQgaW5cbiAgICAgIC8vZnV0dXJlIG5lZWQgdG8gYWRkIGdyb3VwIGNvbmRpdGlvbiBoZXJlIHRvIHByZXBvcHVsYXRlIHRoZSBkYXRhIHdoaWxlIGVkaXRpbmcuXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgcmVzZXRBZGRpdGlvbmFsT3B0aW9uKCkge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5ST0xFUyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVBQUk9WRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNVU1RPTV9GSUVMRFMgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk6IGFueSB7XG4gICAgY29uc3QgY29kZSA9IFtcbiAgICAgICdQUk9HUkFNX0ZSRVFVRU5DWScsXG4gICAgICAnU0NPUEVfQ0hBTkdFUycsXG4gICAgICAnUkMnLFxuICAgICAgJ0FTU0lHTkVFUycsXG4gICAgICAnUkVWSUVXRVInLFxuICAgICAgJ09WRVJTRUVSJyxcbiAgICAgICdBU1NFU1NNRU5UJyxcbiAgICAgICdGT1JNQVRFX0VWSURFTkNFJyxcbiAgICAgICdDVVNUT01fRklFTERTJyxcbiAgICBdO1xuICAgIGxldCBpc01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICBjb2RlLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0pIHtcbiAgICAgICAgaXNNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmlzUHJvZ3JhbVNjb3BlID0gaXNNb3JlT3B0aW9uO1xuICB9XG4gIGVuYWJsZWZlYXR1cmUoKSB7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcm9sZV9pbXByb3ZlbWVudHMnXG4gICAgKTtcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9jb21wbGlhbmNlX2ZyYW1ld29yaydcbiAgICApO1xuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ0dyb3VwcyA9XG4gICAgICB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Byb2dyYW1fZ3JvdXBzJyk7XG4gICAgdGhpcy50b29sVGlwRGF0YS5vd25lciA9IHRoaXMuZmVhdHVyZWZsYWdyb2xlXG4gICAgICA/ICdPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IFBvd2VyIFVzZXI8L3N0cm9uZz4gYW5kIGFsbCA8Yj5Qb3dlciBVc2VyczwvYj4gd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LidcbiAgICAgIDogJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0Lic7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yY19saXN0aW5nJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wcm9ncmFtXCIgI2Zvcm0+XG4gIDxmb3JtIG5vdmFsaWRhdGUgW2Zvcm1Hcm91cF09XCJwcm9ncmFtRm9ybVwiPlxuICAgIDwhLS0gUHJvZ3JhbSBDYXRlZ29yeSBUeXBlIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV90eXBlPy52YWx1ZSA+IC0xXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5pc3N1ZV90eXBlXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlBST0dSQU0gVFlQRSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXG4gICAgICA+XG4gICAgICA8dGFiLXNlbGVjdG9yXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2dyYW1fdHlwZVwiXG4gICAgICAgIFtkaXNwbGF5QXJyYXldPVwiY29uc3RhbnRzPy5jYXRlZ29yeVR5cGVcIlxuICAgICAgPjwvdGFiLXNlbGVjdG9yPlxuICAgICAgPCEtLSA8cCAqbmdJZj1cInByb2dyYW1fbmFtZT8uaW52YWxpZFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIHByb2dyYW0gdHlwZTwvcD4gLS0+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBGcmFtZXdvcmsgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiaXNBc2NlbnRBbGxvd2VkXCJcbiAgICAgIFtjaGVja2VkXT1cImZhbHNlXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5GUkFNRVdPUks8L2xhYmVsPlxuICAgICAgPCEtLSBbc2VsZWN0RGl2XT1cInRydWVcIiAtLT5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYSBmcmFtZXdvcmsgdGhhdCB0aGlzIFByb2dyYW0gcmVsYXRlcyB0bydcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJycsICdGUkFNRVdPUksnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSAoY2xpY2spPVwicmVtb3ZlKCcnLCAnRlJBTUVXT1JLJylcIiAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiIGNsYXNzPVwiaWNvbnNcIiA+JiN4ZTkwZDs8L2k+IHt7Y29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IE5hbWUgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LnZhbHVlPy50cmltKCk/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMud2hhdFwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5QUk9HUkFNIE5BTUUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIElucHV0VHJpbVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX25hbWVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGUgUHJvZ3JhbSBuYW1lP1wiXG4gICAgICAvPlxuXG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LmVycm9ycyAmJiBjb250cm9scz8ucHJvZ3JhbV9uYW1lPy50b3VjaGVkXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICA+XG4gICAgICAgIEVudGVyIGEgbmFtZSBmb3IgdGhpcyBQcm9ncmFtLlxuICAgICAgPC9wPlxuICAgICAgPHAgKm5nSWY9XCJpc05hbWVFeGlzdHNcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgUHJvZ3JhbSBuYW1lIGFscmVhZHkgZXhpc3RzLlxuICAgICAgPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1maWxlcyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1tdC0xXCI+XG4gICAgICAgIDxmaWxlLXBpbGxcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBhdHRhY2htZW50IG9mIGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZVxuICAgICAgICAgICAgICB8IHNsaWNlIDogMCA6IDJcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIlxuICAgICAgICAgIFtuYW1lXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYXR0YWNobWVudD8udXBsb2FkaW5nXCJcbiAgICAgICAgICAoZGVsZXRlKT1cImRlbGV0ZUF0dGFjaG1lbnQoJ0RFU0NSSVBUSU9OJywgYXR0YWNobWVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmlsZS1waWxsPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWU/Lmxlbmd0aCA+IDJcIlxuICAgICAgICAgIGNsYXNzPVwiZmlsZS1jb3VudFwiXG4gICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRGaWxlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgK3t7IGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZT8ubGVuZ3RoIC0gMiB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1cGxvYWRGaWxlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcC0yXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBhdHRhY2htZW50IG9mIGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMlxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmlsZS1waWxsXG4gICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlPy5zcGxpdCgnLicpLnBvcCgpXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdHRhY2htZW50Py51cGxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgKGRlbGV0ZSk9XCJkZWxldGVBdHRhY2htZW50KCdERVNDUklQVElPTicsIGF0dGFjaG1lbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9maWxlLXBpbGw+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgIChzZW5kU2F2ZWRGaWxlcyk9XCJzZWxlY3RGaWxlKCdERVNDUklQVElPTicsICRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/LmRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgIDwvdmNvbXBseS1lZGl0b3I+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBPYmplY3RpdmUgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX29iamVjdGl2ZT8udmFsdWU/LnRyaW0oKT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09CSkVDVElWRSdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ09CSkVDVElWRSdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5vYmplY3RpdmVzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPk9CSkVDVElWRVxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiAtLT5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmVcIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnT0JKRUNUSVZFJywgJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCAkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/Lm9iamVjdGl2ZVwiXG4gICAgICA+XG4gICAgICA8L3Zjb21wbHktZWRpdG9yPlxuICAgICAgPCEtLSA8cCAqbmdJZj1cIiFpc09iamVjdGl2ZVZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U3BlY2lmeSB0aGUgb2JqZWN0aXZlIGZvciB0aGlzIFByb2dyYW0uPC9wPiAtLT5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFJvbGVzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJPTEVTXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1JPTEUnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1JPTEUnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJvbGVzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgaWQ9XCJwZXJtaXNzaW9uZ3JvdXBcIlxuICAgICAgICA+e3sgZmZfcmNfbGlzdGluZyA/IFwiUEVSTUlTU0lPTlNcIiA6IFwiUEVSTUlTU0lPTiBHUk9VUChTKVwiIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuXG4gICAgICAgID48aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgZmZfcmNfbGlzdGluZ1xuICAgICAgICAgICAgICA/ICdQZXJtaXNzaW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgK1xuICAgICAgICAgICAgICAgIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JylcbiAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICtcbiAgICAgICAgICAgICAgICAnb2YgYSBQcm9ncmFtLidcbiAgICAgICAgICAgICAgOiAnUGVybWlzc2lvbiBncm91cChzKSBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgK1xuICAgICAgICAgICAgICAgIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JylcbiAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICtcbiAgICAgICAgICAgICAgICAnb2YgYSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUm9sZUhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgaWQ9XCJwbGFjZWhvbGRlcm5hbWVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgZmZfcmNfbGlzdGluZ1xuICAgICAgICAgICAgPyAnV2hpY2ggdXNlciBwZXJtaXNzaW9ucyBoYXZlIGFjY2VzcyB0byB0aGlzIHByb2dyYW0/J1xuICAgICAgICAgICAgOiAnV2hpY2ggdXNlciBwZXJtaXNzaW9uIGdyb3VwcyBoYXZlIGFjY2VzcyB0byB0aGlzIHByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnUk9MRScpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8uX2lkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwgJ1JPTEUnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgID8gY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIGZlYXR1cmVmbGFncm9sZSAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgPyBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgIDogY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5yb2xlTmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyb2xlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/Ll9pZClcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwnUk9MRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7ZmVhdHVyZWZsYWdyb2xlICYmIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJvbGUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdST0xFJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdST0xFJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyBmZWF0dXJlZmxhZ3JvbGUgPyBcIkFkZCBhIHBlcm1pc3Npb24gZ3JvdXAocylcIiA6IFwiQWRkIGEgcm9sZShzKVwiIH19XG4gICAgICA8L3A+XG4gICAgICA8YXBwLXBvcG92ZXIgI3JvbGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZSB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFsaXN0cy5TWVNURU1fUk9MRV9JRFMuaW5jbHVkZXMoZGF0YT8uX2lkKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUm9sZShkYXRhLCAnUk9MRScpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiYgZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgID8gZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDogZGF0YT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gT3duZXJzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/Lk9XTkVSU1wiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzLnZhbHVlPy5sZW5ndGggPiAwIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cC52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09XTkVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdPV05FUidcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY2FzZV9vd25lcnNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+T1dORVIoUykgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAqbmdJZj1cInRvb2xUaXBEYXRhLm93bmVyICE9PSAnJ1wiXG4gICAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5vd25lclwiXG4gICAgICAgICAgICAgIGlkPVwiT3duZXJIZWxwVGV4dFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnMudmFsdWVbMF1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnT1dORVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIiA+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdPV05FUidcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIG93bmVyKHMpPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtbXQtMlwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMlwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlXG4gICAgICAgICAgICAgID8gXCJBTEwgVVNFUlMgQVNTT0NJQVRFRCBXSVRIIFRIRSBTRUxFQ1RFRCBQRVJNSVNTSU9OIEdST1VQU1wiXG4gICAgICAgICAgICAgIDogXCJBTEwgVVNFUlMgQVNTT0NJQVRFRCBXSVRIIFRIRSBTRUxFQ1RFRCBST0xFU1wiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzd2l0Y2hcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxfdXNlcl9pbl9yb2xlXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEFsbFJvbGVPd25lcigkZXZlbnQpXCJcbiAgICAgICAgPjwvc3dpdGNoPlxuICAgICAgPC9kaXY+XG4gICAgICA8YXBwLXBvcG92ZXIgI293bmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3duZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSB8IHNsaWNlIDogMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICAgICAgICkuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3duZXIsICdPV05FUicpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvd25lcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyPy51c2VyX3JvbGVcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG93bmVyLCAnT1dORVJfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBcHByb3ZlcnMgLS0+XG4gICAgPCEtLSBSZW1vdmluZyB0aGlzIG9wdGlvbiBpbiBQcm9ncmFtIHNpbXBsaWZpY2F0aW9uIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFQUFJPVkVSICYmICFwcm9ncmFtU2ltcGxpZnlGbGFnXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0FQUFJPVkVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnQVBQUk9WRVInXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuYXBwcm92YWxcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+QVBQUk9WRVJcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBbiBBcHByb3ZlciBpcyByZXNwb25zaWJsZSBmb3IgYXBwcm92aW5nIGEgUHJvZ3JhbS4gV2hlcmUgYW4gQXBwcm92ZXIgaXMgc2VsZWN0ZWQsIHRoZSBQcm9ncmFtIGFuZCBhbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGF0IFByb2dyYW0gd2lsbCBvbmx5IGNvbW1lbmNlIG9uY2UgdGhlIFByb2dyYW0gaGFzIGJlZW4gYXBwcm92ZWQuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJBcHByb3ZlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidXaG8gaXMgcmVzcG9uc2libGUgZm9yIGFwcHJvdmluZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0FwcHJvdmVyRGlzYWJsZWRcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVBQUk9WRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sICdBUFBST1ZFUicpXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXNBcHByb3ZlckRpc2FibGVkID09PSBmYWxzZVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdLCdBUFBST1ZFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTkgdngtbXItMSBjcm9zc1wiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FQUFJPVkVSJyAmJiBpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FQUFJPVkVSJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBQZXJmb3JtYW5jZSBDYWxjdWxhdGVkIC0tPlxuICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uPy52YWx1ZVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1BFUkZPUk1BTkNFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1BFUkZPUk1BTkNFJ1wiXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcGVyZm9ybWFuY2UtY2FsYy5zdmcnXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+SE9XIFNIT1VMRCBUSEUgUEVSRk9STUFOQ0UgT0YgVEhJUyBQUk9HUkFNIEJFIENBTENVTEFURUQ/PC9sYWJlbD5cbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicGVyZm9ybWFuY2VfY2FsY3VsYXRpb25cIiBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8ucGVyZm9ybWFuY2VDYWxjdWxhdGlvblwiPlxuICAgICAgICAgICAgPC90YWItc2VsZWN0b3I+XG4gICAgICAgIDwvZm9ybS1maWVsZD4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUHJvZ3JhbVNjb3BlXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2NvcGUtbGFiZWwgdngtZnMtMTAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbWItNSB2eC1saC00IHZ4LWQtaW5saW5lLWJsb2NrXCJcbiAgICAgID5cbiAgICAgICAgUFJPR1JBTSBTQ09QRVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIDxpICBjbGFzcz1cImljb25zIGluZm8taWNvbiB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCIgW2FwcFRvb2x0aXBdPVwidG9vbHRpcC5wcm9ncmFtU2NvcGVcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+IC0tPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJpY29uIGluZm8taWNvbiB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgKm5nSWY9XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcCAhPT0gJydcIlxuICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgID5cbiAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcGVcIlxuICAgICAgICAgICAgaWQ9XCJQU0hlbHBUZXh0XCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wb3BvdmVyLWhvdmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBQcm9ncmFtIEZyZXF1ZW5jeSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5QUk9HUkFNX0ZSRVFVRU5DWVwiXG4gICAgICBbY2hlY2tlZF09XCJbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKGNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZSlcIlxuICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJFUVVFTkNZJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnRlJFUVVFTkNZJ1xuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJlY3VycmluZ1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiIGlkPVwiUERDaGFuZ2VcIlxuICAgICAgICA+UFJPR1JBTSBEVVJBVElPTlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Byb2dyYW0gRHVyYXRpb24gcmVmZXJzIHRvIHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS4gQSBQcm9ncmFtIGNhbiBvY2N1ciBpbiBwZXJwZXR1aXR5LCBvciBpdCBjYW4gb2NjdXIgdW50aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBidXNpbmVzcyBjeWNsZSB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiAnICtcbiAgICAgICAgICAgIGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRDeWNsZS5idXNpbmVzc19jeWNsZSArXG4gICAgICAgICAgICAnLiAgQWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhhdCBQcm9ncmFtIHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lIFByb2dyYW0gRHVyYXRpb24uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJQcm9ncmFtRHVyYXRpb25IZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQgdngtbWItMFwiPklzIHRoaXMgcHJvZ3JhbSByZWN1cnJpbmc/PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidyZWN1cnJpbmdfZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICA+WUVTPC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICAgW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgZmFsc2UpXCJcbiAgICAgICAgICAgICAgPk5PPC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFNjb3BlIENoYW5nZXMgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uU0NPUEVfQ0hBTkdFU1wiXG4gICAgICBbY2hlY2tlZF09XCJbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKGNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWUpXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1NDT1BFJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdTQ09QRSdcIlxuICAgICAgW2ltZ109XCJBU1NFVFMubG9ja19zY29wZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5Mb2NrIHRoZSBQcm9ncmFtIFNjb3BlXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnSWYgdGhlIFByb2dyYW0gU2NvcGUgaXMgbG9ja2VkLCBuZWl0aGVyIHRoZSBQcm9ncmFtIG5vciB0aGUgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbSBjYW4gYmUgZWRpdGVkIG9uY2UgdGhlIFByb2dyYW0gYmVnaW5zLiBJbiBvcmRlciB0byBlZGl0IHRoZSBQcm9ncmFtIG9yIHRoZSBsaW5rZWQgcmVzcG9uc2liaWxpdGllcywgdGhlIFByb2dyYW0gZGV0YWlscyB3aWxsIG5lZWQgdG8gYmUgZWRpdGVkLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiU2NvcGVDaGFuZ2VzSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICA+V291bGQgeW91IGxpa2UgdG9cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWxhYmVsLXR4dCB2eC1mdy01MDBcIj5sb2NrIGNoYW5nZXM8L3NwYW4+IHRvIHRoZVxuICAgICAgICAgIHByb2dyYW0gc2NvcGU/PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwIHByb2dyYW1cIj5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2xvY2tfc2NvcGVfY2hhbmdlJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtuYW1lXT1cIidsb2NrX3Njb3BlX2NoYW5nZSdcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2xvY2tfc2NvcGVfY2hhbmdlJywgZmFsc2UpXCJcbiAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxuICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiZmFsc2VcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnRlJBTUVXT1JLJ1wiXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnJ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkZSQU1FV09SSzwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LmZyYW1ld29yay52YWx1ZSwnRlJBTUVXT1JLJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJmcmFtZXdvcmsucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rNTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdGUkFNRVdPUksnXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZnJhbWV3b3JrIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlIGZyYW1ld29yayBuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxuXG4gICAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUkNcIlxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1JDJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdSQydcIlxuICAgICAgW2ltZ109XCJBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlJFU1BPTlNJQklMSVRZIENFTlRFUlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlLiBXaGVyZSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXNwb25zaWJpbGl0aWVzIENlbnRlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJSQ0hlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JDJylcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1doaWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlICYmIGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5yYz8udmFsdWVbMF0sICdSQycpXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnJjPy52YWx1ZVswXSwnUkMnKVwiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAgPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ1JDJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdSQycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcmMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByYyBvZiBjb250cm9scz8ucmM/LnZhbHVlIHwgc2xpY2UgOiAxXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKHJjLCAnUkMnKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAge3sgcmM/Lml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIEFzc2lnbmVlIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFTU0lHTkVFU1wiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIlsnQVNTSUdORUUnLCAnREVGQVVMVF9BU1NJR05FRSddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnQVNTSUdORUUnLCAnREVGQVVMVF9BU1NJR05FRSddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY2FzZV9hc3NpZ25lZXNcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCJcbiAgICAgICAgPkFTU0lHTkVFU1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0Fzc2lnbmVlcyBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gdGhlbS4gV2hlcmUgQXNzaWduZWVzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBBc3NpZ25lZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJBc3NpZ25lZUhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVNTSUdORUUnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdLCAnQVNTSUdORUUnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnQVNTSUdORUVfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVfZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXSwnQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlX2dyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnQVNTSUdORUUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCAnQVNTSUdORUUnKVwiIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVfZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0FTU0lHTkVFX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgID5ERUZBVUxUIEFTU0lHTkVFXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBBc3NpZ25lZXMgZm9yIGFsbCBuZXcgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIElmIGEgRGVmYXVsdCBBc3NpZ25lZXMgaXMgc2VsZWN0ZWQsIHRoZSB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCB0aGUgQXNzaWduZWUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuICdcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiREFIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgYXNzaWduZWVzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9BU1NJR05FRSdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWUucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXSwnREVGQVVMVF9BU1NJR05FRScpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZUdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNkZWZhdWx0QXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdEFzc2lnbmVlR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJhZGlvLWdyb3VwLXNlbGVjdG9yXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICAgICAgPlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LmFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQUxMJ1wiXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnQUxMJylcIlxuICAgICAgICA+XG4gICAgICAgICAgQUxMIFNFTEVDVEVEIFBFUlNPTlMgTkVFRCBUTyBDT01QTEVURSBUSElTXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggcGVyc29uLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCInYXNzaWduZWUnXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWUgPT09ICdBTllPTkUnXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBvbmx5IG9uZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGNyZWF0ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUmV2aWV3ZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5SRVZJRVdFUlwiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIlsnUkVWSUVXRVInLCAnREVGQVVMVF9SRVZJRVdFUiddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnUkVWSUVXRVInLCAnREVGQVVMVF9SRVZJRVdFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlJldmlld2Vyc1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Jldmlld2VycyBhcmUgcmVxdWlyZWQgdG8gcmV2aWV3IHJlc3BvbnNpYmlsaXRpZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY29tcGxldGVkLiBXaGVyZSBSZXZpZXdlcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIFJldmlld2VycyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIlJldmlld2VySGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaG8gaXMgcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JFVklFV0VSJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXSwgJ1JFVklFV0VSJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ1JFVklFV0VSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXSwnUkVWSUVXRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ1JFVklFV0VSJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShyZXZpZXdlciwgJ1JFVklFV0VSJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Jldmlld2VyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5ERUZBVUxUIFJldmlld2VyXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBSZXZpZXdlcnMgZm9yIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtLiBXaGVyZSBhIHVzZXIgaGFzIGJlZW4gc3BlY2lmaWVkIGFzIGEgRGVmYXVsdCBSZXZpZXdlciwgdGhhdCB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCBhcyB0aGUgUmV2aWV3ZXIgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJEUkhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUidcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCByZXZpZXdlcnMgZm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX1JFVklFV0VSJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9SRVZJRVdFUidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdFJldmlld2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsICdERUZBVUxUX1JFVklFV0VSJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyYWRpby1ncm91cC1zZWxlY3RvclwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCJcbiAgICAgID5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiXG4gICAgICAgICAgICBzZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnU0VRVUVOVElBTCcpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBTRVFVRU5USUFMXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgb25lIGF0IGEgdGltZSBpbiB0aGUgc2VxdWVuY2UgZGVmaW5lZCBieSB5b3UuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQU5ZT05FJyB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiXG4gICAgICAgICAgICBzZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnQU5ZT05FJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRURcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ1RoZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHNlbnQgZm9yIHJldmlldyB0byBhbGwgcmV2aWV3ZXJzIGF0IHRoZSBzYW1lIHRpbWUuIElmIGFueW9uZSBvZiB0aGUgcmV2aWV3ZXIgcmV2aWV3cyB0aGUgcmVzcG9uc2liaWxpdHksIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyByZXZpZXdlZC4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBPdmVyc2VlciAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/Lk9WRVJTRUVSXCJcbiAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09WRVJTRUVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnT1ZFUlNFRVInLCAnREVGQVVMVF9PVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKFxuICAgICAgICAgIGFjdGl2ZUxpc3RcbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICBbJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgICBcIlxuICAgICAgICA+T3ZlcnNpZ2h0c1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ092ZXJzaWdodHMgcmVjZWl2ZSB1cGRhdGVzIHdoZW4gYSByZXNwb25zaWJpbGl0eSBpcyBjb21wbGV0ZWQsIGNvbXBsZXRlZCB3aXRoIGRlbGF5IG9yIG5vdCBjb21wbGV0ZWQuIFdoZXJlIE92ZXJzaWdodHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIE92ZXJzaWdodHMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJvdmVyc2VlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIFsnREVGQVVMVF9PVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICAgIFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnT1ZFUlNFRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdLCAnT1ZFUlNFRVInKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwnT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCBcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSwnT1ZFUlNFRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnT1ZFUlNFRVInXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09WRVJTRUVSJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdPVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ09WRVJTRUVSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxuZy1jb250YWluZXIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiWydPVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgICAgICA+REVGQVVMVCBPdmVyc2lnaHRcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgT3ZlcnNpZ2h0IGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgT3ZlcnNpZ2h0LCB0aGF0IHVzZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNlbGVjdGVkIGFzIHRoZSBPdmVyc2lnaHQgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgIGlkPVwiRE9IZWxwVGV4dFwiXG4gICAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgICA+PC9sYWJlbFxuICAgICAgICA+XG4gICAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBbJ09WRVJTRUVSJywgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX09WRVJTRUVSJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdERUZBVUxUX09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlckRlZmF1bHRHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPiA8L2xhYmVsPlxuICAgICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgICAgY2xhc3M9XCJ2eC1tdC0yXCJcbiAgICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICAgIFtsaW5lXT1cIjNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJbJ09WRVJTRUVSJywgJ0RFRkFVTFRfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbm90IGNvbXBsZXRlZCB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICA/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzRGVmYXVsdEZhaWwucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0RmFpbCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlclxuICAgICAgICAgICAgICAgICAgICA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0RmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwXG4gICAgICAgICAgICAgICAgICAgID8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBc3Nlc3NtZW50IC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQVNTRVNTTUVOVFwiXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NFU1NNRU5UJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnQVNTRVNTTUVOVCdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5hc3Nlc3NtZW50c1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5BU1NFU1NNRU5UU1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0Fzc2Vzc21lbnRzIGFyZSBhIGRpZ2l0YWwgZm9ybSB0aGF0IGFyZSBjcmVhdGVkIGluIOKAnEFzc2Vzc21lbnTigJ0gd2l0aGluIHRoZSBDb21wbGlhbmNlIE1vZHVsZS4gV2hlcmUgQXNzZXNzbWVudHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2Vzc21lbnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQXNzZXNzbWVudEhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBhc3Nlc3NtZW50cyBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVNTRVNTTUVOVCcpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZVxuICAgICAgICAgICAgICAgIHwgYXNzZXNzbWVudFJlc29sdmVyIGFzIGFzc2Vzc21lbnRzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwgJ0FTU0VTU01FTlQnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBhc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInByb2dyYW1fYXNzZXNzbWVudHMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImFzc2Vzc21lbnRzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGFzc2Vzc21lbnRzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZSB8IGFzc2Vzc21lbnRSZXNvbHZlcikgYXMgYXNzZXNzbWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwnQVNTRVNTTUVOVCcpXCI+JiN4ZTkwZDs8L2k+e3thc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXNzZXNzbWVudHM/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbV9hc3Nlc3NtZW50cy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2Fzc2Vzc21lbnRzPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnQVNTRVNTTUVOVCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQVNTRVNTTUVOVCcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbV9hc3Nlc3NtZW50cyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBhc3Nlc3NtZW50IG9mIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IGFzc2Vzc21lbnRSZXNvbHZlclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50LCAnQVNTRVNTTUVOVCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzZXNzbWVudD8uYXNzZXNzbWVudF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBGb3JtYXQgJiBFdmlkZW5jZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkZPUk1BVEVfRVZJREVOQ0VcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlKVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuZm9ybWF0X2V2aWRlbmNlXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPkV2aWRlbmNlXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgYSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHJlcXVpcmVkIGZvciBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiRXZpZGVuY2VIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIlxuICAgICAgICAgID5EbyBhbGwgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBwcm9ncmFtIHJlcXVpcmUgZXZpZGVuY2U/PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwIHByb2dyYW1cIj5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgZmFsc2UpXCJcbiAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0yXCI+QWxsb3cgYW55IGZpbGUgdG8gYmUgbWFya2VkIGFzXG4gICAgICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICAgICAgICBldmlkZW5jZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxzd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsJGV2ZW50Py50YXJnZXQ/LmNoZWNrZWQpXCI+PC9zd2l0Y2g+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBDdXN0b20gRmllbGQgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5DVVNUT01fRklFTERTXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5jdXN0b21fZmllbGRzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5jdXN0b21fZmllbGRzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPkNVU1RPTSBGSUVMRFxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1doZXJlIGEgY3VzdG9tIGZpZWxkIGlzIHNwZWNpZmllZCwgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtIHdpbGwgY29udGFpbiB0aGF0IGN1c3RvbSBmaWVsZC4gQ3VzdG9tIGZpZWxkcyBlbmFibGUgdGhlIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBtZXRhIGRhdGEuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJDRkhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxjdXN0b20tZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tX2ZpZWxkc1wiPjwvY3VzdG9tLWZpZWxkPlxuICAgIDwvZm9ybS1maWVsZD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjwhLS0gbGlzdCBvZiByb2xlcyAtLT5cbjxyb2xlLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUk9MRSdcIlxuICBbc2VsZWN0ZWRdPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuUk9MRVNcIlxuICBbbGlzdF09XCJsaXN0cz8uUk9MRVM/LmRhdGEgPz8gW11cIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ1JPTEUnKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdST0xFJylcIlxuICBbZmVhdHVyZWZsYWdyb2xlXT1cImZlYXR1cmVmbGFncm9sZVwiXG4gIFtmZWF0dXJlZmxhZ0dyb3VwXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2ZmX3JjX2xpc3RpbmddPVwiZmZfcmNfbGlzdGluZ1wiXG4+PC9yb2xlLWxpc3Q+XG5cbjwhLS0gbGlzdCBvZiBmcmFtZXdvcmtzIC0tPlxuPCEtLSA8YXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZyAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0ZSQU1FV09SSycpXCIgKG5leHQpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0ZSQU1FV09SSycpXCIgW21vZGVdPVwibW9kZVwiIFtzZWxlY3RlZEZyYW1ld29ya109XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZVwiPjwvYXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZz4gLS0+XG48IS0tIGxpc3Qgb2YgcmVzcG9uc2liaWxpdHkgY2VudGVyIC0tPlxuPGFwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUkMnXCJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwibGlzdHM/LlJDID8/IFtdXCJcbiAgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCJcbiAgW3JjSWRLZXldPVwiJ3JjX2lkJ1wiXG4gIChjbG9zZVJjTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JDJylcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ1JDJylcIlxuICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiY29udHJvbHM/LnJjPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuPlxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxuPCEtLSByZW5kZXIgdXNlcmxpc3Qgd2l0aCBncm91cCAtLT5cblxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdPV05FUidcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFtub25SZW1vdmFibGVVc2VySWRzXT1cImxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJ1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uT1dORVJTPy5kYXRhID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICAoZmV0Y2hVc2VyRGF0YSk9XCJmZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcyhmYWxzZSwgJGV2ZW50KVwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/Lk9XTkVSU1wiXG4gIFtncm91cExpc3RJbmZvXT1cImxpc3RzPy5PV05FUlNfR1JPVVBTXCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uT1dORVJTX0dST1VQUz8uZGF0YSA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnT1dORVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdPV05FUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZU93bmVyXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbj48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQVBQUk9WRVInXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmYWxzZVwiXG4gIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uQVBQUk9WRVJTPy5kYXRhID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkFQUFJPVkVSU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnQVBQUk9WRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdBUFBST1ZFUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUFwcHJvdmVyXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uQVNTSUdORUVTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/LkFTU0lHTkVFU19HUk9VUCA/PyBbXVwiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZWRBc3NpZ25lZUlkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uQVNTSUdORUVTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdBU1NJR05FRScpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FTU0lHTkVFJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlQXNzaWduZWVcIlxuICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFt1c2VyVHlwZV09XCInYXNzaWduZWVzJ1wiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA/PyBbXVwiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZWRBc3NpZ25lZUlkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVwiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnREVGQVVMVF9BU1NJR05FRScpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uUkVWSUVXRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/LlJFVklFV0VSU19HUk9VUCA/PyBbXVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVSZXZpZXdlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uUkVWSUVXRVJTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdSRVZJRVdFUicpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JFVklFV0VSJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlUmV2aWV3ZXJcIlxuICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFt1c2VyVHlwZV09XCIncmV2aWV3ZXJzJ1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJcbiAgICBhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUicgJiZcbiAgICAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKVxuICBcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA/PyBbXVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVSZXZpZXdlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX1JFVklFV0VSJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uT1ZFUlNFRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/Lk9WRVJTRUVSU19HUk9VUCA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uT1ZFUlNFRVNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ09WRVJTRUVSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignT1ZFUlNFRVInKVwiXG4gIFtkZWZhdWx0U2VsZWN0ZWRVc2Vyc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVxuICAgICAgfCByZWZEaXNjb25uZWN0XG4gICAgICB8IGFycmF5Q29uY2F0IDogY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlXG4gIFwiXG4gIFt1c2VyVHlwZV09XCInb3ZlcnNlZXJzJ1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJcbiAgICBhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9PVkVSU0VFUicgJiZcbiAgICAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKVxuICBcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX09WRVJTRUVSJylcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiXG4gICAgYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJyAmJlxuICAgICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpXG4gIFwiXG4gIFtncm91cEVuYWJsZWRdPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSUyA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPz8gW11cIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZU92ZXJzZWVySWRzXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiXG4gIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCJcbiAgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIlxuICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFzc2Vzc21lbnQtcGlja2VyXG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0VTU01FTlQnXCJcbiAgW3NlbGVjdGVkQXNzZXNzbWVudF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcIlxuICAoY2FuY2VsQXNzZXNzbWVudCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FTU0VTU01FTlQnKVwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwibGlzdEFjdGlvbigkZXZlbnQsICdBU1NFU1NNRU5UJylcIlxuPjwvYXNzZXNzbWVudC1waWNrZXI+XG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+XG48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cblxuPCEtLSBGcmFtZXdvcmsgc2VsZWN0b3IgIC0tPlxuPGFwcC1mcmFtZXdvcmstbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCJcbiAgW3dvcmtmbG93UGFnZV09XCJbJ0ZSQU1FV09SSyddXCJcbiAgKGFzc2lnbkNvbnRyb2wpPVwibGlzdEFjdGlvbigkZXZlbnQsICdGUkFNRVdPUksnKVwiXG4gIChjbG9zZUZyYW1ld29yayk9XCJmaWVsZERlc2VsZWN0b3IoJ0ZSQU1FV09SSycpXCJcbiAgW3ByZXZpb3VzU2VsZWN0ZWRWYWx1ZXNdPVwieyBmcmFtZXdvcms6IGNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWUgfVwiXG4gIChlbnRydXN0RnJhbWV3b3JrKT1cImVudHJ1c3RGcmFtZXdvcmsoJGV2ZW50KVwiXG4gIFtoZWFkZXJUZXh0XT1cIidTZWxlY3QgYSBmcmFtZXdvcmsnXCJcbj48L2FwcC1mcmFtZXdvcmstbGlzdD5cbiJdfQ==
|
|
1553
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT3ZELE1BQU0sT0FBTyx3QkFBd0I7SUF3RG5DLFlBQ1UsRUFBc0IsRUFDdEIsY0FBK0IsRUFDL0IsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsU0FBNEI7UUFMNUIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVC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QU1SLFVBQVUsd0hDckN2Qyxnc29IQTJzRkE7OzRGRDVxRmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjt3UEFVUyxJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRWQsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNiLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyw4QkFBOEI7c0JBQXZDLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wcm9ncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjb25zdGFudHMgPSBDT05TVEFOVFM7XG4gIHNob3dDb25maXJtYXRpb246IGFueTtcbiAgaXNBc2NlbnRBbGxvd2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmb3JtITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlbW92aW5nUm9sZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRnJhbWV3b3JrQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEFsbCBJbnB1dCBmaWVsZHNcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBhbGxvd2VkRmVhdHVyZSE6IGFueTtcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XG4gIHBhbmVsVGl0bGVEZWZhdWx0UmV2aWV3ZXIgPSAnU2VsZWN0IERlZmF1bHQgUmV2aWV3ZXIocyknO1xuICBwYW5lbFRpdGxlT3duZXIgPSAnU2VsZWN0IE93bmVyKHMpJztcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gJ1NlbGVjdCBSZXZpZXdlcihzKSc7XG4gIHBhbmVsVGl0bGVBc3NpZ25lZSA9ICdTZWxlY3QgQXNzaWduZWUocyknO1xuICBwYW5lbFRpdGxlQXBwcm92ZXIgPSAnU2VsZWN0ICBBcHByb3Zlcic7XG4gIGlzQXBwcm92ZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Byb2dyYW1TY29wZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sVGlwRGF0YTogYW55ID0ge1xuICAgIG93bmVyOlxuICAgICAgJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LicsXG4gICAgcHJvZ3JhbVNjb3BlOiBgQSBQcm9ncmFtIFNjb3BlIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6XG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxuICA8bGk+VG8gcHJlLXNlbGVjdCBjZXJ0YWluIG9wdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBkZWNyZWFzaW5nIHRoZSB0aW1lIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5LjwvbGk+XG4gIDxsaT5UbyBsaW1pdCB0aGUgb3B0aW9ucyBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHksIHRoZXJlYnkgbWFraW5nIGl0IGVhc2llciB0byBjcmVhdGUgYSByZXNwb25zaWJpbGl0eSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgYW4gaW5jb3JyZWN0IG9wdGlvbiBiZWluZyBzZWxlY3RlZC48L2xpPlxuICAgIGAsXG4gIH07XG4gIGJ1c2luZXNzQ3ljbGU6IGFueTtcbiAgZmVhdHVyZWZsYWdyb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIGZlYXR1cmVmbGFnR3JvdXBzOiBib29sZWFuID0gZmFsc2U7XG4gIGRpc2FibGVkQXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG4gIGFzc2lnbm9ySWQ6IG51bWJlcltdID0gW107XG4gIGRpc2FibGVSZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZU92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcbiAgICApO1xuICB9XG4gIHB1YmxpYyBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgaXNXaGl0ZXNwYWNlID0gKGNvbnRyb2wudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgY29uc3QgaXNWYWxpZCA9ICFpc1doaXRlc3BhY2U7XG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyB3aGl0ZXNwYWNlOiB0cnVlIH07XG4gIH1cbiAgcHVibGljIGJsYW5rQXJyYXlWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgaXNCbGFuayA9IGNvbnRyb2wudmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSk/Lmxlbmd0aCA9PT0gMDtcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzQmxhbms7XG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyBibGFuazogdHJ1ZSB9O1xuICB9XG4gIGxvYWRlciA9IGZhbHNlO1xuICBzaG93U21pbGV5ID0gZmFsc2U7XG4gIGFjdGlvbkJ1dHRvbnMgPSBbXG4gICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUHJvZ3JhbXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcbiAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFByb2dyYW0nLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3UHJvZ3JhbScgfSxcbiAgXTtcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCFgO1xuICBjcmVhdGVkUHJvZ3JhbUlkID0gJyc7XG4gIGlzT2JqZWN0aXZlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc05hbWVFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy9mb3JtIGJvZHkgZm9yIHByb2dyYW0gbWV0YSBkYXRhXG4gIHByb2dyYW1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgcHJvZ3JhbV90eXBlOiBbXG4gICAgICB0aGlzLnByb2dyYW1UeXBlLFxuICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCgzKV0sXG4gICAgXSxcbiAgICBwcm9ncmFtX25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjogWycnXSxcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOiBbW11dLFxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiBbJyddLFxuICAgIC8vIHByb2dyYW1fb2JqZWN0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxuICAgIHByb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiBbW11dLFxuICAgIHByb2dyYW1fcm9sZXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxuICAgIGFsbF91c2VyX2luX3JvbGU6IFtmYWxzZV0sXG4gICAgcHJvZ3JhbV9vd25lcnM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFsnUEFTVF9FVkVOVCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogW3RydWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICBmcmFtZXdvcms6IFtdLFxuICAgIHJjOiBbW11dLFxuICAgIHByb2dyYW1fYXNzaWduZWU6IFtbXV0sXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbW11dLFxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnQUxMJ10sXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW1tdXSxcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogWydTRVFVRU5USUFMJ10sXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtbXV0sXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IFtmYWxzZV0sXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBbZmFsc2VdLFxuICAgIGN1c3RvbV9maWVsZHM6IFtbXV0sXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcbiAgfSk7XG5cbiAgLy9leGNlcHRpb25hbCBoYW5kbGluZyBvZiBjdXN0b20gZmllbGRzXG5cbiAgc2hvd0FkZEN1c3RvbUZpZWxkID0gdHJ1ZTtcbiAgLy9Qcm9ncmFtIG9iamVjdGl2ZSBhbmQgZGVzY3JpcGlvbiBhcmUgZXhwbGVjdGx5IGRlY2xhcmVkIGFzIHRoZXkgYXJlIHVzaW5nIG1hcnggZWRpdG9yIHdoaWNoIGRvZXMgbm90IHN1cHBvcnRzIFJlYWN0aXZlIGZvcm1zIGJpbmRpbmdcbiAgZWRpdG9yRGF0YSA9IHtcbiAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnLFxuICB9O1xuXG4gIHNlbGVjdGVkQXNzZXNzbWVudCE6IGFueTtcblxuICBjdXJyZW50VXNlcigpIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS50b2tlbkluZm8oKTtcbiAgICByZXR1cm4ge1xuICAgICAgbWVtYmVyX2VtYWlsOiB1c2VyPy5lbWFpbCxcbiAgICAgIG1lbWJlcl9pZDogdXNlcj8uaWQsXG4gICAgICBtZW1iZXJfbmFtZTogdXNlcj8ubmFtZSxcbiAgICAgIHVzZXJfcm9sZTogJ0xPR0dFRF9JTicsXG4gICAgICBfaWQ6ICcnLFxuICAgIH07XG4gIH1cbiAgLy9TZXRzIHRoZSB2YWx1ZSBvZiBhIGZvcm0gY29udHJvbFxuICBzZXRGb3JtRmllbGQoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgaXNGcm9tRm9ybT86IGJvb2xlYW4pIHtcbiAgICBsZXQgcGF0Y2g6IGFueSA9IHt9O1xuICAgIHBhdGNoW2NvbnRyb2xOYW1lXSA9IHZhbHVlO1xuICAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShwYXRjaCk7XG4gICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICBpZiAoXG4gICAgICBpc0Zyb21Gb3JtICYmXG4gICAgICBjb250cm9sTmFtZSA9PT0gJ3Byb2dyYW1fb2JqZWN0aXZlJyAmJlxuICAgICAgIXZhbHVlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKVxuICAgIClcbiAgICAgIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IGZhbHNlO1xuICAgIGVsc2UgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vUmV0dXJucyB3ZWF0aGVyIHRoZSBmb3JtIGlzIHZhbGlkIG9yIG5vdFxuICBnZXQgZm9ybVZhbGlkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvZ3JhbUZvcm0udmFsaWQgJiZcbiAgICAgIHRoaXMuZWRpdG9yRGF0YT8ucHJvZ3JhbU9iamVjdGl2ZT8ucmVwbGFjZSgvJm5ic3A7L2csICcgJyk/LnRyaW0oKT8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xzOiBhbnkgPSB7XG4gICAgcHJvZ3JhbV9uYW1lOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9uYW1lJyksXG4gICAgcHJvZ3JhbV90eXBlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV90eXBlJyksXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZScpLFxuICAgIHByb2dyYW1fcm9sZXM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3JvbGVzJyksXG4gICAgcHJvZ3JhbV9vd25lcnM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVycycpLFxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnKSxcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsX3VzZXJfaW5fcm9sZScpLFxuICAgIHByb2dyYW1fYXBwcm92ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2FwcHJvdmVyJyksXG4gICAgZGVzY3JpcHRpb25fYXR0YWNobWVudDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cydcbiAgICApLFxuICAgIG9iamVjdGl2ZV9hdHRhY2htZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnXG4gICAgKSxcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJyksXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JlY3VycmluZ19mcmVxdWVuY3knKSxcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2xvY2tfc2NvcGVfY2hhbmdlJyksXG4gICAgcmM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyYycpLFxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZXZpZGVuY2VfcmVxdWlyZWQnKSxcbiAgICBmcmFtZXdvcms6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdmcmFtZXdvcmsnKSxcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZSdcbiAgICApLFxuICAgIHByb2dyYW1fYXNzaWduZWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlJyksXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCdcbiAgICApLFxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCdcbiAgICApLFxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyJyksXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2VlcicpLFxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJyksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJyksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJ1xuICAgICksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCdcbiAgICApLFxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnXG4gICAgKSxcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3Nlc3NtZW50cycpLFxuICAgIGN1c3RvbV9maWVsZHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjdXN0b21fZmllbGRzJyksXG4gICAgaXNBcHByb3ZlckRpc2FibGVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnaXNBcHByb3ZlckRpc2FibGVkJyksXG4gIH07XG5cbiAgbGlzdHM6IGFueSA9IHtcbiAgICBST0xFUzogW10sXG4gICAgT1dORVJTOiBbXSxcbiAgICBPV05FUlNfR1JPVVBTOiBbXSxcbiAgICBBUFBST1ZFUlM6IFtdLFxuICAgIFJFVklFV0VSUzogW10sXG4gICAgUkVWSUVXRVJTX0dST1VQOiBbXSxcbiAgICBBU1NJR05FRVM6IFtdLFxuICAgIEFTU0lHTkVFU19HUk9VUDogW10sXG4gICAgREVGQVVMVF9BU1NJR05FRVM6IFtdLFxuICAgIERFRkFVTFRfQVNTSUdORUVTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX1JFVklFV0VSUzogW10sXG4gICAgREVGQVVMVF9SRVZJRVdFUlNfR1JPVVA6IFtdLFxuICAgIE9WRVJTRUVSUzogW10sXG4gICAgT1ZFUlNFRVJTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX09WRVJTRUVSUzogW10sXG4gICAgREVGQVVMVF9PVkVSU0VFUlNfR1JPVVA6IFtdLFxuICAgIFJDOiBbXSxcbiAgICBOT05fUkVNT1ZBQkxFX09XTkVSUzogW10sXG4gICAgQUxMX1VTRVI6IFtdLFxuICAgIEFMTF9HUk9VUDogW10sXG4gICAgU1lTVEVNX1JPTEVfSURTOiBbXSxcbiAgfTtcblxuICBsaXN0TG9hZGluZ1N0YXRlID0ge1xuICAgIFJPTEVTOiBmYWxzZSxcbiAgICBVU0VSUzogZmFsc2UsXG4gICAgR1JPVVA6IGZhbHNlLFxuICAgIFJDOiBmYWxzZSxcbiAgfTtcbiAgc2lkZUVsZW1lbnRzID0gW1xuICAgICdST0xFJyxcbiAgICAnUkMnLFxuICAgICdPV05FUicsXG4gICAgJ0FTU0lHTkVFJyxcbiAgICAnQVBQUk9WRVInLFxuICAgICdERUZBVUxUX0FTU0lHTkVFJyxcbiAgICAnUkVWSUVXRVInLFxuICAgICdERUZBVUxUX1JFVklFV0VSJyxcbiAgICAnQVNTRVNTTUVOVCcsXG4gICAgJ0ZSQU1FV09SSycsXG4gICAgJ09WRVJTRUVSJyxcbiAgICAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInLFxuICAgICdERUZBVUxUX09WRVJTRUVSJyxcbiAgICAnT1ZFUlNFRVInLFxuICBdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCB0aGlzLnByb2dyYW1UeXBlKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvblVzZXJzKCk7XG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uR3JvdXAoKTtcbiAgICB9XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gICAgdGhpcy5mZXRjaFJDKCk7XG4gICAgaWYgKHRoaXMuYWRkVG9Qcm9ncmFtRGV0YWlscz8uX2lkKSB7XG4gICAgICB0aGlzLmxpc3RBY3Rpb24odGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzLCAnRlJBTUVXT1JLJyk7XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZmVhdHVyZSgpO1xuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbUZvcm0udmFsaWQ7XG4gIH1cblxuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7IC4uLkNPTlNUQU5UUy5hZGRpdGlvbmFsT3B0aW9uIH07XG4gIGFjdGl2ZUxpc3QgPSAnJztcbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICogUG9wdWxhdGVzIG9wdGlvbmFsIGZpZWxkcyBzdGF0dXMgZm9yIHRoZSBvcHRpb25hbCBmaWVsZHNcbiAgICovXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25ba2V5XSA9PT0gdHJ1ZSkge1xuICAgICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xuICB9XG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25bZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uIHRvIGF1dG9tYXRlIGZvcm0gdmFsdWUgY2hhbmdlIGhhbmRuZ1xuICBmb3JtQ2hhbmdlTGlzdG5lcigpIHtcbiAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbHNbZWxlXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVGb3JtRmllbGRDaGFuZ2UoZWxlLCByZXMpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVGb3JtRmllbGRDaGFuZ2UoY29udHJvbDogc3RyaW5nLCBwYXlsb2FkPzogYW55KSB7XG4gICAgc3dpdGNoIChjb250cm9sKSB7XG4gICAgICBjYXNlICdwcm9ncmFtX3JvbGVzJzoge1xuICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVMaXN0KGV2dDogc3RyaW5nKSB7XG4gICAgaWYgKGV2dCA9PT0gJ0ZSQU1FV09SSycgJiYgIXRoaXMuY2FuRnJhbWV3b3JrQ2hhbmdlKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gZXZ0O1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgbGlzdEFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdST0xFJzoge1xuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICBjb25zdCBzeXN0ZW1Sb2xlcyA9IGV2dD8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhdGNoVmFsID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnN5c3RlbVJvbGVzLCAuLi5ldnRdLCAnX2lkJyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXNFcXVhbCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXMudmFsdWUuc29ydCgpLCBwYXRjaFZhbC5zb3J0KCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcGF0Y2hWYWwpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JDJzoge1xuICAgICAgICBjb25zdCByYyA9IHRoaXMuc2V0TGlzdCh0aGlzLmxpc3RzLlJDLCBldnQsICdpdGVtX2lkJyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycsIHRoaXMudW5pcXVlQnlQcm9wKHJjLCAnaXRlbV9pZCcpKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1dORVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX293bmVycycsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX293bmVyc19ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9hcHByb3ZlcicsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9hc3NpZ25lZScsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlKGV2dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRSc6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9yZXZpZXdlcicsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyKGV2dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5jb250cm9scy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLnZhbHVlID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/ICdBTllPTkUnXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXIoZXZ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgZXZ0KTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgZXZ0KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywgZXZ0Py5kZXNjcmlwdGlvbik7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSBldnQ/LmRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XG4gICAgICAgIGxldCBtc2cgPSAnJztcbiAgICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJztcbiAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IGV2dD8uX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihyb2xlcywgJ1JPTEUnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkMnOiB7XG4gICAgICAgIGNvbnN0IHJjcyA9IHRoaXMuY29udHJvbHM/LnJjPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5pdGVtX2lkICE9PSBldnQ/Lml0ZW1faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgcmNzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUic6IHtcbiAgICAgICAgY29uc3Qgb3duZXJzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3Qgb3duZXJzX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVyc19ncm91cCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVBQUk9WRVInOiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBU1NJR05FRSc6IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LCB0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzoge1xuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCc6IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkVWSUVXRVInOiB7XG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2VyKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzoge1xuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6IHtcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gJ0FOWU9ORSdcbiAgICAgICAgICAgIDogdGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIG92ZXJzZWVyKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzoge1xuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUic6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJzoge1xuICAgICAgICBjb25zdCBvdmVyc2VlciA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgb3ZlcnNlZXJfZ3JvdXBcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBU1NFU1NNRU5UJzoge1xuICAgICAgICBsZXQgY3VycmVudCA9IGNsb25lRGVlcCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50LmZpbmRJbmRleChcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeV9pZCA9PSBldnQuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcyA9IGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMuZmlsdGVyKFxuICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgIT09IGV2dC5pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5sZW5ndGggPT09IDApIGN1cnJlbnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKGN1cnJlbnQsICdBU1NFU1NNRU5UJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdFxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChlbGUpID0+IGVsZSk7XG4gIH1cblxuICByZWZyZXNoTGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMgPSBbXTtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xuICAgIGxldCBzZWxlY3RlZEFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcbiAgICBsZXQgc2VsZWN0ZWRSZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XG4gICAgbGV0IHNlbGVjdGVkT3ZlcnNlZXJMaXN0ID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcbiAgICBsZXQgc2VsZWN0ZWRPdmVyc2VlckZhaWx1cmVMaXN0ID1cbiAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xuICAgIGxldCBhc3NpZ25vciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICB0aGlzLmFzc2lnbm9ySWQucHVzaChhc3NpZ25vcj8ubWVtYmVyX2lkKTtcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKGFzc2lnbm9yPy5tZW1iZXJfaWQpO1xuICAgIHNlbGVjdGVkQXNzaWduZWU/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBzZWxlY3RlZFJldmlld2VyPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgc2VsZWN0ZWRPdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBzZWxlY3RlZE92ZXJzZWVyRmFpbHVyZUxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMpXTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMpXTtcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVkQXNzaWduZWVJZHMgPSB0aGlzLnJldHVybklkcyhkaXNhYmxlQXNzaWduZWVMaXN0LCAnbWVtYmVyX2lkJyk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhkaXNhYmxlUmV2aWV3ZXJMaXN0LCAnbWVtYmVyX2lkJyk7XG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVPdmVyc2Vlckxpc3QsICdtZW1iZXJfaWQnKTtcbiAgfVxuXG4gIHJlbW92ZVJvbGUoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLm9uUmVtb3ZpbmdSb2xlLmVtaXQoZXZ0KTtcbiAgfVxuXG4gIC8vYmVsb3cgNCBmdW5jdGlvbnMgY2FuIGJlIGVhc2lsdHkgY29tYmluZWQgaW50byBvbmUgYXMgdGhleSBmb2xsb3cgc2FtZSBraW5kIG9mIHBhdHRlcm4gb3IgY2FuIGJlIG9mZmxvYWRlZCB0byBhIGV4dGVybmFsIHNlcnZpY2VcbiAgc2V0RGVmYXVsdEFzc2lnbmVlKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgICBldnQ/Lmdyb3VwcyxcbiAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XG4gICAgfVxuICAgIGNvbnN0IGFzc2lnbmVlTWFwID0gZXZ0Py51c2Vycz8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xuICAgIGxldCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xuICAgIGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSBjdXJyZW50RGVmYXVsdEFzc2lnbmVlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICBhc3NpZ25lZU1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlKTtcbiAgfVxuXG4gIHNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IGRlZmF1bHRBc3NpZ25lZS5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0lHTkVFX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRBc3NpZ25lZUdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXAgPSBkZWZhdWx0QXNzaWduZWVHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmICghYXNzaWduZWVHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZUdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0RGVmYXVsdFJldmlld2VyKGV2dDogYW55KSB7XG4gICAgaWYgKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgICBldnQ/Lmdyb3VwcyxcbiAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XG4gICAgfVxuICAgIGNvbnN0IHJldmlld2VyTWFwID0gZXZ0Py51c2Vycz8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xuICAgIGxldCBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xuICAgIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICByZXZpZXdlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcbiAgfVxuICBzZXREZWZhdWx0T3ZlcnNlZXIoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcnNlZXJNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID1cbiAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcbiAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyxcbiAgICAgIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyXG4gICAgKTtcbiAgfVxuICBzZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQ6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdSRVZJRVdFUic6IHtcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSBkZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcik7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdSRVZJRVdFUl9HUk9VUCc6IHtcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUC5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0UmV2aWV3ZXJHcm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlO1xuICAgICAgICBjb25zdCByZXZpZXdlckdyb3VwID0gZGVmYXVsdFJldmlld2VyR3JvdXAuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJHcm91cCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xuICAgICAgICBjb25zdCBvdmVyc2VlciA9IGRlZmF1bHRPdmVyc2Vlci5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0RmFpbE92ZXJzZWVyID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xuICAgICAgICBjb25zdCBvdmVyc2VlckZhaWwgPSBkZWZhdWx0RmFpbE92ZXJzZWVyLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyRmFpbCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPVkVSU0VFUl9HUk9VUCc6IHtcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUC5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJHcm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xuICAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwID0gZGVmYXVsdE92ZXJzZWVyR3JvdXAuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJHcm91cCk7XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyRmFpbGVkR3JvdXAgPSBkZWZhdWx0T3ZlcnNlZXJGYWlsZWRHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJyxcbiAgICAgICAgICBvdmVyc2VlckZhaWxlZEdyb3VwXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmllbGREZXNlbGVjdG9yKHR5cGU6IGFueSkge1xuICAgIHRoaXMuYWN0aXZlTGlzdCA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLm1hcmthc1RvdWNoZWRTZWxlY3Rvcih0eXBlKTtcbiAgfVxuICBtYXJrYXNUb3VjaGVkU2VsZWN0b3IoZmllbGROYW1lOiBhbnkpIHtcbiAgICBjb25zdCB0eXBlRmllbGQ6IGFueSA9IHtcbiAgICAgIFJPTEU6ICdwcm9ncmFtX3JvbGVzJyxcbiAgICAgIEFQUFJPVkVSOiAncHJvZ3JhbV9hcHByb3ZlcicsXG4gICAgICBPV05FUjogJ3Byb2dyYW1fb3duZXJzJyxcbiAgICAgIE9XTkVSX0dST1VQOiAncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLFxuICAgIH07XG4gICAgdGhpcy5jb250cm9sc1t0eXBlRmllbGRbZmllbGROYW1lXV0/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGZldGNoUm9sZXMoKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRSb2xlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5ST0xFUyA9IHJlcztcbiAgICAgICAgY29uc3QgZGVmYXVsdFN5c3RlbVZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhXG4gICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICAgICAgICApXG4gICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlzdHMuU1lTVEVNX1JPTEVfSURTID0gZGVmYXVsdFN5c3RlbVZhbDtcbiAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcbiAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgfVxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXG4gIGZldGNoUkMoKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuUkMgPSByZXM7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoY2FsbGVkRnJvbT86IGFueSkge1xuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZFxuICAgICk7XG4gICAgLy8gaWYgKGZldGNoQWxsKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVVc2Vycyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzVXNlckZpbmQgPSByZXM/LmRhdGE/LnNvbWUoXG4gICAgICAgICAgKHJlczogYW55KSA9PiByZXM/Lm1lbWJlcl9pZCA9PT0gbG9nZ2VkSW5Vc2VyPy5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFpc1VzZXJGaW5kKSB7XG4gICAgICAgICAgcmVzPy5kYXRhPy5wdXNoKGxvZ2dlZEluVXNlcik7XG4gICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0cy5PV05FUlMgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXJlcz8uZGF0YVxuICAgICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgID8uaW5jbHVkZXModGhpcy5jb250cm9scy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX2lkKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdE93bmVycyhyZXM/LmRhdGEsIGNhbGxlZEZyb20pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCkge1xuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZT8uX2lkXG4gICAgKTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuT1dORVJTX0dST1VQUyA9IHJlcztcbiAgICAgICAgY29uc3Qgcm9sZUlkczogQXJyYXk8c3RyaW5nPiA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUubWFwKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBncm91cERldGFpbHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZS5maWx0ZXIoXG4gICAgICAgICAgKHJvbGVJZDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocm9sZUlkLnJvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBsZXQgaXNTYW1lUm9sZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByb2xlSWQucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJvbGVJZHMuaW5jbHVkZXMocm9sZS5yb2xlSWQpKSB7XG4gICAgICAgICAgICAgICAgICBpc1NhbWVSb2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmIChpc1NhbWVSb2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvbGVJZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgZ3JvdXBEZXRhaWxzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBzZXREZWZhdWx0T3duZXJzKHVzZXJMaXN0OiBhbnksIGNhbGxlZEZyb20/OiBhbnkpIHtcbiAgICBjb25zdCBsb2dnZWRJbnVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgZGVmYXVsdE93bmVyID0gdXNlckxpc3QuZmlsdGVyKFxuICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICBbJ0FETUlOJywgJ0tFWV9BRE1JTiddLmluY2x1ZGVzKGVsZT8udXNlcl9yb2xlKSAmJlxuICAgICAgICBlbGU/Lm1lbWJlcl9pZCAhPSBsb2dnZWRJbnVzZXI/Lm1lbWJlcl9pZFxuICAgICk7XG4gICAgdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLltsb2dnZWRJbnVzZXJdLCAuLi5kZWZhdWx0T3duZXJdLFxuICAgICAgJ21lbWJlcl9pZCdcbiAgICApO1xuICAgIC8vIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMpO1xuICAgIGNvbnN0IHByZVNlbGVjdGVkVXNlcnMgPSB0aGlzLmdldFByZVNlbGVjdGVkT3duZXJzKFxuICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlLFxuICAgICAgdXNlckxpc3RcbiAgICApO1xuICAgIGlmIChjYWxsZWRGcm9tICE9PSAnZ2V0UHJvZ3JhbURldGFpbHMnKSB7XG4gICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgJ3Byb2dyYW1fb3duZXJzJyxcbiAgICAgICAgcHJlU2VsZWN0ZWRVc2Vycz8ubGVuZ3RoXG4gICAgICAgICAgPyBwcmVTZWxlY3RlZFVzZXJzXG4gICAgICAgICAgOiB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldFByZVNlbGVjdGVkT3duZXJzKHByZXZpb3VzU2VsZWN0ZWRVc2VyczogYW55LCBjdXJyZW50VXNlcnM6IGFueSkge1xuICAgIGxldCBmaW5hbFVzZXJzID0gW107XG4gICAgZmluYWxVc2VycyA9IHByZXZpb3VzU2VsZWN0ZWRVc2Vycz8uZmlsdGVyKChwcmV2aW91czogYW55KSA9PlxuICAgICAgY3VycmVudFVzZXJzPy5zb21lKFxuICAgICAgICAoY3VycmVudDogYW55KSA9PiBwcmV2aW91cz8ubWVtYmVyX2lkID09PSBjdXJyZW50Py5tZW1iZXJfaWRcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBmaW5hbFVzZXJzO1xuICB9XG5cbiAgZmV0Y2hPcmdhbml6YXRpb25Vc2VycyhkYXRhPzogYW55KSB7XG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gdHJ1ZTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsT3JnVXNlcigpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5BTExfVVNFUiA9IHJlcztcbiAgICAgICAgdGhpcy5saXN0cy5BU1NJR05FRVMgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuUkVWSUVXRVJTID0gcmVzO1xuICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSUyA9IHJlcztcbiAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHJlcztcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdGhpcy5jb250cm9scy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gcmVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hPcmdhbml6YXRpb25Hcm91cChkYXRhPzogYW55KSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaENvbXBsaWFuY2VHcm91cHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuQUxMX0dST1VQID0gcmVzO1xuXG4gICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQID0gcmVzO1xuICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSU19HUk9VUCA9IHJlcztcblxuICAgICAgICB0aGlzLmxpc3RzLk9WRVJTRUVSU19HUk9VUCA9IHJlcztcblxuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSAnRURJVCcpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gcmVzO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXM7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHJlcztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZpbGVVcGxvYWRUcmFja2VyID0ge1xuICAgIGRlc2NyaXB0aW9uOiBbXSxcbiAgICBvYmplY3RpdmU6IFtdLFxuICB9O1xuXG4gIHNlbGVjdEZpbGUodHlwZTogYW55LCBmaWxlczogYW55KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xuICAgICAgdGhpcy51cGxvYWRGaWxlcyh0eXBlLCBmaWxlc1tpXS5maWxlKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRGaWxlcyh0eXBlOiAnREVTQ1JJUFRJT04nIHwgJ09CSkVDVElWRScsIGZpbGU6IGFueSkge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgY29uc3QgZGVzdGluYXRpb25TdHJpbmcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBkdW1teUZpbGUgPSB7XG4gICAgICBmaWxlX3VybF9wYXRoOiBgJHtmaWxlPy5uYW1lfWAsXG4gICAgICBuYW1lOiBgJHtmaWxlPy5uYW1lfWAsXG4gICAgICB1cGxvYWRpbmc6IHRydWUsXG4gICAgICBvcmdfZmlsZTogYCR7ZmlsZT8ubmFtZX1gLFxuICAgIH07XG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbXG4gICAgICAgIC4uLmRlc2NyaXB0aW9uLFxuICAgICAgICAuLi5bZHVtbXlGaWxlXSxcbiAgICAgIF0pO1xuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLFxuICAgICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLFxuICAgICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ09CSkVDVElWRScpIHtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBbXG4gICAgICAgIC4uLmRlc2NyaXB0aW9uLFxuICAgICAgICAuLi5bZHVtbXlGaWxlXSxcbiAgICAgIF0pO1xuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XG4gICAgICAgICAgbGV0IGRlc2NyaXB0aW9uSW5kZXggPSBkZXNjcmlwdGlvbi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGRlc2NyaXB0aW9uW2Rlc2NyaXB0aW9uSW5kZXhdID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLFxuICAgICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLFxuICAgICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUF0dGFjaG1lbnQodHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcbiAgICBpZiAodHlwZSA9PT0gJ0RFU0NSSVBUSU9OJykge1xuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIGRlc2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XG4gICAgICBsZXQgb2JqZWN0aXZlID0gdGhpcy5jb250cm9scz8ub2JqZWN0aXZlX2F0dGFjaG1lbnRzPy52YWx1ZSA/PyBbXTtcbiAgICAgIGlmIChvYmplY3RpdmUpIHtcbiAgICAgICAgb2JqZWN0aXZlID0gb2JqZWN0aXZlLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgIT09IGZpbGU/Lm9yZ19maWxlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgb2JqZWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RBbGxSb2xlT3duZXIoZXZ0OiBhbnkpIHtcbiAgICAvL25lZWQgdG8gZmV0Y2ggYWxsIHRoZSB1c2VycyBmb3IgYWxsIHRoZSBzZWxlY3RlZCByb2xlc1xuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICBsZXQgcm9sZUlkID0gW107XG4gICAgbGV0IHVzZXI6IGFueTtcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQpIHtcbiAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICAgIGlmICh0aGlzLmZlYXR1cmVmbGFnR3JvdXBzKSB7XG4gICAgICAgIHVzZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnNfZ3JvdXAudmFsdWUgPSB1c2VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChbJ2tleSBhZG1pbicsICdhZG1pbiddLmluY2x1ZGVzKGVsZS5yb2xlTmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgIHJldHVybiBlbGU/Ll9pZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgICBbLi4uW2xvZ2dlZEluVXNlcl0sIC4uLnJlcz8uZGF0YV0sXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdXNlcik7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9LFxuICAgIH0pO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlR3JvdXBzKHVzZXIpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5yZXM/LmRhdGFdLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgdXNlcik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XG4gICAqIEBwYXJhbSBhcnJheVxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIGFycmF5XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSwgYWNjXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgTWFwKClcbiAgICAgICAgKVxuICAgICAgICAudmFsdWVzKClcbiAgICApO1xuICB9XG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHNhdmVQcm9ncmFtKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGF5bG9hZCA9IHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sIHRoaXMpO1xuICAgIGlmIChwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFByb2dyYW1JZCA9IHJlcy5faWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSkge1xuICAgICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocGF5bG9hZCAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGRhdGVQcm9ncmFtKHBheWxvYWQsIHRoaXMucHJvZ3JhbUlkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgICAgICAgIGlmIChlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKSB7XG4gICAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Byb2dyYW0nOlxuICAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2aWV3UHJvZ3JhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBsZXQgdXJsOiBzdHJpbmc7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH1cblxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgKz0gJy9wcm9ncmFtL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcbiAgICB9XG5cbiAgICB0aGlzLmlmcmFtZVNlcnZpY2UucmVkaXJlY3RJZkluSWZyYW1lKHVybCwgdHJ1ZSk7XG4gIH1cbiAgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IERFRkFVTFRfVkFMVUVTID0ge1xuICAgICAgcHJvZ3JhbV90eXBlOiAxLFxuICAgICAgcHJvZ3JhbV9uYW1lOiAnJyxcbiAgICAgIHByb2dyYW1fZGVzY3JpcHRpb246ICcnLFxuICAgICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZTogJycsXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX3JvbGVzOiBbXSxcbiAgICAgIGFsbF91c2VyX2luX3JvbGU6IGZhbHNlLFxuICAgICAgcHJvZ3JhbV9vd25lcnM6IFtdLFxuICAgICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hcHByb3ZlcjogW10sXG4gICAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogJ1BBU1RfRVZFTlQnLFxuICAgICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogZmFsc2UsXG4gICAgICBsb2NrX3Njb3BlX2NoYW5nZTogZmFsc2UsXG4gICAgICBmcmFtZXdvcms6IFtdLFxuICAgICAgcmM6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtdLFxuICAgICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogJ0FMTCcsXG4gICAgICBwcm9ncmFtX3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW10sXG4gICAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiAnU0VRVUVOVElBTCcsXG4gICAgICBwcm9ncmFtX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW10sXG4gICAgICBldmlkZW5jZV9yZXF1aXJlZDogZmFsc2UsXG4gICAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IGZhbHNlLFxuICAgICAgY3VzdG9tX2ZpZWxkczogW10sXG4gICAgICBwcm9ncmFtX3N0YXRlOiAwLFxuICAgIH07XG4gICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKERFRkFVTFRfVkFMVUVTKTtcbiAgICB0aGlzLmVkaXRvckRhdGEgPSB7XG4gICAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcbiAgICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJycsXG4gICAgfTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gZmFsc2U7XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHRydWUpO1xuICAgIHRoaXMuZm9ybS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGJsb2NrOiAnc3RhcnQnLFxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogJycsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cbiAgICovXG4gIGdldFByb2dyYW1EZXRhaWxzKCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2VcbiAgICAgIC5nZXRQcm9ncmFtKHRoaXMucHJvZ3JhbUlkKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX25hbWUnLCByZXM/Lm5hbWUpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgcmVzPy5wcm9ncmFtVHlwZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZScsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LnRleHQpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsX3VzZXJfaW5fcm9sZScsIHJlcz8uYWxsX3VzZXJfaW5fcm9sZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICByZXM/LmRlc2NyaXB0aW9uPy5hdHRhY2htZW50c1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnLFxuICAgICAgICAgIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LmF0dGFjaG1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicsXG4gICAgICAgICAgcmVzPy5jYWxjdWxhdGVfcGFzdF91cGNvbWluZ19ldmVudFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5wcm9ncmFtX2ZyZXF1ZW5jeSAmJlxuICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ0VESVQnICYmXG4gICAgICAgICAgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIHJlcz8ubG9ja19zY29wZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmxvY2tfc2NvcGUgJiZcbiAgICAgICAgICAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5TQ09QRV9DSEFOR0VTID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9zdGF0ZScsIHJlcz8uc3RhdGUpO1xuICAgICAgICBjb25zdCByYyA9IHJlcy5yY19kZXRhaWxzLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5lbGUsIGl0ZW1fbmFtZTogZWxlPy5yY19uYW1lLCBpdGVtX2lkOiBlbGU/LnJjX2lkIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCByYyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LnJjX2RldGFpbHMgJiZcbiAgICAgICAgICByZXM/LnJjX2RldGFpbHM/Lmxlbmd0aCAmJlxuICAgICAgICAgICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZXZpZGVuY2VfcmVxdWlyZWQnLCByZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsIHJlcz8uaXNfa2V5X2V2aWRlbmNlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChyZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnIHx8IHJlcz8uaXNfa2V5X2V2aWRlbmNlKSAmJlxuICAgICAgICAgICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJyxcbiAgICAgICAgICByZXMuZGVmYXVsdF9hc3NpZ25lZV90eXBlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJyxcbiAgICAgICAgICByZXMuZGVmYXVsdF9yZXZpZXdlcnNfdHlwZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSByZXMuZGVzY3JpcHRpb24/LnRleHQ7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtT2JqZWN0aXZlID0gcmVzLnByb2dyYW1fb2JqZWN0aXZlPy50ZXh0O1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywge1xuICAgICAgICAgIC4uLnJlcy5mcmFtZXdvcmtfZGV0YWlscyxcbiAgICAgICAgICAuLi57IF9pZDogcmVzPy5mcmFtZXdvcmtfZGV0YWlscz8uZnJhbWV3b3JrX2lkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByb2xlID0gcmVzPy5yb2xlcz8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBfaWQ6IGVsZT8ucm9sZUlkLFxuICAgICAgICAgICAgcm9sZU5hbWU6IGVsZT8ucm9sZU5hbWUsXG4gICAgICAgICAgICBsaWNlbnNlVHlwZTogZWxlPy5saWNlbnNlVHlwZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25Hcm91cE5hbWU6IGVsZT8ucGVybWlzc2lvbkdyb3VwTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcbiAgICAgICAgaWYgKHJlcz8ucm9sZXMgJiYgcmVzPy5yb2xlcz8ubGVuZ3RoICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzLmFzc2Vzc21lbnREYXRhLmxlbmd0aCkge1xuICAgICAgICAgIHJlcy5hc3Nlc3NtZW50RGF0YSA9IHJlcy5hc3Nlc3NtZW50RGF0YS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5lbGUsXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IGVsZT8uYXNzZXNzbWVudHMubWFwKChhc3Nlc3M6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmFzc2VzcywgaWQ6IGFzc2Vzcz8uX2lkIH07XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NFU1NNRU5UID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0FwcHJvdmVyRGlzYWJsZWQgPSByZXM/LmlzQXBwcm92ZXJEaXNhYmxlZCA/PyBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaXNBcHByb3ZlckRpc2FibGVkKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KFsnQVBQUk9WRVInXSk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9wdWxhdGVNZW1iZXJzKHJlcyk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVHcm91cHMocmVzKTtcbiAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygnZ2V0UHJvZ3JhbURldGFpbHMnKTtcbiAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvbkdyb3VwKCk7XG4gICAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Vc2VycygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwb3B1bGF0ZU1lbWJlcnMocmVzOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgaWRzID0gW1xuICAgICAgLi4ubmV3IFNldChbXG4gICAgICAgIC4uLihyZXM/Lm93bmVycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmFwcHJvdmVycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ucmV2aWV3ZXJzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUpLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbCA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtZWJlckJ5SWRzKGlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGlmIChyZXMub3duZXJzICYmIHJlcz8ub3duZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5vd25lcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCBvd25lcnMpO1xuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9XTkVSUyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5hcHByb3ZlcnMgJiZcbiAgICAgICAgICByZXM/LmFwcHJvdmVycz8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5hc3NpZ25lZV9pZHMgJiYgcmVzPy5hc3NpZ25lZV9pZHM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCBhc3NpZ25lZSk7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IGFzc2lnbmVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8ucmV2aWV3ZXJzICYmIHJlcz8ucmV2aWV3ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2Vycyk7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJldmlld2VycztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5kZWZhdWx0X3Jldmlld2VycyAmJiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5kZWZhdWx0X3Jldmlld2Vycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/Lm92ZXJzZWVycyAmJiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWw/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGNjID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgY2MpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSBjYztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmXG4gICAgICAgICAgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGggfHxcbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDQyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBkZWZhdWx0Q0MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgcG9wdWxhdGVHcm91cHMocmVzOiBhbnkpIHtcbiAgICBjb25zdCBpZHMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFtcbiAgICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LnJldmlld2VyX2dyb3VwX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyA/PyBbXSksXG4gICAgICBdKSxcbiAgICBdO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtYmVyQnlHcm91cHMoaWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3A/LmRhdGE7XG4gICAgICAgIGlmIChyZXMub3duZXJzX2dyb3VwICYmIHJlcz8ub3duZXJzX2dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5vd25lcnNfZ3JvdXA/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMuYXNzaWduZWVfZ3JvdXBfaWRzICYmIHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSBhc3NpZ25lZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzICYmXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzICYmIHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCByZXZpZXdlciA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LnJldmlld2VyX2dyb3VwX2lkcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXIpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSByZXZpZXdlcjtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHMgJiZcbiAgICAgICAgICByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZT8uZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXIpO1xuICAgICAgICAgIHRoaXMuY29udHJvbHMucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYS52YWx1ZSA9XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gJ0FOWU9ORSdcbiAgICAgICAgICAgICAgOiB0aGlzLmNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgJiZcbiAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cCA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gb3ZlcnNlZXJHcm91cDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyAmJlxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgICBkZWZhdWx0T3ZlcnNlZXJHcm91cFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3VwcyAmJlxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyRmFpbHVyZUdyb3VwID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgZWxlPy5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgICBkZWZhdWx0T3ZlcnNlZXJGYWlsdXJlR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzIG9mIG5vdyBncm91cHMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHJldmlld2VyIGFuZCBvdmVyc2VlZXIgaWYgdGhpcyBncm91cCBmZWF0dXJlIGdldHMgaW5jb3BlcmF0ZWQgaW5cbiAgICAgIC8vZnV0dXJlIG5lZWQgdG8gYWRkIGdyb3VwIGNvbmRpdGlvbiBoZXJlIHRvIHByZXBvcHVsYXRlIHRoZSBkYXRhIHdoaWxlIGVkaXRpbmcuXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgcmVzZXRBZGRpdGlvbmFsT3B0aW9uKCkge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5ST0xFUyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVBQUk9WRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNVU1RPTV9GSUVMRFMgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk6IGFueSB7XG4gICAgY29uc3QgY29kZSA9IFtcbiAgICAgICdQUk9HUkFNX0ZSRVFVRU5DWScsXG4gICAgICAnU0NPUEVfQ0hBTkdFUycsXG4gICAgICAnUkMnLFxuICAgICAgJ0FTU0lHTkVFUycsXG4gICAgICAnUkVWSUVXRVInLFxuICAgICAgJ09WRVJTRUVSJyxcbiAgICAgICdBU1NFU1NNRU5UJyxcbiAgICAgICdGT1JNQVRFX0VWSURFTkNFJyxcbiAgICAgICdDVVNUT01fRklFTERTJyxcbiAgICBdO1xuICAgIGxldCBpc01vcmVPcHRpb24gPSBmYWxzZTtcbiAgICBjb2RlLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0pIHtcbiAgICAgICAgaXNNb3JlT3B0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmlzUHJvZ3JhbVNjb3BlID0gaXNNb3JlT3B0aW9uO1xuICB9XG4gIGVuYWJsZWZlYXR1cmUoKSB7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcm9sZV9pbXByb3ZlbWVudHMnXG4gICAgKTtcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9jb21wbGlhbmNlX2ZyYW1ld29yaydcbiAgICApO1xuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ0dyb3VwcyA9XG4gICAgICB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Byb2dyYW1fZ3JvdXBzJyk7XG4gICAgdGhpcy50b29sVGlwRGF0YS5vd25lciA9IHRoaXMuZmVhdHVyZWZsYWdyb2xlXG4gICAgICA/ICdPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IFBvd2VyIFVzZXI8L3N0cm9uZz4gYW5kIGFsbCA8Yj5Qb3dlciBVc2VyczwvYj4gd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LidcbiAgICAgIDogJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0Lic7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yY19saXN0aW5nJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wcm9ncmFtXCIgI2Zvcm0+XG4gIDxmb3JtIG5vdmFsaWRhdGUgW2Zvcm1Hcm91cF09XCJwcm9ncmFtRm9ybVwiPlxuICAgIDwhLS0gUHJvZ3JhbSBDYXRlZ29yeSBUeXBlIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV90eXBlPy52YWx1ZSA+IC0xXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5pc3N1ZV90eXBlXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlBST0dSQU0gVFlQRSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXG4gICAgICA+XG4gICAgICA8dGFiLXNlbGVjdG9yXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2dyYW1fdHlwZVwiXG4gICAgICAgIFtkaXNwbGF5QXJyYXldPVwiY29uc3RhbnRzPy5jYXRlZ29yeVR5cGVcIlxuICAgICAgPjwvdGFiLXNlbGVjdG9yPlxuICAgICAgPCEtLSA8cCAqbmdJZj1cInByb2dyYW1fbmFtZT8uaW52YWxpZFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIHByb2dyYW0gdHlwZTwvcD4gLS0+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBGcmFtZXdvcmsgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiaXNBc2NlbnRBbGxvd2VkXCJcbiAgICAgIFtjaGVja2VkXT1cImZhbHNlXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5GUkFNRVdPUks8L2xhYmVsPlxuICAgICAgPCEtLSBbc2VsZWN0RGl2XT1cInRydWVcIiAtLT5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgYSBmcmFtZXdvcmsgdGhhdCB0aGlzIFByb2dyYW0gcmVsYXRlcyB0bydcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJycsICdGUkFNRVdPUksnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSAoY2xpY2spPVwicmVtb3ZlKCcnLCAnRlJBTUVXT1JLJylcIiAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiIGNsYXNzPVwiaWNvbnNcIiA+JiN4ZTkwZDs8L2k+IHt7Y29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNhbkZyYW1ld29ya0NoYW5nZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBQcm9ncmFtIENhdGVnb3J5IE5hbWUgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LnZhbHVlPy50cmltKCk/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMud2hhdFwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5QUk9HUkFNIE5BTUUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIElucHV0VHJpbVxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX25hbWVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV2hhdCBpcyB0aGUgUHJvZ3JhbSBuYW1lP1wiXG4gICAgICAvPlxuXG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX25hbWU/LmVycm9ycyAmJiBjb250cm9scz8ucHJvZ3JhbV9uYW1lPy50b3VjaGVkXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICA+XG4gICAgICAgIEVudGVyIGEgbmFtZSBmb3IgdGhpcyBQcm9ncmFtLlxuICAgICAgPC9wPlxuICAgICAgPHAgKm5nSWY9XCJpc05hbWVFeGlzdHNcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgUHJvZ3JhbSBuYW1lIGFscmVhZHkgZXhpc3RzLlxuICAgICAgPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1maWxlcyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWZsZXgtd3JhcCB2eC1tdC0xXCI+XG4gICAgICAgIDxmaWxlLXBpbGxcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBhdHRhY2htZW50IG9mIGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZVxuICAgICAgICAgICAgICB8IHNsaWNlIDogMCA6IDJcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtleHRlbnNpb25dPVwiYXR0YWNobWVudD8ub3JnX2ZpbGU/LnNwbGl0KCcuJykucG9wKClcIlxuICAgICAgICAgIFtuYW1lXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYXR0YWNobWVudD8udXBsb2FkaW5nXCJcbiAgICAgICAgICAoZGVsZXRlKT1cImRlbGV0ZUF0dGFjaG1lbnQoJ0RFU0NSSVBUSU9OJywgYXR0YWNobWVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmlsZS1waWxsPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWU/Lmxlbmd0aCA+IDJcIlxuICAgICAgICAgIGNsYXNzPVwiZmlsZS1jb3VudFwiXG4gICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRGaWxlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgK3t7IGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZT8ubGVuZ3RoIC0gMiB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1cGxvYWRGaWxlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcC0yXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBhdHRhY2htZW50IG9mIGNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMlxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmlsZS1waWxsXG4gICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlPy5zcGxpdCgnLicpLnBvcCgpXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdHRhY2htZW50Py51cGxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgKGRlbGV0ZSk9XCJkZWxldGVBdHRhY2htZW50KCdERVNDUklQVElPTicsIGF0dGFjaG1lbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9maWxlLXBpbGw+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1EZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgIChzZW5kU2F2ZWRGaWxlcyk9XCJzZWxlY3RGaWxlKCdERVNDUklQVElPTicsICRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/LmRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgIDwvdmNvbXBseS1lZGl0b3I+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBPYmplY3RpdmUgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX29iamVjdGl2ZT8udmFsdWU/LnRyaW0oKT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09CSkVDVElWRSdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ09CSkVDVElWRSdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5vYmplY3RpdmVzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPk9CSkVDVElWRVxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiAtLT5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmVcIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnT0JKRUNUSVZFJywgJGV2ZW50KVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCAkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgW2VkaXRvckNvbmZpZ109XCJjb25zdGFudHM/Lm9iamVjdGl2ZVwiXG4gICAgICA+XG4gICAgICA8L3Zjb21wbHktZWRpdG9yPlxuICAgICAgPCEtLSA8cCAqbmdJZj1cIiFpc09iamVjdGl2ZVZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+U3BlY2lmeSB0aGUgb2JqZWN0aXZlIGZvciB0aGlzIFByb2dyYW0uPC9wPiAtLT5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFJvbGVzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJPTEVTXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1JPTEUnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1JPTEUnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJvbGVzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgaWQ9XCJwZXJtaXNzaW9uZ3JvdXBcIlxuICAgICAgICA+e3sgZmZfcmNfbGlzdGluZyA/IFwiUEVSTUlTU0lPTlNcIiA6IFwiUEVSTUlTU0lPTiBHUk9VUChTKVwiIH19XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuXG4gICAgICAgID48aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgZmZfcmNfbGlzdGluZ1xuICAgICAgICAgICAgICA/ICdQZXJtaXNzaW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgK1xuICAgICAgICAgICAgICAgIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JylcbiAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICtcbiAgICAgICAgICAgICAgICAnb2YgYSBQcm9ncmFtLidcbiAgICAgICAgICAgICAgOiAnUGVybWlzc2lvbiBncm91cChzKSBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnScgK1xuICAgICAgICAgICAgICAgIChhbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JylcbiAgICAgICAgICAgICAgICAgID8gJyAnXG4gICAgICAgICAgICAgICAgICA6ICcgYW5kIOKAnEFwcHJvdmVyc+KAnScpICtcbiAgICAgICAgICAgICAgICAnb2YgYSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUm9sZUhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgaWQ9XCJwbGFjZWhvbGRlcm5hbWVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgZmZfcmNfbGlzdGluZ1xuICAgICAgICAgICAgPyAnV2hpY2ggdXNlciBwZXJtaXNzaW9ucyBoYXZlIGFjY2VzcyB0byB0aGlzIHByb2dyYW0/J1xuICAgICAgICAgICAgOiAnV2hpY2ggdXNlciBwZXJtaXNzaW9uIGdyb3VwcyBoYXZlIGFjY2VzcyB0byB0aGlzIHByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnUk9MRScpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8uX2lkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwgJ1JPTEUnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgID8gY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIGZlYXR1cmVmbGFncm9sZSAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgPyBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgIDogY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5yb2xlTmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyb2xlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpICpuZ0lmPVwiIWxpc3RzLlNZU1RFTV9ST0xFX0lEUy5pbmNsdWRlcyhjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/Ll9pZClcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXSwnUk9MRScpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7ZmVhdHVyZWZsYWdyb2xlICYmIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA/IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJvbGUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdST0xFJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdST0xFJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyBmZWF0dXJlZmxhZ3JvbGUgPyBcIkFkZCBhIHBlcm1pc3Npb24gZ3JvdXAocylcIiA6IFwiQWRkIGEgcm9sZShzKVwiIH19XG4gICAgICA8L3A+XG4gICAgICA8YXBwLXBvcG92ZXIgI3JvbGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZSB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFsaXN0cy5TWVNURU1fUk9MRV9JRFMuaW5jbHVkZXMoZGF0YT8uX2lkKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUm9sZShkYXRhLCAnUk9MRScpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiYgZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgID8gZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDogZGF0YT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gT3duZXJzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/Lk9XTkVSU1wiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzLnZhbHVlPy5sZW5ndGggPiAwIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cC52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09XTkVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdPV05FUidcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY2FzZV9vd25lcnNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+T1dORVIoUykgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAqbmdJZj1cInRvb2xUaXBEYXRhLm93bmVyICE9PSAnJ1wiXG4gICAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5vd25lclwiXG4gICAgICAgICAgICAgIGlkPVwiT3duZXJIZWxwVGV4dFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnMudmFsdWVbMF1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnT1dORVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIiA+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiICpuZ0lmPVwiIVsnQURNSU4nLCdLRVlfQURNSU4nLCdMT0dHRURfSU4nXS5pbmNsdWRlcyhvd25lcj8udXNlcl9yb2xlKVwiIChjbGljayk9XCJyZW1vdmUob3duZXIsJ09XTkVSX0dST1VQJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdPV05FUidcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPHAgKm5nSWY9XCJmYWxzZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkFkZCBhIG93bmVyKHMpPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtbXQtMlwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMlwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlXG4gICAgICAgICAgICAgID8gXCJBTEwgVVNFUlMgQVNTT0NJQVRFRCBXSVRIIFRIRSBTRUxFQ1RFRCBQRVJNSVNTSU9OIEdST1VQU1wiXG4gICAgICAgICAgICAgIDogXCJBTEwgVVNFUlMgQVNTT0NJQVRFRCBXSVRIIFRIRSBTRUxFQ1RFRCBST0xFU1wiXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzd2l0Y2hcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxfdXNlcl9pbl9yb2xlXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEFsbFJvbGVPd25lcigkZXZlbnQpXCJcbiAgICAgICAgPjwvc3dpdGNoPlxuICAgICAgPC9kaXY+XG4gICAgICA8YXBwLXBvcG92ZXIgI293bmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3duZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSB8IHNsaWNlIDogMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICAgICAgICkuaW5jbHVkZXMob3duZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3duZXIsICdPV05FUicpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvd25lcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3duZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyPy51c2VyX3JvbGVcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG93bmVyLCAnT1dORVJfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBcHByb3ZlcnMgLS0+XG4gICAgPCEtLSBSZW1vdmluZyB0aGlzIG9wdGlvbiBpbiBQcm9ncmFtIHNpbXBsaWZpY2F0aW9uIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFQUFJPVkVSICYmICFwcm9ncmFtU2ltcGxpZnlGbGFnXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0FQUFJPVkVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnQVBQUk9WRVInXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuYXBwcm92YWxcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+QVBQUk9WRVJcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBbiBBcHByb3ZlciBpcyByZXNwb25zaWJsZSBmb3IgYXBwcm92aW5nIGEgUHJvZ3JhbS4gV2hlcmUgYW4gQXBwcm92ZXIgaXMgc2VsZWN0ZWQsIHRoZSBQcm9ncmFtIGFuZCBhbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGF0IFByb2dyYW0gd2lsbCBvbmx5IGNvbW1lbmNlIG9uY2UgdGhlIFByb2dyYW0gaGFzIGJlZW4gYXBwcm92ZWQuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJBcHByb3ZlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidXaG8gaXMgcmVzcG9uc2libGUgZm9yIGFwcHJvdmluZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0FwcHJvdmVyRGlzYWJsZWRcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVBQUk9WRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0sICdBUFBST1ZFUicpXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXNBcHByb3ZlckRpc2FibGVkID09PSBmYWxzZVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdLCdBUFBST1ZFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTkgdngtbXItMSBjcm9zc1wiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FQUFJPVkVSJyAmJiBpc0FwcHJvdmVyRGlzYWJsZWQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FQUFJPVkVSJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBQZXJmb3JtYW5jZSBDYWxjdWxhdGVkIC0tPlxuICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiY29udHJvbHM/LnBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uPy52YWx1ZVwiIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1BFUkZPUk1BTkNFJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ1BFUkZPUk1BTkNFJ1wiXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvcGVyZm9ybWFuY2UtY2FsYy5zdmcnXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+SE9XIFNIT1VMRCBUSEUgUEVSRk9STUFOQ0UgT0YgVEhJUyBQUk9HUkFNIEJFIENBTENVTEFURUQ/PC9sYWJlbD5cbiAgICAgICAgICAgIDx0YWItc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicGVyZm9ybWFuY2VfY2FsY3VsYXRpb25cIiBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8ucGVyZm9ybWFuY2VDYWxjdWxhdGlvblwiPlxuICAgICAgICAgICAgPC90YWItc2VsZWN0b3I+XG4gICAgICAgIDwvZm9ybS1maWVsZD4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUHJvZ3JhbVNjb3BlXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2NvcGUtbGFiZWwgdngtZnMtMTAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbWItNSB2eC1saC00IHZ4LWQtaW5saW5lLWJsb2NrXCJcbiAgICAgID5cbiAgICAgICAgUFJPR1JBTSBTQ09QRVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIDxpICBjbGFzcz1cImljb25zIGluZm8taWNvbiB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCIgW2FwcFRvb2x0aXBdPVwidG9vbHRpcC5wcm9ncmFtU2NvcGVcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwid2hpdGVcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+IC0tPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJpY29uIGluZm8taWNvbiB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgKm5nSWY9XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcCAhPT0gJydcIlxuICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgID5cbiAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5wcm9ncmFtU2NvcGVcIlxuICAgICAgICAgICAgaWQ9XCJQU0hlbHBUZXh0XCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wb3BvdmVyLWhvdmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBQcm9ncmFtIEZyZXF1ZW5jeSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5QUk9HUkFNX0ZSRVFVRU5DWVwiXG4gICAgICBbY2hlY2tlZF09XCJbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKGNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZSlcIlxuICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJFUVVFTkNZJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnRlJFUVVFTkNZJ1xuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJlY3VycmluZ1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiIGlkPVwiUERDaGFuZ2VcIlxuICAgICAgICA+UFJPR1JBTSBEVVJBVElPTlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Byb2dyYW0gRHVyYXRpb24gcmVmZXJzIHRvIHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS4gQSBQcm9ncmFtIGNhbiBvY2N1ciBpbiBwZXJwZXR1aXR5LCBvciBpdCBjYW4gb2NjdXIgdW50aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBidXNpbmVzcyBjeWNsZSB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiAnICtcbiAgICAgICAgICAgIGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRDeWNsZS5idXNpbmVzc19jeWNsZSArXG4gICAgICAgICAgICAnLiAgQWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhhdCBQcm9ncmFtIHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lIFByb2dyYW0gRHVyYXRpb24uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJQcm9ncmFtRHVyYXRpb25IZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQgdngtbWItMFwiPklzIHRoaXMgcHJvZ3JhbSByZWN1cnJpbmc/PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidyZWN1cnJpbmdfZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgICA+WUVTPC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICAgW25hbWVdPVwiJ3JlY3VycmluZ19mcmVxdWVuY3knXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5yZWN1cnJpbmdfZnJlcXVlbmN5Py52YWx1ZVwiXG4gICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgZmFsc2UpXCJcbiAgICAgICAgICAgICAgPk5PPC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFNjb3BlIENoYW5nZXMgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uU0NPUEVfQ0hBTkdFU1wiXG4gICAgICBbY2hlY2tlZF09XCJbdHJ1ZSwgZmFsc2VdLmluY2x1ZGVzKGNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWUpXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1NDT1BFJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdTQ09QRSdcIlxuICAgICAgW2ltZ109XCJBU1NFVFMubG9ja19zY29wZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5Mb2NrIHRoZSBQcm9ncmFtIFNjb3BlXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnSWYgdGhlIFByb2dyYW0gU2NvcGUgaXMgbG9ja2VkLCBuZWl0aGVyIHRoZSBQcm9ncmFtIG5vciB0aGUgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbSBjYW4gYmUgZWRpdGVkIG9uY2UgdGhlIFByb2dyYW0gYmVnaW5zLiBJbiBvcmRlciB0byBlZGl0IHRoZSBQcm9ncmFtIG9yIHRoZSBsaW5rZWQgcmVzcG9uc2liaWxpdGllcywgdGhlIFByb2dyYW0gZGV0YWlscyB3aWxsIG5lZWQgdG8gYmUgZWRpdGVkLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiU2NvcGVDaGFuZ2VzSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICA+V291bGQgeW91IGxpa2UgdG9cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWxhYmVsLXR4dCB2eC1mdy01MDBcIj5sb2NrIGNoYW5nZXM8L3NwYW4+IHRvIHRoZVxuICAgICAgICAgIHByb2dyYW0gc2NvcGU/PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwIHByb2dyYW1cIj5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2xvY2tfc2NvcGVfY2hhbmdlJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtuYW1lXT1cIidsb2NrX3Njb3BlX2NoYW5nZSdcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5sb2NrX3Njb3BlX2NoYW5nZT8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2xvY2tfc2NvcGVfY2hhbmdlJywgZmFsc2UpXCJcbiAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxuICAgIDwhLS0gPGZvcm0tZmllbGQgW2NoZWNrZWRdPVwiZmFsc2VcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnRlJBTUVXT1JLJ1wiXG4gICAgICAgICAgICBbaW1nXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnJ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkZSQU1FV09SSzwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQtd2l0aC1waWxsIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCIgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LmZyYW1ld29yay52YWx1ZSwnRlJBTUVXT1JLJylcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+e3tjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZT8uZnJhbWV3b3JrX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJmcmFtZXdvcmsucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rNTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGlzdCE9PSdGUkFNRVdPUksnXCIgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIiBjbGFzcz1cImVkaXRcIiB0eXBlPVwiYnV0dG9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZnJhbWV3b3JrIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBbMSwgMSwgMSwgMSwgMSwgMSwgMV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlIGZyYW1ld29yayBuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxuXG4gICAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUkNcIlxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ1JDJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdSQydcIlxuICAgICAgW2ltZ109XCJBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlJFU1BPTlNJQklMSVRZIENFTlRFUlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlLiBXaGVyZSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXNwb25zaWJpbGl0aWVzIENlbnRlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJSQ0hlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JDJylcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1doaWNoIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlICYmIGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5yYz8udmFsdWVbMF0sICdSQycpXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnJjPy52YWx1ZVswXSwnUkMnKVwiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LnJjPy52YWx1ZVswXT8uaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAgPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ1JDJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdSQycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcmMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByYyBvZiBjb250cm9scz8ucmM/LnZhbHVlIHwgc2xpY2UgOiAxXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKHJjLCAnUkMnKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAge3sgcmM/Lml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIEFzc2lnbmVlIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFTU0lHTkVFU1wiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIlsnQVNTSUdORUUnLCAnREVGQVVMVF9BU1NJR05FRSddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnQVNTSUdORUUnLCAnREVGQVVMVF9BU1NJR05FRSddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY2FzZV9hc3NpZ25lZXNcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCJcbiAgICAgICAgPkFTU0lHTkVFU1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0Fzc2lnbmVlcyBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gdGhlbS4gV2hlcmUgQXNzaWduZWVzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBBc3NpZ25lZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJBc3NpZ25lZUhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVNTSUdORUUnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdLCAnQVNTSUdORUUnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnQVNTSUdORUVfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXNzaWduZWVfZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXSwnQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlX2dyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnQVNTSUdORUUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNhc3NpZ25lZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGFzc2lnbmVlIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlKGFzc2lnbmVlLCAnQVNTSUdORUUnKVwiIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVfZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0FTU0lHTkVFX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgID5ERUZBVUxUIEFTU0lHTkVFXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBBc3NpZ25lZXMgZm9yIGFsbCBuZXcgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIElmIGEgRGVmYXVsdCBBc3NpZ25lZXMgaXMgc2VsZWN0ZWQsIHRoZSB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCB0aGUgQXNzaWduZWUgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuICdcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiREFIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgYXNzaWduZWVzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9BU1NJR05FRSdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWUucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXSwnREVGQVVMVF9BU1NJR05FRScpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRBc3NpZ25lZUdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNkZWZhdWx0QXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdEFzc2lnbmVlR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0RFRkFVTFRfQVNTSUdORUVfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJhZGlvLWdyb3VwLXNlbGVjdG9yXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICAgICAgPlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LmFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQUxMJ1wiXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnQUxMJylcIlxuICAgICAgICA+XG4gICAgICAgICAgQUxMIFNFTEVDVEVEIFBFUlNPTlMgTkVFRCBUTyBDT01QTEVURSBUSElTXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggcGVyc29uLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCInYXNzaWduZWUnXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWUgPT09ICdBTllPTkUnXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBvbmx5IG9uZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGNyZWF0ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUmV2aWV3ZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5SRVZJRVdFUlwiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cIlsnUkVWSUVXRVInLCAnREVGQVVMVF9SRVZJRVdFUiddPy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnUkVWSUVXRVInLCAnREVGQVVMVF9SRVZJRVdFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPlJldmlld2Vyc1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1Jldmlld2VycyBhcmUgcmVxdWlyZWQgdG8gcmV2aWV3IHJlc3BvbnNpYmlsaXRpZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY29tcGxldGVkLiBXaGVyZSBSZXZpZXdlcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIFJldmlld2VycyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIlJldmlld2VySGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaG8gaXMgcmVzcG9uc2libGUgZm9yIHJldmlld2luZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JFVklFV0VSJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXSwgJ1JFVklFV0VSJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ1JFVklFV0VSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXSwnUkVWSUVXRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sJ1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ1JFVklFV0VSJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcmV2aWV3ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShyZXZpZXdlciwgJ1JFVklFV0VSJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Jldmlld2VyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ1JFVklFV0VSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5ERUZBVUxUIFJldmlld2VyXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgRGVmYXVsdCBSZXZpZXdlcnMgZm9yIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtLiBXaGVyZSBhIHVzZXIgaGFzIGJlZW4gc3BlY2lmaWVkIGFzIGEgRGVmYXVsdCBSZXZpZXdlciwgdGhhdCB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCBhcyB0aGUgUmV2aWV3ZXIgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLiBBbiBBc3NpZ25vciwgYmVpbmcgdGhlIHBlcnNvbiB3aG8gY3JlYXRlcyB0aGUgcmVzcG9uc2liaWxpdHksIGNhbiBvdmVycmlkZSB0aGlzIG9wdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJEUkhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUidcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCByZXZpZXdlcnMgZm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX1JFVklFV0VSJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9SRVZJRVdFUidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdFJldmlld2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsICdERUZBVUxUX1JFVklFV0VSJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXZpZXdlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdERUZBVUxUX1JFVklFV0VSX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyYWRpby1ncm91cC1zZWxlY3RvclwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCJcbiAgICAgID5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiXG4gICAgICAgICAgICBzZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnU0VRVUVOVElBTCcpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBTRVFVRU5USUFMXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgb25lIGF0IGEgdGltZSBpbiB0aGUgc2VxdWVuY2UgZGVmaW5lZCBieSB5b3UuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQU5ZT05FJyB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiXG4gICAgICAgICAgICBzZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCAnQU5ZT05FJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgQU5ZIFJFVklFV0VSIENBTiBNQVJLIFRISVMgQVMgUkVWSUVXRURcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ1RoZSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHNlbnQgZm9yIHJldmlldyB0byBhbGwgcmV2aWV3ZXJzIGF0IHRoZSBzYW1lIHRpbWUuIElmIGFueW9uZSBvZiB0aGUgcmV2aWV3ZXIgcmV2aWV3cyB0aGUgcmVzcG9uc2liaWxpdHksIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyByZXZpZXdlZC4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBPdmVyc2VlciAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/Lk9WRVJTRUVSXCJcbiAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ09WRVJTRUVSJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cz8uaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiZcbiAgICAgICAgIVsnT1ZFUlNFRVInLCAnREVGQVVMVF9PVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKFxuICAgICAgICAgIGFjdGl2ZUxpc3RcbiAgICAgICAgKVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICBbJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgICBcIlxuICAgICAgICA+T3ZlcnNpZ2h0c1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ092ZXJzaWdodHMgcmVjZWl2ZSB1cGRhdGVzIHdoZW4gYSByZXNwb25zaWJpbGl0eSBpcyBjb21wbGV0ZWQsIGNvbXBsZXRlZCB3aXRoIGRlbGF5IG9yIG5vdCBjb21wbGV0ZWQuIFdoZXJlIE92ZXJzaWdodHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIE92ZXJzaWdodHMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJvdmVyc2VlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIFsnREVGQVVMVF9PVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICAgIFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnT1ZFUlNFRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdLCAnT1ZFUlNFRVInKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwnT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCBcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSwnT1ZFUlNFRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnT1ZFUlNFRVInXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09WRVJTRUVSJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdPVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyR3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ09WRVJTRUVSX0dST1VQJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxuZy1jb250YWluZXIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiWydPVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgICAgICA+REVGQVVMVCBPdmVyc2lnaHRcbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgT3ZlcnNpZ2h0IGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgT3ZlcnNpZ2h0LCB0aGF0IHVzZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNlbGVjdGVkIGFzIHRoZSBPdmVyc2lnaHQgd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgIGlkPVwiRE9IZWxwVGV4dFwiXG4gICAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgICA+PC9sYWJlbFxuICAgICAgICA+XG4gICAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBbJ09WRVJTRUVSJywgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX09WRVJTRUVSJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPjFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdERUZBVUxUX09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlckRlZmF1bHRHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPiA8L2xhYmVsPlxuICAgICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgICAgY2xhc3M9XCJ2eC1tdC0yXCJcbiAgICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICAgIFtsaW5lXT1cIjNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJbJ09WRVJTRUVSJywgJ0RFRkFVTFRfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgJ1doaWNoIHBlcnNvbnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvdmVyc2VlcnMgZm9yIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbm90IGNvbXBsZXRlZCB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICA/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSwnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwib3ZlcnNlZXJzRGVmYXVsdEZhaWwucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEZhaWxHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2VlcnNEZWZhdWx0RmFpbCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlclxuICAgICAgICAgICAgICAgICAgICA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3ZlcnNlZXIsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0RmFpbEdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwXG4gICAgICAgICAgICAgICAgICAgID8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBc3Nlc3NtZW50IC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQVNTRVNTTUVOVFwiXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NFU1NNRU5UJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIHNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnQVNTRVNTTUVOVCdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5hc3Nlc3NtZW50c1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5BU1NFU1NNRU5UU1xuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0Fzc2Vzc21lbnRzIGFyZSBhIGRpZ2l0YWwgZm9ybSB0aGF0IGFyZSBjcmVhdGVkIGluIOKAnEFzc2Vzc21lbnTigJ0gd2l0aGluIHRoZSBDb21wbGlhbmNlIE1vZHVsZS4gV2hlcmUgQXNzZXNzbWVudHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2Vzc21lbnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQXNzZXNzbWVudEhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBhc3Nlc3NtZW50cyBjYW4gYmUgbGlua2VkIHRvIHRoZSByZXNwb25zaWJpbGl0aWVzIHdpdGhpbiB0aGlzIFByb2dyYW0/J1xuICAgICAgICBcIlxuICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnQVNTRVNTTUVOVCcpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZVxuICAgICAgICAgICAgICAgIHwgYXNzZXNzbWVudFJlc29sdmVyIGFzIGFzc2Vzc21lbnRzXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwgJ0FTU0VTU01FTlQnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBhc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInByb2dyYW1fYXNzZXNzbWVudHMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImFzc2Vzc21lbnRzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGFzc2Vzc21lbnRzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZSB8IGFzc2Vzc21lbnRSZXNvbHZlcikgYXMgYXNzZXNzbWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50c1swXSwnQVNTRVNTTUVOVCcpXCI+JiN4ZTkwZDs8L2k+e3thc3Nlc3NtZW50c1swXT8uYXNzZXNzbWVudF9uYW1lfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYXNzZXNzbWVudHM/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbV9hc3Nlc3NtZW50cy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2Fzc2Vzc21lbnRzPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnQVNTRVNTTUVOVCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQVNTRVNTTUVOVCcpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbV9hc3Nlc3NtZW50cyBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBhc3Nlc3NtZW50IG9mIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IGFzc2Vzc21lbnRSZXNvbHZlclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShhc3Nlc3NtZW50LCAnQVNTRVNTTUVOVCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzZXNzbWVudD8uYXNzZXNzbWVudF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBGb3JtYXQgJiBFdmlkZW5jZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkZPUk1BVEVfRVZJREVOQ0VcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlKVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuZm9ybWF0X2V2aWRlbmNlXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPkV2aWRlbmNlXG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgYSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHJlcXVpcmVkIGZvciBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiRXZpZGVuY2VIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIlxuICAgICAgICAgID5EbyBhbGwgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBwcm9ncmFtIHJlcXVpcmUgZXZpZGVuY2U/PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwIHByb2dyYW1cIj5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgdHJ1ZSlcIlxuICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiIWNvbnRyb2xzPy5ldmlkZW5jZV9yZXF1aXJlZD8udmFsdWVcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgZmFsc2UpXCJcbiAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0yXCI+QWxsb3cgYW55IGZpbGUgdG8gYmUgbWFya2VkIGFzXG4gICAgICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICAgICAgICBldmlkZW5jZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxzd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScsJGV2ZW50Py50YXJnZXQ/LmNoZWNrZWQpXCI+PC9zd2l0Y2g+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBDdXN0b20gRmllbGQgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5DVVNUT01fRklFTERTXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5jdXN0b21fZmllbGRzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFthY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5jdXN0b21fZmllbGRzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPkNVU1RPTSBGSUVMRFxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1doZXJlIGEgY3VzdG9tIGZpZWxkIGlzIHNwZWNpZmllZCwgYWxsIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtIHdpbGwgY29udGFpbiB0aGF0IGN1c3RvbSBmaWVsZC4gQ3VzdG9tIGZpZWxkcyBlbmFibGUgdGhlIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBtZXRhIGRhdGEuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJDRkhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxjdXN0b20tZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tX2ZpZWxkc1wiPjwvY3VzdG9tLWZpZWxkPlxuICAgIDwvZm9ybS1maWVsZD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjwhLS0gbGlzdCBvZiByb2xlcyAtLT5cbjxyb2xlLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUk9MRSdcIlxuICBbc2VsZWN0ZWRdPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuUk9MRVNcIlxuICBbbGlzdF09XCJsaXN0cz8uUk9MRVM/LmRhdGEgPz8gW11cIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ1JPTEUnKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdST0xFJylcIlxuICBbZmVhdHVyZWZsYWdyb2xlXT1cImZlYXR1cmVmbGFncm9sZVwiXG4gIFtmZWF0dXJlZmxhZ0dyb3VwXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2ZmX3JjX2xpc3RpbmddPVwiZmZfcmNfbGlzdGluZ1wiXG4+PC9yb2xlLWxpc3Q+XG5cbjwhLS0gbGlzdCBvZiBmcmFtZXdvcmtzIC0tPlxuPCEtLSA8YXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZyAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCIgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0ZSQU1FV09SSycpXCIgKG5leHQpPVwibGlzdEFjdGlvbigkZXZlbnQsJ0ZSQU1FV09SSycpXCIgW21vZGVdPVwibW9kZVwiIFtzZWxlY3RlZEZyYW1ld29ya109XCJjb250cm9scz8uZnJhbWV3b3JrPy52YWx1ZVwiPjwvYXBwLWRlZmluZS1mcmFtZXdvcmstbGlzdGluZz4gLS0+XG48IS0tIGxpc3Qgb2YgcmVzcG9uc2liaWxpdHkgY2VudGVyIC0tPlxuPGFwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUkMnXCJcbiAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwibGlzdHM/LlJDID8/IFtdXCJcbiAgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCJcbiAgW3JjSWRLZXldPVwiJ3JjX2lkJ1wiXG4gIChjbG9zZVJjTGlzdCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JDJylcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ1JDJylcIlxuICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiY29udHJvbHM/LnJjPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuPlxuPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0PlxuPCEtLSByZW5kZXIgdXNlcmxpc3Qgd2l0aCBncm91cCAtLT5cblxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdPV05FUidcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFtub25SZW1vdmFibGVVc2VySWRzXT1cImxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTIHwgbGlzdFRvSWQgOiAnbWVtYmVyX2lkJ1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uT1dORVJTPy5kYXRhID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICAoZmV0Y2hVc2VyRGF0YSk9XCJmZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcyhmYWxzZSwgJGV2ZW50KVwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/Lk9XTkVSU1wiXG4gIFtncm91cExpc3RJbmZvXT1cImxpc3RzPy5PV05FUlNfR1JPVVBTXCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uT1dORVJTX0dST1VQUz8uZGF0YSA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnT1dORVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdPV05FUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZU93bmVyXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbj48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQVBQUk9WRVInXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmYWxzZVwiXG4gIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uQVBQUk9WRVJTPy5kYXRhID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkFQUFJPVkVSU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnQVBQUk9WRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdBUFBST1ZFUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUFwcHJvdmVyXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uQVNTSUdORUVTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/LkFTU0lHTkVFU19HUk9VUCA/PyBbXVwiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZWRBc3NpZ25lZUlkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uQVNTSUdORUVTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdBU1NJR05FRScpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FTU0lHTkVFJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlQXNzaWduZWVcIlxuICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFt1c2VyVHlwZV09XCInYXNzaWduZWVzJ1wiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA/PyBbXVwiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZWRBc3NpZ25lZUlkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW292ZXJzZWVySWRzXT1cInNlbGVjdGVkT3ZlcnNlZXJJZHNcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVwiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnREVGQVVMVF9BU1NJR05FRScpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uUkVWSUVXRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/LlJFVklFV0VSU19HUk9VUCA/PyBbXVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVSZXZpZXdlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uUkVWSUVXRVJTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdSRVZJRVdFUicpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ1JFVklFV0VSJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlUmV2aWV3ZXJcIlxuICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFt1c2VyVHlwZV09XCIncmV2aWV3ZXJzJ1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJcbiAgICBhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9SRVZJRVdFUicgJiZcbiAgICAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKVxuICBcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA/PyBbXVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVSZXZpZXdlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX1JFVklFV0VSJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUicgJiYgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uT1ZFUlNFRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/Lk9WRVJTRUVSU19HUk9VUCA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uT1ZFUlNFRVNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ09WRVJTRUVSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignT1ZFUlNFRVInKVwiXG4gIFtkZWZhdWx0U2VsZWN0ZWRVc2Vyc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVxuICAgICAgfCByZWZEaXNjb25uZWN0XG4gICAgICB8IGFycmF5Q29uY2F0IDogY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlXG4gIFwiXG4gIFt1c2VyVHlwZV09XCInb3ZlcnNlZXJzJ1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJcbiAgICBhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9PVkVSU0VFUicgJiZcbiAgICAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKVxuICBcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA/PyBbXVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfT1ZFUlNFRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX09WRVJTRUVSJylcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiXG4gICAgYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJyAmJlxuICAgICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpXG4gIFwiXG4gIFtncm91cEVuYWJsZWRdPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibGlzdExvYWRpbmdTdGF0ZS5VU0VSU1wiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3VzZXJsaXN0XT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSUyA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPz8gW11cIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbZGlzYWJsZWRJZHNdPVwiZGlzYWJsZU92ZXJzZWVySWRzXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiXG4gIFthc3NpZ25lZUlkc109XCJzZWxlY3RlZEFzc2lnbmVlSWRzXCJcbiAgW3Jldmlld2VySWRzXT1cInNlbGVjdGVkUmV2aWV3ZXJJZHNcIlxuICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5ERUZBVUxUX09WRVJTRUVSU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicpXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFzc2Vzc21lbnQtcGlja2VyXG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0VTU01FTlQnXCJcbiAgW3NlbGVjdGVkQXNzZXNzbWVudF09XCJjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcIlxuICAoY2FuY2VsQXNzZXNzbWVudCk9XCJmaWVsZERlc2VsZWN0b3IoJ0FTU0VTU01FTlQnKVwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwibGlzdEFjdGlvbigkZXZlbnQsICdBU1NFU1NNRU5UJylcIlxuPjwvYXNzZXNzbWVudC1waWNrZXI+XG48YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+XG48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cblxuPCEtLSBGcmFtZXdvcmsgc2VsZWN0b3IgIC0tPlxuPGFwcC1mcmFtZXdvcmstbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdGUkFNRVdPUksnXCJcbiAgW3dvcmtmbG93UGFnZV09XCJbJ0ZSQU1FV09SSyddXCJcbiAgKGFzc2lnbkNvbnRyb2wpPVwibGlzdEFjdGlvbigkZXZlbnQsICdGUkFNRVdPUksnKVwiXG4gIChjbG9zZUZyYW1ld29yayk9XCJmaWVsZERlc2VsZWN0b3IoJ0ZSQU1FV09SSycpXCJcbiAgW3ByZXZpb3VzU2VsZWN0ZWRWYWx1ZXNdPVwieyBmcmFtZXdvcms6IGNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWUgfVwiXG4gIChlbnRydXN0RnJhbWV3b3JrKT1cImVudHJ1c3RGcmFtZXdvcmsoJGV2ZW50KVwiXG4gIFtoZWFkZXJUZXh0XT1cIidTZWxlY3QgYSBmcmFtZXdvcmsnXCJcbj48L2FwcC1mcmFtZXdvcmstbGlzdD5cbiJdfQ==
|